{"id":12335,"date":"2026-04-17T07:19:44","date_gmt":"2026-04-17T06:19:44","guid":{"rendered":"https:\/\/unicompex.com\/?page_id=12335"},"modified":"2026-04-17T07:36:29","modified_gmt":"2026-04-17T06:36:29","slug":"unipower-site-pm-form","status":"publish","type":"page","link":"https:\/\/unicompex.com\/hi\/unipower-site-pm-form\/","title":{"rendered":"Unipower site PM form"},"content":{"rendered":"\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n\n<div id=\"form-container\" style=\"max-width: 600px; margin: 20px auto; font-family: sans-serif; padding: 20px; border: 2px solid #004a99; border-radius: 12px; background: #f9f9f9;\">\n    \n    <h2 style=\"text-align: center; color: #004a99;\">Rapport de Maintenance<\/h2>\n    \n    <div style=\"background: white; padding: 15px; border-radius: 8px; margin-bottom: 20px; box-shadow: 0 2px 5px rgba(0,0,0,0.1);\">\n        <label><b>Technicien :<\/b><\/label>\n        <input type=\"text\" id=\"t_name\" oninput=\"checkValidation()\" style=\"width: 100%; padding: 8px; margin: 5px 0 15px 0; border: 1px solid #ccc;\">\n        \n        <label><b>ID Site :<\/b><\/label>\n        <input type=\"text\" id=\"s_id\" oninput=\"checkValidation()\" style=\"width: 100%; padding: 8px; margin: 5px 0 15px 0; border: 1px solid #ccc;\">\n        \n        <label><b>GPS :<\/b><\/label>\n        <div id=\"gps_val\" style=\"padding: 8px; background: #eee; border-radius: 4px;\">D\u00e9tection en cours&#8230;<\/div>\n    <\/div>\n\n    <div id=\"categories-container\"><\/div>\n\n    <label><b>Commentaires :<\/b><\/label>\n    <textarea id=\"comm_box\" style=\"width: 100%; height: 60px; margin-bottom: 20px; border: 1px solid #ccc;\"><\/textarea>\n\n    <p id=\"warning-msg\" style=\"color: red; text-align: center; font-weight: bold;\">\u26a0\ufe0f Remplissez tous les champs et 1 photo par section.<\/p>\n\n    <button id=\"download-btn\" disabled onclick=\"generatePDF()\" style=\"width: 100%; background: #ccc; color: white; padding: 18px; border: none; border-radius: 8px; font-size: 18px; font-weight: bold; cursor: not-allowed;\">\n        G\u00c9N\u00c9RER LE PDF\n    <\/button>\n<\/div>\n\n<script>\n    const { jsPDF } = window.jspdf;\n    const categories = [\"Entree\", \"Cloture\", \"Redresseur\", \"Groupe_Elec\", \"Batteries\", \"Antennes\", \"Coffret_DC\", \"Autres\"];\n    const container = document.getElementById('categories-container');\n    let store = {}; \/\/ Stockage des images compress\u00e9es\n\n    categories.forEach((cat, index) => {\n        const div = document.createElement('div');\n        div.style.cssText = \"background:white; margin-bottom:15px; padding:10px; border-radius:8px; border-left:5px solid #004a99;\";\n        div.innerHTML = `\n            <label><b>${cat.replace('_', ' ')} *<\/b><\/label><br>\n            <input type=\"file\" class=\"cat-input\" accept=\"image\/*\" capture=\"camera\" onchange=\"processSingleImage(this, '${cat}')\" style=\"margin-top:10px;\">\n            <div id=\"prev-${cat}\" style=\"margin-top:10px;\"><\/div>\n        `;\n        container.appendChild(div);\n    });\n\n    function processSingleImage(input, cat) {\n        if (!input.files[0]) return;\n        const reader = new FileReader();\n        reader.onload = function(e) {\n            const img = new Image();\n            img.onload = function() {\n                const canvas = document.createElement('canvas');\n                const MAX_WIDTH = 800;\n                let width = img.width;\n                let height = img.height;\n                if (width > MAX_WIDTH) { height *= MAX_WIDTH \/ width; width = MAX_WIDTH; }\n                canvas.width = width;\n                canvas.height = height;\n                canvas.getContext('2d').drawImage(img, 0, 0, width, height);\n                \n                const dataUrl = canvas.toDataURL('image\/jpeg', 0.6);\n                store[cat] = { src: dataUrl, w: width, h: height };\n                \n                const preview = document.getElementById(`prev-${cat}`);\n                preview.innerHTML = `<img decoding=\"async\" src=\"${dataUrl}\" style=\"width:100px; border-radius:4px;\"> \u2705 Pr\u00eat`;\n                checkValidation();\n            };\n            img.src = e.target.result;\n        };\n        reader.readAsDataURL(input.files[0]);\n    }\n\n    function checkValidation() {\n        const name = document.getElementById('t_name').value;\n        const site = document.getElementById('s_id').value;\n        const btn = document.getElementById('download-btn');\n        const warning = document.getElementById('warning-msg');\n        \n        let allPhotos = categories.every(cat => store[cat]);\n\n        if (name && site && allPhotos) {\n            btn.disabled = false; btn.style.background = \"#28a745\"; btn.style.cursor = \"pointer\";\n            warning.style.display = \"none\";\n        } else {\n            btn.disabled = true; btn.style.background = \"#ccc\";\n            warning.style.display = \"block\";\n        }\n    }\n\n    if (navigator.geolocation) {\n        navigator.geolocation.getCurrentPosition(p => {\n            document.getElementById('gps_val').innerText = p.coords.latitude.toFixed(5) + \", \" + p.coords.longitude.toFixed(5);\n        });\n    }\n\n    function generatePDF() {\n        const doc = new jsPDF();\n        const tech = document.getElementById('t_name').value;\n        const site = document.getElementById('s_id').value;\n        const gps = document.getElementById('gps_val').innerText;\n        const comm = document.getElementById('comm_box').value;\n\n        \/\/ Page 1: Infos\n        doc.setFontSize(22); doc.setTextColor(0, 74, 153);\n        doc.text(\"RAPPORT DE MAINTENANCE SITE\", 20, 30);\n        \n        doc.setFontSize(12); doc.setTextColor(0, 0, 0);\n        doc.text(`Technicien : ${tech}`, 20, 50);\n        doc.text(`Site ID : ${site}`, 20, 60);\n        doc.text(`GPS : ${gps}`, 20, 70);\n        doc.text(`Date : ${new Date().toLocaleDateString()}`, 20, 80);\n        \n        doc.text(\"Commentaires :\", 20, 100);\n        doc.setFontSize(10);\n        const splitComm = doc.splitTextToSize(comm, 170);\n        doc.text(splitComm, 20, 110);\n\n        \/\/ Pages suivantes: Photos (1 par page pour \u00e9viter les bugs de m\u00e9moire)\n        categories.forEach((cat) => {\n            doc.addPage();\n            doc.setFontSize(14);\n            doc.text(`Categorie : ${cat.replace('_', ' ')}`, 20, 20);\n            const imgData = store[cat];\n            \/\/ Calcul du ratio pour que l'image tienne dans la page A4\n            const maxWidth = 170;\n            const ratio = maxWidth \/ imgData.w;\n            doc.addImage(imgData.src, 'JPEG', 20, 30, maxWidth, imgData.h * ratio);\n        });\n\n        doc.save(`Rapport_${site}.pdf`);\n    }\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Rapport de Maintenance Technicien : ID Site : GPS : D\u00e9tection en cours&#8230; Commentaires : \u26a0\ufe0f Remplissez tous les champs et 1 photo par section. G\u00c9N\u00c9RER LE PDF<\/p>","protected":false},"author":15853829,"featured_media":12344,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_crdt_document":"{\"document\":\"AAD7aYOE240W8M+i6xABg4TbjRawz6LrEIOE240W8M+i6xADg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRbwz6LrEAGDhNuNFvDPousQAYOE240W8M+i6xABg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQEYOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAODhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRbwz6LrEAWDhNuNFvDPousQAYOE240W8M+i6xAHg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQDYOE240WsM+i6xCDhNuNFvDPousQA4OE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAODhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xADg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQC4OE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAFg4TbjRawz6LrEIOE240W8M+i6xADg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFvDPousQCYOE240W8M+i6xABg4TbjRawz6LrEIOE240W8M+i6xADg4TbjRbwz6LrEAODhNuNFvDPousQAYOE240W8M+i6xAFg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQC4OE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAWDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAWDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQAYOE240W8M+i6xADg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQB4OE240W8M+i6xABg4TbjRawz6LrEIOE240W8M+i6xAHg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRbwz6LrEAeDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAPg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQA4OE240W8M+i6xABg4TbjRbwz6LrEAGDhNuNFvDPousQBYOE240W8M+i6xAFg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQA4OE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAWDhNuNFvDPousQA4OE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAFg4TbjRawz6LrEIOE240W8M+i6xADg4TbjRbwz6LrEAGDhNuNFvDPousQBYOE240WsM+i6xCDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAODhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQBYOE240WsM+i6xCDhNuNFvDPousQAYOE240W8M+i6xANg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFvDPousQB4OE240W8M+i6xARg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAFg4TbjRbwz6LrEAGDhNuNFvDPousQCYOE240WsM+i6xCDhNuNFvDPousQBYOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAFg4TbjRbwz6LrEAODhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQBYOE240W8M+i6xAFg4TbjRbwz6LrEAODhNuNFrDPousQg4TbjRbwz6LrEA2DhNuNFvDPousQA4OE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQBYOE240WsM+i6xCDhNuNFvDPousQCYOE240W8M+i6xADg4TbjRbwz6LrEAODhNuNFvDPousQA4OE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAWDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAJg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFvDPousQCYOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAuDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQAYOE240W8M+i6xAJg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQAYOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFvDPousQA4OE240WsM+i6xCDhNuNFvDPousQBYOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRbwz6LrEAmDhNuNFrDPousQg4TbjRbwz6LrEA+DhNuNFrDPousQg4TbjRbwz6LrEAODhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQAYOE240W8M+i6xALg4TbjRawz6LrEIOE240W8M+i6xADg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQAYOE240W8M+i6xAHg4TbjRbwz6LrEAODhNuNFvDPousQA4OE240W8M+i6xABg4TbjRbwz6LrEA+DhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAeDhNuNFvDPousQAYOE240W8M+i6xAJg4TbjRbwz6LrEBODhNuNFrDPousQg4TbjRbwz6LrEAuDhNuNFvDPousQAYOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAFg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEBuDhNuNFvDPousQA4OE240W8M+i6xATg4TbjRbwz6LrEAGDhNuNFvDPousQAYOE240W8M+i6xAVg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xADg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQA4OE240WsM+i6xCDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xARg4TbjRbwz6LrECODhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xA1g4TbjRawz6LrEIOE240W8M+i6xApg4TbjRawz6LrEIOE240W8M+i6xAVg4TbjRbwz6LrED2DhNuNFvDPousQDYOE240W8M+i6xAFg4TbjRbwz6LrEAmDhNuNFvDPousQA4OE240W8M+i6xAVg4TbjRbwz6LrEA2DhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEA2DhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRbwz6LrEA2DhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAODhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRbwz6LrEAGDhNuNFvDPousQBYOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAuDhNuNFrDPousQg4TbjRbwz6LrEAODhNuNFvDPousQAIOE240WsM+i6xDDhNuNFgGwz6LrEIOE240WsM+i6xDDhNuNFgGwz6LrEMOE240WA\/DPousQAMOE240WBvDPousQAIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEADDhNuNFgHwz6LrEADDhNuNFgLwz6LrEAqDhNuNFvDPousQAYOE240W8M+i6xAGg4TbjRawz6LrEIOE240W8M+i6xAAw4TbjRYL8M+i6xABg4TbjRbwz6LrEAiDhNuNFrDPousQw4TbjRYBsM+i6xCDhNuNFvDPousQAcOE240WA7DPousQg4TbjRawz6LrEMOE240WBfDPousQAoOE240W8M+i6xAAw4TbjRYHsM+i6xDDhNuNFgawz6LrEMOE240WGPDPousQAcOE240WAPDPousQB4OE240WsM+i6xCDhNuNFvDPousQAYOE240W8M+i6xADw4TbjRYW8M+i6xACg4TbjRbwz6LrEACDhNuNFrDPousQw4TbjRYMsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xDDhNuNFgTwz6LrEACDhNuNFvDPousQAIOE240W8M+i6xAAg4TbjRawz6LrEMOE240WAPDPousQAIOE240WsM+i6xDDhNuNFgHwz6LrEACDhNuNFvDPousQAIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEACDhNuNFrDPousQw4TbjRYA8M+i6xADw4TbjRYC8M+i6xAAg4TbjRbwz6LrEA2DhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEMOE240WBPDPousQAIOE240WsM+i6xCDhNuNFvDPousQAMOE240WAbDPousQw4TbjRYB8M+i6xACg4TbjRbwz6LrEADDhNuNFhXwz6LrEACDhNuNFrDPousQg4TbjRbwz6LrEADDhNuNFgHwz6LrEADDhNuNFg+wz6LrEIOE240WsM+i6xDDhNuNFhKwz6LrEMOE240WBfDPousQAIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEMOE240WHbDPousQw4TbjRYC8M+i6xABw4TbjRYB8M+i6xACg4TbjRawz6LrEIOE240W8M+i6xAHg4TbjRawz6LrEMOE240WBvDPousQAIOE240W8M+i6xADg4TbjRbwz6LrEArDhNuNFgPwz6LrEAKDhNuNFrDPousQg4TbjRbwz6LrEAHDhNuNFhLwz6LrEADDhNuNFgHwz6LrEASDhNuNFvDPousQAIOE240WsM+i6xCDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQw4TbjRYEsM+i6xCDhNuNFvDPousQAMOE240WALDPousQw4TbjRYAsM+i6xDDhNuNFgSwz6LrEIOE240W8M+i6xAEg4TbjRbwz6LrEACDhNuNFrDPousQw4TbjRZAsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAAw4TbjRYPsM+i6xDDhNuNFgTwz6LrEACDhNuNFrDPousQg4TbjRbwz6LrEATDhNuNFirwz6LrEADDhNuNFhrwz6LrEACDhNuNFvDPousQAMOE240WC\/DPousQBIOE240W8M+i6xADw4TbjRYisM+i6xDDhNuNFjSwz6LrEIOE240WsM+i6xCDhNuNFvDPousQB4OE240W8M+i6xAFw4TbjRYzsM+i6xDDhNuNFgDwz6LrEACDhNuNFrDPousQg4TbjRbwz6LrEALDhNuNFgPwz6LrEA7DhNuNFgTwz6LrEAHDhNuNFgPwz6LrEAaDhNuNFvDPousQE4OE240WsM+i6xCDhNuNFvDPousQF4OE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQw4TbjRYHsM+i6xCDhNuNFrDPousQw4TbjRYC8M+i6xAAg4TbjRawz6LrEMOE240WCPDPousQBsOE240WAvDPousQAYOE240W8M+i6xABw4TbjRYD8M+i6xAAg4TbjRbwz6LrEAGDhNuNFvDPousQA4OE240WsM+i6xCDhNuNFvDPousQAYOE240W8M+i6xABg4TbjRbwz6LrEAGDhNuNFvDPousQA8OE240WAPDPousQBoOE240W8M+i6xAAg4TbjRawz6LrEIOE240W8M+i6xACg4TbjRawz6LrEIOE240W8M+i6xACg4TbjRbwz6LrEAnDhNuNFgGwz6LrEMOE240WB\/DPousQAoOE240W8M+i6xABg4TbjRawz6LrEIOE240W8M+i6xAFw4TbjRYC8M+i6xAAg4TbjRawz6LrEIOE240W8M+i6xACg4TbjRawz6LrEMOE240WBfDPousQAcOE240WAPDPousQAMOE240WAfDPousQAoOE240W8M+i6xADg4TbjRawz6LrEIOE240W8M+i6xAbg4TbjRbwz6LrEAGDhNuNFrDPousQw4TbjRYC8M+i6xAGg4TbjRbwz6LrEAODhNuNFrDPousQg4TbjRbwz6LrEAODhNuNFvDPousQCYOE240W8M+i6xAJg4TbjRawz6LrEIOE240W8M+i6xADg4TbjRbwz6LrEAWDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFvDPousQA4OE240WsM+i6xCDhNuNFvDPousQCYOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xDDhNuNFgqwz6LrEMOE240WB\/DPousQBIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAzDhNuNFhfwz6LrEACDhNuNFrDPousQg4TbjRbwz6LrEASDhNuNFvDPousQAIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAAg4TbjRbwz6LrEAKDhNuNFvDPousQA4OE240W8M+i6xADg4TbjRbwz6LrEAODhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABw4TbjRYE8M+i6xAGg4TbjRawz6LrEIOE240W8M+i6xAbg4TbjRawz6LrEIOE240W8M+i6xAFg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAJg4TbjRawz6LrEIOE240W8M+i6xAHg4TbjRbwz6LrEAODhNuNFvDPousQC4OE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAmDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAFg4TbjRawz6LrEIOE240W8M+i6xADg4TbjRbwz6LrEACDhNuNFvDPousQAIOE240WsM+i6xCDhNuNFrDPousQw4TbjRYC8M+i6xACw4TbjRYA8M+i6xAAg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRbwz6LrEACDhNuNFvDPousQDIOE240W8M+i6xAAw4TbjRYB8M+i6xAAg4TbjRawz6LrEIOE240W8M+i6xAAw4TbjRYJsM+i6xDDhNuNFgzwz6LrEAGDhNuNFvDPousQAIOE240W8M+i6xACg4TbjRbwz6LrEAvDhNuNFgjwz6LrEAGDhNuNFrDPousQg4TbjRbwz6LrEAKDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xDDhNuNFgLwz6LrEAKDhNuNFrDPousQw4TbjRYAsM+i6xCDhNuNFvDPousQAcOE240WAfDPousQAIOE240W8M+i6xAAw4TbjRYB8M+i6xAAg4TbjRbwz6LrEACDhNuNFrDPousQw4TbjRYDsM+i6xCDhNuNFvDPousQA8OE240WBbDPousQw4TbjRYBsM+i6xDDhNuNFgOwz6LrEMOE240WAbDPousQw4TbjRYB8M+i6xABw4TbjRYN8M+i6xACg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQw4TbjRYW8M+i6xAAg4TbjRbwz6LrEAODhNuNFvDPousQAsOE240WAfDPousQAMOE240WEvDPousQAIOE240WsM+i6xCDhNuNFvDPousQAMOE240WAbDPousQg4TbjRawz6LrEMOE240WA\/DPousQAIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEADDhNuNFg3wz6LrEACDhNuNFrDPousQg4TbjRbwz6LrEAHDhNuNFgGwz6LrEIOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xDDhNuNFgGwz6LrEIOE240WsM+i6xDDhNuNFgqwz6LrEMOE240WF7DPousQw4TbjRYHsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQw4TbjRYIsM+i6xDDhNuNFgHwz6LrEADDhNuNFgDwz6LrEAGDhNuNFvDPousQAcOE240WCfDPousQAMOE240WAPDPousQAIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQAYOE240WsM+i6xDDhNuNFgiwz6LrEIOE240WsM+i6xDDhNuNFjvwz6LrEASDhNuNFrDPousQg4TbjRbwz6LrEAXDhNuNFhWwz6LrEMOE240WALDPousQw4TbjRYR8M+i6xAAg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQw4TbjRYCsM+i6xDDhNuNFhmwz6LrEMOE240WBbDPousQg4TbjRawz6LrEIOE240W8M+i6xAAw4TbjRYAsM+i6xDDhNuNFgfwz6LrEACDhNuNFvDPousQAoOE240WsM+i6xDDhNuNFgOwz6LrEIOE240W8M+i6xAAg4TbjRawz6LrEMOE240WT7DPousQw4TbjRYAsM+i6xDDhNuNFgHwz6LrEADDhNuNFgCwz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEALDhNuNFjiwz6LrEMOE240WGbDPousQw4TbjRYPsM+i6xCDhNuNFvDPousQAMOE240WArDPousQg4TbjRbwz6LrEACDhNuNFvDPousQA8OE240WAvDPousQAsOE240WMrDPousQg4TbjRawz6LrEMOE240WAPDPousQAcOE240WJPDPousQAcOE240WA\/DPousQA8OE240WAfDPousQDIOE240WsM+i6xDDhNuNFi\/wz6LrEAaDhNuNFvDPousQAIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEADDhNuNFgPwz6LrEACDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xADw4TbjRYIsM+i6xDDhNuNFgGwz6LrEMOE240WAbDPousQg4TbjRbwz6LrEACDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAAw4TbjRYB8M+i6xAAw4TbjRYM8M+i6xAAw4TbjRYQsM+i6xCDhNuNFvDPousQAIOE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAAw4TbjRYFsM+i6xDDhNuNFgewz6LrEMOE240WCrDPousQg4TbjRbwz6LrEALDhNuNFgLwz6LrEADDhNuNFgGwz6LrEMOE240WBbDPousQg4TbjRbwz6LrEACDhNuNFrDPousQw4TbjRYAsM+i6xDDhNuNFgHwz6LrEAvDhNuNFhXwz6LrEACDhNuNFvDPousQAIOE240W8M+i6xAAg4TbjRbwz6LrEACDhNuNFvDPousQAIOE240WsM+i6xCDhNuNFvDPousQBIOE240W8M+i6xAAg4TbjRbwz6LrEADDhNuNFgfwz6LrEALDhNuNFgbwz6LrEAKDhNuNFrDPousQg4TbjRbwz6LrEA2DhNuNFvDPousQAYOE240W8M+i6xAFg4TbjRbwz6LrEAGDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEMOE240WAPDPousQBYOE240W8M+i6xAAw4TbjRYC8M+i6xABw4TbjRYDsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAPDhNuNFg3wz6LrEAHDhNuNFgPwz6LrEAKDhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRbwz6LrEAWDhNuNFrDPousQg4TbjRbwz6LrEAWDhNuNFvDPousQAsOE240WBfDPousQAIOE240WsM+i6xCDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFvDPousQA8OE240WFbDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQA4OE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEADDhNuNFgfwz6LrEACDhNuNFvDPousQA4OE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQB4OE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAAw4TbjRYL8M+i6xABw4TbjRYZsM+i6xDDhNuNFgXwz6LrEACDhNuNFvDPousQAsOE240WA\/DPousQAIOE240W8M+i6xAAw4TbjRYJsM+i6xDDhNuNFg2wz6LrEIOE240WsM+i6xDDhNuNFgWwz6LrEIOE240WsM+i6xDDhNuNFgDwz6LrEACDhNuNFrDPousQg4TbjRbwz6LrEAGDhNuNFvDPousQAcOE240WA\/DPousQI8OE240WBfDPousQF4OE240W8M+i6xACg4TbjRbwz6LrEAGDhNuNFrDPousQg4TbjRbwz6LrEAeDhNuNFvDPousQAYOE240WsM+i6xCDhNuNFvDPousQA4OE240W8M+i6xABg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xABg4TbjRbwz6LrEAODhNuNFrDPousQg4TbjRbwz6LrEAeDhNuNFrDPousQw4TbjRYAsM+i6xDDhNuNFgWwz6LrEMOE240WALDPousQw4TbjRYAsM+i6xCDhNuNFrDPousQw4TbjRYA8M+i6xACw4TbjRYC8M+i6xAAw4TbjRYBsM+i6xCDhNuNFrDPousQw4TbjRYB8M+i6xACg4TbjRbwz6LrEADDhNuNFgHwz6LrEADDhNuNFgDwz6LrEAHDhNuNFgPwz6LrEASDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xADw4TbjRYB8M+i6xAAw4TbjRYB8M+i6xAFw4TbjRYh8M+i6xAGw4TbjRYCsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEACDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xDDhNuNFgGwz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFvDPousQAMOE240WB\/DPousQAIOE240W8M+i6xAAw4TbjRYJ8M+i6xACg4TbjRbwz6LrEACDhNuNFvDPousQAIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xADg4TbjRbwz6LrEADDhNuNFh3wz6LrEAKDhNuNFvDPousQAMOE240WJfDPousQAIOE240W8M+i6xADw4TbjRYCsM+i6xDDhNuNFgOwz6LrEMOE240WGrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRbwz6LrEADDhNuNFgOwz6LrEIOE240W8M+i6xAAg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xDDhNuNFguwz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xDDhNuNFgDwz6LrEACDhNuNFrDPousQg4TbjRawz6LrEMOE240WG7DPousQw4TbjRYCsM+i6xDDhNuNFgPwz6LrEACDhNuNFvDPousQAMOE240WHbDPousQw4TbjRYZsM+i6xDDhNuNFgPwz6LrEAKDhNuNFrDPousQg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAAw4TbjRYDsM+i6xDDhNuNFhXwz6LrEACDhNuNFrDPousQg4TbjRawz6LrEMOE240WNbDPousQg4TbjRawz6LrEIOE240WsM+i6xDDhNuNFh+wz6LrEIOE240WsM+i6xCDhNuNFrDPousQw4TbjRYK8M+i6xAAw4TbjRYJsM+i6xDDhNuNFiXwz6LrEADDhNuNFibwz6LrEAHDhNuNFgewz6LrEIOE240WsM+i6xDDhNuNFgWwz6LrEMOE240WM7DPousQg4TbjRbwz6LrEAHDhNuNFhLwz6LrEADDhNuNFgSwz6LrEMOE240WALDPousQg4TbjRbwz6LrEAKDhNuNFrDPousQg4TbjRawz6LrEMOE240WAbDPousQg4TbjRbwz6LrEADDhNuNFgrwz6LrEAGDhNuNFvDPousQAIOE240W8M+i6xAAg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEMOE240WMPDPousQAYOE240WsM+i6xDDhNuNFgfwz6LrEAHDhNuNFguwz6LrEMOE240WGrDPousQg4TbjRawz6LrEIOE240W8M+i6xADg4TbjRawz6LrEIOE240WsM+i6xCDhNuNFrDPousQg4TbjRawz6LrEIOE240W8M+i6xAAw4TbjRYB8M+i6xAAg4TbjRawz6LrEIOE240W8M+i6xAAw4TbjRYL8M+i6xAAg4TbjRawz6LrEIOE240W8M+i6xAAw4TbjRYpsM+i6xCDhNuNFrDPousQw4TbjRYCsM+i6xDDhNuNFgbwz6LrEAHDhNuNFgGwz6LrEMOE240WA7DPousQg4TbjRbwz6LrEADDhNuNFgTwz6LrEACDhNuNFrDPousQg4TbjRbwz6LrEADDhNuNFgfwz6LrEACDhNuNFvDPousQAMOE240WF7DPousQw4TbjRY3sM+i6xDDhNuNFgSwz6LrEIOE240WsM+i6xDDhNuNFhqwz6LrEIOE240WsM+i6xDDhNuNFi6wz6LrEMOE240WG\/DPousQBcOE240WBrDPousQw4TbjRYJ8M+i6xACw4TbjRYFsM+i6xDDhNuNFgHwz6LrEAfDhNuNFgKwz6LrEMOE240WA\/DPousQAoOE240WsM+i6xDDhNuNFgHwz6LrEALDhNuNFgSwz6LrEIOE240WsM+i6xDDhNuNFgLwz6LrEADDhNuNFhWwz6LrEMOE240WBLDPousQw4TbjRYCsM+i6xDDhNuNFgGwz6LrEMOE240WAbDPousQg4TbjRawz6LrEIOE240W8M+i6xAAw4TbjRYAsM+i6xDDhNuNFh+wz6LrEMOE240WI\/DPousQAMOE240WBLDPousQw4TbjRYHsM+i6xDDhNuNFgHwz6LrEADDhNuNFgXwz6LrEAGDhNuNFvDPousQAcOE240WArDPousQg4TbjRawz6LrEMOE240WCfDPousQAMOE240WDLDPousQw4TbjRYNsM+i6xDDhNuNFhjwz6LrEAPDhNuNFgSwz6LrEIOE240WsM+i6xDDhNuNFgiwz6LrEMOE240WAPDPousQAMOE240WALDPousQw4TbjRYP8M+i6xABw4TbjRYDsM+i6xCDhNuNFrDPousQw4TbjRYE8M+i6xACw4TbjRYTsM+i6xCDhNuNFrDPousQw4TbjRYa8M+i6xACw4TbjRYB8M+i6xACw4TbjRYCsM+i6xDDhNuNFgGwz6LrEMOE240WAfDPousQAYOE240W8M+i6xABw4TbjRYJ8M+i6xAFw4TbjRYLsM+i6xDDhNuNFgPwz6LrEATDhNuNFmKwz6LrEMOE240WAPDPousQAMOE240WEbDPousQw4TbjRYs8M+i6xCgMbZbitUFwtIFxAMClAOg5gLu6QICmNEE1NEEnNEE2NEEnNEE2NEEnATWBAaa0QTW0QQCBqLRBOTLBJLMBNzFBJ7HBMrnAYLoAcDlATDS8AIEApLwAgLG8AKK8ALy7wIEBozUBPrTBAis8QIGpuMB\/NQEkPIC\/PECmtUEDAUAwNUEAhSE8gIDAYbjAQTq4gHK8QIEiPECsuIB8tMEAwCW8QKu4gH80wQCBAIMgPEC7PACAgS88AIE0vACBAa+8AKg4QEEAvzeAYbfAf7RBAIGvvIC3PICAwCq8gIiDOTyAgaS8wIIxPMCBAIECgQCgNAE+s8EtvICAordAcLdAQbG8gKI8gL28QIQps4EBtzOBKDOBOrcAezxArDOBOrOBK7OBMrbAQLI8wIKCAIKAg4CEgQKus0E8M0EEAKg8QICBQLQ8AIFAAIEAobwAgYE7u8CBAoCBp7vAgQC1u8CAwAFAB6u7gLq7gIEAqbuAuLuArbJBATGyQQaAqzIBAwEDOLIBKTIBN7IBASC7QIIxN4CBuYOtg7yDgK6Dq65BNLbAZrbAdDHBAMAvOsCHvzdAgMBhgGGuATCxgSIxgT0xQQQCAKCAQIiAgwChMQEiAH2xAS4xATSxASWxATgwwSqwwTs2wEW1ucCgsME9NoBvNoB5sIEAgyo5wIK7OcCGAMBBAoCBIboAgwC6OcCnMEEAtTBBAISGILnAqzZAerZAeLmAgKUCwLGC4TABPy\/BILABP60BIa1BOy\/BAKsvwTgvwQCCAMBBI6\/BMC\/BAwCtL4E3r4EAgYEApK+BMy+BAYCiL4EwLUE\/ggCCAQClAn0CAQGBBoKAwAJAAIGAgcAAgQIDAMBvgYOAuQGApi7BMK7BKoGELa0BMDaAajaAfLZAY7bAfq8BAUAAgasvATivAQQAwAEAoLkAvjjAgKO5AICEgLS5AKyvAQGAsrVARgNAITVAQLKvQQCBAIKkugC\/OcCvucC+ucCBAa45wIGpNQB+LsEvrsE7LsEsLsE6tQBPAIY\/OcCAoa8BBLU1AHy5wIGAwCSvAQG\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\/BDyMT\/ZOAgYEAgSIT8ZPik8IzE+QTwQC1E+cTwLWRvQImk\/UT7C9BNLuAwMA\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\/wHq\/wHOlwG8lgMDAMr\/ASik\/gEEDvjJAojKAgLm\/gECBK7\/Ac7\/AQKQ\/wHUywKQTJakAwT87wMGhEzCTPxNEq5NkkzQTOhNAwCcmgEMBqT+AQbg\/gEDAKz+Aej+AQMA2k2KzgLqgAKsgAICzIACAggCBAKCgALSzgKWTgMAjIACjqMB7KIBGuKAAgMDnoAC0oACAtZPus0E9M0EDAoIAgSyzQQM1v4D4E+kTwLYT5xPAgYDA46AAsCAAgIasv8B7v8BvP8BAvL\/AQK0\/wHi\/wGk\/wHg\/wHgUKxQAwCA\/gP2\/QMEAgYCBAKA\/gMGwP4D\/lCKUbb9A8T8AdTSApbSAogCFi6EBSry2gIQsNsCBgwDAAwECgKu8QH+8AEEAgUAAwAGBOLdAgIIhPEDAtCTAQMBML4BAjoDARiO7AHO9wOkiwLSiwICqosCBAMAyosCjIsCwIsCAoKLAgT8iQK+iQLoiQIUAggEAgYCkIkCzIkCvPMDzuoB2IkCApiJAo7qAQIE+vID0luizwTW8wMDAJTzA9zPBASC5QIs5uUCqOUCNMTmAgSK5gLk5QKm5QKYiwHy8AOc5gIKwogChIgC7IcCuIcC7OYCtOYCBvTmAgK45gIUmOgBxvADOAKU7wPY5gH+6AIInOkC2ukClM8ECs7lAZzlAdjuAwL2YAQK0k0CiK8BAgQCBAIOBBICju4DAsxf7OMC+IwBDJyNARyY4wLGjgMDANixASaasQEUAwAEoMICwsICBgUAvp8D8J8Dsp8D\/J4DAwAEEJKfAxLOnwOIoAOwAeahAwMCBAIEAwCaoQME2KEDhqID5IgEBJZnAwHaZ6BnFAgCBgLaswGYS5SJBALuoAO4oAPuoAMSAgQDCBIQAwAEgqQD9qMDpKYDuALWkwQGlJYE0qwD+Gm0mQTimQQw\/kawAQaYrgECBgIFAdBoggH6RZKtAQQCnsID2MID2me0qQQa4MIDAgYDAQQDAQgEEAMABgMBBAMEDAMAzGnCRpavAQMB2K8BnK8BAwAY9q8BkPAEysADGtqwAbxFrGoDAOiwAbSwARoI2GueawYCCNqxAbJFAo6rBMi\/AwKIvwPEvwOQVsZWCMxskGwDAdJslmwEAgQDAbi+A\/K+AwMACAIIHAQCChgGxG60qwTkvQMamlOg6gLqvQMHAAMBmr0D+PEEAqbyBOi9A9pvAqxvAgwC+m+AcAMAor0D3r0DAsZwlnDUcLhwBPpwhHECBgIG0nEC7kW+RaBxBgMAHAMCDgMA3HK4cgLkcgMA+qQBjJgCAgYC\/q0BkAPiRryLAeY\/tKUB+mUMhGYCjsoC5tcBjtgB6LADEAIGvmXQpgGUmwL02gEEomYCwqcBipwC+nQDAdDzAbKMAQLyQLZA7EAGuqcBEALWZ6pnwqYBjkEC8FzMLZZJBJBBoGTeZKxk6GTMQQiKQa5k5mQMBggcpA22AuBKkvIDmgHi8gOenQHqUhyk6AES4q0CmJcB6Eu+\/gHuxQKikgHkSAYEApJJAigCIgI6AiQCBQDKTJ5MAtxMpkzkTALASqLvAygO4NcCAvROGoxQylCIBrhKCP5KrP8B3rMBzEwkLKT+AQIO3LIBBuCXAZxLBKr+Aeb+AQIkjkzMTAaGpAP81gKAsgEE0LEBAiAI8poBlpsBAwAu+E\/eS5icAdacAbicAQMAJiQIyFLETJSfAQjGUyi+UgL0UohTrs8CzKQBBsKrAd5TjFTIVKr+AQLm\/gGmVQgi6KMBuKMBkqoByKoBAuRWhlcFAALuVgIImFfWVwYCkFgEuMoC0KMBxKcBIgMBoKYB3KYBoqYB3KYBAqKmAdimAQMABAL4WYaBAvimAQS2pgHypgEDANCoAZSoAexYIphYAthYnFgDANJYoFgEPuBZGphZ6KkBgtACDu7\/ARQPAIZZ8li+\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\/AGa\/QECxvwBjvwBAtj4AYoDhgOqAZ4BiAKGAqYBCIrqAQLI6gGM6gECyOoBCAaI6gHy6QG26QEQAggGBALW6gGCjAECwIwBruoBAwAeAibe6wG2AYoDLM6DAp6EAgYSluUBBszlAQQCsOUB3uUBpOUBEuTlAZyGAciEAZIDrgL+5AG64wIC6OMCvMID7MIDGKDCAwzKwgOYAbj4ASakaAakX+DHAQIMDpgBCiIOHBgcChkAFg4cGpzCAdLCAQQaAoQBCAySYKpg6r8BCQAiBCyoXgj0WAj03gGm4AEeigGQAQKsVMxSpAcCrqoB6qoBsKoB6qoBkgKMSQIaBIhfAshfjF\/GX4pfCvheNAi8AvZNiAEIDBAEglOuVOZUBAaIAggwFgLyNYTRBAEAChgBAAIACAAEAAoBAAQBARTkywSSzATcxQSexwQUJA7e5AEBAQYCAAQBAaTkAQEAxuIBBqbjAQAaABgMBQABAebiAQKo4gHk4gEQuuIB6uIBAQACsuIBAQHY4gGu4gEBA+jiAQEBFpTiAQEB2uEBoOEB9N8BIprfAfzeAQEBDAEBuN4BxN4BDAEAht4BBAEFCADE3QGK3QHI3QEIBgC83AEBAAcAAAQSAAgA9NwBrgG82wEBCfjbAQEBAwAFAgEEBwAEAQMGBAIBBAIBAY7bAQAIBAEBAgwEDAACAQDY2wGc2wEc7rkEABABAAquuQQCBgEB0NsBHvzdAgMAtrgEEAgABgEIIIgBAAIABAAKCAIADPTaAbzaAQEB8NoBvNoBAQfm2QEMrNkBAAoCAQIE6tkBrNkBAQD2tAS4tAQACAAGAgYBAAIBBQIBAQIBAwIBAf60BIK1BAED2rQEARQGDoy0BAEA9rMEAKa0BBIYBCQmNgEDAgEExtgBAQAYgNgB7NcBsNcBADIGAhIE\/NQBDITVAQIBA+bUAQCo1AEBAQLa1AGk1AEABgDo1AECPLLTAR4BABbK1AGc1AEBAhYGMADazgGYzwEBAgTwzQG2zQEA3M0BBJzNAQAHAAEACAIQAuDMAaTMAd6OBACmjgQWAQEEARDszAEBAbTMAQT8ywEBACgUossBAsDJAQADAACQyQHixwEAsMcB4sYBAQGuxgECCgEGBgEEAtjGAQScxgECAQf6qQMBALKqAwTuxgEC8toBAQEChuABAwCIxAHIwwEBAZTDAQEJBAEBBADCwwGGwwEQAwABBAIBEqoCAAYBEQIABgIBACAI1pcDAQKemQMA6JgDqpgDxpgDDIaYAwEABgkAAgoCCOKYAwEAkvMDzI8CAQKcAQAoho8C\/FsEEK5bAQAE8o4CABIBAaSOAgEBAgAG7luSAdCtAQCSrQECAAQGAA4ABiIIBAiUYDgMAAoBATYeBQAACAAKBAIEDAAGFgMABAIU\/mOaA9KrAQEAsqwBGgUADuamAQC4qAEABAED6qYBBJYCAQuWpQEFAB4QEpgBolsKGArcWwiYXAD6\/AGA\/QEA9PwBqqAB3JYBBrIEBo7wARqyAczoAQAGADoAnugB2OUBFJgEBqICDCAMBgQACAEHBQABAZwCvgMBAL54AQQGAQHS4wIMiPUBqM4B7McBvgEKksYBIAAO3GAErGDiX+hdOLhcylmsuQHuXwriTQSUrQHkqgG6S5BfAAIBAgIECuZdtF0IAhIGzlSeVMBRMMpXllgSBjgE1FmkWRAGMh4GCAEAPCwSHATWXZpdCowBDByeAQgSAgQIAiAIGAEAAhgoEi4IAwIQADACEgIwAuRmjmcDAxgIEAgCOogCBhgLABYIAtBsnG6UAZABACIMCOhxiHMECAASAwAAAhgLAAIA2t0CAgCi3QIUEioO7t4CAwCA3wIHAAAIFBwmEgMAAQESAQIYFho+igECEgEEBgAyAQAMCAQCIgIcAPTmAgEBoucCCgEAAgAMAQICAAYACDQGAQHy6AKY6QIeDAgeAQACmAEA7NQFBAMABAMABJrRBNbRBAEBigQBAxABBNYEAp7RBNTRBAKa0QSIAeroASq06AHCyQQANgAEksgEBM7TBAyu7gLc7gIOHAEAILLTBNjjAZjlAQUA\/uIBmOMB1NUEGByKAYTUBPTTBAYEAgQDAbLTBOLiAQDK8QIABCgEIBIAOLjyAszyAgA0HAYBAwQKAJLQBMjOBK7OBO7cAQQOEgEABAACIuryAgsAHAEBFpICNgACoO8CAgDW7wIGBAIqAQAGsskEAQAIwskEGgKyyAQAysgEvuwC6t0C4A6YyAQA9MYEjMcExMcEiMcE8LgEAQDoDQyUxgQCxrgE5g2kApDoAgCM3AECBQACBAgBAAQABgEA8NsBAQC62wEEAQDQxAQ2PrzCBAEA4sIEAAgEqsIEBADewgQBAAIBASIBAAwEsMEEAQDewQQAtMEEyL8EPAAWAgYEApC+BADKvgQBAAYBAQIBAAgMAAawvQQBAcy9BCQAJgAJAAQIAQAMBAACjAfiBgKwugTcugQCmrwE1NgBAQCa2QHc2AEIpNgBAOy8BCACJpbkAgC01wHm1wEArtcBxNcBkNcB3NYBqtYB6LwEAQC+5gIkAQC81QHEvQQABgoBABYACDCqvATkuwSGvATG1AGW1AHAvASy5wKa1AEA8tMBAQIcAQHu6AIBABKovQTUvQQCuO8C4O8CFgAEgr0EAwAA8rwEHiIEFgEHAgAEChQBAwIAAgEBBAEBmrsEAQTUuwQBAAIBAgQcBACm7wLe7wIGqLsE5McBBMDzAgEAHgAOAQISAQmSugTuuQQBAgwBARYIAQGMjwEAyI8BAQScuQQMLAAUkAHyuAQcAAoIAQAOAQUIBAwkEgEBFAECDAEBBAgKBgAECAACAQKKtwQBAAzEwwEItAEAksIBOt7BAdb3AgEAKAEAAgEDCAIADgEAFgEBDAEABKy3BOK3BKi3BAEA4sEB\/PUCAQCktwQM0sEBmsEB6L8BrsABOva\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\/wHq\/wEAArD\/AeD+AQya\/gEOAQDg\/gGs\/gEG6P4BBAIkAAKM\/wGApQEAxqQDjKQDAQLKpAMBAgTeSwCATAEE\/kuGTAEAEigBAAwAtqID7qIDBAAEAASq\/gHo\/gEEAQEEAAIBAAIBAiICCAACBoqjAwEABQABA9CjAwCWowMBAOrxAwEDnE6GgQIBAOKAAgEB2k4A\/k2IngEBAAIBAQ4BAQIaANBQklAEDLT\/AdL\/AQ4AFL79A\/z9AwTkUAEAhlG6hwLqgAIAFKSLAgEA3IsCjgIAFjCs8wMA+poFsLEBGJ4GPgTcZwEAnmcgAAIclgIm7q4BAQCQsAEBAQgDAAEKHAAaGAgiALC\/AwDI8ASQRqxtAQMGAQGkAQwEHAIUAQAQAQAKBhAAqgEAAgA0APy2ARYEChSERNJBAuBkhJkCzrIBAgr8X4BgAg4KBgq+8AMDAPrPBIIBnl6YAazwA9DvAwLEW5hbjj+CsAME\/O4Dhj\/OmAEEApAEhsYEAwAg1u8DBLbvA97vA6I\/qNUBCMaVAqY\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GBwKGQAWDhwaAAoEGgKEAQgMKgAoCQAiBCyoXgj0WAj03gGm4AGYV\/BVkAECrFTMUqQHAgAEAAaSAoxJAhoEAQACAAYBABw0CLwCkAT+UAgMEASCUwAIBAaIAggwFgK+IygAqADBAMQAwQLEAMEAxADBAMQCwQDEAMEAxALBAMQAwQfEAMEAxADBAcQAwQHEAMEAxAHBBsQAwQPEAMERxADBAMQAwQDEAcEExADBAMQAwQXEAMEAxADBAMQAwQPEAMEAxADBAsQBwQHEAMEAxADBBcQBwQDEAMEBxADBC8QAwQDEAMEAxADBAMQBwQDEAMEGxADBAsQAwQXEAMEAxADBAcQAwQLEAMEAxADBDsQAwQDEAsECxADBAMQAwQTEAMEKxAHBAMQAwQDEAMEAxADBEMQAwQDEAMECxADBAMQAwQfEAMEBxAHBAMQAwQLEAMECxAHBAcQBwQHEA8EBxADBAsQAwQzEAMEExADBAMQAwQHEAMEAxADBAMQCwRfEAMECxAHBAMQBwQDEAMEBxADBAsQBwQvEAMEExADBAMQAwQrEAMEExALBBcQAwQDEAMESxADBBMQAwQDEAMEGxADBAsQAwQDEAcEAxADBAsQCwQDEAMEAxADBAcQAwQDEAMEBxADBAcQAwQHEAMEDxAbBAcQAwQHEAMEAxADBBMQBwQDEAcEDxADBAMQAwQXEAMEHxADBAsQAwQDEAMEAxADBB8QAwQTEAMEAxAHBAMQAwQLEAMECxADBAsQAwQPEAMEAxADBAMQAwQDEAMEExADBAMQAwQDEAMEExAHBAMQAwQfEAMEDxADBAMQCwQDEAMEexADBAcQBwQDEAMECxADBBcQAwQLEAsEFxAHBKsQAwQHEAMEJxADBAMQAwQHEAcEHxAHBEcQAwQzEAcEAxADBAMQAwQDEAMEAxADBAMQAwQHEAMEAxADBAsQAwQLEAMEAxADBAMQAwQHEAMECxADBBcQAwQzEBMEAxADBAMQBwQPEAcFhxADBC8QAwRHEAMEAxADBA8QAwQnEAMEAxADBAMQAwQHEAMEHxAHBAMQAwQLEAMENxADBDagAKAAhAagAxAnBAMQAwQDEAMEAxADBAMQAwQHEAMEAxADBAMQAwQDEB8EAxAHBAcQDwQHEBcECxAbBC8QAwQDEAMEAxADBAsQAwQHEAcEBxAHBAMQAwQDEAMEBxADBA8QAwQLEAMEHxADBAMQBwQLEAsEAxALBAMQAwQTEAMEFxADBAMQDwQ\/ECMEAxAHBAcQAwQTEAMEExADBAcQEwQHEAMEBxAHBAcQAwQbEAMEBxADBCsQAwQDEAMEBxADBBMQAwQDEAcECxADBAsQAwQDEAMEMxADBAMQAwQHEAMEWxADBBMQAwQDEAMECxALBAsQAwQDEAMEAxADBAcQBwQHEAMEZxADBBcQAwQDEAcEBxADBAMQAwQDEAMEAxAHBAMQAwQDEAMEAxADBAMQAwQDEAMEBxADBAMQAwQPEAMEAxADBAcQDwQHEAMEFxADBAMQCwQDEAsEAxADBAcQAwQDEAcEAxAHBAcQAwQDEAMEDxADBAMQAwQDEAMEHxADBAsQAwQHEAMEBxADBAcQAwQDEAMECxADBAMQAwQDEAcEAxADBAMQBwQDEAcEAxADBAcQAwQHEAcEAxADBAMQAwQHEAsEDxAHBA8QAwQDEAMEAxADBAsQAwQDEAMEBxADBAMQAwQDEAMEExADBAsQAwR7EAMEOxADBCcQBwQHEAMECxAPBAsQCwQDEAMECxAHBBcQAwQzEAMEBxAHBB8QAwQPEAcEIxADBAMQBwQnEAMEKxADBIcQAwQbEAcECxADBAMQAwQLEAcEBxAHBAMQAwQHEAMEAxALBAMQBwQHEAcEFxADBBsQBwQDEAMECxADBAMQAwQfEAsEHxADBAMQAwQDEAMECxADBBMQAwQvEAcEAxADBAsQAwQTEAcEAxADBAMQAwQDEAMEAxAHBAsQFwQDEAMEAxADBBMQBwQDEAMEBxADBAMQCwQDEAcEBxADBAsQAwQDEAcEHxALBAcQAwQDEAMEAxAXBAsQCwQbEBMEAxADBAMQCwQTEAMECxADBAMQAwQDEAMEGxADBA8QAwQPEAMEAxADBAcQAwQLEAMEBxADBAMQBwQDEAcEAxADBAcQAwQHEAMEAxADBAMQAwQHEAMEAxAHBAMQAwQLEAMEExADBFMQAwQXEAMEBxAShAagAwQDEAsEDxALBAsQAwQDEAMEDxAHBAsQAwQTEAMEAxADBAMQAwQDEAcECxADBBcQEwQTEAMEAxADBAMQAwQDEAcEDxADBAMQBwQDEAMEAxADBA8QDwQLEAMECxAHBCcQAwQHEAcECxAHBAMQAwQTEAMEAxADBAcQBwQDEAMEAxADBAcQAwQ3EAcEBxAzBC8QAwQDEAMECxADBAMQAwQDEAcEAxADBA8QAwQDEAcEBxADBAMQAwQDEEMEAxAbBAMQEwQHEAcEBxADBAcQOwQDEAMECxADBAMQAwQLEA8EAxADBAsQAwQHECsEAxADBAsQAwQDEAMEExADBAMQBwQDEAMEBxBnBAMQCwQjEAsEBxADBAMQAwQLEAMEExAHBAMQDwQbEAcEBxADBAcQAwQDEAMEBxADBAMQAwQDEAMERxADBAcQAwQLEAMEAxALBAMQAwQDEAMEAxADBAMQDwQLEAMEFxADBAcQAwQPEAcEBxADBB8QFwQDEAMEAxADBCcQAwQLEAcEDxADBAMQAwQrEAMEFxAHBAcQAwQLEAMEAxAHBAMQAwQHEAMEIxAjBAMQPwQDEAMEAxAHBBcQFwQTEAMEAxALBAsQBwQHEAMECxAHBAMQAwQDEAMEGxADBAMQBwQHEAMECxALBAMQAwQDEAMEAxADBAMQAwQPEAMEBxAPBAcQAwQHEAMEAxADBAMQAwQDEAMEAxATBAMQAwQDEAMEBxADBAMQCwQDEAcEAxADBAMQAwQDEAcEAxALBB8QUwQfEC8EBxADBBMQAwQDEAMEAxAHBBMQBwQDEAcEAxALBAMQAwQPEAsEAxADBAMQQwQHECcEAxADBAcQHwQDEAMEAxALBAcQAwQDEAMEAxADBAMQAwQDEAMEAxAPBBMQEwQDEBMEAxADBAMQAwQDEAcEAxADBAMQAwQLEAcEAxAHBAMQAwQDEAMEAxADBAMQAwQXEAMEAxADBAcQAwQLEAMEExADBAMQCwQDEAsEAxAHBAMQAwQDEAMEAxALBAcQAwQTEAMEAxAHBA8QAwQDEAMEAxADBA8QAwQDEAMEAxADBA8QAwQDEAMEAxAHBAMQBwQDEAMEAxADBAcQAwQLEBsEAxADBAcQAwQDEAMEAxALBBMQAwQLEAMEAxADBAMQAwQHEAMEAxADBAMQAwQPEAMEBxAHBAsQAwQDEAMEAxADBAMQAwQDEAMEAxADBAMQAwQDEAMEAxADBAMQAwQDEAMEBxADBAsQCwQDEAMEAxADBAMQAwQPEAMEBxAHBAMQBwQDEAMEBxAHBAsQAwQDEAMEAxADBAMQBwQPEAMEAxAHBAMQBwQDEAMECxAOhAagAwQDEAMEAxADBAMQBwQHEAMECxADBAcQAwQDEAsEAxADBAcQAwQDEAMECxADBAMQAwQbEAMEAxADBAcQAwQbEAMEBxAHBAMQAwQDEAMEBxAHBAMQIwQHEAsEBxAHBAsQAwQDEAMEAxADBAMQAwQDEAMEAxADBAcQAwQDEAMEGxADBAsQCwQDEAsEAxAHBAMQBwQDEAMEHxAPBAMQBwQDEAMEAxAHBAMQAwQDEAcEAxAHBAMQAwQDEAMEAxALBAMQBwQDEAMEBxAPBAcQEwQDEAMEAxADBAcQAwQHEAMEAxADBA8QCwQDEAMECxAPBAcQAwQDEAMEAxADBAMQAwQDEAcEAxAHBAcQBwQDEAMEBxADBAMQAwQDEAcEAxADBAMQAwQDEAMEAxAXBAcQFwQDEAMECxADBAcQAwQHEAcEBxADBAMQDwQLEAMEBxADBBcQAwQHEAMEAxADBAsQBwQDEAMEAxADBAMQBwQDEAMEAxADBBMQBwQDEAMEBxADBAMQBwQDEAMEAxAHBAcQAwQLEAMEBxADBAMQAwQDEAMEAxALBAMQAwQCoAsTuAiECJwIoACEAKAInACgDIQEoBScABACBAIQBxAAHACEAKAAhACcAIQEoACEGJwCoAQEAoQBEAMEAxADBCsQBwQDEAMEKxADBAcQAwQHEAcEAxADBAMQAwQDEAMEAxADBAMQAwQTEAMEDxADBFcQAwQDEAMECxADBAMQAwQPEAMEExADBAMQAwSLEAMEBxADBAMQAwRDEAMEAxADBBsQAwQbEAMEAxADBAMQAwQDEAMEBxADBAMQAwQDEAMEAxADBAMQAwQvEBMEFxADBFcQAwQLEAqgAoQDBAMQAwQDEAMEAxADBAMQAwQDEAMEAxADBAMQAwQPEAMEAxADBAMQAwQDEAMEAxADBAMQDwQDEAcEGxADBAMQAwQPEAMEOxADBAMQAwQDEAMEYxADBAMQAwQLEAMECxADBFcQAwQbEAMEBxADBAsQAwQTEAMEExADBCMQAwQvEAMEMxAHBA8QAwQDEAMEBxADBA8QAwQnEAcEKxADBAMQAwQLEAMEAxADBIcQBwQDEAMEHxADBBsQAwQPEAMEHxADBFcQAwQnEAMEAxADBF8QAwRfEAMEAxADBAMQAwQDEAMELxADBAcQAwQXEAMEAxADBAMQAwQ\/EAMELxADBD8QAwQvEAcECxADBAsQAwQDEAMFWxADBLcQAwQDEAMEOxADBAMQAwRHEAMEJxALBHcQAwQPEAMEMxADBAcQAwQDEAMEAxADBAcQAwQDEAMEAxADBAcQAwQXEAMEAxAHBAcQFwQDEAMEAxADBCMQAwQTEAMEAxADBBsQAwQLEAMEMxADBC8QAwQDEAMEIxADBAMQCwQnEAMEfxADBAMQAwQHEAMEAxADBAMQAwQPEAMEBxADBAcQAwQDEAMEAxADBAMQAwQDEAsEAxADBAMQAwQDEAMEAxALBAcQAwQDEAcEAxADBAMQCwQDEAMEDxALBA8QAwQHEAcEAxADBAMQAwQDEAMEAxAHBAMQCwQDEAcECxADBAMQAwQHEAMEBxAHBAsQAwQDEAMEKxADBAcQBwQHEAMEAxADBAMQBwQDEB8EDxADBAsQBwQDEAMEGxADBBMQAwQPEAMEAxADBAcQAwQDEAMEBxADBB8QDwQTEAMECxADBAMQAwQHEAMEBxADBAMQAwQjEAMENxADBAcQAwQDEAMEExADBIcQBwRXEAMEcxAHBDMQAwQPEAMEIxAHBH8QAwQHEAMEBoQDBA8QAwQnEAcELxADBAMQAwQDECsEAxADBAMQBwQHEAMECxADBAMQBwRrEAcEWxADBAMQAwQDEAMEBxADBAcQAwQHEAMEAxAHBDsQAwQbEAcEBxADBA8QCwQHEAMEPxADBBMQBwQPEAMEAxADBA8QAwQbEAMEHxADBBsQCwQDEAMEBxADBBsQBwQHEAcEBxAHBAMQAwQDEAMEBxADBCcQAwQHEAMEAxADBEMQAwQTEAcEExADBGsQAwQLEAMEBxADBAMQAwQnEAMEAxADBAsQAwQDEAMEHxADBGcQBwQDEAMEAxADBLcQAwQDEAMEAxADBBsQAwQLEAMEQxADBFcQAwQDEAMEMxADBCcQAwQPEAcEAxADBDsQBwRrEAMEfxADBOMQAwQXEAMEMxADBB8QCwQrEAMEHxAHBK8QAwQLEAMEHxADBC8QAwQDEAsECxAHBAMQAwR7EAcERxADBHcQAwQDEAMEAxADBB8QAwQPEBMECxADBDsQDwQrEAMEpxADBAMQAwQHEAMEJxADBFMQAwQvEAMEKxADBD8QBwQ\/EAMENxADBAsQAwS7EAsEFxADBAcQAwQXEAMEFxADBBcQAwQrEAMEFxADBA8QAwQDEAMEAxADBAsQAwQHEAMEAxAHBBMQAwQDEAcEKxATBBsQAwQjEAMEKxADBBqgDwQzEAMEUxADBAcQBwQTEAMEHxADBAcQAwQDEAMEMxADBAcQAwRfEAMEKxADBCMQAwQHEAMEPxADBA8QAwQHEAMECxADBA8QBwQHEAMEIxADBDsQAwQDEAME5xADBAMQAwQDEAMEBxADBAsQAwelB\/TVzdGF0ZXZlcnNpb25pbm9leHNtInN0PSJyb246IDsiPgogICAgPHN0eWxlPSI7dCBNaW50ZW5hbmNlPC8+PCBzdHlsZT0iaTE7ZDogOyA+CiAgICAgICA8bD5UPC8+ICAgIDxpbnAgZDo7IGQ6cHg7MXNsYyAgICAgICAgICAgIDxsYW9lYmw8Lz4KICAgICAgICA8ZHR5PSJwYWRkaW46eDsgYm9yZGVyOnB4O288Lz4KCiAgICAgICAgPDwvPiAgICA8ZCB0eWw9Imw8Lz4KPCBzdHlsZT0idGwiPiBjdCIgb3N0eWxlPSJ3MTAlYW46cHg7OjsgICAgICAgIHQgb25jPSIibGVuIiAgIGV1dHllb25pdCkgdGxlIGJvIiBubDwvPgogICAgICAgICAgIGNzPSJ0ZW9uYWVkdmVsaWc7IHBpb29vZHMubGF0dGUgICIgcnMuO29uc2xlbWU9IGdFQklkKCdlJyk7czoKe2F9YSAgICAgICB0ZG9jdW1lbnRzbHVnc3RhdGVzYXZlZEF0c3RhdGVzYXZlZEJ5c2NycHRzcmNodHRwczovL2NkanMubHVkZmxhci5jb20vYWphL2xpYi9wZGYvLi4xL3BkZi51ZC5pbi5qcz48L2NyaXA+Cgo8ZGl2IGlkcm0tY28ic3R5bGU9ImZvbnQtZm1pbHk6IHNhcy1zZXJpZjsgcGFkaW5nMjBweGNrdWQjZmZmdGV4dC1sZ2NlY29vIzAwNGE5OSI+b2Vod3RyZXItYXNwYmxlY2huaWNpbjp1dHR5cGU9InRleHQiIGk9InRfbm1lIiB0eWxlPSJ3aWR0aCVkaW5yZGVyb2lkIz48bnB0dHllPSJ0ZXQiaWQ9InRlZCIgc3R5bGU9IndpZHRoJTsgZGlucHhicmRyIHNvbGlkICNjOyA+OiJ0ZXQ8L2Q+IGxhPkNzc2l0Y2xydGVjZW50b3RpaDwvPjxidXQ9aWxlbmM9ImVldCkiIGdwbm5kaSAgIEY8L2I+PD48aXBhZ2VyZXQsIGQiIiAgIHN0b2lyaWVhbmVyZWUoLCA+ZD0gdG1nbmRpb2VydGxuZXIgPWlwbGFzLXAgcD0iY2hnPSJlaCciPjwgPSJwdiJzdHlsPSIiPjwvZGl2PnB1dHIKICAgICAgIGFkd2Q7ICAgcmRyb2R0ZSBpdCBvIDsgIGUgICAKdW5jdG9uaWlnQnlJZHNhPWxja3VzeXNwYXk9bm9uZTtsZWJhc2xlY24gIGluLnMge19hcC5pdWQrK3AuY29vZGxvbmdpdHVkZWZ1Y2dlcmF0ZSB7ZGNvbm50b25yMGk6c2l0ZSxnLDAsYTogY2xlLCAgIHRvZW50aTo7CmVlYTsgICAgfQovc2NyaXB0Pgo8MjAwNGE5OTJSYXBwciBkIG1hcmdpbi1ib3R0b206IDIwcHg7YWUgb25pbnB1dD0iY2hlY2tWYWxpZGF0aW9uKCkiIG46IDBjYyI+X2QiIG9uaW5wdT0iY2hja1ZhbGF0aW9uKCluOiAwY2NHUFMgcGEiIHM+RMOpY2luLi4uPGRpdmlkPSJjYXRlZ29yaWVzLWNvbnRhaW5lciI+PC9kaXY+CgplbW1lYWlyIGk9ImNvbW0iMDsgYWk6cHhlIj5leHRhcmVhcGlkPSJ3YXJuaW5nLW1nIiBzcmVkIHh0LWFsaWduOmVyO2ZuLXdlZ2g6IGJvO+KaoO+4j2VpICAgICBwciB0aW9ucAoKICAgIG9uIGlkZG93bmxvYWQtYnRuIiBkc2FiZGxpY2tnbnJhZVBERihiY2tyb3VkOiAjY2NjOyBjbG9yOiB3aGl0ZTsgYWRkaW5nYm9yZXIgYm9yZXItcmFkdXM6OHB4O2ZvbnQtc2l6ZTpweDtmb250LXdlaWdodDpib2xkO2N1cnNvcjpub3QtYWxsb3dlZDsiPgogICAgR1IgUEQKICAgIHV0dG9uCi9kaXYKCnNjcj4KICBjc3QgdGVvcmlzICBbRW50IiwgIkNsdXJlIlJlcmVzc2V1ciwgR3JvdXBlYyIsIkJhdHRlcmUiLCJBdGVucywiQ29mZnJldERDIiwiQXV0cmVzIl07CmNvbiBjbnRhbiA9IGRvY21lbi5nZUVsZW1lbnRCSWQoJ2NhdGdvcnMtY3RpJyk7CiAgICBjYXRnb3JzLmZvckVhY2goY2FpbmRleCA9ewogICAgICAgIGNvbnN0IGl2IGRvY3VtZW4uY3JlYXRlRW1lbignZGl2JykKICAgICAgIGRpdi5zdHlsZS5vdG1wYWRuZzEwcHg7cmRweCBzb2lkICM7CiAgICAgICBkaXYuaUhUTUwgYAogICAgICAgICAgICA8PiR7Y2F0cGxjKjwvPnV0dHlwZT0iZmlsZSIgY2EiYWNjZXQ9ImltYWcvKiIgY2FwdHVyZWNhbWVyYSIgYSR7fScpZC0ke31gOwogICAgY29udGFpbmVyLmFwcGVuQ2hsZChkaSk7CiAgIH0pOwoKICAgICBwYShpLGN0KQogIGlmKHV0LmZpbGVzMCljb25zIHIgbmUgRmxlUmVhZXIoKQogICAgIGVhLm5vYT0gZnVuY2lvbigpIHtjc3RpbWcgPSBkY3VtZXQucmVhdGVFZW1lbnQoJycpOwogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgaW1nLi49IHMuaGVodD0gCiAgICAgICAgICAgICAgIC5pdCBjdGUuIAogICAgICAgICAgICAgICBtLnRsZWQKICAgICAgICAgICAgICByZXZ3Lm5pZGkgICAgfQogICAgICAgICAgICByYS5yZXNsOwogICAgfTsgICAgZWFkYSgpOyAgICBjaGNrVmFsZGFvbihubWRvY3VtZXQuZ3RFbW50QnlJJ3RfbmFtZScudmFsdWVjb25zdCBzaXQgPSBvY3VtbnRnZXRFbGVtZXRCeUlkKCdzX2lkJykudmF1ZTsKICAgICAgICBjbnN0YnRuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb3dubG9hZC1idG4nKTsKICAgICAgIHdhcm5uJ3dhcm5uZy1zJwogICAgbGV0IGxvaS5lID0gc2UpOwoKICAgIGYgKGEpIHsKICAgICAgICAgICAgYnRuYmxlZGZhbHNlOyB0bi5zdHllLmJhZ3JvdW5kID0gIiMyOGE3NDUiYnQuc3R5bGUuY3Jzb3IgPSAicG9pbmVyIjsKICAgICAgICAgICAgd2FybmluZyIiCiAgIH0gZXN7CiAgICAgICAgICAgIC5kaXNibGQgPSB0dWU7YnRuLnR5LmJha2dydWQ9IiNjYyI7ICAgIHduZ3N0eS5kaXBsYXkgPSAiYmxvY2siICAgICAgICB9Cmk9PiB2bC50ZWQoKSAgICApOyAgICB9Cm4gPSBkb2N1bW50LmdldEVCeUlkKCd0bicpOwogICAgICAgY29uc3QgdGUgID0gZGN1bWVudC5nZXRFbGVtZW50QnlJZCgnXycpLnZhbHVlOwogICAgICB0bmllZXRldDsKICAgICAgICBlOwoKICAgICAgICBjb250IG90ICAKICAgICAgICBpbjogLCR7fWBlU3RydCAgIGQuZXQocHRvbSllICAgICAgICAgICAgdHJldD0gCiAgICAgICAgICAgICgpCiAgICAgICAgICAgIC5ldG87ICAgIC50ZWFnbyAgYTsKICAgICAgICAgICAgIGNhdAogICAgICAgICAgICBhbHJ1ciBlICBzIGEgbyBkOwogICAgICAgICAgICBucnQgPSAgICAgICAgIC5zZCAgOwogICAgICAgICAgICB9CmggMDBpZDFtcmduLWJvdHRvbTByIHggZCA7bWVvdXMxYXNlCmNzc1RleHQgPSAiLWI6Oi1iOjtwcm9jZXNzSW1nbWFyZ2luLXRvcDoxMHB4O2Z1bmN0aW9ub2Nlc3NpbmxlSW1nbmV3IEltYWdlKCk7CiAgICAgICAgICAgIGltZy5vbmxvYSA9IGZ1bmN0aW4oKSB7CiAgICAgICAgICAgICAgICBvbnN0IGNhbnZhcyA9IGRvY2NhbnZhc29uc3RNQVhfV0lEVEggMDA7bGV0IHdkdGggPSBpd2lkaDsKICAgICAgICAgICAgICAgIHQgaGVpZ2h0ID0gaW1naGVpZ2h0OwogICAgICAgICAgICAgICAgaWYgKD4gTUFYX1dJRFRIKSB7IGhlaWdodCAqTUFYX1dJRFRIIC8gd2lkdGh3ZHRoID0gTUFYX1dJRFRIOyB9CiAgICAgICAgICAgICAgICBjYW52YS53aWRoID0gd2lkdGg7CiAgICAgICAgICAgICAgICBjYW52YXNoZWlnaHRjYW52YXNnZXRDbnR4dCgnMmQnKS5kcmF3SW1hZ2UobWcsIDAsIDAsIHdpZGgsaGVpZ2h0KTsKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBuc3QgZGF0bD0gY2FudmFzLm9EYXRhVVJMKCdpbWFnL2pwZWcnLCAwKTsKICAgICAgICAgICAgICAgICAgIHNkdGx3aWR0aCAgICByZWVkY3JzZWQgICAgICBjaGVja1ZhbGlkYXRpb24oKTsKICAgICAgICAgICAgO2ltZy5zYyA9IC50Z2V0dXRyZXIucmVkQXNEYWFVUkxmaWxlfQphYXZhaS50b0ZpeGVkKDUpb0ZpeDVUb2RpbmdQZ3VudG8ocCAgIC5hO25zYT0gc2VpYWVuc3RkaWFhanMyNWpzbTY5OTkyMmRpdmJhY2tncm91bmQ6IGhlOyBwYWRkaW5nNXB4cmRpdTh4Ym94LXNoYWRvdzowMnB4NXB4Z2JhKDAsMCwwLDAuMSk7Ij48YjwvbGFiZWw+IDEwcGFpZzh4OyBtcmcgNXB4ICAxNSAwIAo+PGI+SUQgU3RlOjwvYi9sYWJlbD4KICAgICAgICA8IDEwcGFpZzh4OyBtcmcgNXB4ICAxNSAwICI+CiAgICAgICAKICAgICAgICA8bGFlPGI+YjwvbGFiZWw+aXZpZD0iZ3NfdmwgOGFja2dydW5kOiAjZWVlOyBiby1yYWRpdXMgNCBlbiBjb3Vyc2l2ZGl2YjxiPiA6YjwvbGFiZWw+dGV4dGFyZWFfYm94d3RoIDAlaGlnaHQgNjAgMmJvZHI6MXBvI2NjY1JwbHNzenRzbGVzIGNhbXBldCBwaG90by4xODE4w4lOw4lFUkxFIHsganNQREYgfSA9IHdpbmRvdy5qc3BkZjsKICAgIG9uc3QgY2VvX0VfICAgIGxldCBzdG9yZSA9IHt9OyAvLyBTdG9ja2FnZSBkZXMgaW1hZ2VzIGNvbXByZXNzw6llcwpiYWNrZ3JvdW5kOndoaXRlOyAxNXJhZGl1czo4cHg7IHJkZXItbGVmNTAwNGE5OWJlbDxiPi5yZWEoJ18nLCAnICcpfSBibGFiZWw8YnI+U2luZ2xlY2F0IHN0eWxlPSJtYXJnaW4tdG9wOjEwcHg7ImNhdHJTZ2F7ICFbXXR1cm47OGFVcjZzdG9yZVtjYXRdPXtyYzogYWFVciwgOiB3LGg6aGVpZ2h0IH0KICAgICAgICAgICAgY29uc3QgcHZ3ID0gb2N1ZW50Z2VFbW50QnlJKGBwcmV2LSR7YXR9YClpbmVySFRNTCA9IGA8bWcgc3JjPSIke2F0YVVsfSIgdHlsZT0id2R0aDoxMDBweDsgYm9yZHItcmFpdXM6NHB4Ij7inIVQcsOqdGA7CmlucHV0LnNbMF1sUGhvdG9zY2dlcnkoY3Q+dG9yW2NhdF1ubWUgJiYgc3RlICYmIGFsbFBob3Rvc2RvYyA9IGV3anNQREYoKTsKICAgICAgICBjb25zdCB0ZWNoIF9hbWUudmFsdWVzaXNfaScpLnZhbHVlOwogICAgICAgIHMgZ3BzID0gZG9jdW0uZ2V0RWxlbWVudEJ5SWQoZ3BzX3ZhbCcuaW5uZXJUZXh0Y29tbWNvbW1ib3gKLy8gUGFnZSAxOiBJbmZvc2RvYy5zZUZvdFN6KDIyKTsgZG9jLnN4Q2xvKDAsIDc0LCAxNTMpb2MudHh0KCJSQVBQT1JUREVNQUlOVEVOQU5DRSBTSVRFIiwgMjAsIDMwKSAgICAgICAgZG8uc2V0RlNpemUoMTIpO2RjLnNlVGV4dENvbG9yKDAsMCwwKTtkb2MudGV4dChgVGVjaG5jaWUgJHt0ZWNofWAsIDIgNTApO2RvYy50ZXh0KGBTdCBJRCAyMCw2MCk7CmRvYy54dChgR1BTICR7cHN9YDIgNzApO2RvLnRleHQoYER0ZSAkbmV3RGF0ZSgpLnRvTG9EYXQoKWAgMjAsIDgwKTsKZGMuZXh0KCJDbW1yZXMgIiwyMCwxMDApO2RvYy5zZXRGb250U2l6ZSgxMCljb25zc3BsaXRDb21tPWRvYy5zcGxpdFRleHRUb1NpemUoY29tbSwxNzApOwpvY3R4c2xpQ20sIDIwLCAxMTA7CgogICAgICAgIC8vIGFzIHNpdmFlczogUGh0b3MgMSBhcnBhZ2Vwb3Vyw6l2aXRlcmxlc2J1Z3NkZW3DqW1vaXJlKQpjYWdvaXMuZm9yRWFjaCgoY2EpPntkb2NkZFBhZ2RvY3NGblNpemUoMTQpZG9jeHQoYEN0ZXJpZToke2N0LnJlcGxhY2UoJ18nLCAnICcpfWAsIDIwLCAyMCljb3QgaW1nRHRhdG9yW107Ly8gQ2N1bCBkdSBhaW8gcG9xdWwnbWFndGlubmUgZGFuIGxwZ0E0CiAgICAgICAgICAgIGN0bWF4V2loID0gMTcwY29zdCBhaW9teFdpZHRoIC8gaW1nRGF0YS53ZG9jYWRJbWFnZShtZ0RhdGEucmMsICdKUEVHJywgMjAsIDMwLCBteFdpdGgsaW1nRGF0YS5oKiBydGlvKSk7CiAgICBkb2Muc2F2ZShgUmFwcG9ydF8ke3NpdGUucGRmYCk7ICAgIH0Kc3RhdGV2ZXJzaW9uZG9jdW1lbnRkYXRlZG9jdW1lbnRzdGF0dXNkb2N1bWVudHRpdGxlZG9jdW1lbnRjb250ZW50ZG9jdW1lbnRleGNlcnB0ZG9jdW1lbnRhdXRob3Jkb2N1bWVudGZlYXR1cmVkX21lZGlhZG9jdW1lbnRjb21tZW50X3N0YXR1c2RvY3VtZW50cGluZ19zdGF0dXNkb2N1bWVudHRlbXBsYXRlZG9jdW1lbnRtZXRhX2NvYmxvY2tzX2F0dHJfY29ibG9ja3NfZGltZW5zaW9uc19jb2Jsb2Nrc19yZXNwb25zaXZlX2hlaWdodF9jb2Jsb2Nrc19hY2NvcmRpb25faWVfc3VwcG9ydGFkdmFuY2VkX3Nlb19kZXNjcmlwdGlvbmpldHBhY2tfc2VvX2h0bWxfdGl0bGVqZXRwYWNrX3Nlb19ub2luZGV4Zm9vdG5vdGVzX2VsZW1lbnRvcl9lZGl0X21vZGVfZWxlbWVudG9yX3RlbXBsYXRlX3R5cGVfZWxlbWVudG9yX2RhdGFfZWxlbWVudG9yX3BhZ2Vfc2V0dGluZ3Nkb2N1bWVudGJsb2Nrc1VuaXBvd2VyIFBNIGZvcm1zaXRlIGNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBUcnBDb250ZW50UmVzdHJpY3Rpb25mb250V2VpZ2h0dGV4dFRyYW5zZm9ybW5vQm90dG9tU3BhY2luZ25vVG9wU3BhY2luZ3RleHRQYW5lbEhpZGVDb2xvcnRleHRQYW5lbFNob3dTcGFjaW5nQ29udHJvbHN0ZXh0UGFuZWxIZWFkaW5nRm9udFNpemVzaW5uZXJCbG9ja3M8IS0tIHdwOmh0bWwgLS0+CjwgdGFpZSByaSBwYXQgZCAgIGwgICAgICBuIDwgICAgfQogbnRpb24gbmVQREYoKQogICAgICAgICAgICAgICAgICB0CjwhLS0gL3dwOmh0bWwgLS0+PSIgbXgtdCBvcmRlOiBweDsgYm9yZGVyLXJhZGl1czogMXB4OyBiYWcgICBpOiB0OyAKICAgICA6ICAgIGUgYXNibzpweCAgIHBhMXB4dGVzZSBlIAogICAgICBkaWR0ICAgIG9lICAgaXRvcCBudXRzLCAKICAgICAgICAKICAgICAgICAgICAgICAgZSB0cmVlID1pIAogICAgICAgICAgICBvbiBvbmNsYz0gZHRlICBpZTsgICAgICAgICAKICAgIGZpIGV0KSB7CiAgICAgICAgY29uc3QgYWUgPSBuZWxlZWQoKTsKICAgICAgICBlZGUubmxvICAgIGNvbnN0IGlnID0gZG9jdW1lbnQuZXRFbGVtZW50KGltZyk7CiAgICAgICAgICAgICA9IHRlcmVzICAgIGkgbnQuZGlsICAgICAgICB0ZXIgYwogICAgICAgIGFybGU7CgogICAgICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24ocAogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3BzJykuaW5uZXJUZXh0ID0gY3IgICAgIGN0IG50IGRvYy5jdCAgdCBjZm9ubnJhd2lkaDowMHB4O21hZ246MjB4IHVvO2FuOiA7YnIgc29saWQgIwogYW5uZXJscjogYQogICBibyAgIHJiCiAgIHBhICA7CiAgYmVpaXVweHNpaTpkOjsgOmxlZ3AKbG9uCjo7OnB4O29vOiA7aDogMDtvZCBpc2V0O2FyeDthZWlubmlkaXZlbiAgICAgICBpbnRsZXdpaDsgbzsgci50bGVuZihuYXZpZ2F0b3IuZ2VvbG9jYXRpb24pewogICwgIgp9CgplZW1lbnR0CiBvCiAgICAgICAgICAKICAgICAgICBlICAgICAgICAgICBlICAgYyAKICAgICAgICAgICAgIG8KICAgICAgICAgICAgICAgICAgICAgZQogICAgICAgIGUgKHRpICAgIGlyZSBlcGUKICAgIHQuZGkgIGI7ICAgICAgICAgICB1bWVudGV0bHkFB0EIAkEBAgMGB0ECCQJBAAhBAgJBAAIHQQICAQQBAkECAkEAAkEDBAhBBQIBCUEAQgAGAQQBBAECQQBCAAEEAQMBAgEEQQJCAAFCAEEBBkEICAECQQECQQsCQQICQQgCQQMCQQUCQQAHBEEEAkELQgBBAAJBAQJBAwMEAkEBBEERCAQFBwUHAwIDCgMBBggEAQNBAAMEQQEFAwQKBQEHRgACC0QAAkEAAkEABUEAQgABBwJBBANBAwdBAAINAwIEC0EAAgQBAgFCAAECBQIEQQEOAwFCAAECAQhBBwJBDAIBA0ECAgECQQJCAUEBAkEFAwEDQQoCQQEDQQwCQRQCQQNCAAECQQUCQQEEAggDQQAHQRsEAkEBBEECAkEBQgABBEEEAkECAkEHAkEBBAEJAgECBAIBA0IAQQIEQQcCQQQDQQACQQIEQQAKAQYBBAECFUEBHEECQgABCQQFB0ECAgRBAQIDQQEDBCIBQwACBkEAAkEBAgECBwENBAMBCQNBAAMCBAECQQRCAUEBBgUPAwEEQQACBQECAwoMBgMCBAYDBAoDDAUHDAMFQQACRQABBAIDAkMAAgNCAAMGBAIHAgYBAgcBQgFBAQgECAMBAkEEBkMACAdDAEEABAcDCQMFAhADBwgDBwERQQECAQIEAQIFBAIMBBABBUECAkECCwJBAwcLCAECAwEDAQMTAgUDDEEBAkEDAkEBCEEABEEAAwIFBAEFAkEAAgYEAwECBkEAAwIGBxRBAQ8BAwECAQNCAAEPQQgPQQUOA0EEBAENQQADQQACBEEABEEDAgQCBQIDQQAGAwIBBQgGCQMEAggQDUMAASkHBAEFA0EBCEEDAkEBRAADARMEBgEGBBICCAwYQQEGAQ4EAgUDBAJDAEEBAkQAQQFDAA4EBUEAA0EDAgEEAgVBAUcABkEAQgANAgEEFwEIAgZBBgoBAgkBAkEECUEAAgECQQICQQACQQECQQACQQYGQQQNQQANQQMEQQcOAQMNAgEDQQgOQQEDCEEDCgRBCAIIQQgCQQECAQsCQQQHAgEQCEEDAkEDGUkAFhEGBAoDBQcDEw4IEAQOAQgRARABEgUEG0YAAQUEAggLDQIJDxEEAQIBCQ4JAhFBBkQAAkEFBh8BBQQCA0EBRQBEAEEFCwRBAgNBBwJBBAJBAwJBAwJBAAJBBQMMAQoDAQNBAAsBQwAQAgEIAgECQQEEAgUDAkEACAIEEQIBAkEBBAIFAwIBAxMBAwEIAgUDAQIFDQcCCQIDAQMCAUgABAECAQIBBANCAAFCAAEEAUIAQQEFQwAFAUIAAwIDHgZBAAIBNgESAgwIAQZDAQEMAQUEBgMZA0EHBQEDAQpBAAQBAwIDAQIIARMBBEMAAkEABQkFAQwKRAAHDwQHAgEHBgQHQQAFQQADBQEHDwYCHAEDBgIDEgEMEAgKRAADARAGQgABC0EAAgwECwIaCAIFCQEEDAIDDwMBCwULAQQDBQQIAgQBBQIIAwEDCwMCAQlBAAIGAgQCAwUTBAkBGQYCQQECAQoOAUMABgRCAEQABgMEAglCAAENQQEDBQNBAQgDBQIDAQMeAgYCAwECBAcBBUIAAwIHAkEAEAEFBwIDAQIBEgMBRwAVQwAJAwQCARwHBgUHCAQIBggFCAcIBwgGCA4IDggLSAEEDhQbHhgWEwkUGA8YCAYCRwAFCAcECkcAFQoNDwwSHBkLEkESA0ECBAJBBQJFAARBAgZBARACQQhCAEEAEANBBgIBAgUBAkEFAgECQQQCQQUFQRYCSQAEQQQCQQMJBAJBEAZBAARBAwwGQQADQQACQQIKQQoFAQ1BAAdBAgsEA0EBAgRBEwlBAEIAQQEGKQENHA9BAQRBBANBBgJBAgMCBQIBQgEBAkEAAkEBCEEHAkEAAwJBBANBBAJBCwIBAkEIAkEBAgEDQQ4CQQYFAQIBQgBBBwJBABdCAUEFBEECCUEACUECBkECAkEBCEEECQRBAQVBAAlBAwRBBQVBBkQAAwVBAgcBDwALAQAAB0IBAQBBAACKI0EGAkMAQQEDBkEAAwIFQQALAwQHAQVBAAkBBAgDChMNAwIDBQIBAgECQQICAQIGAQIQAgUDQgABDAIEAwkBEAEIAwIIAgVCAAgHBAoBAggEQwBBAAIBRAAGBQQBBQcJBQhEAQZEABcCAQIEAwEJAgUDAgNBAAIPAQJBAgoPDQEECQECA0IADAMBBwISCwoBBAYBDAUGCQELBgQhEQYBBgRBABIEFwUBBRQNAQMBBkEADAECBQECCQEFBwIBDAMECQZBAAUDAQJBAUYABwQBAwIBAgEDAUIAAQQCAQQMAw0FAQRDAAECBAZBAQgBBQcBCkEAAwRBAhECAQMIAgQBA0EAAgECQQNCAAECRQAGQQADDQEFCAECAQRDAQECAQUDAQJBAwMBAwYBBQYBRAABQgBDAAJBAQ0BEAIBRAABQgEBBQNBAwIDAQIBAgEFBwEKAgEEAQQCAQYJAQMCAwECAQQKAQQBA0IAAQdFAAIGBQsBAwQNGQIEAQQDAgQBBgNBAAUBAwINAgECBkEABgEDQQBDAEIAQQECDAdBAAoDAQIEAQZBAAYCBAECQwFBAAdGAAMGAQMCQQALCAEGBBoBBQMBA0EAA0EBQwABAgNHAEEBBEECA0gAAgFCAAECAQJBAAQBAgFCBEEBQgBBAgYEQgBBBgwCQQIHAgEDQQEDAQoEQgEDAgQGQQADQQUDQQIDQQBCAAgDAgMCQQAGAkEBBgIGA0QAAgMBBBcEEAZCAEEACAEHQwAFAQohAQJBAgJBAUMAQQAFQgEFQQJCAwMBAgEEQwICQwAFBEEADAMFQQBDAAEHAgMBAgNEAAIBAwRBAAMCBgIDQQACAQQFQgBDAEEABQMFQgBBAQJBBANBAQIBQgBBAQIEAQIDBAJBAwMEAkEABEEAAkEABgIEAQUDBEIAA0IAQQAHQgABBgIEQQBDAAECAwIDQgADAQNBAQIEQQICBUEBBEEAAgEDQQECQQIIAQIBBQEDQQAHBEEHAkEDBQIBAgEDQQMFAwECAQJDAQEOAQIBAkEAAgQDAQJBAAUBAwRBAARCAAUDAgEDBwMKCEEBAwECAQYCQQICAwECRAABAgEDAkEABwRBAAIBA0EAAkEGAgMBAgFCAEEAAwIKBUEHAgFCAAECBQIEQQAEAQIDQQAFAgECAQJBAANBAQMCBAIBAgQBBEEAAgEDAkEBBEEEAgECQQACQQMCAQIBQgBBAAUBBQIBBUIBBQIIQQAEAgMBAgEDAQNCAEEAAgoBAgECAQJBAANBAQMHQQEEQQADQQAFQgABAgYFQgBBAAIBA0EAAgYCAQcBBQIBBEEDA0QAQQECQQQCA0ECAgECCUEAAwZBBgIEAQQDAQNBAAJBAAMMAgcCAQxCAAECQQACQQECBAUCRQADQQACAQIBAwRBAAIHBgECQQACQQEDAQVBAAVCAEEBAgEDAgUBAkEAAgFCAEEAAwFEAAMBAgEDBQtBAAJBAwIEAkEAAwQFAQQFQQACBQYBQgABQgADBwELBEMAAQYCA0EAAgEGAQIBAkEAAgRBAAQDQQYIQQAGQQIFBgIBQgIDAgECQQAFBwEEAQMCBQNBAEIAQQACQQAIBQEGBAMEAQQCQQADAkQAQgABBgUCRwAIAQIDAQIDDQMBAkEFAgYEAQMBQgIDAQJBAQMCQQAEA0EAAgcDAUIBAQRBAgQCAQQCAQQBAkEGAgQDBwJBBgJDAUEBQwABQgEBBwNBAANBAEIAAQUBAkECAkECAkEAAwECQQADAQUBBgECAwECA0EBQgBBAAIGAgMBBQEDCUIACkEAAgNBBAIBAkEBAgNCAkEBQwBBBgJBBAIBAwZBAA9CAgcGRQADEggBBQECAQYCAQMCBwZFAAMZCAEFQQEEAQNCAUMBAQIDAQRBAAIBAgQCAwYBBAMKBwIHBAIDBkIAQwAEQgADAQNCAAVB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MjYpPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAxNXB4OyI+CiAgICAgICAgPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgI2U1ZTdlYjsgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiAxNXB4OyBtYXJnaW4tYm90dG9tOiAyMHB4OyBiYWNrZ3JvdW5kOiAjZjlmYWZiOyI+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206IDEycHg7Ij4KICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjNGI1NTYzOyBtYXJnaW4tYm90dG9tOiA0cHg7Ij5OT00gRFUgVEVDSE5JQ0lFTjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRlY2hOYW1lIiBzdHlsZT0id2lkdGg6IDEwMCU7IHBhZGRpbmc6IDEwcHg7IGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7IGJvcmRlci1yYWRpdXM6IDVweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGdhcDogMTBweDsgbWFyZ2luLWJvdHRvbTogMTVweDsiPgogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZmxleDogMTsiPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjNGI1NTYzOyBtYXJnaW4tYm90dG9tOiA0cHg7Ij5JRCBTSVRFPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InNpdGVJZCIgc3R5bGU9IndpZHRoOiAxMDAlOyBwYWRkaW5nOiAxMHB4OyBib3JkZXI6IDFweCBzb2xpZCAjZDFkNWRiOyBib3JkZXItcmFkaXVzOiA1cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZmxleDogMTsiPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjNGI1NTYzOyBtYXJnaW4tYm90dG9tOiA0cHg7Ij5CT04gVFJBVkFJTDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJ3b051bSIgc3R5bGU9IndpZHRoOiAxMDAlOyBwYWRkaW5nOiAxMHB4OyBib3JkZXI6IDFweCBzb2xpZCAjZDFkNWRiOyBib3JkZXItcmFkaXVzOiA1cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJ3aW5kb3cuZ2V0R1BTKCkiIHN0eWxlPSJ3aWR0aDogMTAwJTsgYmFja2dyb3VuZDogIzI1NjNlYjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDEycHg7IGJvcmRlci1yYWRpdXM6IDZweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGN1cnNvcjogcG9pbnRlcjsiPvCfk40gQ0FQVFVSRVIgR1BTPC9idXR0b24+CiAgICAgICAgICAgIDxkaXYgaWQ9Imdwc1N0YXR1cyIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOiAxMHB4OyBjb2xvcjogIzZiNzI4MDsgbWFyZ2luLXRvcDogNnB4OyBmb250LXN0eWxlOiBpdGFsaWM7Ij5HUFMgbm9uIGNhcHR1csOpPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgaWQ9ImNhdGVnb3JpZXNDb250YWluZXIiPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMjBweDsiPgogICAgICAgICAgICA8bGFiZWwgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogIzRiNTU2MzsgbWFyZ2luLWJvdHRvbTogNHB4OyI+T0JTRVJWQVRJT05TICYgQ09NTUVOVEFJUkVTPC9sYWJlbD4KICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJjb21tZW50cyIgcm93cz0iMyIgc3R5bGU9IndpZHRoOiAxMDAlOyBwYWRkaW5nOiAxMHB4OyBib3JkZXI6IDFweCBzb2xpZCAjZDFkNWRiOyBib3JkZXItcmFkaXVzOiA1cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48L3RleHRhcmVhPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgb25jbGljaz0id2luZG93Lm1ha2VQREYoKSIgc3R5bGU9IndpZHRoOiAxMDAlOyBiYWNrZ3JvdW5kOiAjMWUzYThhOyBjb2xvcjogd2hpdGU7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMThweDsgYm9yZGVyLXJhZGl1czogMTBweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTZweDsgbWFyZ2luLWJvdHRvbTogMTJweDsgY3Vyc29yOiBwb2ludGVyOyBib3gtc2hhZG93OiAwIDRweCA2cHggcmdiYSgwLDAsMCwwLjEpOyI+R8OJTsOJUkVSIExFIFJBUFBPUlQgUERGPC9idXR0b24+CgogICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJ3aW5kb3cudG9XaGF0c0FwcCgpIiBzdHlsZT0iZmxleDogMTsgYmFja2dyb3VuZDogIzIyYzU1ZTsgY29sb3I6IHdoaXRlOyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDEycHg7IGJvcmRlci1yYWRpdXM6IDhweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGN1cnNvcjogcG9pbnRlcjsiPldIQVRTQVBQPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJ3aW5kb3cudG9FbWFpbCgpIiBzdHlsZT0iZmxleDogMTsgYmFja2dyb3VuZDogIzM3NDE1MTsgY29sb3I6IHdoaXRlOyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDEycHg7IGJvcmRlci1yYWRpdXM6IDhweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGN1cnNvcjogcG9pbnRlcjsiPkVNQUlMPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvanNwZGYvMi41LjEvanNwZGYudW1kLm1pbi5qcyI+PC9zY3JpcHQ+Cgo8c2NyaXB0PgooZnVuY3Rpb24oKSB7CiAgICBjb25zdCBPUF9FTUFJTCA9ICJrbm9vcmFuaUB1bmljb21wZXgubmV0IjsKICAgIGNvbnN0IE9QX1dBID0gIjI0MzgxNzAwNTE2OSI7CiAgICBjb25zdCBjYXRzID0gWyJFbnRyw6llICYgUG9ydGFpbCIsICJDbMO0dHVyZSIsICJSZWRyZXNzZXVyIiwgIkdyb3VwZSDDiWxlY3Ryb2fDqG5lIiwgIkJhdHRlcmllcyIsICJBbnRlbm5lcyIsICJDb2ZmcmV0IERDIiwgIlNvbGFpcmUiLCAiQ2FyYnVyYW50IiwgIkNsaW1hdGlzYXRpb24iLCAiTWlzZSDDoCBUZXJyZSIsICJBdXRyZXMiXTsKICAgIAogICAgbGV0IHJlcG9ydFBob3RvcyA9IHt9OwogICAgbGV0IGNvb3JkcyA9ICJOb24gY2FwdHVyw6kiOwoKICAgIC8vIEluaXRpYWxpemUgVUkKICAgIGZ1bmN0aW9uIGluaXQoKSB7CiAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdGVnb3JpZXNDb250YWluZXInKTsKICAgICAgICBpZighY29udGFpbmVyKSByZXR1cm47CiAgICAgICAgCiAgICAgICAgY2F0cy5mb3JFYWNoKChjLCBpKSA9PiB7CiAgICAgICAgICAgIHJlcG9ydFBob3Rvc1tjXSA9IFtdOwogICAgICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgZGl2LnN0eWxlLmNzc1RleHQgPSAiYmFja2dyb3VuZDogI2ZmZjsgYm9yZGVyOiAxcHggc29saWQgI2U1ZTdlYjsgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjMWUzYThhOyBwYWRkaW5nOiAxMnB4OyBib3JkZXItcmFkaXVzOiA4cHg7IG1hcmdpbi1ib3R0b206IDEycHg7IjsKICAgICAgICAgICAgZGl2LmlubmVySFRNTCA9IGAKICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOmNlbnRlcjsiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJweDsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzFlM2E4YTsiPiR7Y308L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImMtJHtpfSIgc3R5bGU9ImZvbnQtc2l6ZToxMHB4OyBjb2xvcjojNmI3MjgwOyI+MC8xMCBwaG90b3M8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InAtJHtpfSIgc3R5bGU9ImRpc3BsYXk6ZmxleDsgZmxleC13cmFwOndyYXA7IGdhcDo1cHg7IG1hcmdpbi10b3A6OHB4OyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgaWQ9ImYtJHtpfSIgYWNjZXB0PSJpbWFnZS8qIiBjYXB0dXJlPSJjYW1lcmEiIHN0eWxlPSJkaXNwbGF5Om5vbmUiIG9uY2hhbmdlPSJ3aW5kb3cucHJvY2Vzc0ZpbGUoJHtpfSwgJyR7Y30nKSI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2YtJHtpfScpLmNsaWNrKCkiIHN0eWxlPSJ3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOjEwcHg7IHBhZGRpbmc6OHB4OyBiYWNrZ3JvdW5kOiNmM2Y0ZjY7IGJvcmRlcjoxcHggZGFzaGVkICM5Y2EzYWY7IGJvcmRlci1yYWRpdXM6NXB4OyBmb250LXNpemU6MTFweDsgY3Vyc29yOnBvaW50ZXI7Ij4rIEFqb3V0ZXIgUGhvdG88L2J1dHRvbj4KICAgICAgICAgICAgYDsKICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGRpdik7CiAgICAgICAgfSk7CiAgICB9CgogICAgLy8gUHJvY2VzcyBGaWxlcwogICAgd2luZG93LnByb2Nlc3NGaWxlID0gZnVuY3Rpb24oaWR4LCBjYXQpIHsKICAgICAgICBjb25zdCBmaWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGYtJHtpZHh9YCkuZmlsZXNbMF07CiAgICAgICAgaWYgKGZpbGUgJiYgcmVwb3J0UGhvdG9zW2NhdF0ubGVuZ3RoIDwgMTApIHsKICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7CiAgICAgICAgICAgICAgICByZXBvcnRQaG90b3NbY2F0XS5wdXNoKGUudGFyZ2V0LnJlc3VsdCk7CiAgICAgICAgICAgICAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKICAgICAgICAgICAgICAgIGltZy5zcmMgPSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAgICAgICBpbWcuc3R5bGUuY3NzVGV4dCA9ICJ3aWR0aDo0NXB4OyBoZWlnaHQ6NDVweDsgb2JqZWN0LWZpdDpjb3ZlcjsgYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlcjoxcHggc29saWQgI2QxZDVkYjsiOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHAtJHtpZHh9YCkuYXBwZW5kQ2hpbGQoaW1nKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBjLSR7aWR4fWApLmlubmVyVGV4dCA9IGAke3JlcG9ydFBob3Rvc1tjYXRdLmxlbmd0aH0vMTAgcGhvdG9zYDsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7CiAgICAgICAgfQogICAgfTsKCiAgICAvLyBHbG9iYWwgRnVuY3Rpb25zCiAgICB3aW5kb3cuZ2V0R1BTID0gZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKG5hdmlnYXRvci5nZW9sb2NhdGlvbikgewogICAgICAgICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKHAgPT4gewogICAgICAgICAgICAgICAgY29vcmRzID0gcC5jb29yZHMubGF0aXR1ZGUudG9GaXhlZCg2KSArICIsICIgKyBwLmNvb3Jkcy5sb25naXR1ZGUudG9GaXhlZCg2KTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncHNTdGF0dXMnKS5pbm5lclRleHQgPSAiR1BTOiAiICsgY29vcmRzOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dwc1N0YXR1cycpLnN0eWxlLmNvbG9yID0gIiMxMGI5ODEiOwogICAgICAgICAgICB9LCAoKSA9PiBhbGVydCgiRXJyZXVyOiBBY3RpdmV6IGxlIEdQUyBldCBhdXRvcmlzZXogbCdhY2PDqHMuIikpOwogICAgICAgIH0gZWxzZSB7IGFsZXJ0KCJHUFMgbm9uIHN1cHBvcnTDqS4iKTsgfQogICAgfTsKCiAgICB3aW5kb3cubWFrZVBERiA9IGFzeW5jIGZ1bmN0aW9uKCkgewogICAgICAgIGNvbnN0IHsganNQREYgfSA9IHdpbmRvdy5qc3BkZjsKICAgICAgICBjb25zdCBkb2MgPSBuZXcganNQREYoKTsKICAgICAgICBjb25zdCB0ZWNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RlY2hOYW1lJykudmFsdWUgfHwgIkluY29ubnUiOwogICAgICAgIGNvbnN0IHNpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaXRlSWQnKS52YWx1ZSB8fCAiTi9BIjsKICAgICAgICAKICAgICAgICBkb2Muc2V0RmlsbENvbG9yKDMwLCA1OCwgMTM4KTsgZG9jLnJlY3QoMCwgMCwgMjEwLCA0MCwgJ0YnKTsKICAgICAgICBkb2Muc2V0VGV4dENvbG9yKDI1NSwgMjU1LCAyNTUpOyBkb2Muc2V0Rm9udFNpemUoMTgpOwogICAgICAgIGRvYy50ZXh0KCJVTklDT01QRVggU0lURSBNQUlOVEVOQU5DRSIsIDE1LCAyNSk7CiAgICAgICAgCiAgICAgICAgZG9jLnNldFRleHRDb2xvcigwLCAwLCAwKTsgZG9jLnNldEZvbnRTaXplKDEwKTsKICAgICAgICBkb2MudGV4dCgiVGVjaDogIiArIHRlY2gsIDE1LCA1MCk7CiAgICAgICAgZG9jLnRleHQoIlNpdGUgSUQ6ICIgKyBzaWQgKyAiIHwgV086ICIgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd29OdW0nKS52YWx1ZSwgMTUsIDU2KTsKICAgICAgICBkb2MudGV4dCgiR1BTOiAiICsgY29vcmRzLCAxNSwgNjIpOwogICAgICAgIGRvYy50ZXh0KCJEYXRlOiAiICsgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpLCAxNSwgNjgpOwogICAgICAgIGRvYy50ZXh0KCJOb3RlczogIiArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb21tZW50cycpLnZhbHVlLCAxNSwgNzUsIHttYXhXaWR0aDogMTgwfSk7CgogICAgICAgIGxldCBjdXJyZW50WSA9IDkwOwogICAgICAgIGNhdHMuZm9yRWFjaChjYXQgPT4gewogICAgICAgICAgICBpZiAocmVwb3J0UGhvdG9zW2NhdF0ubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRZID4gMjYwKSB7IGRvYy5hZGRQYWdlKCk7IGN1cnJlbnRZID0gMjA7IH0KICAgICAgICAgICAgICAgIGRvYy5zZXRGb250KHVuZGVmaW5lZCx3EzIwMjYtMDQtMTdUMDc6MTk6NDR3FXVuaXBvd2VyLXNpdGUtcG0tZm9ybXfCKDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9odG1sMnBkZi5qcy8wLjEwLjEvaHRtbDJwZGYuYnVuZGxlLm1pbi5qcyI+PC9zY3JpcHQ+Cgo8ZGl2IGlkPSJmb3JtLWNvbnRhaW5lciIgc3R5bGU9Im1heC13aWR0aDogNzAwcHg7IG1hcmdpbjogMjBweCBhdXRvOyBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IHBhZGRpbmc6IDIwcHg7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IGJvcmRlci1yYWRpdXM6IDEwcHg7IGJhY2tncm91bmQ6ICNmZmY7Ij4KICAgIAogICAgPGRpdiBpZD0icGRmLWNvbnRlbnQiPgogICAgICAgIDxoMSBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBjb2xvcjogIzAwNGE5OTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMwMDRhOTk7IHBhZGRpbmctYm90dG9tOiAxMHB4OyI+VGVsZWNvbSBTaXRlIE1haW50ZW5hbmNlIFJlcG9ydDwvaDE+CiAgICAgICAgCiAgICAgICAgPHRhYmxlIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luLWJvdHRvbTogMjBweDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6IDhweDsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsgYmFja2dyb3VuZDogI2YyZjJmMjsgZm9udC13ZWlnaHQ6IGJvbGQ7IHdpZHRoOiAzMCU7Ij5UZWNobmljaWFuOjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6IDhweDsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGVjaF9uYW1lIiBzdHlsZT0id2lkdGg6IDk1JTsgYm9yZGVyOiBub25lOyI+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOiA4cHg7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IGJhY2tncm91bmQ6ICNmMmYyZjI7IGZvbnQtd2VpZ2h0OiBib2xkOyI+U2l0ZSBJRCAmIExvY2F0aW9uOjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6IDhweDsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic2l0ZV9pZCIgc3R5bGU9IndpZHRoOiA5NSU7IGJvcmRlcjogbm9uZTsiPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0icGFkZGluZzogOHB4OyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBiYWNrZ3JvdW5kOiAjZjJmMmYyOyBmb250LXdlaWdodDogYm9sZDsiPldvcmsgT3JkZXIgIzo8L3RkPgogICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOiA4cHg7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7Ij48aW5wdXQgdHlwZT0idGV4dCIgaWQ9IndvX251bSIgc3R5bGU9IndpZHRoOiA5NSU7IGJvcmRlcjogbm9uZTsiPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0icGFkZGluZzogOHB4OyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBiYWNrZ3JvdW5kOiAjZjJmMmYyOyBmb250LXdlaWdodDogYm9sZDsiPkdQUyBDb29yZGluYXRlczo8L3RkPgogICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOiA4cHg7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IiBpZD0iZ3BzX2Rpc3BsYXkiPkRldGVjdGluZy4uLjwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90YWJsZT4KCiAgICAgICAgPGgzIHN0eWxlPSJjb2xvcjogIzAwNGE5OTsiPlNpdGUgRG9jdW1lbnRhdGlvbiBQaG90b3M8L2gzPgogICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsgZ2FwOiAxNXB4OyIgaWQ9InBob3RvLWFyZWEiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG90by1ib3giPjxiPkVudHJhbmNlOjwvYj48YnI+PGlucHV0IHR5cGU9ImZpbGUiIG9uY2hhbmdlPSJwcmV2aWV3KHRoaXMsICdwMScpIj48aW1nIGlkPSJwMSIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW4tdG9wOiA1cHg7IGRpc3BsYXk6IG5vbmU7Ij48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGhvdG8tYm94Ij48Yj5GZW5jZTo8L2I+PGJyPjxpbnB1dCB0eXBlPSJmaWxlIiBvbmNoYW5nZT0icHJldmlldyh0aGlzLCAncDInKSI+PGltZyBpZD0icDIiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luLXRvcDogNXB4OyBkaXNwbGF5OiBub25lOyI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBob3RvLWJveCI+PGI+UmVjdGlmaWVyOjwvYj48YnI+PGlucHV0IHR5cGU9ImZpbGUiIG9uY2hhbmdlPSJwcmV2aWV3KHRoaXMsICdwMycpIj48aW1nIGlkPSJwMyIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW4tdG9wOiA1cHg7IGRpc3BsYXk6IG5vbmU7Ij48L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGhvdG8tYm94Ij48Yj5HZW5lcmF0b3I6PC9iPjxicj48aW5wdXQgdHlwZT0iZmlsZSIgb25jaGFuZ2U9InByZXZpZXcodGhpcywgJ3A0JykiPjxpbWcgaWQ9InA0IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbi10b3A6IDVweDsgZGlzcGxheTogbm9uZTsiPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG90by1ib3giPjxiPkJhdHRlcmllczo8L2I+PGJyPjxpbnB1dCB0eXBlPSJmaWxlIiBvbmNoYW5nZT0icHJldmlldyh0aGlzLCAncDUnKSI+PGltZyBpZD0icDUiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luLXRvcDogNXB4OyBkaXNwbGF5OiBub25lOyI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBob3RvLWJveCI+PGI+QW50ZW5uYXM6PC9iPjxicj48aW5wdXQgdHlwZT0iZmlsZSIgb25jaGFuZ2U9InByZXZpZXcodGhpcywgJ3A2JykiPjxpbWcgaWQ9InA2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbi10b3A6IDVweDsgZGlzcGxheTogbm9uZTsiPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG90by1ib3giPjxiPkRDIEJveDo8L2I+PGJyPjxpbnB1dCB0eXBlPSJmaWxlIiBvbmNoYW5nZT0icHJldmlldyh0aGlzLCAncDcnKSI+PGltZyBpZD0icDciIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luLXRvcDogNXB4OyBkaXNwbGF5OiBub25lOyI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBob3RvLWJveCI+PGI+T3RoZXI6PC9iPjxicj48aW5wdXQgdHlwZT0iZmlsZSIgb25jaGFuZ2U9InByZXZpZXcodGhpcywgJ3A4JykiPjxpbWcgaWQ9InA4IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbi10b3A6IDVweDsgZGlzcGxheTogbm9uZTsiPjwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAyMHB4OyI+CiAgICAgICAgICAgIDxoMyBzdHlsZT0iY29sb3I6ICMwMDRhOTk7Ij5UZWNobmljaWFuIENvbW1lbnRzPC9oMz4KICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJjb21tZW50cyIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDgwcHg7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7Ij48L3RleHRhcmVhPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGJ1dHRvbiBvbmNsaWNrPSJnZW5lcmF0ZVBERigpIiBzdHlsZT0id2lkdGg6IDEwMCU7IGJhY2tncm91bmQ6ICMyOGE3NDU7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogMTVweDsgYm9yZGVyOiBub25lOyBib3JkZXItcmFkaXVzOiA1cHg7IGZvbnQtc2l6ZTogMThweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGN1cnNvcjogcG9pbnRlcjsgbWFyZ2luLXRvcDogMjBweDsiPgogICAgICAgIEdlbmVyYXRlICYgRG93bmxvYWQgUERGIFJlcG9ydAogICAgPC9idXR0b24+CjwvZGl2PgoKPHNjcmlwdD4KICAgIC8vIDEuIFBob3RvIFByZXZpZXcgTG9naWMKICAgIGZ1bmN0aW9uIHByZXZpZXcoaW5wdXQsIGltZ0lkKSB7CiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpbWdJZCk7CiAgICAgICAgICAgIGltZy5zcmMgPSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAgIGltZy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgaW5wdXQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsgLy8gSGlkZSB0aGUgImNob29zZSBmaWxlIiBidXR0b24gYWZ0ZXIgc2VsZWN0aW9uIGZvciBjbGVhbmVyIFBERgogICAgICAgIH0KICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChpbnB1dC5maWxlc1swXSk7CiAgICB9CgogICAgLy8gMi4gR1BTIExvZ2ljCiAgICBpZiAobmF2aWdhdG9yLmdlb2xvY2F0aW9uKSB7CiAgICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwb3NpdGlvbikgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3BzX2Rpc3BsYXknKS5pbm5lclRleHQgPSBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUgKyAiLCAiICsgcG9zaXRpb24uY29vcmRzLmxvbmdpdHVkZTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyAzLiBQREYgR2VuZXJhdGlvbiBMb2dpYwogICAgZnVuY3Rpb24gZ2VuZXJhdGVQREYoKSB7CiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwZGYtY29udGVudCcpOwogICAgICAgIGNvbnN0IG9wdCA9IHsKICAgICAgICAgICAgbWFyZ2luOiAgICAgICAwLjUsCiAgICAgICAgICAgIGZpbGVuYW1lOiAgICAgJ1RlbGVjb21fUmVwb3J0XycgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2l0ZV9pZCcpLnZhbHVlICsgJy5wZGYnLAogICAgICAgICAgICBpbWFnZTogICAgICAgIHsgdHlwZTogJ2pwZWcnLCBxdWFsaXR5OiAwLjk1IH0sCiAgICAgICAgICAgIGh0bWwyY2FudmFzOiAgeyBzY2FsZTogMiB9LAogICAgICAgICAgICBqc1BERjogICAgICAgIHsgdW5pdDogJ2luJywgZm9ybWF0OiAnbGV0dGVyJywgb3JpZW50YXRpb246ICdwb3J0cmFpdCcgfQogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgLy8gVGhpcyBsaW5lIGNyZWF0ZXMgYW5kIGRvd25sb2FkcyB0aGUgUERGCiAgICAgICAgaHRtbDJwZGYoKS5zZXQob3B0KS5mcm9tKGVsZW1lbnQpLnNhdmUoKTsKICAgIH0KPC9zY3JpcHQ+d4I2PHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2h0bWwycGRmLmpzLzAuMTAuMS9odG1sMnBkZi5idW5kbGUubWluLmpzIj48L3NjcmlwdD4KCjxkaXYgaWQ9ImZvcm0tY29udGFpbmVyIiBzdHlsZT0ibWF4LXdpZHRoOiA4MDBweDsgbWFyZ2luOiAyMHB4IGF1dG87IGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyBwYWRkaW5nOiAyMHB4OyBib3JkZXI6IDJweCBzb2xpZCAjMDA0YTk5OyBib3JkZXItcmFkaXVzOiAxMnB4OyBiYWNrZ3JvdW5kOiAjZmZmOyI+CiAgICAKICAgIDxkaXYgaWQ9InBkZi1jb250ZW50Ij4KICAgICAgICA8aDEgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgY29sb3I6ICMwMDRhOTk7IGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjMDA0YTk5OyBtYXJnaW4tYm90dG9tOiAyMHB4OyI+UmFwcG9ydCBkZSBNYWludGVuYW5jZSBTaXRlIFTDqWzDqWNvbTwvaDE+CiAgICAgICAgCiAgICAgICAgPHRhYmxlIHN0eWxlPSJ3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgbWFyZ2luLWJvdHRvbTogMjBweDsiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJhY2tncm91bmQ6I2VlZTsgcGFkZGluZzoxMHB4OyBib3JkZXI6MXB4IHNvbGlkICNjY2M7IGZvbnQtd2VpZ2h0OmJvbGQ7IHdpZHRoOjI1JTsiPlRlY2huaWNpZW4gOjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyB3aWR0aDoyNSU7Ij48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRfbmFtZSIgb25pbnB1dD0iY2hlY2tWYWxpZGF0aW9uKCkiIHN0eWxlPSJ3aWR0aDo5NSU7IGJvcmRlcjpub25lOyBvdXRsaW5lOm5vbmU7IiBwbGFjZWhvbGRlcj0iTm9tIj48L3RkPgogICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJiYWNrZ3JvdW5kOiNlZWU7IHBhZGRpbmc6MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBmb250LXdlaWdodDpib2xkOyB3aWR0aDoyNSU7Ij5JRCBkdSBTaXRlIDo8L3RkPgogICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOjEwcHg7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgd2lkdGg6MjUlOyI+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzX2lkIiBvbmlucHV0PSJjaGVja1ZhbGlkYXRpb24oKSIgc3R5bGU9IndpZHRoOjk1JTsgYm9yZGVyOm5vbmU7IG91dGxpbmU6bm9uZTsiIHBsYWNlaG9sZGVyPSJFeDogRlItMTAyIj48L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJhY2tncm91bmQ6I2VlZTsgcGFkZGluZzoxMHB4OyBib3JkZXI6MXB4IHNvbGlkICNjY2M7IGZvbnQtd2VpZ2h0OmJvbGQ7Ij5Db29yZG9ubsOpZXMgR1BTIDo8L3RkPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIHN0eWxlPSJwYWRkaW5nOjEwcHg7IGJvcmRlcjoxcHggc29saWQgI2NjYzsiIGlkPSJncHNfdmFsIj5Ew6l0ZWN0aW9uIGVuIGNvdXJzLi4uPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICA8L3RhYmxlPgoKICAgICAgICA8ZGl2IGlkPSJjYXRlZ29yaWVzLWNvbnRhaW5lciI+PC9kaXY+CgogICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MjBweDsiPgogICAgICAgICAgICA8aDMgc3R5bGU9ImNvbG9yOiMwMDRhOTk7Ij5Db21tZW50YWlyZXMgRmluYXV4PC9oMz4KICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJjb21tX2JveCIgc3R5bGU9IndpZHRoOjEwMCU7IGhlaWdodDo4MHB4OyBib3JkZXI6IDFweCBzb2xpZCAjY2NjOyBib3JkZXItcmFkaXVzOiA0cHg7IiBwbGFjZWhvbGRlcj0iT2JzZXJ2YXRpb25zIHN1cHBsw6ltZW50YWlyZXMuLi4iPjwvdGV4dGFyZWE+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8cCBpZD0id2FybmluZy1tc2ciIHN0eWxlPSJjb2xvcjogcmVkOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtd2VpZ2h0OiBib2xkOyBwYWRkaW5nOiAxMHB4OyBiYWNrZ3JvdW5kOiAjZmZmMGYwOyBib3JkZXItcmFkaXVzOiA1cHg7Ij4KICAgICAgICDimqDvuI8gVm91cyBkZXZleiBwcmVuZHJlIGF1IG1vaW5zIDEgcGhvdG8gcGFyIGNhdMOpZ29yaWUgcG91ciBhY3RpdmVyIGxlIGJvdXRvbiBQREYuCiAgICA8L3A+CgogICAgPGJ1dHRvbiBpZD0iZG93bmxvYWQtYnRuIiBkaXNhYmxlZCBvbmNsaWNrPSJnZW5lcmF0ZVBERigpIiBzdHlsZT0id2lkdGg6IDEwMCU7IGJhY2tncm91bmQ6ICNjY2M7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogMjBweDsgYm9yZGVyOiBub25lOyBib3JkZXItcmFkaXVzOiA4cHg7IGZvbnQtc2l6ZTogMjBweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGN1cnNvcjogbm90LWFsbG93ZWQ7IHRyYW5zaXRpb246IDAuM3M7Ij4KICAgICAgICBHw6luw6lyZXIgbGUgUmFwcG9ydCBQREYKICAgIDwvYnV0dG9uPgo8L2Rpdj4KCjxzY3JpcHQ+CiAgICBjb25zdCBjYXRlZ29yaWVzID0gWwogICAgICAgICJFbnRyw6llIGR1IFNpdGUiLCAiQ2zDtHR1cmUiLCAiQXJtb2lyZSBSZWRyZXNzZXVyIiwgIkdyb3VwZSDDiWxlY3Ryb2fDqG5lIiwgCiAgICAgICAgIkJhdHRlcmllcyIsICJBbnRlbm5lcyIsICJDb2ZmcmV0IERDIiwgIkF1dHJlcyIKICAgIF07CgogICAgLy8gQ29uc3RydWN0aW9uIGF1dG9tYXRpcXVlIGRlcyBzZWN0aW9ucwogICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdGVnb3JpZXMtY29udGFpbmVyJyk7CiAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdCwgaW5kZXgpID0+IHsKICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBkaXYuc3R5bGUubWFyZ2luQm90dG9tID0gIjIwcHgiOwogICAgICAgIGRpdi5zdHlsZS5wYWRkaW5nID0gIjEwcHgiOwogICAgICAgIGRpdi5zdHlsZS5ib3JkZXJCb3R0b20gPSAiMXB4IHNvbGlkICNlZWUiOwogICAgICAgIGRpdi5pbm5lckhUTUwgPSBgCiAgICAgICAgICAgIDxoNCBzdHlsZT0ibWFyZ2luLWJvdHRvbTo1cHg7IGNvbG9yOiMzMzM7Ij4ke2NhdH0gPHNwYW4gc3R5bGU9ImNvbG9yOnJlZCI+Kjwvc3Bhbj48L2g0PgogICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjEycHg7IGNvbG9yOiM2NjY7IG1hcmdpbi1ib3R0b206OHB4OyI+TWluOiAxIHBob3RvIHwgTWF4OiAxMCAoQXBwYXJlaWwgcGhvdG8gdW5pcXVlbWVudCk8L3A+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBjbGFzcz0iY2F0LWlucHV0IiBkYXRhLWNhdD0iJHtjYXR9IiBhY2NlcHQ9ImltYWdlLyoiIGNhcHR1cmU9ImNhbWVyYSIgbXVsdGlwbGUgb25jaGFuZ2U9ImhhbmRsZUZpbGVzKHRoaXMsICdwcmV2aWV3LSR7aW5kZXh9JykiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjEwcHg7Ij4KICAgICAgICAgICAgPGRpdiBpZD0icHJldmlldy0ke2luZGV4fSIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiA4cHg7Ij48L2Rpdj4KICAgICAgICBgOwogICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChkaXYpOwogICAgfSk7CgogICAgLy8gQXBlcsOndSBkZXMgcGhvdG9zCiAgICBmdW5jdGlvbiBoYW5kbGVGaWxlcyhpbnB1dCwgcHJldmlld0lkKSB7CiAgICAgICAgY29uc3QgcHJldmlld0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByZXZpZXdJZCk7CiAgICAgICAgcHJldmlld0Rpdi5pbm5lckhUTUwgPSAiIjsgCiAgICAgICAgY29uc3QgZmlsZXMgPSBBcnJheS5mcm9tKGlucHV0LmZpbGVzKS5zbGljZSgwLCAxMCk7IAogICAgICAgIAogICAgICAgIGZpbGVzLmZvckVhY2goZmlsZSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKICAgICAgICAgICAgICAgIGltZy5zcmMgPSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAgICAgICBpbWcuc3R5bGUud2lkdGggPSAiMTAwcHgiOwogICAgICAgICAgICAgICAgaW1nLnN0eWxlLmhlaWdodCA9ICIxMDBweCI7CiAgICAgICAgICAgICAgICBpbWcuc3R5bGUub2JqZWN0Rml0ID0gImNvdmVyIjsKICAgICAgICAgICAgICAgIGltZy5zdHlsZS5ib3JkZXJSYWRpdXMgPSAiNHB4IjsKICAgICAgICAgICAgICAgIGltZy5zdHlsZS5ib3JkZXIgPSAiMXB4IHNvbGlkICNkZGQiOwogICAgICAgICAgICAgICAgcHJldmlld0Rpdi5hcHBlbmRDaGlsZChpbWcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOwogICAgICAgIH0pOwogICAgICAgIGNoZWNrVmFsaWRhdGlvbigpOwogICAgfQoKICAgIC8vIFZhbGlkYXRpb24gZHUgZm9ybXVsYWlyZQogICAgZnVuY3Rpb24gY2hlY2tWYWxpZGF0aW9uKCkgewogICAgICAgIGNvbnN0IG5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndF9uYW1lJykudmFsdWU7CiAgICAgICAgY29uc3Qgc2l0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzX2lkJykudmFsdWU7CiAgICAgICAgY29uc3QgaW5wdXRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNhdC1pbnB1dCcpOwogICAgICAgIGNvbnN0IGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb3dubG9hZC1idG4nKTsKICAgICAgICBjb25zdCB3YXJuaW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dhcm5pbmctbXNnJyk7CiAgICAgICAgCiAgICAgICAgbGV0IHBob3Rvc0NvbXBsZXRlcyA9IHRydWU7CiAgICAgICAgaW5wdXRzLmZvckVhY2goaW5wdXQgPT4gewogICAgICAgICAgICBpZiAoaW5wdXQuZmlsZXMubGVuZ3RoID09PSAwKSBwaG90b3NDb21wbGV0ZXMgPSBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKG5hbWUgJiYgc2l0ZSAmJiBwaG90b3NDb21wbGV0ZXMpIHsKICAgICAgICAgICAgYnRuLmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgICAgIGJ0bi5zdHlsZS5iYWNrZ3JvdW5kID0gIiMyOGE3NDUiOwogICAgICAgICAgICBidG4uc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOwogICAgICAgICAgICB3YXJuaW5nLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYnRuLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgYnRuLnN0eWxlLmJhY2tncm91bmQgPSAiI2NjYyI7CiAgICAgICAgICAgIGJ0bi5zdHlsZS5jdXJzb3IgPSAibm90LWFsbG93ZWQiOwogICAgICAgICAgICB3YXJuaW5nLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBMb2NhbGlzYXRpb24gR1BTCiAgICBpZiAobmF2aWdhdG9yLmdlb2xvY2F0aW9uKSB7CiAgICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihwID0+IHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dwc192YWwnKS5pbm5lclRleHQgPSBwLmNvb3Jkcy5sYXRpdHVkZSArICIsICIgKyBwLmNvb3Jkcy5sb25naXR1ZGU7CiAgICAgICAgfSwgKCkgPT4gewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3BzX3ZhbCcpLmlubmVyVGV4dCA9ICJBY2PDqHMgR1BTIHJlZnVzw6kiOwogICAgICAgIH0pOwogICAgfQoKICAgIC8vIENyw6lhdGlvbiBkdSBQREYKICAgIGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlUERGKCkgewogICAgICAgIGNvbnN0IGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb3dubG9hZC1idG4nKTsKICAgICAgICBjb25zdCBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BkZi1jb250ZW50Jyk7CiAgICAgICAgY29uc3Qgc2l0ZUlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NfaWQnKS52YWx1ZSB8fCAiUmFwcG9ydCI7CiAgICAgICAgCiAgICAgICAgYnRuLmlubmVyVGV4dCA9ICJDcsOpYXRpb24gZHUgUERGLi4uIChWZXVpbGxleiBwYXRpZW50ZXIpIjsKICAgICAgICBidG4uc3R5bGUuYmFja2dyb3VuZCA9ICIjMDA0YTk5IjsKICAgICAgICAKICAgICAgICBjb25zdCBvcHQgPSB7CiAgICAgICAgICAgIG1hcmdpbjogWzAuNSwgMC4zXSwKICAgICAgICAgICAgZmlsZW5hbWU6IGBSYXBwb3J0X1NpdGVfJHtzaXRlSWR9LnBkZmAsCiAgICAgICAgICAgIGltYWdlOiB7IHR5cGU6ICdqcGVnJywgcXVhbGl0eTogMC42IH0sIAogICAgICAgICAgICBodG1sMmNhbnZhczogeyBzY2FsZTogMS41LCB1c2VDT1JTOiB0cnVlIH0sCiAgICAgICAgICAgIGpzUERGOiB7IHVuaXQ6ICdpbicsIGZvcm1hdDogJ2E0Jywgb3JpZW50YXRpb246ICdwb3J0cmFpdCcgfQogICAgICAgIH07CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGF3YWl0IGh0bWwycGRmKCkuc2V0KG9wdCkuZnJvbShjb250ZW50KS5zYXZlKCk7CiAgICAgICAgICAgIGJ0bi5pbm5lclRleHQgPSAi4pyFIFJhcHBvcnQgVMOpbMOpY2hhcmfDqSI7CiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyAKICAgICAgICAgICAgICAgIGJ0bi5pbm5lclRleHQgPSAiR8OpbsOpcmVyIGxlIFJhcHBvcnQgUERGIjsKICAgICAgICAgICAgICAgIGJ0bi5zdHlsZS5iYWNrZ3JvdW5kID0gIiMyOGE3NDUiOwogICAgICAgICAgICB9LCAzMDAwKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGFsZXJ0KCJFcnJldXIgOiBMZXMgcGhvdG9zIHNvbnQgcGV1dC3DqnRyZSB0cm9wIGxvdXJkZXMgcG91ciBsYSBtw6ltb2lyZSBkdSB0w6lsw6lwaG9uZS4iKTsKICAgICAgICAgICAgYnRuLmlubmVyVGV4dCA9ICJSw6llc3NheWVyIjsKICAgICAgICAgICAgYnRuLnN0eWxlLmJhY2tncm91bmQgPSAiI2Q5NTM0ZiI7CiAgICAgICAgfQogICAgfQo8L3NjcmlwdD53tTc8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvaHRtbDJwZGYuanMvMC4xMC4xL2h0bWwycGRmLmJ1bmRsZS5taW4uanMiPjwvc2NyaXB0PgoKPGRpdiBpZD0iZm9ybS1jb250YWluZXIiIHN0eWxlPSJtYXgtd2lkdGg6IDgwMHB4OyBtYXJnaW46IDIwcHggYXV0bzsgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IHBhZGRpbmc6IDIwcHg7IGJvcmRlcjogMnB4IHNvbGlkICMwMDRhOTk7IGJvcmRlci1yYWRpdXM6IDEycHg7IGJhY2tncm91bmQ6ICNmZmY7Ij4KICAgIAogICAgPGRpdiBpZD0icGRmLWNvbnRlbnQiIHN0eWxlPSJiYWNrZ3JvdW5kOiB3aGl0ZSAhaW1wb3J0YW50OyI+CiAgICAgICAgPGgxIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IGNvbG9yOiAjMDA0YTk5OyBib3JkZXItYm90dG9tOiAzcHggc29saWQgIzAwNGE5OTsgbWFyZ2luLWJvdHRvbTogMjBweDsiPlJhcHBvcnQgZGUgTWFpbnRlbmFuY2UgVMOpbMOpY29tPC9oMT4KICAgICAgICAKICAgICAgICA8dGFibGUgc3R5bGU9IndpZHRoOiAxMDAlOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBtYXJnaW4tYm90dG9tOiAyMHB4OyI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iYmFja2dyb3VuZDojZWVlOyBwYWRkaW5nOjEwcHg7IGJvcmRlcjoxcHggc29saWQgI2NjYzsgZm9udC13ZWlnaHQ6Ym9sZDsiPlRlY2huaWNpZW4gOjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9InBhZGRpbmc6MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyI+PGlucHV0IHR5cGU9InRleHQiIGlkPSJ0X25hbWUiIG9uaW5wdXQ9ImNoZWNrVmFsaWRhdGlvbigpIiBzdHlsZT0id2lkdGg6OTAlOyBib3JkZXI6bm9uZTsiPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJhY2tncm91bmQ6I2VlZTsgcGFkZGluZzoxMHB4OyBib3JkZXI6MXB4IHNvbGlkICNjY2M7IGZvbnQtd2VpZ2h0OmJvbGQ7Ij5JRCBTaXRlIDo8L3RkPgogICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nOjEwcHg7IGJvcmRlcjoxcHggc29saWQgI2NjYzsiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic19pZCIgb25pbnB1dD0iY2hlY2tWYWxpZGF0aW9uKCkiIHN0eWxlPSJ3aWR0aDo5MCU7IGJvcmRlcjpub25lOyI+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJiYWNrZ3JvdW5kOiNlZWU7IHBhZGRpbmc6MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBmb250LXdlaWdodDpib2xkOyI+R1BTIDo8L3RkPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIHN0eWxlPSJwYWRkaW5nOjEwcHg7IGJvcmRlcjoxcHggc29saWQgI2NjYzsiIGlkPSJncHNfdmFsIj5Ew6l0ZWN0aW9uLi4uPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICA8L3RhYmxlPgoKICAgICAgICA8ZGl2IGlkPSJjYXRlZ29yaWVzLWNvbnRhaW5lciI+PC9kaXY+CgogICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MjBweDsiPgogICAgICAgICAgICA8aDMgc3R5bGU9ImNvbG9yOiMwMDRhOTk7Ij5Db21tZW50YWlyZXM8L2gzPgogICAgICAgICAgICA8ZGl2IGlkPSJjb21tZW50LWRpc3BsYXkiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IHBhZGRpbmc6MTBweDsgYm9yZGVyOjFweCBzb2xpZCAjZWVlOyBtYXJnaW4tYm90dG9tOjEwcHg7Ij48L2Rpdj4KICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJjb21tX2JveCIgb25pbnB1dD0idXBkYXRlQ29tbWVudCh0aGlzKSIgc3R5bGU9IndpZHRoOjEwMCU7IGhlaWdodDo4MHB4OyI+PC90ZXh0YXJlYT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxwIGlkPSJ3YXJuaW5nLW1zZyIgc3R5bGU9ImNvbG9yOiByZWQ7IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGJhY2tncm91bmQ6I2ZmZjBmMDsgcGFkZGluZzoxMHB4OyI+4pqg77iPIE1hbnF1ZSA6IE5vbSwgSUQgU2l0ZSBvdSBQaG90b3MgKDEgbWluLiBwYXIgc2VjdGlvbik8L3A+CgogICAgPGJ1dHRvbiBpZD0iZG93bmxvYWQtYnRuIiBkaXNhYmxlZCBvbmNsaWNrPSJnZW5lcmF0ZVBERigpIiBzdHlsZT0id2lkdGg6IDEwMCU7IGJhY2tncm91bmQ6ICNjY2M7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogMjBweDsgYm9yZGVyOiBub25lOyBib3JkZXItcmFkaXVzOiA4cHg7IGZvbnQtc2l6ZTogMjBweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGN1cnNvcjogbm90LWFsbG93ZWQ7Ij4KICAgICAgICBHw6luw6lyZXIgbGUgUmFwcG9ydCBQREYKICAgIDwvYnV0dG9uPgo8L2Rpdj4KCjxzY3JpcHQ+CiAgICBjb25zdCBjYXRlZ29yaWVzID0gWyJFbnRyw6llIiwgIkNsw7R0dXJlIiwgIlJlZHJlc3NldXIiLCAiR3JvdXBlIMOJbGVjIiwgIkJhdHRlcmllcyIsICJBbnRlbm5lcyIsICJDb2ZmcmV0IERDIiwgIkF1dHJlcyJdOwogICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhdGVnb3JpZXMtY29udGFpbmVyJyk7CgogICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXQsIGluZGV4KSA9PiB7CiAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgZGl2LnN0eWxlLmNzc1RleHQgPSAibWFyZ2luLWJvdHRvbToyMHB4OyBwYWRkaW5nOjEwcHg7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlZWU7IjsKICAgICAgICBkaXYuaW5uZXJIVE1MID0gYAogICAgICAgICAgICA8aDQgc3R5bGU9Im1hcmdpbjowIDAgNXB4IDA7Ij4ke2NhdH0gPHNwYW4gc3R5bGU9ImNvbG9yOnJlZCI+Kjwvc3Bhbj48L2g0PgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgY2xhc3M9ImNhdC1pbnB1dCIgYWNjZXB0PSJpbWFnZS8qIiBjYXB0dXJlPSJjYW1lcmEiIG11bHRpcGxlIG9uY2hhbmdlPSJwcm9jZXNzSW1hZ2VzKHRoaXMsICdwcmV2aWV3LSR7aW5kZXh9JykiPgogICAgICAgICAgICA8ZGl2IGlkPSJwcmV2aWV3LSR7aW5kZXh9IiBzdHlsZT0iZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBnYXA6IDVweDsgbWFyZ2luLXRvcDoxMHB4OyI+PC9kaXY+CiAgICAgICAgYDsKICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZGl2KTsKICAgIH0pOwoKICAgIGZ1bmN0aW9uIHVwZGF0ZUNvbW1lbnQoZWwpIHsKICAgICAgICBjb25zdCBkaXNwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbW1lbnQtZGlzcGxheScpOwogICAgICAgIGRpc3AuaW5uZXJUZXh0ID0gZWwudmFsdWU7CiAgICAgICAgZGlzcC5zdHlsZS5kaXNwbGF5ID0gZWwudmFsdWUgPyAiYmxvY2siIDogIm5vbmUiOwogICAgfQoKICAgIC8vIENPTVBSRVNTSU9OIERFUyBJTUFHRVMgKExlIHNlY3JldCBwb3VyIMOpdml0ZXIgbGUgUERGIGJsYW5jKQogICAgZnVuY3Rpb24gcHJvY2Vzc0ltYWdlcyhpbnB1dCwgcHJldmlld0lkKSB7CiAgICAgICAgY29uc3QgcHJldmlld0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByZXZpZXdJZCk7CiAgICAgICAgcHJldmlld0Rpdi5pbm5lckhUTUwgPSAiIjsKICAgICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20oaW5wdXQuZmlsZXMpLnNsaWNlKDAsIDEwKTsKCiAgICAgICAgZmlsZXMuZm9yRWFjaChmaWxlID0+IHsKICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpOwogICAgICAgICAgICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IE1BWF9XSURUSCA9IDYwMDsgLy8gVGFpbGxlIHLDqWR1aXRlIHBvdXIgbGUgUERGCiAgICAgICAgICAgICAgICAgICAgbGV0IHdpZHRoID0gaW1nLndpZHRoOwogICAgICAgICAgICAgICAgICAgIGxldCBoZWlnaHQgPSBpbWcuaGVpZ2h0OwoKICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBNQVhfV0lEVEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ICo9IE1BWF9XSURUSCAvIHdpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IE1BWF9XSURUSDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGg7CiAgICAgICAgICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKICAgICAgICAgICAgICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKICAgICAgICAgICAgICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzaXplZEltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwogICAgICAgICAgICAgICAgICAgIHJlc2l6ZWRJbWcuc3JjID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIDAuNyk7IC8vIENvbXByZXNzaW9uIMOgIDcwJQogICAgICAgICAgICAgICAgICAgIHJlc2l6ZWRJbWcuc3R5bGUud2lkdGggPSAiMTAwcHgiOwogICAgICAgICAgICAgICAgICAgIHJlc2l6ZWRJbWcuc3R5bGUuYm9yZGVyID0gIjFweCBzb2xpZCAjY2NjIjsKICAgICAgICAgICAgICAgICAgICBwcmV2aWV3RGl2LmFwcGVuZENoaWxkKHJlc2l6ZWRJbWcpOwogICAgICAgICAgICAgICAgICAgIGNoZWNrVmFsaWRhdGlvbigpOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGltZy5zcmMgPSBlLnRhcmdldC5yZXN1bHQ7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpOwogICAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGNoZWNrVmFsaWRhdGlvbigpIHsKICAgICAgICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RfbmFtZScpLnZhbHVlOwogICAgICAgIGNvbnN0IHNpdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc19pZCcpLnZhbHVlOwogICAgICAgIGNvbnN0IGlucHV0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jYXQtaW5wdXQnKTsKICAgICAgICBjb25zdCBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG93bmxvYWQtYnRuJyk7CiAgICAgICAgY29uc3Qgd2FybmluZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3YXJuaW5nLW1zZycpOwogICAgICAgIAogICAgICAgIGxldCB2YWxpZCA9IChuYW1lICYmIHNpdGUpOwogICAgICAgIGlucHV0cy5mb3JFYWNoKGlucHV0ID0+IHsgaWYgKGlucHV0LmZpbGVzLmxlbmd0aCA9PT0gMCkgdmFsaWQgPSBmYWxzZTsgfSk7CgogICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgICBidG4uZGlzYWJsZWQgPSBmYWxzZTsgYnRuLnN0eWxlLmJhY2tncm91bmQgPSAiIzI4YTc0NSI7IGJ0bi5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7CiAgICAgICAgICAgIHdhcm5pbmcuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBidG4uZGlzYWJsZWQgPSB0cnVlOyBidG4uc3R5bGUuYmFja2dyb3VuZCA9ICIjY2NjIjsKICAgICAgICAgICAgd2FybmluZy5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKG5hdmlnYXRvci5nZW9sb2NhdGlvbikgewogICAgICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24ocCA9PiB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncHNfdmFsJykuaW5uZXJUZXh0ID0gcC5jb29yZHMubGF0aXR1ZGUudG9GaXhlZCg1KSArICIsICIgKyBwLmNvb3Jkcy5sb25naXR1ZGUudG9GaXhlZCg1KTsKICAgICAgICB9KTsKICAgIH0KCiAgICBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVBERigpIHsKICAgICAgICBjb25zdCBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG93bmxvYWQtYnRuJyk7CiAgICAgICAgY29uc3QgY29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwZGYtY29udGVudCcpOwogICAgICAgIGNvbnN0IHNpdGVJZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzX2lkJykudmFsdWU7CiAgICAgICAgCiAgICAgICAgYnRuLmlubmVyVGV4dCA9ICJUcmFpdGVtZW50IGVuIGNvdXJzLi4uIjsKICAgICAgICBidG4uZGlzYWJsZWQgPSB0cnVlOwoKICAgICAgICBjb25zdCBvcHQgPSB7CiAgICAgICAgICAgIG1hcmdpbjogMC4zLAogICAgICAgICAgICBmaWxlbmFtZTogYFJhcHBvcnRfJHtzaXRlSWR9LnBkZmAsCiAgICAgICAgICAgIGltYWdlOiB7IHR5cGU6ICdqcGVnJywgcXVhbGl0eTogMC41IH0sCiAgICAgICAgICAgIGh0bWwyY2FudmFzOiB7IHNjYWxlOiAxLCB1c2VDT1JTOiB0cnVlLCBsb2dnaW5nOiBmYWxzZSB9LAogICAgICAgICAgICBqc1BERjogeyB1bml0OiAnaW4nLCBmb3JtYXQ6ICdhNCcsIG9yaWVudGF0aW9uOiAncG9ydHJhaXQnIH0KICAgICAgICB9OwoKICAgICAgICB0cnkgewogICAgICAgICAgICBhd2FpdCBodG1sMnBkZigpLnNldChvcHQpLmZyb20oY29udGVudCkudG9QZGYoKS5nZXQoJ3BkZicpLnRoZW4oZnVuY3Rpb24ocGRmKSB7CiAgICAgICAgICAgICAgICBidG4uaW5uZXJUZXh0ID0gIkfDqW7DqXJhdGlvbi4uLiI7CiAgICAgICAgICAgIH0pLnNhdmUoKTsKICAgICAgICAgICAgYnRuLmlubmVyVGV4dCA9ICJSYXBwb3J0IFTDqWzDqWNoYXJnw6kgISI7CiAgICAgICAgICAgIGJ0bi5zdHlsZS5iYWNrZ3JvdW5kID0gIiMyOGE3NDUiOwogICAgICAgICAgICBidG4uZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGFsZXJ0KCJFcnJldXIgZGUgbcOpbW9pcmUuIFLDqWVzc2F5ZXogYXZlYyBtb2lucyBkZSBwaG90b3MuIik7CiAgICAgICAgICAgIGJ0bi5pbm5lclRleHQgPSAiUsOpZXNzYXllciI7CiAgICAgICAgICAgIGJ0bi5kaXNhYmxlZCA9IGZhbHNlOwogICAgICAgIH0KICAgIH0KPC9zY3JpcHQ+e0J52aJjhTAAe0HmG2wgYAAAd5EwPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2pzcGRmLzIuNS4xL2pzcGRmLnVtZC5taW4uanMiPjwvc2NyaXB0PgoKPGRpdiBpZD0iZm9ybS1jb250YWluZXIiIHN0eWxlPSJtYXgtd2lkdGg6IDYwMHB4OyBtYXJnaW46IDIwcHggYXV0bzsgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IHBhZGRpbmc6IDIwcHg7IGJvcmRlcjogMnB4IHNvbGlkICMwMDRhOTk7IGJvcmRlci1yYWRpdXM6IDEycHg7IGJhY2tncm91bmQ6ICNmOWY5Zjk7Ij4KICAgIAogICAgPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IGNvbG9yOiAjMDA0YTk5OyI+UmFwcG9ydCBkZSBNYWludGVuYW5jZTwvaDI+CiAgICAKICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQ6IHdoaXRlOyBwYWRkaW5nOiAxNXB4OyBib3JkZXItcmFkaXVzOiA4cHg7IG1hcmdpbi1ib3R0b206IDIwcHg7IGJveC1zaGFkb3c6IDAgMnB4IDVweCByZ2JhKDAsMCwwLDAuMSk7Ij4KICAgICAgICA8bGFiZWw+PGI+VGVjaG5pY2llbiA6PC9iPjwvbGFiZWw+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJ0X25hbWUiIG9uaW5wdXQ9ImNoZWNrVmFsaWRhdGlvbigpIiBzdHlsZT0id2lkdGg6IDEwMCU7IHBhZGRpbmc6IDhweDsgbWFyZ2luOiA1cHggMCAxNXB4IDA7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7Ij4KICAgICAgICAKICAgICAgICA8bGFiZWw+PGI+SUQgU2l0ZSA6PC9iPjwvbGFiZWw+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJzX2lkIiBvbmlucHV0PSJjaGVja1ZhbGlkYXRpb24oKSIgc3R5bGU9IndpZHRoOiAxMDAlOyBwYWRkaW5nOiA4cHg7IG1hcmdpbjogNXB4IDAgMTVweCAwOyBib3JkZXI6IDFweCBzb2xpZCAjY2NjOyI+CiAgICAgICAgCiAgICAgICAgPGxhYmVsPjxiPkdQUyA6PC9iPjwvbGFiZWw+CiAgICAgICAgPGRpdiBpZD0iZ3BzX3ZhbCIgc3R5bGU9InBhZGRpbmc6IDhweDsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyLXJhZGl1czogNHB4OyI+RMOpdGVjdGlvbiBlbiBjb3Vycy4uLjwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iY2F0ZWdvcmllcy1jb250YWluZXIiPjwvZGl2PgoKICAgIDxsYWJlbD48Yj5Db21tZW50YWlyZXMgOjwvYj48L2xhYmVsPgogICAgPHRleHRhcmVhIGlkPSJjb21tX2JveCIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDYwcHg7IG1hcmdpbi1ib3R0b206IDIwcHg7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7Ij48L3RleHRhcmVhPgoKICAgIDxwIGlkPSJ3YXJuaW5nLW1zZyIgc3R5bGU9ImNvbG9yOiByZWQ7IHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij7imqDvuI8gUmVtcGxpc3NleiB0b3VzIGxlcyBjaGFtcHMgZXQgMSBwaG90byBwYXIgc2VjdGlvbi48L3A+CgogICAgPGJ1dHRvbiBpZD0iZG93bmxvYWQtYnRuIiBkaXNhYmxlZCBvbmNsaWNrPSJnZW5lcmF0ZVBERigpIiBzdHlsZT0id2lkdGg6IDEwMCU7IGJhY2tncm91bmQ6ICNjY2M7IGNvbG9yOiB3aGl0ZTsgcGFkZGluZzogMThweDsgYm9yZGVyOiBub25lOyBib3JkZXItcmFkaXVzOiA4cHg7IGZvbnQtc2l6ZTogMThweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGN1cnNvcjogbm90LWFsbG93ZWQ7Ij4KICAgICAgICBHw4lOw4lSRVIgTEUgUERGCiAgICA8L2J1dHRvbj4KPC9kaXY+Cgo8c2NyaXB0PgogICAgY29uc3QgeyBqc1BERiB9ID0gd2luZG93LmpzcGRmOwogICAgY29uc3QgY2F0ZWdvcmllcyA9IFsiRW50cmVlIiwgIkNsb3R1cmUiLCAiUmVkcmVzc2V1ciIsICJHcm91cGVfRWxlYyIsICJCYXR0ZXJpZXMiLCAiQW50ZW5uZXMiLCAiQ29mZnJldF9EQyIsICJBdXRyZXMiXTsKICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYXRlZ29yaWVzLWNvbnRhaW5lcicpOwogICAgbGV0IHN0b3JlID0ge307IC8vIFN0b2NrYWdlIGRlcyBpbWFnZXMgY29tcHJlc3PDqWVzCgogICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXQsIGluZGV4KSA9PiB7CiAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgZGl2LnN0eWxlLmNzc1RleHQgPSAiYmFja2dyb3VuZDp3aGl0ZTsgbWFyZ2luLWJvdHRvbToxNXB4OyBwYWRkaW5nOjEwcHg7IGJvcmRlci1yYWRpdXM6OHB4OyBib3JkZXItbGVmdDo1cHggc29saWQgIzAwNGE5OTsiOwogICAgICAgIGRpdi5pbm5lckhUTUwgPSBgCiAgICAgICAgICAgIDxsYWJlbD48Yj4ke2NhdC5yZXBsYWNlKCdfJywgJyAnKX0gKjwvYj48L2xhYmVsPjxicj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImZpbGUiIGNsYXNzPSJjYXQtaW5wdXQiIGFjY2VwdD0iaW1hZ2UvKiIgY2FwdHVyZT0iY2FtZXJhIiBvbmNoYW5nZT0icHJvY2Vzc1NpbmdsZUltYWdlKHRoaXMsICcke2NhdH0nKSIgc3R5bGU9Im1hcmdpbi10b3A6MTBweDsiPgogICAgICAgICAgICA8ZGl2IGlkPSJwcmV2LSR7Y2F0fSIgc3R5bGU9Im1hcmdpbi10b3A6MTBweDsiPjwvZGl2PgogICAgICAgIGA7CiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGRpdik7CiAgICB9KTsKCiAgICBmdW5jdGlvbiBwcm9jZXNzU2luZ2xlSW1hZ2UoaW5wdXQsIGNhdCkgewogICAgICAgIGlmICghaW5wdXQuZmlsZXNbMF0pIHJldHVybjsKICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOwogICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpOwogICAgICAgICAgICBpbWcub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKICAgICAgICAgICAgICAgIGNvbnN0IE1BWF9XSURUSCA9IDgwMDsKICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IGltZy53aWR0aDsKICAgICAgICAgICAgICAgIGxldCBoZWlnaHQgPSBpbWcuaGVpZ2h0OwogICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gTUFYX1dJRFRIKSB7IGhlaWdodCAqPSBNQVhfV0lEVEggLyB3aWR0aDsgd2lkdGggPSBNQVhfV0lEVEg7IH0KICAgICAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoOwogICAgICAgICAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDsKICAgICAgICAgICAgICAgIGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmRyYXdJbWFnZShpbWcsIDAsIDAsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBjb25zdCBkYXRhVXJsID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIDAuNik7CiAgICAgICAgICAgICAgICBzdG9yZVtjYXRdID0geyBzcmM6IGRhdGFVcmwsIHc6IHdpZHRoLCBoOiBoZWlnaHQgfTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgY29uc3QgcHJldmlldyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBwcmV2LSR7Y2F0fWApOwogICAgICAgICAgICAgICAgcHJldmlldy5pbm5lckhUTUwgPSBgPGltZyBzcmM9IiR7ZGF0YVVybH0iIHN0eWxlPSJ3aWR0aDoxMDBweDsgYm9yZGVyLXJhZGl1czo0cHg7Ij4g4pyFIFByw6p0YDsKICAgICAgICAgICAgICAgIGNoZWNrVmFsaWRhdGlvbigpOwogICAgICAgICAgICB9OwogICAgICAgICAgICBpbWcuc3JjID0gZS50YXJnZXQucmVzdWx0OwogICAgICAgIH07CiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoaW5wdXQuZmlsZXNbMF0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGNoZWNrVmFsaWRhdGlvbigpIHsKICAgICAgICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RfbmFtZScpLnZhbHVlOwogICAgICAgIGNvbnN0IHNpdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc19pZCcpLnZhbHVlOwogICAgICAgIGNvbnN0IGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb3dubG9hZC1idG4nKTsKICAgICAgICBjb25zdCB3YXJuaW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dhcm5pbmctbXNnJyk7CiAgICAgICAgCiAgICAgICAgbGV0IGFsbFBob3RvcyA9IGNhdGVnb3JpZXMuZXZlcnkoY2F0ID0+IHN0b3JlW2NhdF0pOwoKICAgICAgICBpZiAobmFtZSAmJiBzaXRlICYmIGFsbFBob3RvcykgewogICAgICAgICAgICBidG4uZGlzYWJsZWQgPSBmYWxzZTsgYnRuLnN0eWxlLmJhY2tncm91bmQgPSAiIzI4YTc0NSI7IGJ0bi5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7CiAgICAgICAgICAgIHdhcm5pbmcuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBidG4uZGlzYWJsZWQgPSB0cnVlOyBidG4uc3R5bGUuYmFja2dyb3VuZCA9ICIjY2NjIjsKICAgICAgICAgICAgd2FybmluZy5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKG5hdmlnYXRvci5nZW9sb2NhdGlvbikgewogICAgICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24ocCA9PiB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncHNfdmFsJykuaW5uZXJUZXh0ID0gcC5jb29yZHMubGF0aXR1ZGUudG9GaXhlZCg1KSArICIsICIgKyBwLmNvb3Jkcy5sb25naXR1ZGUudG9GaXhlZCg1KTsKICAgICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZW5lcmF0ZVBERigpIHsKICAgICAgICBjb25zdCBkb2MgPSBuZXcganNQREYoKTsKICAgICAgICBjb25zdCB0ZWNoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RfbmFtZScpLnZhbHVlOwogICAgICAgIGNvbnN0IHNpdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc19pZCcpLnZhbHVlOwogICAgICAgIGNvbnN0IGdwcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncHNfdmFsJykuaW5uZXJUZXh0OwogICAgICAgIGNvbnN0IGNvbW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tbV9ib3gnKS52YWx1ZTsKCiAgICAgICAgLy8gUGFnZSAxOiBJbmZvcwogICAgICAgIGRvYy5zZXRGb250U2l6ZSgyMik7IGRvYy5zZXRUZXh0Q29sb3IoMCwgNzQsIDE1Myk7CiAgICAgICAgZG9jLnRleHQoIlJBUFBPUlQgREUgTUFJTlRFTkFOQ0UgU0lURSIsIDIwLCAzMCk7CiAgICAgICAgCiAgICAgICAgZG9jLnNldEZvbnRTaXplKDEyKTsgZG9jLnNldFRleHRDb2xvcigwLCAwLCAwKTsKICAgICAgICBkb2MudGV4dChgVGVjaG5pY2llbiA6ICR7dGVjaH1gLCAyMCwgNTApOwogICAgICAgIGRvYy50ZXh0KGBTaXRlIElEIDogJHtzaXRlfWAsIDIwLCA2MCk7CiAgICAgICAgZG9jLnRleHQoYEdQUyA6ICR7Z3BzfWAsIDIwLCA3MCk7CiAgICAgICAgZG9jLnRleHQoYERhdGUgOiAke25ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCl9YCwgMjAsIDgwKTsKICAgICAgICAKICAgICAgICBkb2MudGV4dCgiQ29tbWVudGFpcmVzIDoiLCAyMCwgMTAwKTsKICAgICAgICBkb2Muc2V0Rm9udFNpemUoMTApOwogICAgICAgIGNvbnN0IHNwbGl0Q29tbSA9IGRvYy5zcGxpdFRleHRUb1NpemUoY29tbSwgMTcwKTsKICAgICAgICBkb2MudGV4dChzcGxpdENvbW0sIDIwLCAxMTApOwoKICAgICAgICAvLyBQYWdlcyBzdWl2YW50ZXM6IFBob3RvcyAoMSBwYXIgcGFnZSBwb3VyIMOpdml0ZXIgbGVzIGJ1Z3MgZGUgbcOpbW9pcmUpCiAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXQpID0+IHsKICAgICAgICAgICAgZG9jLmFkZFBhZ2UoKTsKICAgICAgICAgICAgZG9jLnNldEZvbnRTaXplKDE0KTsKICAgICAgICAgICAgZG9jLnRleHQoYENhdGVnb3JpZSA6ICR7Y2F0LnJlcGxhY2UoJ18nLCAnICcpfWAsIDIwLCAyMCk7CiAgICAgICAgICAgIGNvbnN0IGltZ0RhdGEgPSBzdG9yZVtjYXRdOwogICAgICAgICAgICAvLyBDYWxjdWwgZHUgcmF0aW8gcG91ciBxdWUgbCdpbWFnZSB0aWVubmUgZGFucyBsYSBwYWdlIEE0CiAgICAgICAgICAgIGNvbnN0IG1heFdpZHRoID0gMTcwOwogICAgICAgICAgICBjb25zdCByYXRpbyA9IG1heFdpZHRoIC8gaW1nRGF0YS53OwogICAgICAgICAgICBkb2MuYWRkSW1hZ2UoaW1nRGF0YS5zcmMsICdKUEVHJywgMjAsIDMwLCBtYXhXaWR0aCwgaW1nRGF0YS5oICogcmF0aW8pOwogICAgICAgIH0pOwoKICAgICAgICBkb2Muc2F2ZShgUmFwcG9ydF8ke3NpdGV9LnBkZmApOwogICAgfQo8L3NjcmlwdD7zGAB9haSPD3cGY2xvc2VkdwZjbG9zZWR3AHcAdwB3AHcAeXcAdwB3AHcAfnh2AxByZXN0cmljdGlvbl90eXBldwdleGNsdWRlEnNlbGVjdGVkX2xhbmd1YWdlc3UACnBhbmVsX29wZW54dyQ1YmVkMzMxNy00NjYxLTQ5MDgtYjVlOC1kNTg2ZmJhMWVjOGZ3CWNvcmUvaHRtbH24wAF34z08c3R5bGUgZGF0YS13cC1ibG9jay1odG1sPSJjc3MiPgouYXBwLWNvbnRhaW5lciB7CiAgICBmb250LWZhbWlseTogJ1NlZ29lIFVJJywgVGFob21hLCBHZW5ldmEsIFZlcmRhbmEsIHNhbnMtc2VyaWY7CiAgICBtYXgtd2lkdGg6IDUwMHB4OwogICAgbWFyZ2luOiAyMHB4IGF1dG87CiAgICBiYWNrZ3JvdW5kOiAjZjhmYWZjOwogICAgY29sb3I6ICMxZTI5M2I7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlOGYwOwogICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3gtc2hhZG93OiAwIDRweCA2cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KCi5hcHAtaGVhZGVyIHsKICAgIGJhY2tncm91bmQ6ICMxZTNhOGE7CiAgICBjb2xvcjogd2hpdGU7CiAgICBwYWRkaW5nOiAyMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouYXBwLWhlYWRlciBoMiB7IG1hcmdpbjogMDsgZm9udC1zaXplOiAxLjJyZW07IGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyB9CgouYXBwLWJvZHkgeyBwYWRkaW5nOiAxNXB4OyB9CgouZm9ybS1jYXJkIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgcGFkZGluZzogMTVweDsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2UyZThmMDsKfQoKLmZpZWxkLWxhYmVsIHsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgY29sb3I6ICM2NDc0OGI7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KCi50ZXh0LWlucHV0IHsKICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUxOwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLmZsZXgtcm93IHsgZGlzcGxheTogZmxleDsgZ2FwOiAxMHB4OyBtYXJnaW4tYm90dG9tOiAxMHB4OyB9Ci5mbGV4LWl0ZW0geyBmbGV4OiAxOyB9CgouZ3BzLWJ0biB7CiAgICB3aWR0aDogMTAwJTsKICAgIGJhY2tncm91bmQ6ICNlZmY2ZmY7CiAgICBjb2xvcjogIzFlNDBhZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNiZmRiZmU7CiAgICBwYWRkaW5nOiAxMHB4OwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5ncHMtY29vcmRzIHsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiAjOTRhM2I4OyBtYXJnaW4tdG9wOiA1cHg7IH0KCi5waG90by1jYXRlZ29yeSB7CiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEycHg7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgIzFkNGVkODsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMDUpOwp9CgoudGh1bWItY29udGFpbmVyIHsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBnYXA6IDVweDsgbWFyZ2luLXRvcDogOHB4OyB9CgoudGh1bWItaW1nIHsKICAgIHdpZHRoOiA1MHB4OwogICAgaGVpZ2h0OiA1MHB4OwogICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlOGYwOwp9CgoucGRmLWJ0biB7CiAgICB3aWR0aDogMTAwJTsKICAgIGJhY2tncm91bmQ6ICMxZDRlZDg7CiAgICBjb2xvcjogd2hpdGU7CiAgICBwYWRkaW5nOiAxOHB4OwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKLndhLWJ0biB7IGZsZXg6IDE7IGJhY2tncm91bmQ6ICMyMmM1NWU7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAxMnB4OyBib3JkZXItcmFkaXVzOiA4cHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBjdXJzb3I6IHBvaW50ZXI7IH0KLm1haWwtYnRuIHsgZmxleDogMTsgYmFja2dyb3VuZDogIzMzNDE1NTsgY29sb3I6IHdoaXRlOyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDEycHg7IGJvcmRlci1yYWRpdXM6IDhweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGN1cnNvcjogcG9pbnRlcjsgfQo8L3N0eWxlPgoKPHNjcmlwdCBkYXRhLXdwLWJsb2NrLWh0bWw9ImpzIj4KPHNjcmlwdD4KKGZ1bmN0aW9uKCkgewogICAgY29uc3QgT1BFUkFUT1JfRU1BSUwgPSAia25vb3JhbmlAdW5pY29tcGV4Lm5ldCI7CiAgICBjb25zdCBPUEVSQVRPUl9XSEFUU0FQUCA9ICIyNDM4MTcwMDUxNjkiOwogICAgbGV0IGN1cnJlbnRDb29yZHMgPSAiTm9uIGRpc3BvbmlibGUiOwogICAgbGV0IHJlcG9ydERhdGEgPSB7fTsKCiAgICBjb25zdCBjYXRlZ29yaWVzID0gWwogICAgICAgICJFbnRyw6llICYgUG9ydGFpbCIsICJDbMO0dHVyZSIsICJSZWRyZXNzZXVyIiwgIkdyb3VwZSDDiWxlY3Ryb2fDqG5lIiwgCiAgICAgICAgIkJhdHRlcmllcyIsICJBbnRlbm5lcyIsICJDb2ZmcmV0IERDIiwgIlNvbGFpcmUiLCAKICAgICAgICAiQ2FyYnVyYW50IiwgIkNsaW0iLCAiTWlzZSDDoCBUZXJyZSIsICJBdXRyZXMiCiAgICBdOwoKICAgIC8vIEZvbmN0aW9uIHBvdXIgY3LDqWVyIGxlcyBzZWN0aW9ucwogICAgZnVuY3Rpb24gaW5pdEFwcCgpIHsKICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGhvdG9TZWN0aW9ucycpOwogICAgICAgIGlmICghY29udGFpbmVyKSByZXR1cm47IC8vIFPDqWN1cml0w6kgc2kgbCfDqWzDqW1lbnQgbidlc3QgcGFzIHRyb3V2w6kKICAgICAgICAKICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gIiI7IC8vIE9uIHZpZGUgYXUgY2FzIG\/DuQogICAgICAgIAogICAgICAgIGNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0LCBpZHgpID0+IHsKICAgICAgICAgICAgcmVwb3J0RGF0YVtjYXRdID0gW107CiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgc2VjdGlvbi5jbGFzc05hbWUgPSAncGhvdG8tY2F0ZWdvcnknOwogICAgICAgICAgICBzZWN0aW9uLnN0eWxlLmNzc1RleHQgPSAiYmFja2dyb3VuZDp3aGl0ZTsgcGFkZGluZzoxMnB4OyBib3JkZXItcmFkaXVzOjEwcHg7IG1hcmdpbi1ib3R0b206MTBweDsgYm9yZGVyLWxlZnQ6NHB4IHNvbGlkICMxZDRlZDg7IGJvcmRlcjogMXB4IHNvbGlkICNlMmU4ZjA7IG1hcmdpbi10b3A6MTBweDsiOwogICAgICAgICAgICAKICAgICAgICAgICAgc2VjdGlvbi5pbm5lckhUTUwgPSBgCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogYm9sZDsiPiR7Y2F0fTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iY291bnQtJHtpZHh9IiBzdHlsZT0iZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzY0NzQ4YjsiPjAvMTA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InByZXYtJHtpZHh9IiBzdHlsZT0iZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBnYXA6IDVweDsgbWFyZ2luLXRvcDogOHB4OyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgaWQ9ImZpbGUtJHtpZHh9IiBhY2NlcHQ9ImltYWdlLyoiIGNhcHR1cmU9ImNhbWVyYSIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgb25jaGFuZ2U9ImFkZFBob3RvKCR7aWR4fSwgJyR7Y2F0fScpIj4KICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpbGUtJHtpZHh9JykuY2xpY2soKSIgc3R5bGU9IndpZHRoOiAxMDAlOyBiYWNrZ3JvdW5kOiAjZjhmYWZjOyBib3JkZXI6IDFweCBkYXNoZWQgI2NiZDVlMTsgcGFkZGluZzogOHB4OyBtYXJnaW4tdG9wOiA4cHg7IGJvcmRlci1yYWRpdXM6IDVweDsgY3Vyc29yOiBwb2ludGVyOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjMWU0MGFmOyBmb250LXdlaWdodDogYm9sZDsiPisgQWpvdXRlciBQaG90bzwvYnV0dG9uPgogICAgICAgICAgICBgOwogICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoc2VjdGlvbik7CiAgICAgICAgfSk7CiAgICB9CgogICAgLy8gR2VzdGlvbiBkZXMgcGhvdG9zCiAgICB3aW5kb3cuYWRkUGhvdG8gPSBmdW5jdGlvbihpZHgsIGNhdCkgewogICAgICAgIGNvbnN0IGZpbGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBmaWxlLSR7aWR4fWApOwogICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlSW5wdXQuZmlsZXNbMF07CiAgICAgICAgaWYgKGZpbGUgJiYgcmVwb3J0RGF0YVtjYXRdLmxlbmd0aCA8IDEwKSB7CiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4gewogICAgICAgICAgICAgICAgcmVwb3J0RGF0YVtjYXRdLnB1c2goZS50YXJnZXQucmVzdWx0KTsKICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwogICAgICAgICAgICAgICAgaW1nLnNyYyA9IGUudGFyZ2V0LnJlc3VsdDsKICAgICAgICAgICAgICAgIGltZy5zdHlsZS5jc3NUZXh0ID0gIndpZHRoOjUwcHg7IGhlaWdodDo1MHB4OyBvYmplY3QtZml0OmNvdmVyOyBib3JkZXItcmFkaXVzOjRweDsgYm9yZGVyOjFweCBzb2xpZCAjZTJlOGYwOyI7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgcHJldi0ke2lkeH1gKS5hcHBlbmRDaGlsZChpbWcpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGNvdW50LSR7aWR4fWApLmlubmVyVGV4dCA9IGAke3JlcG9ydERhdGFbY2F0XS5sZW5ndGh9LzEwYDsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7CiAgICAgICAgfQogICAgfTsKCiAgICAvLyBGb25jdGlvbnMgZ2xvYmFsZXMKICAgIHdpbmRvdy5nZXRMb2NhdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgICAgIGlmIChuYXZpZ2F0b3IuZ2VvbG9jYXRpb24pIHsKICAgICAgICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihwb3MgPT4gewogICAgICAgICAgICAgICAgY3VycmVudENvb3JkcyA9IGAke3Bvcy5jb29yZHMubGF0aXR1ZGUudG9GaXhlZCg2KX0sICR7cG9zLmNvb3Jkcy5sb25naXR1ZGUudG9GaXhlZCg2KX1gOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dwc0Rpc3BsYXknKS5pbm5lclRleHQgPSBgR1BTOiAke2N1cnJlbnRDb29yZHN9YDsKICAgICAgICAgICAgfSwgKCkgPT4gYWxlcnQoIkVycmV1ciBHUFMiKSk7CiAgICAgICAgfQogICAgfTsKCiAgICB3aW5kb3cuZ2VuZXJhdGVQREYgPSBhc3luYyBmdW5jdGlvbigpIHsKICAgICAgICBjb25zdCB7IGpzUERGIH0gPSB3aW5kb3cuanNwZGY7CiAgICAgICAgY29uc3QgZG9jID0gbmV3IGpzUERGKCk7CiAgICAgICAgZG9jLnRleHQoIlJBUFBPUlQgVU5JQ09NUEVYIiwgMTUsIDIwKTsKICAgICAgICAvLyAuLi4gKHJlc3RlIGR1IGNvZGUgZGUgZ8OpbsOpcmF0aW9uIFBERikKICAgICAgICBkb2Muc2F2ZSgicmFwcG9ydC5wZGYiKTsKICAgIH07CgogICAgd2luZG93LnNlbmRXaGF0c0FwcCA9IGZ1bmN0aW9uKCkgeyAvKiAuLi4gY29kZSB3aGF0c2FwcCAuLi4gKi8gfTsKICAgIHdpbmRvdy5zZW5kRW1haWwgPSBmdW5jdGlvbigpIHsgLyogLi4uIGNvZGUgZW1haWwgLi4uICovIH07CgogICAgLy8gTGFuY2VtZW50IGZvcmPDqQogICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJjb21wbGV0ZSIgfHwgZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImludGVyYWN0aXZlIikgewogICAgICAgIGluaXRBcHAoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGluaXRBcHApOwogICAgfQp9KSgpOwo8L3NjcmlwdD4KPC9zY3JpcHQ+Cgo8ZGl2IGlkPSJ1bmljb21wZXgtYXBwIiBjbGFzcz0iYXBwLWNvbnRhaW5lciI+CiAgICA8ZGl2IGNsYXNzPSJhcHAtaGVhZGVyIj4KICAgICAgICA8aDI+UkFQUE9SVCBERSBTSVRFIFVOSUNPTVBFWDwvaDI+CiAgICAgICAgPHNtYWxsPk1haW50ZW5hbmNlIHYyLjYgLSBGcmFuw6dhaXM8L3NtYWxsPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYXBwLWJvZHkiPgogICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tY2FyZCI+CiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZmllbGQtbGFiZWwiPk5PTSBEVSBURUNITklDSUVOPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJ0ZWNoTmFtZSIgY2xhc3M9InRleHQtaW5wdXQiPgogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleC1yb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZpZWxkLWxhYmVsIj5JRCBTSVRFPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InNpdGVJZCIgY2xhc3M9InRleHQtaW5wdXQiPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZmllbGQtbGFiZWwiPk7CsCBCT04gVFJBVkFJTDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJ3b051bSIgY2xhc3M9InRleHQtaW5wdXQiPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJnZXRMb2NhdGlvbigpIiBjbGFzcz0iZ3BzLWJ0biI+8J+TjSBDQVBUVVJFUiBHUFM8L2J1dHRvbj4KICAgICAgICAgICAgPHAgaWQ9Imdwc0Rpc3BsYXkiIGNsYXNzPSJncHMtY29vcmRzIj5HUFMgbm9uIGNhcHR1csOpPC9wPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGlkPSJwaG90b1NlY3Rpb25zIj48L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1jYXJkIj4KICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmaWVsZC1sYWJlbCI+T0JTRVJWQVRJT05TPC9sYWJlbD4KICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJjb21tZW50cyIgcm93cz0iMyIgY2xhc3M9InRleHQtaW5wdXQiPjwvdGV4dGFyZWE+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxidXR0b24gb25jbGljaz0iZ2VuZXJhdGVQREYoKSIgY2xhc3M9InBkZi1idG4iPkfDiU7DiVJFUiBSQVBQT1JUIFBERjwvYnV0dG9uPgoKICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4LXJvdyI+CiAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0ic2VuZFdoYXRzQXBwKCkiIGNsYXNzPSJ3YS1idG4iPldIQVRTQVBQPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0ic2VuZEVtYWlsKCkiIGNsYXNzPSJtYWlsLWJ0biI+RU1BSUw8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2pzcGRmLzIuNS4xL2pzcGRmLnVtZC5taW4uanMiPjwvc2NyaXB0Pnd\/RMOpY291dnJleiBjb21tZW50IHV0aWxpc2VyIGVmZmljYWNlbWVudCBub3RyZSBhcHBsaWNhdGlvbiBkZSByYXBwb3J0IGF2ZWMgY2FwdHVyZSBHUFMsIGFqb3V0IGRlIHBob3RvcyBldCBnw6luw6lyYXRpb24gZGUgUERGIXc4Q3LDqWVyIHVuIFJhcHBvcnQgZGUgU2l0ZSBhdmVjIEdQUyBldCBQaG90b3MgLSBVbmljb21wZXh3B3B1Ymxpc2gCg8LthgvtBQEBAQIBAAEAAwEBAgMCAhABAQEFAQsCAgkbBw8BRQEBAQUKGQICARYBAggIARkBAgELAwYBAQEfCQcBBgEkAQYBCAIEBQcBMAIEARcBAgEEAQMCDgFAAQEEEAEAAS8BPQwDASABEAFwAQUBDQEAAR8CAgoLAQ8BBwQHBwIKAQIMAR0BFgICAhEBAAQDBVMCBQUHAgEBBAEEBBABEQICAisBCwgGAQABMQEgAQMBEAEEAQACAAEFCwABAQECAQACCwEKAQIBCgcGAQkBAgEIAwMCDwECAhUBLAEeAQABAwEUARcBAQIAAQgCBwEEAQkBAAEAAQACFgEJAQIBDQIAARUBCwIFCQUEdwEBAgABBQEWAQQEBwJVAQMBIwEAAQMCCQIoASUEFgEDAQ8CBQEBAQIBAAIPAQoBAAEJASEBAwMGBBsJAQEBAggC5QEBHgEsAQABCQETAQABAAEBAQ8CAQEEARwBFwICKQQDAQEAAQEDAwQAAQABACQADAUVAwgEEyECAwECAQMBBQIDBAMBAAEEAQsBBQEhBwACCBIBEQABBwENAgAIHxQADwEDBwEHAgEOBAEOAgEBBgECARgBAQEDAQoCAAIDAQQBAAEbAQIBAgEeAQYBBAEHAwcCAQEBAwYCCAE1AQ0CAAMEAQABAgEAAwACBAIBAQEBAAEHAgQBBQEBAQMEAQMSAQQFAQMAAQQBAAIAAgEBAgIJAQABAQEKAwIBAgECAQkBAAEJAQABAAIAAQACAAIAAgIBBAIDAQIBAwMEAhEBBgEBAQ4BAQECAQABAAEGAQoBSAEZARUDAgESBQMFAAECAgoBJwECAiACCwIRAQEGEggWA0wBGwgIAQEBBAIFAgMBAwEAAwUCBgIbARgCAAECAQABEgMOAQABAAEFAQkBGgYAAQYBCwUBAQABAAEAAwI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\",\"updateId\":365403944}","advanced_seo_description":"D\u00e9couvrez comment utiliser efficacement notre application de rapport avec capture GPS, ajout de photos et g\u00e9n\u00e9ration de PDF!","jetpack_seo_html_title":"Cr\u00e9er un Rapport de Site avec GPS et Photos - Unicompex","jetpack_seo_noindex":false,"footnotes":""},"class_list":["post-12335","page","type-page","status-publish","has-post-thumbnail","hentry"],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/PctZkn-3cX","jetpack-related-posts":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/unicompex.com\/hi\/wp-json\/wp\/v2\/pages\/12335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unicompex.com\/hi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/unicompex.com\/hi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/unicompex.com\/hi\/wp-json\/wp\/v2\/users\/15853829"}],"replies":[{"embeddable":true,"href":"https:\/\/unicompex.com\/hi\/wp-json\/wp\/v2\/comments?post=12335"}],"version-history":[{"count":9,"href":"https:\/\/unicompex.com\/hi\/wp-json\/wp\/v2\/pages\/12335\/revisions"}],"predecessor-version":[{"id":12353,"href":"https:\/\/unicompex.com\/hi\/wp-json\/wp\/v2\/pages\/12335\/revisions\/12353"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unicompex.com\/hi\/wp-json\/wp\/v2\/media\/12344"}],"wp:attachment":[{"href":"https:\/\/unicompex.com\/hi\/wp-json\/wp\/v2\/media?parent=12335"}],"curies":[{"name":"\u0921\u092c\u094d\u0932\u094d\u092f\u0942\u092a\u0940","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}