__vite_ssr_exportName__("default", () => { try { return __vite_ssr_export_default__ } catch {} });
const __vite_ssr_import_0__ = await __vite_ssr_import__("/src/pixel_patrol_base/viewer/quality_metrics.js", {"importedNames":["QUALITY_METRIC_BASES","describeQualityMetric","qualityMetricRank"]});


const MAX_MARKER_POINTS = 300;

const lineMode = (n) => (n > MAX_MARKER_POINTS ? 'lines' : 'lines+markers');

const BASIC_METRIC_BASES = new Set([
  'mean_intensity', 'std_intensity', 'min_intensity', 'max_intensity',
]);

const COL_BG    = ['#ffffff', '#f4f6f9'];
const MIN_COL_PX = 180;  // min width per "Across 'X' slices" column in the grid

const RAGGED_INFO = 'The dashed line shows the **% of images that still have a ' +
  'slice at this position**, per condition - useful for spotting datasets where images have ' +
  'different numbers of slices.';

const BASIC_INFO = [
  'Shows how image statistics (e.g., mean, std, min, max) change **across different dimension slices**.',
  '', 'Useful for identifying drift, artifacts, or unexpected variation.',
  '', RAGGED_INFO,
].join('\n');

const QUALITY_INFO = [
  'Shows how **image quality metrics** change across different dimension slices.',
  '', 'Useful to detect e.g. drift in focus or noise over time (T) and depth (Z) as well as channel (C) specific artifacts.',
  '', 'The dashed line shows the **% of images that still have a slice at this position**, per condition.',
].join('\n');

// X and Y are spatial tile coordinates. When querying non-spatial dims we
// exclude tile rows (which carry dim_x/dim_y alongside dim_c etc.) so that
// only the clean per-slice aggregated rows are scanned - the main speedup.
const SPATIAL_LETTERS = new Set(['x', 'y']);

async function renderAcrossDims(container, ctx, filterMetric) {
  const renderStartMs = performance.now();
  const { q, groupCol: gcFn } = ctx.sql;
  const { append: appendPlot, niceName, escapeHtml, LAYOUT } = ctx.plot;

  const metrics = (ctx.schema.metricCols ?? []).filter(filterMetric)
    .sort((a, b) => (0,__vite_ssr_import_0__.qualityMetricRank)(a) - (0,__vite_ssr_import_0__.qualityMetricRank)(b));
  const activeDims = ctx.state.dimensions ?? {};
  const dimLetters = Object.keys(ctx.schema.dimensionInfo ?? {})
    .filter(letter => activeDims[letter] === undefined)
    .sort();
  if (!metrics.length || !dimLetters.length) {
    container.innerHTML = '<div class="no-data">No dimension slices found with the current filter.</div>';
    return;
  };

  const fixed = Object.fromEntries(
    Object.entries(activeDims).map(([l, i]) => [l, Number(i)]).filter(([, i]) => Number.isFinite(i)));
  const dimAggMap = await fetchDimAggregates(ctx, metrics, dimLetters, fixed);

  const dimLettersVisible = dimLetters.filter(letter =>
    dimAggMap[letter] && metrics.some(m => (dimAggMap[letter][m] ?? []).some(r => Number.isFinite(r.x))));
  if (!dimLettersVisible.length) {
    container.innerHTML = '<div class="no-data">No dimension slices found with plottable data for the current filter.</div>';
    return;
  };

  appendRetentionLegend(container, ctx);
  const metricSelect = appendMetricSelect(container, ctx, metrics);
  const tableHost = document.createElement('div');
  container.appendChild(tableHost);

  const grid = { metrics, dimLettersVisible, dimAggMap, layout: buildStatsLayout(ctx) };
  const draw = (metric) => renderMetricGrid(tableHost, ctx, grid, metric);
  metricSelect.addEventListener('change', () => draw(metricSelect.value || metrics[0]));
  const initialPlots = draw('__all__');

  console.info(`[stats-across-dims] total_render_ms=${(performance.now() - renderStartMs).toFixed(1)} ` +
    `metrics=${metrics.length} dims_visible=${dimLettersVisible.length} initial_plots=${initialPlots}`);
}

// Mean/std/count of every metric per (group, slice index), for each varying dim.
// Returns dimAggMap[letter][metric] = [{ __group__, x, y_mean, y_std, n }].
async function fetchDimAggregates(ctx, metrics, dimLetters, fixed) {
  const { q, groupCol: gcFn } = ctx.sql;
  const gcExpr = gcFn();
  const dimAggMap = {};
  for (const varyingLetter of dimLetters) {
    const t0 = performance.now();
    // Vary one dim, fix the rest, require every other dim NULL so we don't pool
    // values from different aggregated row classes (tile rows, x/y strips, …).
    // Spatial strips (x/y) span files with mixed dim_orders, so obs_level is
    // unreliable there - omit it and rely on the NULL constraints alone.
    const whereParts = ctx.sql.dimSubsetWhere({
      fixed, split: new Set([varyingLetter]),
      obsLevel: SPATIAL_LETTERS.has(varyingLetter) ? null : undefined,
    });
    const aggExprs = metrics.flatMap((m, i) => {
      const mq = q(m);
      return [`AVG(${mq}) AS m_${i}`, `COALESCE(STDDEV_SAMP(${mq}), 0) AS s_${i}`, `COUNT(${mq}) AS n_${i}`];
    }).join(', ');

    const rows = await ctx.queryRows(`
      SELECT ${gcExpr} AS __group__, ${q(`dim_${varyingLetter}`)} AS x, ${aggExprs}
      FROM pp_all WHERE ${whereParts.join(' AND ')}
      GROUP BY 1, 2 ORDER BY 2
    `);
    dimAggMap[varyingLetter] = pivotDimRows(rows, metrics);
    console.info(`[stats-across-dims] dim=${varyingLetter} query_ms=${(performance.now() - t0).toFixed(1)} rows=${rows.length}`);
  };
  return dimAggMap;
}

// Wide m_i/s_i/n_i columns → per-metric point lists, dropping empty (n=0) cells.
function pivotDimRows(rows, metrics) {
  const byMetric = Object.fromEntries(metrics.map(m => [m, []]));
  for (const r of rows) {
    const x = Number(r.x);
    if (!Number.isFinite(x)) continue;
    const group = String(r.__group__);
    metrics.forEach((m, i) => {
      const n = Number(r[`n_${i}`] ?? 0);
      if (n > 0) byMetric[m].push({ __group__: group, x, y_mean: Number(r[`m_${i}`] ?? 0), y_std: Number(r[`s_${i}`] ?? 0), n });
    });
  };
  return byMetric;
}

// Shared legend above the grid: group color chips + the dashed retention line.
function appendRetentionLegend(container, ctx) {
  const { escapeHtml } = ctx.plot;
  const legend = document.createElement('div');
  legend.style.cssText = 'display:flex;flex-wrap:wrap;gap:12px;margin-bottom:10px;font-size:0.85rem;align-items:center';
  if (ctx.groups.length > 1) {
    for (const g of ctx.groups) {
      const item = document.createElement('span');
      item.style.cssText = 'display:flex;align-items:center;gap:5px';
      item.innerHTML = `<span style="display:inline-block;width:12px;height:3px;border-radius:2px;background:${ctx.color.group(g)}"></span>${escapeHtml(String(g))}`;
      legend.appendChild(item);
    }
  };
  const dash = document.createElement('span');
  dash.style.cssText = 'display:flex;align-items:center;gap:5px;color:#6c757d';
  dash.innerHTML = '<span style="display:inline-block;width:16px;height:0;border-top:1px dashed #6c757d"></span>'
    + '% of images with this slice';
  legend.appendChild(dash);
  container.appendChild(legend);
}

// The "Metric:" dropdown (with an "All metrics" option); returns the <select>.
function appendMetricSelect(container, ctx, metrics) {
  const { escapeHtml, niceName } = ctx.plot;
  const controls = document.createElement('div');
  controls.style.cssText = 'display:flex;align-items:center;gap:8px;margin:6px 0 10px 0';
  controls.innerHTML = `
    <label for="stats-across-metric" style="font-weight:600;font-size:0.9rem;margin:0">Metric:</label>
    <select id="stats-across-metric" class="form-select form-select-sm" style="width:auto;min-width:220px">
      ${metrics.map(m => `<option value="${escapeHtml(m)}">${escapeHtml(niceName(m))}</option>`).join('')}
      <option value="__all__" selected>All metrics</option>
    </select>
  `;
  container.appendChild(controls);
  return controls.querySelector('#stats-across-metric');
}

// Plot layout shared by every cell in the grid (clean framed axes, no legend).
function buildStatsLayout(ctx) {
  return {
    ...ctx.plot.LAYOUT,
    showlegend: false,
    xaxis: { showgrid: false, zeroline: false, showline: true, mirror: true, ticks: 'outside', title: null, tickmode: 'auto', nticks: 8, tickformat: 'd' },
    yaxis: { showgrid: false, zeroline: false, showline: true, mirror: true, ticks: 'outside', title: null },
  };
}

// Build the dimension × metric table of mini scatter plots; returns the plot count.
function renderMetricGrid(tableHost, ctx, { metrics, dimLettersVisible, dimAggMap, layout }, selected) {
  const { niceName, escapeHtml } = ctx.plot;
  tableHost.innerHTML = '';
  const metricsToRender = selected === '__all__' ? metrics : [selected];
  const plotJobs = [];

  const tableWrap = document.createElement('div');
  tableWrap.className = 'across-dims-wrap';
  tableWrap.style.overflowX = 'auto';
  if (dimLettersVisible.length === 1) {
    const letter = dimLettersVisible[0];
    const xCount = Math.max(...metrics.map(m => new Set((dimAggMap[letter]?.[m] ?? []).map(r => r.x)).size));
    tableWrap.style.maxWidth = `clamp(25%, ${xCount * 3}%, 100%)`;
  };
  const table = document.createElement('table');
  table.style.cssText = `border-collapse:collapse;table-layout:fixed;width:100%;min-width:${dimLettersVisible.length * MIN_COL_PX}px`;

  const hRow = table.createTHead().insertRow();
  dimLettersVisible.forEach((letter, ci) => {
    const th = document.createElement('th');
    th.style.cssText = `padding:8px 12px;text-align:left;border-bottom:2px solid #dee2e6;font-weight:600;background:${COL_BG[ci % 2]};${ci > 0 ? 'border-left:1px solid #dee2e6;' : ''}`;
    th.textContent = `Across '${letter.toUpperCase()}' slices`;
    hRow.appendChild(th);
  });

  const tbody = table.createTBody();
  for (const metric of metricsToRender) {
    const titleCell = tbody.insertRow().insertCell();
    titleCell.colSpan = dimLettersVisible.length;
    titleCell.style.cssText = 'font-weight:500;font-size:0.95rem;color:#343a40;padding:5px 10px;border-top:1px solid #e9ecef;background:#f8f9fa';
    const metricInfo = ctx.state.showInfo ? (0,__vite_ssr_import_0__.describeQualityMetric)(metric) : null;
    titleCell.innerHTML = escapeHtml(niceName(metric))
      + (metricInfo ? ` <span class="plot-side-info-inline">${escapeHtml(metricInfo.desc)}</span>` : '');

    const plotRow = tbody.insertRow();
    dimLettersVisible.forEach((letter, ci) => {
      const cell = plotRow.insertCell();
      cell.style.cssText = `padding:4px;vertical-align:top;background:${COL_BG[ci % 2]};${ci > 0 ? 'border-left:1px solid #dee2e6;' : ''}`;
      const rows = (dimAggMap[letter]?.[metric] ?? []).filter(r => Number.isFinite(r.x));
      if (!rows.length) { cell.innerHTML = '<div style="text-align:center;color:#6c757d;padding:15px">No data</div>'; return; };
      plotJobs.push({ cell, agg: rows });
    });
  };

  tableWrap.appendChild(table);
  tableHost.appendChild(tableWrap);
  for (const { cell, agg } of plotJobs) renderAggScatter(cell, agg, ctx, layout, ctx.plot.append);
  return plotJobs.length;
}

async function acrossDimsOverviewSummary(ctx) {
  try {
    const letters = Object.keys(ctx.schema.dimensionInfo ?? {})
      .map(l => l.toUpperCase())
      .sort();
    if (!letters.length) return null;
    return `Per-slice trend along <strong>${letters.join(', ')}</strong>.`;
  } catch { return null; }
}

// One simple "mean across slices" line plot - the single most representative
// metric, along the first non-spatial dimension that has data. Mirrors the
// non-spatial query path in renderAcrossDims, kept minimal for the tile preview.
async function acrossDimsOverviewPlot(ctx, container, filterMetric, metricPref) {
  const { q, groupCol: gcFn } = ctx.sql;
  const metrics = (ctx.schema.metricCols ?? []).filter(filterMetric);
  const metric  = metricPref.find(m => metrics.includes(m)) ?? metrics[0];
  if (!metric) return false;

  const activeDims = ctx.state.dimensions ?? {};
  const fixedDims  = Object.entries(activeDims).map(([l, i]) => [l, Number(i)]).filter(([, i]) => Number.isFinite(i));
  const letters    = Object.keys(ctx.schema.dimensionInfo ?? {})
    .filter(l => l !== 'x' && l !== 'y' && activeDims[l] === undefined)
    .sort();
  if (!letters.length) return false;

  const fixed     = Object.fromEntries(fixedDims);
  const gcExpr    = gcFn();

  for (const letter of letters) {
    const parts = ctx.sql.dimSubsetWhere({ fixed, split: new Set([letter]) });

    const rows = await ctx.queryRows(`
      SELECT ${gcExpr} AS __group__, ${q(`dim_${letter}`)} AS x,
             AVG(${q(metric)}) AS y, COALESCE(STDDEV_SAMP(${q(metric)}), 0) AS s,
             COUNT(${q(metric)}) AS n
      FROM pp_all WHERE ${parts.join(' AND ')}
      GROUP BY 1, 2 ORDER BY 2
    `);
    const valid = rows.filter(r => Number.isFinite(Number(r.x)) && Number(r.n) > 0);
    if (!valid.length) continue;

    const traces = [];
    for (const g of ctx.groups) {
      const gr = valid.filter(r => String(r.__group__) === g).sort((a, b) => Number(a.x) - Number(b.x));
      if (!gr.length) continue;
      const color = ctx.color.group(g);
      const xs = gr.map(r => Number(r.x));
      const ym = gr.map(r => Number(r.y));
      const ys = gr.map(r => Number(r.s ?? 0));
      traces.push(
        { type: 'scatter', mode: 'lines', x: xs, y: ym.map((m, i) => m + ys[i]),
          line: { width: 0 }, showlegend: false, hoverinfo: 'skip' },
        { type: 'scatter', mode: 'lines', x: xs, y: ym.map((m, i) => m - ys[i]),
          line: { width: 0 }, fill: 'tonexty', fillcolor: ctx.color.hexToRgba(color, 0.2),
          showlegend: false, hoverinfo: 'skip' },
        { type: 'scatter', mode: lineMode(xs.length), name: ctx.groupLabel(g), x: xs, y: ym,
          line: { color, width: 1.5 }, marker: { size: 3, color }, hoverinfo: 'skip' },
      );
    };
    if (!traces.length) continue;

    ctx.plot.appendMini(container, traces, {
      xaxis:  { title: `${letter.toUpperCase()} slice`, tickformat: 'd' },
      yaxis:  { title: ctx.plot.niceName(metric) },
      margin: { l: 52 },
    });
    return true;
  };
  return false;
}

function makeAcrossDimsPlugin(id, label, info, filterMetric, overviewMessage, metricPref = [], shortLabel, inputMetrics) {
  return {
    id, label, info, shortLabel, group: 'Dataset Stats', scope: 'slice', multiPlot: true,
    inputs: inputMetrics ? [...inputMetrics] : [],
    requires(schema) {
      return !!schema.hasDimSlices && schema.metricCols.some(filterMetric);
    },
    ...(overviewMessage ? { overviewMessage } : {}),
    async overviewPlot(container, ctx) {
      return acrossDimsOverviewPlot(ctx, container, filterMetric, metricPref);
    },
    async render(container, ctx) {
      try {
        await renderAcrossDims(container, ctx, filterMetric);
      } catch {
        container.innerHTML = '<div class="no-data">Failed to load data.</div>';
      }
    },
  };
}

const __vite_ssr_export_default__ = [
  makeAcrossDimsPlugin(
    'stats-across-dims-basic', 'Basic Statistics Across Dimensions', BASIC_INFO,
    base => BASIC_METRIC_BASES.has(base),
    ctx => acrossDimsOverviewSummary(ctx, { metricLabel: 'brightness statistics' }),
    ['mean_intensity'], 'Intensity across Slices', BASIC_METRIC_BASES,
  ),
  makeAcrossDimsPlugin(
    'stats-across-dims-quality', 'Quality Metrics Across Dimensions', QUALITY_INFO,
    base => __vite_ssr_import_0__.QUALITY_METRIC_BASES.has(base),
    ctx => acrossDimsOverviewSummary(ctx, { metricLabel: 'image quality metrics' }),
    ['laplacian_variance'], 'Quality across Slices', (0,__vite_ssr_import_0__.QUALITY_METRIC_BASES),
  ),
];

function renderAggScatter(container, agg, ctx, STATS_DIMS_LAYOUT, appendPlot) {
  const traces = [];
  const retentionTraces = [];
  for (const g of ctx.groups) {
    const gRows  = agg.filter(r => String(r.__group__) === g).sort((a, b) => a.x - b.x);
    if (!gRows.length) continue;
    const color  = ctx.color.group(g);
    const xVals  = gRows.map(r => r.x);
    const yMean  = gRows.map(r => r.y_mean);
    const yStd   = gRows.map(r => r.y_std ?? 0);
    const ns     = gRows.map(r => r.n);
    const nMax   = Math.max(...ns);
    const retention = ns.map(n => (n / nMax) * 100);
    const yUpper = yMean.map((m, i) => m + yStd[i]);
    const yLower = yMean.map((m, i) => m - yStd[i]);
    const sizes  = ns.map(n => Math.max(4, Math.min(12, 3 + 3 * Math.log10(Math.max(n, 1)))));
    const hover  = gRows.map((r, i) => `<b>${g}</b><br>Slice: ${r.x}<br>Mean: ${yMean[i].toFixed(3)}<br>Std: ${yStd[i].toFixed(3)}<br><b>n=${ns[i]}</b> (${retention[i].toFixed(0)}% of images)`);
    const rgba   = ctx.color.hexToRgba(color, 0.2);
    traces.push(
      { type:'scatter', x:xVals, y:yUpper, mode:'lines', line:{width:0}, showlegend:false, hoverinfo:'skip' },
      { type:'scatter', x:xVals, y:yLower, mode:'lines', line:{width:0}, fill:'tonexty', fillcolor:rgba, showlegend:false, hoverinfo:'skip' },
      { type:'scatter', mode:lineMode(xVals.length), name:ctx.groupLabel(g), x:xVals, y:yMean, line:{width:2, color}, marker:{size:sizes, color, line:{width:1, color:'white'}}, hovertemplate:'%{text}<extra></extra>', text:hover },
    );
    const retentionHover = gRows.map((r, i) =>
      `<b>${ctx.groupLabel(g)}</b><br>Slice: ${r.x}<br>${ns[i]} of ${nMax} images (${retention[i].toFixed(0)}%)`);
    retentionTraces.push({ x: xVals, y: retention, color, hover: retentionHover });
  };

  // "% of images" curve - shown on every plot (even when flat at 100%) so its
  // absence doesn't read as "no data for this slice".
  for (const rt of retentionTraces) {
    traces.push({
      type: 'scatter', mode: 'lines', x: rt.x, y: rt.y, yaxis: 'y2',
      line: { width: 1, dash: 'dash', shape: 'hv', color: rt.color },
      opacity: 0.7, showlegend: false,
      hovertemplate: '%{text}<extra></extra>', text: rt.hover,
    });
  };

  const allXVals = [...new Set(agg.map(r => r.x))].sort((a, b) => a - b);
  const xaxisOverride = allXVals.length <= 8 ? { tickmode: 'array', tickvals: allXVals } : {};
  const layout = {
    ...STATS_DIMS_LAYOUT,
    xaxis: { ...STATS_DIMS_LAYOUT.xaxis, ...xaxisOverride },
    margin: { l: 36, r: 34, t: 8, b: 28 },
    height: 140,
    // Range extends a bit past 100 so a flat 100% line doesn't sit flush on the plot border.
    yaxis2: {
      overlaying: 'y', side: 'right', range: [0, 105], ticksuffix: '%',
      showgrid: false, zeroline: false, showline: false, tickfont: { size: 9 },
    },
  };
  appendPlot(container, traces, layout);
}
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsdWdpbl9zdGF0c19hY3Jvc3NfZGltcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRVUFMSVRZX01FVFJJQ19CQVNFUywgZGVzY3JpYmVRdWFsaXR5TWV0cmljLCBxdWFsaXR5TWV0cmljUmFuayB9IGZyb20gJy4vcXVhbGl0eV9tZXRyaWNzLmpzJztcblxuY29uc3QgTUFYX01BUktFUl9QT0lOVFMgPSAzMDA7XG5cbmNvbnN0IGxpbmVNb2RlID0gKG4pID0+IChuID4gTUFYX01BUktFUl9QT0lOVFMgPyAnbGluZXMnIDogJ2xpbmVzK21hcmtlcnMnKTtcblxuY29uc3QgQkFTSUNfTUVUUklDX0JBU0VTID0gbmV3IFNldChbXG4gICdtZWFuX2ludGVuc2l0eScsICdzdGRfaW50ZW5zaXR5JywgJ21pbl9pbnRlbnNpdHknLCAnbWF4X2ludGVuc2l0eScsXG5dKTtcblxuY29uc3QgQ09MX0JHICAgID0gWycjZmZmZmZmJywgJyNmNGY2ZjknXTtcbmNvbnN0IE1JTl9DT0xfUFggPSAxODA7ICAvLyBtaW4gd2lkdGggcGVyIFwiQWNyb3NzICdYJyBzbGljZXNcIiBjb2x1bW4gaW4gdGhlIGdyaWRcblxuY29uc3QgUkFHR0VEX0lORk8gPSAnVGhlIGRhc2hlZCBsaW5lIHNob3dzIHRoZSAqKiUgb2YgaW1hZ2VzIHRoYXQgc3RpbGwgaGF2ZSBhICcgK1xuICAnc2xpY2UgYXQgdGhpcyBwb3NpdGlvbioqLCBwZXIgY29uZGl0aW9uIC0gdXNlZnVsIGZvciBzcG90dGluZyBkYXRhc2V0cyB3aGVyZSBpbWFnZXMgaGF2ZSAnICtcbiAgJ2RpZmZlcmVudCBudW1iZXJzIG9mIHNsaWNlcy4nO1xuXG5jb25zdCBCQVNJQ19JTkZPID0gW1xuICAnU2hvd3MgaG93IGltYWdlIHN0YXRpc3RpY3MgKGUuZy4sIG1lYW4sIHN0ZCwgbWluLCBtYXgpIGNoYW5nZSAqKmFjcm9zcyBkaWZmZXJlbnQgZGltZW5zaW9uIHNsaWNlcyoqLicsXG4gICcnLCAnVXNlZnVsIGZvciBpZGVudGlmeWluZyBkcmlmdCwgYXJ0aWZhY3RzLCBvciB1bmV4cGVjdGVkIHZhcmlhdGlvbi4nLFxuICAnJywgUkFHR0VEX0lORk8sXG5dLmpvaW4oJ1xcbicpO1xuXG5jb25zdCBRVUFMSVRZX0lORk8gPSBbXG4gICdTaG93cyBob3cgKippbWFnZSBxdWFsaXR5IG1ldHJpY3MqKiBjaGFuZ2UgYWNyb3NzIGRpZmZlcmVudCBkaW1lbnNpb24gc2xpY2VzLicsXG4gICcnLCAnVXNlZnVsIHRvIGRldGVjdCBlLmcuIGRyaWZ0IGluIGZvY3VzIG9yIG5vaXNlIG92ZXIgdGltZSAoVCkgYW5kIGRlcHRoIChaKSBhcyB3ZWxsIGFzIGNoYW5uZWwgKEMpIHNwZWNpZmljIGFydGlmYWN0cy4nLFxuICAnJywgJ1RoZSBkYXNoZWQgbGluZSBzaG93cyB0aGUgKiolIG9mIGltYWdlcyB0aGF0IHN0aWxsIGhhdmUgYSBzbGljZSBhdCB0aGlzIHBvc2l0aW9uKiosIHBlciBjb25kaXRpb24uJyxcbl0uam9pbignXFxuJyk7XG5cbi8vIFggYW5kIFkgYXJlIHNwYXRpYWwgdGlsZSBjb29yZGluYXRlcy4gV2hlbiBxdWVyeWluZyBub24tc3BhdGlhbCBkaW1zIHdlXG4vLyBleGNsdWRlIHRpbGUgcm93cyAod2hpY2ggY2FycnkgZGltX3gvZGltX3kgYWxvbmdzaWRlIGRpbV9jIGV0Yy4pIHNvIHRoYXRcbi8vIG9ubHkgdGhlIGNsZWFuIHBlci1zbGljZSBhZ2dyZWdhdGVkIHJvd3MgYXJlIHNjYW5uZWQgLSB0aGUgbWFpbiBzcGVlZHVwLlxuY29uc3QgU1BBVElBTF9MRVRURVJTID0gbmV3IFNldChbJ3gnLCAneSddKTtcblxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyQWNyb3NzRGltcyhjb250YWluZXIsIGN0eCwgZmlsdGVyTWV0cmljKSB7XG4gIGNvbnN0IHJlbmRlclN0YXJ0TXMgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgY29uc3QgeyBxLCBncm91cENvbDogZ2NGbiB9ID0gY3R4LnNxbDtcbiAgY29uc3QgeyBhcHBlbmQ6IGFwcGVuZFBsb3QsIG5pY2VOYW1lLCBlc2NhcGVIdG1sLCBMQVlPVVQgfSA9IGN0eC5wbG90O1xuXG4gIGNvbnN0IG1ldHJpY3MgPSAoY3R4LnNjaGVtYS5tZXRyaWNDb2xzID8/IFtdKS5maWx0ZXIoZmlsdGVyTWV0cmljKVxuICAgIC5zb3J0KChhLCBiKSA9PiBxdWFsaXR5TWV0cmljUmFuayhhKSAtIHF1YWxpdHlNZXRyaWNSYW5rKGIpKTtcbiAgY29uc3QgYWN0aXZlRGltcyA9IGN0eC5zdGF0ZS5kaW1lbnNpb25zID8/IHt9O1xuICBjb25zdCBkaW1MZXR0ZXJzID0gT2JqZWN0LmtleXMoY3R4LnNjaGVtYS5kaW1lbnNpb25JbmZvID8/IHt9KVxuICAgIC5maWx0ZXIobGV0dGVyID0+IGFjdGl2ZURpbXNbbGV0dGVyXSA9PT0gdW5kZWZpbmVkKVxuICAgIC5zb3J0KCk7XG4gIGlmICghbWV0cmljcy5sZW5ndGggfHwgIWRpbUxldHRlcnMubGVuZ3RoKSB7XG4gICAgY29udGFpbmVyLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPVwibm8tZGF0YVwiPk5vIGRpbWVuc2lvbiBzbGljZXMgZm91bmQgd2l0aCB0aGUgY3VycmVudCBmaWx0ZXIuPC9kaXY+JztcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBmaXhlZCA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhhY3RpdmVEaW1zKS5tYXAoKFtsLCBpXSkgPT4gW2wsIE51bWJlcihpKV0pLmZpbHRlcigoWywgaV0pID0+IE51bWJlci5pc0Zpbml0ZShpKSkpO1xuICBjb25zdCBkaW1BZ2dNYXAgPSBhd2FpdCBmZXRjaERpbUFnZ3JlZ2F0ZXMoY3R4LCBtZXRyaWNzLCBkaW1MZXR0ZXJzLCBmaXhlZCk7XG5cbiAgY29uc3QgZGltTGV0dGVyc1Zpc2libGUgPSBkaW1MZXR0ZXJzLmZpbHRlcihsZXR0ZXIgPT5cbiAgICBkaW1BZ2dNYXBbbGV0dGVyXSAmJiBtZXRyaWNzLnNvbWUobSA9PiAoZGltQWdnTWFwW2xldHRlcl1bbV0gPz8gW10pLnNvbWUociA9PiBOdW1iZXIuaXNGaW5pdGUoci54KSkpKTtcbiAgaWYgKCFkaW1MZXR0ZXJzVmlzaWJsZS5sZW5ndGgpIHtcbiAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJuby1kYXRhXCI+Tm8gZGltZW5zaW9uIHNsaWNlcyBmb3VuZCB3aXRoIHBsb3R0YWJsZSBkYXRhIGZvciB0aGUgY3VycmVudCBmaWx0ZXIuPC9kaXY+JztcbiAgICByZXR1cm47XG4gIH1cblxuICBhcHBlbmRSZXRlbnRpb25MZWdlbmQoY29udGFpbmVyLCBjdHgpO1xuICBjb25zdCBtZXRyaWNTZWxlY3QgPSBhcHBlbmRNZXRyaWNTZWxlY3QoY29udGFpbmVyLCBjdHgsIG1ldHJpY3MpO1xuICBjb25zdCB0YWJsZUhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRhYmxlSG9zdCk7XG5cbiAgY29uc3QgZ3JpZCA9IHsgbWV0cmljcywgZGltTGV0dGVyc1Zpc2libGUsIGRpbUFnZ01hcCwgbGF5b3V0OiBidWlsZFN0YXRzTGF5b3V0KGN0eCkgfTtcbiAgY29uc3QgZHJhdyA9IChtZXRyaWMpID0+IHJlbmRlck1ldHJpY0dyaWQodGFibGVIb3N0LCBjdHgsIGdyaWQsIG1ldHJpYyk7XG4gIG1ldHJpY1NlbGVjdC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiBkcmF3KG1ldHJpY1NlbGVjdC52YWx1ZSB8fCBtZXRyaWNzWzBdKSk7XG4gIGNvbnN0IGluaXRpYWxQbG90cyA9IGRyYXcoJ19fYWxsX18nKTtcblxuICBjb25zb2xlLmluZm8oYFtzdGF0cy1hY3Jvc3MtZGltc10gdG90YWxfcmVuZGVyX21zPSR7KHBlcmZvcm1hbmNlLm5vdygpIC0gcmVuZGVyU3RhcnRNcykudG9GaXhlZCgxKX0gYCArXG4gICAgYG1ldHJpY3M9JHttZXRyaWNzLmxlbmd0aH0gZGltc192aXNpYmxlPSR7ZGltTGV0dGVyc1Zpc2libGUubGVuZ3RofSBpbml0aWFsX3Bsb3RzPSR7aW5pdGlhbFBsb3RzfWApO1xufVxuXG4vLyBNZWFuL3N0ZC9jb3VudCBvZiBldmVyeSBtZXRyaWMgcGVyIChncm91cCwgc2xpY2UgaW5kZXgpLCBmb3IgZWFjaCB2YXJ5aW5nIGRpbS5cbi8vIFJldHVybnMgZGltQWdnTWFwW2xldHRlcl1bbWV0cmljXSA9IFt7IF9fZ3JvdXBfXywgeCwgeV9tZWFuLCB5X3N0ZCwgbiB9XS5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoRGltQWdncmVnYXRlcyhjdHgsIG1ldHJpY3MsIGRpbUxldHRlcnMsIGZpeGVkKSB7XG4gIGNvbnN0IHsgcSwgZ3JvdXBDb2w6IGdjRm4gfSA9IGN0eC5zcWw7XG4gIGNvbnN0IGdjRXhwciA9IGdjRm4oKTtcbiAgY29uc3QgZGltQWdnTWFwID0ge307XG4gIGZvciAoY29uc3QgdmFyeWluZ0xldHRlciBvZiBkaW1MZXR0ZXJzKSB7XG4gICAgY29uc3QgdDAgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICAvLyBWYXJ5IG9uZSBkaW0sIGZpeCB0aGUgcmVzdCwgcmVxdWlyZSBldmVyeSBvdGhlciBkaW0gTlVMTCBzbyB3ZSBkb24ndCBwb29sXG4gICAgLy8gdmFsdWVzIGZyb20gZGlmZmVyZW50IGFnZ3JlZ2F0ZWQgcm93IGNsYXNzZXMgKHRpbGUgcm93cywgeC95IHN0cmlwcywg4oCmKS5cbiAgICAvLyBTcGF0aWFsIHN0cmlwcyAoeC95KSBzcGFuIGZpbGVzIHdpdGggbWl4ZWQgZGltX29yZGVycywgc28gb2JzX2xldmVsIGlzXG4gICAgLy8gdW5yZWxpYWJsZSB0aGVyZSAtIG9taXQgaXQgYW5kIHJlbHkgb24gdGhlIE5VTEwgY29uc3RyYWludHMgYWxvbmUuXG4gICAgY29uc3Qgd2hlcmVQYXJ0cyA9IGN0eC5zcWwuZGltU3Vic2V0V2hlcmUoe1xuICAgICAgZml4ZWQsIHNwbGl0OiBuZXcgU2V0KFt2YXJ5aW5nTGV0dGVyXSksXG4gICAgICBvYnNMZXZlbDogU1BBVElBTF9MRVRURVJTLmhhcyh2YXJ5aW5nTGV0dGVyKSA/IG51bGwgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gICAgY29uc3QgYWdnRXhwcnMgPSBtZXRyaWNzLmZsYXRNYXAoKG0sIGkpID0+IHtcbiAgICAgIGNvbnN0IG1xID0gcShtKTtcbiAgICAgIHJldHVybiBbYEFWRygke21xfSkgQVMgbV8ke2l9YCwgYENPQUxFU0NFKFNURERFVl9TQU1QKCR7bXF9KSwgMCkgQVMgc18ke2l9YCwgYENPVU5UKCR7bXF9KSBBUyBuXyR7aX1gXTtcbiAgICB9KS5qb2luKCcsICcpO1xuXG4gICAgY29uc3Qgcm93cyA9IGF3YWl0IGN0eC5xdWVyeVJvd3MoYFxuICAgICAgU0VMRUNUICR7Z2NFeHByfSBBUyBfX2dyb3VwX18sICR7cShgZGltXyR7dmFyeWluZ0xldHRlcn1gKX0gQVMgeCwgJHthZ2dFeHByc31cbiAgICAgIEZST00gcHBfYWxsIFdIRVJFICR7d2hlcmVQYXJ0cy5qb2luKCcgQU5EICcpfVxuICAgICAgR1JPVVAgQlkgMSwgMiBPUkRFUiBCWSAyXG4gICAgYCk7XG4gICAgZGltQWdnTWFwW3ZhcnlpbmdMZXR0ZXJdID0gcGl2b3REaW1Sb3dzKHJvd3MsIG1ldHJpY3MpO1xuICAgIGNvbnNvbGUuaW5mbyhgW3N0YXRzLWFjcm9zcy1kaW1zXSBkaW09JHt2YXJ5aW5nTGV0dGVyfSBxdWVyeV9tcz0keyhwZXJmb3JtYW5jZS5ub3coKSAtIHQwKS50b0ZpeGVkKDEpfSByb3dzPSR7cm93cy5sZW5ndGh9YCk7XG4gIH1cbiAgcmV0dXJuIGRpbUFnZ01hcDtcbn1cblxuLy8gV2lkZSBtX2kvc19pL25faSBjb2x1bW5zIOKGkiBwZXItbWV0cmljIHBvaW50IGxpc3RzLCBkcm9wcGluZyBlbXB0eSAobj0wKSBjZWxscy5cbmZ1bmN0aW9uIHBpdm90RGltUm93cyhyb3dzLCBtZXRyaWNzKSB7XG4gIGNvbnN0IGJ5TWV0cmljID0gT2JqZWN0LmZyb21FbnRyaWVzKG1ldHJpY3MubWFwKG0gPT4gW20sIFtdXSkpO1xuICBmb3IgKGNvbnN0IHIgb2Ygcm93cykge1xuICAgIGNvbnN0IHggPSBOdW1iZXIoci54KTtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZSh4KSkgY29udGludWU7XG4gICAgY29uc3QgZ3JvdXAgPSBTdHJpbmcoci5fX2dyb3VwX18pO1xuICAgIG1ldHJpY3MuZm9yRWFjaCgobSwgaSkgPT4ge1xuICAgICAgY29uc3QgbiA9IE51bWJlcihyW2BuXyR7aX1gXSA/PyAwKTtcbiAgICAgIGlmIChuID4gMCkgYnlNZXRyaWNbbV0ucHVzaCh7IF9fZ3JvdXBfXzogZ3JvdXAsIHgsIHlfbWVhbjogTnVtYmVyKHJbYG1fJHtpfWBdID8/IDApLCB5X3N0ZDogTnVtYmVyKHJbYHNfJHtpfWBdID8/IDApLCBuIH0pO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBieU1ldHJpYztcbn1cblxuLy8gU2hhcmVkIGxlZ2VuZCBhYm92ZSB0aGUgZ3JpZDogZ3JvdXAgY29sb3IgY2hpcHMgKyB0aGUgZGFzaGVkIHJldGVudGlvbiBsaW5lLlxuZnVuY3Rpb24gYXBwZW5kUmV0ZW50aW9uTGVnZW5kKGNvbnRhaW5lciwgY3R4KSB7XG4gIGNvbnN0IHsgZXNjYXBlSHRtbCB9ID0gY3R4LnBsb3Q7XG4gIGNvbnN0IGxlZ2VuZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBsZWdlbmQuc3R5bGUuY3NzVGV4dCA9ICdkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjEycHg7bWFyZ2luLWJvdHRvbToxMHB4O2ZvbnQtc2l6ZTowLjg1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcic7XG4gIGlmIChjdHguZ3JvdXBzLmxlbmd0aCA+IDEpIHtcbiAgICBmb3IgKGNvbnN0IGcgb2YgY3R4Lmdyb3Vwcykge1xuICAgICAgY29uc3QgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIGl0ZW0uc3R5bGUuY3NzVGV4dCA9ICdkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo1cHgnO1xuICAgICAgaXRlbS5pbm5lckhUTUwgPSBgPHNwYW4gc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMnB4O2hlaWdodDozcHg7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZDoke2N0eC5jb2xvci5ncm91cChnKX1cIj48L3NwYW4+JHtlc2NhcGVIdG1sKFN0cmluZyhnKSl9YDtcbiAgICAgIGxlZ2VuZC5hcHBlbmRDaGlsZChpdGVtKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgZGFzaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgZGFzaC5zdHlsZS5jc3NUZXh0ID0gJ2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjVweDtjb2xvcjojNmM3NTdkJztcbiAgZGFzaC5pbm5lckhUTUwgPSAnPHNwYW4gc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxNnB4O2hlaWdodDowO2JvcmRlci10b3A6MXB4IGRhc2hlZCAjNmM3NTdkXCI+PC9zcGFuPidcbiAgICArICclIG9mIGltYWdlcyB3aXRoIHRoaXMgc2xpY2UnO1xuICBsZWdlbmQuYXBwZW5kQ2hpbGQoZGFzaCk7XG4gIGNvbnRhaW5lci5hcHBlbmRDaGlsZChsZWdlbmQpO1xufVxuXG4vLyBUaGUgXCJNZXRyaWM6XCIgZHJvcGRvd24gKHdpdGggYW4gXCJBbGwgbWV0cmljc1wiIG9wdGlvbik7IHJldHVybnMgdGhlIDxzZWxlY3Q+LlxuZnVuY3Rpb24gYXBwZW5kTWV0cmljU2VsZWN0KGNvbnRhaW5lciwgY3R4LCBtZXRyaWNzKSB7XG4gIGNvbnN0IHsgZXNjYXBlSHRtbCwgbmljZU5hbWUgfSA9IGN0eC5wbG90O1xuICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0gJ2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDttYXJnaW46NnB4IDAgMTBweCAwJztcbiAgY29udHJvbHMuaW5uZXJIVE1MID0gYFxuICAgIDxsYWJlbCBmb3I9XCJzdGF0cy1hY3Jvc3MtbWV0cmljXCIgc3R5bGU9XCJmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjAuOXJlbTttYXJnaW46MFwiPk1ldHJpYzo8L2xhYmVsPlxuICAgIDxzZWxlY3QgaWQ9XCJzdGF0cy1hY3Jvc3MtbWV0cmljXCIgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiIHN0eWxlPVwid2lkdGg6YXV0bzttaW4td2lkdGg6MjIwcHhcIj5cbiAgICAgICR7bWV0cmljcy5tYXAobSA9PiBgPG9wdGlvbiB2YWx1ZT1cIiR7ZXNjYXBlSHRtbChtKX1cIj4ke2VzY2FwZUh0bWwobmljZU5hbWUobSkpfTwvb3B0aW9uPmApLmpvaW4oJycpfVxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIl9fYWxsX19cIiBzZWxlY3RlZD5BbGwgbWV0cmljczwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICBgO1xuICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY29udHJvbHMpO1xuICByZXR1cm4gY29udHJvbHMucXVlcnlTZWxlY3RvcignI3N0YXRzLWFjcm9zcy1tZXRyaWMnKTtcbn1cblxuLy8gUGxvdCBsYXlvdXQgc2hhcmVkIGJ5IGV2ZXJ5IGNlbGwgaW4gdGhlIGdyaWQgKGNsZWFuIGZyYW1lZCBheGVzLCBubyBsZWdlbmQpLlxuZnVuY3Rpb24gYnVpbGRTdGF0c0xheW91dChjdHgpIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5jdHgucGxvdC5MQVlPVVQsXG4gICAgc2hvd2xlZ2VuZDogZmFsc2UsXG4gICAgeGF4aXM6IHsgc2hvd2dyaWQ6IGZhbHNlLCB6ZXJvbGluZTogZmFsc2UsIHNob3dsaW5lOiB0cnVlLCBtaXJyb3I6IHRydWUsIHRpY2tzOiAnb3V0c2lkZScsIHRpdGxlOiBudWxsLCB0aWNrbW9kZTogJ2F1dG8nLCBudGlja3M6IDgsIHRpY2tmb3JtYXQ6ICdkJyB9LFxuICAgIHlheGlzOiB7IHNob3dncmlkOiBmYWxzZSwgemVyb2xpbmU6IGZhbHNlLCBzaG93bGluZTogdHJ1ZSwgbWlycm9yOiB0cnVlLCB0aWNrczogJ291dHNpZGUnLCB0aXRsZTogbnVsbCB9LFxuICB9O1xufVxuXG4vLyBCdWlsZCB0aGUgZGltZW5zaW9uIMOXIG1ldHJpYyB0YWJsZSBvZiBtaW5pIHNjYXR0ZXIgcGxvdHM7IHJldHVybnMgdGhlIHBsb3QgY291bnQuXG5mdW5jdGlvbiByZW5kZXJNZXRyaWNHcmlkKHRhYmxlSG9zdCwgY3R4LCB7IG1ldHJpY3MsIGRpbUxldHRlcnNWaXNpYmxlLCBkaW1BZ2dNYXAsIGxheW91dCB9LCBzZWxlY3RlZCkge1xuICBjb25zdCB7IG5pY2VOYW1lLCBlc2NhcGVIdG1sIH0gPSBjdHgucGxvdDtcbiAgdGFibGVIb3N0LmlubmVySFRNTCA9ICcnO1xuICBjb25zdCBtZXRyaWNzVG9SZW5kZXIgPSBzZWxlY3RlZCA9PT0gJ19fYWxsX18nID8gbWV0cmljcyA6IFtzZWxlY3RlZF07XG4gIGNvbnN0IHBsb3RKb2JzID0gW107XG5cbiAgY29uc3QgdGFibGVXcmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHRhYmxlV3JhcC5jbGFzc05hbWUgPSAnYWNyb3NzLWRpbXMtd3JhcCc7XG4gIHRhYmxlV3JhcC5zdHlsZS5vdmVyZmxvd1ggPSAnYXV0byc7XG4gIGlmIChkaW1MZXR0ZXJzVmlzaWJsZS5sZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCBsZXR0ZXIgPSBkaW1MZXR0ZXJzVmlzaWJsZVswXTtcbiAgICBjb25zdCB4Q291bnQgPSBNYXRoLm1heCguLi5tZXRyaWNzLm1hcChtID0+IG5ldyBTZXQoKGRpbUFnZ01hcFtsZXR0ZXJdPy5bbV0gPz8gW10pLm1hcChyID0+IHIueCkpLnNpemUpKTtcbiAgICB0YWJsZVdyYXAuc3R5bGUubWF4V2lkdGggPSBgY2xhbXAoMjUlLCAke3hDb3VudCAqIDN9JSwgMTAwJSlgO1xuICB9XG4gIGNvbnN0IHRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcbiAgdGFibGUuc3R5bGUuY3NzVGV4dCA9IGBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7dGFibGUtbGF5b3V0OmZpeGVkO3dpZHRoOjEwMCU7bWluLXdpZHRoOiR7ZGltTGV0dGVyc1Zpc2libGUubGVuZ3RoICogTUlOX0NPTF9QWH1weGA7XG5cbiAgY29uc3QgaFJvdyA9IHRhYmxlLmNyZWF0ZVRIZWFkKCkuaW5zZXJ0Um93KCk7XG4gIGRpbUxldHRlcnNWaXNpYmxlLmZvckVhY2goKGxldHRlciwgY2kpID0+IHtcbiAgICBjb25zdCB0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RoJyk7XG4gICAgdGguc3R5bGUuY3NzVGV4dCA9IGBwYWRkaW5nOjhweCAxMnB4O3RleHQtYWxpZ246bGVmdDtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjZGVlMmU2O2ZvbnQtd2VpZ2h0OjYwMDtiYWNrZ3JvdW5kOiR7Q09MX0JHW2NpICUgMl19OyR7Y2kgPiAwID8gJ2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGVlMmU2OycgOiAnJ31gO1xuICAgIHRoLnRleHRDb250ZW50ID0gYEFjcm9zcyAnJHtsZXR0ZXIudG9VcHBlckNhc2UoKX0nIHNsaWNlc2A7XG4gICAgaFJvdy5hcHBlbmRDaGlsZCh0aCk7XG4gIH0pO1xuXG4gIGNvbnN0IHRib2R5ID0gdGFibGUuY3JlYXRlVEJvZHkoKTtcbiAgZm9yIChjb25zdCBtZXRyaWMgb2YgbWV0cmljc1RvUmVuZGVyKSB7XG4gICAgY29uc3QgdGl0bGVDZWxsID0gdGJvZHkuaW5zZXJ0Um93KCkuaW5zZXJ0Q2VsbCgpO1xuICAgIHRpdGxlQ2VsbC5jb2xTcGFuID0gZGltTGV0dGVyc1Zpc2libGUubGVuZ3RoO1xuICAgIHRpdGxlQ2VsbC5zdHlsZS5jc3NUZXh0ID0gJ2ZvbnQtd2VpZ2h0OjUwMDtmb250LXNpemU6MC45NXJlbTtjb2xvcjojMzQzYTQwO3BhZGRpbmc6NXB4IDEwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U5ZWNlZjtiYWNrZ3JvdW5kOiNmOGY5ZmEnO1xuICAgIGNvbnN0IG1ldHJpY0luZm8gPSBjdHguc3RhdGUuc2hvd0luZm8gPyBkZXNjcmliZVF1YWxpdHlNZXRyaWMobWV0cmljKSA6IG51bGw7XG4gICAgdGl0bGVDZWxsLmlubmVySFRNTCA9IGVzY2FwZUh0bWwobmljZU5hbWUobWV0cmljKSlcbiAgICAgICsgKG1ldHJpY0luZm8gPyBgIDxzcGFuIGNsYXNzPVwicGxvdC1zaWRlLWluZm8taW5saW5lXCI+JHtlc2NhcGVIdG1sKG1ldHJpY0luZm8uZGVzYyl9PC9zcGFuPmAgOiAnJyk7XG5cbiAgICBjb25zdCBwbG90Um93ID0gdGJvZHkuaW5zZXJ0Um93KCk7XG4gICAgZGltTGV0dGVyc1Zpc2libGUuZm9yRWFjaCgobGV0dGVyLCBjaSkgPT4ge1xuICAgICAgY29uc3QgY2VsbCA9IHBsb3RSb3cuaW5zZXJ0Q2VsbCgpO1xuICAgICAgY2VsbC5zdHlsZS5jc3NUZXh0ID0gYHBhZGRpbmc6NHB4O3ZlcnRpY2FsLWFsaWduOnRvcDtiYWNrZ3JvdW5kOiR7Q09MX0JHW2NpICUgMl19OyR7Y2kgPiAwID8gJ2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGVlMmU2OycgOiAnJ31gO1xuICAgICAgY29uc3Qgcm93cyA9IChkaW1BZ2dNYXBbbGV0dGVyXT8uW21ldHJpY10gPz8gW10pLmZpbHRlcihyID0+IE51bWJlci5pc0Zpbml0ZShyLngpKTtcbiAgICAgIGlmICghcm93cy5sZW5ndGgpIHsgY2VsbC5pbm5lckhUTUwgPSAnPGRpdiBzdHlsZT1cInRleHQtYWxpZ246Y2VudGVyO2NvbG9yOiM2Yzc1N2Q7cGFkZGluZzoxNXB4XCI+Tm8gZGF0YTwvZGl2Pic7IHJldHVybjsgfVxuICAgICAgcGxvdEpvYnMucHVzaCh7IGNlbGwsIGFnZzogcm93cyB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHRhYmxlV3JhcC5hcHBlbmRDaGlsZCh0YWJsZSk7XG4gIHRhYmxlSG9zdC5hcHBlbmRDaGlsZCh0YWJsZVdyYXApO1xuICBmb3IgKGNvbnN0IHsgY2VsbCwgYWdnIH0gb2YgcGxvdEpvYnMpIHJlbmRlckFnZ1NjYXR0ZXIoY2VsbCwgYWdnLCBjdHgsIGxheW91dCwgY3R4LnBsb3QuYXBwZW5kKTtcbiAgcmV0dXJuIHBsb3RKb2JzLmxlbmd0aDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYWNyb3NzRGltc092ZXJ2aWV3U3VtbWFyeShjdHgpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBsZXR0ZXJzID0gT2JqZWN0LmtleXMoY3R4LnNjaGVtYS5kaW1lbnNpb25JbmZvID8/IHt9KVxuICAgICAgLm1hcChsID0+IGwudG9VcHBlckNhc2UoKSlcbiAgICAgIC5zb3J0KCk7XG4gICAgaWYgKCFsZXR0ZXJzLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGBQZXItc2xpY2UgdHJlbmQgYWxvbmcgPHN0cm9uZz4ke2xldHRlcnMuam9pbignLCAnKX08L3N0cm9uZz4uYDtcbiAgfSBjYXRjaCB7IHJldHVybiBudWxsOyB9XG59XG5cbi8vIE9uZSBzaW1wbGUgXCJtZWFuIGFjcm9zcyBzbGljZXNcIiBsaW5lIHBsb3QgLSB0aGUgc2luZ2xlIG1vc3QgcmVwcmVzZW50YXRpdmVcbi8vIG1ldHJpYywgYWxvbmcgdGhlIGZpcnN0IG5vbi1zcGF0aWFsIGRpbWVuc2lvbiB0aGF0IGhhcyBkYXRhLiBNaXJyb3JzIHRoZVxuLy8gbm9uLXNwYXRpYWwgcXVlcnkgcGF0aCBpbiByZW5kZXJBY3Jvc3NEaW1zLCBrZXB0IG1pbmltYWwgZm9yIHRoZSB0aWxlIHByZXZpZXcuXG5hc3luYyBmdW5jdGlvbiBhY3Jvc3NEaW1zT3ZlcnZpZXdQbG90KGN0eCwgY29udGFpbmVyLCBmaWx0ZXJNZXRyaWMsIG1ldHJpY1ByZWYpIHtcbiAgY29uc3QgeyBxLCBncm91cENvbDogZ2NGbiB9ID0gY3R4LnNxbDtcbiAgY29uc3QgbWV0cmljcyA9IChjdHguc2NoZW1hLm1ldHJpY0NvbHMgPz8gW10pLmZpbHRlcihmaWx0ZXJNZXRyaWMpO1xuICBjb25zdCBtZXRyaWMgID0gbWV0cmljUHJlZi5maW5kKG0gPT4gbWV0cmljcy5pbmNsdWRlcyhtKSkgPz8gbWV0cmljc1swXTtcbiAgaWYgKCFtZXRyaWMpIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBhY3RpdmVEaW1zID0gY3R4LnN0YXRlLmRpbWVuc2lvbnMgPz8ge307XG4gIGNvbnN0IGZpeGVkRGltcyAgPSBPYmplY3QuZW50cmllcyhhY3RpdmVEaW1zKS5tYXAoKFtsLCBpXSkgPT4gW2wsIE51bWJlcihpKV0pLmZpbHRlcigoWywgaV0pID0+IE51bWJlci5pc0Zpbml0ZShpKSk7XG4gIGNvbnN0IGxldHRlcnMgICAgPSBPYmplY3Qua2V5cyhjdHguc2NoZW1hLmRpbWVuc2lvbkluZm8gPz8ge30pXG4gICAgLmZpbHRlcihsID0+IGwgIT09ICd4JyAmJiBsICE9PSAneScgJiYgYWN0aXZlRGltc1tsXSA9PT0gdW5kZWZpbmVkKVxuICAgIC5zb3J0KCk7XG4gIGlmICghbGV0dGVycy5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBmaXhlZCAgICAgPSBPYmplY3QuZnJvbUVudHJpZXMoZml4ZWREaW1zKTtcbiAgY29uc3QgZ2NFeHByICAgID0gZ2NGbigpO1xuXG4gIGZvciAoY29uc3QgbGV0dGVyIG9mIGxldHRlcnMpIHtcbiAgICBjb25zdCBwYXJ0cyA9IGN0eC5zcWwuZGltU3Vic2V0V2hlcmUoeyBmaXhlZCwgc3BsaXQ6IG5ldyBTZXQoW2xldHRlcl0pIH0pO1xuXG4gICAgY29uc3Qgcm93cyA9IGF3YWl0IGN0eC5xdWVyeVJvd3MoYFxuICAgICAgU0VMRUNUICR7Z2NFeHByfSBBUyBfX2dyb3VwX18sICR7cShgZGltXyR7bGV0dGVyfWApfSBBUyB4LFxuICAgICAgICAgICAgIEFWRygke3EobWV0cmljKX0pIEFTIHksIENPQUxFU0NFKFNURERFVl9TQU1QKCR7cShtZXRyaWMpfSksIDApIEFTIHMsXG4gICAgICAgICAgICAgQ09VTlQoJHtxKG1ldHJpYyl9KSBBUyBuXG4gICAgICBGUk9NIHBwX2FsbCBXSEVSRSAke3BhcnRzLmpvaW4oJyBBTkQgJyl9XG4gICAgICBHUk9VUCBCWSAxLCAyIE9SREVSIEJZIDJcbiAgICBgKTtcbiAgICBjb25zdCB2YWxpZCA9IHJvd3MuZmlsdGVyKHIgPT4gTnVtYmVyLmlzRmluaXRlKE51bWJlcihyLngpKSAmJiBOdW1iZXIoci5uKSA+IDApO1xuICAgIGlmICghdmFsaWQubGVuZ3RoKSBjb250aW51ZTtcblxuICAgIGNvbnN0IHRyYWNlcyA9IFtdO1xuICAgIGZvciAoY29uc3QgZyBvZiBjdHguZ3JvdXBzKSB7XG4gICAgICBjb25zdCBnciA9IHZhbGlkLmZpbHRlcihyID0+IFN0cmluZyhyLl9fZ3JvdXBfXykgPT09IGcpLnNvcnQoKGEsIGIpID0+IE51bWJlcihhLngpIC0gTnVtYmVyKGIueCkpO1xuICAgICAgaWYgKCFnci5sZW5ndGgpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgY29sb3IgPSBjdHguY29sb3IuZ3JvdXAoZyk7XG4gICAgICBjb25zdCB4cyA9IGdyLm1hcChyID0+IE51bWJlcihyLngpKTtcbiAgICAgIGNvbnN0IHltID0gZ3IubWFwKHIgPT4gTnVtYmVyKHIueSkpO1xuICAgICAgY29uc3QgeXMgPSBnci5tYXAociA9PiBOdW1iZXIoci5zID8/IDApKTtcbiAgICAgIHRyYWNlcy5wdXNoKFxuICAgICAgICB7IHR5cGU6ICdzY2F0dGVyJywgbW9kZTogJ2xpbmVzJywgeDogeHMsIHk6IHltLm1hcCgobSwgaSkgPT4gbSArIHlzW2ldKSxcbiAgICAgICAgICBsaW5lOiB7IHdpZHRoOiAwIH0sIHNob3dsZWdlbmQ6IGZhbHNlLCBob3ZlcmluZm86ICdza2lwJyB9LFxuICAgICAgICB7IHR5cGU6ICdzY2F0dGVyJywgbW9kZTogJ2xpbmVzJywgeDogeHMsIHk6IHltLm1hcCgobSwgaSkgPT4gbSAtIHlzW2ldKSxcbiAgICAgICAgICBsaW5lOiB7IHdpZHRoOiAwIH0sIGZpbGw6ICd0b25leHR5JywgZmlsbGNvbG9yOiBjdHguY29sb3IuaGV4VG9SZ2JhKGNvbG9yLCAwLjIpLFxuICAgICAgICAgIHNob3dsZWdlbmQ6IGZhbHNlLCBob3ZlcmluZm86ICdza2lwJyB9LFxuICAgICAgICB7IHR5cGU6ICdzY2F0dGVyJywgbW9kZTogbGluZU1vZGUoeHMubGVuZ3RoKSwgbmFtZTogY3R4Lmdyb3VwTGFiZWwoZyksIHg6IHhzLCB5OiB5bSxcbiAgICAgICAgICBsaW5lOiB7IGNvbG9yLCB3aWR0aDogMS41IH0sIG1hcmtlcjogeyBzaXplOiAzLCBjb2xvciB9LCBob3ZlcmluZm86ICdza2lwJyB9LFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCF0cmFjZXMubGVuZ3RoKSBjb250aW51ZTtcblxuICAgIGN0eC5wbG90LmFwcGVuZE1pbmkoY29udGFpbmVyLCB0cmFjZXMsIHtcbiAgICAgIHhheGlzOiAgeyB0aXRsZTogYCR7bGV0dGVyLnRvVXBwZXJDYXNlKCl9IHNsaWNlYCwgdGlja2Zvcm1hdDogJ2QnIH0sXG4gICAgICB5YXhpczogIHsgdGl0bGU6IGN0eC5wbG90Lm5pY2VOYW1lKG1ldHJpYykgfSxcbiAgICAgIG1hcmdpbjogeyBsOiA1MiB9LFxuICAgIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbWFrZUFjcm9zc0RpbXNQbHVnaW4oaWQsIGxhYmVsLCBpbmZvLCBmaWx0ZXJNZXRyaWMsIG92ZXJ2aWV3TWVzc2FnZSwgbWV0cmljUHJlZiA9IFtdLCBzaG9ydExhYmVsLCBpbnB1dE1ldHJpY3MpIHtcbiAgcmV0dXJuIHtcbiAgICBpZCwgbGFiZWwsIGluZm8sIHNob3J0TGFiZWwsIGdyb3VwOiAnRGF0YXNldCBTdGF0cycsIHNjb3BlOiAnc2xpY2UnLCBtdWx0aVBsb3Q6IHRydWUsXG4gICAgaW5wdXRzOiBpbnB1dE1ldHJpY3MgPyBbLi4uaW5wdXRNZXRyaWNzXSA6IFtdLFxuICAgIHJlcXVpcmVzKHNjaGVtYSkge1xuICAgICAgcmV0dXJuICEhc2NoZW1hLmhhc0RpbVNsaWNlcyAmJiBzY2hlbWEubWV0cmljQ29scy5zb21lKGZpbHRlck1ldHJpYyk7XG4gICAgfSxcbiAgICAuLi4ob3ZlcnZpZXdNZXNzYWdlID8geyBvdmVydmlld01lc3NhZ2UgfSA6IHt9KSxcbiAgICBhc3luYyBvdmVydmlld1Bsb3QoY29udGFpbmVyLCBjdHgpIHtcbiAgICAgIHJldHVybiBhY3Jvc3NEaW1zT3ZlcnZpZXdQbG90KGN0eCwgY29udGFpbmVyLCBmaWx0ZXJNZXRyaWMsIG1ldHJpY1ByZWYpO1xuICAgIH0sXG4gICAgYXN5bmMgcmVuZGVyKGNvbnRhaW5lciwgY3R4KSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCByZW5kZXJBY3Jvc3NEaW1zKGNvbnRhaW5lciwgY3R4LCBmaWx0ZXJNZXRyaWMpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz1cIm5vLWRhdGFcIj5GYWlsZWQgdG8gbG9hZCBkYXRhLjwvZGl2Pic7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgW1xuICBtYWtlQWNyb3NzRGltc1BsdWdpbihcbiAgICAnc3RhdHMtYWNyb3NzLWRpbXMtYmFzaWMnLCAnQmFzaWMgU3RhdGlzdGljcyBBY3Jvc3MgRGltZW5zaW9ucycsIEJBU0lDX0lORk8sXG4gICAgYmFzZSA9PiBCQVNJQ19NRVRSSUNfQkFTRVMuaGFzKGJhc2UpLFxuICAgIGN0eCA9PiBhY3Jvc3NEaW1zT3ZlcnZpZXdTdW1tYXJ5KGN0eCwgeyBtZXRyaWNMYWJlbDogJ2JyaWdodG5lc3Mgc3RhdGlzdGljcycgfSksXG4gICAgWydtZWFuX2ludGVuc2l0eSddLCAnSW50ZW5zaXR5IGFjcm9zcyBTbGljZXMnLCBCQVNJQ19NRVRSSUNfQkFTRVMsXG4gICksXG4gIG1ha2VBY3Jvc3NEaW1zUGx1Z2luKFxuICAgICdzdGF0cy1hY3Jvc3MtZGltcy1xdWFsaXR5JywgJ1F1YWxpdHkgTWV0cmljcyBBY3Jvc3MgRGltZW5zaW9ucycsIFFVQUxJVFlfSU5GTyxcbiAgICBiYXNlID0+IFFVQUxJVFlfTUVUUklDX0JBU0VTLmhhcyhiYXNlKSxcbiAgICBjdHggPT4gYWNyb3NzRGltc092ZXJ2aWV3U3VtbWFyeShjdHgsIHsgbWV0cmljTGFiZWw6ICdpbWFnZSBxdWFsaXR5IG1ldHJpY3MnIH0pLFxuICAgIFsnbGFwbGFjaWFuX3ZhcmlhbmNlJ10sICdRdWFsaXR5IGFjcm9zcyBTbGljZXMnLCBRVUFMSVRZX01FVFJJQ19CQVNFUyxcbiAgKSxcbl07XG5cbmZ1bmN0aW9uIHJlbmRlckFnZ1NjYXR0ZXIoY29udGFpbmVyLCBhZ2csIGN0eCwgU1RBVFNfRElNU19MQVlPVVQsIGFwcGVuZFBsb3QpIHtcbiAgY29uc3QgdHJhY2VzID0gW107XG4gIGNvbnN0IHJldGVudGlvblRyYWNlcyA9IFtdO1xuICBmb3IgKGNvbnN0IGcgb2YgY3R4Lmdyb3Vwcykge1xuICAgIGNvbnN0IGdSb3dzICA9IGFnZy5maWx0ZXIociA9PiBTdHJpbmcoci5fX2dyb3VwX18pID09PSBnKS5zb3J0KChhLCBiKSA9PiBhLnggLSBiLngpO1xuICAgIGlmICghZ1Jvd3MubGVuZ3RoKSBjb250aW51ZTtcbiAgICBjb25zdCBjb2xvciAgPSBjdHguY29sb3IuZ3JvdXAoZyk7XG4gICAgY29uc3QgeFZhbHMgID0gZ1Jvd3MubWFwKHIgPT4gci54KTtcbiAgICBjb25zdCB5TWVhbiAgPSBnUm93cy5tYXAociA9PiByLnlfbWVhbik7XG4gICAgY29uc3QgeVN0ZCAgID0gZ1Jvd3MubWFwKHIgPT4gci55X3N0ZCA/PyAwKTtcbiAgICBjb25zdCBucyAgICAgPSBnUm93cy5tYXAociA9PiByLm4pO1xuICAgIGNvbnN0IG5NYXggICA9IE1hdGgubWF4KC4uLm5zKTtcbiAgICBjb25zdCByZXRlbnRpb24gPSBucy5tYXAobiA9PiAobiAvIG5NYXgpICogMTAwKTtcbiAgICBjb25zdCB5VXBwZXIgPSB5TWVhbi5tYXAoKG0sIGkpID0+IG0gKyB5U3RkW2ldKTtcbiAgICBjb25zdCB5TG93ZXIgPSB5TWVhbi5tYXAoKG0sIGkpID0+IG0gLSB5U3RkW2ldKTtcbiAgICBjb25zdCBzaXplcyAgPSBucy5tYXAobiA9PiBNYXRoLm1heCg0LCBNYXRoLm1pbigxMiwgMyArIDMgKiBNYXRoLmxvZzEwKE1hdGgubWF4KG4sIDEpKSkpKTtcbiAgICBjb25zdCBob3ZlciAgPSBnUm93cy5tYXAoKHIsIGkpID0+IGA8Yj4ke2d9PC9iPjxicj5TbGljZTogJHtyLnh9PGJyPk1lYW46ICR7eU1lYW5baV0udG9GaXhlZCgzKX08YnI+U3RkOiAke3lTdGRbaV0udG9GaXhlZCgzKX08YnI+PGI+bj0ke25zW2ldfTwvYj4gKCR7cmV0ZW50aW9uW2ldLnRvRml4ZWQoMCl9JSBvZiBpbWFnZXMpYCk7XG4gICAgY29uc3QgcmdiYSAgID0gY3R4LmNvbG9yLmhleFRvUmdiYShjb2xvciwgMC4yKTtcbiAgICB0cmFjZXMucHVzaChcbiAgICAgIHsgdHlwZTonc2NhdHRlcicsIHg6eFZhbHMsIHk6eVVwcGVyLCBtb2RlOidsaW5lcycsIGxpbmU6e3dpZHRoOjB9LCBzaG93bGVnZW5kOmZhbHNlLCBob3ZlcmluZm86J3NraXAnIH0sXG4gICAgICB7IHR5cGU6J3NjYXR0ZXInLCB4OnhWYWxzLCB5OnlMb3dlciwgbW9kZTonbGluZXMnLCBsaW5lOnt3aWR0aDowfSwgZmlsbDondG9uZXh0eScsIGZpbGxjb2xvcjpyZ2JhLCBzaG93bGVnZW5kOmZhbHNlLCBob3ZlcmluZm86J3NraXAnIH0sXG4gICAgICB7IHR5cGU6J3NjYXR0ZXInLCBtb2RlOmxpbmVNb2RlKHhWYWxzLmxlbmd0aCksIG5hbWU6Y3R4Lmdyb3VwTGFiZWwoZyksIHg6eFZhbHMsIHk6eU1lYW4sIGxpbmU6e3dpZHRoOjIsIGNvbG9yfSwgbWFya2VyOntzaXplOnNpemVzLCBjb2xvciwgbGluZTp7d2lkdGg6MSwgY29sb3I6J3doaXRlJ319LCBob3ZlcnRlbXBsYXRlOicle3RleHR9PGV4dHJhPjwvZXh0cmE+JywgdGV4dDpob3ZlciB9LFxuICAgICk7XG4gICAgY29uc3QgcmV0ZW50aW9uSG92ZXIgPSBnUm93cy5tYXAoKHIsIGkpID0+XG4gICAgICBgPGI+JHtjdHguZ3JvdXBMYWJlbChnKX08L2I+PGJyPlNsaWNlOiAke3IueH08YnI+JHtuc1tpXX0gb2YgJHtuTWF4fSBpbWFnZXMgKCR7cmV0ZW50aW9uW2ldLnRvRml4ZWQoMCl9JSlgKTtcbiAgICByZXRlbnRpb25UcmFjZXMucHVzaCh7IHg6IHhWYWxzLCB5OiByZXRlbnRpb24sIGNvbG9yLCBob3ZlcjogcmV0ZW50aW9uSG92ZXIgfSk7XG4gIH1cblxuICAvLyBcIiUgb2YgaW1hZ2VzXCIgY3VydmUgLSBzaG93biBvbiBldmVyeSBwbG90IChldmVuIHdoZW4gZmxhdCBhdCAxMDAlKSBzbyBpdHNcbiAgLy8gYWJzZW5jZSBkb2Vzbid0IHJlYWQgYXMgXCJubyBkYXRhIGZvciB0aGlzIHNsaWNlXCIuXG4gIGZvciAoY29uc3QgcnQgb2YgcmV0ZW50aW9uVHJhY2VzKSB7XG4gICAgdHJhY2VzLnB1c2goe1xuICAgICAgdHlwZTogJ3NjYXR0ZXInLCBtb2RlOiAnbGluZXMnLCB4OiBydC54LCB5OiBydC55LCB5YXhpczogJ3kyJyxcbiAgICAgIGxpbmU6IHsgd2lkdGg6IDEsIGRhc2g6ICdkYXNoJywgc2hhcGU6ICdodicsIGNvbG9yOiBydC5jb2xvciB9LFxuICAgICAgb3BhY2l0eTogMC43LCBzaG93bGVnZW5kOiBmYWxzZSxcbiAgICAgIGhvdmVydGVtcGxhdGU6ICcle3RleHR9PGV4dHJhPjwvZXh0cmE+JywgdGV4dDogcnQuaG92ZXIsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBhbGxYVmFscyA9IFsuLi5uZXcgU2V0KGFnZy5tYXAociA9PiByLngpKV0uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICBjb25zdCB4YXhpc092ZXJyaWRlID0gYWxsWFZhbHMubGVuZ3RoIDw9IDggPyB7IHRpY2ttb2RlOiAnYXJyYXknLCB0aWNrdmFsczogYWxsWFZhbHMgfSA6IHt9O1xuICBjb25zdCBsYXlvdXQgPSB7XG4gICAgLi4uU1RBVFNfRElNU19MQVlPVVQsXG4gICAgeGF4aXM6IHsgLi4uU1RBVFNfRElNU19MQVlPVVQueGF4aXMsIC4uLnhheGlzT3ZlcnJpZGUgfSxcbiAgICBtYXJnaW46IHsgbDogMzYsIHI6IDM0LCB0OiA4LCBiOiAyOCB9LFxuICAgIGhlaWdodDogMTQwLFxuICAgIC8vIFJhbmdlIGV4dGVuZHMgYSBiaXQgcGFzdCAxMDAgc28gYSBmbGF0IDEwMCUgbGluZSBkb2Vzbid0IHNpdCBmbHVzaCBvbiB0aGUgcGxvdCBib3JkZXIuXG4gICAgeWF4aXMyOiB7XG4gICAgICBvdmVybGF5aW5nOiAneScsIHNpZGU6ICdyaWdodCcsIHJhbmdlOiBbMCwgMTA1XSwgdGlja3N1ZmZpeDogJyUnLFxuICAgICAgc2hvd2dyaWQ6IGZhbHNlLCB6ZXJvbGluZTogZmFsc2UsIHNob3dsaW5lOiBmYWxzZSwgdGlja2ZvbnQ6IHsgc2l6ZTogOSB9LFxuICAgIH0sXG4gIH07XG4gIGFwcGVuZFBsb3QoY29udGFpbmVyLCB0cmFjZXMsIGxheW91dCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBQTtBQUFBOzs7QUFFQSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEdBQUc7O0FBRTdCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzs7QUFFM0UsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztBQUNyRSxDQUFDLENBQUM7O0FBRUYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDOztBQUU1RSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakYsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDOUYsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7O0FBRWhDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXO0FBQ2pCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVaLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM1SCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVaLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDeEUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN2RSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPO0FBQzFFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUUzQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUc7QUFDdkMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUk7O0FBRXZFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVk7QUFDbkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLDRDQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsNENBQWtCLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFD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LENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7QUFDM0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7QUFDeEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQztBQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO0FBQ3JFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVqQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO0FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7QUFDbEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQzFELENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNoSSxDQUFDLENBQUM7QUFDRixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVM7QUFDbEI7O0FBRUEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQ2hGLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO0FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDLENBQUM7QUFDRixDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVE7QUFDakI7O0FBRUEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJO0FBQzlFLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSTtBQUNqQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3ZILENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztBQUNwRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBQ0YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUM5RSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNoSCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztBQUMxQixDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7QUFDL0I7O0FBRUEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUM5RSxRQUFRLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUk7QUFDM0MsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEYsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSztBQUNyRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFDMUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU07QUFDMUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNaLENBQUMsQ0FBQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2RDs7QUFFQSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUM5RSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUNULENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNO0FBQ3RCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSztBQUNyQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxSixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUcsQ0FBQyxDQUFDLENBQUM7QUFDSDs7QUFFQSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLO0FBQ25GLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUk7QUFDM0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUN2RSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVyQixDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQzFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDcEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDLENBQUM7QUFDRixDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDOztBQUVySSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4TCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztBQUN4QixDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVKLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNO0FBQ2hELENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ2hKLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdEQUFzQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtBQUNoRixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBQ3JELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFeEcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUgsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQzs7QUFFRixDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7QUFDOUIsQ0FBQyxDQUFDLFNB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QU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSzs7QUFFM0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JILENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUN0RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDWCxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUs7O0FBRW5DLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO0FBQ2pELENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFMUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFN0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25GLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUTs7QUFFL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUTtBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJO0FBQ2pCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDM0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUTs7QUFFaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDbEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxD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Q3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQzNDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdGLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2pNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSTtBQUNmLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM3RyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakgsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLENBQUMsQ0FBQzs7QUFFRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzNFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUNyRCxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNuRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUs7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUs7QUFDN0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDLENBQUM7O0FBRUYsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCO0FBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzNELENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRztBQUNmLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNO0FBQzVGLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDWixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDSCxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN2QzsifQ==

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJpbXBvcnRzIjoiMiIsIm1hcHBpbmdzIjpmYWxzZSwiZGVwcyI6IjMiLCJkeW5hbWljRGVwcyI6IjQiLCJzdGF0aWNNb2NrcyI6bnVsbCwiaGFzQ292ZXJhZ2VEYXRhIjpmYWxzZX0sIi9ob21lL2VsbGEvd29yay9waXhlbC1wYXRyb2wvcGFja2FnZXMvcGl4ZWwtcGF0cm9sLWJhc2Uvc3JjL3BpeGVsX3BhdHJvbF9iYXNlL3ZpZXdlci9wbHVnaW5fc3RhdHNfYWNyb3NzX2RpbXMuanMiLHsidXJscyI6IjUiLCJpZHMiOiI2In0sWyI3Il0sW10sWyI3Il0se30sIi9zcmMvcGl4ZWxfcGF0cm9sX2Jhc2Uvdmlld2VyL3F1YWxpdHlfbWV0cmljcy5qcyJd