diff --git a/usermods/PIR_sensor_switch/usermod_PIR_sensor_switch.h b/usermods/PIR_sensor_switch/usermod_PIR_sensor_switch.h index 586abc55..b36a2891 100644 --- a/usermods/PIR_sensor_switch/usermod_PIR_sensor_switch.h +++ b/usermods/PIR_sensor_switch/usermod_PIR_sensor_switch.h @@ -122,6 +122,7 @@ private: */ void switchStrip(bool switchOn) { + if (m_offOnly && bri && (switchOn || (!PIRtriggered && !switchOn))) return; PIRtriggered = switchOn; if (switchOn && m_onPreset) { applyPreset(m_onPreset); @@ -227,7 +228,7 @@ public: void loop() { // only check sensors 4x/s - if (!enabled || millis() - lastLoop < 250 || strip.isUpdating() || (m_offOnly && bri && !PIRtriggered)) return; + if (!enabled || millis() - lastLoop < 250 || strip.isUpdating()) return; lastLoop = millis(); if (!updatePIRsensorState()) { diff --git a/wled00/data/index.js b/wled00/data/index.js index 69f81f39..d95a5721 100644 --- a/wled00/data/index.js +++ b/wled00/data/index.js @@ -1,2207 +1,2209 @@ -//page js -var loc = false, locip; -var noNewSegs = false; -var isOn = false, nlA = false, isLv = false, isInfo = false, isNodes = false, syncSend = false, syncTglRecv = true, isRgbw = false; -var whites = [0,0,0]; -var selColors; -var expanded = [false]; -var powered = [true]; -var nlDur = 60, nlTar = 0; -var nlMode = false; -var selectedFx = 0; -var selectedPal = 0; -var csel = 0; -var currentPreset = -1; -var lastUpdate = 0; -var segCount = 0, ledCount = 0, lowestUnused = 0, maxSeg = 0, lSeg = 0; -var pcMode = false, pcModeA = false, lastw = 0; -var tr = 7; -var d = document; -const ranges = RangeTouch.setup('input[type="range"]', {}); -var palettesData; -var pJson = {}, eJson = {}, lJson = {}; -var pN = "", pI = 0, pNum = 0; -var pmt = 1, pmtLS = 0, pmtLast = 0; -var lastinfo = {}; -var ws; -var cfg = { - theme:{base:"dark", bg:{url:""}, alpha:{bg:0.6,tab:0.8}, color:{bg:""}}, - comp :{colors:{picker: true, rgb: false, quick: true, hex: false}, labels:true, pcmbot:false, pid:true, seglen:false} -}; -var hol = [ - [0,11,24,4,"https://aircoookie.github.io/xmas.png"], // christmas - [0,2,17,1,"https://images.alphacoders.com/491/491123.jpg"], // st. Patrick's day - [2022,3,17,2,"https://aircoookie.github.io/easter.png"], - [2023,3,9,2,"https://aircoookie.github.io/easter.png"], - [2024,2,31,2,"https://aircoookie.github.io/easter.png"] -]; - -var cpick = new iro.ColorPicker("#picker", { - width: 260, - wheelLightness: false, - wheelAngle: 90, - layout: [ - { - component: iro.ui.Wheel, - options: {} - }, - { - component: iro.ui.Slider, - options: { sliderType: 'value' } - }, - { - component: iro.ui.Slider, - options: { - sliderType: 'kelvin', - minTemperature: 2100, - maxTemperature: 10000 - } - } - ] -}); - -function handleVisibilityChange() {if (!d.hidden && new Date () - lastUpdate > 3000) requestJson({'v':true},false);} -function sCol(na, col) {d.documentElement.style.setProperty(na, col);} -function gId(c) {return d.getElementById(c);} -function gEBCN(c) {return d.getElementsByClassName(c);} - -function applyCfg() -{ - cTheme(cfg.theme.base === "light"); - var bg = cfg.theme.color.bg; - if (bg) sCol('--c-1', bg); - var ccfg = cfg.comp.colors; - gId('hexw').style.display = ccfg.hex ? "block":"none"; - gId('picker').style.display = ccfg.picker ? "block":"none"; - gId('rgbwrap').style.display = ccfg.rgb ? "block":"none"; - gId('qcs-w').style.display = ccfg.quick ? "block":"none"; - var l = cfg.comp.labels; - var e = d.querySelectorAll('.tab-label'); - for (var i=0; i=hs && today { - var a = parseFloat(cfg.theme.alpha.bg); - if (isNaN(a)) a = 0.6; - bg.style.opacity = a; - bg.style.backgroundImage = `url(${img.src})`; - img = null; - }); -} - -function loadSkinCSS(cId) -{ - if (!gId(cId)) // check if element exists - { - var h = document.getElementsByTagName('head')[0]; - var l = document.createElement('link'); - l.id = cId; - l.rel = 'stylesheet'; - l.type = 'text/css'; - l.href = (loc?`http://${locip}`:'.') + '/skin.css'; - l.media = 'all'; - h.appendChild(l); - } -} - -function onLoad() -{ - if (window.location.protocol == "file:") { - loc = true; - locip = localStorage.getItem('locIp'); - if (!locip) - { - locip = prompt("File Mode. Please enter WLED IP!"); - localStorage.setItem('locIp', locip); - } - } - var sett = localStorage.getItem('wledUiCfg'); - if (sett) cfg = mergeDeep(cfg, JSON.parse(sett)); - - resetPUtil(); - - applyCfg(); - if (cfg.theme.bg.url=="" || cfg.theme.bg.url === "https://picsum.photos/1920/1080") { - fetch((loc?`http://${locip}`:'.') + "/holidays.json", { - method: 'get' - }) - .then(res => { - return res.json(); - }) - .then(json => { - if (Array.isArray(json)) hol = json; - //TODO: do some parsing first - }) - .catch(function(error){ - console.log("holidays.json does not contain array of holidays. Defaults loaded."); - }) - .finally(function(){ - loadBg(cfg.theme.bg.url); - }); - } else - loadBg(cfg.theme.bg.url); - loadSkinCSS('skinCss'); - - var cd = gId('csl').children; - for (var i = 0; i < cd.length; i++) cd[i].style.backgroundColor = "rgb(0, 0, 0)"; - selectSlot(0); - updateTablinks(0); - cpick.on("input:end", function() { - setColor(1); - }); - pmtLS = localStorage.getItem('wledPmt'); - - // Load initial data - loadPalettes(function() { - loadPalettesData(); - loadFX(function() { - loadPresets(function() { - makeWS(); -// loadInfo(function() { -// requestJson({'v':true}); -// }); - }); - }); - }); - resetUtil(); - updateUI(true); - - d.addEventListener("visibilitychange", handleVisibilityChange, false); - size(); - gId("cv").style.opacity=0; - if (localStorage.getItem('pcm') == "true") togglePcMode(true); - var sls = d.querySelectorAll('input[type="range"]'); - for (var sl of sls) { - //sl.addEventListener('input', updateBubble, true); - sl.addEventListener('touchstart', toggleBubble); - sl.addEventListener('touchend', toggleBubble); - } - - // Check for UI update WS handler - if (!ws || ws.readyState !== WebSocket.OPEN) { - setTimeout(function(){loadInfo(function(){requestJson({'v':true});})},250) - } -} - -function updateTablinks(tabI) -{ - var tablinks = gEBCN("tablinks"); - for (var i of tablinks) i.className = i.className.replace(" active", ""); - if (pcMode) return; - tablinks[tabI].className += " active"; -} - -function openTab(tabI, force = false) -{ - if (pcMode && !force) return; - iSlide = tabI; - _C.classList.toggle('smooth', false); - _C.style.setProperty('--i', iSlide); - updateTablinks(tabI); -} - -var timeout; -function showToast(text, error = false) -{ - if (error) gId('connind').style.backgroundColor = "#831"; - var x = gId("toast"); - x.innerHTML = text; - x.className = error ? "error":"show"; - clearTimeout(timeout); - x.style.animation = 'none'; - timeout = setTimeout(function(){ x.className = x.className.replace("show", ""); }, 2900); -} - -function showErrorToast() -{ - if (ws && ws.readyState === WebSocket.OPEN) { - ws.close(); - ws = null; - } - showToast('Connection to light failed!', true); -} - -function clearErrorToast() {gId("toast").className = gId("toast").className.replace("error", "");} - -function getRuntimeStr(rt) -{ - var t = parseInt(rt); - var days = Math.floor(t/86400); - var hrs = Math.floor((t - days*86400)/3600); - var mins = Math.floor((t - days*86400 - hrs*3600)/60); - var str = days ? (days + " " + (days == 1 ? "day" : "days") + ", ") : ""; - str += (hrs || days) ? (hrs + " " + (hrs == 1 ? "hour" : "hours")) : ""; - if (!days && hrs) str += ", "; - if (t > 59 && !days) str += mins + " min"; - if (t < 3600 && t > 59) str += ", "; - if (t < 3600) str += (t - mins*60) + " sec"; - return str; -} - -function inforow(key, val, unit = "") -{ - return `${key}${val}${unit}`; -} - -function getLowestUnusedP() -{ - var l = 1; - for (var key in pJson) if (key == l) l++; - if (l > 250) l = 250; - return l; -} - -function checkUsed(i) -{ - var id = gId(`p${i}id`).value; - if (pJson[id] && (i == 0 || id != i)) - gId(`p${i}warn`).innerHTML = `⚠ Overwriting ${pName(id)}!`; - else - gId(`p${i}warn`).innerHTML = ""; -} - -function pName(i) -{ - var n = "Preset " + i; - if (pJson && pJson[i] && pJson[i].n) n = pJson[i].n; - return n; -} - -function isPlaylist(i) -{ - return pJson[i].playlist && pJson[i].playlist.ps; -} - -function papiVal(i) -{ - if (!pJson || !pJson[i]) return ""; - var o = Object.assign({},pJson[i]); - if (o.win) return o.win; - delete o.n; delete o.p; delete o.ql; - return JSON.stringify(o); -} - -function qlName(i) -{ - if (!pJson || !pJson[i] || !pJson[i].ql) return ""; - return pJson[i].ql; -} - -function cpBck() -{ - var copyText = gId("bck"); - - copyText.select(); - copyText.setSelectionRange(0, 999999); - d.execCommand("copy"); - showToast("Copied to clipboard!"); -} - -function presetError(empty) -{ - var hasBackup = false; var bckstr = ""; - try { - bckstr = localStorage.getItem("wledP"); - if (bckstr.length > 10) hasBackup = true; - } catch (e) {} - - var cn = `
`; - if (empty) - cn += `You have no presets yet!`; - else - cn += `Sorry, there was an issue loading your presets!`; - - if (hasBackup) { - cn += `

`; - if (empty) - cn += `However, there is backup preset data of a previous installation available.
- (Saving a preset will hide this and overwrite the backup)`; - else - cn += `Here is a backup of the last known good state:`; - cn += `
- `; - } - cn += `
`; - gId('pcont').innerHTML = cn; - if (hasBackup) gId('bck').value = bckstr; -} - -function loadPresets(callback = null) -{ - //1st boot (because there is a callback) - if (callback && pmt == pmtLS && pmt > 0) { - //we have a copy of the presets in local storage and don't need to fetch another one - populatePresets(true); - pmtLast = pmt; - callback(); - return; - } - - //afterwards - if (!callback && pmt == pmtLast) return; - - pmtLast = pmt; - - var url = (loc?`http://${locip}`:'') + '/presets.json'; - - fetch(url, { - method: 'get' - }) - .then(res => { - if (!res.ok) showErrorToast(); - return res.json(); - }) - .then(json => { - clearErrorToast(); - pJson = json; - populatePresets(); - reconnectWS(); -// if (callback) callback(); - }) - .catch(function (error) { - showToast(error, true); - console.log(error); - presetError(false); - //if (callback) callback(); - }) - .finally(() => { - if (callback) setTimeout(callback,99); - }); -} - -function loadPalettes(callback = null) -{ - var url = (loc?`http://${locip}`:'') + '/json/palettes'; - - fetch(url, { - method: 'get' - }) - .then(res => { - if (!res.ok) showErrorToast(); - return res.json(); - }) - .then(json => { - clearErrorToast(); - lJson = Object.entries(json); - populatePalettes(); - reconnectWS(); - if (callback) callback(); - }) - .catch(function (error) { - showToast(error, true); - presetError(false); - if (callback) callback(); - }); -} - -function loadFX(callback = null) -{ - var url = (loc?`http://${locip}`:'') + '/json/effects'; - - fetch(url, { - method: 'get' - }) - .then(res => { - if (!res.ok) showErrorToast(); - return res.json(); - }) - .then(json => { - clearErrorToast(); - eJson = Object.entries(json); - populateEffects(); - if (callback) callback(); - }) - .catch(function (error) { - showToast(error, true); - presetError(false); - if (callback) callback(); - }); -} - -var pQL = []; -function populateQL() -{ - var cn = ""; - if (pQL.length > 0) { - cn += `

Quick load

`; - - var it = 0; - for (var key of (pQL||[])) { - cn += ``; - it++; - if (it > 4) { - it = 0; - cn += '
'; - } - } - if (it != 0) cn+= '
'; - } - gId('pql').innerHTML = cn; -} - -function populatePresets(fromls) -{ - if (fromls) pJson = JSON.parse(localStorage.getItem("wledP")); - if (!pJson) {pJson={};return}; - delete pJson["0"]; - var cn = `

All presets

`; - var arr = Object.entries(pJson); - arr.sort(cmpP); - pQL = []; - var is = []; - pNum = 0; - for (var key of (arr||[])) - { - if (!isObject(key[1])) continue; - let i = parseInt(key[0]); - var qll = key[1].ql; - if (qll) pQL.push([i, qll]); - is.push(i); - - cn += `
`; - if (cfg.comp.pid) cn += `
${i}
`; - cn += `
${isPlaylist(i)?"":""}${pName(i)}
- -
-

`; - pNum++; - } - - gId('pcont').innerHTML = cn; - if (pNum > 0) { - if (pmtLS != pmt && pmt != 0) { - localStorage.setItem("wledPmt", pmt); - pJson["0"] = {}; - localStorage.setItem("wledP", JSON.stringify(pJson)); - } - pmtLS = pmt; - for (var a = 0; a < is.length; a++) { - let i = is[a]; - if (expanded[i+100]) expand(i+100, true); - } - makePlSel(arr); - } else { presetError(true); } - updatePA(true); - populateQL(); -} - -function loadInfo(callback=null) -{ - var url = (loc?`http://${locip}`:'') + '/json/info'; - fetch(url, { - method: 'get' - }) - .then(res => { - if (!res.ok) showToast('Could not load Info!', true); - return res.json(); - }) - .then(json => { - clearErrorToast(); - lastinfo = json; - var name = json.name; - gId('namelabel').innerHTML = name; -// if (name === "Dinnerbone") d.documentElement.style.transform = "rotate(180deg)"; - if (json.live) name = "(Live) " + name; - if (loc) name = "(L) " + name; - d.title = name; - isRgbw = json.leds.wv; - ledCount = json.leds.count; - syncTglRecv = json.str; - maxSeg = json.leds.maxseg; - pmt = json.fs.pmt; - showNodes(); - populateInfo(json); - reconnectWS(); - reqsLegal = true; - if (callback) callback(); - }) - .catch(function (error) { - showToast(error, true); - console.log(error); - if (callback) callback(); - }); -} - -function populateInfo(i) -{ - var cn=""; - var heap = i.freeheap/1000; - heap = heap.toFixed(1); - var pwr = i.leds.pwr; - var pwru = "Not calculated"; - if (pwr > 1000) {pwr /= 1000; pwr = pwr.toFixed((pwr > 10) ? 0 : 1); pwru = pwr + " A";} - else if (pwr > 0) {pwr = 50 * Math.round(pwr/50); pwru = pwr + " mA";} - var urows=""; - if (i.u) { - for (const [k, val] of Object.entries(i.u)) { - if (val[1]) - urows += inforow(k,val[0],val[1]); - else - urows += inforow(k,val); - } - } - var vcn = "Kuuhaku"; - if (i.ver.startsWith("0.13.")) vcn = "Toki"; - if (i.ver.includes("-bl")) vcn = "Ryujin"; - if (i.cn) vcn = i.cn; - - cn += `v${i.ver} "${vcn}"

-${urows} -${inforow("Build",i.vid)} -${inforow("Signal strength",i.wifi.signal +"% ("+ i.wifi.rssi, " dBm)")} -${inforow("Uptime",getRuntimeStr(i.uptime))} -${inforow("Free heap",heap," kB")} -${i.psram?inforow("Free PSRAM",(i.psram/1024).toFixed(1)," kB"):""} -${inforow("Estimated current",pwru)} -${inforow("Average FPS",i.leds.fps)} -${inforow("MAC address",i.mac)} -${inforow("Filesystem",i.fs.u + "/" + i.fs.t + " kB (" +Math.round(i.fs.u*100/i.fs.t) + "%)")} -${inforow("Environment",i.arch + " " + i.core + " (" + i.lwip + ")")} -
`; - gId('kv').innerHTML = cn; -} - -function populateSegments(s) -{ - var cn = ""; - segCount = 0; lowestUnused = 0; lSeg = 0; - - for (var y = 0; y < (s.seg||[]).length; y++) - { - segCount++; - - var inst=s.seg[y]; - let i = parseInt(inst.id); - powered[i] = inst.on; - if (i == lowestUnused) lowestUnused = i+1; - if (i > lSeg) lSeg = i; - - cn += `
- -
- ${inst.n ? inst.n : "Segment "+i} -
-
-
- -
- -
-
-
-
-
- - - - - - - - - - - -
Start LED${cfg.comp.seglen?"LED count":"Stop LED"}Offset
- - - - - - - - - - - -
GroupingSpacingApply
-
- - - -
-

`; - } - - gId('segcont').innerHTML = cn; - if (lowestUnused >= maxSeg) { - gId('segutil').innerHTML = 'Maximum number of segments reached.'; - noNewSegs = true; - } else if (noNewSegs) { - resetUtil(); - noNewSegs = false; - } - for (var i = 0; i <= lSeg; i++) { - updateLen(i); - updateTrail(gId(`seg${i}bri`)); - if (segCount < 2) gId(`segd${lSeg}`).style.display = "none"; - } - gId('rsbtn').style.display = (segCount > 1) ? "inline":"none"; -} - -function btype(b) -{ - switch (b) { - case 2: - case 32: return "ESP32"; - case 1: - case 82: return "ESP8266"; - } - return "?"; -} - -function bname(o) -{ - if (o.name=="WLED") return o.ip; - return o.name; -} - -function populateNodes(i,n) -{ - var cn=""; - var urows=""; - var nnodes = 0; - if (n.nodes) { - n.nodes.sort((a,b) => (a.name).localeCompare(b.name)); - for (var x=0;x${bname(o)}`; - urows += inforow(url,`${btype(o.type)}
${o.vid==0?"N/A":o.vid}`); - nnodes++; - } - } - } - if (i.ndc < 0) cn += `Instance List is disabled.`; - else if (nnodes == 0) cn += `No other instances found.`; - cn += ` - ${urows} - ${inforow("Current instance:",i.name)} -
`; - gId('kn').innerHTML = cn; -} - -function loadNodes() -{ - var url = (loc?`http://${locip}`:'') + '/json/nodes'; - fetch(url, { - method: 'get' - }) - .then(res => { - if (!res.ok) showToast('Could not load Node list!', true); - return res.json(); - }) - .then(json => { - clearErrorToast(); - populateNodes(lastinfo, json); - reconnectWS(); - }) - .catch(function (error) { - showToast(error, true); - console.log(error); - }); -} - -function populateEffects() -{ - var effects = eJson; - var html = ""; - - effects.shift(); //remove solid - for (let i = 0; i < effects.length; i++) effects[i] = {id: effects[i][0], name:effects[i][1]}; - effects.sort((a,b) => (a.name).localeCompare(b.name)); - - effects.unshift({ - "id": 0, - "name": "Solid", - }); - - for (let i = 0; i < effects.length; i++) { - html += generateListItemHtml( - 'fx', - effects[i].id, - effects[i].name, - 'setX' - ); - } - - gId('fxlist').innerHTML=html; -} - -function populatePalettes() -{ - var palettes = lJson; - palettes.shift(); //remove default - for (let i = 0; i < palettes.length; i++) { - palettes[i] = { - "id": palettes[i][0], - "name": palettes[i][1] - }; - } - palettes.sort((a,b) => (a.name).localeCompare(b.name)); - - palettes.unshift({ - "id": 0, - "name": "Default", - }); - - var html = ""; - for (let i = 0; i < palettes.length; i++) { - let previewCss = genPalPrevCss(palettes[i].id); - html += generateListItemHtml( - 'palette', - palettes[i].id, - palettes[i].name, - 'setPalette', - `
` - ); - } - - gId('pallist').innerHTML=html; -} - -function redrawPalPrev() -{ - let palettes = d.querySelectorAll('#pallist .lstI'); - for (let i = 0; i < palettes.length; i++) { - let id = palettes[i].dataset.id; - let lstPrev = palettes[i].querySelector('.lstIprev'); - if (lstPrev) { - lstPrev.style = genPalPrevCss(id); - } - } -} - -function genPalPrevCss(id) -{ - if (!palettesData) return; - - var paletteData = palettesData[id]; - var previewCss = ""; - - if (!paletteData) return 'display: none'; - - // We need at least two colors for a gradient - if (paletteData.length == 1) { - paletteData[1] = paletteData[0]; - if (Array.isArray(paletteData[1])) { - paletteData[1][0] = 255; - } - } - - var gradient = []; - for (let j = 0; j < paletteData.length; j++) { - const element = paletteData[j]; - let r; - let g; - let b; - let index = false; - if (Array.isArray(element)) { - index = element[0]/255*100; - r = element[1]; - g = element[2]; - b = element[3]; - } else if (element == 'r') { - r = Math.random() * 255; - g = Math.random() * 255; - b = Math.random() * 255; - } else { - if (selColors) { - let e = element[1] - 1; - if (Array.isArray(selColors[e])) { - r = selColors[e][0]; - g = selColors[e][1]; - b = selColors[e][2]; - } else { - r = (selColors[e]>>16) & 0xFF; - g = (selColors[e]>> 8) & 0xFF; - b = (selColors[e] ) & 0xFF; - } - } - } - if (index === false) { - index = j / paletteData.length * 100; - } - - gradient.push(`rgb(${r},${g},${b}) ${index}%`); - } - - return `background: linear-gradient(to right,${gradient.join()});`; -} - -function generateListItemHtml(listName, id, name, clickAction, extraHtml = '') -{ - return `
- -
- - ${name} - - ${extraHtml} -
-
`; -} - -function updateTrail(e, slidercol) -{ - if (e==null) return; - var max = e.hasAttribute('max') ? e.attributes.max.value : 255; - var perc = e.value * 100 / max; - perc = parseInt(perc); - if (perc < 50) perc += 2; - var scol; - switch (slidercol) { - case 1: scol = "#f00"; break; - case 2: scol = "#0f0"; break; - case 3: scol = "#00f"; break; - default: scol = "var(--c-f)"; - } - var val = `linear-gradient(90deg, ${scol} ${perc}%, var(--c-4) ${perc}%)`; - e.parentNode.getElementsByClassName('sliderdisplay')[0].style.background = val; - var bubble = e.parentNode.parentNode.getElementsByTagName('output')[0]; - if (bubble) bubble.innerHTML = e.value; -} - -function toggleBubble(e) -{ - var bubble = e.target.parentNode.parentNode.getElementsByTagName('output')[0]; - bubble.classList.toggle('sliderbubbleshow'); -} - -function updateLen(s) -{ - if (!gId(`seg${s}s`)) return; - var start = parseInt(gId(`seg${s}s`).value); - var stop = parseInt(gId(`seg${s}e`).value); - var len = stop - (cfg.comp.seglen?0:start); - var out = "(delete)"; - if (len > 1) { - out = `${len} LEDs`; - } else if (len == 1) { - out = "1 LED"; - } - - if (gId(`seg${s}grp`) != null) - { - var grp = parseInt(gId(`seg${s}grp`).value); - var spc = parseInt(gId(`seg${s}spc`).value); - if (grp == 0) grp = 1; - var virt = Math.ceil(len/(grp + spc)); - if (!isNaN(virt) && (grp > 1 || spc > 0)) out += ` (${virt} virtual)`; - } - - gId(`seg${s}len`).innerHTML = out; -} - -function updatePA(scrollto=false) -{ - var ps = gEBCN("seg"); - for (let i = 0; i < ps.length; i++) { - ps[i].style.backgroundColor = "var(--c-2)"; - } - ps = gEBCN("psts"); - for (let i = 0; i < ps.length; i++) { - ps[i].style.backgroundColor = "var(--c-2)"; - } - if (currentPreset > 0) { - var acv = gId(`p${currentPreset}o`); - if (acv && !expanded[currentPreset+100]) { - acv.style.background = "var(--c-6)"; - if (scrollto) { - // scroll selected preset into view (on WS refresh) - acv.scrollIntoView({ - behavior: 'smooth', - block: 'center', - }); - } - } - acv = gId(`p${currentPreset}qlb`); - if (acv) acv.style.background = "var(--c-6)"; - } -} - -function updateUI(scrollto=false) -{ -// noWS = (!ws || ws.readyState === WebSocket.CLOSED); - - gId('buttonPower').className = (isOn) ? "active":""; - gId('buttonNl').className = (nlA) ? "active":""; - gId('buttonSync').className = (syncSend) ? "active":""; - showNodes(); - - updateSelectedPalette(scrollto); - updateSelectedFx(scrollto); - - updateTrail(gId('sliderBri')); - updateTrail(gId('sliderSpeed')); - updateTrail(gId('sliderIntensity')); - updateTrail(gId('sliderW')); - if (isRgbw) gId('wwrap').style.display = "block"; - - updatePA(scrollto); - updateHex(); - updateRgb(); -} - -function updateSelectedPalette(scrollto=false) -{ - var parent = gId('pallist'); - var selPaletteInput = parent.querySelector(`input[name="palette"][value="${selectedPal}"]`); - if (selPaletteInput) selPaletteInput.checked = true; - - var selElement = parent.querySelector('.selected'); - if (selElement) selElement.classList.remove('selected'); - - var selectedPalette = parent.querySelector(`.lstI[data-id="${selectedPal}"]`); - if (selectedPalette) parent.querySelector(`.lstI[data-id="${selectedPal}"]`).classList.add('selected'); -} - -function updateSelectedFx(scrollto=false) -{ - var parent = gId('fxlist'); - var selEffectInput = parent.querySelector(`input[name="fx"][value="${selectedFx}"]`); - if (selEffectInput) selEffectInput.checked = true; - - var selElement = parent.querySelector('.selected'); - if (selElement) selElement.classList.remove('selected'); - - var selectedEffect = parent.querySelector(`.lstI[data-id="${selectedFx}"]`); - if (selectedEffect) selectedEffect.classList.add('selected'); -} - -function displayRover(i,s) -{ - gId('rover').style.transform = (i.live && s.lor == 0) ? "translateY(0px)":"translateY(100%)"; - var sour = i.lip ? i.lip:""; if (sour.length > 2) sour = " from " + sour; - gId('lv').innerHTML = `WLED is receiving live ${i.lm} data${sour}`; - gId('roverstar').style.display = (i.live && s.lor) ? "block":"none"; -} - -function cmpP(a, b) -{ - if (!a[1].n) return (a[0] > b[0]); - return a[1].n.localeCompare(b[1].n,undefined, {numeric: true}); -} - -function makeWS() { - if (ws) return; - ws = new WebSocket('ws://'+(loc?locip:window.location.hostname)+'/ws'); - ws.onmessage = function(event) { - var json = JSON.parse(event.data); - if (json.leds) return; //liveview packet - clearTimeout(jsonTimeout); - jsonTimeout = null; - lastUpdate = new Date(); - clearErrorToast(); - gId('connind').style.backgroundColor = "#079"; - // json object should contain json.info AND json.state (but may not) - var info = json.info; - if (info) { - var name = info.name; - lastinfo = info; - gId('namelabel').innerHTML = name; - //if (name === "Dinnerbone") d.documentElement.style.transform = "rotate(180deg)"; - if (info.live) name = "(Live) " + name; - if (loc) name = "(L) " + name; - d.title = name; - isRgbw = info.leds.wv; - ledCount = info.leds.count; - syncTglRecv = info.str; - maxSeg = info.leds.maxseg; - pmt = info.fs.pmt; - showNodes(); - if (isInfo) { - populateInfo(info); - } - } else - info = lastinfo; - var s = json.state ? json.state : json; - displayRover(info, s); - readState(s); - }; - ws.onclose = function(event) { - gId('connind').style.backgroundColor = "#831"; - ws = null; - } - ws.onopen = function(event) { - ws.send("{'v':true}"); - reqsLegal = true; - } -} - -function reconnectWS() {// Create UI update WS handler - if (!ws && lastinfo.ws > -1) setTimeout(makeWS,500); -} - -function readState(s,command=false) -{ - if (!s) return false; - - isOn = s.on; - gId('sliderBri').value= s.bri; - nlA = s.nl.on; - nlDur = s.nl.dur; - nlTar = s.nl.tbri; - nlFade = s.nl.fade; - syncSend = s.udpn.send; - if (s.pl<0) currentPreset = s.ps; - else currentPreset = s.pl; - gId('tt').value = s.transition/10; - - var selc=0; var ind=0; - populateSegments(s); - for (let i = 0; i < (s.seg||[]).length; i++) - { - if(s.seg[i].sel) {selc = ind; break;} ind++; - } - var i=s.seg[selc]; - if (!i) { - showToast('No Segments!', true); - updateUI(); - return; - } - - selColors = i.col; - var cd = gId('csl').children; - for (let e = cd.length-1; e >= 0; e--) - { - var r,g,b,w; - if (Array.isArray(i.col[e])) { - r = i.col[e][0]; - g = i.col[e][1]; - b = i.col[e][2]; - if (isRgbw) w = i.col[e][3]; - } else { - // unsigned long RGBW (@blazoncek v2 experimental API implementation) - r = (i.col[e]>>16) & 0xFF; - g = (i.col[e]>> 8) & 0xFF; - b = (i.col[e] ) & 0xFF; - if (isRgbw) w = (i.col[e] >> 24) & 0xFF; - } - cd[e].style.backgroundColor = "rgb(" + r + "," + g + "," + b + ")"; - if (isRgbw) whites[e] = parseInt(w); - selectSlot(csel); - } - gId('sliderW').value = whites[csel]; - - gId('sliderSpeed').value = i.sx; - gId('sliderIntensity').value = i.ix; - - if (s.error && s.error != 0) { - var errstr = ""; - switch (s.error) { - case 10: - errstr = "Could not mount filesystem!"; - break; - case 11: - errstr = "Not enough space to save preset!"; - break; - case 12: - errstr = "Preset not found."; - break; - case 13: - errstr = "Missing IR.json."; - break; - case 19: - errstr = "A filesystem error has occured."; - break; - } - showToast('Error ' + s.error + ": " + errstr, true); - } - - selectedPal = i.pal; - selectedFx = i.fx; - updateUI(true); -} - -var jsonTimeout; -var reqsLegal = false; - -function requestJson(command) -{ - gId('connind').style.backgroundColor = "#a90"; - if (command && !reqsLegal) return; //stop post requests from chrome onchange event on page restore - if (!jsonTimeout) jsonTimeout = setTimeout(showErrorToast, 3000); - if (!command) command = {'v':true}; - var req = null; - var url = (loc?`http://${locip}`:'') + '/json/state'; - var useWs = (ws && ws.readyState === WebSocket.OPEN); - var type = command ? 'post':'get'; -// if (command) -// { - command.v = true; // force complete /json/si API response - command.time = Math.floor(Date.now() / 1000); - var t = d.getElementById('tt'); - if (t.validity.valid) { - var tn = parseInt(t.value*10); - if (tn != tr) command.transition = tn; - } - req = JSON.stringify(command); - if (req.length > 1000) useWs = false; //do not send very long requests over websocket -// } - - if (useWs) { - - ws.send(req?req:'{"v":true}'); - return; - } - - fetch(url, { - method: type, - headers: { - "Content-type": "application/json; charset=UTF-8" - }, - body: req - }) - .then(res => { - if (!res.ok) showErrorToast(); - return res.json(); - }) - .then(json => { - clearTimeout(jsonTimeout); - jsonTimeout = null; - lastUpdate = new Date(); - clearErrorToast(); - gId('connind').style.backgroundColor = "#070"; - if (!json) { showToast('Empty response', true); return; } - if (json.success) return; - var s = json.state ? json.state : json; - readState(s); - reqsLegal = true; - reconnectWS(); - }) - .catch(function (error) { - showToast(error, true); - console.log(error); - }); -} - -function togglePower() -{ - isOn = !isOn; - var obj = {"on": isOn}; - requestJson(obj); -} - -function toggleNl() -{ - nlA = !nlA; - if (nlA) - { - showToast(`Timer active. Your light will turn ${nlTar > 0 ? "on":"off"} ${nlMode ? "over":"after"} ${nlDur} minutes.`); - } else { - showToast('Timer deactivated.'); - } - var obj = {"nl": {"on": nlA}}; - requestJson(obj); -} - -function toggleSync() -{ - syncSend = !syncSend; - if (syncSend) showToast('Other lights in the network will now sync to this one.'); - else showToast('This light and other lights in the network will no longer sync.'); - var obj = {"udpn": {"send": syncSend}}; - if (syncTglRecv) obj.udpn.recv = syncSend; - requestJson(obj); -} - -function toggleLiveview() -{ - isLv = !isLv; - gId('liveview').style.display = (isLv) ? "block":"none"; - var url = (loc?`http://${locip}`:'') + "/liveview"; - gId('liveview').src = (isLv) ? url:"about:blank"; - gId('buttonSr').className = (isLv) ? "active":""; - if (!isLv && ws && ws.readyState === WebSocket.OPEN) ws.send('{"lv":false}'); - size(); -} - -function toggleInfo() -{ - if (isNodes) toggleNodes(); - isInfo = !isInfo; - if (isInfo) loadInfo(); - gId('info').style.transform = (isInfo) ? "translateY(0px)":"translateY(100%)"; - gId('buttonI').className = (isInfo) ? "active":""; -} - -function toggleNodes() -{ - if (isInfo) toggleInfo(); - isNodes = !isNodes; - if (isNodes) loadNodes(); - gId('nodes').style.transform = (isNodes) ? "translateY(0px)":"translateY(100%)"; - gId('buttonNodes').className = (isNodes) ? "active":""; -} - -function makeSeg() -{ - var ns = 0; - if (lowestUnused > 0) { - var pend = parseInt(gId(`seg${lowestUnused -1}e`).value,10) + (cfg.comp.seglen?parseInt(gId(`seg${lowestUnused -1}s`).value,10):0); - if (pend < ledCount) ns = pend; - } - var cn = `
-
-
- - - - - - - - - - -
Start LED${cfg.comp.seglen?"LED count":"Stop LED"}
-
${ledCount - ns} LEDs
-
-
-
`; - gId('segutil').innerHTML = cn; -} - -function resetUtil() -{ - gId('segutil').innerHTML = '
'; - for (var i=0; i${n}` - } -} - -function refreshPlE(p) { - var plEDiv = gId(`ple${p}`); - if (!plEDiv) return; - var content = "
Playlist entries
"; - for (var i = 0; i < plJson[p].ps.length; i++) { - content += makePlEntry(p,i); - } - content += `
`; - plEDiv.innerHTML = content; - var dels = plEDiv.getElementsByClassName("btn-pl-del"); - if (dels.length < 2 && p > 0) dels[0].style.display = "none"; - - var sels = gId(`seg${p+100}`).getElementsByClassName("sel"); - for (var i of sels) { - if (i.dataset.val) { - if (parseInt(i.dataset.val) > 0) i.value = i.dataset.val; - else plJson[p].ps[i.dataset.index] = parseInt(i.value); - } - } -} - -//p: preset ID, i: ps index -function addPl(p,i) { - plJson[p].ps.splice(i+1,0,0); - plJson[p].dur.splice(i+1,0,plJson[p].dur[i]); - plJson[p].transition.splice(i+1,0,plJson[p].transition[i]); - refreshPlE(p); -} - -function delPl(p,i) { - if (plJson[p].ps.length < 2) {if (p == 0) resetPUtil(); return;} - plJson[p].ps.splice(i,1); - plJson[p].dur.splice(i,1); - plJson[p].transition.splice(i,1); - refreshPlE(p); -} - -function plePs(p,i,field) { - plJson[p].ps[i] = parseInt(field.value); -} - -function pleDur(p,i,field) { - if (field.validity.valid) - plJson[p].dur[i] = Math.floor(field.value*10); -} - -function pleTr(p,i,field) { - if (field.validity.valid) - plJson[p].transition[i] = Math.floor(field.value*10); -} - -function plR(p) { - var pl = plJson[p]; - pl.r = gId(`pl${p}rtgl`).checked; - if (gId(`pl${p}rptgl`).checked) { //infinite - pl.repeat = 0; - delete pl.end; - gId(`pl${p}o1`).style.display = "none"; - } else { - pl.repeat = parseInt(gId(`pl${p}rp`).value); - pl.end = parseInt(gId(`pl${p}selEnd`).value); - gId(`pl${p}o1`).style.display = "block"; - } -} - -function makeP(i,pl) { - var content = ""; - if (pl) { - var rep = plJson[i].repeat ? plJson[i].repeat : 0; - content = -`
- -
-
Repeat 0?rep:1}> times
-
End preset:
-
-
-
`; - } else - content = -` -`; - - return `
-
Quick load label:
-
(leave empty for no Quick load button)
-
-
-
-
- API command
- -
-
- ${content} -
-
Save to ID 0)?i:getLowestUnusedP()}>
-
- - ${(i>0)?' -
-
-${(i>0)? ('
ID ' +i+ '
'):""}`; -} - -function makePUtil() -{ - gId('putil').innerHTML = `
${makeP(0)}
`; - for (var i=0; i -
- - - - - - - - - - - - - - - -
- -
DurationTransition#${i+1}
ss
-`; -} - -function makePlUtil() -{ - if (pNum < 2) { - showToast("You need at least 2 presets to make a playlist!"); //return; - } - if (plJson[0].transition[0] < 0) plJson[0].transition[0] = tr; - gId('putil').innerHTML = `
${makeP(0,true)}
`; - refreshPlE(0); -} - -function resetPUtil() -{ - var cn = ``+ - `
`; - gId('putil').innerHTML = cn; -} - -function tglCs(i) -{ - var pss = gId(`p${i}cstgl`).checked; - gId(`p${i}o1`).style.display = pss? "block" : "none"; - gId(`p${i}o2`).style.display = !pss? "block" : "none"; -} - -function selSegEx(s) -{ - var obj = {"seg":[]}; - for (let i=0; i<=lSeg; i++) obj.seg.push({"sel":(i==s)?true:false}); - requestJson(obj); -} - -function selSeg(s) -{ - var sel = gId(`seg${s}sel`).checked; - var obj = {"seg": {"id": s, "sel": sel}}; - requestJson(obj); -} - -function setSeg(s) -{ - var name = gId(`seg${s}t`).value; - var start = parseInt(gId(`seg${s}s`).value); - var stop = parseInt(gId(`seg${s}e`).value); - if (stop == 0) {delSeg(s); return;} - var obj = {"seg": {"id": s, "n": name, "start": start, "stop": (cfg.comp.seglen?start:0)+stop}}; - if (gId(`seg${s}grp`)) - { - var grp = parseInt(gId(`seg${s}grp`).value); - var spc = parseInt(gId(`seg${s}spc`).value); - var ofs = parseInt(gId(`seg${s}of` ).value); - obj.seg.grp = grp; - obj.seg.spc = spc; - obj.seg.of = ofs; - } - requestJson(obj); -} - -function delSeg(s) -{ - if (segCount < 2) { - showToast("You need to have multiple segments to delete one!"); - return; - } - expanded[s] = false; - segCount--; - var obj = {"seg": {"id": s, "stop": 0}}; - requestJson(obj); -} - -function setRev(s) -{ - var rev = gId(`seg${s}rev`).checked; - var obj = {"seg": {"id": s, "rev": rev}}; - requestJson(obj); -} - -function setMi(s) -{ - var mi = gId(`seg${s}mi`).checked; - var obj = {"seg": {"id": s, "mi": mi}}; - requestJson(obj); -} - -function setSegPwr(s) -{ - var obj = {"seg": {"id": s, "on": !powered[s]}}; - requestJson(obj); -} - -function setSegBri(s) -{ - var obj = {"seg": {"id": s, "bri": parseInt(gId(`seg${s}bri`).value)}}; - requestJson(obj); -} - -function setX(ind = null) -{ - if (ind === null) { - ind = parseInt(d.querySelector('#fxlist input[name="fx"]:checked').value); - } else { - d.querySelector(`#fxlist input[name="fx"][value="${ind}"]`).checked = true; - } - var selElement = d.querySelector('#fxlist .selected'); - if (selElement) selElement.classList.remove('selected'); - - d.querySelector(`#fxlist .lstI[data-id="${ind}"]`).classList.add('selected'); - - var obj = {"seg": {"fx": parseInt(ind)}}; - requestJson(obj); -} - -function setPalette(paletteId = null) -{ - if (paletteId === null) { - paletteId = parseInt(d.querySelector('#pallist input[name="palette"]:checked').value); - } else { - d.querySelector(`#pallist input[name="palette"][value="${paletteId}`).checked = true; - } - var selElement = d.querySelector('#pallist .selected'); - if (selElement) { - selElement.classList.remove('selected') - } - d.querySelector(`#pallist .lstI[data-id="${paletteId}"]`).classList.add('selected'); - var obj = {"seg": {"pal": paletteId}}; - requestJson(obj); -} - -function setBri() -{ - var obj = {"bri": parseInt(gId('sliderBri').value)}; - requestJson(obj); -} - -function setSpeed() -{ - var obj = {"seg": {"sx": parseInt(gId('sliderSpeed').value)}}; - requestJson(obj); -} - -function setIntensity() -{ - var obj = {"seg": {"ix": parseInt(gId('sliderIntensity').value)}}; - requestJson(obj); -} - -function setLor(i) -{ - var obj = {"lor": i}; - requestJson(obj); -} - -function setPreset(i) -{ - var obj = {"ps": i}; - if (isPlaylist(i)) obj.on = true; - showToast("Loading preset " + pName(i) +" (" + i + ")"); - requestJson(obj); -} - -function saveP(i,pl) -{ - pI = parseInt(gId(`p${i}id`).value); - if (!pI || pI < 1) pI = (i>0) ? i : getLowestUnusedP(); - pN = gId(`p${i}txt`).value; - if (pN == "") pN = (pl?"Playlist ":"Preset ") + pI; - var obj = {}; - if (!gId(`p${i}cstgl`).checked) { - var raw = gId(`p${i}api`).value; - try { - obj = JSON.parse(raw); - } catch (e) { - obj.win = raw; - if (raw.length < 2) { - gId(`p${i}warn`).innerHTML = "⚠ Please enter your API command first"; - return; - } else if (raw.indexOf('{') > -1) { - gId(`p${i}warn`).innerHTML = "⚠ Syntax error in custom JSON API command"; - return; - } else if (raw.indexOf("Please") == 0) { - gId(`p${i}warn`).innerHTML = "⚠ Please refresh the page before modifying this preset"; - return; - } - } - obj.o = true; - } else { - if (pl) { - obj.playlist = plJson[i]; - obj.o = true; - } else { - obj.ib = gId(`p${i}ibtgl`).checked; - obj.sb = gId(`p${i}sbtgl`).checked; - } - } - - obj.psave = pI; obj.n = pN; - var pQN = gId(`p${i}ql`).value; - if (pQN.length > 0) obj.ql = pQN; - - showToast("Saving " + pN +" (" + pI + ")"); - requestJson(obj); - if (obj.o) { - pJson[pI] = obj; - delete pJson[pI].psave; - delete pJson[pI].o; - delete pJson[pI].v; - delete pJson[pI].time; - } else { - pJson[pI] = {"n":pN, "win":"Please refresh the page to see this newly saved command."}; - if (obj.win) pJson[pI].win = obj.win; - if (obj.ql) pJson[pI].ql = obj.ql; - } - populatePresets(); - resetPUtil(); -} - -function testPl(i,bt) { - if (bt.dataset.test == 1) { - bt.dataset.test = 0; - bt.innerHTML = "Test"; - stopPl(); - return; - } - bt.dataset.test = 1; - bt.innerHTML = "Stop"; - var obj = {}; - obj.playlist = plJson[i]; - requestJson(obj); -} - -function stopPl() { - requestJson({playlist:{}}) -} - -function delP(i) { - var bt = gId(`p${i}del`); - if (bt.dataset.cnf == 1) { - var obj = {"pdel": i}; - requestJson(obj); - delete pJson[i]; - populatePresets(); - } else { - bt.style.color = "#f00"; - bt.innerHTML = "Confirm delete"; - bt.dataset.cnf = 1; - } -} - -function selectSlot(b) -{ - csel = b; - var cd = gId('csl').children; - for (let i = 0; i < cd.length; i++) { - cd[i].style.border="2px solid var(--c-e)"; - cd[i].style.margin="5px"; - cd[i].style.width="42px"; - } - cd[csel].style.border="5px solid var(--c-e)"; - cd[csel].style.margin="2px"; - cd[csel].style.width="50px"; - cpick.color.set(cd[csel].style.backgroundColor); - gId('sliderW').value = whites[csel]; - updateTrail(gId('sliderW')); - updateHex(); - updateRgb(); - redrawPalPrev(); -} - -var lasth = 0; -function pC(col) -{ - if (col == "rnd") { - col = {h: 0, s: 0, v: 100}; - col.s = Math.floor((Math.random() * 50) + 50); - do { - col.h = Math.floor(Math.random() * 360); - } while (Math.abs(col.h - lasth) < 50); - lasth = col.h; - } - cpick.color.set(col); - setColor(0); -} - -function updateRgb() -{ - var col = cpick.color.rgb; - var s = gId('sliderR'); - s.value = col.r; updateTrail(s,1); - s = gId('sliderG'); - s.value = col.g; updateTrail(s,2); - s = gId('sliderB'); - s.value = col.b; updateTrail(s,3); -} - -function updateHex() -{ - var str = cpick.color.hexString; - str = str.substring(1); - var w = whites[csel]; - if (w > 0) str += w.toString(16); - gId('hexc').value = str; - gId('hexcnf').style.backgroundColor = "var(--c-3)"; -} - -function hexEnter() -{ - gId('hexcnf').style.backgroundColor = "var(--c-6)"; - if(event.keyCode == 13) fromHex(); -} - -function fromHex() -{ - var str = gId('hexc').value; - whites[csel] = parseInt(str.substring(6), 16); - try { - cpick.color.set("#" + str.substring(0,6)); - } catch (e) { - cpick.color.set("#ffaa00"); - } - if (isNaN(whites[csel])) whites[csel] = 0; - setColor(2); -} - -function fromRgb() -{ - var r = gId('sliderR').value; - var g = gId('sliderG').value; - var b = gId('sliderB').value; - cpick.color.set(`rgb(${r},${g},${b})`); - setColor(0); -} - -function setColor(sr) -{ - var cd = gId('csl').children; - if (sr == 1 && cd[csel].style.backgroundColor == 'rgb(0, 0, 0)') cpick.color.setChannel('hsv', 'v', 100); - cd[csel].style.backgroundColor = cpick.color.rgbString; - if (sr != 2) whites[csel] = gId('sliderW').value; - var col = cpick.color.rgb; - var obj = {"seg": {"col": [[col.r, col.g, col.b, whites[csel]],[],[]]}}; - if (csel == 1) { - obj = {"seg": {"col": [[],[col.r, col.g, col.b, whites[csel]],[]]}}; - } else if (csel == 2) { - obj = {"seg": {"col": [[],[],[col.r, col.g, col.b, whites[csel]]]}}; - } - updateHex(); - updateRgb(); - requestJson(obj); -} - -var hc = 0; -setInterval(function(){if (!isInfo) return; hc+=18; if (hc>300) hc=0; if (hc>200)hc=306; if (hc==144) hc+=36; if (hc==108) hc+=18; -gId('heart').style.color = `hsl(${hc}, 100%, 50%)`;}, 910); - -function openGH() { window.open("https://github.com/Aircoookie/WLED/wiki"); } - -var cnfr = false; -function cnfReset() -{ - if (!cnfr) { - var bt = gId('resetbtn'); - bt.style.color = "#f00"; - bt.innerHTML = "Confirm Reboot"; - cnfr = true; return; - } - window.location.href = "/reset"; -} - -var cnfrS = false; -function rSegs() -{ - var bt = gId('rsbtn'); - if (!cnfrS) { - bt.style.color = "#f00"; - bt.innerHTML = "Confirm reset"; - cnfrS = true; return; - } - cnfrS = false; - bt.style.color = "#fff"; - bt.innerHTML = "Reset segments"; - var obj = {"seg":[{"start":0,"stop":ledCount,"sel":true}]}; - for (let i=1; i<=lSeg; i++) obj.seg.push({"stop":0}); - requestJson(obj); -} - -function loadPalettesData(callback = null) -{ - if (palettesData) return; - const lsKey = "wledPalx"; - var palettesDataJson = localStorage.getItem(lsKey); - if (palettesDataJson) { - try { - palettesDataJson = JSON.parse(palettesDataJson); - if (palettesDataJson && palettesDataJson.vid == lastinfo.vid) { - palettesData = palettesDataJson.p; - //redrawPalPrev() //? - if (callback) callback(); - return; - } - } catch (e) {} - } - - palettesData = {}; - getPalettesData(0, function() { - localStorage.setItem(lsKey, JSON.stringify({ - p: palettesData, - vid: lastinfo.vid - })); - redrawPalPrev(); - if (callback) setTimeout(callback, 99); //go on to connect websocket - }); -} - -function getPalettesData(page, callback) -{ - var url = (loc?`http://${locip}`:'') + `/json/palx?page=${page}`; - - fetch(url, { - method: 'get', - headers: { - "Content-type": "application/json; charset=UTF-8" - } - }) - .then(res => { - if (!res.ok) showErrorToast(); - return res.json(); - }) - .then(json => { - palettesData = Object.assign({}, palettesData, json.p); - if (page < json.m) setTimeout(function() { getPalettesData(page + 1, callback); }, 50); - else callback(); - }) - .catch(function(error) { - showToast(error, true); - console.log(error); - }); -} - -function search(f,l=null) -{ - f.nextElementSibling.style.display=(f.value!=='')?'block':'none'; - if (!l) return; - var el = gId(l).querySelectorAll('.lstI'); - for (i = 0; i < el.length; i++) { - var it = el[i]; - var itT = it.querySelector('.lstIname').innerText.toUpperCase(); - it.style.display = itT.indexOf(f.value.toUpperCase())>-1?'':'none'; - } -} - -function clean(c) -{ - c.style.display='none'; - var i=c.previousElementSibling; - i.value=''; - i.focus(); - i.dispatchEvent(new Event('input')); -} - -//make sure "dur" and "transition" are arrays with at least the length of "ps" -function formatArr(pl) { - var l = pl.ps.length; - if (!Array.isArray(pl.dur)) { - var v = pl.dur; - if (isNaN(v)) v = 100; - pl.dur = [v]; - } - var l2 = pl.dur.length; - if (l2 < l) - { - for (var i = 0; i < l - l2; i++) - pl.dur.push(pl.dur[l2-1]); - } - - if (!Array.isArray(pl.transition)) { - var v = pl.transition; - if (isNaN(v)) v = tr; - pl.transition = [v]; - } - var l2 = pl.transition.length; - if (l2 < l) - { - for (var i = 0; i < l - l2; i++) - pl.transition.push(pl.transition[l2-1]); - } -} - -function expand(i,a) -{ - var seg = gId('seg' +i); - if (!a) expanded[i] = !expanded[i]; - seg.style.display = (expanded[i]) ? "block":"none"; - gId('sege' +i).style.transform = (expanded[i]) ? "rotate(180deg)":"rotate(0deg)"; - - if (expanded[i]) gId(i<100?'segutil':'putil').classList.remove("staytop"); - else gId(i<100?'segutil':'putil').classList.add("staytop"); - - if (i >= 100) { - var p = i-100; - gId(`p${p}o`).style.background = (expanded[i] || p != currentPreset)?"var(--c-2)":"var(--c-6)"; - - if (seg.innerHTML === "") { - if (isPlaylist(p)) { - plJson[p] = pJson[p].playlist; - //make sure all keys are present in plJson[p] - formatArr(plJson[p]); - if (isNaN(plJson[p].repeat)) plJson[p].repeat = 0; - if (!plJson[p].r) plJson[p].r = false; - if (isNaN(plJson[p].end)) plJson[p].end = 0; - - seg.innerHTML = makeP(p,true); - refreshPlE(p); - } else { - seg.innerHTML = makeP(p); - } - - var papi = papiVal(p); - gId(`p${p}api`).value = papi; - if (papi.indexOf("Please") == 0) gId(`p${p}cstgl`).checked = true; - tglCs(p); - } - } - - seg.parentElement.scrollIntoView({ - behavior: 'smooth', - block: (expanded[i]?'start':'center'), - }); -} - -function unfocusSliders() -{ - gId("sliderBri").blur(); - gId("sliderSpeed").blur(); - gId("sliderIntensity").blur(); -} - -//sliding UI -const _C = d.querySelector('.container'), N = 4; - -let iSlide = 0, x0 = null, scrollS = 0, locked = false, w; - -function unify(e) { return e.changedTouches ? e.changedTouches[0] : e; } - -function hasIroClass(classList) -{ - for (var i = 0; i < classList.length; i++) { - var element = classList[i]; - if (element.startsWith('Iro')) return true; - } - return false; -} - -function lock(e) -{ - if (pcMode) return; - var l = e.target.classList; - var pl = e.target.parentElement.classList; - - if (l.contains('noslide') || hasIroClass(l) || hasIroClass(pl)) return; - - x0 = unify(e).clientX; - scrollS = gEBCN("tabcontent")[iSlide].scrollTop; - - _C.classList.toggle('smooth', !(locked = true)); -} - -function move(e) -{ - if(!locked || pcMode) return; - var clientX = unify(e).clientX; - var dx = clientX - x0; - var s = Math.sign(dx); - var f = +(s*dx/w).toFixed(2); - - if((clientX != 0) && - (iSlide > 0 || s < 0) && (iSlide < N - 1 || s > 0) && - f > 0.12 && - gEBCN("tabcontent")[iSlide].scrollTop == scrollS) - { - _C.style.setProperty('--i', iSlide -= s); - f = 1 - f; - updateTablinks(iSlide); - } - _C.style.setProperty('--f', f); - _C.classList.toggle('smooth', !(locked = false)); - x0 = null; -} - -function showNodes() { - gId('buttonNodes').style.display = (lastinfo.ndc > 0 && (w > 797 || (w > 539 && w < 720))) ? "block":"none"; -} - -function size() -{ - w = window.innerWidth; - showNodes(); - var h = gId('top').clientHeight; - sCol('--th', h + "px"); - sCol('--bh', gId('bot').clientHeight + "px"); - if (isLv) h -= 4; - sCol('--tp', h + "px"); - togglePcMode(); -} - -function togglePcMode(fromB = false) -{ - if (fromB) { - pcModeA = !pcModeA; - localStorage.setItem('pcm', pcModeA); - pcMode = pcModeA; - } - if (w < 1250 && !pcMode) return; - if (!fromB && ((w < 1250 && lastw < 1250) || (w >= 1250 && lastw >= 1250))) return; - openTab(0, true); - if (w < 1250) {pcMode = false;} - else if (pcModeA && !fromB) pcMode = pcModeA; - updateTablinks(0); - gId('buttonPcm').className = (pcMode) ? "active":""; - gId('bot').style.height = (pcMode && !cfg.comp.pcmbot) ? "0":"auto"; - sCol('--bh', gId('bot').clientHeight + "px"); - _C.style.width = (pcMode)?'100%':'400%'; - lastw = w; -} - -function isObject(item) -{ - return (item && typeof item === 'object' && !Array.isArray(item)); -} - -function mergeDeep(target, ...sources) -{ - if (!sources.length) return target; - const source = sources.shift(); - - if (isObject(target) && isObject(source)) { - for (const key in source) { - if (isObject(source[key])) { - if (!target[key]) Object.assign(target, { [key]: {} }); - mergeDeep(target[key], source[key]); - } else { - Object.assign(target, { [key]: source[key] }); - } - } - } - return mergeDeep(target, ...sources); -} - -size(); -_C.style.setProperty('--n', N); - -window.addEventListener('resize', size, false); - -_C.addEventListener('mousedown', lock, false); -_C.addEventListener('touchstart', lock, false); - -_C.addEventListener('mouseout', move, false); -_C.addEventListener('mouseup', move, false); -_C.addEventListener('touchend', move, false); +//page js +var loc = false, locip; +var noNewSegs = false; +var isOn = false, nlA = false, isLv = false, isInfo = false, isNodes = false, syncSend = false, syncTglRecv = true, isRgbw = false; +var whites = [0,0,0]; +var selColors; +var expanded = [false]; +var powered = [true]; +var nlDur = 60, nlTar = 0; +var nlMode = false; +var selectedFx = 0; +var selectedPal = 0; +var csel = 0; +var currentPreset = -1; +var lastUpdate = 0; +var segCount = 0, ledCount = 0, lowestUnused = 0, maxSeg = 0, lSeg = 0; +var pcMode = false, pcModeA = false, lastw = 0; +var tr = 7; +var d = document; +const ranges = RangeTouch.setup('input[type="range"]', {}); +var palettesData; +var pJson = {}, eJson = {}, lJson = {}; +var pN = "", pI = 0, pNum = 0; +var pmt = 1, pmtLS = 0, pmtLast = 0; +var lastinfo = {}; +var ws; +var cfg = { + theme:{base:"dark", bg:{url:""}, alpha:{bg:0.6,tab:0.8}, color:{bg:""}}, + comp :{colors:{picker: true, rgb: false, quick: true, hex: false}, labels:true, pcmbot:false, pid:true, seglen:false} +}; +var hol = [ + [0,11,24,4,"https://aircoookie.github.io/xmas.png"], // christmas + [0,2,17,1,"https://images.alphacoders.com/491/491123.jpg"], // st. Patrick's day + [2022,3,17,2,"https://aircoookie.github.io/easter.png"], + [2023,3,9,2,"https://aircoookie.github.io/easter.png"], + [2024,2,31,2,"https://aircoookie.github.io/easter.png"] +]; + +var cpick = new iro.ColorPicker("#picker", { + width: 260, + wheelLightness: false, + wheelAngle: 90, + layout: [ + { + component: iro.ui.Wheel, + options: {} + }, + { + component: iro.ui.Slider, + options: { sliderType: 'value' } + }, + { + component: iro.ui.Slider, + options: { + sliderType: 'kelvin', + minTemperature: 2100, + maxTemperature: 10000 + } + } + ] +}); + +function handleVisibilityChange() {if (!d.hidden && new Date () - lastUpdate > 3000) requestJson({'v':true},false);} +function sCol(na, col) {d.documentElement.style.setProperty(na, col);} +function gId(c) {return d.getElementById(c);} +function gEBCN(c) {return d.getElementsByClassName(c);} + +function applyCfg() +{ + cTheme(cfg.theme.base === "light"); + var bg = cfg.theme.color.bg; + if (bg) sCol('--c-1', bg); + var ccfg = cfg.comp.colors; + gId('hexw').style.display = ccfg.hex ? "block":"none"; + gId('picker').style.display = ccfg.picker ? "block":"none"; + gId('rgbwrap').style.display = ccfg.rgb ? "block":"none"; + gId('qcs-w').style.display = ccfg.quick ? "block":"none"; + var l = cfg.comp.labels; + var e = d.querySelectorAll('.tab-label'); + for (var i=0; i=hs && today { + var a = parseFloat(cfg.theme.alpha.bg); + if (isNaN(a)) a = 0.6; + bg.style.opacity = a; + bg.style.backgroundImage = `url(${img.src})`; + img = null; + }); +} + +function loadSkinCSS(cId) +{ + if (!gId(cId)) // check if element exists + { + var h = document.getElementsByTagName('head')[0]; + var l = document.createElement('link'); + l.id = cId; + l.rel = 'stylesheet'; + l.type = 'text/css'; + l.href = (loc?`http://${locip}`:'.') + '/skin.css'; + l.media = 'all'; + h.appendChild(l); + } +} + +function onLoad() +{ + if (window.location.protocol == "file:") { + loc = true; + locip = localStorage.getItem('locIp'); + if (!locip) + { + locip = prompt("File Mode. Please enter WLED IP!"); + localStorage.setItem('locIp', locip); + } + } + var sett = localStorage.getItem('wledUiCfg'); + if (sett) cfg = mergeDeep(cfg, JSON.parse(sett)); + + resetPUtil(); + + applyCfg(); + if (cfg.theme.bg.url=="" || cfg.theme.bg.url === "https://picsum.photos/1920/1080") { + fetch((loc?`http://${locip}`:'.') + "/holidays.json", { + method: 'get' + }) + .then(res => { + return res.json(); + }) + .then(json => { + if (Array.isArray(json)) hol = json; + //TODO: do some parsing first + }) + .catch(function(error){ + console.log("holidays.json does not contain array of holidays. Defaults loaded."); + }) + .finally(function(){ + loadBg(cfg.theme.bg.url); + }); + } else + loadBg(cfg.theme.bg.url); + loadSkinCSS('skinCss'); + + var cd = gId('csl').children; + for (var i = 0; i < cd.length; i++) cd[i].style.backgroundColor = "rgb(0, 0, 0)"; + selectSlot(0); + updateTablinks(0); + cpick.on("input:end", function() { + setColor(1); + }); + pmtLS = localStorage.getItem('wledPmt'); + + // Load initial data + loadPalettes(function() { + loadPalettesData(); + loadFX(function() { + loadPresets(function() { + makeWS(); +// loadInfo(function() { +// requestJson({'v':true}); +// }); + }); + }); + }); + resetUtil(); + updateUI(true); + + d.addEventListener("visibilitychange", handleVisibilityChange, false); + size(); + gId("cv").style.opacity=0; + if (localStorage.getItem('pcm') == "true") togglePcMode(true); + var sls = d.querySelectorAll('input[type="range"]'); + for (var sl of sls) { + //sl.addEventListener('input', updateBubble, true); + sl.addEventListener('touchstart', toggleBubble); + sl.addEventListener('touchend', toggleBubble); + } + + // Check for UI update WS handler + if (!ws || ws.readyState !== WebSocket.OPEN) { + setTimeout(function(){loadInfo(function(){requestJson({'v':true});})},250) + } +} + +function updateTablinks(tabI) +{ + var tablinks = gEBCN("tablinks"); + for (var i of tablinks) i.className = i.className.replace(" active", ""); + if (pcMode) return; + tablinks[tabI].className += " active"; +} + +function openTab(tabI, force = false) +{ + if (pcMode && !force) return; + iSlide = tabI; + _C.classList.toggle('smooth', false); + _C.style.setProperty('--i', iSlide); + updateTablinks(tabI); +} + +var timeout; +function showToast(text, error = false) +{ + if (error) gId('connind').style.backgroundColor = "#831"; + var x = gId("toast"); + x.innerHTML = text; + x.className = error ? "error":"show"; + clearTimeout(timeout); + x.style.animation = 'none'; + timeout = setTimeout(function(){ x.className = x.className.replace("show", ""); }, 2900); +} + +function showErrorToast() +{ + if (ws && ws.readyState === WebSocket.OPEN) { + ws.close(); + ws = null; + setTimeout(makeWS,500); + } + showToast('Connection to light failed!', true); +} + +function clearErrorToast() {gId("toast").className = gId("toast").className.replace("error", "");} + +function getRuntimeStr(rt) +{ + var t = parseInt(rt); + var days = Math.floor(t/86400); + var hrs = Math.floor((t - days*86400)/3600); + var mins = Math.floor((t - days*86400 - hrs*3600)/60); + var str = days ? (days + " " + (days == 1 ? "day" : "days") + ", ") : ""; + str += (hrs || days) ? (hrs + " " + (hrs == 1 ? "hour" : "hours")) : ""; + if (!days && hrs) str += ", "; + if (t > 59 && !days) str += mins + " min"; + if (t < 3600 && t > 59) str += ", "; + if (t < 3600) str += (t - mins*60) + " sec"; + return str; +} + +function inforow(key, val, unit = "") +{ + return `${key}${val}${unit}`; +} + +function getLowestUnusedP() +{ + var l = 1; + for (var key in pJson) if (key == l) l++; + if (l > 250) l = 250; + return l; +} + +function checkUsed(i) +{ + var id = gId(`p${i}id`).value; + if (pJson[id] && (i == 0 || id != i)) + gId(`p${i}warn`).innerHTML = `⚠ Overwriting ${pName(id)}!`; + else + gId(`p${i}warn`).innerHTML = ""; +} + +function pName(i) +{ + var n = "Preset " + i; + if (pJson && pJson[i] && pJson[i].n) n = pJson[i].n; + return n; +} + +function isPlaylist(i) +{ + return pJson[i].playlist && pJson[i].playlist.ps; +} + +function papiVal(i) +{ + if (!pJson || !pJson[i]) return ""; + var o = Object.assign({},pJson[i]); + if (o.win) return o.win; + delete o.n; delete o.p; delete o.ql; + return JSON.stringify(o); +} + +function qlName(i) +{ + if (!pJson || !pJson[i] || !pJson[i].ql) return ""; + return pJson[i].ql; +} + +function cpBck() +{ + var copyText = gId("bck"); + + copyText.select(); + copyText.setSelectionRange(0, 999999); + d.execCommand("copy"); + showToast("Copied to clipboard!"); +} + +function presetError(empty) +{ + var hasBackup = false; var bckstr = ""; + try { + bckstr = localStorage.getItem("wledP"); + if (bckstr.length > 10) hasBackup = true; + } catch (e) {} + + var cn = `
`; + if (empty) + cn += `You have no presets yet!`; + else + cn += `Sorry, there was an issue loading your presets!`; + + if (hasBackup) { + cn += `

`; + if (empty) + cn += `However, there is backup preset data of a previous installation available.
+ (Saving a preset will hide this and overwrite the backup)`; + else + cn += `Here is a backup of the last known good state:`; + cn += `
+ `; + } + cn += `
`; + gId('pcont').innerHTML = cn; + if (hasBackup) gId('bck').value = bckstr; +} + +function loadPresets(callback = null) +{ + //1st boot (because there is a callback) + if (callback && pmt == pmtLS && pmt > 0) { + //we have a copy of the presets in local storage and don't need to fetch another one + populatePresets(true); + pmtLast = pmt; + callback(); + return; + } + + //afterwards + if (!callback && pmt == pmtLast) return; + + pmtLast = pmt; + + var url = (loc?`http://${locip}`:'') + '/presets.json'; + + fetch(url, { + method: 'get' + }) + .then(res => { + if (!res.ok) showErrorToast(); + return res.json(); + }) + .then(json => { + clearErrorToast(); + pJson = json; + populatePresets(); + reconnectWS(); +// if (callback) callback(); + }) + .catch(function (error) { + showToast(error, true); + console.log(error); + presetError(false); + //if (callback) callback(); + }) + .finally(() => { + if (callback) setTimeout(callback,99); + }); +} + +function loadPalettes(callback = null) +{ + var url = (loc?`http://${locip}`:'') + '/json/palettes'; + + fetch(url, { + method: 'get' + }) + .then(res => { + if (!res.ok) showErrorToast(); + return res.json(); + }) + .then(json => { + clearErrorToast(); + lJson = Object.entries(json); + populatePalettes(); + reconnectWS(); + if (callback) callback(); + }) + .catch(function (error) { + showToast(error, true); + presetError(false); + if (callback) callback(); + }); +} + +function loadFX(callback = null) +{ + var url = (loc?`http://${locip}`:'') + '/json/effects'; + + fetch(url, { + method: 'get' + }) + .then(res => { + if (!res.ok) showErrorToast(); + return res.json(); + }) + .then(json => { + clearErrorToast(); + eJson = Object.entries(json); + populateEffects(); + if (callback) callback(); + }) + .catch(function (error) { + showToast(error, true); + presetError(false); + if (callback) callback(); + }); +} + +var pQL = []; +function populateQL() +{ + var cn = ""; + if (pQL.length > 0) { + cn += `

Quick load

`; + + var it = 0; + for (var key of (pQL||[])) { + cn += ``; + it++; + if (it > 4) { + it = 0; + cn += '
'; + } + } + if (it != 0) cn+= '
'; + } + gId('pql').innerHTML = cn; +} + +function populatePresets(fromls) +{ + if (fromls) pJson = JSON.parse(localStorage.getItem("wledP")); + if (!pJson) {pJson={};return}; + delete pJson["0"]; + var cn = `

All presets

`; + var arr = Object.entries(pJson); + arr.sort(cmpP); + pQL = []; + var is = []; + pNum = 0; + for (var key of (arr||[])) + { + if (!isObject(key[1])) continue; + let i = parseInt(key[0]); + var qll = key[1].ql; + if (qll) pQL.push([i, qll]); + is.push(i); + + cn += `
`; + if (cfg.comp.pid) cn += `
${i}
`; + cn += `
${isPlaylist(i)?"":""}${pName(i)}
+ +
+

`; + pNum++; + } + + gId('pcont').innerHTML = cn; + if (pNum > 0) { + if (pmtLS != pmt && pmt != 0) { + localStorage.setItem("wledPmt", pmt); + pJson["0"] = {}; + localStorage.setItem("wledP", JSON.stringify(pJson)); + } + pmtLS = pmt; + for (var a = 0; a < is.length; a++) { + let i = is[a]; + if (expanded[i+100]) expand(i+100, true); + } + makePlSel(arr); + } else { presetError(true); } + updatePA(true); + populateQL(); +} + +function loadInfo(callback=null) +{ + var url = (loc?`http://${locip}`:'') + '/json/info'; + fetch(url, { + method: 'get' + }) + .then(res => { + if (!res.ok) showToast('Could not load Info!', true); + return res.json(); + }) + .then(json => { + clearErrorToast(); + lastinfo = json; + var name = json.name; + gId('namelabel').innerHTML = name; +// if (name === "Dinnerbone") d.documentElement.style.transform = "rotate(180deg)"; + if (json.live) name = "(Live) " + name; + if (loc) name = "(L) " + name; + d.title = name; + isRgbw = json.leds.wv; + ledCount = json.leds.count; + syncTglRecv = json.str; + maxSeg = json.leds.maxseg; + pmt = json.fs.pmt; + showNodes(); + populateInfo(json); + reconnectWS(); + reqsLegal = true; + if (callback) callback(); + }) + .catch(function (error) { + showToast(error, true); + console.log(error); + if (callback) callback(); + }); +} + +function populateInfo(i) +{ + var cn=""; + var heap = i.freeheap/1000; + heap = heap.toFixed(1); + var pwr = i.leds.pwr; + var pwru = "Not calculated"; + if (pwr > 1000) {pwr /= 1000; pwr = pwr.toFixed((pwr > 10) ? 0 : 1); pwru = pwr + " A";} + else if (pwr > 0) {pwr = 50 * Math.round(pwr/50); pwru = pwr + " mA";} + var urows=""; + if (i.u) { + for (const [k, val] of Object.entries(i.u)) { + if (val[1]) + urows += inforow(k,val[0],val[1]); + else + urows += inforow(k,val); + } + } + var vcn = "Kuuhaku"; + if (i.ver.startsWith("0.13.")) vcn = "Toki"; + if (i.ver.includes("-bl")) vcn = "Ryujin"; + if (i.cn) vcn = i.cn; + + cn += `v${i.ver} "${vcn}"

+${urows} +${inforow("Build",i.vid)} +${inforow("Signal strength",i.wifi.signal +"% ("+ i.wifi.rssi, " dBm)")} +${inforow("Uptime",getRuntimeStr(i.uptime))} +${inforow("Free heap",heap," kB")} +${i.psram?inforow("Free PSRAM",(i.psram/1024).toFixed(1)," kB"):""} +${inforow("Estimated current",pwru)} +${inforow("Average FPS",i.leds.fps)} +${inforow("MAC address",i.mac)} +${inforow("Filesystem",i.fs.u + "/" + i.fs.t + " kB (" +Math.round(i.fs.u*100/i.fs.t) + "%)")} +${inforow("Environment",i.arch + " " + i.core + " (" + i.lwip + ")")} +
`; + gId('kv').innerHTML = cn; +} + +function populateSegments(s) +{ + var cn = ""; + segCount = 0; lowestUnused = 0; lSeg = 0; + + for (var y = 0; y < (s.seg||[]).length; y++) + { + segCount++; + + var inst=s.seg[y]; + let i = parseInt(inst.id); + powered[i] = inst.on; + if (i == lowestUnused) lowestUnused = i+1; + if (i > lSeg) lSeg = i; + + cn += `
+ +
+ ${inst.n ? inst.n : "Segment "+i} +
+
+
+ +
+ +
+
+
+
+
+ + + + + + + + + + + +
Start LED${cfg.comp.seglen?"LED count":"Stop LED"}Offset
+ + + + + + + + + + + +
GroupingSpacingApply
+
+ + + +
+

`; + } + + gId('segcont').innerHTML = cn; + if (lowestUnused >= maxSeg) { + gId('segutil').innerHTML = 'Maximum number of segments reached.'; + noNewSegs = true; + } else if (noNewSegs) { + resetUtil(); + noNewSegs = false; + } + for (var i = 0; i <= lSeg; i++) { + updateLen(i); + updateTrail(gId(`seg${i}bri`)); + if (segCount < 2) gId(`segd${lSeg}`).style.display = "none"; + } + gId('rsbtn').style.display = (segCount > 1) ? "inline":"none"; +} + +function btype(b) +{ + switch (b) { + case 2: + case 32: return "ESP32"; + case 1: + case 82: return "ESP8266"; + } + return "?"; +} + +function bname(o) +{ + if (o.name=="WLED") return o.ip; + return o.name; +} + +function populateNodes(i,n) +{ + var cn=""; + var urows=""; + var nnodes = 0; + if (n.nodes) { + n.nodes.sort((a,b) => (a.name).localeCompare(b.name)); + for (var x=0;x${bname(o)}`; + urows += inforow(url,`${btype(o.type)}
${o.vid==0?"N/A":o.vid}`); + nnodes++; + } + } + } + if (i.ndc < 0) cn += `Instance List is disabled.`; + else if (nnodes == 0) cn += `No other instances found.`; + cn += ` + ${urows} + ${inforow("Current instance:",i.name)} +
`; + gId('kn').innerHTML = cn; +} + +function loadNodes() +{ + var url = (loc?`http://${locip}`:'') + '/json/nodes'; + fetch(url, { + method: 'get' + }) + .then(res => { + if (!res.ok) showToast('Could not load Node list!', true); + return res.json(); + }) + .then(json => { + clearErrorToast(); + populateNodes(lastinfo, json); + reconnectWS(); + }) + .catch(function (error) { + showToast(error, true); + console.log(error); + }); +} + +function populateEffects() +{ + var effects = eJson; + var html = ""; + + effects.shift(); //remove solid + for (let i = 0; i < effects.length; i++) effects[i] = {id: effects[i][0], name:effects[i][1]}; + effects.sort((a,b) => (a.name).localeCompare(b.name)); + + effects.unshift({ + "id": 0, + "name": "Solid", + }); + + for (let i = 0; i < effects.length; i++) { + html += generateListItemHtml( + 'fx', + effects[i].id, + effects[i].name, + 'setX' + ); + } + + gId('fxlist').innerHTML=html; +} + +function populatePalettes() +{ + var palettes = lJson; + palettes.shift(); //remove default + for (let i = 0; i < palettes.length; i++) { + palettes[i] = { + "id": palettes[i][0], + "name": palettes[i][1] + }; + } + palettes.sort((a,b) => (a.name).localeCompare(b.name)); + + palettes.unshift({ + "id": 0, + "name": "Default", + }); + + var html = ""; + for (let i = 0; i < palettes.length; i++) { + let previewCss = genPalPrevCss(palettes[i].id); + html += generateListItemHtml( + 'palette', + palettes[i].id, + palettes[i].name, + 'setPalette', + `
` + ); + } + + gId('pallist').innerHTML=html; +} + +function redrawPalPrev() +{ + let palettes = d.querySelectorAll('#pallist .lstI'); + for (let i = 0; i < palettes.length; i++) { + let id = palettes[i].dataset.id; + let lstPrev = palettes[i].querySelector('.lstIprev'); + if (lstPrev) { + lstPrev.style = genPalPrevCss(id); + } + } +} + +function genPalPrevCss(id) +{ + if (!palettesData) return; + + var paletteData = palettesData[id]; + var previewCss = ""; + + if (!paletteData) return 'display: none'; + + // We need at least two colors for a gradient + if (paletteData.length == 1) { + paletteData[1] = paletteData[0]; + if (Array.isArray(paletteData[1])) { + paletteData[1][0] = 255; + } + } + + var gradient = []; + for (let j = 0; j < paletteData.length; j++) { + const element = paletteData[j]; + let r; + let g; + let b; + let index = false; + if (Array.isArray(element)) { + index = element[0]/255*100; + r = element[1]; + g = element[2]; + b = element[3]; + } else if (element == 'r') { + r = Math.random() * 255; + g = Math.random() * 255; + b = Math.random() * 255; + } else { + if (selColors) { + let e = element[1] - 1; + if (Array.isArray(selColors[e])) { + r = selColors[e][0]; + g = selColors[e][1]; + b = selColors[e][2]; + } else { + r = (selColors[e]>>16) & 0xFF; + g = (selColors[e]>> 8) & 0xFF; + b = (selColors[e] ) & 0xFF; + } + } + } + if (index === false) { + index = j / paletteData.length * 100; + } + + gradient.push(`rgb(${r},${g},${b}) ${index}%`); + } + + return `background: linear-gradient(to right,${gradient.join()});`; +} + +function generateListItemHtml(listName, id, name, clickAction, extraHtml = '') +{ + return `
+ +
+ + ${name} + + ${extraHtml} +
+
`; +} + +function updateTrail(e, slidercol) +{ + if (e==null) return; + var max = e.hasAttribute('max') ? e.attributes.max.value : 255; + var perc = e.value * 100 / max; + perc = parseInt(perc); + if (perc < 50) perc += 2; + var scol; + switch (slidercol) { + case 1: scol = "#f00"; break; + case 2: scol = "#0f0"; break; + case 3: scol = "#00f"; break; + default: scol = "var(--c-f)"; + } + var val = `linear-gradient(90deg, ${scol} ${perc}%, var(--c-4) ${perc}%)`; + e.parentNode.getElementsByClassName('sliderdisplay')[0].style.background = val; + var bubble = e.parentNode.parentNode.getElementsByTagName('output')[0]; + if (bubble) bubble.innerHTML = e.value; +} + +function toggleBubble(e) +{ + var bubble = e.target.parentNode.parentNode.getElementsByTagName('output')[0]; + bubble.classList.toggle('sliderbubbleshow'); +} + +function updateLen(s) +{ + if (!gId(`seg${s}s`)) return; + var start = parseInt(gId(`seg${s}s`).value); + var stop = parseInt(gId(`seg${s}e`).value); + var len = stop - (cfg.comp.seglen?0:start); + var out = "(delete)"; + if (len > 1) { + out = `${len} LEDs`; + } else if (len == 1) { + out = "1 LED"; + } + + if (gId(`seg${s}grp`) != null) + { + var grp = parseInt(gId(`seg${s}grp`).value); + var spc = parseInt(gId(`seg${s}spc`).value); + if (grp == 0) grp = 1; + var virt = Math.ceil(len/(grp + spc)); + if (!isNaN(virt) && (grp > 1 || spc > 0)) out += ` (${virt} virtual)`; + } + + gId(`seg${s}len`).innerHTML = out; +} + +function updatePA(scrollto=false) +{ + var ps = gEBCN("seg"); + for (let i = 0; i < ps.length; i++) { + ps[i].style.backgroundColor = "var(--c-2)"; + } + ps = gEBCN("psts"); + for (let i = 0; i < ps.length; i++) { + ps[i].style.backgroundColor = "var(--c-2)"; + } + if (currentPreset > 0) { + var acv = gId(`p${currentPreset}o`); + if (acv && !expanded[currentPreset+100]) { + acv.style.background = "var(--c-6)"; + if (scrollto) { + // scroll selected preset into view (on WS refresh) + acv.scrollIntoView({ + behavior: 'smooth', + block: 'center', + }); + } + } + acv = gId(`p${currentPreset}qlb`); + if (acv) acv.style.background = "var(--c-6)"; + } +} + +function updateUI(scrollto=false) +{ +// noWS = (!ws || ws.readyState === WebSocket.CLOSED); + + gId('buttonPower').className = (isOn) ? "active":""; + gId('buttonNl').className = (nlA) ? "active":""; + gId('buttonSync').className = (syncSend) ? "active":""; + showNodes(); + + updateSelectedPalette(scrollto); + updateSelectedFx(scrollto); + + updateTrail(gId('sliderBri')); + updateTrail(gId('sliderSpeed')); + updateTrail(gId('sliderIntensity')); + updateTrail(gId('sliderW')); + if (isRgbw) gId('wwrap').style.display = "block"; + + updatePA(scrollto); + updateHex(); + updateRgb(); +} + +function updateSelectedPalette(scrollto=false) +{ + var parent = gId('pallist'); + var selPaletteInput = parent.querySelector(`input[name="palette"][value="${selectedPal}"]`); + if (selPaletteInput) selPaletteInput.checked = true; + + var selElement = parent.querySelector('.selected'); + if (selElement) selElement.classList.remove('selected'); + + var selectedPalette = parent.querySelector(`.lstI[data-id="${selectedPal}"]`); + if (selectedPalette) parent.querySelector(`.lstI[data-id="${selectedPal}"]`).classList.add('selected'); +} + +function updateSelectedFx(scrollto=false) +{ + var parent = gId('fxlist'); + var selEffectInput = parent.querySelector(`input[name="fx"][value="${selectedFx}"]`); + if (selEffectInput) selEffectInput.checked = true; + + var selElement = parent.querySelector('.selected'); + if (selElement) selElement.classList.remove('selected'); + + var selectedEffect = parent.querySelector(`.lstI[data-id="${selectedFx}"]`); + if (selectedEffect) selectedEffect.classList.add('selected'); +} + +function displayRover(i,s) +{ + gId('rover').style.transform = (i.live && s.lor == 0) ? "translateY(0px)":"translateY(100%)"; + var sour = i.lip ? i.lip:""; if (sour.length > 2) sour = " from " + sour; + gId('lv').innerHTML = `WLED is receiving live ${i.lm} data${sour}`; + gId('roverstar').style.display = (i.live && s.lor) ? "block":"none"; +} + +function cmpP(a, b) +{ + if (!a[1].n) return (a[0] > b[0]); + return a[1].n.localeCompare(b[1].n,undefined, {numeric: true}); +} + +function makeWS() { + if (ws) return; + ws = new WebSocket('ws://'+(loc?locip:window.location.hostname)+'/ws'); + ws.onmessage = function(event) { + var json = JSON.parse(event.data); + if (json.leds) return; //liveview packet + clearTimeout(jsonTimeout); + jsonTimeout = null; + lastUpdate = new Date(); + clearErrorToast(); + gId('connind').style.backgroundColor = "#079"; + // json object should contain json.info AND json.state (but may not) + var info = json.info; + if (info) { + var name = info.name; + lastinfo = info; + gId('namelabel').innerHTML = name; + //if (name === "Dinnerbone") d.documentElement.style.transform = "rotate(180deg)"; + if (info.live) name = "(Live) " + name; + if (loc) name = "(L) " + name; + d.title = name; + isRgbw = info.leds.wv; + ledCount = info.leds.count; + syncTglRecv = info.str; + maxSeg = info.leds.maxseg; + pmt = info.fs.pmt; + showNodes(); + if (isInfo) { + populateInfo(info); + } + } else + info = lastinfo; + var s = json.state ? json.state : json; + displayRover(info, s); + readState(s); + }; + ws.onclose = function(event) { + gId('connind').style.backgroundColor = "#831"; + ws = null; + } + ws.onopen = function(event) { + ws.send("{'v':true}"); + reqsLegal = true; + clearErrorToast(); + } +} + +function reconnectWS() {// Create UI update WS handler + if (!ws && lastinfo.ws > -1) setTimeout(makeWS,500); +} + +function readState(s,command=false) +{ + if (!s) return false; + + isOn = s.on; + gId('sliderBri').value= s.bri; + nlA = s.nl.on; + nlDur = s.nl.dur; + nlTar = s.nl.tbri; + nlFade = s.nl.fade; + syncSend = s.udpn.send; + if (s.pl<0) currentPreset = s.ps; + else currentPreset = s.pl; + gId('tt').value = s.transition/10; + + var selc=0; var ind=0; + populateSegments(s); + for (let i = 0; i < (s.seg||[]).length; i++) + { + if(s.seg[i].sel) {selc = ind; break;} ind++; + } + var i=s.seg[selc]; + if (!i) { + showToast('No Segments!', true); + updateUI(); + return; + } + + selColors = i.col; + var cd = gId('csl').children; + for (let e = cd.length-1; e >= 0; e--) + { + var r,g,b,w; + if (Array.isArray(i.col[e])) { + r = i.col[e][0]; + g = i.col[e][1]; + b = i.col[e][2]; + if (isRgbw) w = i.col[e][3]; + } else { + // unsigned long RGBW (@blazoncek v2 experimental API implementation) + r = (i.col[e]>>16) & 0xFF; + g = (i.col[e]>> 8) & 0xFF; + b = (i.col[e] ) & 0xFF; + if (isRgbw) w = (i.col[e] >> 24) & 0xFF; + } + cd[e].style.backgroundColor = "rgb(" + r + "," + g + "," + b + ")"; + if (isRgbw) whites[e] = parseInt(w); + selectSlot(csel); + } + gId('sliderW').value = whites[csel]; + + gId('sliderSpeed').value = i.sx; + gId('sliderIntensity').value = i.ix; + + if (s.error && s.error != 0) { + var errstr = ""; + switch (s.error) { + case 10: + errstr = "Could not mount filesystem!"; + break; + case 11: + errstr = "Not enough space to save preset!"; + break; + case 12: + errstr = "Preset not found."; + break; + case 13: + errstr = "Missing IR.json."; + break; + case 19: + errstr = "A filesystem error has occured."; + break; + } + showToast('Error ' + s.error + ": " + errstr, true); + } + + selectedPal = i.pal; + selectedFx = i.fx; + updateUI(true); +} + +var jsonTimeout; +var reqsLegal = false; + +function requestJson(command) +{ + gId('connind').style.backgroundColor = "#a90"; + if (command && !reqsLegal) return; //stop post requests from chrome onchange event on page restore + if (!jsonTimeout) jsonTimeout = setTimeout(showErrorToast, 3000); + if (!command) command = {'v':true}; + var req = null; + var url = (loc?`http://${locip}`:'') + '/json/state'; + var useWs = (ws && ws.readyState === WebSocket.OPEN); + var type = command ? 'post':'get'; +// if (command) +// { + command.v = true; // force complete /json/si API response + command.time = Math.floor(Date.now() / 1000); + var t = d.getElementById('tt'); + if (t.validity.valid) { + var tn = parseInt(t.value*10); + if (tn != tr) command.transition = tn; + } + req = JSON.stringify(command); + if (req.length > 1000) useWs = false; //do not send very long requests over websocket +// } + + if (useWs) { + + ws.send(req?req:'{"v":true}'); + return; + } + + fetch(url, { + method: type, + headers: { + "Content-type": "application/json; charset=UTF-8" + }, + body: req + }) + .then(res => { + if (!res.ok) showErrorToast(); + return res.json(); + }) + .then(json => { + clearTimeout(jsonTimeout); + jsonTimeout = null; + lastUpdate = new Date(); + clearErrorToast(); + gId('connind').style.backgroundColor = "#070"; + if (!json) { showToast('Empty response', true); return; } + if (json.success) return; + var s = json.state ? json.state : json; + readState(s); + reqsLegal = true; + reconnectWS(); + }) + .catch(function (error) { + showToast(error, true); + console.log(error); + }); +} + +function togglePower() +{ + isOn = !isOn; + var obj = {"on": isOn}; + requestJson(obj); +} + +function toggleNl() +{ + nlA = !nlA; + if (nlA) + { + showToast(`Timer active. Your light will turn ${nlTar > 0 ? "on":"off"} ${nlMode ? "over":"after"} ${nlDur} minutes.`); + } else { + showToast('Timer deactivated.'); + } + var obj = {"nl": {"on": nlA}}; + requestJson(obj); +} + +function toggleSync() +{ + syncSend = !syncSend; + if (syncSend) showToast('Other lights in the network will now sync to this one.'); + else showToast('This light and other lights in the network will no longer sync.'); + var obj = {"udpn": {"send": syncSend}}; + if (syncTglRecv) obj.udpn.recv = syncSend; + requestJson(obj); +} + +function toggleLiveview() +{ + isLv = !isLv; + gId('liveview').style.display = (isLv) ? "block":"none"; + var url = (loc?`http://${locip}`:'') + "/liveview"; + gId('liveview').src = (isLv) ? url:"about:blank"; + gId('buttonSr').className = (isLv) ? "active":""; + if (!isLv && ws && ws.readyState === WebSocket.OPEN) ws.send('{"lv":false}'); + size(); +} + +function toggleInfo() +{ + if (isNodes) toggleNodes(); + isInfo = !isInfo; + if (isInfo) loadInfo(); + gId('info').style.transform = (isInfo) ? "translateY(0px)":"translateY(100%)"; + gId('buttonI').className = (isInfo) ? "active":""; +} + +function toggleNodes() +{ + if (isInfo) toggleInfo(); + isNodes = !isNodes; + if (isNodes) loadNodes(); + gId('nodes').style.transform = (isNodes) ? "translateY(0px)":"translateY(100%)"; + gId('buttonNodes').className = (isNodes) ? "active":""; +} + +function makeSeg() +{ + var ns = 0; + if (lowestUnused > 0) { + var pend = parseInt(gId(`seg${lowestUnused -1}e`).value,10) + (cfg.comp.seglen?parseInt(gId(`seg${lowestUnused -1}s`).value,10):0); + if (pend < ledCount) ns = pend; + } + var cn = `
+
+
+ + + + + + + + + + +
Start LED${cfg.comp.seglen?"LED count":"Stop LED"}
+
${ledCount - ns} LEDs
+
+
+
`; + gId('segutil').innerHTML = cn; +} + +function resetUtil() +{ + gId('segutil').innerHTML = '
'; + for (var i=0; i${n}` + } +} + +function refreshPlE(p) { + var plEDiv = gId(`ple${p}`); + if (!plEDiv) return; + var content = "
Playlist entries
"; + for (var i = 0; i < plJson[p].ps.length; i++) { + content += makePlEntry(p,i); + } + content += `
`; + plEDiv.innerHTML = content; + var dels = plEDiv.getElementsByClassName("btn-pl-del"); + if (dels.length < 2 && p > 0) dels[0].style.display = "none"; + + var sels = gId(`seg${p+100}`).getElementsByClassName("sel"); + for (var i of sels) { + if (i.dataset.val) { + if (parseInt(i.dataset.val) > 0) i.value = i.dataset.val; + else plJson[p].ps[i.dataset.index] = parseInt(i.value); + } + } +} + +//p: preset ID, i: ps index +function addPl(p,i) { + plJson[p].ps.splice(i+1,0,0); + plJson[p].dur.splice(i+1,0,plJson[p].dur[i]); + plJson[p].transition.splice(i+1,0,plJson[p].transition[i]); + refreshPlE(p); +} + +function delPl(p,i) { + if (plJson[p].ps.length < 2) {if (p == 0) resetPUtil(); return;} + plJson[p].ps.splice(i,1); + plJson[p].dur.splice(i,1); + plJson[p].transition.splice(i,1); + refreshPlE(p); +} + +function plePs(p,i,field) { + plJson[p].ps[i] = parseInt(field.value); +} + +function pleDur(p,i,field) { + if (field.validity.valid) + plJson[p].dur[i] = Math.floor(field.value*10); +} + +function pleTr(p,i,field) { + if (field.validity.valid) + plJson[p].transition[i] = Math.floor(field.value*10); +} + +function plR(p) { + var pl = plJson[p]; + pl.r = gId(`pl${p}rtgl`).checked; + if (gId(`pl${p}rptgl`).checked) { //infinite + pl.repeat = 0; + delete pl.end; + gId(`pl${p}o1`).style.display = "none"; + } else { + pl.repeat = parseInt(gId(`pl${p}rp`).value); + pl.end = parseInt(gId(`pl${p}selEnd`).value); + gId(`pl${p}o1`).style.display = "block"; + } +} + +function makeP(i,pl) { + var content = ""; + if (pl) { + var rep = plJson[i].repeat ? plJson[i].repeat : 0; + content = +`
+ +
+
Repeat 0?rep:1}> times
+
End preset:
+
+
+
`; + } else + content = +` +`; + + return `
+
Quick load label:
+
(leave empty for no Quick load button)
+
+
+
+
+ API command
+ +
+
+ ${content} +
+
Save to ID 0)?i:getLowestUnusedP()}>
+
+ + ${(i>0)?' +
+
+${(i>0)? ('
ID ' +i+ '
'):""}`; +} + +function makePUtil() +{ + gId('putil').innerHTML = `
${makeP(0)}
`; + for (var i=0; i +
+ + + + + + + + + + + + + + + +
+ +
DurationTransition#${i+1}
ss
+`; +} + +function makePlUtil() +{ + if (pNum < 2) { + showToast("You need at least 2 presets to make a playlist!"); //return; + } + if (plJson[0].transition[0] < 0) plJson[0].transition[0] = tr; + gId('putil').innerHTML = `
${makeP(0,true)}
`; + refreshPlE(0); +} + +function resetPUtil() +{ + var cn = ``+ + `
`; + gId('putil').innerHTML = cn; +} + +function tglCs(i) +{ + var pss = gId(`p${i}cstgl`).checked; + gId(`p${i}o1`).style.display = pss? "block" : "none"; + gId(`p${i}o2`).style.display = !pss? "block" : "none"; +} + +function selSegEx(s) +{ + var obj = {"seg":[]}; + for (let i=0; i<=lSeg; i++) obj.seg.push({"sel":(i==s)?true:false}); + requestJson(obj); +} + +function selSeg(s) +{ + var sel = gId(`seg${s}sel`).checked; + var obj = {"seg": {"id": s, "sel": sel}}; + requestJson(obj); +} + +function setSeg(s) +{ + var name = gId(`seg${s}t`).value; + var start = parseInt(gId(`seg${s}s`).value); + var stop = parseInt(gId(`seg${s}e`).value); + if (stop == 0) {delSeg(s); return;} + var obj = {"seg": {"id": s, "n": name, "start": start, "stop": (cfg.comp.seglen?start:0)+stop}}; + if (gId(`seg${s}grp`)) + { + var grp = parseInt(gId(`seg${s}grp`).value); + var spc = parseInt(gId(`seg${s}spc`).value); + var ofs = parseInt(gId(`seg${s}of` ).value); + obj.seg.grp = grp; + obj.seg.spc = spc; + obj.seg.of = ofs; + } + requestJson(obj); +} + +function delSeg(s) +{ + if (segCount < 2) { + showToast("You need to have multiple segments to delete one!"); + return; + } + expanded[s] = false; + segCount--; + var obj = {"seg": {"id": s, "stop": 0}}; + requestJson(obj); +} + +function setRev(s) +{ + var rev = gId(`seg${s}rev`).checked; + var obj = {"seg": {"id": s, "rev": rev}}; + requestJson(obj); +} + +function setMi(s) +{ + var mi = gId(`seg${s}mi`).checked; + var obj = {"seg": {"id": s, "mi": mi}}; + requestJson(obj); +} + +function setSegPwr(s) +{ + var obj = {"seg": {"id": s, "on": !powered[s]}}; + requestJson(obj); +} + +function setSegBri(s) +{ + var obj = {"seg": {"id": s, "bri": parseInt(gId(`seg${s}bri`).value)}}; + requestJson(obj); +} + +function setX(ind = null) +{ + if (ind === null) { + ind = parseInt(d.querySelector('#fxlist input[name="fx"]:checked').value); + } else { + d.querySelector(`#fxlist input[name="fx"][value="${ind}"]`).checked = true; + } + var selElement = d.querySelector('#fxlist .selected'); + if (selElement) selElement.classList.remove('selected'); + + d.querySelector(`#fxlist .lstI[data-id="${ind}"]`).classList.add('selected'); + + var obj = {"seg": {"fx": parseInt(ind)}}; + requestJson(obj); +} + +function setPalette(paletteId = null) +{ + if (paletteId === null) { + paletteId = parseInt(d.querySelector('#pallist input[name="palette"]:checked').value); + } else { + d.querySelector(`#pallist input[name="palette"][value="${paletteId}`).checked = true; + } + var selElement = d.querySelector('#pallist .selected'); + if (selElement) { + selElement.classList.remove('selected') + } + d.querySelector(`#pallist .lstI[data-id="${paletteId}"]`).classList.add('selected'); + var obj = {"seg": {"pal": paletteId}}; + requestJson(obj); +} + +function setBri() +{ + var obj = {"bri": parseInt(gId('sliderBri').value)}; + requestJson(obj); +} + +function setSpeed() +{ + var obj = {"seg": {"sx": parseInt(gId('sliderSpeed').value)}}; + requestJson(obj); +} + +function setIntensity() +{ + var obj = {"seg": {"ix": parseInt(gId('sliderIntensity').value)}}; + requestJson(obj); +} + +function setLor(i) +{ + var obj = {"lor": i}; + requestJson(obj); +} + +function setPreset(i) +{ + var obj = {"ps": i}; + if (isPlaylist(i)) obj.on = true; + showToast("Loading preset " + pName(i) +" (" + i + ")"); + requestJson(obj); +} + +function saveP(i,pl) +{ + pI = parseInt(gId(`p${i}id`).value); + if (!pI || pI < 1) pI = (i>0) ? i : getLowestUnusedP(); + pN = gId(`p${i}txt`).value; + if (pN == "") pN = (pl?"Playlist ":"Preset ") + pI; + var obj = {}; + if (!gId(`p${i}cstgl`).checked) { + var raw = gId(`p${i}api`).value; + try { + obj = JSON.parse(raw); + } catch (e) { + obj.win = raw; + if (raw.length < 2) { + gId(`p${i}warn`).innerHTML = "⚠ Please enter your API command first"; + return; + } else if (raw.indexOf('{') > -1) { + gId(`p${i}warn`).innerHTML = "⚠ Syntax error in custom JSON API command"; + return; + } else if (raw.indexOf("Please") == 0) { + gId(`p${i}warn`).innerHTML = "⚠ Please refresh the page before modifying this preset"; + return; + } + } + obj.o = true; + } else { + if (pl) { + obj.playlist = plJson[i]; + obj.o = true; + } else { + obj.ib = gId(`p${i}ibtgl`).checked; + obj.sb = gId(`p${i}sbtgl`).checked; + } + } + + obj.psave = pI; obj.n = pN; + var pQN = gId(`p${i}ql`).value; + if (pQN.length > 0) obj.ql = pQN; + + showToast("Saving " + pN +" (" + pI + ")"); + requestJson(obj); + if (obj.o) { + pJson[pI] = obj; + delete pJson[pI].psave; + delete pJson[pI].o; + delete pJson[pI].v; + delete pJson[pI].time; + } else { + pJson[pI] = {"n":pN, "win":"Please refresh the page to see this newly saved command."}; + if (obj.win) pJson[pI].win = obj.win; + if (obj.ql) pJson[pI].ql = obj.ql; + } + populatePresets(); + resetPUtil(); +} + +function testPl(i,bt) { + if (bt.dataset.test == 1) { + bt.dataset.test = 0; + bt.innerHTML = "Test"; + stopPl(); + return; + } + bt.dataset.test = 1; + bt.innerHTML = "Stop"; + var obj = {}; + obj.playlist = plJson[i]; + requestJson(obj); +} + +function stopPl() { + requestJson({playlist:{}}) +} + +function delP(i) { + var bt = gId(`p${i}del`); + if (bt.dataset.cnf == 1) { + var obj = {"pdel": i}; + requestJson(obj); + delete pJson[i]; + populatePresets(); + } else { + bt.style.color = "#f00"; + bt.innerHTML = "Confirm delete"; + bt.dataset.cnf = 1; + } +} + +function selectSlot(b) +{ + csel = b; + var cd = gId('csl').children; + for (let i = 0; i < cd.length; i++) { + cd[i].style.border="2px solid var(--c-e)"; + cd[i].style.margin="5px"; + cd[i].style.width="42px"; + } + cd[csel].style.border="5px solid var(--c-e)"; + cd[csel].style.margin="2px"; + cd[csel].style.width="50px"; + cpick.color.set(cd[csel].style.backgroundColor); + gId('sliderW').value = whites[csel]; + updateTrail(gId('sliderW')); + updateHex(); + updateRgb(); + redrawPalPrev(); +} + +var lasth = 0; +function pC(col) +{ + if (col == "rnd") { + col = {h: 0, s: 0, v: 100}; + col.s = Math.floor((Math.random() * 50) + 50); + do { + col.h = Math.floor(Math.random() * 360); + } while (Math.abs(col.h - lasth) < 50); + lasth = col.h; + } + cpick.color.set(col); + setColor(0); +} + +function updateRgb() +{ + var col = cpick.color.rgb; + var s = gId('sliderR'); + s.value = col.r; updateTrail(s,1); + s = gId('sliderG'); + s.value = col.g; updateTrail(s,2); + s = gId('sliderB'); + s.value = col.b; updateTrail(s,3); +} + +function updateHex() +{ + var str = cpick.color.hexString; + str = str.substring(1); + var w = whites[csel]; + if (w > 0) str += w.toString(16); + gId('hexc').value = str; + gId('hexcnf').style.backgroundColor = "var(--c-3)"; +} + +function hexEnter() +{ + gId('hexcnf').style.backgroundColor = "var(--c-6)"; + if(event.keyCode == 13) fromHex(); +} + +function fromHex() +{ + var str = gId('hexc').value; + whites[csel] = parseInt(str.substring(6), 16); + try { + cpick.color.set("#" + str.substring(0,6)); + } catch (e) { + cpick.color.set("#ffaa00"); + } + if (isNaN(whites[csel])) whites[csel] = 0; + setColor(2); +} + +function fromRgb() +{ + var r = gId('sliderR').value; + var g = gId('sliderG').value; + var b = gId('sliderB').value; + cpick.color.set(`rgb(${r},${g},${b})`); + setColor(0); +} + +function setColor(sr) +{ + var cd = gId('csl').children; + if (sr == 1 && cd[csel].style.backgroundColor == 'rgb(0, 0, 0)') cpick.color.setChannel('hsv', 'v', 100); + cd[csel].style.backgroundColor = cpick.color.rgbString; + if (sr != 2) whites[csel] = gId('sliderW').value; + var col = cpick.color.rgb; + var obj = {"seg": {"col": [[col.r, col.g, col.b, whites[csel]],[],[]]}}; + if (csel == 1) { + obj = {"seg": {"col": [[],[col.r, col.g, col.b, whites[csel]],[]]}}; + } else if (csel == 2) { + obj = {"seg": {"col": [[],[],[col.r, col.g, col.b, whites[csel]]]}}; + } + updateHex(); + updateRgb(); + requestJson(obj); +} + +var hc = 0; +setInterval(function(){if (!isInfo) return; hc+=18; if (hc>300) hc=0; if (hc>200)hc=306; if (hc==144) hc+=36; if (hc==108) hc+=18; +gId('heart').style.color = `hsl(${hc}, 100%, 50%)`;}, 910); + +function openGH() { window.open("https://github.com/Aircoookie/WLED/wiki"); } + +var cnfr = false; +function cnfReset() +{ + if (!cnfr) { + var bt = gId('resetbtn'); + bt.style.color = "#f00"; + bt.innerHTML = "Confirm Reboot"; + cnfr = true; return; + } + window.location.href = "/reset"; +} + +var cnfrS = false; +function rSegs() +{ + var bt = gId('rsbtn'); + if (!cnfrS) { + bt.style.color = "#f00"; + bt.innerHTML = "Confirm reset"; + cnfrS = true; return; + } + cnfrS = false; + bt.style.color = "#fff"; + bt.innerHTML = "Reset segments"; + var obj = {"seg":[{"start":0,"stop":ledCount,"sel":true}]}; + for (let i=1; i<=lSeg; i++) obj.seg.push({"stop":0}); + requestJson(obj); +} + +function loadPalettesData(callback = null) +{ + if (palettesData) return; + const lsKey = "wledPalx"; + var palettesDataJson = localStorage.getItem(lsKey); + if (palettesDataJson) { + try { + palettesDataJson = JSON.parse(palettesDataJson); + if (palettesDataJson && palettesDataJson.vid == lastinfo.vid) { + palettesData = palettesDataJson.p; + //redrawPalPrev() //? + if (callback) callback(); + return; + } + } catch (e) {} + } + + palettesData = {}; + getPalettesData(0, function() { + localStorage.setItem(lsKey, JSON.stringify({ + p: palettesData, + vid: lastinfo.vid + })); + redrawPalPrev(); + if (callback) setTimeout(callback, 99); //go on to connect websocket + }); +} + +function getPalettesData(page, callback) +{ + var url = (loc?`http://${locip}`:'') + `/json/palx?page=${page}`; + + fetch(url, { + method: 'get', + headers: { + "Content-type": "application/json; charset=UTF-8" + } + }) + .then(res => { + if (!res.ok) showErrorToast(); + return res.json(); + }) + .then(json => { + palettesData = Object.assign({}, palettesData, json.p); + if (page < json.m) setTimeout(function() { getPalettesData(page + 1, callback); }, 50); + else callback(); + }) + .catch(function(error) { + showToast(error, true); + console.log(error); + }); +} + +function search(f,l=null) +{ + f.nextElementSibling.style.display=(f.value!=='')?'block':'none'; + if (!l) return; + var el = gId(l).querySelectorAll('.lstI'); + for (i = 0; i < el.length; i++) { + var it = el[i]; + var itT = it.querySelector('.lstIname').innerText.toUpperCase(); + it.style.display = itT.indexOf(f.value.toUpperCase())>-1?'':'none'; + } +} + +function clean(c) +{ + c.style.display='none'; + var i=c.previousElementSibling; + i.value=''; + i.focus(); + i.dispatchEvent(new Event('input')); +} + +//make sure "dur" and "transition" are arrays with at least the length of "ps" +function formatArr(pl) { + var l = pl.ps.length; + if (!Array.isArray(pl.dur)) { + var v = pl.dur; + if (isNaN(v)) v = 100; + pl.dur = [v]; + } + var l2 = pl.dur.length; + if (l2 < l) + { + for (var i = 0; i < l - l2; i++) + pl.dur.push(pl.dur[l2-1]); + } + + if (!Array.isArray(pl.transition)) { + var v = pl.transition; + if (isNaN(v)) v = tr; + pl.transition = [v]; + } + var l2 = pl.transition.length; + if (l2 < l) + { + for (var i = 0; i < l - l2; i++) + pl.transition.push(pl.transition[l2-1]); + } +} + +function expand(i,a) +{ + var seg = gId('seg' +i); + if (!a) expanded[i] = !expanded[i]; + seg.style.display = (expanded[i]) ? "block":"none"; + gId('sege' +i).style.transform = (expanded[i]) ? "rotate(180deg)":"rotate(0deg)"; + + if (expanded[i]) gId(i<100?'segutil':'putil').classList.remove("staytop"); + else gId(i<100?'segutil':'putil').classList.add("staytop"); + + if (i >= 100) { + var p = i-100; + gId(`p${p}o`).style.background = (expanded[i] || p != currentPreset)?"var(--c-2)":"var(--c-6)"; + + if (seg.innerHTML === "") { + if (isPlaylist(p)) { + plJson[p] = pJson[p].playlist; + //make sure all keys are present in plJson[p] + formatArr(plJson[p]); + if (isNaN(plJson[p].repeat)) plJson[p].repeat = 0; + if (!plJson[p].r) plJson[p].r = false; + if (isNaN(plJson[p].end)) plJson[p].end = 0; + + seg.innerHTML = makeP(p,true); + refreshPlE(p); + } else { + seg.innerHTML = makeP(p); + } + + var papi = papiVal(p); + gId(`p${p}api`).value = papi; + if (papi.indexOf("Please") == 0) gId(`p${p}cstgl`).checked = true; + tglCs(p); + } + } + + seg.parentElement.scrollIntoView({ + behavior: 'smooth', + block: (expanded[i]?'start':'center'), + }); +} + +function unfocusSliders() +{ + gId("sliderBri").blur(); + gId("sliderSpeed").blur(); + gId("sliderIntensity").blur(); +} + +//sliding UI +const _C = d.querySelector('.container'), N = 4; + +let iSlide = 0, x0 = null, scrollS = 0, locked = false, w; + +function unify(e) { return e.changedTouches ? e.changedTouches[0] : e; } + +function hasIroClass(classList) +{ + for (var i = 0; i < classList.length; i++) { + var element = classList[i]; + if (element.startsWith('Iro')) return true; + } + return false; +} + +function lock(e) +{ + if (pcMode) return; + var l = e.target.classList; + var pl = e.target.parentElement.classList; + + if (l.contains('noslide') || hasIroClass(l) || hasIroClass(pl)) return; + + x0 = unify(e).clientX; + scrollS = gEBCN("tabcontent")[iSlide].scrollTop; + + _C.classList.toggle('smooth', !(locked = true)); +} + +function move(e) +{ + if(!locked || pcMode) return; + var clientX = unify(e).clientX; + var dx = clientX - x0; + var s = Math.sign(dx); + var f = +(s*dx/w).toFixed(2); + + if((clientX != 0) && + (iSlide > 0 || s < 0) && (iSlide < N - 1 || s > 0) && + f > 0.12 && + gEBCN("tabcontent")[iSlide].scrollTop == scrollS) + { + _C.style.setProperty('--i', iSlide -= s); + f = 1 - f; + updateTablinks(iSlide); + } + _C.style.setProperty('--f', f); + _C.classList.toggle('smooth', !(locked = false)); + x0 = null; +} + +function showNodes() { + gId('buttonNodes').style.display = (lastinfo.ndc > 0 && (w > 797 || (w > 539 && w < 720))) ? "block":"none"; +} + +function size() +{ + w = window.innerWidth; + showNodes(); + var h = gId('top').clientHeight; + sCol('--th', h + "px"); + sCol('--bh', gId('bot').clientHeight + "px"); + if (isLv) h -= 4; + sCol('--tp', h + "px"); + togglePcMode(); +} + +function togglePcMode(fromB = false) +{ + if (fromB) { + pcModeA = !pcModeA; + localStorage.setItem('pcm', pcModeA); + pcMode = pcModeA; + } + if (w < 1250 && !pcMode) return; + if (!fromB && ((w < 1250 && lastw < 1250) || (w >= 1250 && lastw >= 1250))) return; + openTab(0, true); + if (w < 1250) {pcMode = false;} + else if (pcModeA && !fromB) pcMode = pcModeA; + updateTablinks(0); + gId('buttonPcm').className = (pcMode) ? "active":""; + gId('bot').style.height = (pcMode && !cfg.comp.pcmbot) ? "0":"auto"; + sCol('--bh', gId('bot').clientHeight + "px"); + _C.style.width = (pcMode)?'100%':'400%'; + lastw = w; +} + +function isObject(item) +{ + return (item && typeof item === 'object' && !Array.isArray(item)); +} + +function mergeDeep(target, ...sources) +{ + if (!sources.length) return target; + const source = sources.shift(); + + if (isObject(target) && isObject(source)) { + for (const key in source) { + if (isObject(source[key])) { + if (!target[key]) Object.assign(target, { [key]: {} }); + mergeDeep(target[key], source[key]); + } else { + Object.assign(target, { [key]: source[key] }); + } + } + } + return mergeDeep(target, ...sources); +} + +size(); +_C.style.setProperty('--n', N); + +window.addEventListener('resize', size, false); + +_C.addEventListener('mousedown', lock, false); +_C.addEventListener('touchstart', lock, false); + +_C.addEventListener('mouseout', move, false); +_C.addEventListener('mouseup', move, false); +_C.addEventListener('touchend', move, false); diff --git a/wled00/html_ui.h b/wled00/html_ui.h index f8484a49..6649576f 100644 --- a/wled00/html_ui.h +++ b/wled00/html_ui.h @@ -7,7 +7,7 @@ */ // Autogenerated from wled00/data/index.htm, do not edit!! -const uint16_t PAGE_index_L = 35707; +const uint16_t PAGE_index_L = 35706; const uint8_t PAGE_index[] PROGMEM = { 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xe4, 0xbd, 0x69, 0x7b, 0xda, 0x4a, 0xb6, 0x28, 0xfc, 0xdd, 0xbf, 0x82, 0x90, 0xbd, 0xd3, 0x28, 0x16, 0xf3, 0x10, 0x1b, 0xa2, 0xf8, @@ -1427,818 +1427,818 @@ const uint8_t PAGE_index[] PROGMEM = { 0xfc, 0x56, 0xdd, 0x74, 0x5c, 0xaf, 0x88, 0x24, 0x5a, 0xa9, 0x11, 0x1c, 0xee, 0x76, 0xc3, 0x01, 0x52, 0x01, 0x05, 0x56, 0x77, 0xef, 0xff, 0x6b, 0xee, 0xeb, 0xbb, 0xdb, 0xb6, 0x91, 0x7e, 0xff, 0xbf, 0x9f, 0x82, 0x66, 0x5b, 0x5b, 0xac, 0x68, 0x99, 0xb2, 0xe3, 0x34, 0x91, 0x4c, 0xe9, 0xa4, - 0x69, 0xba, 0xcd, 0x73, 0xd3, 0xd4, 0x5b, 0xa7, 0xdb, 0xdd, 0xe3, 0xeb, 0xf3, 0x98, 0x92, 0x28, - 0x9b, 0x1b, 0x9a, 0x64, 0x45, 0xfa, 0xed, 0x71, 0xf4, 0xdd, 0xef, 0xfc, 0x06, 0x2f, 0x04, 0x28, - 0xca, 0x56, 0xd2, 0xee, 0xb9, 0x77, 0xcf, 0xd6, 0xa1, 0x40, 0x10, 0x18, 0x00, 0x83, 0xc1, 0xcc, - 0x60, 0x5e, 0x56, 0x65, 0x6b, 0x97, 0x8e, 0xeb, 0xc9, 0x2e, 0xd7, 0x70, 0x11, 0x5e, 0x24, 0x18, - 0xa6, 0x47, 0x3a, 0x47, 0x69, 0x8a, 0x1c, 0xa5, 0xa7, 0xe9, 0x59, 0xa3, 0xe7, 0xb2, 0xd9, 0x67, - 0x67, 0xa5, 0x69, 0x6a, 0xf7, 0x72, 0x46, 0xc7, 0xfb, 0x13, 0x5f, 0xfa, 0x6a, 0x69, 0xaa, 0x49, - 0x41, 0x3f, 0xc6, 0x6e, 0xff, 0x59, 0x71, 0xe7, 0x88, 0x3f, 0x81, 0x7c, 0xe2, 0xc0, 0xcf, 0xf4, - 0xbc, 0xbf, 0x4f, 0x7f, 0x9e, 0xc9, 0x07, 0x84, 0x24, 0x92, 0x9f, 0x4e, 0xe4, 0xa7, 0x2f, 0xe9, - 0x55, 0xe0, 0x7c, 0x87, 0xbf, 0xea, 0x93, 0x80, 0xeb, 0x07, 0x66, 0x65, 0x82, 0xca, 0x6f, 0x42, - 0x61, 0xbc, 0xbe, 0xaa, 0xf8, 0x75, 0xc0, 0xdd, 0x1e, 0x5a, 0xfd, 0x54, 0xbb, 0x13, 0xd7, 0xaf, - 0x11, 0x8c, 0x69, 0x2f, 0x26, 0x8f, 0x6a, 0x24, 0xff, 0x83, 0x2c, 0xd0, 0x9c, 0xe1, 0xf2, 0x84, - 0x06, 0x4f, 0xb4, 0x19, 0xbb, 0xe6, 0x6d, 0x15, 0x5f, 0x75, 0xdc, 0x5b, 0x3a, 0x92, 0x7f, 0x4b, - 0x08, 0x8b, 0x5d, 0xff, 0xbf, 0x4e, 0x7e, 0x79, 0xdf, 0x13, 0x2e, 0x3a, 0xc9, 0xfc, 0xbe, 0x43, - 0x6d, 0x99, 0x61, 0x03, 0xab, 0x8b, 0xf4, 0xa7, 0x18, 0x19, 0xd6, 0x1a, 0x88, 0x09, 0xe4, 0x0b, - 0xb7, 0x5a, 0x0a, 0xfd, 0x7a, 0x7f, 0x58, 0xad, 0x88, 0xad, 0x22, 0xda, 0xa9, 0xb7, 0x48, 0xb8, - 0x6e, 0xef, 0x8c, 0xc5, 0x31, 0x39, 0x90, 0xef, 0xd7, 0xb5, 0xfa, 0x8e, 0x91, 0xc8, 0x04, 0x4f, - 0xa0, 0x95, 0x01, 0x9a, 0xc4, 0xb3, 0xb6, 0x06, 0xe4, 0xfe, 0x25, 0x02, 0x10, 0x8f, 0x3b, 0xd6, - 0x7e, 0x74, 0xbf, 0x8a, 0x63, 0x73, 0x09, 0xa6, 0xbb, 0x88, 0x9d, 0xca, 0x26, 0x05, 0x66, 0xe1, - 0x3e, 0x0a, 0x67, 0xb3, 0x99, 0x55, 0x78, 0x80, 0xc2, 0xc9, 0x64, 0x62, 0x15, 0x3e, 0x43, 0x61, - 0x14, 0x45, 0x56, 0xe1, 0x21, 0x0a, 0x5f, 0xbe, 0x7c, 0x69, 0x15, 0x3e, 0x6f, 0x2b, 0x7c, 0x81, - 0xc2, 0x17, 0x2f, 0x5e, 0x58, 0x85, 0x13, 0x14, 0x3e, 0x7b, 0xf6, 0xcc, 0x2a, 0x9c, 0xa2, 0xf0, - 0xe0, 0xe0, 0xc0, 0x2a, 0x84, 0x58, 0xfa, 0x55, 0xbf, 0xdf, 0xb7, 0x0a, 0x67, 0x28, 0xdc, 0xdf, - 0xdf, 0xb7, 0x0a, 0x17, 0x28, 0x9c, 0x3e, 0xb3, 0x0b, 0x73, 0x57, 0x1a, 0x59, 0xec, 0x07, 0xcf, - 0x7c, 0xa7, 0xfe, 0x13, 0xf4, 0x5e, 0x7a, 0x56, 0xc5, 0x72, 0x22, 0x67, 0xe9, 0xa0, 0x51, 0x7c, - 0x29, 0xcb, 0x9f, 0x5b, 0xe5, 0xd5, 0x64, 0x4d, 0xc3, 0x44, 0x2a, 0x3a, 0x8c, 0xdb, 0x9e, 0xd7, - 0xf8, 0x20, 0x52, 0x5f, 0xf4, 0xbf, 0x0b, 0x7c, 0xa7, 0xfe, 0xb3, 0xfe, 0x8b, 0xcb, 0x8d, 0xfa, - 0x60, 0x92, 0x96, 0x5c, 0x5d, 0xd4, 0x14, 0x4d, 0x68, 0xe5, 0x42, 0x92, 0x09, 0x60, 0x34, 0xd5, - 0x09, 0x7a, 0x2f, 0xa8, 0xde, 0xa0, 0x89, 0x26, 0xcd, 0x49, 0x65, 0x34, 0x81, 0xf1, 0xca, 0x0a, - 0x9a, 0x34, 0x67, 0xfa, 0xa0, 0x6d, 0xa1, 0x9e, 0xb5, 0x2d, 0x29, 0xa3, 0xc9, 0xe1, 0xe1, 0xe1, - 0x2a, 0x9a, 0x3c, 0x7f, 0xfe, 0x7c, 0x43, 0x34, 0x69, 0xe2, 0x23, 0xa3, 0x09, 0x22, 0xad, 0xaf, - 0xa0, 0x49, 0x13, 0xf1, 0x67, 0x6d, 0x38, 0xce, 0x68, 0xf2, 0xe2, 0xa0, 0xdf, 0x8e, 0x26, 0x07, - 0x34, 0xbd, 0xea, 0xbf, 0x35, 0x38, 0x42, 0x53, 0xd4, 0x8a, 0x23, 0x54, 0x7e, 0xb8, 0x06, 0x47, - 0xcc, 0x56, 0x37, 0x41, 0x90, 0x60, 0x1f, 0x61, 0x78, 0xd5, 0x9f, 0x0d, 0x10, 0xe4, 0xb0, 0xef, - 0x3b, 0xea, 0xbf, 0x4d, 0xb1, 0xe3, 0x3a, 0x83, 0x44, 0x6c, 0xd0, 0x14, 0x44, 0xf6, 0xfc, 0xfe, - 0x02, 0x34, 0x85, 0x04, 0x0c, 0xc7, 0x50, 0x9f, 0x37, 0xf8, 0x10, 0x77, 0x72, 0x01, 0x38, 0xd6, - 0x46, 0x48, 0xa5, 0xde, 0x5c, 0xbe, 0x8e, 0x2c, 0x7b, 0xe5, 0x62, 0x1a, 0xc6, 0xbe, 0x4b, 0x44, - 0x32, 0xfe, 0xf4, 0x49, 0x33, 0xb0, 0x74, 0x98, 0x97, 0xd7, 0x57, 0xbd, 0xe2, 0x92, 0x04, 0xd4, - 0x72, 0xaf, 0xff, 0x72, 0x3f, 0x20, 0x89, 0xfd, 0x45, 0xc0, 0x72, 0xad, 0x57, 0xdf, 0xfc, 0x2a, - 0x1e, 0x4c, 0x9e, 0xa2, 0xc4, 0xef, 0x9b, 0xe7, 0xa8, 0xb4, 0x81, 0x0c, 0xc2, 0x90, 0x5e, 0xd0, - 0x99, 0x7a, 0x1a, 0x9c, 0x8d, 0x33, 0x80, 0xfa, 0xe3, 0x75, 0x9a, 0xfe, 0x2b, 0x8e, 0x10, 0x88, - 0x54, 0xbf, 0x41, 0xc8, 0x71, 0xd9, 0x5a, 0x27, 0xf7, 0x65, 0x31, 0x49, 0x94, 0xf2, 0x49, 0xb8, - 0x49, 0xeb, 0x1a, 0x11, 0x41, 0x8f, 0x03, 0x87, 0x7f, 0x24, 0x1c, 0x04, 0x12, 0x4f, 0x5e, 0x57, - 0x56, 0x87, 0x2f, 0x75, 0x36, 0x82, 0xb9, 0x58, 0x76, 0x94, 0x20, 0x91, 0x36, 0x8f, 0x53, 0xbe, - 0x7c, 0x76, 0xe6, 0x2d, 0xcb, 0x96, 0xc8, 0xa7, 0x98, 0x5d, 0xe2, 0x96, 0xc2, 0x91, 0x54, 0x03, - 0x18, 0x8a, 0x8d, 0xe6, 0x21, 0x38, 0xb9, 0x20, 0x00, 0x88, 0x7d, 0x7b, 0xcf, 0x5a, 0x6a, 0x44, - 0xfb, 0x79, 0x0e, 0x93, 0x26, 0xb1, 0x7c, 0x32, 0xc4, 0x71, 0x98, 0xe9, 0x92, 0x49, 0x34, 0xfd, - 0x78, 0xc1, 0x2a, 0x90, 0xb7, 0x10, 0x63, 0xc2, 0x73, 0x58, 0x66, 0x7c, 0xfd, 0xc0, 0x50, 0x2d, - 0xbd, 0x73, 0xe9, 0xe1, 0xb9, 0x6c, 0xac, 0xf4, 0xc9, 0xc7, 0x24, 0x7b, 0x7d, 0x72, 0xa2, 0x54, - 0x70, 0x82, 0xf7, 0x54, 0x2a, 0x9f, 0x27, 0xd2, 0xd0, 0x5d, 0xc6, 0x34, 0x16, 0xf8, 0xe4, 0x3c, - 0x82, 0x05, 0x48, 0x4a, 0x46, 0x68, 0x20, 0xfc, 0xc5, 0xfc, 0xb2, 0xb7, 0x20, 0xc1, 0xdb, 0x65, - 0x80, 0x4b, 0x92, 0x19, 0xc0, 0x16, 0x88, 0x1c, 0xe6, 0x2e, 0xb2, 0x8d, 0xef, 0x4d, 0x11, 0xd7, - 0x99, 0x4e, 0xe1, 0x45, 0x3c, 0x0f, 0x3b, 0x74, 0xf0, 0x8f, 0x55, 0x66, 0x69, 0xb7, 0xcb, 0x7a, - 0x88, 0x81, 0xdb, 0x73, 0xbd, 0xae, 0xbb, 0x57, 0x12, 0xd4, 0x3d, 0x59, 0xf9, 0x2a, 0x9e, 0x25, - 0x11, 0xd2, 0xb9, 0xc0, 0xe1, 0xc3, 0x0a, 0xec, 0x5b, 0x9a, 0x77, 0xf5, 0x79, 0x86, 0x50, 0xb3, - 0x30, 0x38, 0x20, 0xcc, 0x27, 0xd9, 0x21, 0x6c, 0xa6, 0xb4, 0xd3, 0x79, 0xeb, 0x60, 0x18, 0x06, - 0x25, 0x47, 0xe0, 0x77, 0xb8, 0xd3, 0xd0, 0xe2, 0x40, 0x2e, 0x14, 0x07, 0x42, 0xa5, 0x6f, 0x85, - 0xf6, 0x4f, 0x56, 0xa3, 0xef, 0xaf, 0x0a, 0x1a, 0xf2, 0x8f, 0xd4, 0xbe, 0x03, 0xd9, 0xbf, 0xe7, - 0x1c, 0xa7, 0x31, 0x87, 0x4c, 0xcb, 0x68, 0xab, 0x39, 0xbf, 0xbf, 0x7b, 0xf3, 0x83, 0xf3, 0xf6, - 0x78, 0xcb, 0x5d, 0xc7, 0xd3, 0x88, 0x16, 0x7d, 0x6e, 0xcd, 0xf3, 0x14, 0xf3, 0xdd, 0xde, 0x7b, - 0xcd, 0xff, 0x78, 0xe0, 0xc5, 0x81, 0x3c, 0xe1, 0x55, 0xbc, 0xb8, 0x88, 0x7f, 0x88, 0xe3, 0x02, - 0xbf, 0x04, 0x5b, 0xc4, 0xe8, 0x85, 0x15, 0xf5, 0x7c, 0x56, 0x72, 0x1c, 0xff, 0x56, 0x25, 0x29, - 0x54, 0x92, 0x9a, 0x99, 0xe0, 0x6d, 0x69, 0xb0, 0x2e, 0x17, 0x48, 0x79, 0xb7, 0xd9, 0x2e, 0x6d, - 0x7e, 0x35, 0x9e, 0xc7, 0xd0, 0x0a, 0x3e, 0xb6, 0x70, 0xb4, 0x3b, 0x92, 0x59, 0x74, 0x5f, 0xf6, - 0xfe, 0x5d, 0x22, 0x46, 0xd0, 0xc3, 0x55, 0x5c, 0x5d, 0xe6, 0x33, 0xa1, 0x15, 0x5e, 0x7a, 0x1c, - 0x38, 0xb6, 0x43, 0x9b, 0x23, 0xe6, 0xf7, 0x1d, 0xaf, 0x2e, 0x79, 0x68, 0x5e, 0xc7, 0xd2, 0x98, - 0x21, 0xfa, 0x43, 0xc5, 0xdc, 0x13, 0x01, 0x53, 0x2d, 0x3d, 0x34, 0x54, 0x2b, 0x39, 0xed, 0x8a, - 0x34, 0xbf, 0x20, 0x44, 0x35, 0x7b, 0x75, 0x66, 0x79, 0x5c, 0x3a, 0x7c, 0xcf, 0x08, 0x7f, 0xe8, - 0x84, 0x04, 0x22, 0x34, 0xe9, 0xe4, 0x73, 0x47, 0xd7, 0x73, 0xa4, 0x7e, 0xaf, 0xe4, 0x3d, 0x12, - 0xcf, 0x7a, 0x2e, 0xdf, 0x06, 0xcd, 0x93, 0x8c, 0xd0, 0xec, 0xbe, 0x63, 0xda, 0xaf, 0x48, 0x72, - 0xd9, 0x9c, 0x0b, 0xb6, 0x1f, 0x58, 0xf7, 0xce, 0x37, 0x77, 0x9e, 0x0b, 0x64, 0x7e, 0x4d, 0xb8, - 0xec, 0x69, 0x21, 0xa3, 0x0a, 0x99, 0x5e, 0x4f, 0x4b, 0x12, 0x1e, 0xea, 0x24, 0xdb, 0x22, 0x23, - 0x71, 0x65, 0x66, 0x24, 0xae, 0x4e, 0xcb, 0xb3, 0x95, 0xed, 0x2f, 0x6c, 0x73, 0x65, 0xea, 0x31, - 0x07, 0xff, 0xf7, 0xdc, 0xa1, 0xd0, 0x7f, 0x9d, 0xa4, 0x79, 0x05, 0x8f, 0xa9, 0x6b, 0x16, 0x65, - 0x3f, 0x44, 0x13, 0x6c, 0xcf, 0x12, 0x25, 0xac, 0x2a, 0xe8, 0xd1, 0x88, 0x4c, 0xdb, 0x7b, 0x73, - 0x9c, 0xca, 0x21, 0xac, 0xc3, 0xea, 0x7c, 0xa9, 0x33, 0x5a, 0x8f, 0x9b, 0xc7, 0xc4, 0xf2, 0x8b, - 0x71, 0x1e, 0x4b, 0x45, 0xd5, 0xca, 0xac, 0x1d, 0x1b, 0x1a, 0xac, 0x8e, 0xa8, 0xfb, 0xe3, 0x3f, - 0x57, 0x6b, 0x31, 0xde, 0xda, 0x5f, 0x5f, 0x45, 0x1f, 0xe3, 0xdf, 0x4f, 0x3a, 0xf5, 0x3d, 0x9d, - 0x40, 0x6e, 0x89, 0xdb, 0x62, 0x70, 0xbf, 0xbd, 0xe5, 0x0b, 0xa4, 0x59, 0x0b, 0x0d, 0xbe, 0xd1, - 0x32, 0xbf, 0xf2, 0x83, 0x68, 0xd7, 0x05, 0x40, 0xa4, 0x57, 0x52, 0x88, 0x58, 0x90, 0x1b, 0x7d, - 0x7c, 0x2a, 0xfa, 0x1b, 0xf8, 0x6e, 0xb5, 0xe0, 0xbc, 0xea, 0xed, 0x73, 0x51, 0x4c, 0xaf, 0x5c, - 0x44, 0xf7, 0xca, 0x2f, 0x2e, 0xd2, 0xf8, 0x98, 0x55, 0x82, 0x80, 0x4b, 0x3a, 0x77, 0xb6, 0x48, - 0x8e, 0xed, 0xd7, 0xb1, 0x1a, 0x35, 0x52, 0xe0, 0x69, 0xe6, 0xa5, 0x2d, 0xc3, 0x32, 0xef, 0x73, - 0x44, 0x7f, 0xdf, 0xb3, 0x5a, 0x19, 0x21, 0xe9, 0xd7, 0xd4, 0x16, 0x1e, 0x16, 0x66, 0xdd, 0xe1, - 0x6d, 0xb9, 0xbd, 0x7d, 0x5b, 0x1a, 0xb1, 0xbc, 0x69, 0xa3, 0xff, 0x1e, 0x4f, 0x4e, 0x48, 0xb0, - 0x8b, 0xab, 0xde, 0x2f, 0xc7, 0x6f, 0xde, 0xc3, 0xb4, 0x4b, 0x85, 0x70, 0x5e, 0x59, 0x2e, 0x68, - 0x7c, 0xad, 0xc2, 0x55, 0x4d, 0x89, 0x58, 0x33, 0x7f, 0xff, 0x30, 0x30, 0xce, 0xa2, 0x06, 0x46, - 0xea, 0x5b, 0x07, 0xa1, 0xe1, 0x70, 0x2b, 0xf9, 0xc2, 0xd8, 0x24, 0xa5, 0xc3, 0x96, 0x04, 0x65, - 0x4f, 0x5b, 0x4a, 0x86, 0xc6, 0x33, 0x0d, 0x80, 0x44, 0xe3, 0x29, 0x9d, 0x52, 0x4e, 0x24, 0x7d, - 0x1d, 0x5d, 0xfa, 0x58, 0x28, 0x65, 0x11, 0xc2, 0xfb, 0x34, 0x3e, 0xab, 0x6b, 0x77, 0x43, 0x5d, - 0xcd, 0x80, 0x29, 0xa7, 0xa3, 0x84, 0x20, 0x82, 0x7a, 0x06, 0x4e, 0x5e, 0x0f, 0xe2, 0xe3, 0xed, - 0xed, 0xad, 0x0a, 0x7e, 0x23, 0xac, 0x98, 0xa2, 0x33, 0xed, 0xbf, 0x5f, 0x8b, 0x76, 0x30, 0xb5, - 0x3d, 0x31, 0x97, 0xb4, 0xa7, 0xaf, 0xf2, 0x1c, 0x59, 0x23, 0x80, 0x41, 0x54, 0x61, 0x55, 0xe5, - 0x43, 0xac, 0x5b, 0xe2, 0xfa, 0xa2, 0x91, 0x95, 0xfd, 0x18, 0x9b, 0x02, 0x6c, 0x79, 0x99, 0xdf, - 0x7e, 0xc8, 0xa3, 0xb2, 0xd2, 0x70, 0xc0, 0x36, 0x4b, 0xe0, 0x63, 0x9e, 0x65, 0x74, 0x88, 0x69, - 0xa4, 0x5c, 0xa1, 0x01, 0x82, 0xc3, 0x1d, 0x0a, 0xc5, 0x05, 0x7f, 0x52, 0xa1, 0x25, 0x71, 0x20, - 0x67, 0x84, 0x07, 0x3f, 0x7d, 0xf8, 0xf9, 0x1d, 0x9f, 0xcb, 0xf5, 0x24, 0x56, 0x63, 0x37, 0x86, - 0x39, 0x06, 0x89, 0xae, 0xe8, 0x9a, 0x84, 0x73, 0x3a, 0xc4, 0x16, 0x6a, 0xbd, 0xa5, 0x9a, 0x19, - 0x16, 0x9e, 0xa2, 0xcf, 0x28, 0x4b, 0xae, 0x22, 0x71, 0xc7, 0x29, 0x2f, 0x7d, 0x45, 0x8d, 0x70, - 0x0d, 0x92, 0x3c, 0xb9, 0x5e, 0xa2, 0x53, 0xd7, 0x65, 0x1c, 0x79, 0x19, 0x04, 0x8d, 0xa9, 0x60, - 0x53, 0x11, 0x31, 0x1f, 0xde, 0xc3, 0xd3, 0xc8, 0x4a, 0x53, 0x75, 0x8b, 0x6e, 0xf2, 0x12, 0xbb, - 0xf8, 0x56, 0x30, 0x41, 0x04, 0xbd, 0x9e, 0x54, 0xf7, 0x35, 0x4d, 0x62, 0x2c, 0xe5, 0xf1, 0xdc, - 0x61, 0x69, 0xdd, 0x99, 0x47, 0x74, 0x86, 0xcf, 0xb6, 0x5c, 0x58, 0x8a, 0x19, 0xd2, 0x36, 0x26, - 0xc2, 0xea, 0xdf, 0x9c, 0x52, 0x63, 0x5c, 0xed, 0xc5, 0xf5, 0x10, 0xc5, 0xfc, 0xf2, 0x18, 0x6b, - 0x55, 0x5e, 0x5c, 0xfd, 0x7a, 0x9d, 0x61, 0xf2, 0x4e, 0xaa, 0x45, 0x8d, 0xff, 0x3a, 0x7d, 0x39, - 0xa7, 0x0f, 0xa8, 0x43, 0x42, 0x77, 0xaa, 0xbd, 0x17, 0x88, 0xb0, 0x89, 0xd8, 0x5d, 0x46, 0x69, - 0xa7, 0xda, 0xe5, 0xe2, 0x6f, 0x4b, 0x6f, 0xef, 0xe0, 0x39, 0xc7, 0x2e, 0x6d, 0x7f, 0xbd, 0x8b, - 0xb7, 0xdf, 0x66, 0xde, 0xde, 0x73, 0x8e, 0x24, 0x53, 0x8e, 0x4b, 0x91, 0x31, 0xa4, 0x1f, 0x42, - 0x9b, 0x44, 0x87, 0xa0, 0x0b, 0x3d, 0xff, 0x7d, 0xe9, 0x72, 0x32, 0x10, 0xe4, 0xa8, 0x55, 0x57, - 0x71, 0x79, 0x37, 0xcc, 0x88, 0x04, 0x8c, 0x33, 0xfd, 0x41, 0x46, 0xa7, 0x7d, 0x7e, 0x0d, 0x84, - 0xc1, 0x3f, 0xf4, 0x09, 0xd5, 0xf6, 0xb7, 0x90, 0xcb, 0x03, 0xf6, 0x21, 0xb4, 0xb7, 0xa8, 0x01, - 0xe2, 0x5c, 0x47, 0x87, 0x2f, 0x69, 0xef, 0x94, 0xa2, 0x2c, 0xa5, 0xaf, 0xf9, 0x3a, 0xd6, 0xaf, - 0x8e, 0x00, 0x0a, 0x91, 0x48, 0x7e, 0x6f, 0xd4, 0x97, 0xe5, 0x28, 0xa9, 0x76, 0x11, 0x24, 0x96, - 0x3e, 0x29, 0x63, 0x08, 0x7c, 0xb9, 0x61, 0xcb, 0x46, 0xf4, 0x66, 0x91, 0xdf, 0xb2, 0x49, 0x5c, - 0x89, 0x6b, 0x76, 0xa9, 0x0a, 0x3d, 0x3f, 0xaa, 0x16, 0xa3, 0xa3, 0x6a, 0x26, 0xac, 0x88, 0x42, - 0xf7, 0x63, 0x7c, 0x5f, 0xcd, 0xdc, 0xd1, 0xd7, 0x0f, 0xf1, 0xf2, 0x68, 0xaf, 0x9a, 0x99, 0xaf, - 0x6e, 0xa2, 0x54, 0xbc, 0xaa, 0x96, 0xc4, 0x2e, 0xcb, 0xd7, 0x7b, 0xf4, 0xf9, 0xb9, 0xb5, 0x3a, - 0xef, 0x8c, 0x8b, 0x9f, 0x63, 0x1d, 0x4c, 0xad, 0x5f, 0x1f, 0xda, 0x30, 0xfe, 0xe4, 0xdb, 0x17, - 0xaf, 0x12, 0x19, 0x6c, 0xbb, 0x5d, 0x1d, 0x31, 0x7b, 0x44, 0xd4, 0x8e, 0x1d, 0xfd, 0x41, 0xf5, - 0x4c, 0x53, 0x4e, 0xa2, 0xc1, 0xd3, 0x8f, 0xbf, 0x51, 0x93, 0x06, 0xc9, 0x23, 0xec, 0x39, 0x2f, - 0x00, 0x69, 0x32, 0x3b, 0xf7, 0xc4, 0xbd, 0xe2, 0x70, 0x8b, 0x5b, 0x66, 0x07, 0xce, 0x40, 0xa4, - 0x0b, 0xa0, 0x3e, 0xc6, 0x75, 0xd5, 0xdb, 0x88, 0xc6, 0xec, 0x19, 0x9b, 0xda, 0x75, 0x07, 0x8f, - 0xbc, 0x3d, 0xdf, 0xfe, 0xea, 0x25, 0x89, 0xd9, 0x43, 0xe7, 0x97, 0x9b, 0x78, 0x01, 0x73, 0xd3, - 0x24, 0xbb, 0x70, 0xbe, 0x7e, 0x28, 0x98, 0xb1, 0xaf, 0xbc, 0xe5, 0x96, 0x31, 0xf6, 0x42, 0x6a, - 0x90, 0xd5, 0x3d, 0xb0, 0x38, 0x91, 0x69, 0xed, 0x75, 0x40, 0x70, 0x86, 0x6d, 0x7b, 0x5b, 0x80, - 0x18, 0x9f, 0xd5, 0x4f, 0x3d, 0x60, 0x00, 0x21, 0xb1, 0xfe, 0x89, 0xc8, 0x3e, 0xf5, 0xda, 0x95, - 0xc7, 0x69, 0x74, 0x0f, 0xeb, 0x06, 0x43, 0x85, 0xad, 0xeb, 0x16, 0xf2, 0x9d, 0xd1, 0x9a, 0x2a, - 0xea, 0x15, 0xa5, 0x01, 0x5e, 0x54, 0x24, 0xff, 0x88, 0x52, 0x25, 0xc1, 0x70, 0xe5, 0x4f, 0x9f, - 0xb6, 0xd4, 0x47, 0xd2, 0x88, 0x80, 0xf0, 0x57, 0x80, 0xbf, 0xe2, 0x9d, 0xa1, 0x2b, 0xea, 0xab, - 0xea, 0xde, 0x2d, 0x87, 0xbf, 0xa1, 0xbf, 0x83, 0xce, 0x8c, 0x8e, 0xe6, 0x2a, 0xa6, 0xb2, 0xcc, - 0xd7, 0x8f, 0x45, 0xfd, 0xf8, 0x47, 0xda, 0x54, 0x3f, 0x56, 0x26, 0xed, 0xfe, 0x23, 0x55, 0x73, - 0xf7, 0xe4, 0x4c, 0xfd, 0x91, 0x8e, 0x8d, 0x67, 0x5c, 0x99, 0xd5, 0x38, 0x52, 0x7c, 0x3f, 0xfd, - 0xa8, 0x31, 0x8e, 0x89, 0xcb, 0x64, 0x0a, 0xa9, 0x0a, 0x47, 0x4a, 0x2a, 0x6c, 0x0c, 0x44, 0x3e, - 0x0b, 0xfe, 0x45, 0x9f, 0xf0, 0x5d, 0x22, 0x71, 0x7f, 0x2f, 0xf9, 0x7f, 0xe0, 0x82, 0x10, 0x61, - 0xea, 0x75, 0x7e, 0x75, 0x45, 0x8c, 0x0e, 0xce, 0x8d, 0xe2, 0xde, 0x6d, 0x10, 0xc1, 0x22, 0x89, - 0x67, 0x20, 0x80, 0xd3, 0x34, 0x29, 0x26, 0x79, 0xb4, 0x20, 0xea, 0x67, 0x0c, 0xa4, 0xe0, 0x35, - 0x17, 0x66, 0x7a, 0x1a, 0x13, 0x70, 0xc7, 0x4a, 0x78, 0x36, 0x44, 0xea, 0x85, 0x4e, 0xf9, 0x18, - 0x33, 0x08, 0x95, 0xb5, 0x60, 0x5b, 0x47, 0xfd, 0x80, 0x51, 0x02, 0x84, 0x55, 0xe7, 0x39, 0x58, - 0x0a, 0x6e, 0x68, 0xe7, 0x68, 0x96, 0xdc, 0xa8, 0x5d, 0x59, 0xc6, 0x17, 0xce, 0xd4, 0x1d, 0xed, - 0x0c, 0xb3, 0x2e, 0xcc, 0x5a, 0xfe, 0x95, 0x5f, 0x3b, 0x97, 0xd1, 0x4d, 0x4c, 0x8c, 0xbb, 0x04, - 0xa6, 0x74, 0xee, 0xe3, 0x6a, 0x8b, 0x88, 0xce, 0x49, 0xbe, 0x58, 0xdc, 0xfb, 0x0e, 0x71, 0xd8, - 0x8b, 0xd8, 0xb9, 0x85, 0xbd, 0x20, 0x50, 0xab, 0xbc, 0x8e, 0x1d, 0x99, 0xa4, 0xc4, 0xb9, 0x27, - 0xb2, 0xa4, 0xbe, 0x22, 0xa2, 0x5e, 0x09, 0x63, 0x08, 0xf7, 0x68, 0x42, 0x24, 0x82, 0xfe, 0x73, - 0x7d, 0xd1, 0xc7, 0x4f, 0xb4, 0xc3, 0x69, 0x3b, 0xa8, 0xa6, 0x92, 0xd2, 0xc1, 0x81, 0x7a, 0x5d, - 0xc8, 0x4f, 0x1d, 0x3a, 0xa3, 0x23, 0x30, 0x1d, 0x11, 0x0a, 0x6e, 0x92, 0xfc, 0xba, 0x14, 0x46, - 0x8d, 0xa9, 0xb0, 0x60, 0x72, 0xa2, 0x1b, 0x3a, 0x36, 0x60, 0x2a, 0xd0, 0x43, 0xab, 0xce, 0xff, - 0xc9, 0x1c, 0xc7, 0xe9, 0x9c, 0x44, 0x37, 0x00, 0x21, 0x52, 0x8d, 0xdc, 0x26, 0x69, 0xea, 0x5c, - 0xd2, 0xa9, 0xcf, 0xd1, 0x2e, 0x09, 0xd6, 0x99, 0x93, 0xcb, 0x3d, 0x88, 0xa2, 0x58, 0xf6, 0xe9, - 0xd1, 0xc0, 0x7e, 0x92, 0x50, 0x44, 0x0a, 0x0e, 0x30, 0x3c, 0x54, 0x03, 0x97, 0x51, 0xce, 0xc7, - 0x2c, 0xbf, 0x25, 0xba, 0x94, 0xe7, 0x33, 0x87, 0xdd, 0xae, 0x07, 0x3c, 0x8a, 0x9d, 0x23, 0xc8, - 0xd1, 0x11, 0x1d, 0x88, 0x0e, 0x09, 0xdc, 0x8c, 0x26, 0xa0, 0x65, 0xb2, 0x6c, 0x54, 0xc3, 0x75, - 0x34, 0xb9, 0xae, 0x2a, 0x3e, 0xd3, 0x78, 0xb6, 0x27, 0x55, 0xe6, 0xd0, 0x7f, 0xbb, 0x85, 0x4b, - 0x82, 0x32, 0xa1, 0xc0, 0xf4, 0x63, 0xe8, 0x4a, 0xb4, 0x73, 0x47, 0x84, 0x1c, 0xf7, 0x16, 0x6a, - 0x1c, 0xed, 0x89, 0xaf, 0x47, 0x3b, 0x9e, 0xcf, 0x13, 0xb9, 0x47, 0x0b, 0x37, 0x52, 0x97, 0x37, - 0x10, 0xab, 0x5c, 0x93, 0xd8, 0x64, 0xbe, 0xe6, 0x58, 0x18, 0x6f, 0xa5, 0xa9, 0x44, 0xd9, 0x50, - 0x45, 0x28, 0x4e, 0x3f, 0x16, 0x67, 0xb4, 0x34, 0x98, 0xc0, 0x15, 0x75, 0xc8, 0xd2, 0x06, 0x3f, - 0x8f, 0x02, 0x65, 0x15, 0x54, 0xe4, 0x6c, 0x3a, 0x16, 0xab, 0xcf, 0xc0, 0xed, 0xab, 0x1b, 0x6c, - 0xfa, 0x57, 0x24, 0xcb, 0xa1, 0x43, 0x7f, 0xd8, 0x21, 0x7e, 0x8f, 0x0a, 0xb6, 0x42, 0xf9, 0x16, - 0xa2, 0xa3, 0x59, 0xf1, 0x31, 0xa9, 0x95, 0x85, 0x56, 0x89, 0x39, 0x4f, 0xc8, 0xac, 0x1d, 0x12, - 0x0a, 0x3e, 0xd2, 0xc1, 0xd8, 0xe0, 0x51, 0x7c, 0x2d, 0xcb, 0x1a, 0xc2, 0xec, 0x0a, 0x27, 0x21, - 0xaf, 0xed, 0x63, 0xbf, 0x39, 0x2a, 0x88, 0x36, 0x53, 0xc1, 0xa1, 0x08, 0x89, 0xa7, 0x4d, 0xd8, - 0x35, 0x59, 0x44, 0x4c, 0x83, 0x29, 0xfc, 0x12, 0xdf, 0x60, 0x6e, 0x5e, 0x61, 0x8d, 0x55, 0x4b, - 0xb2, 0x1e, 0x41, 0x83, 0xbb, 0xbc, 0x9a, 0x59, 0x8b, 0x89, 0x6a, 0xd8, 0x99, 0x97, 0x2c, 0x29, - 0x4e, 0xad, 0xce, 0x93, 0xb3, 0x86, 0x51, 0xef, 0x29, 0x2b, 0x85, 0x3f, 0x3f, 0x6d, 0x55, 0xeb, - 0xb4, 0x09, 0xdb, 0x06, 0x49, 0xd3, 0x49, 0xbe, 0x59, 0xc0, 0xfa, 0x9e, 0xb8, 0x53, 0x3d, 0x8d, - 0x0a, 0xec, 0xc6, 0x3c, 0xfa, 0x38, 0x9f, 0x5b, 0xa7, 0xb3, 0x32, 0xa7, 0xb3, 0xe2, 0xe9, 0x6c, - 0xcc, 0x9f, 0xfe, 0xb6, 0x31, 0x45, 0x24, 0xbc, 0x7e, 0xde, 0xe4, 0xc4, 0xf3, 0x39, 0x81, 0xf3, - 0x1f, 0x9b, 0x9b, 0xf8, 0x89, 0xb9, 0x79, 0x23, 0xba, 0xff, 0xcb, 0x26, 0x03, 0x44, 0x1c, 0x70, - 0xa9, 0xec, 0x3e, 0xc5, 0xdf, 0xdf, 0x85, 0xa7, 0x67, 0xf5, 0x85, 0xbb, 0xea, 0xf7, 0xef, 0xef, - 0xf4, 0x59, 0x46, 0x87, 0x07, 0xed, 0x72, 0xaa, 0xa8, 0x4e, 0x87, 0xc0, 0x7b, 0x88, 0x41, 0xc5, - 0x0a, 0x45, 0x98, 0xc4, 0xe5, 0x97, 0x3b, 0xfa, 0x3b, 0x2e, 0x65, 0x79, 0x9a, 0x8f, 0xf6, 0x0a, - 0x3a, 0x15, 0xc4, 0x09, 0x14, 0xd8, 0xd2, 0x20, 0x35, 0xc4, 0x31, 0x3c, 0xa8, 0x89, 0xf3, 0x06, - 0x81, 0xbb, 0xbb, 0x2b, 0x41, 0xe0, 0x9c, 0xa2, 0xa4, 0x09, 0x67, 0xda, 0x48, 0x8c, 0x11, 0x2c, - 0x06, 0x97, 0x7f, 0xa4, 0x13, 0x83, 0xe8, 0xb1, 0x8c, 0xc6, 0x91, 0x23, 0xe4, 0x6b, 0x6f, 0x08, - 0xd6, 0x10, 0xf6, 0xd6, 0x4b, 0x4d, 0xf6, 0xce, 0xfd, 0x6e, 0xb7, 0x1a, 0x3d, 0xe3, 0x83, 0x2c, - 0xf0, 0x63, 0x79, 0x94, 0xd0, 0x81, 0x4c, 0xac, 0x19, 0x07, 0x92, 0xd2, 0x25, 0x4b, 0x41, 0x12, - 0xff, 0x48, 0x2d, 0x82, 0x68, 0xf0, 0x7f, 0xcd, 0xfd, 0x1e, 0x2b, 0xba, 0xd7, 0x11, 0x14, 0xc1, - 0xd0, 0xe2, 0x3d, 0x7e, 0xbe, 0x4a, 0x12, 0xe2, 0x3d, 0x48, 0xde, 0x44, 0x30, 0x13, 0xc1, 0x99, - 0x9c, 0xa9, 0x96, 0x29, 0x7d, 0x45, 0x07, 0x91, 0x24, 0x6d, 0x3c, 0xa7, 0x7e, 0xd9, 0x44, 0x16, - 0xd1, 0x22, 0xc9, 0x8a, 0x65, 0xbe, 0xa8, 0x3a, 0xd3, 0xab, 0xe2, 0xd8, 0x53, 0xab, 0x2a, 0x4e, - 0x6c, 0x2c, 0xaf, 0xa1, 0x98, 0xe8, 0x48, 0xb3, 0xa2, 0x92, 0x57, 0x41, 0xf0, 0x63, 0x49, 0x29, - 0x7d, 0x5c, 0x52, 0x04, 0x24, 0xad, 0x73, 0x21, 0xe1, 0x72, 0x21, 0xae, 0xc5, 0x9b, 0x94, 0x40, - 0x15, 0x82, 0x6a, 0x1e, 0xa2, 0x26, 0xf1, 0x40, 0xc3, 0x9c, 0x28, 0x3e, 0xa1, 0x86, 0xc8, 0xbd, - 0x1e, 0xfb, 0xf9, 0x99, 0xf2, 0x1f, 0x02, 0x51, 0xab, 0xb0, 0xc6, 0x0d, 0x7e, 0x01, 0xa3, 0xd1, - 0x8b, 0x1b, 0x2f, 0x73, 0x97, 0x56, 0x4a, 0x5f, 0xa3, 0x16, 0x09, 0x1b, 0x01, 0x37, 0x3e, 0xa3, - 0x52, 0x25, 0x15, 0xe0, 0x0c, 0x3b, 0x5f, 0x6d, 0xb8, 0xc8, 0x88, 0x85, 0x5b, 0x83, 0x21, 0xf1, - 0xd2, 0xc3, 0xd7, 0x16, 0x23, 0x3b, 0x76, 0x8f, 0x12, 0xf9, 0xed, 0x4e, 0x02, 0x4a, 0xcc, 0x07, - 0x2b, 0x9e, 0x76, 0x46, 0xdb, 0x5f, 0xdd, 0xc5, 0xfd, 0x83, 0x97, 0xc3, 0xa3, 0xbd, 0x64, 0x04, - 0x99, 0x6a, 0xa9, 0x58, 0xee, 0xd8, 0x93, 0x00, 0xc8, 0xd3, 0x59, 0xb5, 0xe0, 0x8a, 0x16, 0x62, - 0xfe, 0xde, 0x99, 0xa7, 0x0b, 0x62, 0xd2, 0x95, 0x35, 0xdc, 0x69, 0xdc, 0xed, 0x07, 0xc1, 0x19, - 0x89, 0xeb, 0x77, 0x05, 0x37, 0x26, 0x86, 0x4e, 0x13, 0x11, 0x53, 0x25, 0xbc, 0x5b, 0x1a, 0x60, - 0x8b, 0xaf, 0x3a, 0xea, 0x0d, 0xc1, 0x0d, 0x60, 0x0e, 0x5e, 0x1e, 0x32, 0x30, 0xb2, 0x5b, 0x7b, - 0x3e, 0x49, 0x3c, 0x53, 0x2d, 0xea, 0x06, 0x47, 0x06, 0x98, 0xe2, 0x11, 0x88, 0x7e, 0xce, 0x06, - 0x65, 0xdd, 0xee, 0x92, 0x56, 0x7c, 0x0d, 0x13, 0x50, 0x71, 0x15, 0x6c, 0x70, 0x3e, 0xcc, 0xf9, - 0x34, 0xde, 0xde, 0x0e, 0xe4, 0xbf, 0x9d, 0xf5, 0xb7, 0xfc, 0xd0, 0x24, 0xe2, 0x60, 0x97, 0x08, - 0x4e, 0x78, 0xc2, 0x46, 0x6d, 0xeb, 0xeb, 0xaf, 0x58, 0x04, 0x08, 0x34, 0xd6, 0x4a, 0x4b, 0xfa, - 0xab, 0xb1, 0x36, 0x22, 0x12, 0x12, 0xd5, 0x96, 0x19, 0x11, 0x6e, 0x94, 0x04, 0x66, 0x66, 0xa7, - 0xd1, 0xd9, 0xb0, 0x31, 0xd5, 0x44, 0xea, 0xc4, 0x2c, 0xf2, 0x4f, 0x56, 0x0e, 0x40, 0x15, 0x79, - 0x9c, 0x12, 0xe3, 0x8d, 0xdb, 0x06, 0x76, 0x2e, 0xb7, 0x08, 0x64, 0xe0, 0x0d, 0x85, 0x6e, 0xe7, - 0xf8, 0x95, 0x60, 0x50, 0x0c, 0x1a, 0x28, 0xab, 0x4b, 0xeb, 0x3c, 0xfb, 0x2c, 0x61, 0x35, 0xda, - 0xe7, 0x9d, 0x26, 0x90, 0x84, 0x37, 0x3a, 0x4a, 0x34, 0xcb, 0x7f, 0x9d, 0xce, 0x58, 0x0f, 0x8e, - 0x0e, 0x1d, 0xf4, 0x28, 0x14, 0x1e, 0x9b, 0x1e, 0xbd, 0xca, 0x46, 0xb0, 0x92, 0xfa, 0x25, 0x92, - 0x91, 0x08, 0x95, 0x85, 0xc1, 0x0f, 0x9e, 0xa4, 0xf5, 0x8b, 0x81, 0x03, 0xa5, 0x5f, 0xf5, 0x52, - 0x11, 0xc5, 0x86, 0x30, 0xac, 0xf3, 0x8e, 0x1e, 0x3d, 0x92, 0x23, 0x4b, 0xbe, 0x10, 0x51, 0x85, - 0xb2, 0x64, 0xd6, 0xab, 0x92, 0x2a, 0x25, 0x2e, 0x51, 0x99, 0x85, 0x42, 0xf1, 0x3d, 0x2b, 0x7b, - 0xb7, 0x37, 0xb5, 0x35, 0xa6, 0x2c, 0x9a, 0xe2, 0x87, 0x65, 0x4c, 0x8a, 0x3b, 0xb1, 0x85, 0xb2, - 0xcd, 0x94, 0xb5, 0xe8, 0x17, 0x21, 0x32, 0x9b, 0x3c, 0x56, 0xbd, 0x79, 0xd9, 0x03, 0xeb, 0x87, - 0xe9, 0x60, 0xcb, 0xd4, 0x4e, 0xbd, 0x34, 0x3c, 0xf5, 0x55, 0x93, 0x5f, 0x58, 0xc4, 0x7f, 0x94, - 0xef, 0xe2, 0x8b, 0x28, 0xc5, 0xbd, 0xd0, 0xe7, 0x9c, 0x97, 0x26, 0x2f, 0x56, 0xb5, 0xf2, 0x0e, - 0x56, 0xc7, 0x86, 0xb9, 0x35, 0x07, 0x67, 0x98, 0x2f, 0xe2, 0xf8, 0x32, 0x8e, 0x8a, 0xbd, 0x7e, - 0x7c, 0x30, 0x2c, 0xc3, 0x52, 0x1b, 0x3f, 0xf7, 0x95, 0x0e, 0x39, 0x16, 0xc3, 0x2b, 0x6e, 0x17, - 0x7e, 0x1a, 0xba, 0xef, 0x85, 0xff, 0xd4, 0x94, 0x5b, 0x9c, 0xb9, 0xc3, 0x6c, 0x44, 0x1f, 0x8e, - 0x91, 0xb1, 0x87, 0xfe, 0xbf, 0x17, 0xd2, 0x0f, 0xaf, 0xb6, 0x9f, 0x26, 0x61, 0x0c, 0xb9, 0x6a, - 0x45, 0x6e, 0x59, 0x77, 0x90, 0x8d, 0x20, 0x9b, 0x71, 0xdd, 0xc3, 0xe0, 0x5b, 0xc3, 0xa4, 0x3a, - 0xdb, 0x3b, 0x0c, 0xb8, 0xd2, 0xd5, 0x2b, 0x57, 0x11, 0x69, 0x71, 0x74, 0xc7, 0xbd, 0x6b, 0xbe, - 0xaa, 0x65, 0x4b, 0xd6, 0x53, 0x9a, 0xd0, 0x33, 0x3a, 0x86, 0x1b, 0xa7, 0x08, 0xea, 0x78, 0xec, - 0xbd, 0x94, 0x77, 0x43, 0xa5, 0xaf, 0xa1, 0xaa, 0x7c, 0x71, 0x88, 0x43, 0x61, 0x60, 0x97, 0x8b, - 0x1e, 0xa2, 0xd0, 0xfd, 0xdf, 0xd7, 0xd7, 0x97, 0xd1, 0xc7, 0x6b, 0x97, 0xe4, 0x5c, 0x92, 0x90, - 0x7a, 0xac, 0xda, 0x2e, 0x7f, 0x4f, 0xaa, 0xcb, 0x8e, 0x1b, 0xf4, 0xfa, 0x07, 0x3d, 0x28, 0xd6, - 0x3b, 0x54, 0xef, 0x43, 0xfe, 0x31, 0x71, 0x81, 0xb6, 0xa8, 0xa5, 0x7d, 0x12, 0xdd, 0xdd, 0x49, - 0xaa, 0x6a, 0xfc, 0x7a, 0x7f, 0xfd, 0x6f, 0x56, 0x36, 0xc5, 0xbd, 0x69, 0xc6, 0x45, 0x78, 0x10, - 0xb4, 0xfe, 0x86, 0x68, 0x1b, 0xbe, 0x5c, 0x3a, 0xee, 0xd7, 0x0f, 0xd1, 0x52, 0x4b, 0x85, 0x47, - 0xec, 0x82, 0xab, 0xe9, 0x30, 0xc1, 0x57, 0xb9, 0xa0, 0x7b, 0x5f, 0x3f, 0xe4, 0x4b, 0xfe, 0x47, - 0x81, 0xec, 0x7e, 0x7f, 0x9d, 0xa4, 0xb8, 0xd4, 0xed, 0xdd, 0x20, 0x42, 0x84, 0xfd, 0xee, 0x24, - 0xb9, 0x20, 0x4e, 0x1b, 0x0e, 0xce, 0x4c, 0x61, 0x50, 0xeb, 0x36, 0x99, 0x27, 0xbd, 0x92, 0xcb, - 0xbb, 0xee, 0x37, 0x0e, 0x47, 0x06, 0xe1, 0xb2, 0x45, 0x59, 0x26, 0xbe, 0xeb, 0xcc, 0xbe, 0xbf, - 0xf2, 0xdc, 0x66, 0x3b, 0xbf, 0x15, 0x50, 0x0d, 0xb2, 0x9b, 0x90, 0xa9, 0x26, 0xec, 0x5d, 0x73, - 0xb9, 0xd7, 0xac, 0xfe, 0x23, 0xa1, 0x8d, 0x03, 0xbc, 0x21, 0x2c, 0xa2, 0x26, 0x3f, 0x7e, 0xaf, - 0x1a, 0x8c, 0x7b, 0x45, 0xb9, 0x88, 0xae, 0xc6, 0x76, 0xcd, 0xe3, 0x93, 0x5f, 0x5f, 0xfd, 0xec, - 0xfa, 0x1d, 0xf9, 0x76, 0xaf, 0x1f, 0xec, 0x3f, 0xf3, 0x0c, 0x54, 0x93, 0x4d, 0xe0, 0x90, 0xb1, - 0xfb, 0x79, 0x43, 0x34, 0xe0, 0x0a, 0x98, 0xe6, 0x48, 0x5b, 0x6a, 0xd7, 0x4f, 0x9b, 0xb0, 0xbc, - 0xa2, 0xc9, 0x25, 0x2a, 0xed, 0xfc, 0x78, 0x7c, 0x82, 0xe1, 0x33, 0xb6, 0xce, 0x8b, 0xb2, 0x59, - 0xed, 0xe7, 0x57, 0xaf, 0x9d, 0x68, 0x36, 0x5b, 0x70, 0x6e, 0xdf, 0x98, 0xb6, 0xeb, 0x74, 0x65, - 0x50, 0x49, 0x1a, 0x97, 0xf7, 0x25, 0x51, 0x7a, 0x54, 0xa0, 0x2d, 0x7c, 0x4d, 0xb4, 0x0f, 0xb3, - 0x47, 0x8f, 0x55, 0x17, 0x20, 0x62, 0x32, 0x0d, 0xbc, 0x85, 0x03, 0x80, 0xa8, 0xb8, 0x27, 0x2a, - 0x79, 0x1c, 0xd1, 0xbb, 0xd9, 0xee, 0x9b, 0xec, 0x26, 0x59, 0xe4, 0xd9, 0x15, 0x83, 0x1f, 0xf7, - 0xa2, 0xc5, 0xf4, 0x92, 0x75, 0x9b, 0x30, 0x77, 0x5c, 0xc4, 0xf4, 0xc8, 0x4b, 0x94, 0xde, 0x26, - 0x05, 0xa2, 0x1b, 0xf0, 0xd7, 0x24, 0x53, 0x03, 0x3b, 0xe8, 0xe0, 0x63, 0x72, 0xf7, 0xf1, 0xc6, - 0x3e, 0xeb, 0x56, 0x37, 0x37, 0x11, 0x22, 0xbe, 0x3e, 0x37, 0x37, 0xf8, 0xd0, 0xb4, 0x30, 0xb7, - 0xcd, 0xca, 0x85, 0x35, 0xb9, 0x61, 0x75, 0x88, 0xab, 0xbf, 0x0e, 0x4e, 0xba, 0x0b, 0x11, 0xa5, - 0xce, 0xb8, 0x04, 0x7c, 0x50, 0xcd, 0x74, 0xbb, 0x9a, 0x24, 0x50, 0xd1, 0x69, 0x79, 0xc6, 0x4c, - 0x56, 0x5a, 0x33, 0x59, 0x19, 0x42, 0x98, 0x0c, 0xa5, 0xfd, 0xfc, 0x69, 0x7a, 0x16, 0x66, 0xbd, - 0x1c, 0x01, 0x9d, 0x43, 0xb3, 0x77, 0x3e, 0x8c, 0x0d, 0x60, 0xd2, 0x2e, 0xad, 0x7f, 0x3a, 0x02, - 0x44, 0x78, 0x05, 0xc0, 0xd2, 0x56, 0xf6, 0x8b, 0x77, 0x87, 0x73, 0xc4, 0x64, 0x5f, 0x15, 0xb3, - 0x7a, 0xd3, 0x29, 0xa7, 0x97, 0x1f, 0x53, 0xd7, 0xe1, 0x0b, 0x03, 0x62, 0xa8, 0xf2, 0x32, 0xe1, - 0xf0, 0x49, 0xd1, 0x84, 0x28, 0xe3, 0x75, 0x15, 0x8b, 0x0f, 0x9d, 0xed, 0x6c, 0x52, 0x16, 0x43, - 0xc1, 0x59, 0xf0, 0x25, 0x98, 0x23, 0x2e, 0xc1, 0xb8, 0x8d, 0x49, 0x7e, 0x67, 0x30, 0x23, 0xe9, - 0xb2, 0xa4, 0xa3, 0x05, 0xcc, 0x8d, 0x08, 0xab, 0x46, 0xa5, 0x00, 0xac, 0x83, 0x37, 0x9e, 0x4b, - 0x3c, 0x52, 0x06, 0xcd, 0xd8, 0x58, 0x7c, 0x4a, 0x64, 0x10, 0x88, 0x2b, 0x79, 0x96, 0x92, 0x0e, - 0x70, 0x0b, 0xba, 0xab, 0x68, 0x21, 0x20, 0x04, 0x6f, 0x83, 0xb7, 0x62, 0x18, 0x7b, 0x3c, 0x0e, - 0xf1, 0x6c, 0x8f, 0x73, 0x85, 0x1f, 0x44, 0xd7, 0x6f, 0xee, 0x64, 0xe7, 0xa2, 0x1b, 0x40, 0x90, - 0x8d, 0xe9, 0xbf, 0x81, 0x2b, 0x57, 0x9e, 0xf0, 0x29, 0x5d, 0x8a, 0x96, 0x15, 0x03, 0xb5, 0x19, - 0x97, 0x97, 0xae, 0xe1, 0xf0, 0xd2, 0x56, 0xee, 0x2e, 0x6d, 0x72, 0x76, 0x4a, 0xe5, 0xd3, 0x18, - 0x04, 0x1d, 0x17, 0x12, 0xd4, 0x35, 0x50, 0x50, 0x05, 0x28, 0x84, 0x35, 0xae, 0x8c, 0xdd, 0x68, - 0x5a, 0xd9, 0x40, 0xa0, 0x37, 0xb4, 0x63, 0xf1, 0xc6, 0x34, 0xdc, 0xe3, 0xdb, 0x85, 0x09, 0x49, - 0xf0, 0x62, 0x5e, 0xf3, 0x98, 0x16, 0x18, 0x6c, 0xca, 0x0d, 0xab, 0x5d, 0x27, 0x21, 0x12, 0x79, - 0x5b, 0xba, 0x9a, 0xfd, 0xe5, 0xe5, 0x37, 0xba, 0x99, 0x2c, 0x12, 0x57, 0x7d, 0x96, 0xe5, 0xfc, - 0xa1, 0x53, 0x26, 0xa5, 0x8d, 0x02, 0xe8, 0xfb, 0xfb, 0x45, 0xa2, 0xb0, 0x20, 0xcf, 0xb8, 0x99, - 0xd0, 0x95, 0xb7, 0x6b, 0x8b, 0x28, 0x11, 0x11, 0x92, 0xe9, 0x1d, 0x31, 0x03, 0xa1, 0xbb, 0x7f, - 0x78, 0xc8, 0x97, 0x10, 0xa1, 0xdb, 0x77, 0x1d, 0xf3, 0xc2, 0x55, 0x24, 0x80, 0x0c, 0x5d, 0xac, - 0x22, 0xf5, 0x4c, 0x23, 0xde, 0x6b, 0xe3, 0x90, 0x19, 0x7c, 0x69, 0x83, 0xdb, 0xc2, 0x18, 0x37, - 0x16, 0xbb, 0xc9, 0x5b, 0xb7, 0xac, 0x31, 0xff, 0x58, 0x9d, 0x63, 0xbd, 0x50, 0xc6, 0xa6, 0x80, - 0x4a, 0x4f, 0xcf, 0x48, 0x51, 0xdd, 0x55, 0x8e, 0x9c, 0x16, 0xeb, 0x4b, 0xaa, 0x12, 0x5d, 0xc3, - 0xa8, 0xe5, 0xaa, 0x80, 0x50, 0x18, 0xba, 0xf9, 0x7c, 0xce, 0x83, 0x17, 0xe4, 0x23, 0x3c, 0xd8, - 0x37, 0x87, 0x2a, 0x11, 0x16, 0xbd, 0xf3, 0x45, 0xd5, 0x65, 0x9e, 0x22, 0x16, 0x17, 0xd1, 0x47, - 0x98, 0xaf, 0x00, 0xed, 0x7b, 0xbd, 0x9e, 0xbb, 0x57, 0x6b, 0x11, 0x5b, 0x8e, 0x48, 0x87, 0x7a, - 0xae, 0x14, 0xc0, 0x95, 0xd6, 0x36, 0x56, 0xb3, 0xd1, 0x09, 0x8e, 0x6f, 0xe7, 0xdd, 0x9b, 0x1f, - 0xf8, 0x82, 0xa5, 0x2e, 0xff, 0xba, 0x36, 0x7d, 0x15, 0x7e, 0x1d, 0x63, 0x17, 0x86, 0x32, 0xcc, - 0xd4, 0x41, 0xbb, 0x5b, 0xe5, 0x05, 0xbe, 0x72, 0x97, 0x8d, 0xef, 0x7e, 0xe1, 0x00, 0x41, 0x75, - 0x21, 0x5f, 0xd9, 0xb4, 0xf4, 0x2b, 0xa7, 0xad, 0x89, 0x3c, 0xb4, 0x8f, 0x6d, 0x82, 0xa2, 0x50, - 0x20, 0xbb, 0xbe, 0x9a, 0xc4, 0x0b, 0x89, 0x18, 0x81, 0x44, 0x15, 0xaa, 0x21, 0x99, 0xce, 0xdd, - 0xfe, 0xd2, 0xc2, 0x0f, 0xe6, 0x4a, 0x96, 0x2b, 0xd8, 0xf6, 0x8e, 0xf8, 0x66, 0xb9, 0x07, 0x1a, - 0x70, 0x6f, 0x08, 0x4f, 0xbc, 0x29, 0x3c, 0x9d, 0xe6, 0xf4, 0x49, 0x98, 0x06, 0x24, 0x9d, 0x34, - 0x20, 0xcd, 0x8b, 0x27, 0x6a, 0xff, 0xd5, 0x83, 0xc8, 0xe7, 0xcd, 0x51, 0x18, 0xf0, 0xe4, 0xf3, - 0x0d, 0x7b, 0x34, 0x56, 0x56, 0x1e, 0xbb, 0x9f, 0x8f, 0x7d, 0x7f, 0x23, 0x8e, 0xa0, 0x20, 0x79, - 0xb0, 0x31, 0x8e, 0x13, 0x98, 0x71, 0xac, 0x94, 0xbe, 0x82, 0x75, 0xd4, 0x5f, 0x86, 0x59, 0x17, - 0x8b, 0xa2, 0x75, 0x2d, 0xfb, 0x26, 0x19, 0x32, 0xe6, 0x85, 0xea, 0xff, 0x07, 0x96, 0xa2, 0x2c, - 0xa6, 0x8f, 0x62, 0x54, 0x13, 0x0a, 0xaa, 0xff, 0x79, 0x50, 0xb4, 0x9e, 0x22, 0xd3, 0x6c, 0x8e, - 0xff, 0x76, 0x4b, 0x0d, 0xcb, 0xb4, 0x71, 0x72, 0x09, 0xb2, 0x6d, 0x9f, 0x5c, 0x81, 0x38, 0xb9, - 0x9e, 0x44, 0x00, 0x83, 0xa4, 0x5e, 0x3a, 0x93, 0xc2, 0x1a, 0x2f, 0xe1, 0xb6, 0x4d, 0x93, 0xdb, - 0x2f, 0x3c, 0x12, 0xfe, 0x7b, 0x57, 0x3a, 0x33, 0x30, 0x14, 0xf2, 0xfb, 0x59, 0x03, 0xc6, 0x99, - 0xc9, 0x5d, 0xac, 0x0c, 0x55, 0xa9, 0x77, 0xe4, 0x69, 0x77, 0xf0, 0x9d, 0x84, 0x5e, 0x2a, 0x0b, - 0x45, 0xef, 0x2d, 0x5c, 0xd1, 0x22, 0xbe, 0x61, 0xbe, 0x48, 0xce, 0xe2, 0xaf, 0xb8, 0x7b, 0x2a, - 0x63, 0x67, 0xa6, 0xc2, 0x4b, 0x5a, 0x67, 0xe1, 0x23, 0xac, 0x10, 0xb5, 0xd3, 0x38, 0x07, 0xa9, - 0x29, 0x93, 0x15, 0xa2, 0x0a, 0x6d, 0xac, 0xd0, 0xc6, 0xbc, 0x90, 0xc5, 0x0c, 0x6d, 0x32, 0x94, - 0x9f, 0x13, 0x28, 0x0a, 0x1c, 0xa1, 0xdf, 0xde, 0x74, 0x18, 0x57, 0x49, 0x63, 0x14, 0x3f, 0x27, - 0xe6, 0x20, 0xae, 0x92, 0xbf, 0x6e, 0x0c, 0x1a, 0x2d, 0x0c, 0x0d, 0x96, 0xd0, 0xd4, 0x02, 0x41, - 0x57, 0x35, 0x57, 0x26, 0x3f, 0x3c, 0x0a, 0x85, 0x5a, 0x61, 0xdc, 0x51, 0x1f, 0x5c, 0x57, 0x89, - 0xad, 0xe6, 0xd8, 0xb1, 0x80, 0xba, 0x74, 0x47, 0x3f, 0x47, 0x77, 0xc9, 0xd5, 0xf5, 0x95, 0x23, - 0x36, 0x1e, 0x34, 0xd5, 0xa5, 0x14, 0x07, 0x68, 0xe6, 0x22, 0x82, 0x7a, 0xd6, 0x93, 0xa0, 0xee, - 0x98, 0x8e, 0xb5, 0x81, 0x37, 0xd0, 0xbf, 0x10, 0x8e, 0xc9, 0xb0, 0x71, 0x33, 0xdd, 0x6f, 0x0d, - 0xe3, 0x30, 0xb6, 0x90, 0x0e, 0x81, 0xac, 0x6c, 0x1c, 0x5d, 0x6f, 0xda, 0x54, 0xdb, 0x18, 0x31, - 0x17, 0xc4, 0x96, 0x01, 0x35, 0x6b, 0x75, 0xee, 0x79, 0xda, 0xdb, 0xf5, 0x68, 0x5f, 0xdd, 0xd5, - 0x61, 0x23, 0x10, 0xd3, 0x4a, 0x8d, 0x35, 0xfd, 0x8d, 0xa4, 0x7f, 0x8f, 0x50, 0xf5, 0x2c, 0x4a, - 0xda, 0x00, 0x2b, 0x6e, 0x54, 0xaa, 0xb9, 0x51, 0x5f, 0x25, 0x84, 0x51, 0x6e, 0x41, 0xb5, 0x6c, - 0x34, 0x01, 0x36, 0xf0, 0xfd, 0x95, 0x48, 0x7e, 0x22, 0xf3, 0x9e, 0x38, 0xfb, 0x9c, 0x4a, 0xc4, - 0x39, 0xd8, 0x1f, 0xc8, 0xbb, 0xfb, 0x37, 0x27, 0xc7, 0x07, 0xfb, 0xae, 0x48, 0x22, 0xdc, 0x17, - 0x2f, 0x5f, 0x98, 0x2f, 0x5f, 0xec, 0x3f, 0x7f, 0xee, 0x4a, 0x57, 0x70, 0x77, 0x6c, 0xf6, 0x90, - 0x59, 0xd7, 0xef, 0x2e, 0x4c, 0x70, 0x61, 0x85, 0xce, 0x9a, 0xaa, 0x71, 0xdc, 0x4b, 0x8a, 0x81, - 0x78, 0x5e, 0x15, 0xd8, 0x84, 0x5a, 0x48, 0xc7, 0xd9, 0xc2, 0x45, 0xb7, 0x8f, 0x38, 0x0e, 0x6c, - 0x86, 0x8e, 0x24, 0xa1, 0xbd, 0x8c, 0x23, 0x8b, 0x3c, 0xc8, 0x07, 0xa1, 0x23, 0xe7, 0x0f, 0x60, - 0xbf, 0xca, 0xdc, 0x12, 0x2b, 0x29, 0x63, 0x84, 0x3c, 0x8d, 0x16, 0x71, 0x47, 0xe8, 0xc7, 0xbc, - 0x7a, 0xb9, 0x72, 0x6a, 0x29, 0x3f, 0x52, 0xdf, 0x4b, 0x89, 0x2e, 0x57, 0x46, 0xed, 0x88, 0x50, - 0xca, 0x6f, 0x4e, 0xf3, 0x33, 0x74, 0x18, 0x89, 0xcf, 0xb3, 0x5a, 0x57, 0x72, 0xde, 0x4e, 0xd3, - 0x22, 0x41, 0x7a, 0x89, 0x50, 0x1a, 0x24, 0x4c, 0x5b, 0x39, 0x4b, 0xc3, 0x87, 0x1d, 0xa9, 0x48, - 0xfc, 0xfa, 0x21, 0xa2, 0x59, 0x58, 0xee, 0x88, 0x6b, 0x0e, 0x31, 0x5f, 0x91, 0x67, 0x5e, 0x75, - 0x9c, 0x53, 0x31, 0x2f, 0x54, 0x24, 0x72, 0xd3, 0x2c, 0x59, 0x39, 0x92, 0x50, 0xed, 0x20, 0x0c, - 0x23, 0xe8, 0x3c, 0xc6, 0xee, 0xfb, 0xbd, 0x57, 0xee, 0x80, 0x9f, 0x97, 0xa0, 0x7d, 0xe7, 0x24, - 0x30, 0x76, 0xbb, 0xcb, 0x25, 0x4d, 0xc3, 0x6c, 0x7a, 0x14, 0x8c, 0xcb, 0x6e, 0xe8, 0xbe, 0x95, - 0xe1, 0x7f, 0x1c, 0xd8, 0xc9, 0xe1, 0x56, 0x5b, 0xb9, 0xd5, 0xf7, 0xdc, 0x01, 0x35, 0x04, 0xab, - 0x6b, 0x54, 0x7b, 0x9f, 0x3b, 0x39, 0xae, 0xdf, 0x75, 0xb8, 0xa0, 0xd2, 0x99, 0x43, 0x96, 0xef, - 0xc1, 0x5e, 0x01, 0x32, 0xe7, 0x1a, 0xad, 0x0c, 0x68, 0xc4, 0x52, 0xfc, 0xab, 0xe5, 0xfa, 0xd7, - 0x42, 0x25, 0xa1, 0x9b, 0x1a, 0x40, 0xba, 0xe7, 0x49, 0x94, 0x82, 0x98, 0x2d, 0xc3, 0x67, 0xb6, - 0xae, 0xd2, 0x56, 0xc8, 0x4a, 0x2d, 0xe1, 0x86, 0xba, 0x58, 0x5e, 0xb7, 0x3f, 0xa1, 0x8c, 0x45, - 0x6f, 0x0e, 0xee, 0x13, 0xd6, 0x68, 0x64, 0xd7, 0xdc, 0x21, 0x5b, 0xa8, 0xab, 0xf4, 0xb3, 0xc8, - 0x07, 0xf3, 0xa7, 0xef, 0x90, 0x5b, 0x15, 0x96, 0xfa, 0x02, 0x51, 0xde, 0xe6, 0xf1, 0x85, 0xa3, - 0xcf, 0x9a, 0x8d, 0xb8, 0x57, 0x5e, 0x26, 0x73, 0xe4, 0x48, 0x02, 0xb2, 0x0b, 0x47, 0x92, 0x60, - 0x58, 0xd5, 0x89, 0x85, 0x2b, 0x42, 0x73, 0x0e, 0x6c, 0x87, 0x98, 0x9d, 0x78, 0x80, 0x36, 0x10, - 0x6b, 0x23, 0x7e, 0xf4, 0xcf, 0x96, 0x68, 0x63, 0xd3, 0x2d, 0xc5, 0xa9, 0xe3, 0x45, 0x8f, 0x68, - 0x2f, 0x10, 0x2d, 0xb9, 0x27, 0xb0, 0xe7, 0x76, 0x97, 0x35, 0x10, 0x42, 0x8f, 0x12, 0x5b, 0x26, - 0xd4, 0xdd, 0xf0, 0x02, 0x16, 0xb1, 0x20, 0x94, 0x34, 0xe1, 0xb8, 0x47, 0xf8, 0xa9, 0xba, 0x4a, - 0x3b, 0xee, 0xfc, 0x8e, 0xd0, 0x05, 0xf6, 0xd5, 0xc9, 0x4c, 0xfc, 0x8b, 0x36, 0x7d, 0x1c, 0x4c, - 0xff, 0x54, 0xa4, 0x6f, 0x7e, 0x87, 0x35, 0x7a, 0x4a, 0xf5, 0x53, 0xdf, 0x41, 0xcb, 0x79, 0xe2, - 0x4b, 0xeb, 0xff, 0x4f, 0xa6, 0x48, 0x1a, 0xba, 0xbb, 0x4b, 0xe5, 0xbf, 0xeb, 0xba, 0x8f, 0xcd, - 0x16, 0x5f, 0x8e, 0x64, 0x98, 0x31, 0x1a, 0xd5, 0x31, 0x1d, 0xfb, 0xaf, 0x4b, 0x22, 0x92, 0x62, - 0x96, 0xbc, 0xe1, 0xda, 0xb9, 0x94, 0x66, 0x00, 0xeb, 0x26, 0xf4, 0x58, 0xbd, 0xb6, 0x54, 0x4a, - 0x29, 0xb5, 0x50, 0x30, 0x73, 0x23, 0x15, 0x47, 0xd8, 0xe2, 0x8a, 0xa7, 0x3b, 0x57, 0x57, 0xab, - 0x51, 0xfa, 0xd8, 0x1a, 0x2c, 0xe2, 0xd9, 0x22, 0xba, 0x95, 0xb0, 0x76, 0xd4, 0xdd, 0x4e, 0x9b, - 0xc3, 0xee, 0x57, 0xb2, 0x25, 0xa7, 0x87, 0x7e, 0xdd, 0x47, 0x57, 0xe5, 0x41, 0xcc, 0x0e, 0x96, - 0xa1, 0x07, 0xa3, 0x20, 0x1a, 0x02, 0x06, 0x95, 0x89, 0x92, 0xa6, 0xc7, 0xae, 0x1e, 0x87, 0x37, - 0xe4, 0x30, 0x2c, 0xe2, 0xa4, 0x6c, 0xcc, 0x61, 0xe9, 0x99, 0xce, 0x2a, 0x8d, 0xf9, 0xe5, 0x9b, - 0x54, 0x33, 0xe0, 0x43, 0x6d, 0x1d, 0x5a, 0x97, 0x9d, 0xc6, 0x7c, 0x4c, 0x6c, 0x55, 0xca, 0xe2, - 0x4d, 0x85, 0x14, 0x77, 0x84, 0x37, 0x71, 0x9f, 0xd3, 0xbe, 0xc9, 0xe8, 0x62, 0x1c, 0x81, 0x25, - 0x44, 0x70, 0x5d, 0xbf, 0x91, 0x00, 0x04, 0x0a, 0x79, 0xf9, 0x1e, 0x57, 0x6d, 0x9c, 0x94, 0x54, - 0x5e, 0xf0, 0xc8, 0xdb, 0x5e, 0x31, 0x87, 0xc1, 0x30, 0xae, 0x7d, 0x11, 0x62, 0x4c, 0x8a, 0x88, - 0x66, 0x91, 0x85, 0x30, 0xad, 0x16, 0x9a, 0x47, 0x3f, 0xf7, 0x23, 0x3f, 0x21, 0x16, 0x05, 0x80, - 0xd9, 0xfd, 0x64, 0x9e, 0x97, 0x84, 0xb8, 0xcc, 0x43, 0x02, 0xc9, 0x6f, 0x71, 0x9b, 0x96, 0xd2, - 0xcf, 0xfe, 0x19, 0x22, 0x9a, 0x21, 0xdf, 0x61, 0x44, 0xff, 0x1c, 0x9c, 0x0d, 0xf9, 0x8a, 0x8c, - 0x3e, 0x76, 0x17, 0x74, 0x6c, 0x67, 0x5e, 0x0a, 0x78, 0xbe, 0xb5, 0xf2, 0xf5, 0x89, 0x94, 0x9d, - 0x8d, 0xb2, 0x68, 0xb5, 0x4c, 0x37, 0xa5, 0x43, 0x99, 0xd4, 0x37, 0x7d, 0xfd, 0xb3, 0xdd, 0xfe, - 0xd0, 0x86, 0x4f, 0xd7, 0x82, 0x65, 0xe0, 0xb8, 0x93, 0x86, 0x66, 0x01, 0xa6, 0x2d, 0xb7, 0x4b, - 0xfa, 0x00, 0xd9, 0x2a, 0xd9, 0x3f, 0x43, 0x84, 0x6a, 0xab, 0x6c, 0x34, 0xea, 0x3f, 0xdf, 0x26, - 0xc8, 0x1a, 0x1f, 0x8f, 0x46, 0x2f, 0xb8, 0x94, 0xa1, 0xde, 0xb6, 0x7a, 0x5e, 0x6e, 0x21, 0x56, - 0x35, 0xbc, 0xcb, 0x92, 0x30, 0xde, 0x53, 0xf3, 0xfd, 0x2d, 0x87, 0xfa, 0x29, 0xc5, 0x5d, 0xf8, - 0x39, 0x1c, 0x3d, 0xc0, 0xc8, 0xf9, 0xb8, 0x99, 0xf0, 0x71, 0x87, 0xe1, 0xe1, 0x14, 0x5c, 0x7e, - 0x73, 0xae, 0xc2, 0xe3, 0x9c, 0xd7, 0x86, 0xe1, 0x03, 0x47, 0x04, 0x6f, 0xde, 0xbd, 0x90, 0xd1, - 0x9b, 0x3b, 0x55, 0xee, 0x2c, 0x38, 0x2c, 0x38, 0x7c, 0xc5, 0xfe, 0x9d, 0x27, 0x19, 0x4e, 0x88, - 0xe1, 0xb9, 0x8d, 0x8d, 0xab, 0x7b, 0x9a, 0x0d, 0x6e, 0x7d, 0x68, 0x8f, 0x4d, 0xa3, 0xdb, 0xc6, - 0xf6, 0x65, 0x1e, 0xa1, 0x1a, 0x63, 0x07, 0x13, 0x17, 0x72, 0x2f, 0x55, 0x5b, 0xd8, 0x32, 0xbb, - 0xe0, 0xfc, 0x61, 0x72, 0x0b, 0x1e, 0xe5, 0xb5, 0xe0, 0x51, 0xb0, 0xbf, 0x3b, 0x5e, 0x9b, 0x1a, - 0x19, 0xb0, 0xe6, 0x52, 0x8d, 0xfc, 0xb8, 0xb2, 0x98, 0x6b, 0x1a, 0x82, 0x2c, 0x3a, 0x00, 0x9d, - 0xc1, 0x73, 0xac, 0x35, 0x69, 0x26, 0x7f, 0xce, 0x5f, 0x7c, 0x9e, 0x12, 0x18, 0x43, 0x83, 0x98, - 0x80, 0x0b, 0x83, 0x06, 0xf8, 0xe8, 0xd1, 0x6b, 0xeb, 0x06, 0xdf, 0xb0, 0xe6, 0x58, 0x0a, 0x2e, - 0x30, 0x35, 0x96, 0x82, 0x49, 0x2d, 0xa4, 0x60, 0x19, 0x5b, 0x04, 0x94, 0xf3, 0x15, 0x3f, 0x09, - 0xe6, 0xe2, 0x55, 0x58, 0x21, 0x19, 0x2e, 0x53, 0x32, 0xaa, 0x22, 0x99, 0x73, 0x54, 0x36, 0x03, - 0x5a, 0x11, 0xbb, 0x1b, 0xa9, 0x22, 0xbe, 0x0d, 0x15, 0x66, 0x78, 0x03, 0x60, 0x5e, 0x1a, 0x8a, - 0xab, 0x12, 0x2e, 0xd9, 0xcb, 0x54, 0x36, 0xc2, 0x8e, 0x71, 0x77, 0x90, 0x7a, 0xde, 0x11, 0xdb, - 0x30, 0xa7, 0xdd, 0x70, 0xdf, 0x43, 0xcf, 0x92, 0x1d, 0xa7, 0xb1, 0x7d, 0x35, 0x0f, 0x02, 0xd7, - 0xc8, 0x09, 0x48, 0x1c, 0x3c, 0x4a, 0x83, 0xb9, 0x5d, 0x7a, 0x20, 0x4a, 0x83, 0xb9, 0x2a, 0x95, - 0x49, 0x0d, 0x06, 0x6c, 0x84, 0x0d, 0x77, 0xd5, 0xe9, 0xee, 0xdc, 0x73, 0x97, 0x82, 0x37, 0x3e, - 0x6f, 0x22, 0xea, 0xcb, 0x60, 0x16, 0x5f, 0xf8, 0x62, 0xe2, 0x30, 0x51, 0xdf, 0x28, 0x27, 0xd7, - 0xe9, 0xee, 0x33, 0x4f, 0x94, 0x78, 0xe7, 0x74, 0x24, 0x8a, 0x08, 0xff, 0x60, 0x82, 0xd6, 0x45, - 0xc3, 0x68, 0xa8, 0x6e, 0xe1, 0xc2, 0xb8, 0xe2, 0x41, 0x11, 0xe6, 0xf2, 0x1a, 0xd2, 0x6a, 0x70, - 0x5d, 0xdb, 0xda, 0x27, 0x32, 0xbf, 0xae, 0x38, 0x02, 0x13, 0x2c, 0x6f, 0x22, 0xdc, 0x34, 0x9a, - 0x66, 0x3f, 0x62, 0x7e, 0xad, 0x08, 0xc2, 0x86, 0xef, 0x0d, 0xbb, 0xf1, 0xab, 0x68, 0x52, 0x5f, - 0xd8, 0x67, 0x9b, 0x2b, 0x0a, 0x8f, 0x55, 0x46, 0x98, 0x82, 0x6f, 0xc5, 0x8a, 0xd7, 0x0d, 0x04, - 0x44, 0x71, 0xc6, 0xd4, 0x72, 0x61, 0xbc, 0x2c, 0xcf, 0xbd, 0x15, 0x27, 0x84, 0xc6, 0x7b, 0x39, - 0x1e, 0xbf, 0x6c, 0xaf, 0x11, 0xeb, 0x1a, 0xab, 0x6a, 0xc7, 0x60, 0x50, 0xc1, 0x75, 0xc1, 0x95, - 0x06, 0xd6, 0x1e, 0xdf, 0x26, 0x97, 0x24, 0x2d, 0x66, 0x21, 0x3c, 0x11, 0x48, 0x4e, 0x2b, 0x5d, - 0xe4, 0x90, 0x29, 0xd9, 0xf3, 0xd5, 0xed, 0xb3, 0x0a, 0xd8, 0xf3, 0x05, 0xaa, 0x9b, 0x9d, 0x5c, - 0x2c, 0x0a, 0x05, 0x68, 0xda, 0x0e, 0x06, 0xd7, 0x50, 0xa0, 0xe6, 0x6b, 0x06, 0x53, 0x4c, 0x75, - 0x9d, 0xa1, 0x14, 0x47, 0x68, 0x53, 0xa8, 0xab, 0x68, 0x3e, 0x49, 0xa6, 0x31, 0xed, 0xb9, 0x72, - 0x8f, 0x36, 0x40, 0x4e, 0x47, 0xe2, 0x96, 0x70, 0xcd, 0x8d, 0x70, 0x58, 0xa6, 0xa3, 0xfe, 0xa7, - 0x4f, 0xf9, 0x28, 0xf0, 0x84, 0x61, 0xf1, 0xb9, 0xd3, 0x01, 0x15, 0x76, 0x6e, 0x92, 0x45, 0x75, - 0x1d, 0xa5, 0x9e, 0xe4, 0x55, 0x54, 0x5f, 0x34, 0x7c, 0xcb, 0x16, 0x3f, 0x5b, 0x36, 0x17, 0xe4, - 0xf8, 0x55, 0x27, 0x66, 0x4f, 0x1f, 0xcb, 0x07, 0x0a, 0x57, 0x6c, 0xde, 0x63, 0x27, 0x30, 0xfb, - 0x34, 0xad, 0xf1, 0x04, 0x52, 0x3b, 0x65, 0x9f, 0x66, 0x5a, 0xb7, 0xc8, 0xc6, 0x70, 0x7f, 0x49, - 0x93, 0xb4, 0x78, 0x56, 0x30, 0x2d, 0xd8, 0xf9, 0xd4, 0x5e, 0x47, 0x70, 0x42, 0xb0, 0x5e, 0x2f, - 0xf3, 0x73, 0x6f, 0x58, 0x22, 0xc8, 0x9a, 0xba, 0x01, 0xb1, 0x5e, 0x4b, 0x63, 0x9b, 0x4e, 0xb9, - 0xba, 0x2b, 0x75, 0xaf, 0xcf, 0x3d, 0x17, 0xc6, 0x14, 0x54, 0x65, 0xba, 0xc8, 0xd3, 0x94, 0x16, - 0x34, 0xff, 0x47, 0x12, 0xdf, 0x76, 0x1e, 0x26, 0xf1, 0x65, 0x74, 0x93, 0x20, 0x29, 0x8c, 0x72, - 0xc2, 0xe2, 0xa8, 0x24, 0x03, 0x77, 0xca, 0x6e, 0xb8, 0x88, 0xb3, 0xef, 0x77, 0xd6, 0xc1, 0xf5, - 0x47, 0x3a, 0x39, 0xe7, 0x34, 0xcc, 0x4f, 0x74, 0xed, 0xad, 0xac, 0xd9, 0x6f, 0x6f, 0xe5, 0x9a, - 0x09, 0x3b, 0x67, 0x96, 0x9e, 0x8f, 0x71, 0x7b, 0x66, 0x79, 0x06, 0x21, 0x52, 0x1a, 0xdf, 0xa4, - 0xc1, 0xd5, 0x0c, 0x6e, 0x32, 0x46, 0xed, 0xf7, 0xa9, 0x55, 0x35, 0x4b, 0x5f, 0xad, 0xab, 0x79, - 0x72, 0x9f, 0x4d, 0xad, 0xba, 0x2a, 0xa8, 0x9a, 0xf5, 0x81, 0x69, 0xdc, 0x22, 0x60, 0x3c, 0xa9, - 0x83, 0xa0, 0x81, 0x6d, 0xec, 0xc4, 0xcd, 0x17, 0x3f, 0xde, 0xd5, 0x65, 0xb5, 0xa6, 0x48, 0x92, - 0x90, 0xef, 0x17, 0x89, 0xeb, 0xad, 0x7d, 0x7b, 0x52, 0xc4, 0xf1, 0xec, 0x91, 0xf7, 0x6f, 0x71, - 0x5c, 0x96, 0x49, 0x75, 0xff, 0x48, 0x9d, 0xdf, 0xf1, 0x4e, 0x98, 0xfb, 0x28, 0x25, 0xd4, 0x6d, - 0x6b, 0x50, 0x1f, 0x19, 0x68, 0x46, 0x35, 0x84, 0xfd, 0xa2, 0x9e, 0x39, 0xd8, 0x8b, 0x7c, 0xa6, - 0x86, 0x3a, 0x2b, 0xd4, 0x6e, 0x65, 0x12, 0xcc, 0x9d, 0x66, 0x89, 0x14, 0x9c, 0x3a, 0xc6, 0xe6, - 0xe6, 0xcf, 0x85, 0x77, 0xa6, 0xe0, 0x28, 0x94, 0x54, 0x73, 0x76, 0xaa, 0xd9, 0x0d, 0x23, 0xcc, - 0xdc, 0xd2, 0x3d, 0x13, 0x48, 0x4e, 0xb8, 0x24, 0x15, 0x97, 0x61, 0xed, 0xf9, 0x59, 0xad, 0x88, - 0x09, 0xea, 0x53, 0x21, 0x26, 0x64, 0x06, 0x25, 0x17, 0xf1, 0x3b, 0x41, 0x00, 0x54, 0x0d, 0x7f, - 0x05, 0x2e, 0x96, 0x32, 0x4e, 0x0d, 0xce, 0xaa, 0x09, 0x09, 0x12, 0x96, 0x7e, 0xee, 0x37, 0x06, - 0x0c, 0xd1, 0x6c, 0x66, 0x02, 0xb0, 0x6e, 0x52, 0x81, 0x40, 0xcd, 0xf9, 0x54, 0x52, 0xf2, 0x53, - 0xd3, 0x49, 0x02, 0x77, 0xcb, 0x4c, 0xfe, 0x78, 0xf7, 0x9f, 0x9c, 0xc8, 0xa1, 0x38, 0x37, 0x36, - 0x9f, 0x1a, 0x05, 0x0e, 0x1d, 0x10, 0xe9, 0x26, 0xd3, 0x23, 0x31, 0xf6, 0x57, 0xf8, 0x78, 0x08, - 0x86, 0x4d, 0x28, 0x4d, 0xf1, 0x5b, 0xa3, 0x35, 0x67, 0x18, 0x23, 0x2a, 0x7c, 0x05, 0x63, 0x2e, - 0xb6, 0x8f, 0x0b, 0x58, 0x58, 0xcb, 0x17, 0x63, 0x97, 0xdf, 0x41, 0x8d, 0xf0, 0xaf, 0x4e, 0x50, - 0xdc, 0xc1, 0x2d, 0xc4, 0x28, 0x41, 0x4a, 0x11, 0xcf, 0x95, 0xe2, 0x19, 0xbe, 0x2d, 0xc6, 0xfc, - 0x17, 0xee, 0x7a, 0x4a, 0xa3, 0x38, 0xda, 0x17, 0x96, 0x75, 0x0e, 0xa2, 0x22, 0x0b, 0xdb, 0x3a, - 0x06, 0x21, 0xb5, 0x6d, 0x56, 0xce, 0x39, 0x3c, 0x41, 0x02, 0x8d, 0x34, 0x1d, 0x74, 0xec, 0xb3, - 0x02, 0x50, 0x70, 0x4b, 0xdd, 0x4b, 0xaf, 0x96, 0xcc, 0xb4, 0x83, 0xf5, 0x92, 0xda, 0x32, 0x1e, - 0x00, 0x6e, 0x0e, 0x57, 0xf6, 0xa6, 0x1a, 0x82, 0x84, 0xdf, 0x0a, 0x09, 0x65, 0xf8, 0x34, 0x5d, - 0x15, 0xc7, 0x56, 0x18, 0x7a, 0xe4, 0xbc, 0xef, 0x65, 0x63, 0xf1, 0x4f, 0x53, 0x87, 0xc1, 0x85, - 0xbe, 0xcc, 0x55, 0xf6, 0xc0, 0x29, 0x05, 0x92, 0xa9, 0xca, 0x8e, 0x10, 0x9c, 0x8d, 0x20, 0xc8, - 0xd6, 0x6d, 0x2b, 0xf7, 0xf0, 0x87, 0xdb, 0xf2, 0xd3, 0xa7, 0x4e, 0x07, 0x4e, 0x9f, 0xf1, 0xad, - 0xa3, 0xfd, 0x42, 0x89, 0xa8, 0x94, 0xac, 0xb6, 0x63, 0x2d, 0x9e, 0xd0, 0xdd, 0x35, 0x63, 0x41, - 0x5c, 0xe6, 0x65, 0xc5, 0x7a, 0x93, 0xae, 0xbb, 0x77, 0x5b, 0xc2, 0x7d, 0x09, 0xf6, 0x41, 0x65, - 0x19, 0x99, 0x39, 0xfc, 0xb4, 0x29, 0x8f, 0x19, 0x6a, 0x81, 0x15, 0x02, 0x9e, 0x90, 0xc4, 0xd9, - 0xd6, 0xc9, 0x7b, 0xb0, 0x1c, 0x68, 0x0d, 0x0b, 0x79, 0xcf, 0x37, 0x7e, 0x84, 0x32, 0xdd, 0x97, - 0x0e, 0x40, 0xa9, 0xe3, 0x9e, 0xac, 0x2a, 0xfa, 0x36, 0x74, 0xfe, 0x0d, 0xbe, 0x7b, 0xe9, 0x6a, - 0xdb, 0x4c, 0xa8, 0x02, 0x99, 0xc7, 0x52, 0x01, 0x48, 0x4b, 0x61, 0xae, 0xa9, 0xcd, 0x38, 0x4b, - 0xff, 0x11, 0xcb, 0xcd, 0xcc, 0x2f, 0x95, 0xe5, 0x66, 0x66, 0x58, 0x6e, 0x66, 0xca, 0x72, 0x33, - 0x53, 0x96, 0x9b, 0x59, 0x6d, 0xb9, 0x99, 0x29, 0xcb, 0xcd, 0x72, 0xd5, 0x72, 0xb3, 0x5c, 0x67, - 0xb9, 0x59, 0x9a, 0x96, 0x9b, 0xe5, 0x8a, 0xe5, 0x66, 0xd9, 0x66, 0xb9, 0x29, 0xe2, 0x8c, 0x6e, - 0x6f, 0x5b, 0x86, 0x94, 0xca, 0x1c, 0xb7, 0x0c, 0xd5, 0x08, 0xf5, 0x5e, 0x67, 0x7f, 0xa9, 0xb1, - 0xfc, 0x77, 0x50, 0x0d, 0xad, 0x3d, 0x5a, 0xfa, 0x29, 0xf4, 0xa5, 0xd1, 0x4c, 0x24, 0x65, 0xe4, - 0x30, 0xcc, 0xb7, 0x48, 0xbc, 0xcc, 0x3e, 0xc4, 0xd6, 0xe2, 0x7f, 0x86, 0x0f, 0xb6, 0xf2, 0x3c, - 0x96, 0x6d, 0xc1, 0xb3, 0xdc, 0x6a, 0xea, 0x16, 0x79, 0x20, 0xe1, 0x9a, 0xf7, 0xb0, 0x73, 0xb3, - 0x33, 0x40, 0x44, 0x81, 0xa5, 0x6b, 0x1b, 0x9d, 0x9a, 0x81, 0x5b, 0x2c, 0x75, 0xee, 0xc3, 0x16, - 0xbc, 0xa0, 0xd5, 0x20, 0x7b, 0xb7, 0xe5, 0x68, 0xb7, 0x6f, 0x39, 0xf4, 0x88, 0xed, 0xe0, 0x1f, - 0x5a, 0xae, 0xd4, 0xf5, 0x08, 0x95, 0x57, 0x39, 0x30, 0x36, 0x96, 0xba, 0x23, 0x68, 0x6c, 0x10, - 0xd3, 0x15, 0xe9, 0x2b, 0xfd, 0x26, 0x0b, 0x20, 0xdd, 0xb7, 0x62, 0x98, 0xc6, 0x70, 0xc8, 0xd7, - 0xb8, 0x97, 0xa5, 0xa8, 0x28, 0x62, 0xb1, 0xf2, 0xaf, 0xd9, 0xf5, 0x42, 0x46, 0x64, 0xe5, 0x9f, - 0x95, 0xa8, 0xfa, 0x63, 0x04, 0x8f, 0x79, 0x14, 0xcc, 0xe9, 0xa9, 0x0e, 0x05, 0x1b, 0xf7, 0xae, - 0x67, 0x45, 0xc6, 0x33, 0xd0, 0x88, 0xc9, 0x4a, 0xd2, 0x4f, 0x7a, 0x14, 0x8c, 0x61, 0x97, 0x38, - 0xc0, 0xb3, 0x00, 0xa6, 0xaa, 0x0c, 0x28, 0x98, 0x1c, 0xb2, 0x41, 0xd9, 0x5e, 0x3f, 0x90, 0xe8, - 0x1e, 0xf8, 0xc8, 0x18, 0xd3, 0x62, 0x7b, 0xd7, 0xd0, 0xea, 0xb5, 0x58, 0xd4, 0xb1, 0x7e, 0x8f, - 0x2d, 0x5b, 0x61, 0x43, 0x57, 0x9d, 0xe1, 0x38, 0xf1, 0x1e, 0x68, 0xf5, 0x84, 0xcc, 0xba, 0xcc, - 0xba, 0xdd, 0xa5, 0x40, 0x24, 0x6d, 0x65, 0x87, 0x99, 0x4b, 0x95, 0x5b, 0x9a, 0xa1, 0xd4, 0x7f, - 0x9f, 0x3b, 0xaa, 0x6b, 0xa9, 0xc7, 0x67, 0x0a, 0xa6, 0xf9, 0x45, 0x6f, 0xa8, 0x75, 0x3d, 0x61, - 0x8a, 0x08, 0x74, 0xd2, 0xb4, 0xb6, 0x25, 0xf8, 0x87, 0xc1, 0xa3, 0xe7, 0x75, 0xae, 0xd8, 0x78, - 0x04, 0x8e, 0x7d, 0x77, 0x57, 0x5e, 0x18, 0xf9, 0x89, 0xbf, 0xf0, 0xa7, 0x0d, 0x45, 0x16, 0x37, - 0x2c, 0x94, 0x58, 0x51, 0xa8, 0x7e, 0x40, 0x81, 0x95, 0xd4, 0xbf, 0xfa, 0xc8, 0x45, 0xab, 0x7f, - 0xed, 0x9f, 0xd5, 0x3c, 0xd8, 0xb4, 0x2e, 0x3e, 0x38, 0xf3, 0xbc, 0x81, 0xd1, 0x86, 0x56, 0x66, - 0x25, 0x46, 0x91, 0x50, 0x64, 0x2d, 0x58, 0x91, 0xa5, 0x4a, 0xdb, 0x5a, 0x1b, 0x8d, 0xf6, 0x9f, - 0x6d, 0xb3, 0x6e, 0xd1, 0xcf, 0x1f, 0x11, 0x31, 0xa0, 0xda, 0x72, 0xbb, 0x51, 0xd7, 0xf5, 0xdd, - 0x6e, 0xc2, 0x7f, 0x17, 0x30, 0xc1, 0xac, 0x5b, 0x14, 0x81, 0x82, 0xa9, 0x85, 0x5a, 0xac, 0x9b, - 0xf2, 0x65, 0xa6, 0x8e, 0x76, 0x82, 0x50, 0xbf, 0x9e, 0xf6, 0x4b, 0xd0, 0x7c, 0xa6, 0x44, 0x1f, - 0xf9, 0x3d, 0x2a, 0x9d, 0xf9, 0xab, 0xdc, 0xac, 0xac, 0x95, 0xf6, 0xca, 0x3b, 0xbf, 0x9d, 0x97, - 0xd5, 0x35, 0x92, 0x3b, 0x3f, 0xee, 0xb1, 0x63, 0x3f, 0x7b, 0x35, 0xc8, 0x67, 0xb1, 0x32, 0x33, - 0x36, 0xf6, 0x94, 0x97, 0x9c, 0xea, 0x85, 0x50, 0x9f, 0x04, 0x03, 0x7a, 0x59, 0xdf, 0xfe, 0x70, - 0x1e, 0x59, 0x67, 0xae, 0x0d, 0x5d, 0xb7, 0x2c, 0x05, 0x4a, 0xbf, 0x8f, 0xda, 0x30, 0xf1, 0x8e, - 0xb3, 0xfc, 0xfa, 0xe2, 0xd2, 0x29, 0x8b, 0x68, 0x1a, 0xc3, 0x35, 0xb3, 0x84, 0x6b, 0xac, 0xf0, - 0x3c, 0x68, 0x7c, 0xb2, 0x8f, 0x4f, 0xa4, 0xcb, 0x36, 0x7a, 0x90, 0xb7, 0x69, 0x56, 0x9d, 0x03, - 0xd4, 0xf9, 0x39, 0x29, 0x4b, 0x9c, 0xfa, 0x6f, 0x7f, 0xe5, 0xcb, 0xa6, 0x46, 0x95, 0x97, 0xa8, - 0xf2, 0xca, 0x80, 0xcc, 0xe1, 0x61, 0x38, 0x97, 0x51, 0xe9, 0xe4, 0x53, 0xda, 0xb4, 0xb8, 0xc8, - 0x5b, 0x1a, 0xc8, 0xcf, 0x07, 0x16, 0x1b, 0xd1, 0x72, 0xc5, 0xae, 0x3b, 0xa0, 0x1f, 0x33, 0xf6, - 0x99, 0x30, 0x63, 0x31, 0xa7, 0x74, 0x6e, 0xa6, 0x66, 0xa8, 0x66, 0xa2, 0x0d, 0x77, 0x56, 0x08, - 0x17, 0xde, 0x6d, 0x06, 0x25, 0xec, 0x0f, 0x0d, 0x22, 0x56, 0xc7, 0x16, 0xa9, 0x15, 0x18, 0x1b, - 0x90, 0xe4, 0xe8, 0x65, 0x40, 0x1b, 0x32, 0xfe, 0xf4, 0x49, 0xb7, 0xeb, 0x3d, 0x18, 0x67, 0x31, - 0x71, 0x0d, 0xe6, 0xc9, 0x6c, 0xd0, 0x52, 0xdb, 0x15, 0xcf, 0x3f, 0x88, 0x0f, 0x70, 0xb3, 0x42, - 0xf5, 0xe3, 0x50, 0x06, 0x37, 0x11, 0xd7, 0x28, 0xc4, 0xeb, 0x3e, 0x75, 0x47, 0xc8, 0xa7, 0x0f, - 0xee, 0x94, 0x9f, 0x0e, 0x62, 0xe1, 0xa7, 0x70, 0x4f, 0x2e, 0x88, 0x27, 0x71, 0xc5, 0x5d, 0x22, - 0x2c, 0xe2, 0xd9, 0x11, 0xa1, 0x07, 0xeb, 0x6f, 0x33, 0xc2, 0x03, 0x38, 0x86, 0x5e, 0x96, 0xdf, - 0x76, 0x3c, 0x78, 0x0c, 0x28, 0x63, 0xfd, 0x95, 0x20, 0xb2, 0x4c, 0x42, 0x41, 0xb8, 0x72, 0x20, - 0x70, 0x32, 0x23, 0x5c, 0x16, 0x0f, 0xea, 0xee, 0x59, 0x6f, 0xa7, 0x7e, 0xf0, 0x6d, 0xae, 0x14, - 0x23, 0xd1, 0x56, 0x58, 0x2d, 0x38, 0x0c, 0x7a, 0x4d, 0x74, 0xc3, 0x08, 0x59, 0xbd, 0xc2, 0x86, - 0xcb, 0x4d, 0x6c, 0x38, 0x7c, 0x23, 0x5e, 0x6e, 0x07, 0xf1, 0xc1, 0x3d, 0x3f, 0x1b, 0xab, 0x83, - 0x8e, 0xe6, 0x78, 0xe7, 0xc1, 0xbd, 0x71, 0xc5, 0x59, 0xb7, 0xe3, 0x0d, 0xc4, 0xc5, 0x6a, 0xa9, - 0xef, 0x4c, 0x53, 0x1f, 0xe1, 0xc5, 0x62, 0xc4, 0x8a, 0x46, 0x88, 0x0e, 0xe8, 0x5a, 0x77, 0xa1, - 0xe2, 0xa5, 0x19, 0x40, 0xf0, 0xaa, 0x44, 0x30, 0x6a, 0x3c, 0x95, 0x43, 0x67, 0x7a, 0x09, 0x70, - 0xab, 0xf0, 0xb7, 0x0f, 0x3f, 0xee, 0xbe, 0x70, 0x97, 0x3e, 0xb2, 0x74, 0x20, 0x99, 0xf4, 0x17, - 0x39, 0xe7, 0x76, 0xfe, 0xdf, 0xf1, 0x6b, 0x01, 0x02, 0xe9, 0xd2, 0x69, 0x57, 0x5e, 0x4f, 0xa7, - 0xc4, 0x6d, 0x22, 0x91, 0x7c, 0x7d, 0x4e, 0x4b, 0xbe, 0x45, 0xfe, 0x3b, 0x88, 0x1b, 0x4e, 0x29, - 0x16, 0x53, 0xe0, 0x0d, 0xcc, 0xad, 0x78, 0x55, 0x54, 0xf7, 0xb4, 0x59, 0xca, 0x22, 0xcf, 0x90, - 0xa6, 0x16, 0x9b, 0xea, 0x0b, 0xef, 0x80, 0x9b, 0x9a, 0x4b, 0xd6, 0x70, 0x34, 0xa3, 0xfc, 0xe4, - 0xd9, 0x40, 0x44, 0x84, 0xc7, 0x5f, 0x93, 0x6f, 0x11, 0xdf, 0xbc, 0x4f, 0x3b, 0x66, 0x57, 0x1d, - 0x8e, 0x1a, 0x4f, 0x7f, 0xbc, 0xf1, 0x39, 0xe6, 0x76, 0x21, 0x23, 0xf1, 0xf4, 0x9c, 0x7f, 0xc1, - 0x6d, 0x5f, 0x04, 0x64, 0x61, 0xaf, 0x79, 0x3e, 0x5f, 0xbf, 0x7e, 0x60, 0xbe, 0x62, 0x14, 0x8c, - 0xdd, 0x3c, 0x23, 0x64, 0x80, 0x45, 0xeb, 0x92, 0x4b, 0x11, 0x9c, 0x87, 0x0a, 0x6f, 0x38, 0xe7, - 0x45, 0x34, 0x67, 0x5d, 0x0f, 0xbf, 0x20, 0xae, 0x64, 0x09, 0x63, 0x37, 0x56, 0x7c, 0x9f, 0x0f, - 0x5c, 0xd1, 0xcb, 0x2c, 0xe6, 0x7e, 0xe0, 0xbc, 0xd0, 0x13, 0xbc, 0x56, 0x3d, 0x82, 0x2c, 0x1d, - 0x60, 0x14, 0x04, 0xd4, 0x72, 0x15, 0x7e, 0x68, 0x5f, 0xec, 0x11, 0xd4, 0x31, 0xed, 0xd5, 0x93, - 0x37, 0x76, 0x7f, 0x61, 0x33, 0x06, 0x06, 0x1f, 0x71, 0x02, 0xd8, 0x73, 0x3f, 0x8b, 0xab, 0xdb, - 0x7c, 0xf1, 0x51, 0x0c, 0x87, 0x76, 0xa9, 0x83, 0xfa, 0xa0, 0xdf, 0x1c, 0x0b, 0x80, 0x24, 0xa4, - 0x1e, 0x81, 0xfe, 0x01, 0xcf, 0x62, 0xd8, 0x1c, 0x1d, 0xe0, 0xe9, 0x76, 0x9c, 0x34, 0xcf, 0x2e, - 0xa8, 0x12, 0x5a, 0xeb, 0xb9, 0x2a, 0x70, 0xdc, 0x03, 0x98, 0xaa, 0xc1, 0x03, 0xb6, 0xdb, 0x40, - 0xc1, 0xb5, 0x5c, 0x0e, 0x0d, 0x6e, 0x9b, 0xb7, 0x32, 0xb3, 0x5e, 0x0b, 0xe6, 0xbd, 0x15, 0xf0, - 0xbe, 0x4d, 0x58, 0x9b, 0x13, 0x00, 0xee, 0xff, 0x06, 0xba, 0x36, 0x22, 0xb9, 0x1c, 0xea, 0x1f, - 0x7f, 0xa5, 0x50, 0x29, 0x5f, 0xad, 0x48, 0x85, 0xa8, 0xd2, 0x8c, 0x6f, 0x2c, 0xc0, 0x7c, 0x84, - 0x4e, 0xea, 0xd6, 0x86, 0x2b, 0x8d, 0x2f, 0xa6, 0xa2, 0x49, 0x24, 0xda, 0x9e, 0x20, 0x2a, 0xf9, - 0x24, 0x8d, 0xb2, 0x8f, 0xb6, 0x96, 0xac, 0xa9, 0x7a, 0x03, 0x04, 0x86, 0x7e, 0x8c, 0xc1, 0x06, - 0xe9, 0x7d, 0x3a, 0x86, 0x90, 0xa2, 0x5a, 0x44, 0xb2, 0x48, 0x6c, 0x1e, 0xcc, 0x23, 0x92, 0x2c, - 0x88, 0x68, 0xc9, 0xe0, 0x60, 0xcd, 0xf9, 0x61, 0xf9, 0x03, 0x73, 0xc3, 0x02, 0x8a, 0x0a, 0xfe, - 0xa5, 0xa4, 0x95, 0x8e, 0x4a, 0x8b, 0x20, 0xfe, 0xf5, 0x88, 0x77, 0x57, 0x0e, 0x7f, 0x2a, 0x4e, - 0x27, 0x3c, 0xf9, 0x56, 0x75, 0x03, 0xa2, 0xfe, 0x46, 0x1a, 0x01, 0x73, 0x1a, 0xde, 0x36, 0x66, - 0x41, 0x34, 0x52, 0xcf, 0xc3, 0xca, 0xf6, 0x94, 0x96, 0x2e, 0x4a, 0xaa, 0x32, 0xc7, 0x04, 0xe0, - 0x65, 0x26, 0x07, 0xf9, 0x20, 0xc1, 0x57, 0x83, 0x13, 0x22, 0x24, 0x5b, 0xbf, 0xb4, 0x0d, 0x80, - 0xab, 0x7d, 0xf6, 0x08, 0xde, 0xcb, 0xf6, 0xcc, 0x51, 0xc8, 0x96, 0xda, 0x86, 0x01, 0x79, 0x07, - 0xe6, 0x9a, 0xca, 0xdc, 0x82, 0xcd, 0xb5, 0x2c, 0x13, 0xbe, 0xe0, 0x91, 0x8b, 0x0d, 0xb3, 0xe2, - 0x6e, 0xbf, 0xbe, 0xc3, 0xf0, 0xfb, 0x81, 0xd7, 0x5d, 0xb9, 0xc6, 0x78, 0xba, 0x81, 0xd2, 0x6c, - 0x60, 0x10, 0x78, 0x24, 0x75, 0x28, 0x29, 0x98, 0x03, 0x02, 0xc9, 0x64, 0x79, 0xe5, 0x3a, 0x77, - 0x9a, 0x15, 0xb7, 0x01, 0xed, 0x27, 0xf0, 0xa5, 0x5e, 0x01, 0x06, 0x7c, 0x9f, 0xe1, 0x20, 0xd0, - 0xf0, 0x09, 0x78, 0x4f, 0xa7, 0x9d, 0x34, 0x62, 0x74, 0x1a, 0x6d, 0xae, 0xf7, 0x10, 0x30, 0xac, - 0xb3, 0x0d, 0x53, 0x6a, 0xd8, 0x0f, 0x3b, 0x9c, 0x85, 0x20, 0x74, 0x0f, 0x5e, 0x7c, 0xe3, 0xb6, - 0x7a, 0x0a, 0xac, 0x54, 0xfa, 0x22, 0xb7, 0x81, 0x3d, 0xc3, 0x7e, 0xdb, 0xec, 0x7e, 0x43, 0x23, - 0x6a, 0x73, 0x94, 0x5f, 0xe6, 0x2f, 0x10, 0xaf, 0xb5, 0xa9, 0x36, 0xdb, 0xb6, 0xcd, 0xab, 0xbf, - 0x10, 0xc0, 0x2f, 0x77, 0x20, 0x88, 0x1b, 0xae, 0x03, 0x4f, 0xd6, 0xfc, 0xc2, 0x11, 0x7d, 0x86, - 0xc5, 0xb8, 0x85, 0x5f, 0x6d, 0xc6, 0xe3, 0x56, 0x67, 0x43, 0xc3, 0x54, 0x76, 0xb8, 0xce, 0xa8, - 0x7c, 0x23, 0xab, 0xf2, 0x75, 0x93, 0xcb, 0xd6, 0xe5, 0xc6, 0xcc, 0xc4, 0x4b, 0xbe, 0xb2, 0x34, - 0xed, 0xcd, 0x8d, 0x66, 0xa6, 0x34, 0xfa, 0xa7, 0xe3, 0xed, 0x18, 0x40, 0xbb, 0xa3, 0xd7, 0x30, - 0x58, 0x4c, 0xb5, 0x19, 0x66, 0x8b, 0x47, 0x91, 0x34, 0x0d, 0x18, 0xae, 0x35, 0x43, 0x2e, 0x4d, - 0x6d, 0x8f, 0x6e, 0xfa, 0xe1, 0x11, 0xb3, 0xe5, 0x76, 0x18, 0xa5, 0x85, 0xbb, 0x01, 0xa9, 0xa6, - 0xb0, 0x4f, 0x19, 0xc3, 0xf7, 0x5f, 0x44, 0x3c, 0xeb, 0xaf, 0x66, 0x33, 0x45, 0x2d, 0xea, 0x21, - 0x11, 0x8d, 0xd8, 0xd1, 0xb6, 0xb0, 0xe2, 0xee, 0x51, 0xd1, 0x36, 0xf3, 0x0a, 0xb2, 0xf6, 0xc1, - 0x37, 0xfc, 0xef, 0x05, 0xd1, 0x2c, 0x64, 0x6a, 0x9b, 0x60, 0xf0, 0x50, 0x94, 0x03, 0x28, 0x35, - 0x66, 0xd7, 0x8b, 0xc1, 0x29, 0x6e, 0x0f, 0xfd, 0x5a, 0x42, 0x19, 0x9c, 0xee, 0x42, 0xc1, 0x11, - 0x17, 0x71, 0x54, 0x0d, 0x88, 0x4f, 0x46, 0x62, 0x13, 0xf0, 0x44, 0xc1, 0x72, 0xe9, 0x17, 0x70, - 0xdd, 0x97, 0xe2, 0x05, 0x9b, 0xbe, 0x99, 0x87, 0x88, 0xf0, 0xeb, 0x27, 0xbe, 0x78, 0xa5, 0x96, - 0x8e, 0xd3, 0xba, 0x6a, 0x1a, 0x26, 0x75, 0xf1, 0xc2, 0x42, 0x8f, 0x15, 0xda, 0xf2, 0x69, 0x60, - 0x04, 0x4e, 0x13, 0xc6, 0x7c, 0x43, 0xf5, 0xae, 0x0e, 0x75, 0xd6, 0x2c, 0xe9, 0x15, 0x10, 0x02, - 0xcc, 0xfe, 0x61, 0x03, 0x2b, 0x92, 0xa1, 0xc8, 0x0d, 0x4a, 0x44, 0x45, 0x34, 0xb7, 0x1c, 0x89, - 0xf0, 0x75, 0xe2, 0x2d, 0x2c, 0xe4, 0x4c, 0x04, 0x98, 0x53, 0xe7, 0x97, 0xc7, 0xe9, 0x1b, 0x3b, - 0xce, 0x9c, 0x4b, 0x64, 0x1f, 0x69, 0xbb, 0xd9, 0xa2, 0xb9, 0xce, 0xba, 0x5b, 0xda, 0xb1, 0xb8, - 0xe6, 0xc9, 0xa2, 0xac, 0x10, 0x8d, 0x4b, 0x85, 0xb9, 0x70, 0xa4, 0x6f, 0xb7, 0xc0, 0xc1, 0x1d, - 0x5f, 0xe4, 0x67, 0x16, 0xcb, 0xc1, 0x81, 0xda, 0x4a, 0x33, 0x55, 0x73, 0xd9, 0x0d, 0xc5, 0x74, - 0xbe, 0xa1, 0xaf, 0xee, 0x39, 0x05, 0xe2, 0xb0, 0xec, 0xda, 0x5d, 0x5c, 0x2e, 0xfe, 0x47, 0x99, - 0xf6, 0xed, 0xf8, 0x95, 0x89, 0xc5, 0x5a, 0x6d, 0xbb, 0xce, 0x98, 0x83, 0xf7, 0x51, 0xba, 0x0b, - 0x07, 0x0e, 0x6f, 0xa8, 0x82, 0x83, 0xc3, 0x8c, 0x3d, 0x16, 0xfe, 0xec, 0xb5, 0x75, 0x47, 0xd3, - 0x7e, 0xdd, 0x50, 0xb7, 0xe1, 0xc0, 0xed, 0x8a, 0xb8, 0x0e, 0x24, 0x0b, 0xae, 0xb5, 0x1b, 0xe1, - 0x3e, 0x74, 0x6c, 0x72, 0x58, 0xf2, 0xe7, 0x5e, 0xa6, 0x6d, 0x00, 0x69, 0x41, 0x10, 0xb8, 0xa5, - 0x76, 0xb7, 0x35, 0x5e, 0x78, 0x24, 0xb1, 0x64, 0x52, 0x5b, 0x64, 0xbd, 0x18, 0x98, 0xd3, 0x76, - 0x5a, 0xbf, 0x12, 0x29, 0xc0, 0x4d, 0xe7, 0x5d, 0x21, 0x85, 0x9b, 0xcb, 0x1a, 0xcd, 0x66, 0xc7, - 0xd2, 0x0e, 0xc8, 0x9a, 0xfc, 0x12, 0x02, 0x72, 0xdc, 0xa9, 0xba, 0x7d, 0x24, 0xd0, 0xf2, 0xfc, - 0xfa, 0x25, 0x6d, 0x10, 0xfb, 0xad, 0xf5, 0x8a, 0x10, 0xc9, 0xac, 0x5c, 0xef, 0xa1, 0x75, 0xdf, - 0xd4, 0x35, 0xf8, 0x53, 0x0b, 0xcd, 0x8c, 0x4b, 0xb0, 0x38, 0x6d, 0x05, 0x53, 0x2d, 0xd5, 0x38, - 0xe0, 0x80, 0x89, 0x66, 0x84, 0xea, 0x41, 0xa7, 0x75, 0x40, 0x7e, 0x7f, 0xdd, 0x60, 0xec, 0x37, - 0x2d, 0x90, 0xa3, 0x82, 0x05, 0x9f, 0x69, 0xd1, 0x4c, 0x92, 0x6c, 0x29, 0x4c, 0xda, 0x6c, 0x10, - 0x61, 0x7e, 0xab, 0x57, 0xa0, 0x54, 0xf6, 0x3b, 0xe6, 0x77, 0x24, 0x5c, 0xaa, 0x0f, 0xcb, 0x86, - 0x2e, 0x05, 0xb8, 0xd0, 0x98, 0x5d, 0x53, 0x55, 0xd3, 0x0f, 0xbe, 0x2d, 0xf5, 0x9a, 0x9a, 0x4d, - 0x7e, 0xd8, 0xac, 0x45, 0x6b, 0xee, 0x37, 0x69, 0xf8, 0x57, 0x23, 0xac, 0xa8, 0x6a, 0x65, 0x58, - 0xf5, 0x16, 0xd2, 0x16, 0x22, 0x05, 0x7b, 0xb2, 0xa8, 0x2e, 0x52, 0x5c, 0xfc, 0x8a, 0x7b, 0x56, - 0xdf, 0x7c, 0x53, 0x58, 0xaf, 0xc6, 0x1d, 0xdc, 0xa7, 0x82, 0xa6, 0x86, 0x41, 0x1d, 0x0f, 0x11, - 0x1a, 0x7c, 0xe3, 0x9b, 0xbc, 0x7f, 0xbe, 0xc6, 0x77, 0x64, 0x50, 0x7f, 0x6e, 0xf3, 0xd0, 0xaa, - 0xb3, 0xda, 0x64, 0x87, 0x5b, 0x6d, 0xad, 0x45, 0xdb, 0xf1, 0x4d, 0x36, 0xab, 0x6b, 0x3e, 0xd1, - 0xb3, 0x34, 0x1a, 0xb0, 0x25, 0x85, 0x63, 0xdb, 0xc7, 0x43, 0x12, 0x42, 0x19, 0x9c, 0x5f, 0xcf, - 0xb5, 0x00, 0x75, 0xdc, 0x2c, 0x18, 0x04, 0x43, 0xc5, 0xb8, 0x73, 0xd4, 0xa1, 0x34, 0x16, 0x2c, - 0x9e, 0x34, 0x58, 0xbe, 0x8a, 0x16, 0xc4, 0xb1, 0xef, 0x12, 0x2b, 0x3a, 0x40, 0xe2, 0x9c, 0xa1, - 0xa2, 0x70, 0x8f, 0xba, 0x50, 0x9d, 0x5c, 0x5e, 0xcf, 0xe7, 0xc4, 0x33, 0xb3, 0x83, 0xf8, 0x5a, - 0xa7, 0xa9, 0x7a, 0xb5, 0x4c, 0xaf, 0x29, 0xac, 0xb1, 0x88, 0x4a, 0x04, 0xdf, 0xed, 0x1a, 0xd8, - 0x4f, 0x9f, 0xb2, 0xa3, 0xa0, 0xc5, 0x7f, 0x6a, 0x43, 0xef, 0x29, 0xc3, 0x0e, 0xf2, 0x51, 0xd0, - 0x7f, 0xe5, 0x49, 0x71, 0x40, 0xb9, 0xe6, 0xc8, 0x41, 0x1b, 0xa7, 0xf7, 0x9b, 0x0d, 0xa3, 0x78, - 0x6c, 0x1c, 0x19, 0x74, 0x3d, 0x04, 0xb3, 0x82, 0xfe, 0x8b, 0x41, 0xaf, 0x97, 0x49, 0x60, 0x88, - 0x5e, 0x27, 0x65, 0x29, 0x2d, 0xfb, 0xb2, 0xaf, 0xac, 0x5d, 0xfd, 0x6d, 0xcd, 0xcd, 0xc9, 0x81, - 0xb6, 0x32, 0xe5, 0x4d, 0xb6, 0xdb, 0x1c, 0xa6, 0xc1, 0x2a, 0x1b, 0x43, 0x04, 0x43, 0xde, 0xdf, - 0xff, 0x8e, 0x19, 0xf4, 0x40, 0x9f, 0xea, 0x00, 0x25, 0x1b, 0xf4, 0x69, 0xb4, 0xd0, 0xf1, 0xd6, - 0xac, 0xa5, 0x2d, 0x11, 0xd2, 0xac, 0xd3, 0x16, 0x90, 0xaa, 0xff, 0x81, 0x94, 0xbb, 0x8e, 0x84, - 0x3e, 0xdd, 0xa8, 0x45, 0xdc, 0x57, 0xba, 0x8b, 0xb3, 0xde, 0x00, 0x47, 0xec, 0x9e, 0x35, 0xd3, - 0xce, 0xa6, 0x0f, 0x04, 0x4a, 0x68, 0xe2, 0x11, 0x2c, 0x8c, 0xac, 0x5f, 0xc4, 0x43, 0x89, 0xc5, - 0xb0, 0x38, 0x92, 0x60, 0xf4, 0x9e, 0x66, 0x4e, 0x33, 0x22, 0x1c, 0x6c, 0xc3, 0x64, 0x61, 0x44, - 0x00, 0x0d, 0x01, 0xe3, 0xa8, 0xc1, 0xcf, 0xae, 0xce, 0xf5, 0x3a, 0xc7, 0x4d, 0x83, 0x1f, 0xad, - 0x88, 0x31, 0x3f, 0x4e, 0x19, 0x74, 0xdf, 0x11, 0x1e, 0xfe, 0xa3, 0xcd, 0x82, 0x70, 0x7d, 0xa0, - 0x2f, 0x1b, 0x4c, 0xf6, 0xb9, 0xba, 0x37, 0x3e, 0x7f, 0xd2, 0xd3, 0xf1, 0xad, 0x88, 0x35, 0xe3, - 0x4c, 0x16, 0x2a, 0x69, 0xde, 0x53, 0xe8, 0xce, 0x51, 0x7d, 0x27, 0x8c, 0xed, 0x12, 0x9d, 0xff, - 0x13, 0xfb, 0x10, 0x4d, 0x9e, 0xe0, 0x46, 0x48, 0x49, 0xe8, 0x13, 0xa8, 0x99, 0x37, 0x02, 0xae, - 0xfc, 0xd3, 0xc0, 0x9d, 0x0f, 0x95, 0x31, 0xf8, 0x67, 0x68, 0x26, 0xb8, 0xef, 0xea, 0xee, 0x73, - 0xe2, 0x15, 0x10, 0x77, 0x37, 0x56, 0xc1, 0xd3, 0x36, 0x0f, 0x5a, 0xd0, 0x40, 0xae, 0x3a, 0xac, - 0xa0, 0xc3, 0xd0, 0x0f, 0x1e, 0xd1, 0xa7, 0x94, 0x16, 0xd4, 0x35, 0x50, 0x06, 0x4c, 0x3a, 0xde, - 0xef, 0xd2, 0x18, 0xd6, 0x1f, 0x69, 0xdb, 0xa8, 0xf6, 0x46, 0xad, 0x08, 0x7f, 0xe9, 0x8e, 0x3a, - 0x69, 0x8c, 0xb5, 0x8b, 0x59, 0x6b, 0x4f, 0xbc, 0x26, 0x14, 0xbc, 0x06, 0x9c, 0x02, 0x59, 0x3d, - 0xfb, 0xeb, 0xaf, 0x11, 0x14, 0x1e, 0x5c, 0xd4, 0x58, 0x24, 0x57, 0x09, 0x77, 0x14, 0x4d, 0x03, - 0x11, 0xdb, 0xd1, 0x14, 0x7f, 0x03, 0xe7, 0x5d, 0xb4, 0x35, 0x76, 0x4f, 0x2e, 0xf3, 0x5b, 0xa7, - 0xd0, 0xec, 0x3e, 0xb1, 0x20, 0x88, 0x08, 0x8f, 0x39, 0x77, 0x7f, 0xd1, 0xe1, 0x6a, 0x6f, 0x93, - 0xea, 0x52, 0x44, 0x9f, 0xa5, 0x0e, 0x7e, 0xa3, 0x4d, 0x23, 0x2f, 0xef, 0x65, 0xd9, 0x52, 0x49, - 0xfb, 0x4f, 0xe0, 0xdc, 0xb4, 0x6c, 0x90, 0x7f, 0xfa, 0xf9, 0xba, 0xac, 0x0f, 0x80, 0x80, 0xf3, - 0x06, 0x55, 0xad, 0xfe, 0xbf, 0x9f, 0xef, 0x00, 0xac, 0x10, 0xa1, 0x6d, 0xf6, 0x8b, 0x7c, 0xdf, - 0x8c, 0x1f, 0xb8, 0xaf, 0xe7, 0xe4, 0xd5, 0xf1, 0x5b, 0x67, 0x2a, 0xc2, 0x27, 0xd7, 0x31, 0x74, - 0x9d, 0x3a, 0xd8, 0x6e, 0xf3, 0x08, 0xd0, 0x6d, 0x44, 0x45, 0x62, 0x45, 0xe0, 0x5d, 0xdf, 0x73, - 0xdf, 0xec, 0xb9, 0xaf, 0x9c, 0x1a, 0xcb, 0xe5, 0x23, 0xa4, 0x91, 0xf7, 0x78, 0x95, 0x3b, 0x6f, - 0x7f, 0x58, 0x77, 0x14, 0xd5, 0x44, 0x67, 0xd6, 0x3c, 0x97, 0xf4, 0x49, 0x54, 0x87, 0x20, 0x37, - 0xce, 0xa3, 0xfd, 0xc3, 0x80, 0xcf, 0xa3, 0x7e, 0x2d, 0x65, 0xd2, 0xda, 0xc7, 0x83, 0xd5, 0x40, - 0xe8, 0xcb, 0xd1, 0x3a, 0xf0, 0x98, 0x78, 0x3c, 0xe6, 0x76, 0x6f, 0x6a, 0x3f, 0x70, 0x83, 0x7d, - 0x2c, 0x48, 0xb8, 0xf4, 0xa1, 0x78, 0x5c, 0xb5, 0xa0, 0x14, 0x3a, 0x98, 0x03, 0xcb, 0xd7, 0x5e, - 0x40, 0xba, 0xf3, 0x78, 0xc7, 0x42, 0x5c, 0x14, 0xd3, 0xb3, 0xd3, 0x8d, 0xbb, 0x3b, 0x33, 0x19, - 0x4f, 0x48, 0x3b, 0xfc, 0x1f, 0x77, 0xb8, 0x7c, 0x63, 0x7f, 0xff, 0x1f, 0x98, 0x05, 0xde, 0x19, - 0xec, 0x6c, 0xaa, 0xe9, 0x39, 0xb6, 0x55, 0x3d, 0x3b, 0x4b, 0x73, 0x14, 0xed, 0x38, 0x82, 0x30, - 0xee, 0x72, 0x7c, 0xee, 0x44, 0x44, 0x04, 0x22, 0xa9, 0xbc, 0x5e, 0x64, 0xbc, 0x37, 0x82, 0x1e, - 0xa8, 0x99, 0xb0, 0xc9, 0x0b, 0x21, 0x0b, 0x46, 0xa6, 0x82, 0x36, 0xa3, 0x91, 0xf3, 0x06, 0x4b, - 0x6c, 0x6a, 0x8a, 0x8a, 0x15, 0x3d, 0x51, 0x7b, 0xd8, 0xcd, 0xd1, 0x63, 0x9a, 0xea, 0xaf, 0x1f, - 0x04, 0xab, 0x1d, 0xa8, 0x30, 0x97, 0x4a, 0x79, 0xf5, 0xc5, 0xea, 0x9f, 0x86, 0xa2, 0x46, 0x69, - 0x16, 0xaa, 0x56, 0x57, 0x24, 0x22, 0xbb, 0x78, 0xef, 0xb6, 0x04, 0xf1, 0x31, 0xf4, 0x0e, 0x8c, - 0xae, 0x6b, 0xf4, 0xd5, 0x47, 0x75, 0x04, 0x10, 0xad, 0x86, 0x7e, 0x11, 0x7c, 0x43, 0x67, 0x43, - 0x9e, 0x82, 0xc4, 0x84, 0xfb, 0x3a, 0x1e, 0xc1, 0x1a, 0xd6, 0xcb, 0xe6, 0xb3, 0x20, 0x6e, 0x6a, - 0x5c, 0xf7, 0x65, 0x50, 0x22, 0xcd, 0x73, 0xb9, 0x5f, 0x37, 0x85, 0x50, 0xed, 0x35, 0x05, 0xa5, - 0x80, 0xf4, 0x6b, 0xd2, 0x8e, 0x44, 0x4d, 0xde, 0x8a, 0x75, 0x9b, 0x92, 0xbd, 0x52, 0xfa, 0xcd, - 0x99, 0x06, 0x7f, 0xf4, 0xd4, 0xce, 0x88, 0x66, 0x33, 0x03, 0x57, 0x85, 0x8a, 0x61, 0xf3, 0x7d, - 0xa9, 0x54, 0x7e, 0x06, 0x57, 0x25, 0x3b, 0xd7, 0xfa, 0x56, 0x6b, 0x32, 0x6b, 0xc4, 0x24, 0x49, - 0x9a, 0xef, 0xf4, 0x2d, 0x68, 0x8d, 0xf7, 0x1f, 0xb4, 0xbc, 0xbb, 0xae, 0xc6, 0x57, 0x04, 0x61, - 0xb7, 0xbf, 0x7c, 0xa2, 0x47, 0xb9, 0x7c, 0xcf, 0x68, 0xf9, 0x1e, 0x55, 0xab, 0xdb, 0xe4, 0xd2, - 0x62, 0x2e, 0x14, 0xa8, 0x82, 0x56, 0x3e, 0x3f, 0x3c, 0x3c, 0xe8, 0x09, 0x72, 0x19, 0xf4, 0xf6, - 0xe9, 0xf0, 0x8b, 0x0b, 0x7a, 0xe8, 0x9b, 0xbc, 0x3e, 0xab, 0x09, 0x56, 0x16, 0x5c, 0xf3, 0x0d, - 0x4d, 0x35, 0xc1, 0x5e, 0x1f, 0xa1, 0x56, 0x4b, 0x7b, 0x9c, 0x7f, 0x01, 0xdc, 0xf5, 0x14, 0x2a, - 0xc8, 0x35, 0xdc, 0x41, 0x3b, 0xdc, 0x1f, 0x36, 0x03, 0xdb, 0xd2, 0x45, 0xb4, 0x41, 0x3f, 0xda, - 0x88, 0x1e, 0x5b, 0x04, 0xf8, 0x73, 0xb0, 0x6e, 0x25, 0xea, 0x8a, 0x22, 0x33, 0x2b, 0x98, 0x50, - 0xab, 0xfa, 0x57, 0x7c, 0xeb, 0x04, 0x29, 0x91, 0xc4, 0x0f, 0xd1, 0x6a, 0xa1, 0x44, 0x34, 0xec, - 0x28, 0x90, 0x83, 0x20, 0x8b, 0xe3, 0x99, 0x43, 0xa2, 0x1f, 0x12, 0xbb, 0x55, 0xce, 0xbe, 0xce, - 0x45, 0x40, 0xa7, 0x30, 0x3e, 0x47, 0x9c, 0x7f, 0xc9, 0x34, 0x21, 0xcf, 0x9b, 0x9c, 0xa0, 0xc0, - 0x9a, 0xa0, 0xe0, 0xec, 0x28, 0xa8, 0x15, 0x39, 0xcd, 0x77, 0x61, 0xb5, 0x90, 0xd7, 0xa8, 0x7f, - 0x05, 0xe5, 0x55, 0xd7, 0x17, 0xfd, 0x20, 0x30, 0xa8, 0x30, 0x5b, 0x80, 0x58, 0x84, 0xd8, 0xd4, - 0x8c, 0xd9, 0x66, 0xa2, 0xf5, 0x49, 0xb5, 0xee, 0x3c, 0x78, 0xf2, 0xde, 0x40, 0x4a, 0xd9, 0x32, - 0xd1, 0xf8, 0x01, 0x34, 0x21, 0x52, 0x33, 0x92, 0xc6, 0x73, 0xe8, 0x50, 0x1a, 0x57, 0x0b, 0xfa, - 0x64, 0xdc, 0x8c, 0xd2, 0xbc, 0x8f, 0x6f, 0x85, 0x37, 0xa8, 0x58, 0x0b, 0xe3, 0x82, 0xe1, 0xd1, - 0x88, 0x3f, 0xcd, 0x4e, 0xd3, 0x0d, 0x7b, 0x95, 0x92, 0xa3, 0x7d, 0x8f, 0x61, 0xe5, 0xf4, 0x7d, - 0x5d, 0xb6, 0x25, 0x73, 0x61, 0x2e, 0xb7, 0xd6, 0x9f, 0x0d, 0xeb, 0x37, 0x2d, 0xba, 0xaa, 0xaa, - 0x2d, 0x63, 0xb5, 0xac, 0xbd, 0xdf, 0x56, 0x9b, 0x6b, 0x0d, 0xe4, 0x47, 0x46, 0xc6, 0x24, 0x15, - 0x9c, 0x50, 0x03, 0x84, 0x68, 0x91, 0x83, 0xd3, 0xb3, 0x65, 0xc3, 0xcb, 0x5f, 0x04, 0x8d, 0xe1, - 0x80, 0x08, 0xb8, 0xdc, 0x13, 0xae, 0xc5, 0xf0, 0x7a, 0x18, 0x94, 0xc4, 0x7d, 0xf3, 0x95, 0x5a, - 0x6d, 0x12, 0x62, 0x66, 0x2b, 0x97, 0x91, 0x17, 0xe3, 0x86, 0x0d, 0x10, 0x7a, 0xe1, 0xb8, 0x05, - 0xb0, 0xed, 0x1b, 0x58, 0xae, 0x76, 0xb1, 0x31, 0x0b, 0x96, 0x79, 0x8d, 0xbc, 0xcd, 0xb3, 0xe7, - 0x4e, 0x7e, 0x55, 0xe9, 0x6b, 0xf4, 0xf2, 0x49, 0x77, 0xc4, 0xec, 0x29, 0x77, 0x44, 0x28, 0xf9, - 0x82, 0xad, 0x30, 0x53, 0x6e, 0x83, 0x06, 0xb4, 0xd9, 0xa0, 0xf2, 0x45, 0x40, 0xb4, 0xd2, 0x47, - 0xc0, 0xb4, 0xc1, 0xca, 0x9d, 0x67, 0x39, 0x08, 0xbc, 0x6e, 0xb6, 0x5c, 0x0e, 0x1b, 0xfe, 0x92, - 0x86, 0x23, 0x62, 0xbe, 0x81, 0x23, 0x62, 0xf4, 0xb4, 0x23, 0xa2, 0x9f, 0xb4, 0xd7, 0xc9, 0xe7, - 0xf5, 0x48, 0x52, 0x5e, 0x2d, 0x6a, 0x39, 0xcc, 0x7d, 0xf1, 0x4c, 0x2d, 0x84, 0x91, 0x7c, 0xce, - 0xe7, 0x61, 0xb2, 0x34, 0xd7, 0x25, 0x95, 0x56, 0xf1, 0x33, 0xb5, 0x6a, 0x96, 0x92, 0x5e, 0xce, - 0x7e, 0x1d, 0x0a, 0x68, 0xdc, 0x46, 0xfd, 0x88, 0xd4, 0x71, 0x26, 0x96, 0xab, 0xeb, 0xb4, 0x4a, - 0xe8, 0x88, 0xa8, 0x83, 0x19, 0xd1, 0x1b, 0xa9, 0x09, 0x26, 0x6c, 0xdc, 0x82, 0x92, 0xd7, 0xe0, - 0xde, 0x38, 0x5d, 0x8c, 0x6c, 0x79, 0x77, 0xd7, 0x5f, 0x87, 0x2d, 0x98, 0xf3, 0x60, 0x69, 0xc5, - 0x1b, 0x91, 0x11, 0xad, 0xd6, 0xa3, 0x18, 0x49, 0xb0, 0x16, 0x8a, 0xd1, 0xef, 0xf5, 0x28, 0xf6, - 0x73, 0xf2, 0x48, 0x4b, 0x57, 0x89, 0xd5, 0xd0, 0x55, 0xf2, 0x28, 0xaa, 0x22, 0xd0, 0xe5, 0xfa, - 0xb6, 0xf2, 0x6c, 0xb0, 0xa5, 0xe2, 0x67, 0xc6, 0x67, 0x2d, 0x9f, 0x23, 0x56, 0xe5, 0xfa, 0xcf, - 0x27, 0x8b, 0x64, 0xd0, 0xba, 0xfc, 0x1c, 0xb0, 0x49, 0xbb, 0x12, 0xdb, 0xad, 0xd6, 0x29, 0x28, - 0xf0, 0x17, 0x99, 0x74, 0xc7, 0x46, 0x90, 0xfd, 0x66, 0x36, 0xf9, 0x9d, 0xaf, 0x84, 0x6f, 0x96, - 0xd3, 0x74, 0xc3, 0x1a, 0xc8, 0x31, 0xef, 0xa8, 0x7e, 0x06, 0xcd, 0x4f, 0xcf, 0xd7, 0x7d, 0x7a, - 0x6a, 0xda, 0x3a, 0x9c, 0xd5, 0xd3, 0x17, 0x6e, 0x05, 0x32, 0xc2, 0xc8, 0x4a, 0x4e, 0x7b, 0xd5, - 0x94, 0xe9, 0xb9, 0x55, 0xc1, 0x81, 0xe8, 0x51, 0x17, 0xb8, 0xb5, 0x10, 0xad, 0xf8, 0x6e, 0xc5, - 0x4f, 0x38, 0xb3, 0xb5, 0xe0, 0xe2, 0xfc, 0x6e, 0x60, 0x64, 0x5e, 0x6b, 0xce, 0x72, 0xed, 0x3a, - 0xf8, 0x39, 0x73, 0xad, 0x02, 0x8c, 0xb4, 0xba, 0x10, 0x3e, 0x3d, 0xe3, 0x4f, 0x34, 0xa0, 0xe6, - 0x9d, 0x64, 0xbb, 0x8d, 0xe6, 0x5c, 0x87, 0x3b, 0xf9, 0x93, 0x93, 0x6e, 0x85, 0x4d, 0xf9, 0x93, - 0xb3, 0x4e, 0x6d, 0x0d, 0xe2, 0xe6, 0x64, 0x63, 0x97, 0x34, 0x36, 0xc9, 0xca, 0xd6, 0x58, 0x75, - 0x4f, 0xf1, 0x9a, 0xdb, 0x0d, 0x06, 0xfd, 0x9d, 0xb6, 0xcd, 0x56, 0xde, 0xb5, 0xb6, 0x65, 0x79, - 0x00, 0xac, 0x60, 0x80, 0xf6, 0x00, 0x68, 0x6d, 0x32, 0x69, 0x6f, 0x72, 0xc5, 0x6d, 0x60, 0xa5, - 0xd9, 0x77, 0xf9, 0x2a, 0x41, 0x49, 0xf3, 0x05, 0x4d, 0x4a, 0x03, 0x01, 0x45, 0x02, 0x8a, 0xfa, - 0x50, 0x87, 0x7b, 0x0c, 0x9d, 0x48, 0x66, 0x1e, 0x0a, 0x04, 0x71, 0xe9, 0xe5, 0x19, 0x5c, 0x25, - 0xcd, 0x4c, 0x5f, 0xef, 0x64, 0x4e, 0xac, 0x42, 0x19, 0x23, 0x28, 0x1d, 0xaa, 0x8c, 0x73, 0xcd, - 0x21, 0xae, 0xfd, 0xb5, 0xa7, 0x3d, 0x6b, 0x69, 0x58, 0xce, 0xee, 0x6c, 0x75, 0x8a, 0xb7, 0xcd, - 0x6b, 0x39, 0x3b, 0x6b, 0x1d, 0x92, 0x23, 0x17, 0x6f, 0x8f, 0xfa, 0x9c, 0x71, 0xe9, 0x6d, 0xb8, - 0x4e, 0x83, 0x24, 0x72, 0x10, 0x77, 0x8a, 0xf7, 0x06, 0xb7, 0x54, 0xdd, 0xe9, 0x13, 0x9f, 0xbf, - 0x7e, 0x1f, 0x76, 0x88, 0xcb, 0xd1, 0xf6, 0x07, 0x6e, 0x6d, 0x4d, 0xe1, 0x75, 0x8b, 0xb7, 0x2a, - 0x42, 0xcd, 0x43, 0x7d, 0x2a, 0xb7, 0xf1, 0x5c, 0x5e, 0x35, 0xee, 0x94, 0xda, 0xb6, 0xa2, 0xbe, - 0xde, 0xf3, 0xcb, 0x5e, 0xce, 0xe1, 0xf6, 0xe8, 0x6d, 0x32, 0x31, 0x13, 0xf0, 0x4d, 0xec, 0xeb, - 0xd0, 0xb2, 0x57, 0x9a, 0xaf, 0x4b, 0xfb, 0xb5, 0x88, 0x31, 0x23, 0xef, 0x0e, 0xeb, 0x5a, 0x51, - 0xa1, 0xe9, 0x35, 0xa7, 0x4a, 0x2b, 0x4d, 0x7f, 0xc1, 0x4c, 0xa5, 0x41, 0x13, 0xa1, 0x3c, 0x4a, - 0x64, 0x9d, 0x0b, 0x33, 0x3f, 0xd3, 0x77, 0xe3, 0xca, 0xaf, 0x08, 0xae, 0x43, 0x9d, 0xc7, 0xf2, - 0xfd, 0xa9, 0x8c, 0x7e, 0x56, 0xce, 0x69, 0xce, 0x7c, 0x66, 0x28, 0x2f, 0x1d, 0x36, 0xe5, 0x10, - 0xa6, 0xff, 0x99, 0x30, 0x31, 0xf8, 0x65, 0xde, 0x71, 0x1f, 0x5c, 0x6f, 0xb4, 0xdb, 0xff, 0xec, - 0xae, 0x4e, 0xee, 0xb3, 0x2a, 0xba, 0x93, 0x9e, 0x20, 0x24, 0x76, 0x4c, 0xaf, 0xe9, 0xf8, 0xbe, - 0x72, 0x30, 0x3c, 0xb3, 0x53, 0xd1, 0x5d, 0x10, 0x86, 0x46, 0x8f, 0x02, 0x4a, 0xd7, 0xfb, 0xd2, - 0xe1, 0x49, 0x79, 0x85, 0xad, 0xa1, 0x0b, 0x44, 0x97, 0x9f, 0xc4, 0xc4, 0xd0, 0x12, 0x53, 0x92, - 0xcf, 0x92, 0xf9, 0x3d, 0x10, 0x9c, 0x4d, 0xaa, 0x05, 0x96, 0xbb, 0xc8, 0xc5, 0x8e, 0x15, 0xa6, - 0x7f, 0x0a, 0xa0, 0x70, 0x58, 0xbc, 0xa5, 0xb5, 0x24, 0x3e, 0xf1, 0xbd, 0xb4, 0x2e, 0xa9, 0x7b, - 0xfe, 0x23, 0xd5, 0x8b, 0x95, 0xea, 0xac, 0x44, 0xec, 0x7b, 0xfc, 0x47, 0x1a, 0xda, 0x99, 0x43, - 0x65, 0x6a, 0x37, 0x6c, 0x21, 0xb1, 0x79, 0x8a, 0xb7, 0xab, 0xbb, 0xa7, 0x44, 0xa0, 0x9e, 0x7c, - 0x2c, 0x92, 0x90, 0x9c, 0x16, 0x6f, 0xcf, 0xc2, 0xd2, 0xb7, 0x52, 0xf4, 0x50, 0x91, 0x00, 0x6a, - 0xb5, 0x38, 0x5f, 0x2d, 0xba, 0x59, 0x2d, 0xe2, 0x04, 0x00, 0x03, 0xa3, 0x83, 0x87, 0x6c, 0x50, - 0xbc, 0xf7, 0x91, 0xbe, 0xd0, 0x5d, 0x37, 0x5b, 0x70, 0x19, 0x8a, 0x65, 0x0a, 0xba, 0x2c, 0xbe, - 0x4d, 0xef, 0x79, 0x67, 0xcf, 0xd4, 0x8a, 0xf5, 0xdc, 0xa5, 0xcf, 0xa8, 0xa8, 0xf2, 0x10, 0x71, - 0x47, 0x40, 0x4d, 0x2e, 0xc5, 0x90, 0xfe, 0x48, 0xad, 0x77, 0x34, 0x39, 0x28, 0xf3, 0xbc, 0xd6, - 0x0c, 0x66, 0xb5, 0x10, 0x69, 0x08, 0x4a, 0xe2, 0xd2, 0x4e, 0x05, 0xb1, 0xe1, 0xf0, 0x54, 0xca, - 0xf6, 0x05, 0xef, 0x3c, 0x9d, 0x8e, 0xd1, 0x2c, 0x0d, 0x03, 0xcb, 0x3a, 0xc8, 0xdd, 0xfc, 0x9a, - 0xcf, 0x15, 0xde, 0x77, 0x60, 0x30, 0x8f, 0x61, 0x17, 0xd8, 0x68, 0xb7, 0xff, 0x39, 0xed, 0x1e, - 0xc8, 0x90, 0xe6, 0xb0, 0x32, 0x75, 0x6b, 0xda, 0xd3, 0x4a, 0x5b, 0x6c, 0x64, 0x30, 0x48, 0xa9, - 0x04, 0xc4, 0xa6, 0xf6, 0xaa, 0x81, 0xc1, 0x83, 0x75, 0x36, 0xb0, 0x42, 0xba, 0x45, 0xa8, 0x9c, - 0x41, 0x98, 0x1a, 0x5a, 0x73, 0x37, 0xcd, 0xe6, 0xe3, 0x8e, 0xdd, 0x26, 0xd5, 0xc2, 0x11, 0x62, - 0xa3, 0x0e, 0x81, 0xb6, 0xb2, 0x54, 0x6c, 0x96, 0x21, 0x64, 0xcb, 0xa9, 0x74, 0x4a, 0x41, 0x68, - 0x9f, 0xcf, 0x99, 0x1a, 0xa5, 0x89, 0x79, 0x9d, 0x67, 0x44, 0x6b, 0xae, 0xa4, 0x40, 0x80, 0x26, - 0x0c, 0x00, 0xc3, 0xbe, 0x2d, 0x41, 0x2a, 0x67, 0x3d, 0x44, 0x00, 0xa5, 0x9f, 0x61, 0x3c, 0x5c, - 0x9b, 0x06, 0x7d, 0xd3, 0x68, 0x25, 0xf9, 0x82, 0x35, 0x5e, 0xfb, 0xc5, 0x9d, 0x53, 0x22, 0x0c, - 0xa0, 0x8e, 0x15, 0x14, 0x7b, 0x04, 0x4c, 0x5d, 0x51, 0x68, 0x22, 0x42, 0xf7, 0xb0, 0xb8, 0xb3, - 0xca, 0x95, 0xb6, 0x8d, 0x1a, 0x70, 0x87, 0x95, 0xf0, 0x10, 0x6c, 0xb4, 0x7d, 0xb8, 0xa6, 0x6d, - 0xb3, 0xae, 0x6a, 0x7e, 0x5f, 0x34, 0x6f, 0xbe, 0x92, 0x3d, 0x1c, 0x06, 0x78, 0x25, 0xf2, 0xaf, - 0xf3, 0xa4, 0x23, 0x9d, 0x51, 0xa7, 0xd1, 0xa3, 0xed, 0x2b, 0xe4, 0xf9, 0x4f, 0x3b, 0x33, 0x3e, - 0x16, 0x62, 0x63, 0x4d, 0xa4, 0x0c, 0xbf, 0x11, 0x2d, 0x4f, 0xf8, 0xb9, 0x12, 0xa9, 0xbb, 0x44, - 0x2a, 0x0a, 0x6d, 0x47, 0xf4, 0x5a, 0xfa, 0xda, 0xb9, 0x0b, 0x22, 0xed, 0x21, 0xe2, 0x4e, 0xc1, - 0xfb, 0xed, 0x72, 0x10, 0xf8, 0x24, 0x1a, 0xfb, 0x37, 0x03, 0x4e, 0x2f, 0xd5, 0xb3, 0x92, 0x15, - 0xeb, 0x74, 0x32, 0x32, 0x18, 0x5b, 0xf7, 0x30, 0xf0, 0x86, 0xb3, 0xfc, 0x21, 0xee, 0x5d, 0x9a, - 0xd5, 0x0e, 0x9e, 0x37, 0xea, 0x79, 0x4b, 0x1a, 0x53, 0x1a, 0x77, 0xb8, 0x30, 0x9a, 0x20, 0x97, - 0xcc, 0xe5, 0x2e, 0x43, 0x84, 0x60, 0x54, 0xde, 0x50, 0x00, 0x47, 0x85, 0xcb, 0xe6, 0xfc, 0x21, - 0x2a, 0x91, 0xca, 0x58, 0xbf, 0x9a, 0x67, 0x9c, 0x87, 0x2b, 0xdd, 0x03, 0xcc, 0x2f, 0x17, 0x17, - 0x13, 0x5f, 0x62, 0x9d, 0x98, 0xae, 0x5f, 0xc1, 0x15, 0x6b, 0x57, 0xe3, 0x85, 0x35, 0xab, 0x6c, - 0x51, 0xd6, 0xb1, 0xaa, 0xff, 0x0d, 0x91, 0x02, 0x54, 0xed, 0x8b, 0x46, 0xed, 0xfd, 0x66, 0xed, - 0xef, 0xcd, 0xda, 0x93, 0x46, 0xed, 0x83, 0x15, 0xa0, 0x79, 0xbd, 0x5a, 0x80, 0xbe, 0x8c, 0xef, - 0x4e, 0xd8, 0xf1, 0x6e, 0x88, 0x76, 0xca, 0xeb, 0x89, 0x70, 0xc3, 0x53, 0x19, 0x82, 0x2a, 0x0b, - 0x2f, 0x86, 0x15, 0x9f, 0x66, 0x71, 0x37, 0x44, 0x84, 0xa8, 0x13, 0x59, 0xf3, 0xb9, 0x27, 0x51, - 0x8a, 0xda, 0x9a, 0xd6, 0xbe, 0xd5, 0x75, 0x59, 0x36, 0x5f, 0xef, 0xb7, 0xa6, 0x90, 0xff, 0xc0, - 0x33, 0x14, 0x4f, 0xf4, 0x11, 0xdf, 0xc0, 0x2b, 0xb5, 0xe1, 0xa6, 0x8d, 0x20, 0xac, 0x4f, 0xff, - 0x80, 0xb0, 0x0a, 0xd9, 0xea, 0x7b, 0x1f, 0xe3, 0xfb, 0xd7, 0x9c, 0x72, 0x1d, 0xb1, 0x2b, 0x78, - 0xfc, 0x75, 0x0f, 0xba, 0xc8, 0xcc, 0x8b, 0x6b, 0xc2, 0x3f, 0x34, 0xc7, 0x6d, 0x24, 0xd2, 0x36, - 0xa6, 0xe8, 0xb9, 0xe7, 0xd3, 0xd8, 0x99, 0x2b, 0x6b, 0x22, 0x90, 0xfb, 0x15, 0x7c, 0x57, 0xeb, - 0xaa, 0x81, 0x4f, 0x93, 0x54, 0xa7, 0xac, 0x5d, 0xad, 0x3e, 0x9f, 0x47, 0x11, 0xd1, 0x4a, 0x6f, - 0x29, 0x02, 0x43, 0x99, 0x9d, 0x7b, 0xb5, 0xa7, 0xb2, 0x00, 0x26, 0x30, 0xb0, 0x73, 0xbf, 0x31, - 0x26, 0x13, 0x37, 0x6d, 0x4c, 0x94, 0x0a, 0xb0, 0x26, 0xc6, 0x69, 0xbd, 0x98, 0x8d, 0x5a, 0x72, - 0x12, 0x9a, 0x80, 0xca, 0x70, 0x81, 0x4a, 0xa5, 0x8f, 0x1b, 0x66, 0xef, 0x7c, 0xcd, 0x66, 0xd1, - 0x85, 0xb6, 0xcd, 0x70, 0x83, 0x20, 0xf7, 0xd9, 0x78, 0x93, 0x7d, 0xb5, 0x03, 0xdf, 0xc1, 0xff, - 0x3d, 0x22, 0x0b, 0x8f, 0x12, 0xb0, 0xed, 0xed, 0x06, 0x58, 0xaf, 0x2f, 0x23, 0x3a, 0x60, 0x52, - 0x5a, 0xc0, 0xf2, 0xc6, 0xf5, 0x5d, 0xfa, 0x8f, 0x43, 0x1c, 0x3e, 0xda, 0x48, 0x73, 0xe7, 0x0a, - 0x64, 0xf6, 0xf7, 0x39, 0x3d, 0xb6, 0x3d, 0xdf, 0x6d, 0xe4, 0x52, 0xc9, 0x0c, 0xcd, 0xfd, 0x9f, - 0x49, 0x75, 0x20, 0x95, 0x0c, 0x4e, 0x4f, 0x4b, 0xda, 0xf4, 0x25, 0x6d, 0xe5, 0x92, 0x36, 0xa8, - 0xd9, 0xe4, 0x99, 0x7f, 0x8a, 0xff, 0x9f, 0x2d, 0x97, 0x18, 0x3f, 0x8a, 0xc6, 0xf6, 0x87, 0xf4, - 0xf6, 0xb1, 0x6f, 0xe9, 0xc3, 0xc1, 0xbe, 0xf8, 0x90, 0xbd, 0x63, 0x1b, 0x9f, 0x3e, 0xf6, 0x35, - 0x54, 0x49, 0x8f, 0x90, 0xf0, 0xfa, 0xe0, 0xcf, 0x04, 0x05, 0xbf, 0x9c, 0x9a, 0xe4, 0x1b, 0xa1, - 0x27, 0xfe, 0xf6, 0x13, 0x82, 0xa3, 0x88, 0x90, 0x27, 0xf8, 0xdd, 0x61, 0xf7, 0x3b, 0x04, 0x45, - 0xb9, 0x48, 0xaa, 0xcb, 0xeb, 0x09, 0xf4, 0x9d, 0x7b, 0xaf, 0x92, 0xc5, 0x34, 0xcf, 0xf3, 0x8f, - 0x49, 0xbc, 0x87, 0xd0, 0x30, 0x7b, 0xb7, 0x09, 0xb2, 0x6c, 0x2d, 0xa5, 0xf0, 0xbb, 0xa0, 0x39, - 0x34, 0x9c, 0x47, 0x6b, 0x77, 0xb1, 0x4e, 0xe7, 0x72, 0xda, 0x0d, 0xfb, 0x2f, 0xbc, 0xd1, 0x01, - 0x67, 0x6f, 0x47, 0xef, 0x9e, 0x7f, 0x39, 0x1d, 0xed, 0xab, 0x9f, 0x07, 0x01, 0xb6, 0xdd, 0xb3, - 0x67, 0x61, 0x78, 0x39, 0xe5, 0x92, 0x6e, 0x78, 0x80, 0x92, 0xe0, 0x85, 0x51, 0x42, 0x0d, 0x28, - 0xea, 0x13, 0x2d, 0x2a, 0x4d, 0x37, 0x04, 0x57, 0x72, 0x7e, 0x59, 0xe2, 0x72, 0xe8, 0x72, 0xba, - 0xf4, 0x1d, 0xb8, 0x8b, 0xf9, 0xce, 0x61, 0xf0, 0x0d, 0xc2, 0xac, 0x79, 0xfe, 0xcb, 0xbe, 0x8c, - 0x0c, 0x44, 0xd4, 0x66, 0x61, 0x39, 0x8b, 0x53, 0xc1, 0xaf, 0x2c, 0x35, 0x8b, 0x50, 0x17, 0x78, - 0x6f, 0x6d, 0x33, 0xe6, 0x81, 0x38, 0x94, 0xb9, 0xce, 0xda, 0xde, 0xc6, 0x0a, 0xc5, 0x26, 0x2b, - 0xa4, 0x98, 0x9c, 0x5f, 0xe3, 0x49, 0x9e, 0x4b, 0x0e, 0xb3, 0x23, 0x7a, 0xa6, 0x7d, 0xb4, 0x12, - 0x54, 0x86, 0xd8, 0xf0, 0xd0, 0xdd, 0x13, 0x22, 0xc9, 0x52, 0x01, 0x79, 0x62, 0xbb, 0xb4, 0x23, - 0xa8, 0xbb, 0xbd, 0xff, 0x65, 0x80, 0xf5, 0xa1, 0x82, 0xfa, 0xc4, 0xfb, 0x6c, 0xf8, 0x44, 0x97, - 0x35, 0x78, 0x27, 0x1c, 0x40, 0x49, 0xf5, 0xee, 0xaf, 0x34, 0x34, 0x9f, 0x37, 0x1a, 0xe2, 0x99, - 0xd3, 0x8a, 0x5e, 0x95, 0x4b, 0x5d, 0xdc, 0x25, 0x3c, 0xc8, 0x04, 0x22, 0x42, 0x77, 0xab, 0x5c, - 0x62, 0x58, 0xef, 0x4f, 0x12, 0x97, 0x71, 0xd3, 0x10, 0x87, 0x7d, 0xe2, 0xd8, 0xc4, 0x4d, 0x43, - 0xdc, 0xbc, 0x69, 0x10, 0x7a, 0xdf, 0xf5, 0xf7, 0x0c, 0x66, 0x12, 0x62, 0x84, 0xbb, 0x35, 0xd3, - 0x44, 0x5b, 0xa1, 0x71, 0xc5, 0xe4, 0x48, 0x08, 0x1f, 0xc9, 0x99, 0x1a, 0xa5, 0x77, 0xae, 0xf4, - 0x7b, 0x00, 0xfd, 0xa7, 0x87, 0x8e, 0x15, 0xc9, 0xa7, 0xf2, 0x38, 0x66, 0xd6, 0x4d, 0x32, 0x0b, - 0x75, 0x08, 0x19, 0xce, 0xf0, 0xa6, 0xf2, 0x4f, 0x1b, 0x9d, 0x86, 0x48, 0x0a, 0xcf, 0xb3, 0x2b, - 0xf2, 0xfb, 0x99, 0xb9, 0xcd, 0xad, 0x7a, 0x0f, 0x4b, 0x64, 0x70, 0xb3, 0xc6, 0x11, 0xf8, 0xe6, - 0x36, 0x7a, 0x24, 0xaf, 0x25, 0x00, 0x6e, 0xa6, 0xb6, 0x7c, 0x28, 0x06, 0x66, 0xfb, 0x3e, 0xc1, - 0x37, 0x30, 0x81, 0x45, 0xb0, 0xbb, 0x06, 0x57, 0xe7, 0x3f, 0x95, 0xee, 0xb9, 0x09, 0x20, 0x4b, - 0x68, 0x1b, 0xa7, 0x7b, 0xbe, 0x1b, 0x43, 0xc0, 0x0c, 0xe9, 0xf0, 0xb4, 0xc3, 0x9f, 0xff, 0x09, - 0x77, 0xfe, 0x2f, 0xf0, 0xe3, 0x2f, 0xc3, 0xd1, 0x83, 0x35, 0xf1, 0x32, 0x27, 0xa1, 0x8c, 0x7e, - 0x4f, 0xcb, 0x60, 0x4d, 0x1b, 0x09, 0x6e, 0xd4, 0xc6, 0x51, 0xd9, 0xbb, 0x1a, 0x1b, 0x53, 0x63, - 0xae, 0xcb, 0xca, 0xa4, 0x74, 0x49, 0x60, 0x04, 0xc1, 0x21, 0x36, 0x74, 0x50, 0xfd, 0x05, 0x41, - 0xd5, 0xcb, 0x18, 0x79, 0xe7, 0x38, 0x1a, 0x4f, 0x9d, 0xfe, 0xbc, 0x97, 0xc5, 0x77, 0xca, 0x13, - 0xe5, 0x24, 0x99, 0xa4, 0xb4, 0xea, 0x4d, 0xa3, 0x76, 0x77, 0x2b, 0x54, 0x81, 0x45, 0x9b, 0x77, - 0x86, 0x95, 0x19, 0x83, 0xb1, 0xf2, 0x5a, 0x82, 0x5e, 0x9b, 0xb1, 0xae, 0x13, 0x38, 0xca, 0x1e, - 0x69, 0xc7, 0x9d, 0x44, 0x39, 0x33, 0x91, 0xcc, 0x7f, 0x9a, 0x9c, 0x21, 0x3c, 0x73, 0x6b, 0x64, - 0x6b, 0x8e, 0x69, 0x2b, 0x35, 0x35, 0x1f, 0x08, 0x5a, 0xe2, 0x2a, 0x7f, 0x2b, 0x8a, 0x78, 0xf1, - 0x9a, 0x64, 0x3d, 0x92, 0xb2, 0xb3, 0x06, 0xbc, 0xa9, 0x56, 0x01, 0x49, 0xa0, 0xed, 0xfa, 0x50, - 0x43, 0xb1, 0xb1, 0xb7, 0xb0, 0xbd, 0x36, 0x5c, 0x5d, 0x10, 0x55, 0x21, 0x13, 0x21, 0x52, 0xdb, - 0x1c, 0x0a, 0xe4, 0x7e, 0x8f, 0x7b, 0x88, 0xb4, 0x9d, 0xe4, 0xd7, 0xa5, 0x3d, 0x6b, 0x9a, 0x89, - 0x77, 0x21, 0x89, 0xce, 0xf3, 0xe9, 0x35, 0x14, 0x13, 0x15, 0x37, 0x82, 0x65, 0x7b, 0x03, 0x76, - 0xb3, 0x83, 0x10, 0x0e, 0xe2, 0xc9, 0x65, 0x1d, 0xbb, 0x6b, 0x2e, 0x10, 0x5c, 0x98, 0xa3, 0xea, - 0xd5, 0xa2, 0xe6, 0x86, 0x38, 0x41, 0x67, 0xed, 0xea, 0x04, 0xfa, 0x6c, 0xc7, 0xde, 0x89, 0x61, - 0xce, 0xe1, 0xa9, 0x69, 0xe4, 0x5f, 0x43, 0xc1, 0x1d, 0x66, 0x1c, 0x2a, 0x34, 0x64, 0x26, 0x87, - 0xcb, 0xc3, 0xd3, 0xec, 0x6c, 0x29, 0x68, 0x10, 0xff, 0x96, 0x8d, 0x7a, 0x47, 0xa5, 0x67, 0x67, - 0xf7, 0x28, 0x77, 0x2b, 0xce, 0xed, 0x21, 0x6a, 0x89, 0x6c, 0xc8, 0xc2, 0x6a, 0x64, 0xb7, 0x7f, - 0xe6, 0xb5, 0x02, 0x51, 0xdb, 0x17, 0x10, 0x2c, 0x99, 0x15, 0x32, 0xc9, 0x06, 0x07, 0xa6, 0x07, - 0x56, 0x6c, 0x0f, 0x13, 0x28, 0xc3, 0xa5, 0xc6, 0x86, 0xad, 0x09, 0x97, 0x51, 0x51, 0x82, 0x67, - 0x5a, 0x87, 0x00, 0xca, 0x7a, 0x52, 0x95, 0x41, 0x97, 0x8d, 0xab, 0xc2, 0x1b, 0x4b, 0x7a, 0xa5, - 0x21, 0xb8, 0x8a, 0x79, 0x8b, 0x68, 0xfc, 0x80, 0x1e, 0xaa, 0x11, 0x7c, 0xae, 0x7e, 0xd9, 0x76, - 0x83, 0xce, 0xa9, 0xf3, 0xd0, 0xf2, 0x6a, 0xe0, 0x3d, 0xf3, 0xc3, 0x45, 0xce, 0x11, 0x37, 0xfa, - 0x2f, 0x10, 0x71, 0x18, 0xee, 0xe9, 0xb2, 0x40, 0xfc, 0xf4, 0xcd, 0xba, 0x68, 0x35, 0x3e, 0xa2, - 0x75, 0x1c, 0x6b, 0x9f, 0xca, 0x81, 0xb6, 0x91, 0x68, 0xb9, 0x4a, 0xa9, 0xa2, 0x7b, 0xe8, 0x8c, - 0xbc, 0xc1, 0x86, 0x1f, 0x8a, 0x4b, 0x13, 0xf5, 0x95, 0x1f, 0x8f, 0x18, 0x67, 0x14, 0x46, 0xed, - 0xd2, 0x0f, 0x53, 0xe3, 0x9d, 0x21, 0xb0, 0xea, 0x6a, 0xe4, 0x52, 0x03, 0xe0, 0x4f, 0x9f, 0xb2, - 0xad, 0xd0, 0x8a, 0xb1, 0x35, 0x36, 0x03, 0xb9, 0x0e, 0x2c, 0x41, 0x0c, 0x6a, 0xf9, 0xb0, 0xac, - 0xf9, 0x00, 0xcf, 0xcc, 0x74, 0x9d, 0x79, 0x63, 0x65, 0xc3, 0x92, 0x91, 0x78, 0x25, 0x1f, 0xb4, - 0x06, 0xcc, 0xaf, 0xf7, 0x8b, 0xae, 0x85, 0x50, 0x6d, 0x40, 0x37, 0x5d, 0x20, 0xdd, 0x68, 0xbc, - 0xda, 0x1c, 0x46, 0x97, 0x85, 0xb5, 0xdb, 0x5a, 0xc6, 0x1e, 0x2c, 0x66, 0x0d, 0x0e, 0x26, 0xd3, - 0x6c, 0x0b, 0x91, 0x2b, 0xac, 0x86, 0xe0, 0x36, 0xc4, 0x71, 0xd2, 0x6b, 0x46, 0x46, 0x18, 0xc0, - 0x64, 0x4c, 0x8c, 0x0d, 0x93, 0x97, 0x0c, 0x01, 0x53, 0x56, 0xab, 0xa9, 0xf0, 0x90, 0x45, 0x54, - 0x24, 0xff, 0x20, 0x7e, 0x37, 0xf3, 0x86, 0xf5, 0x4c, 0x1b, 0x6a, 0xfd, 0x30, 0xf5, 0x11, 0x33, - 0x78, 0x55, 0xbb, 0x2d, 0xa3, 0x98, 0x8a, 0x0f, 0x1a, 0x97, 0x11, 0x7c, 0x31, 0x23, 0xac, 0x45, - 0x88, 0x51, 0x87, 0x66, 0x9a, 0xe3, 0x3c, 0x4b, 0xba, 0xb5, 0x71, 0x58, 0x5b, 0x0b, 0x71, 0x99, - 0x13, 0x73, 0x8d, 0x50, 0xb7, 0x86, 0x0e, 0x21, 0x63, 0xaa, 0x77, 0xc2, 0x42, 0x50, 0xa9, 0xfd, - 0x80, 0x8d, 0x7b, 0xb3, 0x49, 0x7a, 0xbd, 0xe8, 0x78, 0x6d, 0x51, 0xb0, 0x56, 0xdf, 0x98, 0x57, - 0x59, 0xe2, 0xed, 0x52, 0x84, 0xff, 0xff, 0xef, 0xd7, 0xab, 0x77, 0x8d, 0x3d, 0xc4, 0x4a, 0x8f, - 0x92, 0x0c, 0x11, 0x2f, 0xfd, 0xf7, 0xe1, 0x33, 0x4e, 0x0e, 0x70, 0xeb, 0x27, 0x0c, 0x4b, 0x18, - 0xf8, 0x77, 0x81, 0x08, 0xa6, 0x23, 0x86, 0x7c, 0xc2, 0xd9, 0x50, 0xc5, 0x0c, 0x19, 0x8c, 0xf1, - 0x75, 0x26, 0xe2, 0x0a, 0xe9, 0x78, 0x91, 0x3d, 0x61, 0x4d, 0x39, 0xfb, 0x90, 0x5f, 0xd3, 0x8c, - 0x96, 0xe3, 0x66, 0xc1, 0x69, 0x70, 0x36, 0x30, 0xf2, 0xfa, 0x5c, 0x46, 0xe5, 0xdb, 0x45, 0xce, - 0xbe, 0x9c, 0x68, 0xe5, 0x31, 0x17, 0x5e, 0x9c, 0xbc, 0x1c, 0xf9, 0xcd, 0x48, 0x38, 0x4c, 0xdf, - 0xea, 0xcb, 0x0a, 0xe2, 0x6a, 0x55, 0x98, 0x3c, 0x93, 0x3f, 0x9d, 0x7e, 0x94, 0x8a, 0xb1, 0xad, - 0x62, 0x8a, 0x58, 0x34, 0x4a, 0x66, 0xd6, 0x31, 0xbd, 0xf5, 0xae, 0xe6, 0x83, 0xc3, 0x0a, 0xf4, - 0xad, 0x56, 0x5d, 0x57, 0xa1, 0x03, 0x4b, 0xce, 0x5a, 0xd9, 0xd1, 0xe6, 0xdc, 0xde, 0xa7, 0x4f, - 0xe6, 0x30, 0xaa, 0xc6, 0xef, 0x92, 0x7e, 0x77, 0x68, 0x32, 0xd5, 0x54, 0x51, 0x6b, 0x08, 0x9c, - 0xfe, 0x4f, 0x3d, 0xb1, 0x32, 0xec, 0x73, 0x15, 0x4d, 0x54, 0xf4, 0x7a, 0xef, 0x54, 0xac, 0xc2, - 0x99, 0xc4, 0xb7, 0x0f, 0x79, 0xe1, 0xff, 0xf7, 0xeb, 0xb6, 0x28, 0xe2, 0x12, 0xe9, 0xb6, 0x3a, - 0x6a, 0x6d, 0x02, 0xcf, 0x72, 0x45, 0x65, 0xfa, 0x26, 0xc6, 0x2f, 0x6a, 0x6c, 0x6f, 0x37, 0xe6, - 0x61, 0x15, 0xac, 0xb0, 0xda, 0xbd, 0x43, 0xa8, 0x3e, 0x56, 0xef, 0x31, 0x63, 0x86, 0x54, 0xe0, - 0x61, 0xb7, 0x93, 0x7d, 0x5b, 0xee, 0xdd, 0xd6, 0x09, 0x88, 0xf7, 0xbd, 0x61, 0xb0, 0x15, 0x22, - 0x5e, 0x86, 0x80, 0x76, 0x14, 0xb0, 0x43, 0x9b, 0xa7, 0x0b, 0x8e, 0x0e, 0xa8, 0x80, 0xe3, 0x6f, - 0xa7, 0xa3, 0x5e, 0x7f, 0x7f, 0x7b, 0x7b, 0xa3, 0x91, 0x12, 0x6d, 0x13, 0x13, 0x43, 0xed, 0xd0, - 0xa0, 0x05, 0xd9, 0xe4, 0xdb, 0x55, 0x12, 0x8a, 0x17, 0xd5, 0x7d, 0xc7, 0xdd, 0xdd, 0x4d, 0x5c, - 0x89, 0xa7, 0xbb, 0x21, 0x82, 0x5d, 0x86, 0xfd, 0xdd, 0x54, 0x29, 0xea, 0x22, 0x70, 0x16, 0x1f, - 0x4b, 0x09, 0x02, 0x31, 0xda, 0xeb, 0xda, 0x98, 0x23, 0x29, 0xf2, 0xa6, 0xd3, 0xda, 0xa7, 0x86, - 0xe4, 0x86, 0x30, 0x66, 0xd7, 0x08, 0x77, 0xf9, 0xd0, 0x12, 0x19, 0xa5, 0xc1, 0x63, 0x29, 0x01, - 0x20, 0x9b, 0x4d, 0x59, 0xdb, 0x77, 0x3b, 0xfa, 0xee, 0xe5, 0x77, 0x9f, 0x3e, 0xdd, 0x8e, 0x0e, - 0x0f, 0x5e, 0x6e, 0x6f, 0xdf, 0x1e, 0x7d, 0xb7, 0x1f, 0x78, 0x6b, 0x23, 0xb3, 0x8a, 0x98, 0x36, - 0x0f, 0xb7, 0xa1, 0x14, 0x5f, 0x99, 0x2a, 0xfe, 0x0e, 0x5d, 0xb5, 0x19, 0x74, 0x73, 0x68, 0x08, - 0xa8, 0x7c, 0x34, 0xc9, 0x55, 0xfd, 0x29, 0x86, 0x2b, 0xd4, 0xb0, 0x7c, 0x9d, 0xa7, 0x18, 0x3a, - 0x67, 0xbc, 0xee, 0xba, 0xc5, 0x1d, 0xc2, 0xff, 0xca, 0xb2, 0xc9, 0xa5, 0x8a, 0xee, 0x92, 0x57, - 0x8d, 0xef, 0x64, 0x4d, 0x11, 0x98, 0xa7, 0x43, 0x73, 0xfe, 0xac, 0xfe, 0xac, 0x2a, 0xea, 0xa6, - 0x64, 0xf0, 0x29, 0x46, 0xaf, 0xd5, 0xf8, 0x3b, 0xb2, 0x5c, 0x04, 0x22, 0x86, 0x2e, 0x48, 0xe0, - 0xe1, 0xab, 0x50, 0x22, 0xe4, 0x2b, 0xbf, 0x5d, 0xca, 0x2a, 0xa6, 0x57, 0xae, 0x2f, 0xab, 0x78, - 0xf2, 0x21, 0xd4, 0xbf, 0x6f, 0x8f, 0xfa, 0xfb, 0x48, 0x80, 0x20, 0x1b, 0xf9, 0xf4, 0x69, 0x8b, - 0xd5, 0x4c, 0xb2, 0x14, 0x73, 0x2e, 0x9e, 0x31, 0xcf, 0xa1, 0x51, 0x28, 0x7e, 0x60, 0x6b, 0x42, - 0xd5, 0x42, 0x58, 0x23, 0xec, 0x2f, 0x65, 0x7b, 0x63, 0xd9, 0xcd, 0x56, 0x7f, 0x20, 0x7b, 0x42, - 0x54, 0x74, 0x0d, 0x73, 0xdd, 0x7d, 0x03, 0xe9, 0x02, 0xcf, 0x8c, 0x90, 0x73, 0x4c, 0x90, 0x9b, - 0xf1, 0x71, 0xc4, 0x57, 0x2d, 0xe1, 0xc3, 0xf3, 0x5a, 0x95, 0x72, 0xc9, 0x33, 0x2e, 0xab, 0x52, - 0xa7, 0xda, 0xce, 0x8d, 0xa6, 0x81, 0xea, 0x8d, 0xdd, 0x00, 0xb2, 0xd9, 0x75, 0x95, 0xbb, 0x9f, - 0xb1, 0x72, 0x7a, 0x0b, 0x88, 0xcb, 0x0d, 0x05, 0x07, 0x94, 0x34, 0xd4, 0xda, 0x33, 0xfc, 0xc3, - 0x31, 0xd3, 0x08, 0xbb, 0x8c, 0x65, 0x4b, 0x4a, 0x21, 0x9e, 0x99, 0xe4, 0x7d, 0x7b, 0xdb, 0xcd, - 0xb9, 0x10, 0xba, 0x44, 0x12, 0x14, 0xf3, 0x39, 0xca, 0x9a, 0xbc, 0xad, 0xe9, 0x08, 0x10, 0x13, - 0x3d, 0xfd, 0x21, 0x8e, 0x0b, 0xe2, 0x26, 0x7b, 0xbd, 0x9e, 0xb8, 0x55, 0xdc, 0x52, 0xf7, 0x43, - 0x5a, 0x67, 0x32, 0x14, 0xe7, 0x14, 0x42, 0xe2, 0xaa, 0xfc, 0x4b, 0x54, 0xcf, 0x80, 0x60, 0x7b, - 0x5b, 0xff, 0x28, 0xbd, 0x3a, 0xb9, 0xbd, 0x03, 0xbb, 0x1b, 0xa7, 0xf4, 0xea, 0x97, 0xf0, 0x78, - 0x1f, 0xf3, 0x49, 0xf1, 0xe9, 0x93, 0x2d, 0x5e, 0x92, 0xe8, 0x4b, 0xa5, 0x7c, 0x85, 0xe7, 0x1b, - 0x60, 0x51, 0x99, 0xcf, 0x5f, 0x79, 0x83, 0xd6, 0xfa, 0x6c, 0xe8, 0xaf, 0xb5, 0x4f, 0x2b, 0xe3, - 0x59, 0x8a, 0x9d, 0xb9, 0x96, 0xcc, 0x64, 0xae, 0x4f, 0xdb, 0x45, 0xee, 0x5a, 0xe2, 0x1b, 0x59, - 0x92, 0x01, 0xb5, 0x41, 0xfa, 0x16, 0xd6, 0x6f, 0xd1, 0xf7, 0x2e, 0xc7, 0xac, 0xf2, 0xc1, 0x3f, - 0x51, 0x3b, 0xab, 0xb5, 0xae, 0x72, 0x18, 0x65, 0xe4, 0xb7, 0xd4, 0x18, 0xc8, 0xc3, 0xfa, 0x8a, - 0x15, 0x4e, 0x59, 0xc1, 0x6f, 0x3c, 0x51, 0x93, 0x9b, 0x24, 0x79, 0xda, 0xf5, 0x71, 0x46, 0x3c, - 0x51, 0xef, 0xba, 0x78, 0xaa, 0x1a, 0x77, 0x4c, 0xac, 0x5d, 0x5d, 0xef, 0x7f, 0x1d, 0xed, 0x11, - 0x21, 0x4f, 0x8a, 0x6a, 0xe4, 0x1c, 0xed, 0x21, 0xf4, 0x1f, 0xfe, 0xbd, 0xac, 0xae, 0xd2, 0x91, - 0xf3, 0x7f, 0x01, 0xc8, 0x49, 0x1c, 0x24, 0x20, 0xa3, 0x01, 0x00 + 0x69, 0xba, 0xcd, 0x73, 0xd3, 0xd4, 0x5b, 0xa7, 0xdb, 0xdd, 0xe3, 0xeb, 0xb3, 0xa6, 0x24, 0xca, + 0xe2, 0x86, 0x26, 0x59, 0x91, 0x7e, 0x7b, 0x1c, 0x7d, 0xf7, 0x3b, 0xbf, 0x01, 0x40, 0x02, 0x24, + 0x25, 0x2b, 0x69, 0x9f, 0x73, 0xef, 0x9e, 0xad, 0x43, 0x81, 0x20, 0x30, 0x00, 0x06, 0x83, 0x99, + 0xc1, 0xbc, 0x34, 0x65, 0x6b, 0x9b, 0x8e, 0xeb, 0xc9, 0x3e, 0xd7, 0xb0, 0x11, 0x5e, 0xc4, 0x1b, + 0xc6, 0x27, 0x65, 0x8e, 0xd2, 0x18, 0x39, 0x4a, 0xcf, 0xe3, 0x8b, 0x5a, 0xcf, 0x79, 0xbd, 0xcf, + 0x4e, 0xa3, 0x69, 0x6a, 0x77, 0x31, 0xa3, 0xe3, 0xfd, 0x89, 0x2f, 0x5d, 0xb5, 0x34, 0xc5, 0x24, + 0xa3, 0x1f, 0x63, 0xbb, 0xff, 0x2c, 0xbb, 0xb7, 0xc4, 0x1f, 0x4f, 0x3e, 0x71, 0xe0, 0x67, 0x7a, + 0x3e, 0x3c, 0xa4, 0x3f, 0xcf, 0xe4, 0x03, 0x42, 0x12, 0xc9, 0x4f, 0x27, 0xf2, 0xd3, 0x97, 0xf4, + 0xca, 0xb3, 0xbe, 0xc3, 0x5f, 0xf5, 0x89, 0xc7, 0xf5, 0x3d, 0xbd, 0x32, 0x41, 0xe5, 0xd6, 0xa1, + 0xd0, 0x5e, 0x5f, 0x17, 0xfc, 0xda, 0xe3, 0x6e, 0x8f, 0x8d, 0x7e, 0x8a, 0xfd, 0x89, 0xed, 0x56, + 0x08, 0xc6, 0xb4, 0x17, 0x93, 0x47, 0x35, 0xa2, 0xff, 0x46, 0x16, 0x68, 0xce, 0x70, 0x79, 0x46, + 0x83, 0x27, 0xda, 0x8c, 0x5d, 0xf3, 0xb6, 0x08, 0xaf, 0x3b, 0xf6, 0x1d, 0x1d, 0xc9, 0xbf, 0x45, + 0x84, 0xc5, 0xb6, 0xfb, 0x5f, 0x67, 0xbf, 0xbc, 0xef, 0x09, 0x17, 0x9d, 0x68, 0xfe, 0xd0, 0xa1, + 0xb6, 0xf4, 0xb0, 0x81, 0xc5, 0x55, 0xfc, 0x53, 0x88, 0x0c, 0x6b, 0x35, 0xc4, 0x04, 0xf2, 0xf9, + 0x3b, 0x2d, 0x85, 0x6e, 0xb5, 0x3f, 0x8c, 0x56, 0xc4, 0x56, 0x11, 0xed, 0x54, 0x5b, 0xc4, 0x5f, + 0xb7, 0x77, 0xc6, 0xe2, 0x98, 0x1c, 0xc8, 0xf7, 0xeb, 0x5a, 0x7d, 0xc7, 0x48, 0xa4, 0x83, 0x27, + 0xd0, 0x4a, 0x03, 0x4d, 0xe2, 0x59, 0x5b, 0x03, 0x72, 0xff, 0x12, 0x01, 0x08, 0xc7, 0x1d, 0x63, + 0x3f, 0xda, 0x5f, 0x85, 0xa1, 0xbe, 0x04, 0xd3, 0x7d, 0xc4, 0x4e, 0x65, 0x93, 0x02, 0xbd, 0xf0, + 0x10, 0x85, 0xb3, 0xd9, 0xcc, 0x28, 0x3c, 0x42, 0xe1, 0x64, 0x32, 0x31, 0x0a, 0x9f, 0xa1, 0x30, + 0x08, 0x02, 0xa3, 0xf0, 0x18, 0x85, 0x2f, 0x5f, 0xbe, 0x34, 0x0a, 0x9f, 0xb7, 0x15, 0xbe, 0x40, + 0xe1, 0x8b, 0x17, 0x2f, 0x8c, 0xc2, 0x09, 0x0a, 0x9f, 0x3d, 0x7b, 0x66, 0x14, 0x4e, 0x51, 0x78, + 0x74, 0x74, 0x64, 0x14, 0x42, 0x2c, 0xfd, 0xaa, 0xdf, 0xef, 0x1b, 0x85, 0x33, 0x14, 0x1e, 0x1e, + 0x1e, 0x1a, 0x85, 0x4b, 0x14, 0x4e, 0x9f, 0x99, 0x85, 0xa9, 0x2d, 0x8d, 0x2c, 0x0e, 0xbd, 0x67, + 0xae, 0x55, 0xfd, 0xf1, 0x7a, 0x2f, 0x1d, 0xa3, 0x62, 0x3e, 0x91, 0xb3, 0x74, 0x54, 0x2b, 0x5e, + 0xc8, 0xf2, 0xe7, 0x46, 0x79, 0x31, 0x59, 0xd3, 0x30, 0x91, 0x8a, 0x0e, 0xe3, 0xb6, 0xe3, 0xd4, + 0x3e, 0x08, 0xd4, 0x17, 0xfd, 0xef, 0x3c, 0xd7, 0xaa, 0xfe, 0xac, 0xff, 0x62, 0xb1, 0x55, 0x1f, + 0x4c, 0xd2, 0xa2, 0xeb, 0xab, 0x8a, 0xa2, 0x09, 0xad, 0x9c, 0x4f, 0x32, 0x01, 0x8c, 0xa6, 0x3a, + 0x5e, 0xef, 0x05, 0xd5, 0x1b, 0xd4, 0xd1, 0xa4, 0x3e, 0xa9, 0x8c, 0x26, 0x30, 0x5e, 0x69, 0xa0, + 0x49, 0x7d, 0xa6, 0x8f, 0xda, 0x16, 0xea, 0x59, 0xdb, 0x92, 0x32, 0x9a, 0x1c, 0x1f, 0x1f, 0x37, + 0xd1, 0xe4, 0xf9, 0xf3, 0xe7, 0x5b, 0xa2, 0x49, 0x1d, 0x1f, 0x19, 0x4d, 0x10, 0x69, 0xbd, 0x81, + 0x26, 0x75, 0xc4, 0x9f, 0xb5, 0xe1, 0x38, 0xa3, 0xc9, 0x8b, 0xa3, 0x7e, 0x3b, 0x9a, 0x1c, 0xd1, + 0xf4, 0xaa, 0xff, 0xd6, 0xe0, 0x08, 0x4d, 0x51, 0x2b, 0x8e, 0x50, 0xf9, 0xf1, 0x1a, 0x1c, 0xd1, + 0x5b, 0xdd, 0x06, 0x41, 0xbc, 0x43, 0x84, 0xe1, 0x55, 0x7f, 0xb6, 0x40, 0x90, 0xe3, 0xbe, 0x6b, + 0xa9, 0xff, 0xb6, 0xc5, 0x8e, 0x9b, 0x04, 0x12, 0xb1, 0x46, 0x53, 0x10, 0xd9, 0xf3, 0xfb, 0x2b, + 0xd0, 0x14, 0x12, 0x30, 0x2c, 0x4d, 0x7d, 0x5e, 0xe3, 0x43, 0xec, 0xc9, 0x15, 0xe0, 0x58, 0x1b, + 0x21, 0x95, 0x7a, 0xb3, 0xf9, 0x3a, 0x32, 0xef, 0xe5, 0xcb, 0xa9, 0x1f, 0xba, 0x36, 0x11, 0xc9, + 0xf0, 0xd3, 0xa7, 0x92, 0x81, 0xa5, 0xc3, 0x3c, 0xbf, 0xb9, 0xee, 0x65, 0x0b, 0x12, 0x50, 0xf3, + 0x83, 0xfe, 0xcb, 0x43, 0x8f, 0x24, 0xf6, 0x17, 0x1e, 0xcb, 0xb5, 0x4e, 0x75, 0xf3, 0xab, 0x78, + 0x30, 0x79, 0x8a, 0x12, 0xbf, 0xaf, 0x9f, 0xa3, 0xd2, 0x06, 0xd2, 0xf3, 0x7d, 0x7a, 0x41, 0x67, + 0xea, 0xb9, 0x77, 0x31, 0x4e, 0x00, 0xea, 0x8f, 0x37, 0x71, 0xfc, 0xaf, 0x30, 0x40, 0x20, 0xd2, + 0xf2, 0x0d, 0x42, 0x8e, 0xcb, 0xd6, 0x3a, 0xa9, 0x2b, 0x8b, 0x49, 0xa2, 0x94, 0x4f, 0xc2, 0x4d, + 0xba, 0xac, 0x11, 0x10, 0xf4, 0x38, 0x70, 0xf8, 0x47, 0xc4, 0x41, 0x20, 0xf1, 0xe4, 0x74, 0x65, + 0x75, 0xf8, 0x52, 0x27, 0x23, 0x98, 0x8b, 0x25, 0x27, 0x11, 0x12, 0x69, 0xf3, 0x38, 0xe5, 0xcb, + 0x67, 0x17, 0xce, 0x2a, 0x6f, 0x89, 0x7c, 0x8a, 0xd9, 0x25, 0x6e, 0xc9, 0x1f, 0x49, 0x35, 0x80, + 0xa6, 0xd8, 0xa8, 0x1f, 0x82, 0x93, 0x2b, 0x02, 0x80, 0xd8, 0xb7, 0xf7, 0xac, 0xa5, 0x46, 0xb4, + 0x9f, 0xe7, 0x30, 0x69, 0x12, 0xcb, 0x27, 0x43, 0x1c, 0xfb, 0x49, 0x59, 0x32, 0x09, 0xa6, 0x1f, + 0xaf, 0x58, 0x05, 0xf2, 0x16, 0x62, 0x8c, 0x7f, 0x09, 0xcb, 0x8c, 0xaf, 0x1f, 0x19, 0xaa, 0x95, + 0x73, 0x29, 0x3d, 0x3c, 0x57, 0xb5, 0x95, 0x3e, 0xfb, 0x18, 0x25, 0xaf, 0xcf, 0xce, 0x94, 0x0a, + 0x4e, 0xf0, 0x9e, 0x4a, 0xe5, 0xf3, 0x44, 0x1a, 0xba, 0x45, 0x48, 0x63, 0x81, 0x4f, 0xce, 0x06, + 0x2c, 0x40, 0x52, 0x32, 0x42, 0x03, 0xe1, 0x2f, 0xe6, 0xe6, 0xbd, 0x25, 0x09, 0xde, 0x36, 0x03, + 0x9c, 0x93, 0xcc, 0x00, 0xb6, 0x40, 0xe4, 0x30, 0xb7, 0x91, 0x6d, 0xfc, 0x60, 0x8a, 0xb8, 0xce, + 0x74, 0x0a, 0x2f, 0xc3, 0xb9, 0xdf, 0xa1, 0x83, 0x7f, 0xac, 0x32, 0x4b, 0xdb, 0x5d, 0xd6, 0x43, + 0x0c, 0xec, 0x9e, 0xed, 0x74, 0xed, 0x83, 0x9c, 0xa0, 0xee, 0xc9, 0xca, 0xd7, 0xe1, 0x2c, 0x0a, + 0x90, 0xce, 0x05, 0x0e, 0x1f, 0x46, 0x60, 0xdf, 0x5c, 0xbf, 0xab, 0x4f, 0x13, 0x84, 0x9a, 0x85, + 0xc1, 0x01, 0x61, 0x3e, 0xc9, 0x0e, 0x7e, 0x3d, 0xa5, 0x5d, 0x99, 0xb7, 0x0e, 0x86, 0x61, 0x50, + 0x72, 0x78, 0x6e, 0x87, 0x3b, 0xf5, 0x0d, 0x0e, 0xe4, 0x4a, 0x71, 0x20, 0x54, 0xfa, 0x56, 0x68, + 0xff, 0x64, 0x35, 0xfa, 0xfe, 0x3a, 0xa3, 0x21, 0xff, 0x48, 0xed, 0x5b, 0x90, 0xfd, 0x7b, 0xd6, + 0x69, 0x1c, 0x72, 0xc8, 0xb4, 0x84, 0xb6, 0x9a, 0xf5, 0xfb, 0xbb, 0x37, 0x3f, 0x58, 0x6f, 0x4f, + 0x77, 0xec, 0x75, 0x3c, 0x8d, 0x68, 0xd1, 0xe5, 0xd6, 0x1c, 0x47, 0x31, 0xdf, 0xed, 0xbd, 0x57, + 0xfc, 0x8f, 0x03, 0x5e, 0x1c, 0xc8, 0xe3, 0x5f, 0x87, 0xcb, 0xab, 0xf0, 0x87, 0x30, 0xcc, 0xf0, + 0x4b, 0xb0, 0x45, 0x8c, 0x5e, 0x58, 0x51, 0xc7, 0x65, 0x25, 0xc7, 0xe9, 0x6f, 0x45, 0x14, 0x43, + 0x25, 0x59, 0x32, 0x13, 0xbc, 0x2d, 0x35, 0xd6, 0xe5, 0x0a, 0x29, 0xef, 0xb6, 0xdb, 0xa5, 0xf5, + 0xaf, 0xc6, 0xf3, 0x10, 0x5a, 0xc1, 0x4d, 0x0b, 0x47, 0xbb, 0x23, 0x9a, 0x05, 0x0f, 0x79, 0xef, + 0x3f, 0x39, 0x62, 0x04, 0x3d, 0x5e, 0x87, 0xc5, 0x22, 0x9d, 0x09, 0xad, 0xf0, 0xca, 0xe1, 0xc0, + 0xb1, 0x1d, 0xda, 0x1c, 0x21, 0xbf, 0xef, 0x38, 0x55, 0xc9, 0x63, 0xfd, 0x3a, 0x96, 0xc6, 0x0c, + 0xd1, 0x1f, 0x2a, 0xe6, 0x9e, 0x08, 0x98, 0x6a, 0xe8, 0xa1, 0xa1, 0x5a, 0x49, 0x69, 0x57, 0xc4, + 0xe9, 0x15, 0x21, 0xaa, 0xde, 0xab, 0x35, 0x4b, 0xc3, 0xdc, 0xe2, 0x7b, 0x46, 0xf8, 0x43, 0x47, + 0x24, 0x10, 0xa1, 0x49, 0x2b, 0x9d, 0x5b, 0x65, 0x3d, 0x4b, 0xea, 0xf7, 0x72, 0xde, 0x23, 0xe1, + 0xac, 0x67, 0xf3, 0x6d, 0xd0, 0x3c, 0x4a, 0x08, 0xcd, 0x1e, 0x3a, 0xba, 0xfd, 0x8a, 0x24, 0x97, + 0xf5, 0xb9, 0x60, 0xfb, 0x81, 0x75, 0xef, 0x5c, 0x7d, 0xe7, 0xd9, 0x40, 0xe6, 0xd7, 0x84, 0xcb, + 0x4e, 0x29, 0x64, 0x14, 0x3e, 0xd3, 0xeb, 0x69, 0x4e, 0xc2, 0x43, 0x95, 0x64, 0x5b, 0x64, 0x24, + 0x2e, 0xf4, 0x8c, 0xc4, 0xc5, 0x79, 0x7e, 0xd1, 0xd8, 0xfe, 0xc2, 0x36, 0x57, 0xa6, 0x1e, 0xb3, + 0xf0, 0x7f, 0xc7, 0x1e, 0x0a, 0xfd, 0xd7, 0x59, 0x9c, 0x16, 0xf0, 0x98, 0xba, 0x61, 0x51, 0xf6, + 0x43, 0x30, 0xc1, 0xf6, 0xcc, 0x51, 0xc2, 0xaa, 0x82, 0x1e, 0x8d, 0x48, 0xb7, 0xbd, 0xd7, 0xc7, + 0xa9, 0x1c, 0xc2, 0x3a, 0xac, 0xce, 0x97, 0x3a, 0xa3, 0xf5, 0xb8, 0x79, 0x4a, 0x2c, 0xbf, 0x18, + 0xe7, 0xa9, 0x54, 0x54, 0x35, 0x66, 0xed, 0x54, 0xd3, 0x60, 0x75, 0x44, 0xdd, 0x1f, 0xff, 0xd9, + 0xac, 0xc5, 0x78, 0x6b, 0x7e, 0x7d, 0x1d, 0x7c, 0x0c, 0x7f, 0x3f, 0xeb, 0x54, 0xf7, 0x74, 0x02, + 0xb9, 0x25, 0x6e, 0x8b, 0xc1, 0xfd, 0xf6, 0x96, 0x2f, 0x90, 0x66, 0x2d, 0x34, 0xf8, 0xb6, 0x94, + 0xf9, 0x95, 0x1f, 0x44, 0xbb, 0x2e, 0x00, 0x22, 0xbd, 0x92, 0x42, 0xc4, 0x82, 0xdc, 0x96, 0xc7, + 0xa7, 0xa2, 0xbf, 0x9e, 0x6b, 0x17, 0x4b, 0xce, 0xab, 0xde, 0x3e, 0x17, 0xd9, 0xf4, 0xda, 0x46, + 0x74, 0xaf, 0xf4, 0xea, 0x2a, 0x0e, 0x4f, 0x59, 0x25, 0x08, 0xb8, 0xa4, 0x73, 0x67, 0x8b, 0xe4, + 0xd8, 0x7e, 0x1d, 0x5b, 0xa2, 0x46, 0x0c, 0x3c, 0x4d, 0x9c, 0xb8, 0x65, 0x58, 0xfa, 0x7d, 0x8e, + 0xe8, 0xef, 0x7b, 0x56, 0x2b, 0x23, 0x24, 0xfd, 0x9a, 0xda, 0xc2, 0xc3, 0x42, 0xaf, 0x3b, 0xbc, + 0xcb, 0x77, 0x77, 0xef, 0x72, 0x2d, 0x96, 0x37, 0x6d, 0xf4, 0xdf, 0xc3, 0xc9, 0x19, 0x09, 0x76, + 0x61, 0xd1, 0xfb, 0xe5, 0xf4, 0xcd, 0x7b, 0x98, 0x76, 0xa9, 0x10, 0xce, 0x8d, 0xe5, 0x82, 0xc6, + 0xd7, 0x28, 0x6c, 0x6a, 0x4a, 0xc4, 0x9a, 0xb9, 0x87, 0xc7, 0x9e, 0x76, 0x16, 0xd5, 0x30, 0xb2, + 0xbc, 0x75, 0x10, 0x1a, 0x0e, 0xbb, 0x90, 0x2f, 0xb4, 0x4d, 0x92, 0x5b, 0x6c, 0x49, 0x90, 0xf7, + 0x4a, 0x4b, 0x49, 0x5f, 0x7b, 0xa6, 0x01, 0x90, 0x68, 0x3c, 0xa5, 0x53, 0xca, 0x0a, 0xa4, 0xaf, + 0xa3, 0x4d, 0x1f, 0x0b, 0xa5, 0x2c, 0x42, 0x78, 0x9f, 0x87, 0x17, 0x55, 0xed, 0xae, 0x5f, 0x56, + 0xd3, 0x60, 0x4a, 0xe9, 0x28, 0x21, 0x88, 0xa0, 0x9e, 0x81, 0x93, 0xd7, 0xa3, 0xf8, 0x78, 0x77, + 0x77, 0xa7, 0x80, 0xdf, 0x08, 0x2b, 0xa6, 0xe8, 0x4c, 0xfb, 0xf7, 0x6b, 0xd1, 0x0e, 0xa6, 0xb6, + 0x27, 0xe6, 0x92, 0xf6, 0xf4, 0x75, 0x9a, 0x22, 0x6b, 0x04, 0x30, 0x88, 0x2a, 0x34, 0x55, 0x3e, + 0xc4, 0xba, 0x45, 0xb6, 0x2b, 0x1a, 0x69, 0xec, 0xc7, 0x50, 0x17, 0x60, 0xf3, 0x45, 0x7a, 0xf7, + 0x21, 0x0d, 0xf2, 0xa2, 0x84, 0x03, 0xb6, 0x59, 0x02, 0x1f, 0xd3, 0x24, 0xa1, 0x43, 0xac, 0x44, + 0xca, 0x06, 0x0d, 0x10, 0x1c, 0xee, 0x50, 0x28, 0x2e, 0xf8, 0x93, 0x02, 0x2d, 0x89, 0x03, 0x39, + 0x21, 0x3c, 0xf8, 0xe9, 0xc3, 0xcf, 0xef, 0xf8, 0x5c, 0xae, 0x26, 0xb1, 0x18, 0xdb, 0x21, 0xcc, + 0x31, 0x48, 0x74, 0x45, 0xd7, 0x24, 0x9c, 0xd3, 0x21, 0xb6, 0x54, 0xeb, 0x2d, 0xd5, 0xcc, 0xb0, + 0xf0, 0x14, 0x7d, 0x06, 0x49, 0x74, 0x1d, 0x88, 0x3b, 0x4e, 0x79, 0xe9, 0x2b, 0x6a, 0xf8, 0x6b, + 0x90, 0xe4, 0xc9, 0xf5, 0x12, 0x9d, 0xda, 0x36, 0xe3, 0xc8, 0x4b, 0xcf, 0xab, 0x4d, 0x05, 0x9b, + 0x8a, 0x88, 0xf9, 0x70, 0x1e, 0x9f, 0x46, 0x56, 0x9a, 0xaa, 0x3b, 0x74, 0x93, 0xe6, 0xd8, 0xc5, + 0x77, 0x82, 0x09, 0x72, 0x35, 0xd8, 0x04, 0x2d, 0x71, 0x8f, 0x39, 0x5b, 0x6f, 0x35, 0xd7, 0xf6, + 0x6b, 0x9a, 0xdb, 0x50, 0x8a, 0xe9, 0xa9, 0xc5, 0x42, 0xbc, 0x35, 0x0f, 0xe8, 0x68, 0x9f, 0xed, + 0xd8, 0x30, 0x20, 0xd3, 0x84, 0x70, 0xcc, 0x8f, 0x01, 0x96, 0x3e, 0xd3, 0xda, 0x70, 0xdb, 0x8b, + 0xab, 0x91, 0x8b, 0x69, 0xe7, 0xa1, 0x57, 0x1a, 0xbe, 0xb0, 0xf8, 0xf5, 0x26, 0xc1, 0x9c, 0x9e, + 0x15, 0xcb, 0x6a, 0x5b, 0x94, 0x59, 0xcd, 0x39, 0xab, 0x40, 0x15, 0x29, 0xba, 0x53, 0x1c, 0xbc, + 0x40, 0xe0, 0x4d, 0x84, 0xf4, 0xd2, 0x4a, 0x3b, 0xc5, 0x3e, 0x17, 0x7f, 0x9b, 0x3b, 0x07, 0x47, + 0xcf, 0x39, 0xa4, 0x69, 0xfb, 0xeb, 0x7d, 0xbc, 0xfd, 0x36, 0x71, 0x0e, 0x9e, 0x73, 0x80, 0x99, + 0x7c, 0x9c, 0x8b, 0x44, 0x22, 0x7d, 0x1f, 0x4a, 0x26, 0x3a, 0x1b, 0x6d, 0xa8, 0xff, 0x1f, 0x72, + 0x9b, 0x73, 0x84, 0x20, 0x75, 0xad, 0xba, 0xa1, 0x4b, 0xbb, 0x7e, 0x42, 0x94, 0x61, 0x9c, 0x94, + 0x1f, 0x24, 0xc4, 0x04, 0xa4, 0x37, 0xc0, 0x23, 0xfc, 0x43, 0x9f, 0x50, 0x6d, 0x77, 0x07, 0x29, + 0x3e, 0x60, 0x36, 0x42, 0x5b, 0x8e, 0x1a, 0x20, 0x86, 0x76, 0x74, 0xfc, 0x92, 0xb6, 0x54, 0x2e, + 0xca, 0x62, 0xfa, 0x9a, 0x6f, 0x69, 0xdd, 0xe2, 0x04, 0xa0, 0x10, 0xe5, 0xe4, 0xf7, 0x5a, 0x7d, + 0x59, 0x8e, 0x92, 0x62, 0x1f, 0xb1, 0x63, 0xe9, 0x93, 0x3c, 0x84, 0x1c, 0x98, 0x6a, 0x26, 0x6e, + 0x44, 0x86, 0x96, 0xe9, 0x1d, 0x5b, 0xca, 0xe5, 0xb8, 0x7d, 0x97, 0x1a, 0xd2, 0xcb, 0x93, 0x62, + 0x39, 0x3a, 0x29, 0x66, 0xc2, 0xb8, 0xc8, 0xb7, 0x3f, 0x86, 0x0f, 0xc5, 0xcc, 0x1e, 0x7d, 0xfd, + 0x18, 0xae, 0x4e, 0x0e, 0x8a, 0x99, 0xfe, 0xea, 0x36, 0x88, 0xc5, 0xab, 0x62, 0x45, 0x5c, 0xb4, + 0x7c, 0x7d, 0x40, 0x9f, 0x5f, 0x1a, 0xab, 0xf3, 0x4e, 0xbb, 0x0f, 0x3a, 0x2d, 0x63, 0xac, 0xf5, + 0xab, 0xb3, 0x1c, 0x36, 0xa1, 0x7c, 0x29, 0xe3, 0x14, 0x22, 0xb1, 0x6d, 0xb7, 0x5b, 0x06, 0xd2, + 0x1e, 0x11, 0x11, 0x64, 0xff, 0x7f, 0x10, 0x43, 0xdd, 0xc2, 0x93, 0x48, 0xf3, 0xf4, 0xe3, 0x6f, + 0xd4, 0xa4, 0x46, 0x09, 0x09, 0x7b, 0x2e, 0x33, 0x40, 0x1a, 0xcd, 0x2e, 0x1d, 0x71, 0xdd, 0x38, + 0xdc, 0xe1, 0x96, 0xd9, 0xaf, 0xd3, 0x13, 0x59, 0x04, 0xa8, 0x8f, 0x71, 0x55, 0xf5, 0x2e, 0xa0, + 0x31, 0x3b, 0xda, 0x5e, 0xb7, 0xed, 0xc1, 0x86, 0xb7, 0x97, 0xbb, 0x5f, 0xbd, 0x24, 0xe9, 0x7b, + 0x68, 0xfd, 0x72, 0x1b, 0x2e, 0x61, 0x85, 0x1a, 0x25, 0x57, 0xd6, 0xd7, 0x8f, 0x19, 0xf3, 0xfb, + 0x85, 0xb3, 0xda, 0xd1, 0xc6, 0x9e, 0x49, 0xc5, 0xb2, 0xba, 0x1e, 0x16, 0x07, 0x35, 0xad, 0x7d, + 0x19, 0x27, 0x9c, 0x61, 0xdb, 0xdd, 0x15, 0x20, 0x86, 0x17, 0xd5, 0x53, 0x0f, 0x18, 0x40, 0x48, + 0x5c, 0xfe, 0x44, 0xc0, 0x9f, 0x6a, 0xed, 0xf2, 0xd3, 0x38, 0x78, 0x80, 0xd1, 0x83, 0xa6, 0xd9, + 0x2e, 0xeb, 0x66, 0xf2, 0x9d, 0xd6, 0x9a, 0x2a, 0xea, 0x65, 0xb9, 0x06, 0x5e, 0x90, 0x45, 0xff, + 0x08, 0x62, 0x25, 0xd8, 0x70, 0xe5, 0x4f, 0x9f, 0x76, 0xd4, 0x47, 0xd2, 0xb6, 0x80, 0xf0, 0x57, + 0x80, 0xdf, 0x70, 0xda, 0x28, 0x2b, 0x96, 0x37, 0xd8, 0xbd, 0x3b, 0x8e, 0x8a, 0x43, 0x7f, 0x07, + 0x9d, 0x19, 0x9d, 0xd8, 0x45, 0x48, 0x65, 0x89, 0x5b, 0x3e, 0x66, 0xd5, 0xe3, 0x1f, 0x71, 0x5d, + 0x2b, 0x59, 0xe8, 0x24, 0xfd, 0x8f, 0x58, 0xcd, 0xdd, 0x93, 0x33, 0xf5, 0x47, 0x3c, 0xd6, 0x9e, + 0x71, 0x93, 0x56, 0xe1, 0x48, 0xf6, 0xfd, 0xf4, 0x63, 0x89, 0x71, 0x4c, 0x5c, 0x26, 0x53, 0x08, + 0x5b, 0x38, 0x69, 0x62, 0x61, 0x7a, 0x20, 0xd2, 0x5c, 0xf0, 0x2f, 0xfa, 0x84, 0xaf, 0x18, 0x89, + 0x29, 0x7c, 0xc9, 0xff, 0x03, 0x73, 0x84, 0xc0, 0x53, 0xaf, 0xd3, 0xeb, 0x6b, 0xe2, 0x7f, 0x70, + 0x9c, 0x64, 0x0f, 0x76, 0x8d, 0x08, 0x66, 0x51, 0x38, 0x03, 0x01, 0x9c, 0xc6, 0x51, 0x36, 0x49, + 0x83, 0x25, 0x51, 0x3f, 0x6d, 0x20, 0x19, 0xaf, 0xb9, 0xb0, 0xde, 0x2b, 0x31, 0x01, 0x57, 0xaf, + 0x84, 0x67, 0x43, 0x64, 0x64, 0xe8, 0xe4, 0x9b, 0x78, 0x44, 0x68, 0xb2, 0x05, 0x37, 0x3b, 0xea, + 0x7b, 0x8c, 0x12, 0x20, 0xac, 0x65, 0xfa, 0x83, 0x95, 0x60, 0x92, 0xf6, 0x4e, 0x66, 0xd1, 0xad, + 0xda, 0x95, 0x79, 0x78, 0x65, 0x4d, 0xed, 0xd1, 0xde, 0x30, 0xe9, 0xc2, 0xda, 0xe5, 0x5f, 0xe9, + 0x8d, 0xb5, 0x08, 0x6e, 0x43, 0xe2, 0xe7, 0x25, 0x30, 0xb9, 0xf5, 0x10, 0x16, 0x3b, 0x44, 0x74, + 0xce, 0xd2, 0xe5, 0xf2, 0xc1, 0xb5, 0x88, 0xf1, 0x5e, 0x86, 0xd6, 0x1d, 0xcc, 0x08, 0x81, 0x5a, + 0xf9, 0x4d, 0x68, 0xc9, 0xdc, 0x25, 0xd6, 0x03, 0x91, 0x25, 0xf5, 0x15, 0x11, 0xf5, 0x42, 0xd8, + 0x48, 0xd8, 0x27, 0x13, 0x22, 0x11, 0xf4, 0x9f, 0xed, 0x8a, 0x3e, 0x7e, 0xa2, 0x1d, 0x4e, 0xdb, + 0x41, 0x35, 0x15, 0xe5, 0x16, 0xce, 0xd9, 0x9b, 0x4c, 0x7e, 0x6a, 0xd1, 0xd1, 0x1d, 0x80, 0x17, + 0x09, 0x50, 0x70, 0x1b, 0xa5, 0x37, 0xb9, 0xb0, 0x75, 0x8c, 0x85, 0x61, 0x93, 0x15, 0xdc, 0xd2, + 0xb1, 0x01, 0x0b, 0x82, 0x1e, 0x5a, 0xfd, 0x3f, 0x89, 0x65, 0x59, 0x9d, 0xb3, 0xe0, 0x16, 0x10, + 0x04, 0xaa, 0x8d, 0xbb, 0x28, 0x8e, 0xad, 0x05, 0xf1, 0x02, 0x1c, 0x03, 0x93, 0x40, 0x9d, 0x59, + 0xa9, 0xdc, 0x82, 0x28, 0x0a, 0x65, 0x97, 0x0e, 0x8d, 0xeb, 0x27, 0x09, 0x44, 0xa0, 0xc0, 0x00, + 0x1b, 0x44, 0x35, 0x70, 0x45, 0x65, 0x7d, 0x4c, 0xd2, 0x3b, 0x22, 0x4b, 0x69, 0x3a, 0xb3, 0xd8, + 0x19, 0x7b, 0xc0, 0x83, 0xd8, 0x3b, 0x81, 0x74, 0x1d, 0xd0, 0x31, 0x69, 0x91, 0x18, 0xce, 0x58, + 0x02, 0x52, 0x26, 0xcb, 0x46, 0x25, 0x58, 0x27, 0x93, 0x9b, 0xa2, 0xe0, 0x13, 0x8d, 0xe7, 0x7a, + 0x52, 0x24, 0x16, 0xfd, 0xb7, 0x9f, 0xd9, 0x24, 0x3d, 0x13, 0x02, 0x4c, 0x3f, 0xfa, 0xb6, 0x44, + 0x3a, 0x7b, 0x44, 0xa8, 0xf1, 0x60, 0x20, 0xc6, 0xc9, 0x81, 0xf8, 0x7a, 0xb4, 0xe7, 0xb8, 0x3c, + 0x8d, 0x07, 0xb4, 0x6c, 0x23, 0x75, 0xa3, 0x03, 0x59, 0xcb, 0xd6, 0x49, 0x4d, 0xe2, 0x96, 0x6c, + 0x0c, 0x63, 0xad, 0xb4, 0x9f, 0xc8, 0x6b, 0xfa, 0x09, 0xc5, 0xfe, 0x87, 0xc2, 0x26, 0x4a, 0x5a, + 0x51, 0xe0, 0xde, 0xda, 0x67, 0x11, 0x84, 0x9f, 0x47, 0x9e, 0x32, 0x15, 0xca, 0x52, 0xb6, 0x27, + 0x0b, 0xd5, 0x67, 0x10, 0x01, 0xd4, 0xb5, 0x36, 0xfd, 0x2b, 0x32, 0xe8, 0x10, 0x27, 0x30, 0xec, + 0x10, 0x13, 0x48, 0x05, 0x3b, 0xbe, 0x7c, 0x0b, 0x79, 0x52, 0xaf, 0xb8, 0x49, 0x94, 0x65, 0x49, + 0x56, 0xe2, 0xcd, 0x13, 0x82, 0x6c, 0x87, 0x24, 0x85, 0x8f, 0x74, 0x2c, 0xd6, 0x18, 0x17, 0xb7, + 0x14, 0x70, 0x35, 0x09, 0xb7, 0xc1, 0x47, 0xc8, 0xbb, 0xfc, 0xd0, 0xad, 0x8f, 0x0a, 0xf2, 0xce, + 0x54, 0xf0, 0x27, 0x42, 0x0c, 0x6a, 0x93, 0x80, 0x75, 0xbe, 0x11, 0xd3, 0xa0, 0x4b, 0xc4, 0xc4, + 0x35, 0xe8, 0x5b, 0x57, 0x98, 0x68, 0x55, 0xe2, 0xad, 0x43, 0xd0, 0xe0, 0x82, 0xaf, 0xe2, 0x92, + 0x42, 0xa2, 0x19, 0x66, 0x3a, 0x26, 0x43, 0xb4, 0x53, 0xab, 0xf3, 0xe4, 0xac, 0x61, 0xd4, 0x07, + 0xca, 0x74, 0xe1, 0xcf, 0x4f, 0x5b, 0xd1, 0x3a, 0x6d, 0xc2, 0xe0, 0x41, 0x52, 0x74, 0x12, 0x7a, + 0x96, 0x30, 0xc9, 0x27, 0x96, 0xb5, 0x9c, 0x46, 0x05, 0x76, 0x6d, 0x1e, 0x5d, 0x9c, 0xce, 0xad, + 0xd3, 0x59, 0xe8, 0xd3, 0x59, 0xf0, 0x74, 0xd6, 0xe6, 0xaf, 0xfc, 0xb6, 0x36, 0x45, 0x24, 0xd1, + 0x7e, 0xde, 0xe4, 0x84, 0xf3, 0x39, 0x81, 0xf3, 0x3f, 0x36, 0x37, 0xe1, 0x13, 0x73, 0xf3, 0x46, + 0x74, 0xff, 0x97, 0x4d, 0x06, 0x48, 0x38, 0xe0, 0x52, 0x29, 0x7f, 0xb2, 0xbf, 0xbf, 0xf3, 0xcf, + 0x2f, 0xaa, 0x5b, 0x78, 0xd5, 0xef, 0xdf, 0xdf, 0x95, 0x27, 0x19, 0x1d, 0x1d, 0xb4, 0xcb, 0xa9, + 0xa2, 0x3a, 0x1b, 0x3c, 0xe7, 0x31, 0x04, 0x11, 0xcb, 0x14, 0x61, 0x12, 0x37, 0x62, 0xf6, 0xe8, + 0xef, 0xb8, 0xa9, 0xe5, 0x69, 0x3e, 0x39, 0xc8, 0xe8, 0x4c, 0x10, 0xe7, 0x8f, 0x67, 0x8a, 0x88, + 0xd4, 0x10, 0x07, 0xf6, 0xa0, 0x26, 0x2e, 0x6b, 0x04, 0xee, 0xfe, 0x3e, 0x07, 0x81, 0xb3, 0xb2, + 0x9c, 0x26, 0x9c, 0x49, 0x23, 0xb1, 0x45, 0x30, 0x23, 0x5c, 0xfd, 0x11, 0x4f, 0x34, 0xa2, 0xc7, + 0x82, 0x1b, 0x87, 0x93, 0x90, 0xaf, 0x9d, 0x21, 0x18, 0x43, 0x18, 0x61, 0xaf, 0x4a, 0xb2, 0x77, + 0xe9, 0x76, 0xbb, 0xc5, 0xe8, 0x19, 0x1f, 0x63, 0x9e, 0x1b, 0xca, 0x83, 0x84, 0x8e, 0x63, 0x62, + 0xcc, 0x38, 0xba, 0x54, 0x59, 0xb2, 0x12, 0x24, 0xf1, 0x8f, 0xd8, 0x20, 0x88, 0x1a, 0xf7, 0x57, + 0xdf, 0xef, 0xa1, 0xa2, 0x7b, 0x1d, 0x41, 0x11, 0x34, 0xd5, 0xde, 0xe6, 0xd3, 0x55, 0x92, 0x10, + 0xe7, 0x51, 0x72, 0x26, 0x82, 0x95, 0xf0, 0x2e, 0xe4, 0x4c, 0xb5, 0x4c, 0xe9, 0x2b, 0x3a, 0x87, + 0x24, 0x69, 0xe3, 0x39, 0x75, 0xf3, 0x3a, 0xb2, 0x88, 0x16, 0x49, 0x80, 0xcc, 0xd3, 0x65, 0xd1, + 0x99, 0x5e, 0x67, 0xa7, 0x8e, 0x5a, 0x55, 0x71, 0x5e, 0x63, 0x79, 0x35, 0x6d, 0x45, 0x47, 0xda, + 0x1a, 0xe5, 0xbc, 0x0a, 0x82, 0x1b, 0x8b, 0x72, 0xe9, 0xf8, 0x12, 0x23, 0x4a, 0x69, 0x95, 0x20, + 0x09, 0x37, 0x0e, 0x61, 0x25, 0xdc, 0xc4, 0x04, 0xaa, 0x90, 0x5e, 0x53, 0x1f, 0x35, 0x89, 0x03, + 0x1a, 0xa6, 0x44, 0xf1, 0x09, 0x35, 0x44, 0x42, 0xf6, 0xd0, 0x4d, 0x2f, 0x94, 0x53, 0x11, 0x88, + 0x5a, 0x81, 0x35, 0xae, 0x71, 0x0b, 0x18, 0x4d, 0xb9, 0xb8, 0xe1, 0x2a, 0xb5, 0x69, 0xa5, 0xca, + 0xbb, 0xd5, 0x2c, 0x62, 0xcb, 0xe0, 0xda, 0x67, 0x54, 0xaa, 0x64, 0x02, 0x9c, 0x61, 0x97, 0xcd, + 0x86, 0xb3, 0x84, 0x18, 0xb8, 0x35, 0x18, 0x12, 0xae, 0x1c, 0x7c, 0x6d, 0xb0, 0xb1, 0x63, 0xfb, + 0x24, 0x92, 0xdf, 0xee, 0x45, 0xa0, 0xc4, 0x7c, 0xb0, 0xe2, 0x69, 0x6f, 0xb4, 0xfb, 0xd5, 0x7d, + 0xd8, 0x3f, 0x7a, 0x39, 0x3c, 0x39, 0x88, 0x46, 0x90, 0xa8, 0x56, 0x8a, 0xe1, 0x0e, 0x1d, 0x09, + 0x80, 0x38, 0x9c, 0x55, 0x03, 0xb6, 0x68, 0x20, 0xe4, 0xcf, 0xad, 0x79, 0xbc, 0x24, 0x0e, 0x5d, + 0x59, 0xc8, 0x9d, 0x87, 0xdd, 0xbe, 0xe7, 0x5d, 0x90, 0x08, 0x7f, 0x9f, 0x71, 0x5b, 0x62, 0xe4, + 0x34, 0x0f, 0x21, 0x55, 0xc2, 0xbb, 0x95, 0x06, 0xb5, 0xf8, 0xaa, 0xa3, 0xde, 0x10, 0xd8, 0x80, + 0xe5, 0xe8, 0xe5, 0x31, 0xc3, 0x22, 0x7a, 0x35, 0x67, 0x93, 0x44, 0x33, 0xd5, 0x60, 0xd9, 0xde, + 0xa8, 0x02, 0x52, 0x3c, 0x01, 0xcb, 0x2f, 0xd9, 0xc4, 0xac, 0xdb, 0x5d, 0xd1, 0x72, 0xaf, 0xe1, + 0x00, 0x0a, 0xae, 0x82, 0xdd, 0xcd, 0x27, 0x39, 0x1f, 0xc5, 0xbb, 0xbb, 0x9e, 0xfc, 0xb7, 0xb3, + 0xfe, 0xde, 0x1f, 0xba, 0x45, 0x9c, 0xea, 0x12, 0xbb, 0x09, 0x49, 0xd8, 0xcc, 0x6d, 0x7d, 0xfd, + 0x86, 0x8d, 0x80, 0xc0, 0xe1, 0x52, 0x8d, 0x49, 0x7f, 0x4b, 0x94, 0x0d, 0x88, 0x7e, 0x04, 0x95, + 0xad, 0x46, 0x80, 0x3b, 0x26, 0x81, 0x96, 0xc9, 0x79, 0x70, 0x31, 0xac, 0x4d, 0x34, 0xd1, 0x39, + 0x31, 0x87, 0xfc, 0x93, 0xf5, 0x02, 0x50, 0x28, 0x9c, 0xc6, 0xc4, 0x73, 0xe3, 0xfe, 0x81, 0xdd, + 0xcd, 0x0d, 0xea, 0xe8, 0x39, 0x43, 0xa1, 0xed, 0x39, 0x7d, 0x25, 0xb8, 0x13, 0x8d, 0x00, 0xca, + 0xea, 0xd2, 0x5e, 0xcf, 0x3c, 0x48, 0x58, 0xb1, 0xf6, 0x79, 0x47, 0x09, 0x84, 0xe0, 0xad, 0xce, + 0x91, 0x92, 0xdb, 0xbf, 0x89, 0x67, 0xac, 0x19, 0x47, 0x87, 0x16, 0x7a, 0x14, 0xba, 0x8e, 0x6d, + 0xcf, 0x5d, 0x65, 0x35, 0x58, 0x48, 0x8d, 0x13, 0x89, 0x47, 0x84, 0xc7, 0xc2, 0x04, 0x08, 0x4f, + 0xd2, 0x1e, 0x46, 0xc3, 0x81, 0xdc, 0x2d, 0x7a, 0xb1, 0x88, 0x6b, 0x43, 0x08, 0xd6, 0x79, 0x47, + 0x8f, 0x0e, 0x89, 0x90, 0x39, 0x5f, 0x91, 0xa8, 0x42, 0x59, 0x32, 0xeb, 0x15, 0x51, 0x11, 0x13, + 0x8b, 0xa8, 0x0c, 0x45, 0xa1, 0x0a, 0x9f, 0xe5, 0xbd, 0xbb, 0xdb, 0xca, 0x3e, 0x53, 0x16, 0x4d, + 0xf1, 0xc3, 0x30, 0x2f, 0xc5, 0x2d, 0xd9, 0x52, 0x59, 0x6b, 0xca, 0x5a, 0xf4, 0x8b, 0xf0, 0x98, + 0x8d, 0x20, 0x8b, 0xde, 0x3c, 0xef, 0x81, 0xef, 0xc3, 0x74, 0xb0, 0xad, 0x6a, 0xa7, 0x5a, 0x1a, + 0x9e, 0xfa, 0xa2, 0xce, 0x2c, 0x2c, 0xc3, 0x3f, 0xf2, 0x77, 0xe1, 0x55, 0x10, 0xe3, 0xa6, 0xe8, + 0x73, 0x0e, 0x4b, 0x9d, 0x11, 0x2b, 0x5a, 0x19, 0x07, 0xa3, 0x63, 0xcd, 0x00, 0x9b, 0xc3, 0x35, + 0xcc, 0x97, 0x61, 0xb8, 0x08, 0x83, 0xec, 0xa0, 0x1f, 0x1e, 0x0d, 0x73, 0x3f, 0x2f, 0xcd, 0xa1, + 0xfb, 0x4a, 0xab, 0x1c, 0x8a, 0xe1, 0x65, 0x77, 0x4b, 0x37, 0xf6, 0xed, 0xf7, 0xc2, 0xa3, 0x6a, + 0xca, 0x2d, 0xce, 0xec, 0x61, 0x32, 0xa2, 0x0f, 0xc7, 0xc8, 0xe1, 0x43, 0xff, 0x3f, 0xf0, 0xe9, + 0x87, 0x53, 0x59, 0x54, 0x93, 0x1c, 0x86, 0xec, 0xb5, 0x22, 0xdb, 0xac, 0x3d, 0x48, 0x46, 0x10, + 0xcb, 0xb8, 0xee, 0xb1, 0xf7, 0xad, 0x66, 0x64, 0x9d, 0x1c, 0x1c, 0x7b, 0x5c, 0xe9, 0xfa, 0x95, + 0xad, 0x28, 0xb4, 0x38, 0xb7, 0xc3, 0xde, 0x0d, 0x5f, 0xde, 0xb2, 0x6d, 0xeb, 0x39, 0x4d, 0xe8, + 0x05, 0x9d, 0xc1, 0xb5, 0x23, 0x04, 0x75, 0x1c, 0xf6, 0x67, 0x4a, 0xbb, 0xbe, 0x52, 0xd5, 0x50, + 0x55, 0xbe, 0x4a, 0xc4, 0x89, 0x30, 0x30, 0xcb, 0x45, 0x0f, 0x81, 0x6f, 0xff, 0xef, 0x9b, 0x9b, + 0x45, 0xf0, 0xf1, 0xc6, 0x26, 0x11, 0x97, 0xa4, 0xa3, 0x1e, 0x2b, 0xbb, 0xf3, 0xdf, 0xa3, 0x62, + 0xd1, 0xb1, 0xbd, 0x5e, 0xff, 0xa8, 0x07, 0x55, 0x7b, 0x87, 0xea, 0x7d, 0x48, 0x3f, 0x46, 0x36, + 0xd0, 0x16, 0xb5, 0x4a, 0x2f, 0x45, 0x7b, 0x7f, 0x12, 0xab, 0x1a, 0xbf, 0x3e, 0xdc, 0xfc, 0x87, + 0xf5, 0x4c, 0x61, 0x6f, 0x9a, 0x70, 0x11, 0x1e, 0x04, 0xa1, 0xbf, 0x25, 0xd2, 0x86, 0x2f, 0x57, + 0x96, 0xfd, 0xf5, 0x63, 0xb0, 0x2a, 0x05, 0xc2, 0x13, 0x76, 0xca, 0x2d, 0xa9, 0x30, 0xc1, 0x57, + 0xd8, 0x44, 0xf6, 0xbe, 0x7e, 0x4c, 0x57, 0xf8, 0xab, 0x00, 0xb6, 0xbf, 0xbf, 0x89, 0x62, 0x5c, + 0xf2, 0xf6, 0x6e, 0x11, 0x31, 0xc2, 0x78, 0x75, 0x16, 0x5d, 0x11, 0x8f, 0x0d, 0x7f, 0x67, 0x26, + 0x2f, 0xa8, 0x74, 0x17, 0xcd, 0xa3, 0x5e, 0xce, 0xe5, 0x5d, 0xfb, 0x1b, 0x8b, 0x03, 0x85, 0x70, + 0xd9, 0x32, 0xcf, 0x23, 0xd7, 0xb6, 0x66, 0xdf, 0x5f, 0x3b, 0x76, 0xad, 0x99, 0xdf, 0x32, 0x68, + 0x04, 0xd9, 0x69, 0x48, 0xd7, 0x0e, 0xf6, 0x6e, 0xb8, 0xdc, 0xa9, 0xd5, 0xfe, 0x91, 0x30, 0xc6, + 0x02, 0xca, 0x10, 0x02, 0x51, 0x83, 0x1f, 0xbf, 0x97, 0xcd, 0x85, 0xbd, 0x2c, 0x5f, 0x06, 0xd7, + 0x63, 0xb3, 0xe2, 0xe9, 0xd9, 0xaf, 0xaf, 0x7e, 0xb6, 0xdd, 0x8e, 0x7c, 0x7b, 0xd0, 0xf7, 0x0e, + 0x9f, 0x39, 0x1a, 0x92, 0xc9, 0x16, 0x70, 0xb8, 0x18, 0xbd, 0xbc, 0xa1, 0xcd, 0x7f, 0x0d, 0x14, + 0xb3, 0xa4, 0x59, 0xb5, 0xed, 0xc6, 0x35, 0x40, 0x5e, 0xd1, 0xa4, 0x12, 0x75, 0xb6, 0x7e, 0x3c, + 0x3d, 0xc3, 0xc8, 0x19, 0x4b, 0xe7, 0x59, 0x5e, 0xab, 0xf5, 0xf3, 0xab, 0xd7, 0x56, 0x30, 0x9b, + 0x2d, 0x39, 0xc9, 0x6f, 0x48, 0xbb, 0x74, 0x5a, 0x1f, 0x4f, 0x14, 0x87, 0xf9, 0x43, 0x4e, 0xf4, + 0x1d, 0xef, 0x69, 0xe3, 0xde, 0x10, 0xc5, 0xc3, 0xb4, 0xd1, 0x63, 0xd1, 0x05, 0x78, 0x98, 0x45, + 0x0d, 0x5b, 0xe1, 0x08, 0x20, 0x2a, 0x1e, 0x88, 0x4a, 0x0e, 0x47, 0xf6, 0xae, 0x35, 0xfb, 0x26, + 0xb9, 0x8d, 0x96, 0x69, 0x72, 0xcd, 0xa0, 0x87, 0xbd, 0x60, 0x39, 0x5d, 0xb0, 0x2e, 0x13, 0x56, + 0x8f, 0xcb, 0x90, 0x1e, 0x79, 0x69, 0xe2, 0xbb, 0x28, 0x43, 0x90, 0x03, 0x7c, 0x4c, 0x32, 0x34, + 0x30, 0x82, 0x0e, 0x3b, 0x26, 0x71, 0x1f, 0x6f, 0xcd, 0xf3, 0xad, 0xb9, 0xa1, 0x89, 0xf8, 0xf0, + 0x25, 0xba, 0xbe, 0xa9, 0x87, 0xba, 0x9d, 0xb9, 0x69, 0x5c, 0x2e, 0x6c, 0xca, 0x35, 0xdb, 0x43, + 0x5c, 0x00, 0x76, 0x70, 0xba, 0x5d, 0x89, 0x58, 0x75, 0xda, 0x55, 0xe0, 0xa3, 0x6a, 0xa6, 0xdb, + 0x2d, 0xc9, 0x00, 0x15, 0x9d, 0xe7, 0x17, 0xcc, 0x55, 0xc5, 0x15, 0x57, 0x95, 0x20, 0x90, 0xc9, + 0x50, 0x5a, 0xd1, 0x9f, 0xc7, 0x17, 0x7e, 0xd2, 0x4b, 0x11, 0xd6, 0xd9, 0xd7, 0x7b, 0xe7, 0x03, + 0x58, 0x03, 0x26, 0xee, 0xd2, 0xca, 0xc7, 0x23, 0x40, 0x84, 0x57, 0x00, 0x2c, 0x6e, 0xe5, 0xb7, + 0xb0, 0x23, 0xac, 0x13, 0xa6, 0xf4, 0xaa, 0x94, 0x95, 0x99, 0x56, 0x3e, 0x5d, 0x7c, 0x8c, 0x6d, + 0x8b, 0x6f, 0x0d, 0x88, 0x81, 0x4a, 0xf3, 0x88, 0x63, 0x28, 0x05, 0x13, 0x22, 0x86, 0x37, 0x45, + 0xc8, 0xdf, 0x59, 0xbb, 0xc9, 0x24, 0xcf, 0x86, 0xcc, 0x4a, 0xf0, 0x3d, 0x98, 0x25, 0xee, 0xc1, + 0xb8, 0x85, 0x49, 0x7a, 0xaf, 0x31, 0x1f, 0xf1, 0x2a, 0xa7, 0xb3, 0x04, 0xbc, 0x8c, 0x88, 0xac, + 0x46, 0xa5, 0x80, 0xaa, 0x83, 0x37, 0x8e, 0x4d, 0x2c, 0x51, 0x02, 0x2d, 0xd8, 0x58, 0x7c, 0x4a, + 0x74, 0x0f, 0xf8, 0x2a, 0x78, 0x94, 0x9c, 0x0e, 0x6c, 0x03, 0xb4, 0xeb, 0x60, 0x29, 0xc0, 0x03, + 0x2b, 0x83, 0xb7, 0x3c, 0x84, 0x03, 0x1e, 0x03, 0x3f, 0x9a, 0x23, 0x6c, 0xb0, 0x7e, 0xe8, 0xf7, + 0xcd, 0xbd, 0xec, 0x99, 0xfb, 0x40, 0xef, 0xc9, 0x98, 0xfe, 0x1b, 0xd8, 0x72, 0xc9, 0x09, 0x8f, + 0xe2, 0x15, 0x37, 0x2b, 0x79, 0xa5, 0xed, 0xd8, 0xb9, 0x78, 0x0d, 0x2b, 0x17, 0xb7, 0xb2, 0x71, + 0x71, 0x9d, 0x85, 0x93, 0x9a, 0x9d, 0xda, 0x00, 0xe8, 0x60, 0x10, 0x60, 0xae, 0x81, 0x81, 0xde, + 0x43, 0xe9, 0x5b, 0x22, 0xc8, 0xd8, 0x0e, 0xa6, 0x85, 0x09, 0x02, 0xfa, 0x42, 0x33, 0x06, 0x07, + 0x4c, 0x43, 0x3d, 0xbd, 0x5b, 0xea, 0x70, 0x78, 0x2f, 0xe6, 0x25, 0x2b, 0x69, 0x00, 0xc1, 0x46, + 0xdc, 0xb0, 0xd7, 0xb5, 0x22, 0xa2, 0x86, 0x77, 0xb9, 0xad, 0x78, 0x5c, 0x5e, 0x74, 0xad, 0x93, + 0xc9, 0x32, 0xb2, 0xd5, 0x57, 0x49, 0xca, 0xdf, 0x59, 0x79, 0x94, 0x9b, 0x0b, 0x8f, 0x9e, 0xbf, + 0x5f, 0x46, 0x6a, 0xed, 0xd3, 0x84, 0x9b, 0xf1, 0x6d, 0x79, 0xad, 0xb6, 0x0c, 0x22, 0x11, 0x1a, + 0x99, 0xde, 0xd1, 0x99, 0xef, 0xdb, 0x87, 0xc7, 0xc7, 0x7c, 0xcd, 0xe0, 0xdb, 0x7d, 0xdb, 0xd2, + 0x6f, 0x5a, 0x45, 0xe6, 0x47, 0xdf, 0xc6, 0xfa, 0x51, 0xcf, 0x34, 0xde, 0x83, 0x16, 0x36, 0x98, + 0x81, 0x97, 0xb6, 0xb7, 0x4d, 0xee, 0xd7, 0x58, 0xe4, 0x3a, 0xf7, 0xdc, 0xb2, 0xb6, 0xfc, 0xa3, + 0x39, 0xbb, 0x6a, 0x85, 0xb4, 0x5d, 0x00, 0x85, 0x5d, 0x39, 0x19, 0x59, 0x71, 0x5f, 0x58, 0x72, + 0x46, 0x8c, 0x0f, 0xa9, 0x4a, 0x70, 0x03, 0x43, 0x96, 0xeb, 0x0c, 0x32, 0x9f, 0x6f, 0xa7, 0xf3, + 0x39, 0x8f, 0x5b, 0x10, 0x0b, 0xff, 0xe8, 0x50, 0x1f, 0xa5, 0xc4, 0x52, 0x74, 0xce, 0xb7, 0x50, + 0x8b, 0x34, 0x46, 0xfc, 0x2d, 0x22, 0x86, 0x30, 0x59, 0x01, 0xaa, 0xf7, 0x7a, 0x3d, 0xfb, 0xa0, + 0xd4, 0x11, 0xb6, 0x9c, 0x81, 0x16, 0x75, 0x5c, 0x48, 0x70, 0x0b, 0xa5, 0x49, 0x2c, 0x66, 0xa3, + 0x33, 0x9c, 0xce, 0xd6, 0xbb, 0x37, 0x3f, 0xf0, 0xd5, 0x49, 0x59, 0xfc, 0x75, 0x65, 0xea, 0x2a, + 0xfc, 0x38, 0xc6, 0x36, 0x0c, 0x63, 0x98, 0x65, 0x83, 0xda, 0xb6, 0x48, 0x33, 0x7c, 0x64, 0xaf, + 0xcc, 0xcf, 0x7e, 0xe1, 0x78, 0x40, 0x65, 0x19, 0xdf, 0xc4, 0x34, 0xba, 0x94, 0xd3, 0x55, 0xc7, + 0x17, 0xda, 0xb3, 0x26, 0xe5, 0x50, 0xab, 0x9e, 0xdc, 0x5c, 0x4f, 0xc2, 0xa5, 0xc4, 0x05, 0x4f, + 0x62, 0x07, 0xd5, 0x90, 0xec, 0xe4, 0x7e, 0x7f, 0x65, 0xa0, 0x04, 0xf3, 0x1b, 0xab, 0x06, 0x82, + 0xbd, 0x23, 0x8e, 0x58, 0x22, 0xbd, 0x09, 0xf3, 0x96, 0xe0, 0x84, 0xdb, 0x82, 0xd3, 0xa9, 0xcf, + 0x9c, 0x04, 0x69, 0x40, 0x62, 0x47, 0x0d, 0xd0, 0x34, 0x7b, 0xa2, 0xf6, 0x5f, 0x3c, 0x86, 0x74, + 0x5e, 0x1f, 0x84, 0x06, 0x4e, 0x3a, 0xdf, 0xae, 0xc3, 0x6a, 0x51, 0xe5, 0xc1, 0xfa, 0x99, 0x18, + 0xf7, 0x37, 0x3a, 0xee, 0x33, 0x12, 0xf1, 0xcc, 0x11, 0x9c, 0xc1, 0x54, 0xa3, 0x5e, 0xf8, 0x0a, + 0x06, 0x50, 0x7f, 0x0d, 0x36, 0x5d, 0x2d, 0xb3, 0xd6, 0x05, 0xec, 0xeb, 0xd4, 0x46, 0x9b, 0x0d, + 0xaa, 0xff, 0xd7, 0xcf, 0x7f, 0x9e, 0x4d, 0x37, 0x62, 0x51, 0x1d, 0x08, 0xaa, 0xff, 0x59, 0x40, + 0xb4, 0x1e, 0x14, 0xd3, 0x64, 0x8e, 0xff, 0xf6, 0xf3, 0x12, 0x94, 0x69, 0xed, 0x68, 0x12, 0xb4, + 0xd9, 0x3c, 0x9a, 0x3c, 0x71, 0x34, 0x6d, 0x5e, 0x74, 0x8d, 0x70, 0x2e, 0xac, 0x49, 0x66, 0x8c, + 0x95, 0x70, 0xd9, 0x20, 0xbb, 0xed, 0xb7, 0x16, 0x11, 0xff, 0xbd, 0xcf, 0xad, 0x19, 0xf8, 0x04, + 0xf9, 0xf9, 0xac, 0x06, 0xdf, 0x4c, 0x67, 0x1a, 0x1a, 0xc3, 0x54, 0x3a, 0x1a, 0x79, 0x98, 0x1d, + 0x7d, 0x27, 0x21, 0x97, 0x1a, 0x3f, 0xee, 0xbc, 0x85, 0xd3, 0x59, 0x86, 0xb7, 0xcc, 0xeb, 0x88, + 0xf9, 0xfb, 0x15, 0x97, 0x47, 0x24, 0xd6, 0xcf, 0x54, 0xd8, 0x48, 0xfd, 0xa4, 0xdb, 0xc0, 0xde, + 0x50, 0x2b, 0xb5, 0x53, 0x8e, 0x5a, 0xd2, 0xd9, 0x1b, 0xaa, 0xd0, 0xc2, 0xde, 0x6c, 0xcb, 0xdf, + 0xe8, 0x0c, 0xce, 0x16, 0xa3, 0xf8, 0x39, 0x82, 0xa4, 0x6f, 0x09, 0xed, 0xf4, 0x96, 0x23, 0xb8, + 0x8e, 0x6a, 0x03, 0xf8, 0x39, 0xd2, 0xe1, 0xbf, 0x8e, 0xfe, 0x22, 0xf0, 0x15, 0x2a, 0x68, 0xda, + 0x27, 0xa1, 0x62, 0x05, 0x42, 0x36, 0xb5, 0x4e, 0x3a, 0x5f, 0x3b, 0xf2, 0x85, 0x4a, 0x60, 0xdc, + 0x51, 0x1f, 0xdc, 0x14, 0x91, 0xa9, 0xa2, 0xd8, 0x33, 0x20, 0x5a, 0xd8, 0xa3, 0x9f, 0x83, 0xfb, + 0xe8, 0xfa, 0xe6, 0xda, 0x12, 0xfb, 0x0c, 0x2a, 0xe6, 0x5c, 0xb2, 0xf5, 0x34, 0x67, 0x01, 0x81, + 0x3c, 0xeb, 0x49, 0x38, 0xf7, 0x74, 0x37, 0x59, 0xcf, 0x19, 0x94, 0xbf, 0x10, 0x5c, 0x49, 0xb3, + 0x58, 0xd3, 0x9d, 0x69, 0x35, 0x53, 0x2f, 0xb6, 0x77, 0xf6, 0x81, 0xa0, 0x6c, 0xea, 0x5c, 0xed, + 0xd1, 0xb8, 0xb4, 0x18, 0x62, 0xd6, 0x86, 0x2f, 0xf4, 0x2b, 0x7e, 0xe9, 0x12, 0x86, 0x2c, 0x52, + 0x18, 0x38, 0x39, 0x54, 0x97, 0x6c, 0x40, 0x7e, 0xe2, 0x41, 0xa9, 0xb1, 0xba, 0xf7, 0x90, 0xf4, + 0xd6, 0x11, 0x6a, 0x9a, 0x65, 0x4e, 0x48, 0xdf, 0x70, 0x8a, 0x52, 0xcd, 0x8d, 0xfa, 0x2a, 0xbd, + 0x8b, 0x72, 0xf2, 0xa9, 0x64, 0x9c, 0x09, 0x30, 0x81, 0x2f, 0x9e, 0x44, 0x2a, 0x13, 0x99, 0xc5, + 0xc4, 0x3a, 0xe4, 0xc4, 0x20, 0xd6, 0xd1, 0xe1, 0x40, 0x5e, 0xb9, 0xbf, 0x39, 0x3b, 0x3d, 0x3a, + 0xb4, 0x45, 0x4a, 0xe0, 0xbe, 0x78, 0xf9, 0x42, 0x7f, 0xf9, 0xe2, 0xf0, 0xf9, 0x73, 0x5b, 0x3a, + 0x76, 0xdb, 0x63, 0xbd, 0x87, 0xc4, 0xb8, 0x35, 0xb7, 0x61, 0x50, 0x0b, 0x9b, 0x72, 0xd6, 0x32, + 0x8d, 0xc3, 0x5e, 0x94, 0x0d, 0xc4, 0x73, 0x53, 0xf0, 0x12, 0x2a, 0x9d, 0x32, 0x6a, 0x16, 0xee, + 0xa7, 0x5d, 0x44, 0x65, 0x60, 0xa3, 0x72, 0xa4, 0xfc, 0xec, 0x25, 0x1c, 0x27, 0xe4, 0x51, 0x3e, + 0x08, 0xe5, 0x36, 0x7f, 0x00, 0x6b, 0x54, 0xe6, 0x83, 0x58, 0xc1, 0x18, 0x22, 0x80, 0x69, 0xb0, + 0x0c, 0x3b, 0x42, 0xb7, 0xe5, 0x54, 0xcb, 0x95, 0x52, 0x4b, 0xe9, 0x89, 0xfa, 0x5e, 0x4a, 0x66, + 0xa9, 0x32, 0x51, 0x47, 0xbc, 0x51, 0x7e, 0x73, 0x9e, 0x5e, 0xa0, 0xc3, 0x40, 0x7c, 0x9e, 0x54, + 0x7a, 0x8e, 0xcb, 0x76, 0x3a, 0x16, 0x08, 0x52, 0x4b, 0xa4, 0x51, 0x23, 0x5b, 0xa5, 0xcd, 0xb2, + 0xb4, 0x57, 0xd8, 0x93, 0x4a, 0xc0, 0xaf, 0x1f, 0x03, 0x9a, 0x85, 0xd5, 0x9e, 0xb8, 0x9f, 0x10, + 0xf3, 0x15, 0x38, 0xfa, 0x1d, 0xc5, 0x25, 0x15, 0xf3, 0x42, 0x05, 0x22, 0xd3, 0xcc, 0x8a, 0x15, + 0x1b, 0x11, 0xd5, 0xf6, 0x7c, 0x3f, 0x80, 0xc6, 0x62, 0x6c, 0xbf, 0x3f, 0x78, 0x65, 0x0f, 0xf8, + 0x79, 0x05, 0x7a, 0x77, 0x49, 0x82, 0x5f, 0xb7, 0xbb, 0x5a, 0xd1, 0x34, 0xcc, 0xa6, 0x27, 0xde, + 0x38, 0xef, 0xfa, 0xf6, 0x5b, 0x19, 0xcc, 0xc7, 0x82, 0xd5, 0x1b, 0x6e, 0xa3, 0x95, 0x93, 0x7c, + 0xcf, 0x1e, 0x50, 0x43, 0xb0, 0xa1, 0x46, 0xb5, 0xf7, 0xa9, 0x95, 0xe2, 0xd6, 0xbc, 0x0c, 0xfe, + 0x93, 0x5b, 0x73, 0x48, 0xe4, 0x3d, 0x98, 0x19, 0x40, 0x76, 0x6c, 0xd7, 0xa8, 0x80, 0x3c, 0xac, + 0xf8, 0x9f, 0x52, 0x38, 0x7f, 0x2d, 0x74, 0x0a, 0x65, 0x43, 0x03, 0x88, 0xe8, 0x3c, 0x85, 0x42, + 0xaa, 0x32, 0x05, 0xf1, 0xc4, 0x54, 0x32, 0x9a, 0x9a, 0x54, 0xa9, 0xde, 0xdb, 0x52, 0x89, 0xca, + 0x8b, 0xf6, 0x27, 0xb4, 0xa8, 0xe8, 0xcd, 0xc2, 0x2d, 0xc0, 0x1a, 0x55, 0xea, 0x9a, 0x9b, 0x5f, + 0x03, 0x6f, 0x95, 0x62, 0x15, 0xa9, 0x5d, 0xfe, 0xf4, 0xcd, 0x6f, 0xab, 0xa6, 0xb1, 0xbc, 0xf6, + 0x93, 0x77, 0x70, 0x7c, 0x4d, 0xe8, 0xb2, 0x7a, 0x22, 0xec, 0xe5, 0x8b, 0x68, 0x8e, 0x74, 0x47, + 0xc0, 0x74, 0xe1, 0x13, 0xe2, 0x0d, 0x8b, 0x2a, 0x47, 0x70, 0x41, 0x38, 0xce, 0x31, 0xea, 0x10, + 0x7e, 0x13, 0x0f, 0x50, 0xe3, 0x61, 0x69, 0xc4, 0x8f, 0xfe, 0xc5, 0x0a, 0x6d, 0x6c, 0xbb, 0x9f, + 0x38, 0x0b, 0xbc, 0xe8, 0x11, 0xed, 0x79, 0xa2, 0x25, 0xfb, 0x0c, 0xa6, 0xd9, 0xf6, 0xaa, 0x02, + 0x42, 0x28, 0x43, 0x42, 0xc3, 0x1a, 0xba, 0xeb, 0x5f, 0xc1, 0xb8, 0x15, 0x54, 0x92, 0x26, 0x1c, + 0x17, 0x00, 0x3f, 0x15, 0xd7, 0x71, 0xc7, 0x9e, 0xdf, 0x13, 0xb6, 0xc0, 0x54, 0x3a, 0x9a, 0x89, + 0x7f, 0xd1, 0xa6, 0x8b, 0x13, 0xe9, 0x9f, 0x8a, 0xee, 0xcd, 0xef, 0xb1, 0x46, 0x4f, 0xe9, 0x6f, + 0xaa, 0x9b, 0x63, 0x39, 0x4f, 0x7c, 0xd5, 0xfc, 0xff, 0xc9, 0x14, 0x49, 0x9b, 0x75, 0x7b, 0xa5, + 0x5c, 0x71, 0x6d, 0x7b, 0xd3, 0x6c, 0xf1, 0xad, 0x46, 0x82, 0x19, 0xa3, 0x51, 0x9d, 0xd2, 0x69, + 0xff, 0x3a, 0x27, 0x0a, 0x29, 0x66, 0xc9, 0x19, 0xae, 0x9d, 0x4b, 0x79, 0x79, 0xbf, 0x6e, 0x42, + 0x4f, 0xd5, 0x6b, 0x43, 0x2f, 0x14, 0x53, 0x0b, 0x19, 0x33, 0x34, 0x52, 0xfd, 0x83, 0x0d, 0xae, + 0x78, 0xb8, 0x4b, 0x75, 0x21, 0x1a, 0xc4, 0x9b, 0xd6, 0x60, 0x19, 0xce, 0x96, 0xc1, 0x9d, 0x84, + 0xb5, 0xa3, 0x2e, 0x65, 0xda, 0x7c, 0x6f, 0xbf, 0x92, 0x2d, 0x59, 0x3d, 0xf4, 0x6b, 0x6f, 0x5c, + 0x95, 0x47, 0x31, 0x3b, 0x58, 0x86, 0x1e, 0x0c, 0x79, 0x68, 0x08, 0x18, 0x54, 0x22, 0x4a, 0xea, + 0xce, 0xb7, 0xe5, 0x38, 0x9c, 0x21, 0x47, 0x54, 0x11, 0xc7, 0x64, 0x6d, 0x0e, 0x73, 0x47, 0xf7, + 0x3b, 0xa9, 0xcd, 0x2f, 0xdf, 0x7f, 0xea, 0xb1, 0x1b, 0x2a, 0x8b, 0xce, 0xaa, 0xec, 0x3c, 0xe4, + 0x33, 0x62, 0xa7, 0x50, 0x56, 0x6a, 0x2a, 0x3a, 0xb8, 0x25, 0x1c, 0x83, 0xfb, 0x9c, 0xc1, 0x4d, + 0x06, 0x0a, 0xe3, 0x60, 0x2a, 0x3e, 0xe2, 0xe4, 0xba, 0xb5, 0x5c, 0x1e, 0xd0, 0xa4, 0xcb, 0xf7, + 0xb8, 0x23, 0xe3, 0xfc, 0xa2, 0xf2, 0x66, 0x46, 0xde, 0xd1, 0x8a, 0x39, 0xf4, 0x86, 0x61, 0xe5, + 0x56, 0x10, 0x62, 0x52, 0x44, 0x60, 0x8a, 0xc4, 0x87, 0x95, 0xb4, 0x50, 0x1f, 0xba, 0xa9, 0x1b, + 0xb8, 0x11, 0xf1, 0x27, 0x00, 0xcc, 0xec, 0x27, 0x71, 0x9c, 0xc8, 0xc7, 0x2d, 0x1c, 0x72, 0x41, + 0x7e, 0x8b, 0x6b, 0xb0, 0x98, 0x7e, 0xf6, 0x2f, 0x10, 0x9c, 0x0c, 0xa9, 0x0b, 0x03, 0xfa, 0xe7, + 0xe8, 0x62, 0xc8, 0x77, 0x5b, 0xf4, 0xb1, 0xbd, 0xa4, 0x33, 0x3b, 0x71, 0x62, 0xc0, 0xf3, 0xad, + 0x91, 0x7a, 0x4f, 0x64, 0xdf, 0xac, 0x95, 0x05, 0xcd, 0xb2, 0xb2, 0xa9, 0x32, 0x2a, 0x49, 0x75, + 0x45, 0xd7, 0xbf, 0xd8, 0xef, 0x0f, 0x4d, 0xf8, 0xca, 0x5a, 0xb0, 0xe6, 0x1b, 0x77, 0x62, 0x5f, + 0x2f, 0xc0, 0xb4, 0xa5, 0x66, 0x49, 0x1f, 0x20, 0x1b, 0x25, 0x87, 0x17, 0x08, 0x36, 0x6d, 0x94, + 0x8d, 0x46, 0xfd, 0xe7, 0xbb, 0x04, 0x59, 0xed, 0xe3, 0xd1, 0xe8, 0x05, 0x97, 0x32, 0xd4, 0xbb, + 0x46, 0xcf, 0xab, 0x1d, 0x84, 0x9d, 0x86, 0xa3, 0x58, 0xe4, 0x87, 0x07, 0x6a, 0xbe, 0xbf, 0xe5, + 0xa8, 0x3d, 0xb9, 0xb8, 0xc1, 0xbe, 0x84, 0xcf, 0x06, 0xb8, 0x38, 0x17, 0x77, 0x0a, 0x2e, 0x2e, + 0x1f, 0x1c, 0x1c, 0x82, 0xab, 0x6f, 0x2e, 0x55, 0xa4, 0x9b, 0xcb, 0xca, 0xc6, 0x7b, 0x60, 0x89, + 0x38, 0xcc, 0xfb, 0x57, 0x32, 0x10, 0x73, 0xa7, 0x48, 0xad, 0x25, 0x47, 0xf8, 0x86, 0xdb, 0xd7, + 0x7f, 0xd2, 0x28, 0xc1, 0x09, 0x31, 0xbc, 0x34, 0xb1, 0xb1, 0xb9, 0xa7, 0xd9, 0x48, 0xd6, 0x85, + 0x0a, 0x58, 0x37, 0x94, 0xad, 0x6d, 0x5f, 0x66, 0x10, 0x8a, 0x31, 0x76, 0x30, 0xb1, 0x20, 0x0f, + 0x52, 0x61, 0x85, 0x2d, 0xb3, 0x0f, 0x96, 0x1f, 0x66, 0xb2, 0x60, 0x50, 0x5e, 0x0b, 0x06, 0x05, + 0xfb, 0xbb, 0xe3, 0xb4, 0xe8, 0x82, 0x01, 0x6a, 0x2a, 0x75, 0xc1, 0x9b, 0x34, 0xbe, 0x5c, 0x4f, + 0x93, 0x58, 0xd1, 0x3a, 0x88, 0x0c, 0x9e, 0x43, 0xa5, 0x1c, 0xd3, 0x19, 0x73, 0xfe, 0xe0, 0x73, + 0x34, 0xb9, 0x18, 0x14, 0xa4, 0x03, 0xa8, 0xfb, 0x6b, 0x80, 0xa3, 0x3b, 0xa7, 0xa5, 0x0f, 0x7c, + 0xc2, 0xda, 0x5f, 0x21, 0xaa, 0xc0, 0x2c, 0x58, 0x88, 0x22, 0xa5, 0x54, 0x82, 0xc5, 0x6b, 0x48, + 0x24, 0x97, 0x0d, 0x37, 0x07, 0x66, 0xdb, 0x55, 0x54, 0x20, 0x19, 0xed, 0x52, 0x72, 0xa6, 0x22, + 0x17, 0x73, 0x90, 0xd7, 0xe3, 0x51, 0x11, 0x7f, 0x1b, 0xa8, 0x22, 0xbe, 0xba, 0x14, 0x06, 0x73, + 0x03, 0x60, 0x5b, 0xec, 0x8b, 0x1b, 0x0e, 0x2e, 0x39, 0x48, 0x54, 0x32, 0xc1, 0x8e, 0xa6, 0xf4, + 0x8f, 0x1d, 0xe7, 0x84, 0x6d, 0x8d, 0xe3, 0xae, 0x7f, 0xe8, 0xa0, 0x67, 0xc9, 0x7f, 0xd3, 0xb0, + 0xbe, 0x9a, 0x7b, 0x9e, 0xad, 0xa5, 0xf4, 0x23, 0x96, 0x1d, 0xa5, 0xde, 0xdc, 0x2c, 0x3d, 0x12, + 0xa5, 0xde, 0x5c, 0x95, 0xca, 0x9c, 0x04, 0x03, 0x36, 0x96, 0x86, 0xb7, 0xe9, 0x74, 0x7f, 0xee, + 0xd8, 0x2b, 0xc1, 0x0c, 0x5f, 0xd6, 0x91, 0xf3, 0xa5, 0x37, 0x0b, 0xaf, 0x5c, 0x9e, 0x34, 0x9e, + 0xa6, 0x6f, 0x94, 0x8f, 0xea, 0x74, 0xff, 0x99, 0x23, 0x4a, 0x9c, 0x4b, 0x3a, 0x06, 0x45, 0x80, + 0x7e, 0x30, 0x3e, 0xeb, 0x82, 0x59, 0xd4, 0x34, 0xb0, 0xf0, 0x40, 0x6c, 0x38, 0x40, 0xf8, 0xa9, + 0xbc, 0x33, 0x34, 0x1a, 0x5c, 0xd7, 0x76, 0xe9, 0xd2, 0x98, 0xde, 0x14, 0x1c, 0x40, 0x09, 0x36, + 0x32, 0x01, 0xae, 0x05, 0x75, 0x03, 0x1d, 0x31, 0xbf, 0x46, 0x00, 0x60, 0xcd, 0x75, 0x86, 0xbd, + 0xf0, 0x55, 0x30, 0xa8, 0x2f, 0xec, 0xb3, 0xcd, 0x93, 0x84, 0xc7, 0x2a, 0x03, 0x44, 0xc1, 0x35, + 0xa2, 0xe1, 0x34, 0x03, 0x89, 0x50, 0x9c, 0x2b, 0x95, 0x20, 0x18, 0xae, 0xf2, 0x4b, 0xa7, 0xe1, + 0x2c, 0x50, 0x7b, 0x2f, 0xc7, 0xe3, 0xe6, 0xed, 0x35, 0xc2, 0xb2, 0x46, 0x53, 0x95, 0xe8, 0x0d, + 0x0a, 0xb8, 0x18, 0xd8, 0xd2, 0x10, 0xda, 0xe1, 0xab, 0xdf, 0x9c, 0xc4, 0xc3, 0xc4, 0x87, 0xc7, + 0x00, 0x09, 0x66, 0xb9, 0x8d, 0x14, 0x30, 0x39, 0x3b, 0xae, 0xda, 0x7d, 0xd6, 0xe8, 0x3a, 0xae, + 0x40, 0x75, 0xbd, 0x93, 0xab, 0x65, 0xa6, 0x00, 0x8d, 0xdb, 0xc1, 0xe0, 0x1a, 0x0a, 0xd4, 0x74, + 0xcd, 0x60, 0xb2, 0x69, 0x59, 0x67, 0x28, 0xe5, 0x0f, 0xda, 0x14, 0xea, 0xde, 0x98, 0x4f, 0x8f, + 0x69, 0x48, 0x7b, 0x2e, 0x3f, 0xa0, 0x0d, 0x90, 0xd2, 0x31, 0xb8, 0x23, 0x3c, 0x6b, 0x03, 0x1c, + 0x90, 0xf1, 0xa8, 0xff, 0xe9, 0x53, 0x3a, 0xf2, 0x1c, 0x61, 0x00, 0x7c, 0x69, 0x75, 0x40, 0x79, + 0xad, 0xdb, 0x68, 0x59, 0xdc, 0x04, 0xb1, 0x23, 0xf9, 0x13, 0xd5, 0x17, 0x0d, 0xdf, 0xb0, 0x99, + 0x4f, 0x56, 0xf5, 0x05, 0x39, 0x7d, 0xd5, 0x09, 0xd9, 0x51, 0xc7, 0x70, 0x61, 0xc2, 0xdd, 0x98, + 0xb3, 0xe9, 0xd4, 0x65, 0x97, 0xa4, 0x35, 0x8e, 0x3c, 0x6a, 0xa7, 0x1c, 0xd2, 0x4c, 0x97, 0x2d, + 0xb2, 0xd9, 0xda, 0x5f, 0xd2, 0x24, 0x2d, 0x9e, 0x11, 0x0b, 0x0b, 0x46, 0x39, 0x95, 0xd3, 0x10, + 0x9c, 0x05, 0x8c, 0xd7, 0xab, 0xf4, 0xd2, 0x19, 0xe6, 0x88, 0x91, 0xa6, 0xee, 0x32, 0x8c, 0xd7, + 0xd2, 0x32, 0xa6, 0x93, 0x37, 0x77, 0x65, 0xd9, 0xeb, 0x73, 0xc7, 0x86, 0xe5, 0x03, 0x55, 0x99, + 0x2e, 0xd3, 0x38, 0xa6, 0x05, 0x4d, 0xff, 0x11, 0x85, 0x77, 0x9d, 0xc7, 0x49, 0xb8, 0x08, 0x6e, + 0x23, 0xe4, 0x74, 0x51, 0x3e, 0x54, 0x1c, 0x54, 0x64, 0x60, 0x4f, 0xd9, 0x8b, 0x16, 0x61, 0xf2, + 0xdd, 0xce, 0x3a, 0xb8, 0xfe, 0x88, 0x27, 0x97, 0x9c, 0x45, 0xf9, 0x89, 0xae, 0x9d, 0xc6, 0x9a, + 0xfd, 0xf6, 0x56, 0xae, 0x99, 0xb0, 0x48, 0x66, 0x71, 0xf9, 0x14, 0x37, 0x60, 0x86, 0x07, 0x0f, + 0x02, 0x9d, 0xf1, 0x6d, 0x18, 0x3c, 0xc5, 0xe0, 0xce, 0xa2, 0xd5, 0x7e, 0x1f, 0x1b, 0x55, 0x93, + 0xf8, 0xd5, 0xba, 0x9a, 0x67, 0x0f, 0xc9, 0xd4, 0xa8, 0xab, 0x62, 0xa2, 0x19, 0x1f, 0xe8, 0x96, + 0x28, 0x02, 0xc6, 0xb3, 0x2a, 0x86, 0x19, 0x58, 0xc5, 0x4e, 0x58, 0x7f, 0xf1, 0xe3, 0x7d, 0x55, + 0x56, 0xa9, 0x86, 0x24, 0x09, 0xf9, 0x7e, 0x19, 0xd9, 0xce, 0xda, 0xb7, 0x67, 0x59, 0x18, 0xce, + 0x36, 0xbc, 0x7f, 0x8b, 0x83, 0x32, 0x8f, 0x8a, 0x87, 0x0d, 0x75, 0x7e, 0xc7, 0x3b, 0x61, 0x9b, + 0xa3, 0xb4, 0x4e, 0x77, 0xad, 0x31, 0x79, 0x64, 0x9c, 0x18, 0xd5, 0x10, 0xf6, 0x8b, 0x7a, 0xe6, + 0x58, 0x2d, 0xf2, 0x99, 0x1a, 0xea, 0x34, 0xa8, 0x5d, 0x63, 0x12, 0xf4, 0x9d, 0x66, 0x88, 0x11, + 0x9c, 0xf9, 0xc5, 0xe4, 0xe0, 0x2f, 0x85, 0x73, 0xa5, 0x60, 0x24, 0x94, 0x24, 0x73, 0x71, 0x5e, + 0x72, 0x19, 0x5a, 0x94, 0xb8, 0x95, 0x7d, 0x21, 0x90, 0x9c, 0x70, 0x49, 0x6a, 0x29, 0xfd, 0xca, + 0x71, 0xb3, 0x68, 0x88, 0x06, 0xea, 0x53, 0x21, 0x1a, 0x24, 0x1a, 0x25, 0x17, 0xe1, 0x37, 0x41, + 0x00, 0x54, 0x0d, 0xb7, 0x01, 0x17, 0x4b, 0x16, 0xe7, 0x1a, 0x37, 0x55, 0x87, 0x04, 0xf9, 0x46, + 0x3f, 0xf7, 0x1b, 0x0d, 0x86, 0x60, 0x36, 0xd3, 0x01, 0x58, 0x37, 0xa9, 0x40, 0xa0, 0xfa, 0x7c, + 0x2a, 0xc9, 0xf8, 0xa9, 0xe9, 0x24, 0x21, 0xbb, 0x65, 0x26, 0x7f, 0xbc, 0xff, 0x9f, 0x9c, 0xc8, + 0xa1, 0x38, 0x37, 0xb6, 0x9f, 0x1a, 0x05, 0x0e, 0x1d, 0x10, 0xf1, 0x36, 0xd3, 0x23, 0x31, 0xf6, + 0x57, 0x38, 0x63, 0x08, 0x86, 0x4d, 0x68, 0x49, 0xf1, 0xbb, 0x44, 0x6b, 0x4e, 0x10, 0x46, 0x54, + 0xf8, 0x1a, 0x96, 0x57, 0x6c, 0xcc, 0xe6, 0xb1, 0x80, 0x96, 0x2e, 0xc7, 0x36, 0xbf, 0x83, 0xea, + 0xe0, 0x5f, 0x1d, 0x2f, 0xbb, 0x87, 0xff, 0x86, 0x56, 0x82, 0x8c, 0x20, 0x8e, 0x2d, 0x45, 0x32, + 0x7c, 0x9b, 0x8d, 0xf9, 0x2f, 0xdc, 0xea, 0x94, 0x0a, 0x71, 0x74, 0x28, 0xcc, 0xe0, 0x2c, 0x04, + 0x35, 0x16, 0x86, 0x70, 0x0c, 0x42, 0x6c, 0x1a, 0x9b, 0x5c, 0x72, 0x74, 0x81, 0x08, 0x2a, 0x68, + 0x3a, 0xe8, 0xd8, 0xb9, 0x04, 0xa0, 0xe0, 0xbe, 0xb9, 0x17, 0x5f, 0xaf, 0x98, 0x51, 0x07, 0xeb, + 0x25, 0x35, 0x64, 0x3c, 0x00, 0xdc, 0x06, 0x36, 0xf6, 0xa6, 0x1a, 0x82, 0x84, 0xdf, 0x88, 0xe8, + 0xa4, 0xf9, 0x1e, 0x5d, 0x67, 0xa7, 0x46, 0x14, 0x79, 0xa4, 0xac, 0xef, 0x25, 0x63, 0xf1, 0x4f, + 0x5d, 0x6f, 0xc1, 0x85, 0xae, 0x4c, 0x35, 0xf6, 0xc8, 0x19, 0x01, 0xa2, 0xa9, 0x4a, 0x6e, 0xe0, + 0x5d, 0x8c, 0x20, 0xbc, 0x56, 0x6d, 0x2b, 0xef, 0xee, 0xc7, 0xbb, 0xfc, 0xd3, 0xa7, 0x4e, 0x07, + 0x3e, 0x9b, 0xe1, 0x9d, 0x55, 0xba, 0x75, 0x12, 0x51, 0xc9, 0x59, 0x55, 0xc7, 0x9a, 0x3b, 0xa1, + 0xaf, 0xab, 0x87, 0x72, 0x58, 0xa4, 0x79, 0xc1, 0xba, 0x92, 0xae, 0x7d, 0x70, 0x97, 0xc3, 0xcd, + 0x08, 0x76, 0x3d, 0x79, 0x1e, 0xe8, 0x29, 0xf8, 0x4a, 0x1b, 0x1c, 0x3d, 0x52, 0x02, 0x2b, 0x01, + 0x1c, 0x21, 0x7d, 0xb3, 0x81, 0x92, 0xf3, 0x68, 0xf8, 0xbf, 0x6a, 0xb6, 0xec, 0x8e, 0xab, 0xfd, + 0xf0, 0x65, 0xb6, 0xae, 0x32, 0x7e, 0x64, 0x19, 0xb6, 0xa4, 0xa9, 0xdc, 0xdb, 0xd2, 0x77, 0xd7, + 0xfb, 0xee, 0xa5, 0x5d, 0x1a, 0x52, 0x42, 0xfd, 0xc7, 0x3c, 0x96, 0x8a, 0x1f, 0x9a, 0x0b, 0xdb, + 0xca, 0xd2, 0xe6, 0x32, 0x77, 0x37, 0x98, 0x59, 0x26, 0x6e, 0xae, 0xcc, 0x2c, 0x13, 0xcd, 0xcc, + 0x32, 0x51, 0x66, 0x96, 0x89, 0x32, 0xb3, 0x4c, 0x2a, 0x33, 0xcb, 0x44, 0x99, 0x59, 0xe6, 0x4d, + 0x33, 0xcb, 0x7c, 0x9d, 0x99, 0x65, 0xae, 0x9b, 0x59, 0xe6, 0x0d, 0x33, 0xcb, 0xbc, 0xcd, 0xcc, + 0x52, 0x84, 0x09, 0xdd, 0xdd, 0x35, 0xac, 0x1e, 0x95, 0xed, 0x6c, 0xee, 0xab, 0x11, 0x96, 0x7b, + 0x9d, 0x1d, 0x9b, 0xc6, 0xf2, 0xdf, 0x41, 0x31, 0x34, 0xf6, 0x68, 0xee, 0xc6, 0xd0, 0x91, 0x06, + 0x33, 0x91, 0x53, 0x91, 0xa3, 0x28, 0xdf, 0x21, 0x6f, 0x32, 0xbb, 0x00, 0x1b, 0x8b, 0xff, 0x19, + 0x2e, 0xd4, 0xca, 0x71, 0x58, 0xb6, 0x05, 0xc7, 0x70, 0xa3, 0xa9, 0x3b, 0xa4, 0x71, 0x84, 0x0b, + 0xdd, 0xe3, 0xde, 0xed, 0xde, 0x00, 0x01, 0x01, 0x56, 0x76, 0xcd, 0x42, 0xb4, 0x81, 0x06, 0x7a, + 0x24, 0x16, 0x43, 0xa9, 0xfb, 0xb8, 0x03, 0xb7, 0x66, 0x35, 0xec, 0xde, 0x5d, 0x3e, 0xda, 0xef, + 0x1b, 0xce, 0x38, 0x9a, 0xcb, 0xb2, 0xde, 0x84, 0x1a, 0xb3, 0x72, 0x13, 0x07, 0x0e, 0x87, 0x52, + 0x83, 0x04, 0xbd, 0x0d, 0x82, 0xb4, 0x22, 0x1f, 0xa5, 0x5b, 0x67, 0x0a, 0xa4, 0xeb, 0x55, 0x08, + 0x93, 0x17, 0x8e, 0xe1, 0x1a, 0xf6, 0x92, 0x18, 0x15, 0x45, 0x70, 0x55, 0xfe, 0x35, 0xbb, 0x59, + 0xca, 0x10, 0xab, 0xfc, 0xb3, 0x10, 0x55, 0x7f, 0x0c, 0xe0, 0x02, 0x8f, 0x82, 0x39, 0x3d, 0x55, + 0xb1, 0x5d, 0xc3, 0xde, 0xcd, 0x2c, 0x4b, 0x78, 0x4e, 0x6a, 0x41, 0x56, 0x49, 0x1e, 0x8a, 0x4f, + 0xbc, 0x31, 0x8c, 0x0b, 0x07, 0x78, 0x16, 0xc0, 0x14, 0x85, 0x06, 0x05, 0x13, 0x48, 0x36, 0x0e, + 0x3b, 0xe8, 0x7b, 0x72, 0x03, 0x78, 0x2e, 0x52, 0xc0, 0xb4, 0x98, 0xd1, 0xd5, 0x74, 0x7b, 0x2d, + 0xc6, 0x71, 0xac, 0xe5, 0x63, 0xc3, 0x54, 0x98, 0xc3, 0x15, 0x17, 0x38, 0x60, 0x9c, 0x47, 0x5a, + 0x4f, 0x21, 0xc5, 0xae, 0x92, 0x6e, 0x77, 0x25, 0x50, 0xab, 0x34, 0x98, 0xc3, 0xcc, 0xc5, 0xca, + 0xa5, 0x4c, 0x53, 0xed, 0xbf, 0x4f, 0x2d, 0xd5, 0xb5, 0xd4, 0xe6, 0x33, 0x4d, 0x2b, 0x39, 0x48, + 0x67, 0x58, 0x6a, 0x7c, 0xfc, 0x18, 0x21, 0xe5, 0xa4, 0x65, 0x6c, 0x4b, 0x34, 0x0f, 0x8d, 0x6b, + 0x4f, 0xab, 0xe4, 0xaf, 0xe1, 0x08, 0x3c, 0xfc, 0xfe, 0xbe, 0xbc, 0x33, 0x72, 0x23, 0x77, 0xe9, + 0x4e, 0x6b, 0xea, 0x2c, 0x6e, 0x58, 0xa8, 0xb2, 0x02, 0x5f, 0xfd, 0x80, 0x1a, 0x2b, 0xaa, 0x7e, + 0xf5, 0x91, 0x5c, 0xb6, 0xfc, 0x75, 0x78, 0x51, 0x71, 0x65, 0xd3, 0xaa, 0xf8, 0xe8, 0xc2, 0x71, + 0x06, 0x5a, 0x1b, 0xa5, 0x4a, 0x2b, 0xd2, 0x8a, 0x84, 0x3a, 0x6b, 0xc9, 0xea, 0x2c, 0x55, 0xda, + 0xd6, 0xda, 0x68, 0x74, 0xf8, 0x6c, 0x97, 0x35, 0x8c, 0x6e, 0xba, 0x41, 0xe8, 0x80, 0x82, 0xcb, + 0xee, 0x06, 0x5d, 0xdb, 0xb5, 0xbb, 0x11, 0xff, 0x5d, 0xc2, 0x98, 0xb2, 0x6a, 0x51, 0x44, 0xfe, + 0xa5, 0x16, 0x2a, 0x41, 0x6f, 0xca, 0xf7, 0x99, 0x65, 0xf8, 0x12, 0xc4, 0xee, 0x75, 0x4a, 0xb7, + 0x82, 0x92, 0xf3, 0x94, 0xe8, 0x23, 0xbf, 0x47, 0xa5, 0x0b, 0xb7, 0xc9, 0xdf, 0xca, 0x5a, 0x71, + 0x2f, 0xbf, 0x77, 0xdb, 0xb9, 0xdb, 0xb2, 0x46, 0x74, 0xef, 0x86, 0x3d, 0x76, 0xc9, 0x67, 0xa7, + 0x04, 0xf9, 0x2c, 0x56, 0x66, 0xc6, 0x76, 0x9b, 0xf2, 0x9e, 0x53, 0xbd, 0x10, 0x0a, 0x15, 0x6f, + 0x40, 0x2f, 0xab, 0x3b, 0x20, 0x4e, 0x0c, 0x6b, 0xcd, 0x4b, 0x8b, 0xd5, 0x1d, 0x43, 0xa5, 0xd2, + 0xef, 0xa3, 0x36, 0x2c, 0xb4, 0xc3, 0x24, 0xbd, 0xb9, 0x5a, 0x58, 0x79, 0x16, 0x4c, 0x43, 0xb8, + 0x55, 0xe6, 0x70, 0x6a, 0x15, 0x8e, 0x03, 0xb5, 0x4f, 0x0e, 0xf1, 0x89, 0x74, 0xb6, 0x46, 0x0f, + 0xf2, 0x42, 0xcd, 0xa8, 0x73, 0x84, 0x3a, 0x3f, 0x47, 0x79, 0x0e, 0x3e, 0xe0, 0xed, 0xaf, 0x7c, + 0xe5, 0x54, 0xab, 0xf2, 0x12, 0x55, 0x5e, 0x69, 0x90, 0x59, 0x3c, 0x0c, 0x6b, 0x11, 0xe4, 0x56, + 0x3a, 0xa5, 0x4d, 0x8b, 0xbb, 0xbc, 0x95, 0x86, 0xfc, 0x4c, 0xbb, 0xd8, 0x1c, 0x96, 0x2b, 0x76, + 0xed, 0x01, 0xfd, 0x98, 0xb1, 0xcb, 0x83, 0x1e, 0x5c, 0x39, 0xa6, 0x93, 0x34, 0xd6, 0x63, 0x2f, + 0x13, 0x6d, 0xb8, 0x37, 0x62, 0xb2, 0xf0, 0x6e, 0xd3, 0x68, 0x63, 0x7f, 0xa8, 0x11, 0xb1, 0x2a, + 0x58, 0x48, 0xa5, 0xd2, 0xd8, 0x82, 0x48, 0x07, 0x2f, 0x3d, 0xda, 0x90, 0xe1, 0xa7, 0x4f, 0x65, + 0xbb, 0xce, 0xa3, 0x76, 0x3a, 0x13, 0x1f, 0xa1, 0x9f, 0xd5, 0x1a, 0x2d, 0x35, 0xdd, 0xe8, 0xdc, + 0xa3, 0xf0, 0x08, 0xf7, 0x2b, 0x54, 0x3f, 0xf4, 0x65, 0xb4, 0x12, 0x71, 0x99, 0x42, 0xdc, 0xef, + 0x53, 0x37, 0x85, 0x7c, 0x1e, 0xe1, 0x5a, 0xf9, 0xe9, 0xa8, 0x14, 0x6e, 0x0c, 0xc7, 0xe2, 0x8c, + 0xb8, 0x14, 0x5b, 0xdc, 0x28, 0xc2, 0xa0, 0x9d, 0xfd, 0x08, 0x7a, 0x30, 0xe0, 0xd6, 0x63, 0x33, + 0x80, 0x87, 0xe8, 0x25, 0xe9, 0x5d, 0xc7, 0x81, 0xc1, 0xbf, 0xb2, 0xb5, 0x6f, 0x44, 0x85, 0x65, + 0x12, 0x0a, 0xc2, 0x95, 0x02, 0x81, 0xa3, 0x19, 0xe1, 0xb2, 0x78, 0x50, 0xd7, 0xcf, 0xe5, 0x76, + 0xea, 0x7b, 0xdf, 0xa6, 0x4a, 0x55, 0x12, 0xec, 0xf8, 0xc5, 0x92, 0xe3, 0x9a, 0x57, 0x44, 0xd7, + 0x0f, 0x90, 0xa6, 0xcb, 0xaf, 0x79, 0xcc, 0x84, 0x9a, 0xab, 0x36, 0x02, 0xe0, 0x76, 0x10, 0xf0, + 0xdb, 0x71, 0x93, 0xb1, 0x3a, 0xfa, 0x68, 0x8e, 0xf7, 0x1e, 0xed, 0x5b, 0x5b, 0x9c, 0x7e, 0x7b, + 0xce, 0x40, 0x5c, 0xaf, 0xe6, 0xe5, 0xcd, 0x69, 0xec, 0x22, 0x5e, 0x58, 0x88, 0xe0, 0xcf, 0x08, + 0xae, 0x01, 0xbd, 0xeb, 0x3e, 0x74, 0xbd, 0x34, 0x03, 0x88, 0x46, 0x15, 0x09, 0xd6, 0x8d, 0xa7, + 0x72, 0x68, 0x4d, 0x17, 0x00, 0xb7, 0xf0, 0x7f, 0xfb, 0xf0, 0xe3, 0xfe, 0x0b, 0x7b, 0xe5, 0x22, + 0xed, 0x06, 0xb2, 0x43, 0x7f, 0x91, 0x63, 0x6d, 0xe7, 0xff, 0x1d, 0x07, 0xe7, 0x21, 0x32, 0x2e, + 0x9d, 0x76, 0xf9, 0xcd, 0x74, 0x4a, 0xfc, 0x27, 0x32, 0xc3, 0x57, 0xe7, 0xb4, 0xe4, 0x64, 0xe4, + 0xbf, 0x83, 0xb0, 0xc6, 0x31, 0x18, 0x4c, 0x81, 0x33, 0xd0, 0xb7, 0xe2, 0x75, 0x56, 0x3c, 0xd0, + 0x66, 0xc9, 0xb3, 0x34, 0x41, 0xde, 0x59, 0x6c, 0xaa, 0x2f, 0xbc, 0x09, 0xae, 0xeb, 0x32, 0x59, + 0xe7, 0x51, 0x0f, 0xdb, 0x93, 0x26, 0x03, 0x11, 0xe2, 0x1d, 0x7f, 0x75, 0xbe, 0x45, 0x7c, 0xf3, + 0x3e, 0xee, 0xe8, 0x5d, 0x75, 0x38, 0x0c, 0x3c, 0xfd, 0x71, 0xc6, 0x97, 0x98, 0xdb, 0xa5, 0x0c, + 0xad, 0xd3, 0xb3, 0xfe, 0x05, 0x87, 0x7b, 0x11, 0x4a, 0x85, 0x1d, 0xde, 0xf9, 0x7c, 0xfd, 0xfa, + 0x91, 0xf9, 0x8a, 0x91, 0x37, 0xb6, 0xd3, 0x84, 0x90, 0x01, 0xe6, 0xaa, 0x2b, 0x2e, 0x45, 0xb4, + 0x1d, 0x2a, 0xbc, 0xe5, 0x24, 0x16, 0xc1, 0x9c, 0xb5, 0x3f, 0xfc, 0x82, 0xb8, 0x92, 0x15, 0xcc, + 0xdb, 0x58, 0x15, 0x7e, 0x39, 0xb0, 0x45, 0x2f, 0xb3, 0x90, 0xfb, 0x81, 0x0b, 0x42, 0x4f, 0x70, + 0x5f, 0xd5, 0x08, 0x92, 0x78, 0x80, 0x51, 0x10, 0x50, 0xab, 0x26, 0xfc, 0xd0, 0xc7, 0x98, 0x23, + 0xa8, 0x82, 0xd4, 0xab, 0x27, 0x67, 0x6c, 0xff, 0xc2, 0x96, 0x0c, 0x0c, 0x3e, 0x3c, 0xfc, 0xd9, + 0xe9, 0x3e, 0x09, 0x8b, 0xbb, 0x74, 0xf9, 0x51, 0x0c, 0x87, 0x76, 0xa9, 0x85, 0xfa, 0xa0, 0xdf, + 0xec, 0xc6, 0x4f, 0x32, 0x53, 0x8f, 0x40, 0xff, 0x80, 0x67, 0x31, 0x6c, 0x76, 0xec, 0x7f, 0xba, + 0x1d, 0x2b, 0x4e, 0x93, 0x2b, 0xaa, 0x84, 0xd6, 0x7a, 0xb6, 0x8a, 0x04, 0xf7, 0x08, 0xa6, 0x6a, + 0xf0, 0x88, 0xed, 0x36, 0x50, 0x70, 0xad, 0x56, 0x43, 0x8d, 0xff, 0xe6, 0xad, 0xcc, 0xac, 0xd7, + 0x92, 0xb9, 0x71, 0x05, 0xbc, 0x6b, 0x12, 0xd6, 0xfa, 0x04, 0x40, 0x1e, 0xb8, 0x85, 0xf6, 0x8d, + 0x48, 0x2e, 0xc7, 0xee, 0xc7, 0x5f, 0x29, 0x66, 0xca, 0x57, 0x0d, 0x39, 0x11, 0x55, 0xea, 0x01, + 0x8b, 0x05, 0x98, 0x1b, 0xe8, 0x64, 0xd9, 0xda, 0xb0, 0xd1, 0xf8, 0x72, 0x2a, 0x9a, 0x44, 0xe6, + 0xec, 0x09, 0xc2, 0x8c, 0x4f, 0xe2, 0x20, 0xf9, 0x68, 0xea, 0xcd, 0xea, 0xca, 0x38, 0x40, 0xa0, + 0x69, 0xcc, 0x18, 0x6c, 0x90, 0xde, 0xa7, 0x83, 0x02, 0x29, 0xaa, 0x45, 0x24, 0x8b, 0x04, 0xe9, + 0xc1, 0x3c, 0x20, 0x59, 0x83, 0x88, 0x96, 0x8c, 0xf6, 0x55, 0x9f, 0x1f, 0x96, 0x48, 0x30, 0x37, + 0x2c, 0xb2, 0xa8, 0x68, 0x5e, 0x4a, 0x7e, 0xe9, 0xa8, 0x3c, 0x07, 0xe2, 0x5f, 0x87, 0x78, 0x77, + 0xe5, 0xaf, 0xa7, 0x02, 0x6f, 0xc2, 0x11, 0xaf, 0xa9, 0x2d, 0x10, 0xf5, 0xb7, 0xd2, 0x11, 0xe8, + 0xd3, 0xf0, 0xb6, 0x36, 0x0b, 0xa2, 0x91, 0x6a, 0x1e, 0x1a, 0xdb, 0x53, 0xda, 0xbb, 0x28, 0x39, + 0x4b, 0x1f, 0x13, 0x80, 0x97, 0xa9, 0x19, 0xe4, 0x83, 0x04, 0x5f, 0x0d, 0x4e, 0x08, 0x95, 0x6c, + 0x03, 0xd3, 0x36, 0x00, 0xae, 0xf6, 0xd9, 0x23, 0x78, 0x2f, 0xdb, 0xd3, 0x47, 0x21, 0x5b, 0x6a, + 0x1b, 0x06, 0xe4, 0x1d, 0x58, 0x69, 0x2a, 0xa3, 0x0b, 0xb6, 0xd8, 0x32, 0xac, 0xf8, 0xbc, 0x0d, + 0x57, 0x1d, 0x7a, 0xc5, 0xfd, 0x7e, 0x75, 0xab, 0xe1, 0xf6, 0x3d, 0xa7, 0xdb, 0xb8, 0xd8, 0x78, + 0xba, 0x81, 0x5c, 0x6f, 0x60, 0xe0, 0x39, 0x24, 0x75, 0x28, 0xb9, 0x98, 0x43, 0xf9, 0xc8, 0xec, + 0x77, 0xf9, 0x1a, 0xcf, 0x98, 0x86, 0x47, 0x40, 0xe9, 0x02, 0xf0, 0x85, 0x06, 0xff, 0x1a, 0x74, + 0x9f, 0x61, 0xfb, 0x5f, 0x33, 0xf7, 0x7f, 0x4f, 0x67, 0x9d, 0xb4, 0x62, 0xb4, 0x6a, 0x6d, 0xae, + 0x35, 0xfe, 0xaf, 0x8c, 0xb0, 0x2b, 0xb3, 0x69, 0x58, 0x0b, 0x5b, 0x9c, 0x51, 0xc0, 0xb7, 0x8f, + 0x5e, 0x7c, 0x63, 0xb7, 0x39, 0x01, 0x34, 0xea, 0x7c, 0x89, 0x47, 0xc0, 0x41, 0x65, 0xa8, 0xad, + 0x75, 0xbd, 0xa5, 0xb5, 0xb4, 0x3e, 0xbc, 0x2f, 0xf3, 0x05, 0x08, 0xd7, 0x1a, 0x4f, 0xeb, 0x6d, + 0x1b, 0x76, 0xd4, 0x5f, 0x08, 0xdf, 0x97, 0x3b, 0x07, 0x84, 0x35, 0xb7, 0x80, 0x27, 0x6b, 0x7e, + 0xd9, 0x80, 0x3e, 0xc3, 0x32, 0xdc, 0x40, 0xab, 0x36, 0x23, 0x71, 0xa3, 0xaf, 0xa1, 0x66, 0x22, + 0x3b, 0x5c, 0x63, 0x3c, 0xbe, 0x85, 0xf5, 0xf8, 0xba, 0x89, 0x65, 0x2b, 0x72, 0x6d, 0x56, 0xc2, + 0x15, 0x5f, 0x5b, 0x6a, 0x76, 0xe5, 0x5a, 0x2b, 0x53, 0x1a, 0xf8, 0xd3, 0xc1, 0x71, 0x34, 0x80, + 0xed, 0xd1, 0x6b, 0x98, 0x29, 0xc6, 0xa5, 0xe9, 0x65, 0xc3, 0x39, 0x48, 0xda, 0x06, 0x0c, 0xd7, + 0x1a, 0x1e, 0xe7, 0xba, 0x72, 0xa7, 0x6c, 0xf8, 0x71, 0x83, 0xa1, 0x72, 0x3b, 0x84, 0xd2, 0x8e, + 0x5d, 0x83, 0xb3, 0x24, 0xa8, 0x4f, 0x99, 0xbc, 0xf7, 0x5f, 0x04, 0x3c, 0xdf, 0xaf, 0x66, 0x33, + 0x45, 0x1e, 0xaa, 0x01, 0x11, 0x51, 0xd8, 0x2b, 0xad, 0x5f, 0xc5, 0xe5, 0xa3, 0xa2, 0x65, 0xfa, + 0x1d, 0x64, 0xe5, 0x31, 0xaf, 0x79, 0xcb, 0x0b, 0x1a, 0x99, 0xc9, 0xd4, 0x34, 0xde, 0xe0, 0x31, + 0xcb, 0x07, 0xd0, 0x61, 0xcc, 0x6e, 0x96, 0x83, 0x73, 0x5c, 0x1f, 0xba, 0x95, 0x40, 0x32, 0x38, + 0xdf, 0x87, 0x3e, 0x23, 0xcc, 0xc2, 0xa0, 0x18, 0x10, 0x5b, 0x8c, 0xc4, 0x24, 0x60, 0x81, 0xbc, + 0xd5, 0xca, 0xcd, 0xe0, 0x68, 0x2f, 0xa5, 0x09, 0xb6, 0x77, 0xd3, 0xcf, 0x0c, 0xe1, 0x85, 0x4f, + 0x6c, 0x70, 0xa3, 0x56, 0x19, 0x67, 0xb5, 0x69, 0x0f, 0x26, 0x95, 0xf1, 0xc2, 0x2c, 0x8f, 0x35, + 0xda, 0xf2, 0x69, 0xa0, 0x45, 0x38, 0x13, 0x16, 0x7c, 0x43, 0xf5, 0xae, 0x8a, 0x49, 0x56, 0x2f, + 0xe9, 0x65, 0xe0, 0xf9, 0xf5, 0xfe, 0x61, 0xf5, 0x2a, 0x92, 0x99, 0xc8, 0x9d, 0x49, 0xc4, 0x44, + 0x34, 0xb7, 0x1a, 0x89, 0x38, 0x73, 0xe2, 0x2d, 0xcc, 0xe2, 0x74, 0x04, 0x98, 0x53, 0xe7, 0x8b, + 0xd3, 0xf8, 0x8d, 0x19, 0x10, 0xce, 0x26, 0x3a, 0x8f, 0xb4, 0xdb, 0x6c, 0xc3, 0x5c, 0x65, 0xcd, + 0xcd, 0xcd, 0xa0, 0x59, 0xf3, 0x68, 0x99, 0x17, 0x08, 0x9b, 0xa5, 0x22, 0x52, 0x58, 0xd2, 0x13, + 0x5b, 0xe0, 0xe0, 0x9e, 0x2b, 0xf2, 0x2b, 0x8b, 0xe5, 0xe0, 0x88, 0x6a, 0xb9, 0x9e, 0x6a, 0x39, + 0xef, 0xfa, 0x62, 0x3a, 0xdf, 0xd0, 0x57, 0x0f, 0x9c, 0xc2, 0x70, 0x98, 0x77, 0xcd, 0x2e, 0x16, + 0xcb, 0xff, 0x56, 0xf6, 0x7c, 0x7b, 0x6e, 0xa1, 0x63, 0x71, 0xa9, 0xb7, 0x5d, 0x67, 0xcd, 0xc1, + 0xbb, 0x28, 0xde, 0x87, 0x9b, 0x86, 0x33, 0x54, 0xc1, 0xbd, 0x61, 0xb8, 0x1e, 0x0a, 0xef, 0xf3, + 0xca, 0xbc, 0xa3, 0x6e, 0xb1, 0xae, 0x69, 0xd7, 0x70, 0xbe, 0x76, 0x45, 0x14, 0x06, 0x12, 0xfd, + 0xd6, 0x1a, 0x8e, 0x70, 0x1f, 0x65, 0x6c, 0x71, 0xd8, 0xee, 0xa7, 0x4e, 0x52, 0x1a, 0xfe, 0xd1, + 0x82, 0x20, 0xc6, 0x4a, 0xe5, 0x28, 0xab, 0xbd, 0x70, 0x48, 0x40, 0x49, 0xa4, 0x72, 0xc8, 0x78, + 0x31, 0xd0, 0xa7, 0xed, 0xbc, 0x7a, 0x25, 0x52, 0x78, 0xeb, 0x6e, 0xb7, 0x42, 0xe8, 0xd6, 0x97, + 0x35, 0x98, 0xcd, 0x4e, 0xa5, 0x21, 0x90, 0x31, 0xf9, 0x39, 0xe4, 0xe1, 0xb0, 0x53, 0x74, 0xfb, + 0x48, 0x80, 0xe5, 0xb8, 0xd5, 0x4b, 0xda, 0x20, 0xe6, 0x5b, 0xe3, 0x15, 0x21, 0x92, 0x5e, 0xb9, + 0xda, 0x43, 0xeb, 0xbe, 0xa9, 0x6a, 0xf0, 0xa7, 0x06, 0x9a, 0x69, 0xb7, 0x60, 0x61, 0xdc, 0x0a, + 0xa6, 0x5a, 0xaa, 0xb1, 0xc7, 0x91, 0x0d, 0xf5, 0x08, 0xd3, 0x83, 0x4e, 0xeb, 0x80, 0xdc, 0xfe, + 0xba, 0xc1, 0x98, 0x6f, 0x5a, 0x20, 0x47, 0x05, 0x03, 0x3e, 0xdd, 0x8c, 0x99, 0x04, 0xd7, 0x5c, + 0xd8, 0xb1, 0x99, 0x20, 0xc2, 0xe6, 0xb6, 0x5c, 0x81, 0x5c, 0x19, 0xf0, 0xe8, 0xdf, 0x91, 0x2c, + 0xa9, 0x3e, 0xcc, 0x6b, 0xaa, 0x13, 0xe0, 0x42, 0x6d, 0x76, 0x75, 0xcd, 0x4c, 0xdf, 0xfb, 0x36, + 0x2f, 0xd7, 0x54, 0x6f, 0xf2, 0xc3, 0x76, 0x2d, 0x1a, 0x73, 0xbf, 0x4d, 0xc3, 0xbf, 0x6a, 0xf1, + 0x3f, 0x55, 0x2b, 0xc3, 0xa2, 0xb7, 0x94, 0xc6, 0x10, 0x31, 0xd8, 0x92, 0x65, 0x71, 0x15, 0xe3, + 0xe6, 0x57, 0x5c, 0xb4, 0xba, 0xfa, 0x9b, 0xcc, 0x78, 0x35, 0xee, 0xe0, 0x42, 0x15, 0x34, 0xd5, + 0xf7, 0xaa, 0xc0, 0x85, 0x50, 0xd8, 0x6b, 0xdf, 0xa4, 0xfd, 0xcb, 0x35, 0xde, 0x22, 0x83, 0xea, + 0x73, 0x93, 0x65, 0x56, 0x9d, 0x55, 0x36, 0x3b, 0xdc, 0x6a, 0x6b, 0x2d, 0xda, 0x8e, 0x6f, 0x92, + 0x59, 0x55, 0xf3, 0x89, 0x9e, 0xa5, 0xd5, 0x80, 0x29, 0x18, 0x9c, 0x9a, 0x5e, 0x1d, 0x92, 0x10, + 0xca, 0xe0, 0xfa, 0xe5, 0x5c, 0x0b, 0x50, 0xc7, 0xf5, 0x82, 0x81, 0x37, 0x54, 0x7c, 0x3a, 0x07, + 0x08, 0x8a, 0x43, 0xc1, 0xda, 0x49, 0x2b, 0xe5, 0xeb, 0x60, 0x49, 0x1c, 0xfa, 0x3e, 0xf1, 0x9f, + 0x03, 0x24, 0xbe, 0x19, 0x2a, 0x0a, 0xb7, 0xd1, 0x5d, 0xea, 0x6c, 0x71, 0x33, 0x9f, 0xc7, 0x21, + 0xbb, 0x78, 0xaf, 0xf5, 0x90, 0xaa, 0x16, 0x4b, 0x77, 0x91, 0xc2, 0x12, 0x8b, 0xf8, 0x41, 0xf0, + 0xbf, 0xae, 0x60, 0xfd, 0xf4, 0x29, 0x39, 0xf1, 0x9a, 0xce, 0x52, 0xdb, 0xb9, 0x4a, 0x55, 0xe6, + 0x8f, 0x1b, 0xc1, 0xfe, 0x95, 0x27, 0xc4, 0x02, 0xd5, 0x9a, 0x23, 0x7f, 0x6c, 0x18, 0x3f, 0x6c, + 0x35, 0x84, 0x6c, 0xd3, 0x18, 0x12, 0x68, 0x75, 0x08, 0x5e, 0x05, 0xf9, 0x97, 0x81, 0x5d, 0x2d, + 0x8f, 0xc0, 0x8c, 0x72, 0x7d, 0x94, 0x59, 0xb4, 0xec, 0xc8, 0xbc, 0xab, 0xb6, 0xd5, 0xa7, 0x15, + 0x0b, 0x27, 0xc7, 0xd8, 0xca, 0x84, 0xd7, 0xd9, 0x6c, 0x7d, 0x88, 0x1a, 0x6b, 0xac, 0x0d, 0x0f, + 0x0c, 0x78, 0xff, 0xf0, 0x3b, 0x66, 0xc8, 0xbd, 0xf2, 0x30, 0x07, 0x24, 0xc9, 0xa0, 0xbf, 0x1a, + 0x59, 0xd0, 0xe4, 0x96, 0xec, 0xa4, 0x29, 0xf7, 0xd1, 0x7c, 0x13, 0xe2, 0x4b, 0xfd, 0xfe, 0x40, + 0x88, 0x57, 0x27, 0x42, 0x67, 0xae, 0x55, 0x22, 0x96, 0x2b, 0xde, 0xc7, 0x01, 0xaf, 0x01, 0x23, + 0xb6, 0xcc, 0x9a, 0x09, 0x67, 0x83, 0x07, 0x02, 0xc4, 0xd7, 0xb1, 0x07, 0x76, 0x45, 0xc6, 0x2f, + 0x62, 0x9c, 0x78, 0x19, 0x0c, 0x2e, 0xc4, 0x1b, 0xbd, 0xa7, 0x59, 0x2b, 0x99, 0x0f, 0x04, 0xc6, + 0xd0, 0xb9, 0x16, 0x0e, 0x76, 0x21, 0x00, 0x1c, 0x99, 0x0c, 0x6c, 0x63, 0x92, 0xd7, 0xb9, 0x63, + 0x6a, 0xfc, 0x67, 0x41, 0x5c, 0xf8, 0x69, 0xcc, 0x50, 0xbb, 0x96, 0x70, 0xcc, 0x1f, 0x6d, 0x17, + 0x1f, 0xeb, 0x03, 0x7d, 0x59, 0x63, 0xa9, 0x2f, 0xd5, 0x45, 0xf1, 0xe5, 0x53, 0x5e, 0x8c, 0x6f, + 0x45, 0x20, 0x18, 0x6b, 0xb2, 0x54, 0x39, 0xee, 0x9e, 0xc0, 0x70, 0x0e, 0xb6, 0x3b, 0x61, 0x04, + 0x97, 0x18, 0xfc, 0x97, 0x6f, 0x3b, 0x6a, 0xef, 0x0c, 0x57, 0x3d, 0x4a, 0xf8, 0x9e, 0x40, 0x7f, + 0xbc, 0x0d, 0x5c, 0xf9, 0x9f, 0x84, 0xeb, 0x72, 0xa8, 0x0c, 0xbd, 0x3f, 0x43, 0xe3, 0xc0, 0x3d, + 0x17, 0xf7, 0x9f, 0x13, 0x62, 0x80, 0x98, 0xb8, 0xb1, 0x0a, 0x67, 0xb6, 0x75, 0x9c, 0x81, 0x1a, + 0x4a, 0x55, 0x71, 0xfe, 0x2c, 0x06, 0x7e, 0xb0, 0x41, 0x4d, 0x92, 0x1b, 0x40, 0x57, 0x30, 0x69, + 0x20, 0x95, 0xe1, 0x77, 0x57, 0xda, 0xa8, 0xfe, 0x88, 0xdb, 0x06, 0x75, 0x30, 0x6a, 0xc3, 0xf2, + 0x85, 0x3d, 0xea, 0xc4, 0x21, 0x96, 0x2d, 0x64, 0x4d, 0x3c, 0x31, 0x94, 0x50, 0xda, 0x6a, 0x60, + 0x0a, 0x0c, 0x75, 0x8c, 0x8f, 0xbf, 0x46, 0xe0, 0x76, 0x70, 0x4a, 0x63, 0x91, 0x00, 0xc5, 0xdf, + 0x53, 0xf4, 0x0b, 0x04, 0x6b, 0x4f, 0x91, 0xf5, 0xa7, 0x7d, 0x71, 0xd1, 0xd2, 0xd8, 0x3e, 0x5b, + 0xa4, 0x77, 0x56, 0x56, 0x32, 0xf4, 0xc4, 0x64, 0x20, 0x66, 0x3b, 0xa6, 0xdb, 0xfe, 0xa5, 0x0c, + 0x1d, 0x7b, 0x17, 0x15, 0x0b, 0x11, 0x09, 0x96, 0x9a, 0xff, 0x8d, 0xb6, 0x89, 0xbc, 0x8d, 0x97, + 0x65, 0x2b, 0x29, 0xc8, 0x3f, 0x81, 0x6b, 0xd3, 0xbc, 0x46, 0xe4, 0xe9, 0xe7, 0xeb, 0xbc, 0x22, + 0xf3, 0x1e, 0x27, 0xf6, 0x29, 0xda, 0xdc, 0x79, 0x3f, 0xdb, 0x9f, 0x57, 0x22, 0x40, 0xcb, 0xac, + 0x67, 0xe9, 0xa1, 0x1e, 0xc7, 0xef, 0x50, 0xcd, 0xc6, 0xab, 0xd3, 0xb7, 0xd6, 0x54, 0xc4, 0x30, + 0x2e, 0x23, 0xd9, 0x5a, 0x55, 0xc4, 0xdb, 0x3a, 0x99, 0x2f, 0x5b, 0x08, 0xb2, 0xc8, 0x08, 0x83, + 0xbb, 0xae, 0xd7, 0xbe, 0xde, 0x6b, 0x5f, 0xfa, 0x27, 0xe6, 0xab, 0xb5, 0x04, 0x90, 0xf7, 0x73, + 0x91, 0x5a, 0x6f, 0x7f, 0x58, 0x77, 0xd2, 0x54, 0xc4, 0x65, 0x56, 0x3f, 0x76, 0xca, 0x83, 0xa6, + 0x8a, 0x00, 0xae, 0x1d, 0x37, 0x87, 0xc7, 0x1e, 0x1f, 0x37, 0xfd, 0x4a, 0x76, 0xa4, 0xf5, 0x0e, + 0x07, 0xcd, 0x38, 0xe4, 0xab, 0xd1, 0x1a, 0xe8, 0x40, 0x28, 0x36, 0x39, 0xcc, 0xeb, 0xfa, 0x0c, + 0x5c, 0x42, 0x9f, 0x0a, 0x32, 0x2d, 0x5d, 0x22, 0x36, 0xab, 0x0b, 0x94, 0x7a, 0x06, 0x33, 0xa0, + 0x7b, 0xc9, 0x0b, 0x30, 0xf7, 0x36, 0xf7, 0x2b, 0x24, 0x40, 0x31, 0x37, 0x7b, 0xdd, 0xb0, 0xbb, + 0x37, 0x93, 0xf1, 0x7d, 0x4a, 0x4f, 0xfd, 0xd3, 0x0e, 0x97, 0x6f, 0xed, 0xa8, 0xff, 0x03, 0x73, + 0xb5, 0x7b, 0x83, 0xbd, 0x6d, 0x55, 0x37, 0xa7, 0xa6, 0xee, 0x66, 0x6f, 0xa5, 0x0d, 0xa2, 0x15, + 0x37, 0x10, 0x40, 0x5d, 0x8e, 0xce, 0x9e, 0x88, 0x28, 0x3d, 0x24, 0x66, 0x57, 0xeb, 0x8b, 0xf7, + 0x55, 0xa8, 0x02, 0x35, 0x0d, 0x26, 0x25, 0x21, 0x34, 0xc1, 0xb0, 0x54, 0xbc, 0x64, 0xb4, 0x71, + 0x59, 0x63, 0x71, 0x75, 0xcd, 0x4f, 0xd6, 0xd0, 0xfb, 0xb4, 0x47, 0xbc, 0x1c, 0x6d, 0xd2, 0x34, + 0x7f, 0xfd, 0x28, 0x58, 0x67, 0x4f, 0x45, 0x98, 0x54, 0xca, 0xa8, 0x2f, 0x56, 0xe7, 0xd4, 0x14, + 0x2f, 0x4a, 0x53, 0x50, 0xb4, 0xfa, 0x13, 0x11, 0x81, 0xc5, 0x7b, 0xbb, 0x19, 0x5b, 0x47, 0x53, + 0x23, 0x00, 0x51, 0xdb, 0xf5, 0xcd, 0x27, 0x65, 0xb0, 0x8e, 0x52, 0x8f, 0xfc, 0xc2, 0xfb, 0x86, + 0x4e, 0x80, 0x34, 0x06, 0x39, 0xf1, 0x0f, 0x55, 0x24, 0x81, 0x35, 0x0c, 0x95, 0xc9, 0x3d, 0x41, + 0x72, 0x2c, 0x51, 0xdc, 0x95, 0x61, 0x82, 0x4a, 0x4e, 0xca, 0xfe, 0xba, 0x2e, 0x4f, 0x96, 0x5e, + 0x4f, 0x90, 0xef, 0xa5, 0x6b, 0x92, 0xf2, 0x07, 0xaa, 0xb1, 0x4c, 0xac, 0x9f, 0x94, 0x5c, 0x93, + 0xd4, 0x51, 0xce, 0x14, 0xe4, 0xa3, 0xa7, 0x76, 0x43, 0x30, 0x9b, 0x69, 0xf8, 0x29, 0x34, 0x05, + 0xdb, 0x6f, 0x45, 0xa5, 0xb9, 0xd3, 0x98, 0x25, 0xd1, 0xb7, 0x52, 0x98, 0xea, 0x93, 0x58, 0x21, + 0x23, 0x49, 0xc3, 0x7c, 0x0d, 0xaf, 0x43, 0xaa, 0xbd, 0xfe, 0x50, 0x8a, 0xac, 0x6b, 0x2a, 0x7c, + 0x45, 0xc0, 0x75, 0xfb, 0xab, 0x4d, 0x9d, 0xc9, 0x15, 0x7b, 0x46, 0x2b, 0xb6, 0x51, 0x1d, 0x6e, + 0xd2, 0x45, 0x83, 0x69, 0x50, 0x50, 0x0a, 0xa2, 0xf8, 0xfc, 0xf8, 0xf8, 0xa8, 0x27, 0xe8, 0xa2, + 0xd7, 0x3b, 0xa4, 0x93, 0x2d, 0xcc, 0xe8, 0xa1, 0xaf, 0xf3, 0xec, 0x2c, 0xe5, 0x37, 0x16, 0xb9, + 0x64, 0x08, 0xea, 0x52, 0xfe, 0x41, 0x1f, 0x61, 0x4d, 0x73, 0x63, 0x8c, 0x7f, 0x01, 0xd8, 0xd5, + 0xec, 0x29, 0xc0, 0x4b, 0xb0, 0xbd, 0x76, 0xb0, 0x3f, 0x6c, 0x07, 0xb5, 0xa1, 0x49, 0x68, 0x01, + 0x7e, 0xb4, 0x15, 0xe5, 0x35, 0x48, 0xed, 0xe7, 0xe0, 0x5a, 0x23, 0x30, 0x8a, 0xa2, 0x29, 0x35, + 0x24, 0x28, 0x35, 0xf4, 0x0d, 0xb7, 0x38, 0x41, 0x34, 0x24, 0x99, 0x43, 0x54, 0x58, 0xa8, 0xff, + 0x34, 0x83, 0x07, 0x84, 0xf9, 0x4f, 0xc2, 0x70, 0x66, 0x91, 0xf4, 0x86, 0x94, 0x6a, 0x85, 0x75, + 0x58, 0x86, 0xfb, 0xa7, 0x93, 0x16, 0x9f, 0x23, 0x96, 0xbe, 0x64, 0x86, 0x90, 0x61, 0x4d, 0x4e, + 0x8e, 0x67, 0x4c, 0x8e, 0x77, 0x71, 0xe2, 0x55, 0x2a, 0x98, 0xfa, 0x3b, 0xbf, 0x58, 0xca, 0xfb, + 0xce, 0xbf, 0x82, 0xc6, 0xaa, 0x5b, 0x87, 0xbe, 0xe7, 0x69, 0xf4, 0x96, 0x4d, 0x35, 0x0c, 0x92, + 0xab, 0xeb, 0xb4, 0x4c, 0x7b, 0xce, 0xea, 0x40, 0x5a, 0x47, 0xf9, 0x9f, 0xd4, 0xf8, 0x4b, 0x39, + 0x59, 0xa6, 0xf8, 0x3e, 0x82, 0x0e, 0x43, 0xea, 0x34, 0xe2, 0x70, 0x0e, 0xed, 0x47, 0xed, 0x52, + 0xa0, 0x3c, 0x00, 0xb7, 0x23, 0x2e, 0xef, 0xc3, 0x3b, 0xe1, 0xbe, 0x29, 0xd6, 0x42, 0xbb, 0x1a, + 0xd8, 0x18, 0x91, 0xa7, 0xde, 0x69, 0xbc, 0x65, 0xaf, 0x52, 0x06, 0x34, 0x6f, 0x20, 0x8c, 0x6c, + 0xba, 0xaf, 0xf3, 0xb6, 0x7c, 0x29, 0xcc, 0xbe, 0x56, 0x9a, 0xaf, 0x61, 0xf5, 0xa6, 0x45, 0xcb, + 0x54, 0xb4, 0xe5, 0x8a, 0x96, 0xb5, 0x0f, 0xdb, 0x6a, 0x73, 0xad, 0x81, 0xfc, 0x48, 0xcb, 0x55, + 0xa4, 0xc2, 0x02, 0x96, 0x00, 0x21, 0x42, 0xe3, 0xe0, 0xfc, 0x62, 0x55, 0x73, 0xca, 0x17, 0x01, + 0x5e, 0x38, 0x7e, 0x01, 0xee, 0xe3, 0x84, 0x27, 0x30, 0x1c, 0x16, 0x06, 0x39, 0xb1, 0xd5, 0x7c, + 0x0d, 0x56, 0xd9, 0x6e, 0xe8, 0x79, 0xc2, 0x65, 0xc0, 0xc3, 0xb0, 0x66, 0xac, 0x83, 0x5e, 0x38, + 0xcc, 0x00, 0x8c, 0xf0, 0x06, 0x86, 0x97, 0x5c, 0xa8, 0xcd, 0x82, 0x61, 0x07, 0x23, 0x6f, 0xe0, + 0xcc, 0xb9, 0x93, 0x5f, 0x15, 0xe5, 0x7d, 0x77, 0xfe, 0xa4, 0x27, 0x61, 0xf2, 0x94, 0x27, 0x21, + 0xd4, 0x73, 0xde, 0x8e, 0x9f, 0x28, 0x8f, 0x3f, 0x0d, 0xda, 0x64, 0x50, 0xb8, 0x22, 0x3e, 0x59, + 0xee, 0x22, 0x7e, 0xd9, 0xa0, 0x71, 0x4d, 0x99, 0x0f, 0x3c, 0xa7, 0x9b, 0xac, 0x56, 0xc3, 0x9a, + 0xab, 0xa3, 0xe6, 0x43, 0x98, 0x6e, 0xe1, 0x43, 0x18, 0x3c, 0xed, 0x43, 0xe8, 0x46, 0xed, 0x75, + 0xd2, 0x79, 0x35, 0x92, 0x98, 0x57, 0x8b, 0x5a, 0xf6, 0x53, 0x57, 0x3c, 0x53, 0x0b, 0x7e, 0x20, + 0x9f, 0xd3, 0xb9, 0x1f, 0xad, 0xf4, 0x75, 0x89, 0xa5, 0x41, 0xfb, 0x4c, 0xad, 0x9a, 0xa1, 0x5e, + 0x97, 0xb3, 0x5f, 0x85, 0xed, 0x19, 0xb7, 0x51, 0x3f, 0x22, 0x75, 0x9c, 0xec, 0xe4, 0xfa, 0x26, + 0x2e, 0x22, 0x3a, 0x1e, 0xaa, 0xc0, 0x43, 0xf4, 0x46, 0xea, 0x70, 0x09, 0x1b, 0x77, 0xa0, 0x9e, + 0xd5, 0xf8, 0x34, 0xce, 0xc8, 0x22, 0x5b, 0xde, 0xdf, 0x77, 0xd7, 0x61, 0x0b, 0xe6, 0xdc, 0x5b, + 0x19, 0xe1, 0x41, 0x64, 0xd0, 0xa9, 0xf5, 0x28, 0x46, 0x82, 0xa9, 0x81, 0x62, 0xf4, 0x7b, 0x3d, + 0x8a, 0xfd, 0x1c, 0x6d, 0x68, 0xe9, 0x3a, 0x32, 0x1a, 0xba, 0x8e, 0x36, 0xa2, 0x2a, 0xe2, 0x4c, + 0xae, 0x6f, 0x2b, 0x4d, 0x06, 0x3b, 0x2a, 0x7c, 0x65, 0x78, 0xd1, 0xf2, 0x39, 0x82, 0x45, 0xae, + 0xff, 0x7c, 0xb2, 0x8c, 0x06, 0xad, 0xcb, 0xcf, 0xc1, 0x95, 0x4a, 0x2f, 0x60, 0xb3, 0xd5, 0x2a, + 0xcf, 0x03, 0xfe, 0x22, 0x87, 0xed, 0x58, 0x8b, 0x64, 0x5f, 0xcf, 0xe3, 0xbe, 0xf7, 0x95, 0x70, + 0xab, 0xb2, 0xea, 0x1e, 0x54, 0x03, 0x39, 0xe6, 0x3d, 0xd5, 0xcf, 0xa0, 0xfe, 0xe9, 0xe5, 0xba, + 0x4f, 0xcf, 0x75, 0xeb, 0x84, 0x8b, 0x6a, 0xfa, 0xfc, 0x1d, 0x4f, 0x06, 0x04, 0x69, 0x64, 0x93, + 0x57, 0x4d, 0xe9, 0x4e, 0x57, 0x05, 0x7c, 0x7f, 0x36, 0x7a, 0xaf, 0xad, 0x85, 0xa8, 0xe1, 0x76, + 0x15, 0x3e, 0xe1, 0x87, 0xd6, 0x82, 0x8b, 0xf3, 0xfb, 0x81, 0x96, 0xdc, 0xac, 0x3e, 0xcb, 0x95, + 0xd7, 0xdf, 0xe7, 0xcc, 0xb5, 0x8a, 0x07, 0xd2, 0xea, 0xfd, 0xf7, 0xf4, 0x8c, 0x3f, 0xd1, 0x80, + 0x9a, 0x77, 0x92, 0xe2, 0xb6, 0x9a, 0xf3, 0x32, 0x3a, 0xc9, 0x9f, 0x9c, 0x74, 0x23, 0xca, 0xc9, + 0x9f, 0x9c, 0x75, 0x6a, 0x6b, 0x10, 0xd6, 0x27, 0x1b, 0xbb, 0xa4, 0xb6, 0x49, 0x1a, 0x5b, 0xa3, + 0xe9, 0x47, 0xe2, 0xd4, 0xb7, 0x1b, 0x2c, 0xef, 0x3b, 0x6d, 0x9b, 0x2d, 0xbf, 0x6f, 0x6d, 0xcb, + 0x30, 0xd5, 0x6f, 0x60, 0x40, 0x69, 0xaa, 0xdf, 0xda, 0x64, 0xd4, 0xde, 0x64, 0xc3, 0xbe, 0xbf, + 0xd1, 0xec, 0xbb, 0xb4, 0x49, 0x50, 0xe2, 0x74, 0x49, 0x93, 0x52, 0x43, 0x40, 0x91, 0xe5, 0xa1, + 0x3a, 0xd4, 0xe1, 0xc7, 0x42, 0x27, 0x92, 0x9e, 0xec, 0x01, 0x31, 0x57, 0x7a, 0x69, 0x02, 0x2f, + 0x47, 0x3d, 0x99, 0xd6, 0x3b, 0x99, 0x76, 0x2a, 0x53, 0x66, 0x04, 0x4a, 0x2d, 0x2a, 0x43, 0x4b, + 0x73, 0x54, 0x69, 0x77, 0xed, 0x69, 0xcf, 0xba, 0x18, 0x96, 0xa8, 0x3b, 0x3b, 0x9d, 0xec, 0x6d, + 0xfd, 0x42, 0xcd, 0x4c, 0x0c, 0x87, 0xb4, 0xc4, 0xd9, 0xdb, 0x93, 0x3e, 0xa7, 0x35, 0x7a, 0xeb, + 0xaf, 0xd3, 0x12, 0x89, 0xec, 0xbf, 0x9d, 0xec, 0xbd, 0xc6, 0x2d, 0x15, 0xf7, 0xe5, 0x89, 0xcf, + 0x5f, 0xbf, 0xf7, 0x3b, 0xc4, 0xe5, 0x94, 0x96, 0x03, 0x76, 0x65, 0x07, 0xe1, 0x74, 0xb3, 0xb7, + 0x2a, 0xa0, 0xcc, 0x63, 0x75, 0x2a, 0xb7, 0xf1, 0x5c, 0x4e, 0x31, 0xee, 0xe4, 0xa5, 0x55, 0x44, + 0x75, 0x31, 0xe7, 0xe6, 0xbd, 0x94, 0x43, 0xe3, 0xd1, 0xdb, 0x68, 0xa2, 0xe7, 0xb8, 0x9b, 0x98, + 0x17, 0x99, 0x79, 0x2f, 0xd7, 0x5f, 0xe7, 0xe6, 0x6b, 0x11, 0x12, 0x46, 0xde, 0xfa, 0x55, 0xb5, + 0x82, 0xac, 0xa4, 0xd7, 0x9c, 0x8d, 0x2c, 0xd7, 0x5d, 0xfd, 0x12, 0x95, 0x69, 0x4c, 0x44, 0xe1, + 0xc8, 0x91, 0xd8, 0xcd, 0x4f, 0xdc, 0xa4, 0xbc, 0xd5, 0x56, 0x0e, 0x40, 0xf0, 0xf1, 0xe9, 0x6c, + 0x4a, 0xa9, 0xa7, 0x92, 0xe6, 0x19, 0xd9, 0x9e, 0x39, 0xb9, 0x98, 0xa6, 0x9a, 0xb4, 0xd8, 0x08, + 0x43, 0xd8, 0xe8, 0x27, 0xc2, 0x38, 0xe0, 0x97, 0x79, 0xc7, 0x7e, 0xb4, 0x9d, 0xd1, 0x7e, 0xff, + 0xb3, 0xbb, 0x3a, 0x7b, 0x48, 0x8a, 0xe0, 0x5e, 0xba, 0x6c, 0x90, 0xd8, 0x31, 0xbd, 0xa1, 0xe3, + 0xfb, 0xda, 0xc2, 0xf0, 0xf4, 0x4e, 0x45, 0x77, 0x9e, 0xef, 0x6b, 0x3d, 0x0a, 0x28, 0x6d, 0xe7, + 0x4b, 0x87, 0x27, 0xe5, 0x15, 0x36, 0x5b, 0xce, 0x10, 0xcd, 0x7d, 0x12, 0x12, 0x43, 0x4b, 0x4c, + 0x49, 0x3a, 0x8b, 0xe6, 0x0f, 0x40, 0x70, 0xb6, 0x7d, 0x16, 0x58, 0x6e, 0x23, 0x0b, 0x3a, 0x56, + 0x98, 0xfe, 0xc9, 0x80, 0xc2, 0x7e, 0xf6, 0x96, 0xd6, 0x92, 0xf8, 0xc4, 0xf7, 0xd2, 0x2e, 0xa4, + 0xea, 0xf9, 0x8f, 0xb8, 0x5c, 0xac, 0xb8, 0x4c, 0xfd, 0xc3, 0x6e, 0xc3, 0x7f, 0xc4, 0x08, 0x36, + 0xae, 0x6d, 0x25, 0x99, 0x3e, 0x0d, 0x5b, 0x48, 0x6c, 0x9e, 0xec, 0x6d, 0x73, 0xf7, 0xe4, 0x88, + 0xab, 0x93, 0x8e, 0x45, 0xb2, 0x8f, 0xf3, 0xec, 0xed, 0x85, 0x9f, 0xbb, 0x46, 0x1e, 0x1c, 0x2a, + 0x12, 0x40, 0x35, 0x8b, 0xd3, 0x66, 0xd1, 0x6d, 0xb3, 0x88, 0x83, 0xed, 0x0f, 0xb4, 0x0e, 0x1e, + 0x93, 0x41, 0xf6, 0xde, 0x45, 0x86, 0x40, 0x7b, 0xdd, 0x6c, 0xc1, 0xb7, 0x27, 0x94, 0x69, 0xde, + 0x92, 0xf0, 0x2e, 0x7e, 0xe0, 0x9d, 0x3d, 0x53, 0x2b, 0xd6, 0xb3, 0x57, 0x2e, 0xa3, 0xa2, 0x4a, + 0xf6, 0xc3, 0x1d, 0x01, 0x35, 0xb9, 0x14, 0x43, 0xfa, 0x23, 0x36, 0xde, 0xd1, 0xe4, 0xa0, 0xcc, + 0x71, 0x5a, 0xd3, 0x84, 0x55, 0x42, 0xa4, 0x26, 0x28, 0x89, 0xeb, 0x37, 0x15, 0x7f, 0x86, 0xa3, + 0x49, 0x29, 0xab, 0x15, 0xbc, 0x73, 0xca, 0x8c, 0x87, 0x7a, 0xa9, 0xef, 0x19, 0x76, 0x3d, 0xf6, + 0xf6, 0x17, 0x76, 0xb6, 0x70, 0x93, 0x03, 0x83, 0x79, 0x0a, 0x5b, 0xbe, 0x5a, 0xbb, 0xfd, 0xcf, + 0x69, 0xf7, 0x48, 0x46, 0x14, 0x87, 0x51, 0xa8, 0x5d, 0xd1, 0x9e, 0x56, 0xda, 0x62, 0x22, 0x83, + 0x46, 0x4a, 0x25, 0x20, 0x26, 0xb5, 0x57, 0x0d, 0x0c, 0x1e, 0x8d, 0xb3, 0x81, 0xf5, 0xce, 0x2d, + 0x42, 0xe5, 0x0c, 0xc2, 0xd4, 0xd0, 0x98, 0xbb, 0x69, 0x32, 0x1f, 0x77, 0xcc, 0x36, 0xa9, 0x16, + 0x8e, 0x10, 0x13, 0x75, 0x08, 0xb4, 0xc6, 0x52, 0xb1, 0x41, 0x85, 0x90, 0x2d, 0xa7, 0xd2, 0x7b, + 0x04, 0x51, 0x79, 0x3e, 0x67, 0x6a, 0x94, 0x1a, 0xe6, 0x75, 0x9a, 0x10, 0xad, 0xb9, 0x96, 0x02, + 0x01, 0x9a, 0xd0, 0x00, 0xf4, 0xfb, 0xa6, 0x04, 0xa9, 0xbc, 0xea, 0x10, 0xad, 0x93, 0x7e, 0xfa, + 0xe1, 0x70, 0x6d, 0x02, 0xf2, 0x6d, 0x03, 0x8d, 0xa4, 0x4b, 0xd6, 0x76, 0x1d, 0x66, 0xf7, 0x56, + 0x8e, 0xa8, 0x7d, 0x65, 0x98, 0x9f, 0xd0, 0x21, 0x60, 0xaa, 0x8a, 0x42, 0x13, 0xe1, 0xdb, 0xc7, + 0xd9, 0xbd, 0x51, 0xae, 0x34, 0x6d, 0xd4, 0x80, 0x3d, 0x2c, 0x84, 0x2b, 0x5f, 0xad, 0xed, 0xe3, + 0x35, 0x6d, 0xeb, 0x75, 0x55, 0xf3, 0x87, 0xa2, 0x79, 0xfd, 0x95, 0xec, 0xe1, 0xd8, 0xc3, 0x2b, + 0x91, 0xf9, 0x9c, 0x27, 0x1d, 0x69, 0x83, 0x3a, 0xb5, 0x1e, 0x4d, 0xa7, 0x1e, 0xc7, 0x7d, 0xda, + 0xeb, 0x70, 0x53, 0x74, 0x8c, 0x35, 0x41, 0x2e, 0xdc, 0x5a, 0x70, 0x3b, 0xe1, 0x90, 0x4a, 0xa4, + 0x6e, 0x81, 0xf4, 0x0f, 0xa5, 0x05, 0xd0, 0x6b, 0xe9, 0x14, 0x67, 0x2f, 0x89, 0xb4, 0xfb, 0x08, + 0x19, 0x05, 0x37, 0xb5, 0xc5, 0xc0, 0x73, 0x49, 0x34, 0x76, 0x6f, 0x07, 0x9c, 0xc4, 0xa9, 0x67, + 0xe4, 0x03, 0x2e, 0xd3, 0xb6, 0xc8, 0xd8, 0x69, 0xdd, 0x63, 0xcf, 0x19, 0xce, 0xd2, 0xc7, 0xb0, + 0xb7, 0xd0, 0xab, 0x1d, 0x3d, 0xaf, 0xd5, 0x73, 0x56, 0x34, 0xa6, 0x38, 0xec, 0x70, 0x61, 0x30, + 0x41, 0xce, 0x96, 0xc5, 0x3e, 0x43, 0x84, 0x38, 0x52, 0xce, 0x50, 0x00, 0x47, 0x85, 0xab, 0xfa, + 0xfc, 0x21, 0xa0, 0x90, 0xca, 0x15, 0xdf, 0xcc, 0xf0, 0xcd, 0xc3, 0x95, 0x76, 0xfc, 0xfa, 0x97, + 0xcb, 0xab, 0x89, 0x2b, 0xb1, 0x4e, 0x4c, 0xd7, 0xaf, 0xe0, 0x8a, 0x4b, 0x9f, 0xe0, 0xa5, 0x31, + 0xab, 0x6c, 0x0b, 0xd6, 0x31, 0xaa, 0xff, 0x0d, 0x4e, 0xfe, 0xaa, 0xf6, 0x55, 0xad, 0xf6, 0x61, + 0xbd, 0xf6, 0xf7, 0x7a, 0xed, 0x49, 0xad, 0xf6, 0x51, 0x03, 0x68, 0x5e, 0xaf, 0x16, 0xa0, 0x17, + 0xe1, 0xfd, 0x19, 0x7b, 0xc8, 0x0d, 0xd1, 0x4e, 0x7e, 0x33, 0x11, 0xfe, 0x72, 0x2a, 0x13, 0x4f, + 0x61, 0xe0, 0xc5, 0xb0, 0xe0, 0xd3, 0x2c, 0xec, 0xfa, 0x08, 0xee, 0x74, 0x26, 0x6b, 0x3e, 0x77, + 0x24, 0x4a, 0x51, 0x5b, 0xd3, 0xca, 0x09, 0xba, 0x2a, 0x4b, 0xe6, 0xeb, 0x1d, 0xcc, 0x14, 0xf2, + 0x1f, 0x39, 0x9a, 0xe2, 0x89, 0x3e, 0xe2, 0x4b, 0x75, 0xa5, 0x36, 0xdc, 0xb6, 0x11, 0x44, 0xe4, + 0xe9, 0x1f, 0x11, 0x56, 0x21, 0x4f, 0x7c, 0xef, 0x63, 0xf8, 0xf0, 0x9a, 0x93, 0x9d, 0x23, 0xec, + 0x04, 0x8f, 0xbf, 0xea, 0xa1, 0x2c, 0xd2, 0x53, 0xcf, 0xea, 0xf0, 0x0f, 0xf5, 0x71, 0x6b, 0xb9, + 0xaa, 0xb5, 0x29, 0x7a, 0xee, 0xb8, 0x34, 0x76, 0xe6, 0xca, 0xea, 0x08, 0x64, 0x7f, 0x05, 0x27, + 0xd3, 0xaa, 0xaa, 0xe7, 0xd2, 0x24, 0x55, 0x59, 0x61, 0x9b, 0xd5, 0xe7, 0xf3, 0x20, 0x20, 0x5a, + 0xe9, 0xac, 0x44, 0x4c, 0x27, 0xbd, 0x73, 0xa7, 0x72, 0x29, 0x16, 0xc0, 0x78, 0x1a, 0x76, 0x1e, + 0xd6, 0xc6, 0xa4, 0xe3, 0xa6, 0x89, 0x89, 0x52, 0x01, 0x56, 0xc7, 0xb8, 0x52, 0x2f, 0x66, 0xa2, + 0x96, 0x9c, 0x84, 0x3a, 0xa0, 0x32, 0xba, 0x9f, 0x52, 0xe7, 0xe3, 0x0e, 0xd9, 0xb9, 0x5c, 0xb3, + 0x59, 0xca, 0x42, 0xd3, 0xda, 0xb7, 0x46, 0x90, 0xfb, 0x6c, 0x76, 0xc9, 0x4e, 0xd5, 0x9e, 0x6b, + 0xe1, 0xff, 0x0e, 0x91, 0x85, 0x8d, 0x04, 0x6c, 0x77, 0xb7, 0x06, 0xd6, 0xeb, 0x45, 0x40, 0x07, + 0x4c, 0x4c, 0x0b, 0x98, 0xdf, 0xda, 0xae, 0x4d, 0xff, 0x71, 0x44, 0xc2, 0x8d, 0x8d, 0xd4, 0x77, + 0xae, 0x40, 0x66, 0xf7, 0x90, 0x33, 0x50, 0x9b, 0xf3, 0xdd, 0x46, 0x2e, 0x95, 0xcc, 0x50, 0xdf, + 0xff, 0x89, 0x54, 0x07, 0x52, 0xc9, 0xe0, 0xfc, 0x3c, 0xa7, 0x4d, 0x9f, 0xd3, 0x56, 0xce, 0x69, + 0x83, 0xea, 0x4d, 0x5e, 0xb8, 0xe7, 0xf8, 0xff, 0xc5, 0x6a, 0x85, 0xf1, 0xa3, 0x68, 0x6c, 0x7e, + 0x48, 0x6f, 0x37, 0x7d, 0x4b, 0x1f, 0x0e, 0x0e, 0xc5, 0x87, 0xec, 0xc6, 0x5a, 0xfb, 0x74, 0xd3, + 0xd7, 0x50, 0x25, 0x6d, 0x20, 0xe1, 0xd5, 0xc1, 0x9f, 0x08, 0x0a, 0xbe, 0x98, 0xea, 0xe4, 0x1b, + 0x51, 0x23, 0xfe, 0xf6, 0x13, 0xe2, 0x9a, 0x88, 0x68, 0x25, 0xf8, 0xdd, 0x61, 0x3f, 0x39, 0xc4, + 0x33, 0xb9, 0x8a, 0x8a, 0xc5, 0xcd, 0x04, 0xfa, 0xce, 0x83, 0x57, 0xd1, 0x72, 0x9a, 0xa6, 0xe9, + 0xc7, 0x28, 0x3c, 0x40, 0x54, 0x97, 0x83, 0xbb, 0x08, 0xd9, 0xac, 0x56, 0x52, 0xf8, 0x5d, 0xd2, + 0x1c, 0x6a, 0x5e, 0x9e, 0x95, 0x5f, 0x57, 0xa7, 0xb3, 0x98, 0x76, 0xfd, 0xfe, 0x0b, 0x67, 0x74, + 0xc4, 0x09, 0xd2, 0xd1, 0xbb, 0xe3, 0x2e, 0xa6, 0xa3, 0x43, 0xf5, 0xf3, 0xc8, 0xc3, 0xb6, 0x7b, + 0xf6, 0xcc, 0xf7, 0x17, 0x53, 0x2e, 0xe9, 0xfa, 0x47, 0x28, 0xf1, 0x5e, 0x68, 0x25, 0xd4, 0x80, + 0xa2, 0x3e, 0xc1, 0xb2, 0x28, 0xe9, 0x86, 0xe0, 0x4a, 0x2e, 0x17, 0x39, 0x6e, 0x86, 0x16, 0xd3, + 0x95, 0x6b, 0xc1, 0xaf, 0xcb, 0xb5, 0x8e, 0xbd, 0x6f, 0x10, 0x21, 0xcd, 0x71, 0x5f, 0xf6, 0x65, + 0x50, 0x1f, 0xa2, 0x36, 0x4b, 0xc3, 0xab, 0x9b, 0x0a, 0x7e, 0x65, 0xa9, 0x59, 0xc4, 0xa4, 0xc0, + 0x7b, 0x63, 0x9b, 0x31, 0x0f, 0xc4, 0x61, 0xc7, 0xcb, 0xc4, 0xe8, 0x6d, 0xac, 0x50, 0xa8, 0xb3, + 0x42, 0x8a, 0xc9, 0xf9, 0x35, 0x9c, 0xa4, 0xa9, 0xe4, 0x30, 0x3b, 0xa2, 0x67, 0xda, 0x47, 0x8d, + 0x78, 0x30, 0xc4, 0x86, 0xfb, 0xf6, 0x81, 0x10, 0x49, 0x56, 0x0a, 0xc8, 0x33, 0xd3, 0xf7, 0x1c, + 0x01, 0xd8, 0xcd, 0xfd, 0x2f, 0x83, 0xa1, 0x0f, 0x15, 0xd4, 0x67, 0xce, 0x67, 0xc3, 0x27, 0xba, + 0xac, 0xc0, 0x3b, 0xe3, 0xd8, 0x47, 0xaa, 0x77, 0xb7, 0xd1, 0xd0, 0x7c, 0x5e, 0x6b, 0x88, 0x67, + 0xae, 0x54, 0xf4, 0xaa, 0x74, 0xe5, 0xe2, 0x2e, 0xe1, 0x51, 0xe6, 0xf3, 0x10, 0xba, 0x5b, 0xe5, + 0xc9, 0xc2, 0x7a, 0x7f, 0x92, 0xb8, 0xb4, 0x9b, 0x06, 0x24, 0xa4, 0x0f, 0xe5, 0x4d, 0x43, 0x58, + 0xbf, 0x69, 0x10, 0x7a, 0xdf, 0xf5, 0xf7, 0x0c, 0x7a, 0xa6, 0x5f, 0x44, 0xa7, 0xd5, 0x73, 0x31, + 0x1b, 0x91, 0x6c, 0xc5, 0xe4, 0x48, 0x08, 0x37, 0x24, 0x26, 0x0d, 0xe2, 0x7b, 0x5b, 0x7a, 0x2c, + 0x80, 0xfe, 0xd3, 0x43, 0xc7, 0x08, 0xc2, 0x53, 0x38, 0x1c, 0xee, 0xea, 0x36, 0x9a, 0xf9, 0x65, + 0xf4, 0x17, 0xce, 0xa5, 0xa6, 0x92, 0x3c, 0x6b, 0x9d, 0xfa, 0xc8, 0xbb, 0xce, 0xb3, 0x2b, 0xf2, + 0xe8, 0xe9, 0xe9, 0xc3, 0x8d, 0x7a, 0x8f, 0x2b, 0x64, 0x4b, 0x33, 0xc6, 0xe1, 0xb9, 0xfa, 0x36, + 0xda, 0x90, 0x3f, 0x12, 0x00, 0xd7, 0x53, 0x48, 0x3e, 0x66, 0x03, 0xbd, 0x7d, 0x97, 0xe0, 0x1b, + 0xe8, 0xc0, 0x22, 0x4e, 0x5d, 0x8d, 0xab, 0x73, 0x9f, 0xca, 0xa9, 0x5c, 0x07, 0x90, 0x25, 0xb4, + 0xad, 0x73, 0x2a, 0xdf, 0x8f, 0x21, 0x60, 0xfa, 0x74, 0x78, 0x9a, 0xd1, 0xca, 0xff, 0x84, 0xdf, + 0xfd, 0x17, 0x38, 0xdc, 0xe7, 0xfe, 0xe8, 0xd1, 0x98, 0x78, 0x99, 0xfb, 0x4f, 0x46, 0xaa, 0xa7, + 0x65, 0x30, 0xa6, 0x8d, 0x04, 0x37, 0x6a, 0xe3, 0x24, 0xef, 0x5d, 0x8f, 0xb5, 0xa9, 0xd1, 0xd7, + 0xa5, 0x31, 0x29, 0x5d, 0x12, 0x18, 0x41, 0x70, 0x88, 0x0d, 0x1d, 0x14, 0x7f, 0x41, 0x0c, 0xf4, + 0x3c, 0x44, 0xaa, 0x37, 0x0e, 0x9b, 0x53, 0xe5, 0x18, 0xef, 0x25, 0xe1, 0xbd, 0xf2, 0x21, 0x39, + 0x8b, 0x26, 0x31, 0xad, 0x7a, 0xdd, 0x1c, 0xdd, 0xde, 0xf1, 0x55, 0x4c, 0xd0, 0xfa, 0x9d, 0x61, + 0xa1, 0x87, 0x4f, 0x2c, 0x9c, 0x96, 0x18, 0xd5, 0x7a, 0x68, 0xea, 0x08, 0x1e, 0xad, 0x27, 0xa5, + 0xcb, 0x4d, 0xa4, 0xdc, 0x90, 0x48, 0xe6, 0x3f, 0x8f, 0x2e, 0x10, 0x4d, 0xb9, 0x35, 0x10, 0x35, + 0x47, 0xa2, 0x95, 0x9a, 0x9a, 0x0f, 0x04, 0x2d, 0x71, 0x95, 0xbf, 0x65, 0x59, 0xb8, 0x7c, 0x4d, + 0xb2, 0x1e, 0x49, 0xd9, 0x49, 0x0d, 0xde, 0xb8, 0x54, 0x01, 0x49, 0xa0, 0xcd, 0xfa, 0x50, 0x43, + 0xb1, 0xad, 0xb6, 0xb0, 0x9e, 0xd6, 0x9c, 0x54, 0x10, 0xfe, 0x20, 0x11, 0xd1, 0x4d, 0xdb, 0x5c, + 0x01, 0xe4, 0x7e, 0x0f, 0x7b, 0x08, 0x8c, 0x1d, 0xa5, 0x37, 0xb9, 0x39, 0x6b, 0x25, 0x13, 0x6f, + 0x43, 0x12, 0x9d, 0xa7, 0xd3, 0x1b, 0x28, 0x26, 0x0a, 0x6e, 0x04, 0xcb, 0xf6, 0x06, 0xec, 0x66, + 0x07, 0xb1, 0x16, 0xc4, 0x93, 0xcd, 0x3a, 0x76, 0x5b, 0x5f, 0x20, 0xf8, 0x1a, 0x07, 0xc5, 0xab, + 0x65, 0xc5, 0x0d, 0x71, 0x22, 0xcc, 0xca, 0x49, 0x09, 0xf4, 0xd9, 0x0c, 0x92, 0x13, 0xc2, 0x92, + 0xc3, 0x51, 0xd3, 0xc8, 0xbf, 0x86, 0x82, 0x3b, 0x4c, 0x38, 0xca, 0xa7, 0xcf, 0x4c, 0x0e, 0x97, + 0xfb, 0xe7, 0xc9, 0xc5, 0x4a, 0xd0, 0x20, 0xfe, 0x2d, 0x1b, 0x75, 0x4e, 0x72, 0xc7, 0xcc, 0xc4, + 0x91, 0xef, 0x17, 0x9c, 0x87, 0x43, 0xd4, 0x12, 0x29, 0x87, 0x85, 0xc1, 0xc8, 0x7e, 0xff, 0xc2, + 0x69, 0x05, 0xa2, 0xb2, 0x2f, 0x20, 0x58, 0x12, 0x23, 0xb6, 0x91, 0x09, 0x0e, 0x4c, 0x0f, 0x8c, + 0x20, 0x1c, 0x3a, 0x50, 0x9a, 0x33, 0x8c, 0x09, 0x5b, 0x1d, 0x2e, 0xad, 0xa2, 0x04, 0x4f, 0xb7, + 0x0c, 0x01, 0x94, 0xd5, 0xa4, 0x2a, 0xd3, 0x2d, 0x13, 0x57, 0x85, 0x1f, 0x95, 0xf4, 0x27, 0x43, + 0x14, 0x14, 0xfd, 0x16, 0x51, 0xfb, 0x01, 0x3d, 0x54, 0x2d, 0x6e, 0x5c, 0xf5, 0xb2, 0xed, 0x06, + 0x9d, 0xf3, 0xd6, 0xa1, 0xe5, 0x66, 0xcc, 0x3c, 0xfd, 0xc3, 0x65, 0xca, 0xa1, 0x31, 0xfa, 0x2f, + 0x10, 0x2c, 0x18, 0x7e, 0xe4, 0xb2, 0x40, 0xfc, 0x74, 0xf5, 0xba, 0x68, 0x35, 0x3c, 0xa1, 0x75, + 0x1c, 0x97, 0xde, 0x90, 0x83, 0xd2, 0x46, 0xa2, 0xe5, 0x2a, 0xa5, 0x08, 0x1e, 0xa0, 0x33, 0x72, + 0x06, 0x5b, 0x7e, 0x28, 0x2e, 0x4d, 0xd4, 0x57, 0x6e, 0x38, 0x62, 0x9c, 0x51, 0x18, 0xb5, 0x4f, + 0x3f, 0x74, 0x8d, 0x77, 0x82, 0x98, 0xa8, 0xcd, 0xa0, 0xa3, 0x1a, 0xc0, 0x9f, 0x3e, 0x25, 0x3b, + 0xbe, 0x11, 0x0c, 0x6b, 0xac, 0xc7, 0x60, 0x1d, 0x18, 0x82, 0x18, 0xd4, 0xf2, 0x7e, 0x5e, 0xf1, + 0x01, 0x8e, 0x9e, 0x4e, 0x3a, 0x71, 0xc6, 0xca, 0x86, 0x25, 0x21, 0xf1, 0x4a, 0x3e, 0x94, 0x1a, + 0x30, 0xb7, 0xda, 0x2f, 0x65, 0x2d, 0x44, 0x59, 0x03, 0xba, 0x95, 0x05, 0xd2, 0x01, 0xc6, 0xa9, + 0xcc, 0x61, 0xca, 0x32, 0xbf, 0x72, 0x38, 0x4b, 0xd8, 0xf9, 0x44, 0xaf, 0xc1, 0x51, 0x5f, 0xea, + 0x6d, 0x21, 0xc4, 0x84, 0xd1, 0x10, 0x1c, 0x7e, 0x38, 0xac, 0x79, 0xc5, 0xc8, 0x08, 0x03, 0x98, + 0x84, 0x89, 0xb1, 0x66, 0xf2, 0x92, 0x20, 0xb2, 0x49, 0xb3, 0x9a, 0x8a, 0xec, 0x98, 0x05, 0x59, + 0xf4, 0x0f, 0xe2, 0x77, 0x13, 0x67, 0x58, 0xcd, 0xb4, 0xa6, 0xd6, 0xf7, 0x63, 0x17, 0xe1, 0x7e, + 0x9b, 0xda, 0x6d, 0x19, 0x80, 0x54, 0x7c, 0x50, 0xbb, 0x8c, 0xe0, 0x8b, 0x19, 0x61, 0x2d, 0x42, + 0x8c, 0x3a, 0x34, 0xd3, 0x1c, 0xa2, 0x59, 0xd2, 0xad, 0xad, 0x23, 0xd2, 0x1a, 0x88, 0xcb, 0x9c, + 0x98, 0xad, 0x45, 0xa9, 0xd5, 0x74, 0x08, 0x09, 0x53, 0xbd, 0x33, 0x16, 0x82, 0xf2, 0xd2, 0x83, + 0x57, 0xbb, 0x37, 0x9b, 0xc4, 0x37, 0xcb, 0x8e, 0xd3, 0x16, 0xae, 0xaa, 0xf9, 0x46, 0xbf, 0xca, + 0x12, 0x6f, 0x57, 0x22, 0x5a, 0xff, 0xbf, 0x5f, 0x37, 0xef, 0x1a, 0x7b, 0x08, 0x70, 0x1e, 0x44, + 0x09, 0x82, 0x55, 0xba, 0xef, 0xfd, 0x67, 0x1c, 0xcb, 0xff, 0xce, 0x8d, 0x18, 0x16, 0xdf, 0x73, + 0xef, 0x3d, 0x11, 0xf5, 0x46, 0x0c, 0xf9, 0x8c, 0x33, 0x90, 0x8a, 0x19, 0xd2, 0x18, 0xe3, 0x9b, + 0x44, 0x04, 0x00, 0x2a, 0x43, 0x3d, 0xf6, 0x84, 0xf1, 0xe4, 0xec, 0x43, 0x7a, 0x43, 0x33, 0x9a, + 0x8f, 0xeb, 0x05, 0xe7, 0xde, 0xc5, 0x40, 0xcb, 0xc1, 0xb3, 0x08, 0xf2, 0xb7, 0xcb, 0x94, 0xbd, + 0x30, 0xd1, 0xca, 0x26, 0xe7, 0x5b, 0x9c, 0xbc, 0x1c, 0xa2, 0x4d, 0x4b, 0xec, 0x4b, 0xdf, 0x96, + 0x97, 0x15, 0xc4, 0xd5, 0xaa, 0x78, 0x76, 0x3a, 0x7f, 0x3a, 0xfd, 0x28, 0x15, 0x63, 0x3b, 0xd9, + 0x14, 0x41, 0x63, 0x94, 0xcc, 0x5c, 0x86, 0xe3, 0x2e, 0x77, 0x35, 0x1f, 0x1c, 0x46, 0x8c, 0x6e, + 0xb5, 0xea, 0x65, 0x15, 0x3a, 0xb0, 0xe4, 0xac, 0xe5, 0x9d, 0xd2, 0x64, 0xdb, 0xf9, 0xf4, 0x49, + 0x1f, 0x46, 0x51, 0xfb, 0x9d, 0xd3, 0xef, 0x0e, 0x4d, 0xa6, 0x9a, 0x2a, 0x6a, 0x0d, 0x31, 0xcf, + 0xff, 0x59, 0x4e, 0xac, 0x8c, 0xd8, 0x5c, 0x04, 0x13, 0x15, 0x72, 0xde, 0x39, 0x17, 0xab, 0x70, + 0x21, 0xf1, 0xed, 0x43, 0x9a, 0xb9, 0xff, 0x7e, 0xdd, 0x16, 0x00, 0x5c, 0x22, 0xdd, 0x4e, 0x47, + 0xad, 0x8d, 0xe7, 0x18, 0x4e, 0xa4, 0x4c, 0xdf, 0xc4, 0xf8, 0x45, 0x8d, 0xdd, 0xdd, 0xda, 0x3c, + 0x34, 0xc1, 0xf2, 0x8b, 0xfd, 0x7b, 0xc4, 0xd4, 0x63, 0xf5, 0x1e, 0x33, 0x66, 0x48, 0xb9, 0xed, + 0x77, 0x3b, 0xc9, 0xb7, 0xf9, 0xc1, 0x5d, 0x95, 0xee, 0xf7, 0xd0, 0x19, 0x7a, 0x3b, 0x3e, 0x02, + 0x5b, 0x08, 0x68, 0x47, 0x1e, 0xfb, 0xa2, 0x39, 0x65, 0xc1, 0xc9, 0x11, 0x15, 0x70, 0xe8, 0xec, + 0x78, 0xd4, 0xeb, 0x1f, 0xee, 0xee, 0x6e, 0x35, 0x52, 0xa2, 0x6d, 0x62, 0x62, 0xa8, 0x1d, 0x1a, + 0xb4, 0x20, 0x9b, 0x7c, 0xbb, 0x4a, 0x42, 0xf1, 0xb2, 0x78, 0xe8, 0xd8, 0xfb, 0xfb, 0x91, 0x2d, + 0xf1, 0x74, 0xdf, 0x47, 0x9c, 0x4a, 0xbf, 0xbf, 0x1f, 0x2b, 0x45, 0x5d, 0x00, 0xce, 0xe2, 0x63, + 0x2e, 0x41, 0x20, 0x46, 0x7b, 0x5d, 0x1b, 0x73, 0xe4, 0x20, 0xde, 0x76, 0x5a, 0xfb, 0xd4, 0x90, + 0xdc, 0x10, 0xda, 0xec, 0x6a, 0x91, 0x2a, 0x1f, 0x5b, 0x42, 0x98, 0xd4, 0x78, 0x2c, 0x25, 0x00, + 0x24, 0xb3, 0x29, 0x6b, 0xfb, 0xee, 0x46, 0xdf, 0xbd, 0xfc, 0xee, 0xd3, 0xa7, 0xbb, 0xd1, 0xf1, + 0xd1, 0xcb, 0xdd, 0xdd, 0xbb, 0x93, 0xef, 0x0e, 0x3d, 0x67, 0x6d, 0x50, 0x55, 0x11, 0x7c, 0xe6, + 0xf1, 0xce, 0x97, 0xe2, 0x2b, 0x53, 0xc5, 0xdf, 0xa1, 0xab, 0xd6, 0xe3, 0x65, 0x0e, 0x35, 0x01, + 0x95, 0x8f, 0x26, 0xb9, 0xaa, 0x3f, 0x85, 0xf0, 0x6a, 0x1a, 0xe6, 0xaf, 0xd3, 0x18, 0x43, 0xe7, + 0xe4, 0xd2, 0x5d, 0x3b, 0xbb, 0x47, 0xe4, 0x5e, 0x59, 0x36, 0x59, 0xa8, 0x30, 0x2c, 0x69, 0x51, + 0xfb, 0x4e, 0xd6, 0x14, 0x11, 0x74, 0x3a, 0x34, 0xe7, 0xcf, 0xaa, 0xcf, 0x8a, 0xac, 0x6a, 0x4a, + 0x46, 0x89, 0x62, 0xf4, 0x6a, 0x06, 0xca, 0x91, 0xe5, 0x22, 0x86, 0x30, 0x74, 0x41, 0x02, 0x0f, + 0x5f, 0xf9, 0x12, 0x21, 0x5f, 0xb9, 0xed, 0x52, 0x56, 0x36, 0xbd, 0xb6, 0x5d, 0x59, 0xc5, 0x91, + 0x0f, 0x7e, 0xf9, 0xfb, 0xee, 0xa4, 0x7f, 0x88, 0xdc, 0x05, 0xb2, 0x91, 0x4f, 0x9f, 0x76, 0x58, + 0xcd, 0x24, 0x4b, 0x31, 0xe7, 0xe2, 0x19, 0xf3, 0xec, 0x6b, 0x85, 0xe2, 0x07, 0xb6, 0x26, 0x54, + 0x2d, 0x84, 0x35, 0xc2, 0xfe, 0x52, 0xb6, 0x37, 0x96, 0xdd, 0xec, 0xf4, 0x07, 0xb2, 0x27, 0x04, + 0x34, 0x2f, 0x61, 0xae, 0xba, 0xaf, 0x21, 0x9d, 0xe7, 0xe8, 0xa1, 0x6c, 0x4e, 0x09, 0x72, 0x3d, + 0x90, 0x8d, 0xf8, 0xaa, 0x25, 0xf2, 0x77, 0x5a, 0xa9, 0x52, 0x16, 0x3c, 0xe3, 0xb2, 0x2a, 0x75, + 0x5a, 0xda, 0xb9, 0xd1, 0x34, 0x50, 0xbd, 0xb1, 0xed, 0x41, 0x36, 0xbb, 0x29, 0x52, 0xfb, 0x33, + 0x56, 0xae, 0xdc, 0x02, 0xe2, 0x72, 0x43, 0xc1, 0x01, 0x25, 0x0d, 0xb5, 0xf6, 0x0c, 0xff, 0x70, + 0x70, 0x33, 0xc2, 0x2e, 0x6d, 0xd9, 0xa2, 0x5c, 0x88, 0x67, 0x3a, 0x79, 0xdf, 0xdd, 0xb5, 0x53, + 0x2e, 0x84, 0x2e, 0x91, 0x04, 0xc5, 0x74, 0x8e, 0xb2, 0x3a, 0x6f, 0xab, 0x9b, 0xfc, 0x87, 0x44, + 0x4f, 0x7f, 0x08, 0xc3, 0x8c, 0xb8, 0xc9, 0x5e, 0xaf, 0x27, 0x6e, 0x15, 0x77, 0xd4, 0xfd, 0x50, + 0xa9, 0x33, 0x19, 0x8a, 0x73, 0x0a, 0xd1, 0x6c, 0x55, 0xba, 0x24, 0xaa, 0xa7, 0x41, 0xb0, 0xbb, + 0x5b, 0xfe, 0xc8, 0x9d, 0x2a, 0x89, 0xbc, 0x05, 0xbb, 0x1b, 0x2b, 0x77, 0xaa, 0x97, 0xf0, 0x55, + 0x1f, 0xf3, 0x49, 0xf1, 0xe9, 0x93, 0x29, 0x5e, 0x92, 0xe8, 0x4b, 0xa5, 0x7c, 0x85, 0xe7, 0x6a, + 0x60, 0x51, 0x99, 0xcb, 0x5f, 0x39, 0x83, 0xd6, 0xfa, 0x6c, 0xd7, 0x5f, 0x6a, 0x9f, 0x1a, 0xe3, + 0x59, 0x89, 0x9d, 0xb9, 0x96, 0xcc, 0x24, 0xb6, 0x4b, 0xdb, 0x45, 0xee, 0x5a, 0xe2, 0x1b, 0x59, + 0x92, 0x01, 0xb5, 0x41, 0xb6, 0x15, 0xd6, 0x6f, 0xd1, 0xf7, 0x36, 0x07, 0x97, 0x72, 0xc1, 0x3f, + 0x51, 0x3b, 0xcd, 0x5a, 0xd7, 0x29, 0x8c, 0x32, 0xd2, 0x3b, 0x6a, 0x0c, 0xe4, 0x61, 0x7d, 0xc5, + 0x02, 0xa7, 0xac, 0xe0, 0x37, 0x9e, 0xa8, 0xc9, 0x4d, 0x92, 0x3c, 0x6d, 0xbb, 0x38, 0x23, 0x9e, + 0xa8, 0x77, 0x93, 0x3d, 0x55, 0x8d, 0x3b, 0x26, 0xd6, 0xae, 0xaa, 0xf7, 0xbf, 0x4e, 0x0e, 0x88, + 0x90, 0x47, 0x59, 0x31, 0xb2, 0x4e, 0x0e, 0x10, 0xa3, 0x0f, 0xff, 0x2e, 0x8a, 0xeb, 0x78, 0x64, + 0xfd, 0x5f, 0x4c, 0xb6, 0x8f, 0xaf, 0x9a, 0xa2, 0x01, 0x00 }; diff --git a/wled00/wled.h b/wled00/wled.h index 0a288a36..d1a42e40 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2107251 +#define VERSION 2107281 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG