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


const SIZE_NUM_BINS      = 20;
const SIZE_LOG_THRESHOLD = 30;
const MAX_DAYS           = 20;
const FILE_STATS_MARGIN  = { l: 50, r: 80, t: 50, b: 80 };

const MS_SECOND = 1000;
const MS_MINUTE = 60 * MS_SECOND;
const MS_HOUR   = 60 * MS_MINUTE;
const MS_DAY    = 24 * MS_HOUR;

const __vite_ssr_export_default__ = {
  id: 'file-stats',
  required_inputs: ['file_extension', 'size_bytes'],
  inputs: ['modification_date'],
  group: 'File Stats',
  scope: 'file',
  multiPlot: true,
  info: [
    'High-level **file statistics** for the dataset.',
    '',
    'If a property has **no variance** (e.g. all files share the same extension), it is summarized in the table instead of a chart.',
  ].join('\n'),
  label: 'File Statistics',
  shortLabel: 'File Metadata',

  requires(schema) {
    return schema.allCols.includes('file_extension') &&
           schema.allCols.includes('size_bytes');
  },

  async overviewMessage(ctx) {
    try {
      if (ctx.withinFileGroupVariation) {
        return { text: __vite_ssr_import_0__.MIXED_GROUP_WARNING, warning: true };
      };
      const { groupCol: gcFn, fileCount } = ctx.sql;
      const { escapeHtml } = ctx.plot;
      const [extRows, groupRows] = await Promise.all([
        ctx.queryRows(`SELECT DISTINCT COALESCE("file_extension", '(none)') AS ext FROM pp_data ${ctx.where}`),
        ctx.queryRows(`SELECT ${gcFn()} AS g, ${fileCount()} AS c FROM pp_data ${ctx.where} GROUP BY 1`),
      ]);
      const exts   = [...new Set(extRows.map(r => String(r.ext)))];
      const counts = groupRows.map(r => Number(r.c)).filter(n => n > 0);

      const warnings = [];
      if (exts.length > 1) warnings.push('mixed file formats');
      if (counts.length > 1 && Math.max(...counts) / Math.min(...counts) >= 1.5) warnings.push('unequal file counts between conditions');
      if (warnings.length) return { text: `Inconsistencies: <strong>${warnings.join(', ')}</strong>.`, warning: true };

      return `All <strong>${escapeHtml(exts[0] ?? 'files')}</strong>.`;
    } catch { return null; }
  },

  async overviewPlot(container, ctx) {
    const { groupCol: gcFn } = ctx.sql;

    if (ctx.withinFileGroupVariation) {
      const groupRows = await ctx.queryRows(`
        SELECT ${gcFn()} AS g, COUNT(*) AS c
        FROM pp_data ${ctx.where} GROUP BY 1 ORDER BY 1
      `);
      if (!groupRows.length) return false;
      const groups = groupRows.map(r => String(r.g));
      ctx.plot.appendMini(container, [{
        type: 'bar',
        x: groups.map(g => ctx.groupLabel(g)),
        y: groupRows.map(r => Number(r.c)),
        marker: { color: groups.map(g => ctx.colorMap[g] ?? '#6c757d') },
        hoverinfo: 'skip',
      }], { xaxis: { type: 'category' }, bargap: 0.3 });
      return true;
    };

    const [extRows, sizeRange, dateRange] = await fetchFileStats(ctx);
    const exts = [...new Set(extRows.map(r => String(r.ext)))].sort();
    const date = datePlan(dateRange[0]);
    const miniBars = (cats, getValue) => ctx.plot.appendMini(container,
      ctx.plot.groupedBarTraces(cats, getValue, { mini: true }),
      { barmode: 'stack', xaxis: { type: 'category' }, bargap: 0.3 });

    // Show one mini-plot: the most informative varying property (ext > date > size).
    if (exts.length > 1) {
      miniBars(exts, pick(extRows, r => r.ext, 'count'));
      return true;
    };

    if (date.chart) {
      const { rows, cats } = await fetchDateBuckets(ctx, dateRange[0].span_ms);
      miniBars(cats, pick(rows, r => r.bucket, 'count'));
      return true;
    };

    const size = await fetchSizeBins(ctx, sizeRange);
    if (!size.invariant) {
      miniBars(size.labels, pick(size.rows, r => r.bin, 'count'));
      return true;
    };

    // Nothing varies: invariant summary table.
    const invariants = [];
    if (exts.length === 1) invariants.push(['File Extension', exts[0]]);
    invariants.push(['File Size', size.invariant]);
    if (date.invariant) invariants.push(['Modification Date', date.invariant]);
    ctx.plot.tilePreviewTable(container, ['Property', 'Value'], invariants);
    return true;
  },

  async render(container, ctx) {
    try {
      const invariants = [];
      const ungrouped = ctx.withinFileGroupVariation;
      if (ungrouped) ctx.plot.prependWarning(container, { level: 'yellow', html: __vite_ssr_import_0__.MIXED_GROUP_WARNING });
      const [extRows, sizeRange, dateRange] = await fetchFileStats(ctx, { ungrouped });

      // Files per group, summed over extensions - the same numbers a separate
      // per-group count query returns, without the extra query.
      const byGroup = new Map();
      for (const r of extRows) byGroup.set(r.__group__, (byGroup.get(r.__group__) ?? 0) + Number(r.count));
      const total = [...byGroup.values()].reduce((a, b) => a + b, 0);

      const nullExtCount = extRows.filter(r => String(r.ext) === '(none)').reduce((s, r) => s + Number(r.count), 0);
      const availability = [
        { label: 'File Extension', present: total - nullExtCount },
        { label: 'File Size', present: total - Number(sizeRange[0]?.n_null ?? 0) },
      ];
      if (dateRange.length) availability.push({ label: 'Modification Date', present: total - Number(dateRange[0]?.n_null ?? 0) });
      ctx.plot.dataAvailabilityWarning(container, availability, total, { unit: 'files' });

      const counts = [...byGroup.values()].filter(n => n > 0);
      if (counts.length > 1 && Math.max(...counts) / Math.min(...counts) >= 1.5) {
        ctx.plot.prependWarning(container, {
          level: 'yellow',
          html: 'File counts differ significantly between conditions (ratio &gt;1.5×). This may indicate an imbalanced dataset.',
        });
      };

      // Each section draws a chart when the property varies, or adds an
      // invariant row when it's shared by every file.
      renderExtensions(container, ctx, extRows, invariants, { ungrouped });
      await renderSizeBins(container, ctx, sizeRange, invariants, { ungrouped });
      await renderModificationDates(container, ctx, dateRange, invariants, { ungrouped });

      if (invariants.length) ctx.plot.invariantTable(container, {
        title: 'Properties shared by all files that report it',
        headers: ['Property', 'Value'],
        rows: invariants,
      });

      if (!container.firstChild) {
        container.innerHTML = '<div class="no-data">No file statistics data available.</div>';
      }
    } catch {
      container.innerHTML = '<div class="no-data">Failed to load data.</div>';
    }
  },
};

// The three datasets the full view needs, fetched in parallel. size_bytes and
// modification_date are per-file values repeated across a file's image rows,
// so null counts use fileCount() (COUNT DISTINCT path) rather than COUNT(*) -
// otherwise a single null-valued file with many image rows would be counted
// once per row instead of once per file.
function fetchFileStats(ctx, { ungrouped = false } = {}) {
  const { perFile, fileCount } = ctx.sql;
  const gcExpr  = gcExprFor(ctx, ungrouped);
  const hasDate = ctx.schema.allCols.includes('modification_date');
  return Promise.all([
    ctx.queryRows(`
      SELECT COALESCE("file_extension", '(none)') AS ext, ${gcExpr} AS __group__,
             COUNT(*) AS count, SUM("size_bytes") AS total_bytes
      FROM ${perFile(ctx.where)}
      GROUP BY 1, 2 ORDER BY 1, 2
    `),
    ctx.queryRows(`
      SELECT MIN("size_bytes") AS min_s, MAX("size_bytes") AS max_s,
             COUNT(DISTINCT "size_bytes") AS n_unique,
             ${fileCount()} FILTER (WHERE "size_bytes" IS NULL) AS n_null
      FROM pp_data ${ctx.where}
    `),
    hasDate
      ? ctx.queryRows(`
          SELECT STRFTIME(MIN(TRY_CAST("modification_date" AS TIMESTAMP)), '%Y-%m-%d %H:%M:%S') AS min_fmt,
                 STRFTIME(MAX(TRY_CAST("modification_date" AS TIMESTAMP)), '%Y-%m-%d %H:%M:%S') AS max_fmt,
                 EPOCH_MS(MAX(TRY_CAST("modification_date" AS TIMESTAMP)))
                   - EPOCH_MS(MIN(TRY_CAST("modification_date" AS TIMESTAMP))) AS span_ms,
                 COUNT(DISTINCT TRY_CAST("modification_date" AS TIMESTAMP)) AS n_unique,
                 ${fileCount()} FILTER (WHERE "modification_date" IS NULL) AS n_null
          FROM pp_data ${ctx.where}
        `)
      : Promise.resolve([]),
  ]);
}

// One shared extension → invariant row; several → red warning + count/size bars.
function renderExtensions(container, ctx, extRows, invariants, { ungrouped = false } = {}) {
  const exts = [...new Set(extRows.map(r => String(r.ext)))].sort();
  if (!exts.length) return;
  if (exts.length === 1) {
    invariants.push(['File Extension', exts[0]]);
    return;
  };
  ctx.plot.prependWarning(container, {
    level: 'red',
    html: `This dataset contains files with more than one extension: ` +
      `${exts.map(e => ctx.plot.escapeHtml(e)).join(', ')}. ` +
      `Mixed file formats can mean a mixed dataset or even images that were saved twice - worth looking into.`,
  });
  renderGroupedBars(container, { categories: exts, getValue: pick(extRows, r => r.ext, 'count'),
    title: 'File Count by Extension', xLabel: 'Extension', yLabel: 'File count' }, ctx, { ungrouped });
  renderGroupedBars(container, { categories: exts, getValue: pick(extRows, r => r.ext, 'total_bytes'),
    title: 'Total Size by Extension', xLabel: 'Extension', yLabel: 'Total size (bytes)' }, ctx, { ungrouped });
}

// One distinct size (ignoring nulls) → invariant row; otherwise a count-per-size-bin
// chart, with a trailing '(no size)' bin when any file is missing size_bytes.
async function renderSizeBins(container, ctx, sizeRange, invariants, { ungrouped = false } = {}) {
  const { labels, rows, useLog, invariant } = await fetchSizeBins(ctx, sizeRange, { ungrouped });
  if (invariant) {
    invariants.push(['File Size', invariant]);
    return;
  };
  renderGroupedBars(container, {
    categories: labels, getValue: pick(rows, r => r.bin, 'count'),
    title: 'File Count by Size Bin',
    xLabel: useLog ? 'File size (log-spaced bins)' : 'File size bin', yLabel: 'File count', showLegend: true,
  }, ctx, { ungrouped });
}

// Size bins (labels + per-bin file counts), or an `invariant` text when sizes don't
// vary and a table row says it all. Labels drive both the chart categories and the
// CASE SQL, so the two never drift apart.
async function fetchSizeBins(ctx, sizeRange, { ungrouped = false } = {}) {
  const { min_s: minS, max_s: maxS, n_unique: nUniq, n_null: nNull } = sizeRange[0] ?? {};
  const { breaks, labels, useLog } = sizeBinsWithNull(Number(minS ?? 0), Number(maxS ?? 0), Number(nUniq ?? 0), Number(nNull ?? 0), ctx.plot.formatBytes);
  if (labels.length <= 1) return { labels, rows: [], useLog, invariant: labels[0] ?? ctx.plot.formatBytes(Number(minS ?? 0)) };
  const rows = await ctx.queryRows(`
    SELECT ${buildSizeCaseSQL(breaks, labels)} AS bin, ${gcExprFor(ctx, ungrouped)} AS __group__, ${ctx.sql.fileCount()} AS count
    FROM pp_data ${ctx.where}
    GROUP BY 1, 2
  `);
  return { labels, rows, useLog, invariant: null };
}

// One exact timestamp shared by every file → invariant row with full precision.
// Otherwise a timeline, bucketed at whatever granularity (day/hour/minute/second)
// actually shows spread - rolled up to months if there are too many distinct days,
// or collapsed to a compact range if the spread is sub-second and no bucket would help.
async function renderModificationDates(container, ctx, dateRange, invariants, { ungrouped = false } = {}) {
  const { invariant, chart } = datePlan(dateRange[0]);
  if (invariant) invariants.push(['Modification Date', invariant]);
  if (!chart) return;

  const { rows, cats, label } = await fetchDateBuckets(ctx, dateRange[0].span_ms, { ungrouped });
  renderGroupedBars(container, {
    categories: cats, getValue: pick(rows, r => r.bucket, 'count'),
    title: 'File Count by Modification Date', xLabel: label, yLabel: 'File count', showLegend: true,
  }, ctx, { ungrouped });
};

// How to show modification dates: an `invariant` text when they barely vary,
// `chart: true` when a timeline is worth drawing (any file missing a date gets a
// '(no date)' bucket, so that alone makes it worth charting), neither when there are none.
function datePlan({ min_fmt: minFmt, max_fmt: maxFmt, span_ms: spanMs, n_unique: nUnique, n_null: nNull } = {}) {
  const missing = Number(nNull ?? 0) > 0;
  if (minFmt == null) return missing ? { invariant: '(no date)' } : {};
  if (missing) return { chart: true };
  if (Number(nUnique) <= 1) return { invariant: minFmt };
  if (Number(spanMs) < MS_SECOND) return { invariant: minFmt === maxFmt ? `${minFmt} (span < 1s)` : `${minFmt} – ${maxFmt} (span < 1s)` };
  return { chart: true };
}

// Date buckets at the granularity the span calls for, rolled up to months if there are too many days.
async function fetchDateBuckets(ctx, spanMs, { ungrouped = false } = {}) {
  spanMs = Number(spanMs);
  const [fmt, label] = spanMs >= MS_DAY    ? ['%Y-%m-%d', 'Date']
                     : spanMs >= MS_HOUR   ? ['%Y-%m-%d %H:00', 'Hour']
                     : spanMs >= MS_MINUTE ? ['%Y-%m-%d %H:%M', 'Minute']
                     :                       ['%Y-%m-%d %H:%M:%S', 'Second'];
  const buckets = await bucketByDateFmt(ctx, fmt, { ungrouped });
  if (fmt === '%Y-%m-%d' && buckets.cats.length > MAX_DAYS) {
    return { ...(await bucketByDateFmt(ctx, '%Y-%m', { ungrouped })), label: 'Month' };
  };
  return { ...buckets, label };
}

// Returns the group column SQL expression, or a constant when grouping is suppressed.
function gcExprFor(ctx, ungrouped) {
  return ungrouped ? "'_all_'" : ctx.sql.groupCol();
}

// Group modification_date into buckets of the given STRFTIME format. Files
// with no date fall into their own '(no date)' bucket instead of being dropped.
async function bucketByDateFmt(ctx, fmt, { ungrouped = false } = {}) {
  const gcExpr = gcExprFor(ctx, ungrouped);
  const rows = await ctx.queryRows(`
    SELECT COALESCE(STRFTIME(TRY_CAST("modification_date" AS TIMESTAMP), '${fmt}'), '(no date)') AS bucket,
           ${gcExpr} AS __group__, ${ctx.sql.fileCount()} AS count
    FROM pp_data ${ctx.where}
    GROUP BY 1, 2 ORDER BY 1, 2
  `);
  return { rows, cats: [...new Set(rows.map(r => String(r.bucket)))].sort() };
}

// (category, group) → a numeric field from long-format rows, 0 when absent.
function pick(rows, catOf, valueKey) {
  const m = new Map(rows.map(r => [`${catOf(r)}\x00${r.__group__}`, Number(r[valueKey] ?? 0)]));
  return (cat, g) => m.get(`${cat}\x00${g}`) ?? 0;
}

function renderGroupedBars(container, { categories, getValue, title, xLabel, yLabel, showLegend = true }, ctx, { ungrouped = false } = {}) {
  const traces = ungrouped
    ? [{ type: 'bar', x: categories, y: categories.map(c => getValue(c, '_all_')), marker: { color: '#6c757d' } }]
    : ctx.plot.groupedBarTraces(categories, getValue);
  const legend = !ungrouped && showLegend && ctx.groups.length > 1;
  ctx.plot.append(container, traces, {
    margin:     FILE_STATS_MARGIN,
    title:      { text: title },
    barmode:    'stack',
    bargap:     ctx.plot.bargap(categories.length),
    xaxis:      { title: xLabel, type: 'category' },
    yaxis:      { title: yLabel },
    height:     400,
    showlegend: legend,
    ...(legend ? { legend: ctx.plot.plotlyLegendConfig } : {}),
  }, 'margin-bottom:24px');
}

function computeSizeBins(minS, maxS, nUniq, fmt) {
  const effectiveBins = Math.min(SIZE_NUM_BINS, nUniq);
  if (effectiveBins <= 1 || maxS <= minS) return { breaks: [], labels: [], useLog: false };
  const minPositive = minS > 0 ? minS : 1;
  const useLog = (maxS / minPositive) >= SIZE_LOG_THRESHOLD;
  let breaks;
  if (useLog) {
    const logMin = Math.log10(minPositive);
    const logMax = Math.log10(maxS);
    if (logMax <= logMin) return { breaks: [], labels: [], useLog: false };
    const step = (logMax - logMin) / effectiveBins;
    breaks = Array.from({ length: effectiveBins - 1 }, (_, i) => 10 ** (logMin + step * (i + 1)));
  } else {
    const step = (maxS - minS) / effectiveBins;
    if (step <= 0) return { breaks: [], labels: [], useLog: false };
    breaks = Array.from({ length: effectiveBins - 1 }, (_, i) => minS + step * (i + 1));
  };
  const edges  = [minS, ...breaks, maxS];
  const labels = [];
  for (let i = 0; i < edges.length - 1; i++) labels.push(`${fmt(edges[i])}–${fmt(edges[i + 1])}`);
  return { breaks, labels, useLog };
}

// Non-null size bins/labels via computeSizeBins, plus a trailing '(no size)'
// label when any file is missing size_bytes. Labels drive both the chart
// categories and the CASE SQL below, so the two never drift apart.
function sizeBinsWithNull(minS, maxS, nUniq, nNull, fmt) {
  let breaks = [], labels = [], useLog = false;
  if (nUniq > 1) ({ breaks, labels, useLog } = computeSizeBins(minS, maxS, nUniq, fmt));
  else if (nUniq === 1) labels = [fmt(minS)];
  if (nNull > 0) labels = [...labels, '(no size)'];
  return { breaks, labels, useLog };
}

function buildSizeCaseSQL(breaks, labels) {
  let sql = `CASE WHEN "size_bytes" IS NULL THEN '(no size)'`;
  for (let i = 0; i < breaks.length; i++) sql += ` WHEN "size_bytes" < ${breaks[i]} THEN '${labels[i]}'`;
  sql += ` ELSE '${labels[breaks.length]}' END`;
  return sql;
}
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsdWdpbl9maWxlX3N0YXRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1JWEVEX0dST1VQX1dBUk5JTkcgfSBmcm9tICcuL3NoYXJlZC5qcyc7XG5cbmNvbnN0IFNJWkVfTlVNX0JJTlMgICAgICA9IDIwO1xuY29uc3QgU0laRV9MT0dfVEhSRVNIT0xEID0gMzA7XG5jb25zdCBNQVhfREFZUyAgICAgICAgICAgPSAyMDtcbmNvbnN0IEZJTEVfU1RBVFNfTUFSR0lOICA9IHsgbDogNTAsIHI6IDgwLCB0OiA1MCwgYjogODAgfTtcblxuY29uc3QgTVNfU0VDT05EID0gMTAwMDtcbmNvbnN0IE1TX01JTlVURSA9IDYwICogTVNfU0VDT05EO1xuY29uc3QgTVNfSE9VUiAgID0gNjAgKiBNU19NSU5VVEU7XG5jb25zdCBNU19EQVkgICAgPSAyNCAqIE1TX0hPVVI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgaWQ6ICdmaWxlLXN0YXRzJyxcbiAgcmVxdWlyZWRfaW5wdXRzOiBbJ2ZpbGVfZXh0ZW5zaW9uJywgJ3NpemVfYnl0ZXMnXSxcbiAgaW5wdXRzOiBbJ21vZGlmaWNhdGlvbl9kYXRlJ10sXG4gIGdyb3VwOiAnRmlsZSBTdGF0cycsXG4gIHNjb3BlOiAnZmlsZScsXG4gIG11bHRpUGxvdDogdHJ1ZSxcbiAgaW5mbzogW1xuICAgICdIaWdoLWxldmVsICoqZmlsZSBzdGF0aXN0aWNzKiogZm9yIHRoZSBkYXRhc2V0LicsXG4gICAgJycsXG4gICAgJ0lmIGEgcHJvcGVydHkgaGFzICoqbm8gdmFyaWFuY2UqKiAoZS5nLiBhbGwgZmlsZXMgc2hhcmUgdGhlIHNhbWUgZXh0ZW5zaW9uKSwgaXQgaXMgc3VtbWFyaXplZCBpbiB0aGUgdGFibGUgaW5zdGVhZCBvZiBhIGNoYXJ0LicsXG4gIF0uam9pbignXFxuJyksXG4gIGxhYmVsOiAnRmlsZSBTdGF0aXN0aWNzJyxcbiAgc2hvcnRMYWJlbDogJ0ZpbGUgTWV0YWRhdGEnLFxuXG4gIHJlcXVpcmVzKHNjaGVtYSkge1xuICAgIHJldHVybiBzY2hlbWEuYWxsQ29scy5pbmNsdWRlcygnZmlsZV9leHRlbnNpb24nKSAmJlxuICAgICAgICAgICBzY2hlbWEuYWxsQ29scy5pbmNsdWRlcygnc2l6ZV9ieXRlcycpO1xuICB9LFxuXG4gIGFzeW5jIG92ZXJ2aWV3TWVzc2FnZShjdHgpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGN0eC53aXRoaW5GaWxlR3JvdXBWYXJpYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHsgdGV4dDogTUlYRURfR1JPVVBfV0FSTklORywgd2FybmluZzogdHJ1ZSB9O1xuICAgICAgfVxuICAgICAgY29uc3QgeyBncm91cENvbDogZ2NGbiwgZmlsZUNvdW50IH0gPSBjdHguc3FsO1xuICAgICAgY29uc3QgeyBlc2NhcGVIdG1sIH0gPSBjdHgucGxvdDtcbiAgICAgIGNvbnN0IFtleHRSb3dzLCBncm91cFJvd3NdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICBjdHgucXVlcnlSb3dzKGBTRUxFQ1QgRElTVElOQ1QgQ09BTEVTQ0UoXCJmaWxlX2V4dGVuc2lvblwiLCAnKG5vbmUpJykgQVMgZXh0IEZST00gcHBfZGF0YSAke2N0eC53aGVyZX1gKSxcbiAgICAgICAgY3R4LnF1ZXJ5Um93cyhgU0VMRUNUICR7Z2NGbigpfSBBUyBnLCAke2ZpbGVDb3VudCgpfSBBUyBjIEZST00gcHBfZGF0YSAke2N0eC53aGVyZX0gR1JPVVAgQlkgMWApLFxuICAgICAgXSk7XG4gICAgICBjb25zdCBleHRzICAgPSBbLi4ubmV3IFNldChleHRSb3dzLm1hcChyID0+IFN0cmluZyhyLmV4dCkpKV07XG4gICAgICBjb25zdCBjb3VudHMgPSBncm91cFJvd3MubWFwKHIgPT4gTnVtYmVyKHIuYykpLmZpbHRlcihuID0+IG4gPiAwKTtcblxuICAgICAgY29uc3Qgd2FybmluZ3MgPSBbXTtcbiAgICAgIGlmIChleHRzLmxlbmd0aCA+IDEpIHdhcm5pbmdzLnB1c2goJ21peGVkIGZpbGUgZm9ybWF0cycpO1xuICAgICAgaWYgKGNvdW50cy5sZW5ndGggPiAxICYmIE1hdGgubWF4KC4uLmNvdW50cykgLyBNYXRoLm1pbiguLi5jb3VudHMpID49IDEuNSkgd2FybmluZ3MucHVzaCgndW5lcXVhbCBmaWxlIGNvdW50cyBiZXR3ZWVuIGNvbmRpdGlvbnMnKTtcbiAgICAgIGlmICh3YXJuaW5ncy5sZW5ndGgpIHJldHVybiB7IHRleHQ6IGBJbmNvbnNpc3RlbmNpZXM6IDxzdHJvbmc+JHt3YXJuaW5ncy5qb2luKCcsICcpfTwvc3Ryb25nPi5gLCB3YXJuaW5nOiB0cnVlIH07XG5cbiAgICAgIHJldHVybiBgQWxsIDxzdHJvbmc+JHtlc2NhcGVIdG1sKGV4dHNbMF0gPz8gJ2ZpbGVzJyl9PC9zdHJvbmc+LmA7XG4gICAgfSBjYXRjaCB7IHJldHVybiBudWxsOyB9XG4gIH0sXG5cbiAgYXN5bmMgb3ZlcnZpZXdQbG90KGNvbnRhaW5lciwgY3R4KSB7XG4gICAgY29uc3QgeyBncm91cENvbDogZ2NGbiB9ID0gY3R4LnNxbDtcblxuICAgIGlmIChjdHgud2l0aGluRmlsZUdyb3VwVmFyaWF0aW9uKSB7XG4gICAgICBjb25zdCBncm91cFJvd3MgPSBhd2FpdCBjdHgucXVlcnlSb3dzKGBcbiAgICAgICAgU0VMRUNUICR7Z2NGbigpfSBBUyBnLCBDT1VOVCgqKSBBUyBjXG4gICAgICAgIEZST00gcHBfZGF0YSAke2N0eC53aGVyZX0gR1JPVVAgQlkgMSBPUkRFUiBCWSAxXG4gICAgICBgKTtcbiAgICAgIGlmICghZ3JvdXBSb3dzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgZ3JvdXBzID0gZ3JvdXBSb3dzLm1hcChyID0+IFN0cmluZyhyLmcpKTtcbiAgICAgIGN0eC5wbG90LmFwcGVuZE1pbmkoY29udGFpbmVyLCBbe1xuICAgICAgICB0eXBlOiAnYmFyJyxcbiAgICAgICAgeDogZ3JvdXBzLm1hcChnID0+IGN0eC5ncm91cExhYmVsKGcpKSxcbiAgICAgICAgeTogZ3JvdXBSb3dzLm1hcChyID0+IE51bWJlcihyLmMpKSxcbiAgICAgICAgbWFya2VyOiB7IGNvbG9yOiBncm91cHMubWFwKGcgPT4gY3R4LmNvbG9yTWFwW2ddID8/ICcjNmM3NTdkJykgfSxcbiAgICAgICAgaG92ZXJpbmZvOiAnc2tpcCcsXG4gICAgICB9XSwgeyB4YXhpczogeyB0eXBlOiAnY2F0ZWdvcnknIH0sIGJhcmdhcDogMC4zIH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgW2V4dFJvd3MsIHNpemVSYW5nZSwgZGF0ZVJhbmdlXSA9IGF3YWl0IGZldGNoRmlsZVN0YXRzKGN0eCk7XG4gICAgY29uc3QgZXh0cyA9IFsuLi5uZXcgU2V0KGV4dFJvd3MubWFwKHIgPT4gU3RyaW5nKHIuZXh0KSkpXS5zb3J0KCk7XG4gICAgY29uc3QgZGF0ZSA9IGRhdGVQbGFuKGRhdGVSYW5nZVswXSk7XG4gICAgY29uc3QgbWluaUJhcnMgPSAoY2F0cywgZ2V0VmFsdWUpID0+IGN0eC5wbG90LmFwcGVuZE1pbmkoY29udGFpbmVyLFxuICAgICAgY3R4LnBsb3QuZ3JvdXBlZEJhclRyYWNlcyhjYXRzLCBnZXRWYWx1ZSwgeyBtaW5pOiB0cnVlIH0pLFxuICAgICAgeyBiYXJtb2RlOiAnc3RhY2snLCB4YXhpczogeyB0eXBlOiAnY2F0ZWdvcnknIH0sIGJhcmdhcDogMC4zIH0pO1xuXG4gICAgLy8gU2hvdyBvbmUgbWluaS1wbG90OiB0aGUgbW9zdCBpbmZvcm1hdGl2ZSB2YXJ5aW5nIHByb3BlcnR5IChleHQgPiBkYXRlID4gc2l6ZSkuXG4gICAgaWYgKGV4dHMubGVuZ3RoID4gMSkge1xuICAgICAgbWluaUJhcnMoZXh0cywgcGljayhleHRSb3dzLCByID0+IHIuZXh0LCAnY291bnQnKSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGF0ZS5jaGFydCkge1xuICAgICAgY29uc3QgeyByb3dzLCBjYXRzIH0gPSBhd2FpdCBmZXRjaERhdGVCdWNrZXRzKGN0eCwgZGF0ZVJhbmdlWzBdLnNwYW5fbXMpO1xuICAgICAgbWluaUJhcnMoY2F0cywgcGljayhyb3dzLCByID0+IHIuYnVja2V0LCAnY291bnQnKSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzaXplID0gYXdhaXQgZmV0Y2hTaXplQmlucyhjdHgsIHNpemVSYW5nZSk7XG4gICAgaWYgKCFzaXplLmludmFyaWFudCkge1xuICAgICAgbWluaUJhcnMoc2l6ZS5sYWJlbHMsIHBpY2soc2l6ZS5yb3dzLCByID0+IHIuYmluLCAnY291bnQnKSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBOb3RoaW5nIHZhcmllczogaW52YXJpYW50IHN1bW1hcnkgdGFibGUuXG4gICAgY29uc3QgaW52YXJpYW50cyA9IFtdO1xuICAgIGlmIChleHRzLmxlbmd0aCA9PT0gMSkgaW52YXJpYW50cy5wdXNoKFsnRmlsZSBFeHRlbnNpb24nLCBleHRzWzBdXSk7XG4gICAgaW52YXJpYW50cy5wdXNoKFsnRmlsZSBTaXplJywgc2l6ZS5pbnZhcmlhbnRdKTtcbiAgICBpZiAoZGF0ZS5pbnZhcmlhbnQpIGludmFyaWFudHMucHVzaChbJ01vZGlmaWNhdGlvbiBEYXRlJywgZGF0ZS5pbnZhcmlhbnRdKTtcbiAgICBjdHgucGxvdC50aWxlUHJldmlld1RhYmxlKGNvbnRhaW5lciwgWydQcm9wZXJ0eScsICdWYWx1ZSddLCBpbnZhcmlhbnRzKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcblxuICBhc3luYyByZW5kZXIoY29udGFpbmVyLCBjdHgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaW52YXJpYW50cyA9IFtdO1xuICAgICAgY29uc3QgdW5ncm91cGVkID0gY3R4LndpdGhpbkZpbGVHcm91cFZhcmlhdGlvbjtcbiAgICAgIGlmICh1bmdyb3VwZWQpIGN0eC5wbG90LnByZXBlbmRXYXJuaW5nKGNvbnRhaW5lciwgeyBsZXZlbDogJ3llbGxvdycsIGh0bWw6IE1JWEVEX0dST1VQX1dBUk5JTkcgfSk7XG4gICAgICBjb25zdCBbZXh0Um93cywgc2l6ZVJhbmdlLCBkYXRlUmFuZ2VdID0gYXdhaXQgZmV0Y2hGaWxlU3RhdHMoY3R4LCB7IHVuZ3JvdXBlZCB9KTtcblxuICAgICAgLy8gRmlsZXMgcGVyIGdyb3VwLCBzdW1tZWQgb3ZlciBleHRlbnNpb25zIC0gdGhlIHNhbWUgbnVtYmVycyBhIHNlcGFyYXRlXG4gICAgICAvLyBwZXItZ3JvdXAgY291bnQgcXVlcnkgcmV0dXJucywgd2l0aG91dCB0aGUgZXh0cmEgcXVlcnkuXG4gICAgICBjb25zdCBieUdyb3VwID0gbmV3IE1hcCgpO1xuICAgICAgZm9yIChjb25zdCByIG9mIGV4dFJvd3MpIGJ5R3JvdXAuc2V0KHIuX19ncm91cF9fLCAoYnlHcm91cC5nZXQoci5fX2dyb3VwX18pID8/IDApICsgTnVtYmVyKHIuY291bnQpKTtcbiAgICAgIGNvbnN0IHRvdGFsID0gWy4uLmJ5R3JvdXAudmFsdWVzKCldLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApO1xuXG4gICAgICBjb25zdCBudWxsRXh0Q291bnQgPSBleHRSb3dzLmZpbHRlcihyID0+IFN0cmluZyhyLmV4dCkgPT09ICcobm9uZSknKS5yZWR1Y2UoKHMsIHIpID0+IHMgKyBOdW1iZXIoci5jb3VudCksIDApO1xuICAgICAgY29uc3QgYXZhaWxhYmlsaXR5ID0gW1xuICAgICAgICB7IGxhYmVsOiAnRmlsZSBFeHRlbnNpb24nLCBwcmVzZW50OiB0b3RhbCAtIG51bGxFeHRDb3VudCB9LFxuICAgICAgICB7IGxhYmVsOiAnRmlsZSBTaXplJywgcHJlc2VudDogdG90YWwgLSBOdW1iZXIoc2l6ZVJhbmdlWzBdPy5uX251bGwgPz8gMCkgfSxcbiAgICAgIF07XG4gICAgICBpZiAoZGF0ZVJhbmdlLmxlbmd0aCkgYXZhaWxhYmlsaXR5LnB1c2goeyBsYWJlbDogJ01vZGlmaWNhdGlvbiBEYXRlJywgcHJlc2VudDogdG90YWwgLSBOdW1iZXIoZGF0ZVJhbmdlWzBdPy5uX251bGwgPz8gMCkgfSk7XG4gICAgICBjdHgucGxvdC5kYXRhQXZhaWxhYmlsaXR5V2FybmluZyhjb250YWluZXIsIGF2YWlsYWJpbGl0eSwgdG90YWwsIHsgdW5pdDogJ2ZpbGVzJyB9KTtcblxuICAgICAgY29uc3QgY291bnRzID0gWy4uLmJ5R3JvdXAudmFsdWVzKCldLmZpbHRlcihuID0+IG4gPiAwKTtcbiAgICAgIGlmIChjb3VudHMubGVuZ3RoID4gMSAmJiBNYXRoLm1heCguLi5jb3VudHMpIC8gTWF0aC5taW4oLi4uY291bnRzKSA+PSAxLjUpIHtcbiAgICAgICAgY3R4LnBsb3QucHJlcGVuZFdhcm5pbmcoY29udGFpbmVyLCB7XG4gICAgICAgICAgbGV2ZWw6ICd5ZWxsb3cnLFxuICAgICAgICAgIGh0bWw6ICdGaWxlIGNvdW50cyBkaWZmZXIgc2lnbmlmaWNhbnRseSBiZXR3ZWVuIGNvbmRpdGlvbnMgKHJhdGlvICZndDsxLjXDlykuIFRoaXMgbWF5IGluZGljYXRlIGFuIGltYmFsYW5jZWQgZGF0YXNldC4nLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gRWFjaCBzZWN0aW9uIGRyYXdzIGEgY2hhcnQgd2hlbiB0aGUgcHJvcGVydHkgdmFyaWVzLCBvciBhZGRzIGFuXG4gICAgICAvLyBpbnZhcmlhbnQgcm93IHdoZW4gaXQncyBzaGFyZWQgYnkgZXZlcnkgZmlsZS5cbiAgICAgIHJlbmRlckV4dGVuc2lvbnMoY29udGFpbmVyLCBjdHgsIGV4dFJvd3MsIGludmFyaWFudHMsIHsgdW5ncm91cGVkIH0pO1xuICAgICAgYXdhaXQgcmVuZGVyU2l6ZUJpbnMoY29udGFpbmVyLCBjdHgsIHNpemVSYW5nZSwgaW52YXJpYW50cywgeyB1bmdyb3VwZWQgfSk7XG4gICAgICBhd2FpdCByZW5kZXJNb2RpZmljYXRpb25EYXRlcyhjb250YWluZXIsIGN0eCwgZGF0ZVJhbmdlLCBpbnZhcmlhbnRzLCB7IHVuZ3JvdXBlZCB9KTtcblxuICAgICAgaWYgKGludmFyaWFudHMubGVuZ3RoKSBjdHgucGxvdC5pbnZhcmlhbnRUYWJsZShjb250YWluZXIsIHtcbiAgICAgICAgdGl0bGU6ICdQcm9wZXJ0aWVzIHNoYXJlZCBieSBhbGwgZmlsZXMgdGhhdCByZXBvcnQgaXQnLFxuICAgICAgICBoZWFkZXJzOiBbJ1Byb3BlcnR5JywgJ1ZhbHVlJ10sXG4gICAgICAgIHJvd3M6IGludmFyaWFudHMsXG4gICAgICB9KTtcblxuICAgICAgaWYgKCFjb250YWluZXIuZmlyc3RDaGlsZCkge1xuICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJuby1kYXRhXCI+Tm8gZmlsZSBzdGF0aXN0aWNzIGRhdGEgYXZhaWxhYmxlLjwvZGl2Pic7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJuby1kYXRhXCI+RmFpbGVkIHRvIGxvYWQgZGF0YS48L2Rpdj4nO1xuICAgIH1cbiAgfSxcbn07XG5cbi8vIFRoZSB0aHJlZSBkYXRhc2V0cyB0aGUgZnVsbCB2aWV3IG5lZWRzLCBmZXRjaGVkIGluIHBhcmFsbGVsLiBzaXplX2J5dGVzIGFuZFxuLy8gbW9kaWZpY2F0aW9uX2RhdGUgYXJlIHBlci1maWxlIHZhbHVlcyByZXBlYXRlZCBhY3Jvc3MgYSBmaWxlJ3MgaW1hZ2Ugcm93cyxcbi8vIHNvIG51bGwgY291bnRzIHVzZSBmaWxlQ291bnQoKSAoQ09VTlQgRElTVElOQ1QgcGF0aCkgcmF0aGVyIHRoYW4gQ09VTlQoKikgLVxuLy8gb3RoZXJ3aXNlIGEgc2luZ2xlIG51bGwtdmFsdWVkIGZpbGUgd2l0aCBtYW55IGltYWdlIHJvd3Mgd291bGQgYmUgY291bnRlZFxuLy8gb25jZSBwZXIgcm93IGluc3RlYWQgb2Ygb25jZSBwZXIgZmlsZS5cbmZ1bmN0aW9uIGZldGNoRmlsZVN0YXRzKGN0eCwgeyB1bmdyb3VwZWQgPSBmYWxzZSB9ID0ge30pIHtcbiAgY29uc3QgeyBwZXJGaWxlLCBmaWxlQ291bnQgfSA9IGN0eC5zcWw7XG4gIGNvbnN0IGdjRXhwciAgPSBnY0V4cHJGb3IoY3R4LCB1bmdyb3VwZWQpO1xuICBjb25zdCBoYXNEYXRlID0gY3R4LnNjaGVtYS5hbGxDb2xzLmluY2x1ZGVzKCdtb2RpZmljYXRpb25fZGF0ZScpO1xuICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgIGN0eC5xdWVyeVJvd3MoYFxuICAgICAgU0VMRUNUIENPQUxFU0NFKFwiZmlsZV9leHRlbnNpb25cIiwgJyhub25lKScpIEFTIGV4dCwgJHtnY0V4cHJ9IEFTIF9fZ3JvdXBfXyxcbiAgICAgICAgICAgICBDT1VOVCgqKSBBUyBjb3VudCwgU1VNKFwic2l6ZV9ieXRlc1wiKSBBUyB0b3RhbF9ieXRlc1xuICAgICAgRlJPTSAke3BlckZpbGUoY3R4LndoZXJlKX1cbiAgICAgIEdST1VQIEJZIDEsIDIgT1JERVIgQlkgMSwgMlxuICAgIGApLFxuICAgIGN0eC5xdWVyeVJvd3MoYFxuICAgICAgU0VMRUNUIE1JTihcInNpemVfYnl0ZXNcIikgQVMgbWluX3MsIE1BWChcInNpemVfYnl0ZXNcIikgQVMgbWF4X3MsXG4gICAgICAgICAgICAgQ09VTlQoRElTVElOQ1QgXCJzaXplX2J5dGVzXCIpIEFTIG5fdW5pcXVlLFxuICAgICAgICAgICAgICR7ZmlsZUNvdW50KCl9IEZJTFRFUiAoV0hFUkUgXCJzaXplX2J5dGVzXCIgSVMgTlVMTCkgQVMgbl9udWxsXG4gICAgICBGUk9NIHBwX2RhdGEgJHtjdHgud2hlcmV9XG4gICAgYCksXG4gICAgaGFzRGF0ZVxuICAgICAgPyBjdHgucXVlcnlSb3dzKGBcbiAgICAgICAgICBTRUxFQ1QgU1RSRlRJTUUoTUlOKFRSWV9DQVNUKFwibW9kaWZpY2F0aW9uX2RhdGVcIiBBUyBUSU1FU1RBTVApKSwgJyVZLSVtLSVkICVIOiVNOiVTJykgQVMgbWluX2ZtdCxcbiAgICAgICAgICAgICAgICAgU1RSRlRJTUUoTUFYKFRSWV9DQVNUKFwibW9kaWZpY2F0aW9uX2RhdGVcIiBBUyBUSU1FU1RBTVApKSwgJyVZLSVtLSVkICVIOiVNOiVTJykgQVMgbWF4X2ZtdCxcbiAgICAgICAgICAgICAgICAgRVBPQ0hfTVMoTUFYKFRSWV9DQVNUKFwibW9kaWZpY2F0aW9uX2RhdGVcIiBBUyBUSU1FU1RBTVApKSlcbiAgICAgICAgICAgICAgICAgICAtIEVQT0NIX01TKE1JTihUUllfQ0FTVChcIm1vZGlmaWNhdGlvbl9kYXRlXCIgQVMgVElNRVNUQU1QKSkpIEFTIHNwYW5fbXMsXG4gICAgICAgICAgICAgICAgIENPVU5UKERJU1RJTkNUIFRSWV9DQVNUKFwibW9kaWZpY2F0aW9uX2RhdGVcIiBBUyBUSU1FU1RBTVApKSBBUyBuX3VuaXF1ZSxcbiAgICAgICAgICAgICAgICAgJHtmaWxlQ291bnQoKX0gRklMVEVSIChXSEVSRSBcIm1vZGlmaWNhdGlvbl9kYXRlXCIgSVMgTlVMTCkgQVMgbl9udWxsXG4gICAgICAgICAgRlJPTSBwcF9kYXRhICR7Y3R4LndoZXJlfVxuICAgICAgICBgKVxuICAgICAgOiBQcm9taXNlLnJlc29sdmUoW10pLFxuICBdKTtcbn1cblxuLy8gT25lIHNoYXJlZCBleHRlbnNpb24g4oaSIGludmFyaWFudCByb3c7IHNldmVyYWwg4oaSIHJlZCB3YXJuaW5nICsgY291bnQvc2l6ZSBiYXJzLlxuZnVuY3Rpb24gcmVuZGVyRXh0ZW5zaW9ucyhjb250YWluZXIsIGN0eCwgZXh0Um93cywgaW52YXJpYW50cywgeyB1bmdyb3VwZWQgPSBmYWxzZSB9ID0ge30pIHtcbiAgY29uc3QgZXh0cyA9IFsuLi5uZXcgU2V0KGV4dFJvd3MubWFwKHIgPT4gU3RyaW5nKHIuZXh0KSkpXS5zb3J0KCk7XG4gIGlmICghZXh0cy5sZW5ndGgpIHJldHVybjtcbiAgaWYgKGV4dHMubGVuZ3RoID09PSAxKSB7XG4gICAgaW52YXJpYW50cy5wdXNoKFsnRmlsZSBFeHRlbnNpb24nLCBleHRzWzBdXSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGN0eC5wbG90LnByZXBlbmRXYXJuaW5nKGNvbnRhaW5lciwge1xuICAgIGxldmVsOiAncmVkJyxcbiAgICBodG1sOiBgVGhpcyBkYXRhc2V0IGNvbnRhaW5zIGZpbGVzIHdpdGggbW9yZSB0aGFuIG9uZSBleHRlbnNpb246IGAgK1xuICAgICAgYCR7ZXh0cy5tYXAoZSA9PiBjdHgucGxvdC5lc2NhcGVIdG1sKGUpKS5qb2luKCcsICcpfS4gYCArXG4gICAgICBgTWl4ZWQgZmlsZSBmb3JtYXRzIGNhbiBtZWFuIGEgbWl4ZWQgZGF0YXNldCBvciBldmVuIGltYWdlcyB0aGF0IHdlcmUgc2F2ZWQgdHdpY2UgLSB3b3J0aCBsb29raW5nIGludG8uYCxcbiAgfSk7XG4gIHJlbmRlckdyb3VwZWRCYXJzKGNvbnRhaW5lciwgeyBjYXRlZ29yaWVzOiBleHRzLCBnZXRWYWx1ZTogcGljayhleHRSb3dzLCByID0+IHIuZXh0LCAnY291bnQnKSxcbiAgICB0aXRsZTogJ0ZpbGUgQ291bnQgYnkgRXh0ZW5zaW9uJywgeExhYmVsOiAnRXh0ZW5zaW9uJywgeUxhYmVsOiAnRmlsZSBjb3VudCcgfSwgY3R4LCB7IHVuZ3JvdXBlZCB9KTtcbiAgcmVuZGVyR3JvdXBlZEJhcnMoY29udGFpbmVyLCB7IGNhdGVnb3JpZXM6IGV4dHMsIGdldFZhbHVlOiBwaWNrKGV4dFJvd3MsIHIgPT4gci5leHQsICd0b3RhbF9ieXRlcycpLFxuICAgIHRpdGxlOiAnVG90YWwgU2l6ZSBieSBFeHRlbnNpb24nLCB4TGFiZWw6ICdFeHRlbnNpb24nLCB5TGFiZWw6ICdUb3RhbCBzaXplIChieXRlcyknIH0sIGN0eCwgeyB1bmdyb3VwZWQgfSk7XG59XG5cbi8vIE9uZSBkaXN0aW5jdCBzaXplIChpZ25vcmluZyBudWxscykg4oaSIGludmFyaWFudCByb3c7IG90aGVyd2lzZSBhIGNvdW50LXBlci1zaXplLWJpblxuLy8gY2hhcnQsIHdpdGggYSB0cmFpbGluZyAnKG5vIHNpemUpJyBiaW4gd2hlbiBhbnkgZmlsZSBpcyBtaXNzaW5nIHNpemVfYnl0ZXMuXG5hc3luYyBmdW5jdGlvbiByZW5kZXJTaXplQmlucyhjb250YWluZXIsIGN0eCwgc2l6ZVJhbmdlLCBpbnZhcmlhbnRzLCB7IHVuZ3JvdXBlZCA9IGZhbHNlIH0gPSB7fSkge1xuICBjb25zdCB7IGxhYmVscywgcm93cywgdXNlTG9nLCBpbnZhcmlhbnQgfSA9IGF3YWl0IGZldGNoU2l6ZUJpbnMoY3R4LCBzaXplUmFuZ2UsIHsgdW5ncm91cGVkIH0pO1xuICBpZiAoaW52YXJpYW50KSB7XG4gICAgaW52YXJpYW50cy5wdXNoKFsnRmlsZSBTaXplJywgaW52YXJpYW50XSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHJlbmRlckdyb3VwZWRCYXJzKGNvbnRhaW5lciwge1xuICAgIGNhdGVnb3JpZXM6IGxhYmVscywgZ2V0VmFsdWU6IHBpY2socm93cywgciA9PiByLmJpbiwgJ2NvdW50JyksXG4gICAgdGl0bGU6ICdGaWxlIENvdW50IGJ5IFNpemUgQmluJyxcbiAgICB4TGFiZWw6IHVzZUxvZyA/ICdGaWxlIHNpemUgKGxvZy1zcGFjZWQgYmlucyknIDogJ0ZpbGUgc2l6ZSBiaW4nLCB5TGFiZWw6ICdGaWxlIGNvdW50Jywgc2hvd0xlZ2VuZDogdHJ1ZSxcbiAgfSwgY3R4LCB7IHVuZ3JvdXBlZCB9KTtcbn1cblxuLy8gU2l6ZSBiaW5zIChsYWJlbHMgKyBwZXItYmluIGZpbGUgY291bnRzKSwgb3IgYW4gYGludmFyaWFudGAgdGV4dCB3aGVuIHNpemVzIGRvbid0XG4vLyB2YXJ5IGFuZCBhIHRhYmxlIHJvdyBzYXlzIGl0IGFsbC4gTGFiZWxzIGRyaXZlIGJvdGggdGhlIGNoYXJ0IGNhdGVnb3JpZXMgYW5kIHRoZVxuLy8gQ0FTRSBTUUwsIHNvIHRoZSB0d28gbmV2ZXIgZHJpZnQgYXBhcnQuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFNpemVCaW5zKGN0eCwgc2l6ZVJhbmdlLCB7IHVuZ3JvdXBlZCA9IGZhbHNlIH0gPSB7fSkge1xuICBjb25zdCB7IG1pbl9zOiBtaW5TLCBtYXhfczogbWF4Uywgbl91bmlxdWU6IG5VbmlxLCBuX251bGw6IG5OdWxsIH0gPSBzaXplUmFuZ2VbMF0gPz8ge307XG4gIGNvbnN0IHsgYnJlYWtzLCBsYWJlbHMsIHVzZUxvZyB9ID0gc2l6ZUJpbnNXaXRoTnVsbChOdW1iZXIobWluUyA/PyAwKSwgTnVtYmVyKG1heFMgPz8gMCksIE51bWJlcihuVW5pcSA/PyAwKSwgTnVtYmVyKG5OdWxsID8/IDApLCBjdHgucGxvdC5mb3JtYXRCeXRlcyk7XG4gIGlmIChsYWJlbHMubGVuZ3RoIDw9IDEpIHJldHVybiB7IGxhYmVscywgcm93czogW10sIHVzZUxvZywgaW52YXJpYW50OiBsYWJlbHNbMF0gPz8gY3R4LnBsb3QuZm9ybWF0Qnl0ZXMoTnVtYmVyKG1pblMgPz8gMCkpIH07XG4gIGNvbnN0IHJvd3MgPSBhd2FpdCBjdHgucXVlcnlSb3dzKGBcbiAgICBTRUxFQ1QgJHtidWlsZFNpemVDYXNlU1FMKGJyZWFrcywgbGFiZWxzKX0gQVMgYmluLCAke2djRXhwckZvcihjdHgsIHVuZ3JvdXBlZCl9IEFTIF9fZ3JvdXBfXywgJHtjdHguc3FsLmZpbGVDb3VudCgpfSBBUyBjb3VudFxuICAgIEZST00gcHBfZGF0YSAke2N0eC53aGVyZX1cbiAgICBHUk9VUCBCWSAxLCAyXG4gIGApO1xuICByZXR1cm4geyBsYWJlbHMsIHJvd3MsIHVzZUxvZywgaW52YXJpYW50OiBudWxsIH07XG59XG5cbi8vIE9uZSBleGFjdCB0aW1lc3RhbXAgc2hhcmVkIGJ5IGV2ZXJ5IGZpbGUg4oaSIGludmFyaWFudCByb3cgd2l0aCBmdWxsIHByZWNpc2lvbi5cbi8vIE90aGVyd2lzZSBhIHRpbWVsaW5lLCBidWNrZXRlZCBhdCB3aGF0ZXZlciBncmFudWxhcml0eSAoZGF5L2hvdXIvbWludXRlL3NlY29uZClcbi8vIGFjdHVhbGx5IHNob3dzIHNwcmVhZCAtIHJvbGxlZCB1cCB0byBtb250aHMgaWYgdGhlcmUgYXJlIHRvbyBtYW55IGRpc3RpbmN0IGRheXMsXG4vLyBvciBjb2xsYXBzZWQgdG8gYSBjb21wYWN0IHJhbmdlIGlmIHRoZSBzcHJlYWQgaXMgc3ViLXNlY29uZCBhbmQgbm8gYnVja2V0IHdvdWxkIGhlbHAuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyTW9kaWZpY2F0aW9uRGF0ZXMoY29udGFpbmVyLCBjdHgsIGRhdGVSYW5nZSwgaW52YXJpYW50cywgeyB1bmdyb3VwZWQgPSBmYWxzZSB9ID0ge30pIHtcbiAgY29uc3QgeyBpbnZhcmlhbnQsIGNoYXJ0IH0gPSBkYXRlUGxhbihkYXRlUmFuZ2VbMF0pO1xuICBpZiAoaW52YXJpYW50KSBpbnZhcmlhbnRzLnB1c2goWydNb2RpZmljYXRpb24gRGF0ZScsIGludmFyaWFudF0pO1xuICBpZiAoIWNoYXJ0KSByZXR1cm47XG5cbiAgY29uc3QgeyByb3dzLCBjYXRzLCBsYWJlbCB9ID0gYXdhaXQgZmV0Y2hEYXRlQnVja2V0cyhjdHgsIGRhdGVSYW5nZVswXS5zcGFuX21zLCB7IHVuZ3JvdXBlZCB9KTtcbiAgcmVuZGVyR3JvdXBlZEJhcnMoY29udGFpbmVyLCB7XG4gICAgY2F0ZWdvcmllczogY2F0cywgZ2V0VmFsdWU6IHBpY2socm93cywgciA9PiByLmJ1Y2tldCwgJ2NvdW50JyksXG4gICAgdGl0bGU6ICdGaWxlIENvdW50IGJ5IE1vZGlmaWNhdGlvbiBEYXRlJywgeExhYmVsOiBsYWJlbCwgeUxhYmVsOiAnRmlsZSBjb3VudCcsIHNob3dMZWdlbmQ6IHRydWUsXG4gIH0sIGN0eCwgeyB1bmdyb3VwZWQgfSk7XG59XG5cbi8vIEhvdyB0byBzaG93IG1vZGlmaWNhdGlvbiBkYXRlczogYW4gYGludmFyaWFudGAgdGV4dCB3aGVuIHRoZXkgYmFyZWx5IHZhcnksXG4vLyBgY2hhcnQ6IHRydWVgIHdoZW4gYSB0aW1lbGluZSBpcyB3b3J0aCBkcmF3aW5nIChhbnkgZmlsZSBtaXNzaW5nIGEgZGF0ZSBnZXRzIGFcbi8vICcobm8gZGF0ZSknIGJ1Y2tldCwgc28gdGhhdCBhbG9uZSBtYWtlcyBpdCB3b3J0aCBjaGFydGluZyksIG5laXRoZXIgd2hlbiB0aGVyZSBhcmUgbm9uZS5cbmZ1bmN0aW9uIGRhdGVQbGFuKHsgbWluX2ZtdDogbWluRm10LCBtYXhfZm10OiBtYXhGbXQsIHNwYW5fbXM6IHNwYW5Ncywgbl91bmlxdWU6IG5VbmlxdWUsIG5fbnVsbDogbk51bGwgfSA9IHt9KSB7XG4gIGNvbnN0IG1pc3NpbmcgPSBOdW1iZXIobk51bGwgPz8gMCkgPiAwO1xuICBpZiAobWluRm10ID09IG51bGwpIHJldHVybiBtaXNzaW5nID8geyBpbnZhcmlhbnQ6ICcobm8gZGF0ZSknIH0gOiB7fTtcbiAgaWYgKG1pc3NpbmcpIHJldHVybiB7IGNoYXJ0OiB0cnVlIH07XG4gIGlmIChOdW1iZXIoblVuaXF1ZSkgPD0gMSkgcmV0dXJuIHsgaW52YXJpYW50OiBtaW5GbXQgfTtcbiAgaWYgKE51bWJlcihzcGFuTXMpIDwgTVNfU0VDT05EKSByZXR1cm4geyBpbnZhcmlhbnQ6IG1pbkZtdCA9PT0gbWF4Rm10ID8gYCR7bWluRm10fSAoc3BhbiA8IDFzKWAgOiBgJHttaW5GbXR9IOKAkyAke21heEZtdH0gKHNwYW4gPCAxcylgIH07XG4gIHJldHVybiB7IGNoYXJ0OiB0cnVlIH07XG59XG5cbi8vIERhdGUgYnVja2V0cyBhdCB0aGUgZ3JhbnVsYXJpdHkgdGhlIHNwYW4gY2FsbHMgZm9yLCByb2xsZWQgdXAgdG8gbW9udGhzIGlmIHRoZXJlIGFyZSB0b28gbWFueSBkYXlzLlxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRlQnVja2V0cyhjdHgsIHNwYW5NcywgeyB1bmdyb3VwZWQgPSBmYWxzZSB9ID0ge30pIHtcbiAgc3Bhbk1zID0gTnVtYmVyKHNwYW5Ncyk7XG4gIGNvbnN0IFtmbXQsIGxhYmVsXSA9IHNwYW5NcyA+PSBNU19EQVkgICAgPyBbJyVZLSVtLSVkJywgJ0RhdGUnXVxuICAgICAgICAgICAgICAgICAgICAgOiBzcGFuTXMgPj0gTVNfSE9VUiAgID8gWyclWS0lbS0lZCAlSDowMCcsICdIb3VyJ11cbiAgICAgICAgICAgICAgICAgICAgIDogc3Bhbk1zID49IE1TX01JTlVURSA/IFsnJVktJW0tJWQgJUg6JU0nLCAnTWludXRlJ11cbiAgICAgICAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgIFsnJVktJW0tJWQgJUg6JU06JVMnLCAnU2Vjb25kJ107XG4gIGNvbnN0IGJ1Y2tldHMgPSBhd2FpdCBidWNrZXRCeURhdGVGbXQoY3R4LCBmbXQsIHsgdW5ncm91cGVkIH0pO1xuICBpZiAoZm10ID09PSAnJVktJW0tJWQnICYmIGJ1Y2tldHMuY2F0cy5sZW5ndGggPiBNQVhfREFZUykge1xuICAgIHJldHVybiB7IC4uLihhd2FpdCBidWNrZXRCeURhdGVGbXQoY3R4LCAnJVktJW0nLCB7IHVuZ3JvdXBlZCB9KSksIGxhYmVsOiAnTW9udGgnIH07XG4gIH1cbiAgcmV0dXJuIHsgLi4uYnVja2V0cywgbGFiZWwgfTtcbn1cblxuLy8gUmV0dXJucyB0aGUgZ3JvdXAgY29sdW1uIFNRTCBleHByZXNzaW9uLCBvciBhIGNvbnN0YW50IHdoZW4gZ3JvdXBpbmcgaXMgc3VwcHJlc3NlZC5cbmZ1bmN0aW9uIGdjRXhwckZvcihjdHgsIHVuZ3JvdXBlZCkge1xuICByZXR1cm4gdW5ncm91cGVkID8gXCInX2FsbF8nXCIgOiBjdHguc3FsLmdyb3VwQ29sKCk7XG59XG5cbi8vIEdyb3VwIG1vZGlmaWNhdGlvbl9kYXRlIGludG8gYnVja2V0cyBvZiB0aGUgZ2l2ZW4gU1RSRlRJTUUgZm9ybWF0LiBGaWxlc1xuLy8gd2l0aCBubyBkYXRlIGZhbGwgaW50byB0aGVpciBvd24gJyhubyBkYXRlKScgYnVja2V0IGluc3RlYWQgb2YgYmVpbmcgZHJvcHBlZC5cbmFzeW5jIGZ1bmN0aW9uIGJ1Y2tldEJ5RGF0ZUZtdChjdHgsIGZtdCwgeyB1bmdyb3VwZWQgPSBmYWxzZSB9ID0ge30pIHtcbiAgY29uc3QgZ2NFeHByID0gZ2NFeHByRm9yKGN0eCwgdW5ncm91cGVkKTtcbiAgY29uc3Qgcm93cyA9IGF3YWl0IGN0eC5xdWVyeVJvd3MoYFxuICAgIFNFTEVDVCBDT0FMRVNDRShTVFJGVElNRShUUllfQ0FTVChcIm1vZGlmaWNhdGlvbl9kYXRlXCIgQVMgVElNRVNUQU1QKSwgJyR7Zm10fScpLCAnKG5vIGRhdGUpJykgQVMgYnVja2V0LFxuICAgICAgICAgICAke2djRXhwcn0gQVMgX19ncm91cF9fLCAke2N0eC5zcWwuZmlsZUNvdW50KCl9IEFTIGNvdW50XG4gICAgRlJPTSBwcF9kYXRhICR7Y3R4LndoZXJlfVxuICAgIEdST1VQIEJZIDEsIDIgT1JERVIgQlkgMSwgMlxuICBgKTtcbiAgcmV0dXJuIHsgcm93cywgY2F0czogWy4uLm5ldyBTZXQocm93cy5tYXAociA9PiBTdHJpbmcoci5idWNrZXQpKSldLnNvcnQoKSB9O1xufVxuXG4vLyAoY2F0ZWdvcnksIGdyb3VwKSDihpIgYSBudW1lcmljIGZpZWxkIGZyb20gbG9uZy1mb3JtYXQgcm93cywgMCB3aGVuIGFic2VudC5cbmZ1bmN0aW9uIHBpY2socm93cywgY2F0T2YsIHZhbHVlS2V5KSB7XG4gIGNvbnN0IG0gPSBuZXcgTWFwKHJvd3MubWFwKHIgPT4gW2Ake2NhdE9mKHIpfVxceDAwJHtyLl9fZ3JvdXBfX31gLCBOdW1iZXIoclt2YWx1ZUtleV0gPz8gMCldKSk7XG4gIHJldHVybiAoY2F0LCBnKSA9PiBtLmdldChgJHtjYXR9XFx4MDAke2d9YCkgPz8gMDtcbn1cblxuZnVuY3Rpb24gcmVuZGVyR3JvdXBlZEJhcnMoY29udGFpbmVyLCB7IGNhdGVnb3JpZXMsIGdldFZhbHVlLCB0aXRsZSwgeExhYmVsLCB5TGFiZWwsIHNob3dMZWdlbmQgPSB0cnVlIH0sIGN0eCwgeyB1bmdyb3VwZWQgPSBmYWxzZSB9ID0ge30pIHtcbiAgY29uc3QgdHJhY2VzID0gdW5ncm91cGVkXG4gICAgPyBbeyB0eXBlOiAnYmFyJywgeDogY2F0ZWdvcmllcywgeTogY2F0ZWdvcmllcy5tYXAoYyA9PiBnZXRWYWx1ZShjLCAnX2FsbF8nKSksIG1hcmtlcjogeyBjb2xvcjogJyM2Yzc1N2QnIH0gfV1cbiAgICA6IGN0eC5wbG90Lmdyb3VwZWRCYXJUcmFjZXMoY2F0ZWdvcmllcywgZ2V0VmFsdWUpO1xuICBjb25zdCBsZWdlbmQgPSAhdW5ncm91cGVkICYmIHNob3dMZWdlbmQgJiYgY3R4Lmdyb3Vwcy5sZW5ndGggPiAxO1xuICBjdHgucGxvdC5hcHBlbmQoY29udGFpbmVyLCB0cmFjZXMsIHtcbiAgICBtYXJnaW46ICAgICBGSUxFX1NUQVRTX01BUkdJTixcbiAgICB0aXRsZTogICAgICB7IHRleHQ6IHRpdGxlIH0sXG4gICAgYmFybW9kZTogICAgJ3N0YWNrJyxcbiAgICBiYXJnYXA6ICAgICBjdHgucGxvdC5iYXJnYXAoY2F0ZWdvcmllcy5sZW5ndGgpLFxuICAgIHhheGlzOiAgICAgIHsgdGl0bGU6IHhMYWJlbCwgdHlwZTogJ2NhdGVnb3J5JyB9LFxuICAgIHlheGlzOiAgICAgIHsgdGl0bGU6IHlMYWJlbCB9LFxuICAgIGhlaWdodDogICAgIDQwMCxcbiAgICBzaG93bGVnZW5kOiBsZWdlbmQsXG4gICAgLi4uKGxlZ2VuZCA/IHsgbGVnZW5kOiBjdHgucGxvdC5wbG90bHlMZWdlbmRDb25maWcgfSA6IHt9KSxcbiAgfSwgJ21hcmdpbi1ib3R0b206MjRweCcpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlU2l6ZUJpbnMobWluUywgbWF4UywgblVuaXEsIGZtdCkge1xuICBjb25zdCBlZmZlY3RpdmVCaW5zID0gTWF0aC5taW4oU0laRV9OVU1fQklOUywgblVuaXEpO1xuICBpZiAoZWZmZWN0aXZlQmlucyA8PSAxIHx8IG1heFMgPD0gbWluUykgcmV0dXJuIHsgYnJlYWtzOiBbXSwgbGFiZWxzOiBbXSwgdXNlTG9nOiBmYWxzZSB9O1xuICBjb25zdCBtaW5Qb3NpdGl2ZSA9IG1pblMgPiAwID8gbWluUyA6IDE7XG4gIGNvbnN0IHVzZUxvZyA9IChtYXhTIC8gbWluUG9zaXRpdmUpID49IFNJWkVfTE9HX1RIUkVTSE9MRDtcbiAgbGV0IGJyZWFrcztcbiAgaWYgKHVzZUxvZykge1xuICAgIGNvbnN0IGxvZ01pbiA9IE1hdGgubG9nMTAobWluUG9zaXRpdmUpO1xuICAgIGNvbnN0IGxvZ01heCA9IE1hdGgubG9nMTAobWF4Uyk7XG4gICAgaWYgKGxvZ01heCA8PSBsb2dNaW4pIHJldHVybiB7IGJyZWFrczogW10sIGxhYmVsczogW10sIHVzZUxvZzogZmFsc2UgfTtcbiAgICBjb25zdCBzdGVwID0gKGxvZ01heCAtIGxvZ01pbikgLyBlZmZlY3RpdmVCaW5zO1xuICAgIGJyZWFrcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IGVmZmVjdGl2ZUJpbnMgLSAxIH0sIChfLCBpKSA9PiAxMCAqKiAobG9nTWluICsgc3RlcCAqIChpICsgMSkpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBzdGVwID0gKG1heFMgLSBtaW5TKSAvIGVmZmVjdGl2ZUJpbnM7XG4gICAgaWYgKHN0ZXAgPD0gMCkgcmV0dXJuIHsgYnJlYWtzOiBbXSwgbGFiZWxzOiBbXSwgdXNlTG9nOiBmYWxzZSB9O1xuICAgIGJyZWFrcyA9IEFycmF5LmZyb20oeyBsZW5ndGg6IGVmZmVjdGl2ZUJpbnMgLSAxIH0sIChfLCBpKSA9PiBtaW5TICsgc3RlcCAqIChpICsgMSkpO1xuICB9XG4gIGNvbnN0IGVkZ2VzICA9IFttaW5TLCAuLi5icmVha3MsIG1heFNdO1xuICBjb25zdCBsYWJlbHMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBlZGdlcy5sZW5ndGggLSAxOyBpKyspIGxhYmVscy5wdXNoKGAke2ZtdChlZGdlc1tpXSl94oCTJHtmbXQoZWRnZXNbaSArIDFdKX1gKTtcbiAgcmV0dXJuIHsgYnJlYWtzLCBsYWJlbHMsIHVzZUxvZyB9O1xufVxuXG4vLyBOb24tbnVsbCBzaXplIGJpbnMvbGFiZWxzIHZpYSBjb21wdXRlU2l6ZUJpbnMsIHBsdXMgYSB0cmFpbGluZyAnKG5vIHNpemUpJ1xuLy8gbGFiZWwgd2hlbiBhbnkgZmlsZSBpcyBtaXNzaW5nIHNpemVfYnl0ZXMuIExhYmVscyBkcml2ZSBib3RoIHRoZSBjaGFydFxuLy8gY2F0ZWdvcmllcyBhbmQgdGhlIENBU0UgU1FMIGJlbG93LCBzbyB0aGUgdHdvIG5ldmVyIGRyaWZ0IGFwYXJ0LlxuZnVuY3Rpb24gc2l6ZUJpbnNXaXRoTnVsbChtaW5TLCBtYXhTLCBuVW5pcSwgbk51bGwsIGZtdCkge1xuICBsZXQgYnJlYWtzID0gW10sIGxhYmVscyA9IFtdLCB1c2VMb2cgPSBmYWxzZTtcbiAgaWYgKG5VbmlxID4gMSkgKHsgYnJlYWtzLCBsYWJlbHMsIHVzZUxvZyB9ID0gY29tcHV0ZVNpemVCaW5zKG1pblMsIG1heFMsIG5VbmlxLCBmbXQpKTtcbiAgZWxzZSBpZiAoblVuaXEgPT09IDEpIGxhYmVscyA9IFtmbXQobWluUyldO1xuICBpZiAobk51bGwgPiAwKSBsYWJlbHMgPSBbLi4ubGFiZWxzLCAnKG5vIHNpemUpJ107XG4gIHJldHVybiB7IGJyZWFrcywgbGFiZWxzLCB1c2VMb2cgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRTaXplQ2FzZVNRTChicmVha3MsIGxhYmVscykge1xuICBsZXQgc3FsID0gYENBU0UgV0hFTiBcInNpemVfYnl0ZXNcIiBJUyBOVUxMIFRIRU4gJyhubyBzaXplKSdgO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGJyZWFrcy5sZW5ndGg7IGkrKykgc3FsICs9IGAgV0hFTiBcInNpemVfYnl0ZXNcIiA8ICR7YnJlYWtzW2ldfSBUSEVOICcke2xhYmVsc1tpXX0nYDtcbiAgc3FsICs9IGAgRUxTRSAnJHtsYWJlbHNbYnJlYWtzLmxlbmd0aF19JyBFTkRgO1xuICByZXR1cm4gc3FsO1xufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxDQUFBOztBQUFBOzs7QUFFQSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM3QixLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDN0IsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzdCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxD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QUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyx5Q0FBbUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzNELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRztBQUNuRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJO0FBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUNyRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRXZFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN4SSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFdEgsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUMsQ0FBQzs7QUFFSCxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUc7O0FBRXRDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzNDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN0RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSztBQUN6QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ25CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSTtBQUNqQixDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVKLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO0FBQ3JFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTO0FBQ3RFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFckUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNwRixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDakIsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFSixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQzlFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDakIsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUFFSixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJO0FBQ2pCLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRUosQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLO0FBQzlDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5RSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0FBQzNFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDZixDQUFDLENBQUMsQ0FBQzs7QUFFSCxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNSLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsd0JBQXdCO0FBQ3BELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMseUNBQW1CLENBQUMsQ0FBQyxDQUFDO0FBQ3ZHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDOztBQUV0RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDdEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUs7QUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVwRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkgsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUV6RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRU4sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ3RFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSTtBQUNyRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMxRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzs7QUFFekYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVU7QUFDeEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUVSLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNaLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0UsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0gsQ0FBQzs7QUFFRCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUMzRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSTtBQUM1RSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0UsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDckUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUk7QUFDeEMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ3hDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDM0MsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ3JCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVM7QUFDaEYsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3JELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSztBQUNuRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRO0FBQ3JELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ25FLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLO0FBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO0FBQ3RCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPO0FBQzFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTztBQUMxRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTztBQUN6RixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRO0FBQ3ZGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUM5RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLO0FBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ1QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKOztBQUVBLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUk7QUFDaEYsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25FLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNO0FBQzFCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07QUFDVixDQUFDLENBQUM7QUFDRixDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNoQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3RHLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNyRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUM5Rzs7QUFFQSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDbEYsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVU7QUFDN0UsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ2hHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNqQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtBQUNWLENBQUMsQ0FBQztBQUNGLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJO0FBQzVHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUN4Qjs7QUFFQSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7QUFDbkYsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztBQUNoRixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLO0FBQ3pDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7QUFDekosQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5SCxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7QUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUM1SCxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFD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QUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSTtBQUNuRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDeEI7O0FBRUEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO0FBQzVFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUNoRixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSTtBQUMxRixRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hILENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEI7O0FBRUEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJO0FBQ3JHLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3pCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNoRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3RFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3hFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1RSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN0RixDQUFDLENBQUM7QUFDRixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5Qjs7QUFFQSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFVBQVU7QUFDckYsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNuQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkQ7O0FBRUEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU87QUFDL0UsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUMxQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7QUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNO0FBQzFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDN0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSztBQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RTs7QUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU07QUFDM0UsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0YsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQ7O0FBRUEsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNqQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxD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QUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCO0FBQzNELENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTTtBQUNaLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7QUFDMUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYTtBQUNsRCxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDVCxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYTtBQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZGLENBQUMsQ0FBQztBQUNGLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3hDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuQzs7QUFFQSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztBQUM1RSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDcEUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUs7QUFDbEUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7QUFDOUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZGLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25DOztBQUVBLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdELENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDL0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHO0FBQ1oifQ==

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJpbXBvcnRzIjoiMiIsIm1hcHBpbmdzIjpmYWxzZSwiZGVwcyI6IjMiLCJkeW5hbWljRGVwcyI6IjQiLCJzdGF0aWNNb2NrcyI6bnVsbCwiaGFzQ292ZXJhZ2VEYXRhIjpmYWxzZX0sIi9ob21lL2VsbGEvd29yay9waXhlbC1wYXRyb2wvcGFja2FnZXMvcGl4ZWwtcGF0cm9sLWJhc2Uvc3JjL3BpeGVsX3BhdHJvbF9iYXNlL3ZpZXdlci9wbHVnaW5fZmlsZV9zdGF0cy5qcyIseyJ1cmxzIjoiNSIsImlkcyI6IjYifSxbIjciXSxbXSxbIjciXSx7fSwiL3NyYy9waXhlbF9wYXRyb2xfYmFzZS92aWV3ZXIvc2hhcmVkLmpzIl0=