shadimage
voraui
blockbtc-rainbow-chartsource: ok · hit

BTC Rainbow Chart

Bitcoin rainbow log-regression chart with Binance history and a bundled 2010-2017 seed.

npx shadcn add "https://voraui.vercel.app/r/btc-rainbow-chart.json"
free

No selection tags yet — empty means no evidence, not lack of support.

Dependencies

Bundle weight · light
lightweight-chartsnext-themes

Registry dependencies

buttonutils

Files7 · source cached 10/14/2026, 7:22:44 PM

registry/voraui/btc-rainbow-chart/index.ts
export { BtcRainbowChart, BtcRainbowLegend, type BtcRainbowChartProps } from "./btc-rainbow-chart";
export { BtcRainbowChartSkeleton } from "./components/skeleton";
export type { RainbowPoint } from "./hooks/use-btc-history";
registry/voraui/btc-rainbow-chart/btc-rainbow-chart.tsx
"use client";

import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { useTheme } from "next-themes";
import { BtcRainbowChartSkeleton } from "./components/skeleton";
import type { IChartApi, ISeriesApi, Time, UTCTimestamp } from "lightweight-charts";
import { Button } from "@/components/ui/button";
import { cn } from "@/lib/utils";
import { RainbowBandsPrimitive, DEFAULT_RAINBOW_BANDS } from "./lib/rainbow-bands";
import { createRainbowTooltip, compactUsdTick, type RainbowTooltip } from "./lib/rainbow-tooltip";
import { useBtcHistory, type RainbowPoint } from "./hooks/use-btc-history";

export interface BtcRainbowChartProps {
  /** Provide your own daily BTC series to bypass the bundled fetcher. */
  data?: RainbowPoint[];
  className?: string;
}

type Preset = "1Y" | "5Y" | "10Y" | "ALL";
const PRESETS: Preset[] = ["1Y", "5Y", "10Y", "ALL"];
type ChartPoint = { time: UTCTimestamp; value: number };

export function BtcRainbowChart({ data, className }: BtcRainbowChartProps) {
  const { resolvedTheme } = useTheme();
  const fetched = useBtcHistory({ enabled: data === undefined });
  const series = data ?? fetched.data;
  const loading = data === undefined && fetched.loading;
  const error = data === undefined ? fetched.error : null;

  const containerRef = useRef<HTMLDivElement | null>(null);
  const tooltipRef = useRef<RainbowTooltip | null>(null);
  const chartRef = useRef<IChartApi | null>(null);
  const seriesRef = useRef<ISeriesApi<"Line", Time> | null>(null);
  const primitiveRef = useRef<RainbowBandsPrimitive | null>(null);

  const [preset, setPreset] = useState<Preset>("ALL");

  const lineData = useMemo<ChartPoint[]>(() => {
    return (series ?? [])
      .filter((p) => Number.isFinite(p.time) && Number.isFinite(p.price) && p.time > 0 && p.price > 0)
      .map((p) => ({ time: p.time as UTCTimestamp, value: p.price }));
  }, [series]);

  const lineDataRef = useRef<ChartPoint[]>(lineData);
  const presetRef = useRef<Preset>(preset);
  const hasLineData = lineData.length > 0;

  const applyVisibleRange = useCallback(() => {
    const chart = chartRef.current;
    const points = lineDataRef.current;
    if (!chart || points.length === 0) return;

    if (presetRef.current === "ALL") {
      chart.timeScale().fitContent();
      return;
    }

    const first = points[0].time as number;
    const last = points[points.length - 1].time as number;
    const yearSeconds = 365 * 86_400;
    const years = presetRef.current === "1Y" ? 1 : presetRef.current === "5Y" ? 5 : 10;
    const from = Math.max(first, last - years * yearSeconds);
    chart.timeScale().setVisibleRange({
      from: from as UTCTimestamp,
      to: last as UTCTimestamp,
    });
  }, []);

  const applyLatestData = useCallback(() => {
    const lineSeries = seriesRef.current;
    const chart = chartRef.current;
    const points = lineDataRef.current;
    if (!lineSeries || !chart || points.length === 0) return;

    lineSeries.setData(points);
    applyVisibleRange();
    primitiveRef.current?.requestUpdate();
  }, [applyVisibleRange]);

  useEffect(() => {
    lineDataRef.current = lineData;
    applyLatestData();
  }, [lineData, applyLatestData]);

  useEffect(() => {
    presetRef.current = preset;
    applyVisibleRange();
  }, [preset, applyVisibleRange]);

  // Mount once per theme; data updates live in a separate effect.
  useEffect(() => {
    if (!hasLineData) return;

    let disposed = false;
    let ro: ResizeObserver | null = null;
    let chartInitialized = false;

    const initChart = async (container: HTMLDivElement) => {
      const lwc = await import("lightweight-charts");
      if (disposed) return;

      const isDark = resolvedTheme === "dark";
      const textColor = isDark ? "#9CA3AF" : "#52525b";
      const gridColor = isDark ? "rgba(148,163,184,0.10)" : "rgba(0,0,0,0.05)";
      const lineColor = isDark ? "#fafafa" : "#111111";

      const chart = lwc.createChart(container, {
        width: container.clientWidth,
        height: container.clientHeight,
        autoSize: false,
        layout: {
          background: { type: lwc.ColorType.Solid, color: "rgba(0,0,0,0)" },
          textColor,
        },
        grid: {
          vertLines: { color: gridColor },
          horzLines: { color: gridColor },
        },
        rightPriceScale: {
          mode: lwc.PriceScaleMode.Logarithmic,
          borderVisible: false,
          // Default scaleMargins (top 20% / bottom 10%) add ~3 empty decades in log
          // space, pushing the top edge label to a nonsense price ("$280M") and, on
          // narrow panes, collapsing the tick marks entirely (blank scale on mobile).
          scaleMargins: { top: 0.05, bottom: 0.05 },
        },
        timeScale: {
          borderVisible: false,
          timeVisible: false,
          secondsVisible: false,
          rightOffset: 2,
          barSpacing: 4,
          fixLeftEdge: true,
          fixRightEdge: true,
          lockVisibleTimeRangeOnResize: true,
        },
        crosshair: { mode: 0 },
        handleScroll: {
          mouseWheel: true,
          pressedMouseMove: true,
          horzTouchDrag: true,
          vertTouchDrag: false,
        },
        handleScale: {
          mouseWheel: true,
          pinch: true,
          axisPressedMouseMove: false,
          axisDoubleClickReset: true,
        },
      });

      const lineSeries = chart.addSeries(lwc.LineSeries, {
        color: lineColor,
        lineWidth: 2,
        priceLineVisible: false,
        lastValueVisible: false,
        crosshairMarkerVisible: true,
        crosshairMarkerRadius: 4,
        priceFormat: {
          type: "custom",
          // Compact ("$63.1K") so the price scale stays narrow; full-length labels
          // ("63100.00") force a wide scale that overflows and clips on mobile.
          formatter: compactUsdTick,
        },
      });

      const primitive = new RainbowBandsPrimitive(DEFAULT_RAINBOW_BANDS, 0.45);
      primitiveRef.current = primitive;
      lineSeries.attachPrimitive(primitive);

      chartRef.current = chart;
      seriesRef.current = lineSeries;
      applyLatestData();

      const tooltip = createRainbowTooltip(container, () => seriesRef.current);
      tooltipRef.current = tooltip;
      chart.subscribeCrosshairMove(tooltip.onCrosshairMove);
    };

    if (containerRef.current) {
      ro = new ResizeObserver((entries) => {
        const rect = entries[0].contentRect;
        if (rect.width > 0 && rect.height > 0 && !chartInitialized) {
          chartInitialized = true;
          initChart(containerRef.current!);
        } else if (chartInitialized && chartRef.current) {
          chartRef.current.applyOptions({
            width: rect.width,
            height: rect.height,
          });
        }
      });
      ro.observe(containerRef.current);
    }

    return () => {
      disposed = true;
      if (ro) ro.disconnect();
      tooltipRef.current?.dispose();
      tooltipRef.current = null;
      if (chartRef.current) {
        chartRef.current.remove();
        chartRef.current = null;
      }
      seriesRef.current = null;
      primitiveRef.current = null;
    };
  }, [applyLatestData, hasLineData, resolvedTheme]);

  if (loading) {
    return <BtcRainbowChartSkeleton className={className} />;
  }

  if (!hasLineData) {
    return (
      <div
        role="alert"
        className={cn(
          "flex h-[220px] items-center justify-center rounded-md border border-dashed border-border text-xs text-muted-foreground",
          className,
        )}
      >
        BTC price history is unavailable{error ? ` (${error})` : ""}.
      </div>
    );
  }

  return (
    <div className={cn("space-y-2", className)}>
      <div className="flex items-center justify-end gap-1">
        {PRESETS.map((p) => (
          <Button
            key={p}
            size="sm"
            variant={preset === p ? "default" : "outline"}
            className="h-7 px-2.5 text-[11px] font-medium"
            onClick={() => setPreset(p)}
          >
            {p}
          </Button>
        ))}
      </div>
      <div
        ref={containerRef}
        className={cn("relative h-[360px] w-full overflow-hidden sm:h-[420px]", "[&_canvas]:!touch-pan-y")}
      />
    </div>
  );
}

export function BtcRainbowLegend() {
  return (
    <div className="space-y-2">
      <div className="grid grid-cols-1 gap-1.5 sm:grid-cols-3">
        {DEFAULT_RAINBOW_BANDS.map((b) => (
          <div key={b.key} className="flex items-center gap-2 text-[11px]">
            <span
              className="h-2.5 w-2.5 shrink-0 rounded-sm"
              style={{ backgroundColor: b.color }}
              aria-hidden
            />
            <span className="truncate text-muted-foreground">{b.label}</span>
          </div>
        ))}
      </div>
      <p className="font-mono text-[10px] text-muted-foreground">
        Log-regression model. Binance history plus a bundled 2010-2017 seed.
      </p>
    </div>
  );
}
registry/voraui/btc-rainbow-chart/components/skeleton.tsx
"use client";

import { useMemo } from "react";
import { cn } from "@/lib/utils";
import { DEFAULT_RAINBOW_BANDS } from "../lib/rainbow-bands";

export interface BtcRainbowChartSkeletonProps {
  className?: string;
}

const PRESET_COUNT = 4;
const VIEW_WIDTH = 400;
const VIEW_HEIGHT = 200;
const CURVE_STEPS = 24;
const PRICE_LINE_POINTS = 70;

// Ceiling y per band at x=0 (compressed) and x=VIEW_WIDTH (fanned out),
// top to bottom; mirrors the live chart's log-regression fan shape.
const BOUNDARY_Y0 = [150, 154, 158, 162, 166, 170, 174, 178, 182];
const BOUNDARY_Y1 = [14, 36, 58, 80, 102, 124, 146, 168, 190];

function boundaryPoints(index: number): [number, number][] {
  const points: [number, number][] = [];
  for (let s = 0; s <= CURVE_STEPS; s++) {
    const t = s / CURVE_STEPS;
    const x = t * VIEW_WIDTH;
    const curve = Math.log10(1 + 9 * t); // 0 at t=0, 1 at t=1
    const y = BOUNDARY_Y0[index] + (BOUNDARY_Y1[index] - BOUNDARY_Y0[index]) * curve;
    points.push([x, y]);
  }
  return points;
}

function pointsAttr(points: [number, number][]): string {
  return points.map(([x, y]) => `${x.toFixed(1)},${y.toFixed(1)}`).join(" ");
}

/** Deterministic wavy price line; Math.random would cause a hydration mismatch. */
function pricePoints(): [number, number][] {
  const points: [number, number][] = [];
  for (let i = 0; i < PRICE_LINE_POINTS; i++) {
    const t = i / (PRICE_LINE_POINTS - 1);
    const x = t * VIEW_WIDTH;
    const curve = Math.log10(1 + 9 * t);
    // Drifts from the b7 boundary toward b4, like BTC's real path.
    const trend = BOUNDARY_Y0[6] + (BOUNDARY_Y1[3] - BOUNDARY_Y0[6]) * curve;
    const noise = Math.sin(i * 1.3) * 5 + Math.sin(i * 0.47) * 9 + Math.sin(i * 2.9) * 2.2;
    points.push([x, trend + noise]);
  }
  return points;
}

export function BtcRainbowChartSkeleton({ className }: BtcRainbowChartSkeletonProps) {
  const bandFills = useMemo(() => {
    const boundaries = DEFAULT_RAINBOW_BANDS.map((_, i) => boundaryPoints(i));
    return DEFAULT_RAINBOW_BANDS.slice(0, -1).map((_, i) => ({
      color: DEFAULT_RAINBOW_BANDS[i + 1].color,
      points: pointsAttr(boundaries[i].concat([...boundaries[i + 1]].reverse())),
    }));
  }, []);

  const pricePath = useMemo(() => pointsAttr(pricePoints()), []);

  return (
    <div className={cn("space-y-2", className)} role="status">
      <span className="sr-only">Loading BTC price history</span>
      <style href="voraui-btc-rainbow-chart-skeleton" precedence="low">{`
        @keyframes voraui-btc-rainbow-chart-skeleton-shimmer {
          from { transform: translateX(-100%); }
          to { transform: translateX(100%); }
        }
        .voraui-btc-rainbow-chart-skeleton-shimmer::after {
          content: "";
          position: absolute;
          inset: 0;
          background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.25), transparent);
          animation: voraui-btc-rainbow-chart-skeleton-shimmer 1.8s ease-in-out infinite;
        }
        @media (prefers-reduced-motion: reduce) {
          .voraui-btc-rainbow-chart-skeleton-shimmer::after {
            animation: none;
          }
        }
      `}</style>
      <div className="flex items-center justify-end gap-1">
        {Array.from({ length: PRESET_COUNT }, (_, i) => (
          <div key={i} className="h-7 w-10 rounded-md bg-muted" />
        ))}
      </div>
      <div className="voraui-btc-rainbow-chart-skeleton-shimmer relative h-[360px] w-full overflow-hidden rounded-md bg-muted/30 sm:h-[420px]">
        <svg
          viewBox={`0 0 ${VIEW_WIDTH} ${VIEW_HEIGHT}`}
          preserveAspectRatio="none"
          className="absolute inset-0 h-full w-full"
          aria-hidden="true"
        >
          {bandFills.map((band, i) => (
            <polygon key={i} points={band.points} fill={band.color} opacity={0.22} />
          ))}
          <polyline
            points={pricePath}
            fill="none"
            stroke="currentColor"
            strokeWidth={2}
            strokeLinejoin="round"
            strokeLinecap="round"
            className="text-muted-foreground/55"
          />
        </svg>
      </div>
    </div>
  );
}
registry/voraui/btc-rainbow-chart/hooks/use-btc-history.ts
"use client";

import { useEffect, useState } from "react";
import { BTC_DAILY_SEED } from "../lib/btc-seed";

export interface RainbowPoint {
  /** Unix seconds (UTC day open). */
  time: number;
  /** Daily close in USD. */
  price: number;
}

const BINANCE_KLINES_URL = "https://api.binance.com/api/v3/klines";
// First Binance BTCUSDT spot candle: 2017-08-17 00:00 UTC.
const BINANCE_BTCUSDT_START_MS = 1_502_928_000_000;
const DAY_MS = 86_400_000;

/** Merge seed and Binance series; Binance wins on any overlapping day. */
export function mergeBtcHistory(
  seed: ReadonlyArray<readonly [number, number]>,
  binance: RainbowPoint[],
): RainbowPoint[] {
  const byTime = new Map<number, number>();
  for (const [time, price] of seed) byTime.set(time, price);
  for (const point of binance) byTime.set(point.time, point.price);
  return [...byTime.entries()]
    .map(([time, price]) => ({ time, price }))
    .sort((a, b) => a.time - b.time);
}

/** Paginate Binance daily klines forward from 2017-08-17 in 1000-candle batches. */
export async function fetchBinanceDailyCloses(signal?: AbortSignal): Promise<RainbowPoint[]> {
  const out: RainbowPoint[] = [];
  let cursorMs = BINANCE_BTCUSDT_START_MS;
  // Hard cap on iterations; 20 batches of 1000 daily candles is ~54 years.
  for (let i = 0; i < 20; i++) {
    const params = new URLSearchParams({
      symbol: "BTCUSDT",
      interval: "1d",
      startTime: String(cursorMs),
      limit: "1000",
    });
    const res = await fetch(`${BINANCE_KLINES_URL}?${params}`, { signal });
    if (!res.ok) throw new Error(`Binance klines request failed: ${res.status}`);
    const batch = (await res.json()) as unknown[][];
    if (!Array.isArray(batch) || batch.length === 0) break;
    for (const k of batch) {
      const openMs = Number(k[0]);
      const close = Number(k[4]);
      if (Number.isFinite(openMs) && Number.isFinite(close)) {
        out.push({ time: Math.floor(openMs / 1000), price: close });
      }
    }
    if (batch.length < 1000) break;
    cursorMs = Number(batch[batch.length - 1][0]) + DAY_MS;
  }
  return out;
}

export function useBtcHistory(options: { enabled?: boolean } = {}) {
  const { enabled = true } = options;
  const [data, setData] = useState<RainbowPoint[] | null>(null);
  const [loading, setLoading] = useState(enabled);
  const [error, setError] = useState<string | null>(null);

  useEffect(() => {
    if (!enabled) return;
    const controller = new AbortController();

    const load = async () => {
      try {
        const binance = await fetchBinanceDailyCloses(controller.signal);
        if (controller.signal.aborted) return;
        setData(mergeBtcHistory(BTC_DAILY_SEED, binance));
        setError(null);
        setLoading(false);
      } catch (err) {
        if (controller.signal.aborted || (err as Error).name === "AbortError") return;
        setError(err instanceof Error ? err.message : "Binance klines request failed");
        setLoading(false);
      }
    };

    load();

    return () => controller.abort();
  }, [enabled]);

  return { data, loading, error };
}
registry/voraui/btc-rainbow-chart/lib/rainbow-bands.ts
/**
 * lightweight-charts series primitive painting the 9 log-regression band
 * ceilings (A * log10(days_since_genesis) + B + offset) as 8 filled strips.
 * Below the lowest band the chart stays transparent by design.
 */

import type {
  AutoscaleInfo,
  IChartApiBase,
  IPrimitivePaneRenderer,
  IPrimitivePaneView,
  ISeriesApi,
  ISeriesPrimitive,
  SeriesAttachedParameter,
  SeriesType,
  Time,
} from "lightweight-charts";

// Structural subset of fancy-canvas's CanvasRenderingTarget2D (not a direct dependency).
interface MediaScope {
  context: CanvasRenderingContext2D;
  mediaSize: { width: number; height: number };
}
interface CanvasRenderingTarget2D {
  useMediaCoordinateSpace<T>(fn: (scope: MediaScope) => T): T;
}

const A = 5.84;
const B = -17.01;
const BTC_GENESIS_MS = Date.UTC(2009, 0, 3);
const DAY_MS = 86_400_000;

export interface RainbowBand {
  key: string;
  label: string;
  offset: number;
  color: string;
}

// Ordered top -> bottom (most expensive -> cheapest).
export const DEFAULT_RAINBOW_BANDS: RainbowBand[] = [
  { key: "b1", label: "Maximum Bubble Territory", offset: 0.5, color: "#dc2626" },
  { key: "b2", label: "Sell. Seriously, SELL!", offset: 0.36, color: "#f97316" },
  { key: "b3", label: "FOMO intensifies", offset: 0.22, color: "#f59e0b" },
  { key: "b4", label: "Is this a bubble?", offset: 0.08, color: "#eab308" },
  { key: "b5", label: "HODL!", offset: -0.06, color: "#84cc16" },
  { key: "b6", label: "Still cheap", offset: -0.2, color: "#22c55e" },
  { key: "b7", label: "Accumulate", offset: -0.34, color: "#14b8a6" },
  { key: "b8", label: "BUY!", offset: -0.48, color: "#0ea5e9" },
  { key: "b9", label: "Basically a Fire Sale", offset: -0.62, color: "#2563eb" },
];

export function rainbowPriceAt(dateMs: number, offset: number): number {
  const days = Math.max((dateMs - BTC_GENESIS_MS) / DAY_MS, 1);
  return Math.pow(10, A * Math.log10(days) + B + offset);
}

/** Band the price sits inside, or null if below every ceiling. */
export function findActiveBand(
  price: number,
  dateMs: number,
  bands: RainbowBand[] = DEFAULT_RAINBOW_BANDS,
): RainbowBand | null {
  // Walk top→bottom; the first ceiling crossed is the visible band.
  const sorted = [...bands].sort((a, b) => b.offset - a.offset);
  for (const band of sorted) {
    const ceiling = rainbowPriceAt(dateMs, band.offset);
    if (price >= ceiling) {
      return band;
    }
  }
  return null;
}

class RainbowBandsRenderer implements IPrimitivePaneRenderer {
  constructor(
    private chart: IChartApiBase<Time> | null,
    private series: ISeriesApi<SeriesType, Time> | null,
    private bands: RainbowBand[],
    private fillOpacity: number,
  ) {}

  draw(target: CanvasRenderingTarget2D): void {
    const chart = this.chart;
    const series = this.series;
    if (!chart || !series) return;

    target.useMediaCoordinateSpace(({ context: ctx, mediaSize }) => {
      const width = mediaSize.width;
      if (width <= 0) return;

      const timeScale = chart.timeScale();

      // Sample every ~6 CSS px: smooth enough, cheap on zoom/resize.
      const STEP = 6;
      const sampleCount = Math.max(2, Math.ceil(width / STEP));

      const xs: number[] = [];
      const dates: number[] = [];
      for (let i = 0; i < sampleCount; i++) {
        const x = (i / (sampleCount - 1)) * width;
        const t = timeScale.coordinateToTime(x);
        if (t === null) continue;
        const ms = timeToMs(t);
        if (ms === null) continue;
        xs.push(x);
        dates.push(ms);
      }
      if (xs.length < 2) return;

      // Sort bands top -> bottom (highest offset first).
      const sorted = [...this.bands].sort((a, b) => b.offset - a.offset);

      // Precompute ceiling y-coords for every band at every sample x.
      const ceilingYs: number[][] = sorted.map(() => new Array(xs.length).fill(NaN));
      for (let s = 0; s < xs.length; s++) {
        const dateMs = dates[s];
        for (let b = 0; b < sorted.length; b++) {
          const price = rainbowPriceAt(dateMs, sorted[b].offset);
          const y = series.priceToCoordinate(price);
          if (y !== null) ceilingYs[b][s] = y;
        }
      }

      // Each strip between consecutive ceilings gets the lower band's color.
      ctx.save();
      ctx.globalAlpha = this.fillOpacity;
      for (let b = 0; b < sorted.length - 1; b++) {
        const topYs = ceilingYs[b];
        const bottomYs = ceilingYs[b + 1];
        ctx.fillStyle = sorted[b + 1].color;
        ctx.beginPath();
        let started = false;
        for (let s = 0; s < xs.length; s++) {
          const y = topYs[s];
          if (!Number.isFinite(y)) continue;
          if (!started) {
            ctx.moveTo(xs[s], y);
            started = true;
          } else {
            ctx.lineTo(xs[s], y);
          }
        }
        for (let s = xs.length - 1; s >= 0; s--) {
          const y = bottomYs[s];
          if (!Number.isFinite(y)) continue;
          ctx.lineTo(xs[s], y);
        }
        ctx.closePath();
        ctx.fill();
      }
      ctx.restore();
    });
  }
}

class RainbowBandsPaneView implements IPrimitivePaneView {
  constructor(private primitive: RainbowBandsPrimitive) {}

  zOrder() {
    return "bottom" as const;
  }

  renderer(): IPrimitivePaneRenderer | null {
    return new RainbowBandsRenderer(
      this.primitive.chart,
      this.primitive.series,
      this.primitive.bands,
      this.primitive.fillOpacity,
    );
  }
}

export class RainbowBandsPrimitive implements ISeriesPrimitive<Time> {
  chart: IChartApiBase<Time> | null = null;
  series: ISeriesApi<SeriesType, Time> | null = null;
  bands: RainbowBand[];
  fillOpacity: number;

  private paneView: RainbowBandsPaneView;
  private requestChartUpdate: (() => void) | null = null;

  constructor(bands: RainbowBand[] = DEFAULT_RAINBOW_BANDS, fillOpacity = 0.45) {
    this.bands = bands;
    this.fillOpacity = fillOpacity;
    this.paneView = new RainbowBandsPaneView(this);
  }

  requestUpdate(): void {
    this.requestChartUpdate?.();
  }

  attached(param: SeriesAttachedParameter<Time, SeriesType>): void {
    this.chart = param.chart;
    this.series = param.series;
    this.requestChartUpdate = param.requestUpdate;
  }

  detached(): void {
    this.chart = null;
    this.series = null;
    this.requestChartUpdate = null;
  }

  updateAllViews(): void {
    // No internal state; values are computed at draw time.
  }

  paneViews(): readonly IPrimitivePaneView[] {
    return [this.paneView];
  }

  autoscaleInfo(): AutoscaleInfo | null {
    if (!this.chart || this.bands.length === 0) return null;

    const range = this.chart.timeScale().getVisibleRange();
    if (!range) return null;

    const fromMs = timeToMs(range.from);
    const toMs = timeToMs(range.to);
    if (fromMs === null || toMs === null) return null;

    const sorted = [...this.bands].sort((a, b) => b.offset - a.offset);
    const startMs = Math.min(fromMs, toMs);
    const endMs = Math.max(fromMs, toMs);
    const minValue = rainbowPriceAt(startMs, sorted[sorted.length - 1].offset);
    const maxValue = rainbowPriceAt(endMs, sorted[0].offset);

    if (!Number.isFinite(minValue) || !Number.isFinite(maxValue) || minValue <= 0 || maxValue <= minValue) {
      return null;
    }

    return {
      priceRange: { minValue, maxValue },
      margins: { above: 12, below: 12 },
    };
  }
}

/** Time to UTC ms; handles number, string, and business-day shapes. */
function timeToMs(t: Time): number | null {
  if (typeof t === "number") return t * 1000;
  if (typeof t === "string") {
    const parsed = Date.parse(t);
    return Number.isFinite(parsed) ? parsed : null;
  }
  if (t && typeof t === "object" && "year" in t) {
    const bd = t as { year: number; month: number; day: number };
    return Date.UTC(bd.year, bd.month - 1, bd.day);
  }
  return null;
}
registry/voraui/btc-rainbow-chart/lib/rainbow-tooltip.ts
import type { ISeriesApi, MouseEventParams, Time } from "lightweight-charts";
import { DEFAULT_RAINBOW_BANDS, findActiveBand, type RainbowBand } from "./rainbow-bands";

export function compactUsd(n: number): string {
  if (!Number.isFinite(n) || n === 0) return "-";
  if (n >= 1e9) return `$${(n / 1e9).toFixed(2)}B`;
  if (n >= 1e6) return `$${(n / 1e6).toFixed(2)}M`;
  if (n >= 1e3) return `$${(n / 1e3).toFixed(2)}K`;
  if (n >= 1) return `$${n.toFixed(2)}`;
  return `$${n.toFixed(4)}`;
}

/**
 * Compact price for axis ticks: like {@link compactUsd} but drops trailing
 * ".00" so labels stay short (e.g. "$280M" not "$280000000.00"). Full-length
 * labels force a price scale wide enough to overflow and clip on mobile.
 */
export function compactUsdTick(n: number): string {
  if (!Number.isFinite(n) || n === 0) return "-";
  const trim = (v: number) => v.toFixed(2).replace(/\.?0+$/, "");
  if (n >= 1e9) return `$${trim(n / 1e9)}B`;
  if (n >= 1e6) return `$${trim(n / 1e6)}M`;
  if (n >= 1e3) return `$${trim(n / 1e3)}K`;
  if (n >= 1) return `$${trim(n)}`;
  return `$${n.toFixed(4).replace(/0+$/, "")}`;
}

function escapeHtml(value: string): string {
  return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
}

/** Pure renderer for the tooltip body; exported for tests. */
export function renderRainbowTooltipHtml(
  dateStr: string,
  price: number,
  band: RainbowBand | null,
): string {
  return `
    <div class="text-zinc-400">${dateStr}</div>
    <div class="mt-1 font-semibold text-white tabular-nums">${compactUsd(price)}</div>
    ${band
      ? `<div class="mt-1.5 flex items-center gap-1.5">
           <span class="h-2 w-2 shrink-0 rounded-full" style="background-color:${band.color}"></span>
           <span class="text-[11px] text-zinc-300">${escapeHtml(band.label)}</span>
         </div>`
      : ""}
  `;
}

export interface RainbowTooltip {
  /** Pass to chart.subscribeCrosshairMove. */
  onCrosshairMove: (param: MouseEventParams<Time>) => void;
  dispose: () => void;
}

export function createRainbowTooltip(
  container: HTMLElement,
  getSeries: () => ISeriesApi<"Line", Time> | null,
): RainbowTooltip {
  const tooltip = document.createElement("div");
  tooltip.style.position = "absolute";
  tooltip.style.zIndex = "30";
  tooltip.style.pointerEvents = "none";
  tooltip.style.display = "none";
  tooltip.className =
    "rounded-lg border border-zinc-800 bg-zinc-900/95 px-3 py-2 text-xs shadow-xl backdrop-blur-sm";
  container.appendChild(tooltip);

  const hide = () => {
    tooltip.style.display = "none";
  };

  const onCrosshairMove = (param: MouseEventParams<Time>) => {
    const series = getSeries();
    if (
      !series ||
      !param.point ||
      !param.time ||
      param.point.x < 0 ||
      param.point.y < 0 ||
      param.point.x > container.clientWidth ||
      param.point.y > container.clientHeight
    ) {
      hide();
      return;
    }
    const priceData = param.seriesData.get(series) as { value: number } | undefined;
    if (!priceData) {
      hide();
      return;
    }
    const ts = typeof param.time === "number" ? param.time * 1000 : NaN;
    if (!Number.isFinite(ts)) {
      hide();
      return;
    }

    const dateStr = new Date(ts).toISOString().slice(0, 10);
    const band = findActiveBand(priceData.value, ts, DEFAULT_RAINBOW_BANDS);
    tooltip.innerHTML = renderRainbowTooltipHtml(dateStr, priceData.value, band);

    tooltip.style.display = "block";
    const ttWidth = tooltip.offsetWidth || 140;
    const ttHeight = tooltip.offsetHeight || 60;
    let left = param.point.x + 12;
    let top = param.point.y - ttHeight - 12;
    if (left + ttWidth > container.clientWidth - 4) {
      left = param.point.x - ttWidth - 12;
    }
    if (top < 4) top = param.point.y + 12;
    tooltip.style.left = `${left}px`;
    tooltip.style.top = `${top}px`;
  };

  return {
    onCrosshairMove,
    dispose: () => tooltip.remove(),
  };
}
registry/voraui/btc-rainbow-chart/lib/btc-seed.ts
// Generated by scripts/generate-btc-seed.mjs. Do not edit by hand.
// BTC daily closes 2010-07-18 .. 2017-08-16 as [unixSeconds, closeUsd].
// Source: Coin Metrics community data (historical closes never change).
export const BTC_DAILY_SEED: ReadonlyArray<readonly [number, number]> = [
  [1279411200, 0.0858],
  [1279497600, 0.0808],
  [1279584000, 0.0747],
  [1279670400, 0.0792],
  [1279756800, 0.0585],
  [1279843200, 0.0606],
  [1279929600, 0.0545],
  [1280016000, 0.0505],
  [1280102400, 0.056],
  [1280188800, 0.0586],
  [1280275200, 0.0589],
  [1280361600, 0.0699],
  [1280448000, 0.0647],
  [1280534400, 0.0675],
  [1280620800, 0.0611],
  [1280707200, 0.06],
  [1280793600, 0.06],
  [1280880000, 0.057],
  [1280966400, 0.061],
  [1281052800, 0.0617],
  [1281139200, 0.059],
  [1281225600, 0.0609],
  [1281312000, 0.0704],
  [1281398400, 0.0693],
  [1281484800, 0.067],
  [1281571200, 0.07],
  [1281657600, 0.0645],
  [1281744000, 0.067],
  [1281830400, 0.0651],
  [1281916800, 0.0655],
  [1282003200, 0.07],
  [1282089600, 0.068],
  [1282176000, 0.0667],
  [1282262400, 0.0655],
  [1282348800, 0.0664],
  [1282435200, 0.0659],
  [1282521600, 0.0649],
  [1282608000, 0.065],
  [1282694400, 0.0648],
  [1282780800, 0.0641],
  [1282867200, 0.065],
  [1282953600, 0.0646],
  [1283040000, 0.064],
  [1283126400, 0.065],
  [1283212800, 0.06],
  [1283299200, 0.062],
  [1283385600, 0.0634],
  [1283472000, 0.0609],
  [1283558400, 0.0622],
  [1283644800, 0.0617],
  [1283731200, 0.0616],
  [1283817600, 0.0612],
  [1283904000, 0.061],
  [1283990400, 0.0611],
  [1284076800, 0.061],
  [1284163200, 0.0636],
  [1284249600, 0.0615],
  [1284336000, 0.0622],
  [1284422400, 0.062],
  [1284508800, 0.0604],
  [1284595200, 0.0619],
  [1284681600, 0.06],
  [1284768000, 0.061],
  [1284854400, 0.0627],
  [1284940800, 0.0621],
  [1285027200, 0.0626],
  [1285113600, 0.0619],
  [1285200000, 0.0622],
  [1285286400, 0.0622],
  [1285372800, 0.062],
  [1285459200, 0.062],
  [1285545600, 0.0622],
  [1285632000, 0.0619],
  [1285718400, 0.0619],
  [1285804800, 0.0619],
  [1285891200, 0.062],
  [1285977600, 0.0614],
  [1286064000, 0.0611],
  [1286150400, 0.0613],
  [1286236800, 0.0614],
  [1286323200, 0.0628],
  [1286409600, 0.067],
  [1286496000, 0.0845],
  [1286582400, 0.0938],
  [1286668800, 0.0971],
  [1286755200, 0.095],
  [1286841600, 0.0949],
  [1286928000, 0.1049],
  [1287014400, 0.102],
  [1287100800, 0.105],
  [1287187200, 0.101],
  [1287273600, 0.102],
  [1287360000, 0.1024],
  [1287446400, 0.0975],
  [1287532800, 0.099],
  [1287619200, 0.107],
  [1287705600, 0.1025],
  [1287792000, 0.1046],
  [1287878400, 0.115],
  [1287964800, 0.1391],
  [1288051200, 0.151],
  [1288137600, 0.1877],
  [1288224000, 0.1731],
  [1288310400, 0.19],
  [1288396800, 0.1976],
  [1288483200, 0.1925],
  [1288569600, 0.1945],
  [1288656000, 0.1938],
  [1288742400, 0.1931],
  [1288828800, 0.2293],
  [1288915200, 0.2591],
  [1289001600, 0.401],
  [1289088000, 0.34],
  [1289174400, 0.2432],
  [1289260800, 0.2173],
  [1289347200, 0.2295],
  [1289433600, 0.2231],
  [1289520000, 0.2682],
  [1289606400, 0.276],
  [1289692800, 0.279],
  [1289779200, 0.2685],
  [1289865600, 0.225],
  [1289952000, 0.2419],
  [1290038400, 0.2691],
  [1290124800, 0.2783],
  [1290211200, 0.283],
  [1290297600, 0.2767],
  [1290384000, 0.285],
  [1290470400, 0.2829],
  [1290556800, 0.2829],
  [1290643200, 0.28],
  [1290729600, 0.2844],
  [1290816000, 0.283],
  [1290902400, 0.2714],
  [1290988800, 0.2306],
  [1291075200, 0.2082],
  [1291161600, 0.2275],
  [1291248000, 0.255],
  [1291334400, 0.2511],
  [1291420800, 0.205],
  [1291507200, 0.2029],
  [1291593600, 0.204],
  [1291680000, 0.2334],
  [1291766400, 0.2388],
  [1291852800, 0.2],
  [1291939200, 0.204],
  [1292025600, 0.228],
  [1292112000, 0.2199],
  [1292198400, 0.2276],
  [1292284800, 0.2467],
  [1292371200, 0.24],
  [1292457600, 0.25],
  [1292544000, 0.2427],
  [1292630400, 0.241],
  [1292716800, 0.2401],
  [1292803200, 0.267],
  [1292889600, 0.2414],
  [1292976000, 0.25],
  [1293062400, 0.25],
  [1293148800, 0.248],
  [1293235200, 0.2499],
  [1293321600, 0.265],
  [1293408000, 0.2648],
  [1293494400, 0.281],
  [1293580800, 0.3],
  [1293667200, 0.3],
  [1293753600, 0.3],
  [1293840000, 0.3],
  [1293926400, 0.3],
  [1294012800, 0.295],
  [1294099200, 0.2989],
  [1294185600, 0.2989],
  [1294272000, 0.298],
  [1294358400, 0.32],
  [1294444800, 0.3229],
  [1294531200, 0.323],
  [1294617600, 0.3266],
  [1294704000, 0.3266],
  [1294790400, 0.3188],
  [1294876800, 0.3176],
  [1294963200, 0.4],
  [1295049600, 0.386],
  [1295136000, 0.3868],
  [1295222400, 0.3495],
  [1295308800, 0.313],
  [1295395200, 0.313],
  [1295481600, 0.39],
  [1295568000, 0.4199],
  [1295654400, 0.44],
  [1295740800, 0.4424],
  [1295827200, 0.4199],
  [1295913600, 0.41],
  [1296000000, 0.4151],
  [1296086400, 0.4212],
  [1296172800, 0.4445],
  [1296259200, 0.439],
  [1296345600, 0.4771],
  [1296432000, 0.5251],
  [1296518400, 0.7075],
  [1296604800, 0.7254],
  [1296691200, 0.6939],
  [1296777600, 0.811],
  [1296864000, 0.9117],
  [1296950400, 0.898],
  [1297036800, 0.8894],
  [1297123200, 0.918],
  [1297209600, 1.0161],
  [1297296000, 0.9797],
  [1297382400, 1.0541],
  [1297468800, 1.0787],
  [1297555200, 1.05],
  [1297641600, 1.07],
  [1297728000, 1.05],
  [1297814400, 1.0317],
  [1297900800, 1.0399],
  [1297987200, 0.899],
  [1298073600, 0.944],
  [1298160000, 0.865],
  [1298246400, 0.8357],
  [1298332800, 0.877],
  [1298419200, 0.9],
  [1298505600, 0.9891],
  [1298592000, 0.9147],
  [1298678400, 0.958],
  [1298764800, 0.895],
  [1298851200, 0.8602],
  [1298937600, 0.9211],
  [1299024000, 0.9399],
  [1299110400, 0.9391],
  [1299196800, 0.9011],
  [1299283200, 0.9078],
  [1299369600, 0.8848],
  [1299456000, 0.8776],
  [1299542400, 0.8661],
  [1299628800, 0.86],
  [1299715200, 0.9207],
  [1299801600, 0.88],
  [1299888000, 0.9178],
  [1299974400, 0.8925],
  [1300060800, 0.8939],
  [1300147200, 0.8722],
  [1300233600, 0.8512],
  [1300320000, 0.8254],
  [1300406400, 0.802],
  [1300492800, 0.765],
  [1300579200, 0.7415],
  [1300665600, 0.759],
  [1300752000, 0.8091],
  [1300838400, 0.8497],
  [1300924800, 0.8724],
  [1301011200, 0.8838],
  [1301097600, 0.8552],
  [1301184000, 0.822],
  [1301270400, 0.7947],
  [1301356800, 0.7925],
  [1301443200, 0.7897],
  [1301529600, 0.7846],
  [1301616000, 0.7741],
  [1301702400, 0.782],
  [1301788800, 0.779],
  [1301875200, 0.68],
  [1301961600, 0.7157],
  [1302048000, 0.74],
  [1302134400, 0.7538],
  [1302220800, 0.75],
  [1302307200, 0.7341],
  [1302393600, 0.7332],
  [1302480000, 0.7701],
  [1302566400, 0.8614],
  [1302652800, 0.9303],
  [1302739200, 0.9986],
  [1302825600, 0.9837],
  [1302912000, 1.0466],
  [1302998400, 1.0981],
  [1303084800, 1.1494],
  [1303171200, 1.1852],
  [1303257600, 1.1421],
  [1303344000, 1.2073],
  [1303430400, 1.4045],
  [1303516800, 1.8289],
  [1303603200, 1.632],
  [1303689600, 1.5645],
  [1303776000, 1.7708],
  [1303862400, 1.9032],
  [1303948800, 2.2857],
  [1304035200, 2.8506],
  [1304121600, 3.5],
  [1304208000, 3.0942],
  [1304294400, 3.2],
  [1304380800, 3.3606],
  [1304467200, 3.4087],
  [1304553600, 3.3437],
  [1304640000, 3.4551],
  [1304726400, 3.6413],
  [1304812800, 3.8487],
  [1304899200, 3.8041],
  [1304985600, 5.6517],
  [1305072000, 5.4398],
  [1305158400, 6.3349],
  [1305244800, 8.139],
  [1305331200, 7.0072],
  [1305417600, 6.9249],
  [1305504000, 7.8851],
  [1305590400, 7.2572],
  [1305676800, 6.7632],
  [1305763200, 6.8901],
  [1305849600, 5.6181],
  [1305936000, 6.0848],
  [1306022400, 6.712],
  [1306108800, 7.0653],
  [1306195200, 7.4027],
  [1306281600, 8.5693],
  [1306368000, 8.7822],
  [1306454400, 8.5287],
  [1306540800, 8.3493],
  [1306627200, 8.401],
  [1306713600, 8.7793],
  [1306800000, 8.7216],
  [1306886400, 9.6238],
  [1306972800, 10.7028],
  [1307059200, 14.2646],
  [1307145600, 18.3127],
  [1307232000, 16.5433],
  [1307318400, 18.4021],
  [1307404800, 23.2379],
  [1307491200, 29.0299],
  [1307577600, 28.7905],
  [1307664000, 24.0494],
  [1307750400, 14.7497],
  [1307836800, 18.8501],
  [1307923200, 19.5423],
  [1308009600, 19.2577],
  [1308096000, 19.4641],
  [1308182400, 17.9294],
  [1308268800, 15.4364],
  [1308355200, 16.8754],
  [1308441600, 17.5107],
  [1308528000, 17.5107],
  [1308614400, 17.5107],
  [1308700800, 17.5107],
  [1308787200, 17.5107],
  [1308873600, 17.5107],
  [1308960000, 17.5107],
  [1309046400, 16.3613],
  [1309132800, 16.7523],
  [1309219200, 16.9618],
  [1309305600, 16.8546],
  [1309392000, 16.1853],
  [1309478400, 15.4204],
  [1309564800, 15.3828],
  [1309651200, 15.4576],
  [1309737600, 13.8528],
  [1309824000, 12.9648],
  [1309910400, 14.7148],
  [1309996800, 14.7973],
  [1310083200, 14.299],
  [1310169600, 14.3815],
  [1310256000, 14.6229],
  [1310342400, 14.3102],
  [1310428800, 14.0213],
  [1310515200, 13.9715],
  [1310601600, 13.998],
  [1310688000, 13.8064],
  [1310774400, 13.7131],
  [1310860800, 13.2581],
  [1310947200, 13.6305],
  [1311033600, 13.8248],
  [1311120000, 13.6783],
  [1311206400, 13.6118],
  [1311292800, 13.6985],
  [1311379200, 13.6817],
  [1311465600, 13.9925],
  [1311552000, 14.0334],
  [1311638400, 13.878],
  [1311724800, 13.8782],
  [1311811200, 13.4916],
  [1311897600, 13.5123],
  [1311984000, 13.5403],
  [1312070400, 13.3729],
  [1312156800, 13.0191],
  [1312243200, 12.2142],
  [1312329600, 9.2864],
  [1312416000, 10.7685],
  [1312502400, 9.7302],
  [1312588800, 6.9642],
  [1312675200, 8.5018],
  [1312761600, 7.7753],
  [1312848000, 9.8025],
  [1312934400, 10.0513],
  [1313020800, 9.4384],
  [1313107200, 9.453],
  [1313193600, 10.004],
  [1313280000, 10.8068],
  [1313366400, 11.1307],
  [1313452800, 10.992],
  [1313539200, 10.964],
  [1313625600, 10.8585],
  [1313712000, 11.6705],
  [1313798400, 11.4597],
  [1313884800, 11.3545],
  [1313971200, 10.9209],
  [1314057600, 10.9172],
  [1314144000, 10.8704],
  [1314230400, 9.5461],
  [1314316800, 8.1269],
  [1314403200, 8.5965],
  [1314489600, 9.0309],
  [1314576000, 8.9612],
  [1314662400, 8.8099],
  [1314748800, 8.1992],
  [1314835200, 8.2343],
  [1314921600, 8.6214],
  [1315008000, 8.4497],
  [1315094400, 8.2035],
  [1315180800, 7.5973],
  [1315267200, 6.8465],
  [1315353600, 7.163],
  [1315440000, 6.6782],
  [1315526400, 4.9868],
  [1315612800, 4.7428],
  [1315699200, 5.8529],
  [1315785600, 6.0906],
  [1315872000, 5.8025],
  [1315958400, 5.5974],
  [1316044800, 4.8678],
  [1316131200, 4.8312],
  [1316217600, 4.7753],
  [1316304000, 5.2367],
  [1316390400, 5.5204],
  [1316476800, 6.1467],
  [1316563200, 5.5971],
  [1316649600, 5.475],
  [1316736000, 5.5634],
  [1316822400, 5.4579],
  [1316908800, 5.3412],
  [1316995200, 4.8738],
  [1317081600, 4.9112],
  [1317168000, 4.7634],
  [1317254400, 4.7777],
  [1317340800, 5.1437],
  [1317427200, 5.0341],
  [1317513600, 5.0071],
  [1317600000, 5.0228],
  [1317686400, 4.9568],
  [1317772800, 4.8851],
  [1317859200, 4.7302],
  [1317945600, 4.276],
  [1318032000, 3.9813],
  [1318118400, 4.1116],
  [1318204800, 4.075],
  [1318291200, 4.0089],
  [1318377600, 4.1662],
  [1318464000, 4.037],
  [1318550400, 3.9863],
  [1318636800, 3.8373],
  [1318723200, 3.6097],
  [1318809600, 2.5812],
  [1318896000, 2.4223],
  [1318982400, 2.2173],
  [1319068800, 2.3561],
  [1319155200, 2.5701],
  [1319241600, 3.1555],
  [1319328000, 3.1478],
  [1319414400, 2.5229],
  [1319500800, 2.8019],
  [1319587200, 2.7775],
  [1319673600, 3.0454],
  [1319760000, 3.1796],
  [1319846400, 3.5692],
  [1319932800, 3.2574],
  [1320019200, 3.2651],
  [1320105600, 3.171],
  [1320192000, 3.2558],
  [1320278400, 3.1683],
  [1320364800, 3.1201],
  [1320451200, 2.9778],
  [1320537600, 2.9627],
  [1320624000, 3.0178],
  [1320710400, 3.0566],
  [1320796800, 2.9196],
  [1320883200, 2.8567],
  [1320969600, 3.0679],
  [1321056000, 3.0255],
  [1321142400, 2.9864],
  [1321228800, 2.2242],
  [1321315200, 2.3224],
  [1321401600, 2.5468],
  [1321488000, 2.2791],
  [1321574400, 2.1051],
  [1321660800, 2.2035],
  [1321747200, 2.202],
  [1321833600, 2.2799],
  [1321920000, 2.3225],
  [1322006400, 2.3303],
  [1322092800, 2.4389],
  [1322179200, 2.4962],
  [1322265600, 2.4718],
  [1322352000, 2.4776],
  [1322438400, 2.5412],
  [1322524800, 2.7577],
  [1322611200, 2.966],
  [1322697600, 3.0826],
  [1322784000, 3.1004],
  [1322870400, 2.8039],
  [1322956800, 2.8197],
  [1323043200, 2.8748],
  [1323129600, 3.0254],
  [1323216000, 2.9855],
  [1323302400, 2.9919],
  [1323388800, 2.9558],
  [1323475200, 3.069],
  [1323561600, 3.2493],
  [1323648000, 3.1873],
  [1323734400, 3.2411],
  [1323820800, 3.1551],
  [1323907200, 3.2031],
  [1323993600, 3.2091],
  [1324080000, 3.1925],
  [1324166400, 3.194],
  [1324252800, 3.5258],
  [1324339200, 3.9526],
  [1324425600, 3.889],
  [1324512000, 3.9031],
  [1324598400, 3.938],
  [1324684800, 3.9394],
  [1324771200, 4.2339],
  [1324857600, 3.9991],
  [1324944000, 4.0955],
  [1325030400, 4.2073],
  [1325116800, 4.1734],
  [1325203200, 4.3106],
  [1325289600, 4.7143],
  [1325376000, 5.2948],
  [1325462400, 5.2049],
  [1325548800, 4.8705],
  [1325635200, 5.5857],
  [1325721600, 6.874],
  [1325808000, 6.6833],
  [1325894400, 6.7962],
  [1325980800, 7.0967],
  [1326067200, 6.2885],
  [1326153600, 6.5285],
  [1326240000, 6.8891],
  [1326326400, 6.7736],
  [1326412800, 6.4544],
  [1326499200, 6.7617],
  [1326585600, 7.0469],
  [1326672000, 6.7156],
  [1326758400, 5.5996],
  [1326844800, 5.9002],
  [1326931200, 6.3157],
  [1327017600, 6.5015],
  [1327104000, 6.1806],
  [1327190400, 6.303],
  [1327276800, 6.3749],
  [1327363200, 6.2745],
  [1327449600, 5.8105],
  [1327536000, 5.3672],
  [1327622400, 5.3031],
  [1327708800, 5.6598],
  [1327795200, 5.3914],
  [1327881600, 5.5035],
  [1327968000, 5.5382],
  [1328054400, 6.0752],
  [1328140800, 6.0996],
  [1328227200, 5.9516],
  [1328313600, 5.8954],
  [1328400000, 5.6781],
  [1328486400, 5.4827],
  [1328572800, 5.662],
  [1328659200, 5.6185],
  [1328745600, 5.8357],
  [1328832000, 5.9378],
  [1328918400, 5.6121],
  [1329004800, 5.5191],
  [1329091200, 5.3484],
  [1329177600, 4.4837],
  [1329264000, 4.3255],
  [1329350400, 4.2552],
  [1329436800, 4.3915],
  [1329523200, 4.2701],
  [1329609600, 4.3896],
  [1329696000, 4.3651],
  [1329782400, 4.3151],
  [1329868800, 4.4193],
  [1329955200, 5.0395],
  [1330041600, 5.0256],
  [1330128000, 4.7726],
  [1330214400, 4.9264],
  [1330300800, 4.9525],
  [1330387200, 4.8573],
  [1330473600, 4.8727],
  [1330560000, 4.9221],
  [1330646400, 4.7148],
  [1330732800, 4.6282],
  [1330819200, 4.8341],
  [1330905600, 4.9824],
  [1330992000, 4.9878],
  [1331078400, 4.9491],
  [1331164800, 4.935],
  [1331251200, 4.8723],
  [1331337600, 4.8414],
  [1331424000, 4.892],
  [1331510400, 4.9108],
  [1331596800, 5.2909],
  [1331683200, 5.3905],
  [1331769600, 5.3408],
  [1331856000, 5.3396],
  [1331942400, 5.236],
  [1332028800, 5.2701],
  [1332115200, 4.6787],
  [1332201600, 4.8308],
  [1332288000, 4.8172],
  [1332374400, 4.7296],
  [1332460800, 4.6916],
  [1332547200, 4.652],
  [1332633600, 4.5523],
  [1332720000, 4.6327],
  [1332806400, 4.8113],
  [1332892800, 4.7906],
  [1332979200, 4.7941],
  [1333065600, 4.8614],
  [1333152000, 4.8898],
  [1333238400, 4.7933],
  [1333324800, 4.983],
  [1333411200, 4.9562],
  [1333497600, 4.9178],
  [1333584000, 4.9208],
  [1333670400, 4.9491],
  [1333756800, 4.7097],
  [1333843200, 4.7788],
  [1333929600, 4.8525],
  [1334016000, 4.8414],
  [1334102400, 4.9153],
  [1334188800, 4.9012],
  [1334275200, 4.9344],
  [1334361600, 4.9564],
  [1334448000, 4.9616],
  [1334534400, 4.9508],
  [1334620800, 4.9687],
  [1334707200, 5.1244],
  [1334793600, 5.1309],
  [1334880000, 5.3665],
  [1334966400, 5.2826],
  [1335052800, 5.1956],
  [1335139200, 5.1109],
  [1335225600, 5.0879],
  [1335312000, 5.1488],
  [1335398400, 5.0974],
  [1335484800, 5.0959],
  [1335571200, 4.9707],
  [1335657600, 4.9026],
  [1335744000, 4.9421],
  [1335830400, 4.9871],
  [1335916800, 5.0534],
  [1336003200, 5.1189],
  [1336089600, 5.0855],
  [1336176000, 5.0566],
  [1336262400, 5.0478],
  [1336348800, 5.0676],
  [1336435200, 5.0235],
  [1336521600, 5.0413],
  [1336608000, 4.9275],
  [1336694400, 4.9637],
  [1336780800, 4.9465],
  [1336867200, 4.9448],
  [1336953600, 5.0114],
  [1337040000, 5.0336],
  [1337126400, 5.0878],
  [1337212800, 5.0897],
  [1337299200, 5.1183],
  [1337385600, 5.1125],
  [1337472000, 5.0942],
  [1337558400, 5.0942],
  [1337644800, 5.0891],
  [1337731200, 5.1289],
  [1337817600, 5.1192],
  [1337904000, 5.1373],
  [1337990400, 5.104],
  [1338076800, 5.1346],
  [1338163200, 5.1363],
  [1338249600, 5.1485],
  [1338336000, 5.1383],
  [1338422400, 5.1816],
  [1338508800, 5.2669],
  [1338595200, 5.2436],
  [1338681600, 5.2127],
  [1338768000, 5.2588],
  [1338854400, 5.426],
  [1338940800, 5.4462],
  [1339027200, 5.5872],
  [1339113600, 5.6225],
  [1339200000, 5.557],
  [1339286400, 5.4579],
  [1339372800, 5.587],
  [1339459200, 5.7275],
  [1339545600, 5.9093],
  [1339632000, 5.962],
  [1339718400, 6.5234],
  [1339804800, 6.4442],
  [1339891200, 6.2],
  [1339977600, 6.3108],
  [1340064000, 6.4948],
  [1340150400, 6.6936],
  [1340236800, 6.6723],
  [1340323200, 6.5638],
  [1340409600, 6.4475],
  [1340496000, 6.3505],
  [1340582400, 6.3175],
  [1340668800, 6.4329],
  [1340755200, 6.6157],
  [1340841600, 6.5901],
  [1340928000, 6.6588],
  [1341014400, 6.6804],
  [1341100800, 6.6269],
  [1341187200, 6.7435],
  [1341273600, 6.45],
  [1341360000, 6.5148],
  [1341446400, 6.6424],
  [1341532800, 6.6722],
  [1341619200, 6.8083],
  [1341705600, 6.7963],
  [1341792000, 7.0324],
  [1341878400, 7.1786],
  [1341964800, 7.1851],
  [1342051200, 7.5559],
  [1342137600, 7.6309],
  [1342224000, 7.5801],
  [1342310400, 7.6272],
  [1342396800, 8.4934],
  [1342483200, 8.752],
  [1342569600, 9.0952],
  [1342656000, 8.8795],
  [1342742400, 8.5325],
  [1342828800, 8.8756],
  [1342915200, 8.5066],
  [1343001600, 8.5312],
  [1343088000, 8.5746],
  [1343174400, 8.7693],
  [1343260800, 8.8758],
  [1343347200, 8.8915],
  [1343433600, 8.8426],
  [1343520000, 8.7477],
  [1343606400, 9.0883],
  [1343692800, 9.321],
  [1343779200, 9.568],
  [1343865600, 10.551],
  [1343952000, 10.9159],
  [1344038400, 10.9197],
  [1344124800, 10.8051],
  [1344211200, 10.8694],
  [1344297600, 10.9413],
  [1344384000, 11.0704],
  [1344470400, 11.1037],
  [1344556800, 11.4476],
  [1344643200, 11.5425],
  [1344729600, 11.5926],
  [1344816000, 11.985],
  [1344902400, 12.1871],
  [1344988800, 13.1701],
  [1345075200, 13.4508],
  [1345161600, 12.077],
  [1345248000, 11.5775],
  [1345334400, 7.8306],
  [1345420800, 9.9799],
  [1345507200, 9.903],
  [1345593600, 9.7726],
  [1345680000, 10.0887],
  [1345766400, 10.594],
  [1345852800, 10.5837],
  [1345939200, 10.5455],
  [1346025600, 10.9004],
  [1346112000, 10.933],
  [1346198400, 10.8678],
  [1346284800, 10.7277],
  [1346371200, 10.1024],
  [1346457600, 10.0065],
  [1346544000, 10.2261],
  [1346630400, 10.4971],
  [1346716800, 10.364],
  [1346803200, 11.0255],
  [1346889600, 11.1608],
  [1346976000, 11.0761],
  [1347062400, 11.0433],
  [1347148800, 11.0621],
  [1347235200, 11.1253],
  [1347321600, 11.2681],
  [1347408000, 11.3153],
  [1347494400, 11.3803],
  [1347580800, 11.7301],
  [1347667200, 11.7184],
  [1347753600, 11.8869],
  [1347840000, 11.9083],
  [1347926400, 12.2597],
  [1348012800, 12.5049],
  [1348099200, 12.3672],
  [1348185600, 12.3337],
  [1348272000, 12.2137],
  [1348358400, 12.1655],
  [1348444800, 12.1136],
  [1348531200, 12.1824],
  [1348617600, 12.3198],
  [1348704000, 12.3188],
  [1348790400, 12.3815],
  [1348876800, 12.4048],
  [1348963200, 12.3916],
  [1349049600, 12.3894],
  [1349136000, 12.8072],
  [1349222400, 12.9554],
  [1349308800, 12.8624],
  [1349395200, 12.7522],
  [1349481600, 12.5051],
  [1349568000, 11.874],
  [1349654400, 11.7333],
  [1349740800, 11.8287],
  [1349827200, 12.1092],
  [1349913600, 12.0676],
  [1350000000, 12.0281],
  [1350086400, 11.9268],
  [1350172800, 11.6506],
  [1350259200, 11.9083],
  [1350345600, 11.848],
  [1350432000, 11.9194],
  [1350518400, 11.9259],
  [1350604800, 11.7575],
  [1350691200, 11.6944],
  [1350777600, 11.6574],
  [1350864000, 11.7411],
  [1350950400, 11.7078],
  [1351036800, 11.6344],
  [1351123200, 10.7536],
  [1351209600, 10.1306],
  [1351296000, 10.4582],
  [1351382400, 10.71],
  [1351468800, 10.6307],
  [1351555200, 10.8593],
  [1351641600, 11.1461],
  [1351728000, 10.6135],
  [1351814400, 10.5305],
  [1351900800, 10.6507],
  [1351987200, 10.7969],
  [1352073600, 10.7408],
  [1352160000, 10.8682],
  [1352246400, 10.9541],
  [1352332800, 10.8927],
  [1352419200, 10.8159],
  [1352505600, 10.8633],
  [1352592000, 10.8418],
  [1352678400, 11.0313],
  [1352764800, 10.998],
  [1352851200, 10.959],
  [1352937600, 11.1751],
  [1353024000, 11.705],
  [1353110400, 11.75],
  [1353196800, 11.6656],
  [1353283200, 11.7505],
  [1353369600, 11.6992],
  [1353456000, 11.7291],
  [1353542400, 12.292],
  [1353628800, 12.2803],
  [1353715200, 12.4132],
  [1353801600, 12.5297],
  [1353888000, 12.1846],
  [1353974400, 12.1593],
  [1354060800, 12.3317],
  [1354147200, 12.4977],
  [1354233600, 12.5861],
  [1354320000, 12.5924],
  [1354406400, 12.4979],
  [1354492800, 12.657],
  [1354579200, 13.3696],
  [1354665600, 13.3128],
  [1354752000, 13.4779],
  [1354838400, 13.4773],
  [1354924800, 13.5],
  [1355011200, 13.3465],
  [1355097600, 13.4923],
  [1355184000, 13.6154],
  [1355270400, 13.6682],
  [1355356800, 13.7553],
  [1355443200, 13.6009],
  [1355529600, 13.5309],
  [1355616000, 13.3329],
  [1355702400, 13.3201],
  [1355788800, 13.272],
  [1355875200, 13.5385],
  [1355961600, 13.57],
  [1356048000, 13.429],
  [1356134400, 13.4272],
  [1356220800, 13.3181],
  [1356307200, 13.4267],
  [1356393600, 13.3656],
  [1356480000, 13.4547],
  [1356566400, 13.3993],
  [1356652800, 13.4555],
  [1356739200, 13.374],
  [1356825600, 13.445],
  [1356912000, 13.5456],
  [1356998400, 13.3314],
  [1357084800, 13.2806],
  [1357171200, 13.3841],
  [1357257600, 13.4517],
  [1357344000, 13.4594],
  [1357430400, 13.5045],
  [1357516800, 13.5561],
  [1357603200, 13.7804],
  [1357689600, 13.821],
  [1357776000, 14.1232],
  [1357862400, 14.2276],
  [1357948800, 14.2143],
  [1358035200, 14.1608],
  [1358121600, 14.318],
  [1358208000, 14.3136],
  [1358294400, 14.7078],
  [1358380800, 15.5986],
  [1358467200, 15.7158],
  [1358553600, 15.5881],
  [1358640000, 15.7196],
  [1358726400, 16.781],
  [1358812800, 17.3002],
  [1358899200, 17.5364],
  [1358985600, 16.9011],
  [1359072000, 17.4072],
  [1359158400, 17.5536],
  [1359244800, 17.8646],
  [1359331200, 18.7943],
  [1359417600, 19.5147],
  [1359504000, 19.7374],
  [1359590400, 20.5116],
  [1359676800, 20.4431],
  [1359763200, 19.6359],
  [1359849600, 20.5789],
  [1359936000, 20.4405],
  [1360022400, 20.6593],
  [1360108800, 21.2086],
  [1360195200, 22.1178],
  [1360281600, 22.7874],
  [1360368000, 23.7339],
  [1360454400, 23.9003],
  [1360540800, 24.4973],
  [1360627200, 24.9797],
  [1360713600, 24.6417],
  [1360800000, 27.2824],
  [1360886400, 27.1713],
  [1360972800, 27.3462],
  [1361059200, 26.9273],
  [1361145600, 26.9289],
  [1361232000, 29.4136],
  [1361318400, 29.8198],
  [1361404800, 29.8181],
  [1361491200, 30.4727],
  [1361577600, 29.8065],
  [1361664000, 29.8828],
  [1361750400, 30.352],
  [1361836800, 31.1555],
  [1361923200, 31.2403],
  [1362009600, 33.3753],
  [1362096000, 34.6063],
  [1362182400, 34.1435],
  [1362268800, 34.4517],
  [1362355200, 36.3763],
  [1362441600, 40.673],
  [1362528000, 43.285],
  [1362614400, 41.9474],
  [1362700800, 43.9029],
  [1362787200, 46.8886],
  [1362873600, 46.066],
  [1362960000, 48.2751],
  [1363046400, 44.4135],
  [1363132800, 47.0162],
  [1363219200, 46.9256],
  [1363305600, 46.9025],
  [1363392000, 47.157],
  [1363478400, 47.3335],
  [1363564800, 51.3654],
  [1363651200, 59.4986],
  [1363737600, 63.6875],
  [1363824000, 70.9175],
  [1363910400, 69.8461],
  [1363996800, 64.3831],
  [1364083200, 71.6904],
  [1364169600, 74.3141],
  [1364256000, 78.6142],
  [1364342400, 88.8521],
  [1364428800, 87.6732],
  [1364515200, 90.2957],
  [1364601600, 92.19],
  [1364688000, 93.8992],
  [1364774400, 103.5803],
  [1364860800, 116.6799],
  [1364947200, 131.3848],
  [1365033600, 133.0071],
  [1365120000, 142.6261],
  [1365206400, 143.0818],
  [1365292800, 162.8522],
  [1365379200, 186.3512],
  [1365465600, 230.683],
  [1365552000, 161.1929],
  [1365638400, 82.9016],
  [1365724800, 111.4764],
  [1365811200, 97.6091],
  [1365897600, 88.8615],
  [1365984000, 80.8747],
  [1366070400, 68.2831],
  [1366156800, 92.864],
  [1366243200, 108.6283],
  [1366329600, 119.0123],
  [1366416000, 128.2083],
  [1366502400, 118.4832],
  [1366588800, 126.3143],
  [1366675200, 142.1272],
  [1366761600, 154.1333],
  [1366848000, 141.0087],
  [1366934400, 137.2096],
  [1367020800, 128.2267],
  [1367107200, 134.6236],
  [1367193600, 143.8104],
  [1367280000, 139.1296],
  [1367366400, 116.1138],
  [1367452800, 106.341],
  [1367539200, 96.3168],
  [1367625600, 112.4976],
  [1367712000, 116.4887],
  [1367798400, 112.1186],
  [1367884800, 111.6092],
  [1367971200, 113.1361],
  [1368057600, 111.9745],
  [1368144000, 117.691],
  [1368230400, 115.4998],
  [1368316800, 114.8857],
  [1368403200, 117.4045],
  [1368489600, 107.8656],
  [1368576000, 108.9869],
  [1368662400, 112.9179],
  [1368748800, 117.2846],
  [1368835200, 118.1699],
  [1368921600, 117.0339],
  [1369008000, 117.8186],
  [1369094400, 117.252],
  [1369180800, 118.9782],
  [1369267200, 123.7262],
  [1369353600, 128.9711],
  [1369440000, 128.8449],
  [1369526400, 130.1586],
  [1369612800, 126.3929],
  [1369699200, 125.9046],
  [1369785600, 129.5648],
  [1369872000, 126.5131],
  [1369958400, 127.8165],
  [1370044800, 128.7912],
  [1370131200, 122.6267],
  [1370217600, 122.9492],
  [1370304000, 120.19],
  [1370390400, 120.8699],
  [1370476800, 119.054],
  [1370563200, 110.1977],
  [1370649600, 109.1785],
  [1370736000, 99.9036],
  [1370822400, 104.3576],
  [1370908800, 107.5075],
  [1370995200, 106.3781],
  [1371081600, 101.3239],
  [1371168000, 99.2132],
  [1371254400, 99.875],
  [1371340800, 99.0384],
  [1371427200, 100.1263],
  [1371513600, 104.2892],
  [1371600000, 104.4172],
  [1371686400, 104.3235],
  [1371772800, 101.4169],
  [1371859200, 100.0395],
  [1371945600, 100.3147],
  [1372032000, 99.0457],
  [1372118400, 97.8328],
  [1372204800, 98.6517],
  [1372291200, 96.8039],
  [1372377600, 89.4245],
  [1372464000, 88.7973],
  [1372550400, 89.4809],
  [1372636800, 82.8676],
  [1372723200, 87.8165],
  [1372809600, 77.6913],
  [1372896000, 79.1349],
  [1372982400, 67.4476],
  [1373068800, 66.3417],
  [1373155200, 72.1095],
  [1373241600, 73.9886],
  [1373328000, 74.8919],
  [1373414400, 85.0137],
  [1373500800, 87.4975],
  [1373587200, 90.0467],
  [1373673600, 91.5926],
  [1373760000, 89.8923],
  [1373846400, 93.7962],
  [1373932800, 91.781],
  [1374019200, 91.0314],
  [1374105600, 84.9617],
  [1374192000, 86.2388],
  [1374278400, 84.9109],
  [1374364800, 85.6644],
  [1374451200, 85.649],
  [1374537600, 86.9771],
  [1374624000, 88.1517],
  [1374710400, 90.1661],
  [1374796800, 89.984],
  [1374883200, 88.1653],
  [1374969600, 92.7458],
  [1375056000, 93.2987],
  [1375142400, 96.6596],
  [1375228800, 98.0244],
  [1375315200, 96.568],
  [1375401600, 96.0745],
  [1375488000, 95.5067],
  [1375574400, 96.3655],
  [1375660800, 97.5271],
  [1375747200, 97.6712],
  [1375833600, 97.0542],
  [1375920000, 94.2573],
  [1376006400, 92.4728],
  [1376092800, 93.2936],
  [1376179200, 94.2713],
  [1376265600, 95.4465],
  [1376352000, 97.7591],
  [1376438400, 99.1213],
  [1376524800, 98.1063],
  [1376611200, 98.291],
  [1376697600, 99.6305],
  [1376784000, 99.178],
  [1376870400, 102.784],
  [1376956800, 104.5002],
  [1377043200, 110.8016],
  [1377129600, 109.5232],
  [1377216000, 107.6976],
  [1377302400, 108.8827],
  [1377388800, 113.0826],
  [1377475200, 112.1181],
  [1377561600, 117.7598],
  [1377648000, 118.3174],
  [1377734400, 118.8356],
  [1377820800, 124.8854],
  [1377907200, 128.378],
  [1377993600, 130.5364],
  [1378080000, 129.5654],
  [1378166400, 129.1828],
  [1378252800, 122.5292],
  [1378339200, 122.3701],
  [1378425600, 117.8611],
  [1378512000, 119.815],
  [1378598400, 118.0574],
  [1378684800, 121.2593],
  [1378771200, 122.2155],
  [1378857600, 127.0882],
  [1378944000, 126.7807],
  [1379030400, 127.4077],
  [1379116800, 124.3485],
  [1379203200, 125.0764],
  [1379289600, 126.2047],
  [1379376000, 126.8973],
  [1379462400, 126.9038],
  [1379548800, 124.181],
  [1379635200, 122.9216],
  [1379721600, 123.5083],
  [1379808000, 123.1249],
  [1379894400, 122.8657],
  [1379980800, 123.7974],
  [1380067200, 123.6141],
  [1380153600, 124.6857],
  [1380240000, 126.6053],
  [1380326400, 126.7966],
  [1380412800, 127.1086],
  [1380499200, 126.0903],
  [1380585600, 127.5754],
  [1380672000, 104.1051],
  [1380758400, 117.5755],
  [1380844800, 121.9303],
  [1380931200, 121.3934],
  [1381017600, 122.4753],
  [1381104000, 123.9069],
  [1381190400, 124.7665],
  [1381276800, 125.9335],
  [1381363200, 126.7047],
  [1381449600, 127.2553],
  [1381536000, 127.8513],
  [1381622400, 132.4157],
  [1381708800, 135.3392],
  [1381795200, 141.4939],
  [1381881600, 138.3279],
  [1381968000, 143.7471],
  [1382054400, 152.7756],
  [1382140800, 165.7727],
  [1382227200, 166.5002],
  [1382313600, 179.9106],
  [1382400000, 190.4028],
  [1382486400, 204.6004],
  [1382572800, 194.41],
  [1382659200, 185.6438],
  [1382745600, 179.8082],
  [1382832000, 194.5461],
  [1382918400, 196.2747],
  [1383004800, 204.4282],
  [1383091200, 197.9006],
  [1383177600, 203.2836],
  [1383264000, 203.0371],
  [1383350400, 204.7929],
  [1383436800, 210.2754],
  [1383523200, 228.791],
  [1383609600, 243.6417],
  [1383696000, 263.2096],
  [1383782400, 290.1242],
  [1383868800, 333.7507],
  [1383955200, 331.0511],
  [1384041600, 327.5587],
  [1384128000, 342.6977],
  [1384214400, 354.6455],
  [1384300800, 394.5045],
  [1384387200, 416.7063],
  [1384473600, 408.3988],
  [1384560000, 435.7984],
  [1384646400, 485.3366],
  [1384732800, 657.7785],
  [1384819200, 546.8784],
  [1384905600, 595.3391],
  [1384992000, 720.7644],
  [1385078400, 802.9169],
  [1385164800, 834.2953],
  [1385251200, 807.1667],
  [1385337600, 816.2434],
  [1385424000, 916.0972],
  [1385510400, 962.9106],
  [1385596800, 1007.3872],
  [1385683200, 1128.7255],
  [1385769600, 1119.2967],
  [1385856000, 964.4858],
  [1385942400, 1040.8082],
  [1386028800, 1053.621],
  [1386115200, 1134.9322],
  [1386201600, 1027.4118],
  [1386288000, 824.5817],
  [1386374400, 703.7484],
  [1386460800, 783.5733],
  [1386547200, 896.0793],
  [1386633600, 977.1654],
  [1386720000, 875.464],
  [1386806400, 873.3248],
  [1386892800, 879.1561],
  [1386979200, 852.8561],
  [1387065600, 864.0617],
  [1387152000, 677.8941],
  [1387238400, 682.6268],
  [1387324800, 526.121],
  [1387411200, 685.5251],
  [1387497600, 600.217],
  [1387584000, 597.0335],
  [1387670400, 615.013],
  [1387756800, 657.9266],
  [1387843200, 650.6647],
  [1387929600, 678.2902],
  [1388016000, 749.9966],
  [1388102400, 722.5706],
  [1388188800, 715.8524],
  [1388275200, 727.2712],
  [1388361600, 735.742],
  [1388448000, 729.5576],
  [1388534400, 752.4045],
  [1388620800, 784.9549],
  [1388707200, 807.2229],
  [1388793600, 828.6021],
  [1388880000, 902.4874],
  [1388966400, 914.46],
  [1389052800, 803.3518],
  [1389139200, 820.69],
  [1389225600, 831.3348],
  [1389312000, 853.2989],
  [1389398400, 889.5558],
  [1389484800, 845.1913],
  [1389571200, 822.877],
  [1389657600, 815.2936],
  [1389744000, 841.0899],
  [1389830400, 815.8548],
  [1389916800, 792.8295],
  [1390003200, 809.7835],
  [1390089600, 838.4285],
  [1390176000, 828.8852],
  [1390262400, 823.818],
  [1390348800, 818.9764],
  [1390435200, 810.9224],
  [1390521600, 781.0425],
  [1390608000, 804.4032],
  [1390694400, 814.4994],
  [1390780800, 742.7014],
  [1390867200, 790.1764],
  [1390953600, 793.3844],
  [1391040000, 799.4745],
  [1391126400, 803.2376],
  [1391212800, 813.2195],
  [1391299200, 814.4909],
  [1391385600, 806.9974],
  [1391472000, 800.0782],
  [1391558400, 784.4737],
  [1391644800, 763.5694],
  [1391731200, 711.5713],
  [1391817600, 677.6823],
  [1391904000, 687.4061],
  [1391990400, 685.4575],
  [1392076800, 671.8997],
  [1392163200, 653.7658],
  [1392249600, 612.9184],
  [1392336000, 668.7886],
  [1392422400, 654.3771],
  [1392508800, 623.2503],
  [1392595200, 631.3346],
  [1392681600, 627.2718],
  [1392768000, 623.5401],
  [1392854400, 563.7686],
  [1392940800, 580.3243],
  [1393027200, 607.1246],
  [1393113600, 610.0823],
  [1393200000, 542.2667],
  [1393286400, 533.7076],
  [1393372800, 587.5786],
  [1393459200, 585.3939],
  [1393545600, 551.2948],
  [1393632000, 567.5342],
  [1393718400, 558.5277],
  [1393804800, 676.5057],
  [1393891200, 674.5114],
  [1393977600, 670.3389],
  [1394064000, 667.7128],
  [1394150400, 631.7703],
  [1394236800, 621.5241],
  [1394323200, 640.5789],
  [1394409600, 628.1512],
  [1394496000, 633.7338],
  [1394582400, 634.6468],
  [1394668800, 643.4321],
  [1394755200, 628.3086],
  [1394841600, 636.2187],
  [1394928000, 634.1689],
  [1395014400, 622.7602],
  [1395100800, 614.3095],
  [1395187200, 610.5112],
  [1395273600, 586.6076],
  [1395360000, 569.6945],
  [1395446400, 564.7],
  [1395532800, 558.9589],
  [1395619200, 585.0233],
  [1395705600, 583.7712],
  [1395792000, 579.2439],
  [1395878400, 483.164],
  [1395964800, 498.6613],
  [1396051200, 489.517],
  [1396137600, 458.9663],
  [1396224000, 455.3554],
  [1396310400, 479.0085],
  [1396396800, 439.0115],
  [1396483200, 449.4412],
  [1396569600, 449.7199],
  [1396656000, 461.6753],
  [1396742400, 458.6335],
  [1396828800, 448.6553],
  [1396915200, 452.8031],
  [1397001600, 442.838],
  [1397088000, 366.9119],
  [1397174400, 421.9435],
  [1397260800, 424.2742],
  [1397347200, 416.3623],
  [1397433600, 461.1082],
  [1397520000, 521.6153],
  [1397606400, 531.4818],
  [1397692800, 499.8376],
  [1397779200, 483.02],
  [1397865600, 504.3656],
  [1397952000, 501.5572],
  [1398038400, 498.0845],
  [1398124800, 489.5035],
  [1398211200, 490.633],
  [1398297600, 503.2918],
  [1398384000, 466.4262],
  [1398470400, 459.2267],
  [1398556800, 438.7094],
  [1398643200, 441.5478],
  [1398729600, 447.7099],
  [1398816000, 448.8757],
  [1398902400, 460.1947],
  [1398988800, 452.2398],
  [1399075200, 438.9786],
  [1399161600, 436.6754],
  [1399248000, 432.3382],
  [1399334400, 430.1282],
  [1399420800, 442.1829],
  [1399507200, 440.4028],
  [1399593600, 452.698],
  [1399680000, 456.7558],
  [1399766400, 439.1145],
  [1399852800, 441.281],
  [1399939200, 439.0058],
  [1400025600, 444.8482],
  [1400112000, 446.9616],
  [1400198400, 448.7422],
  [1400284800, 449.2223],
  [1400371200, 446.9626],
  [1400457600, 447.4049],
  [1400544000, 490.3356],
  [1400630400, 493.9335],
  [1400716800, 526.8143],
  [1400803200, 523.6993],
  [1400889600, 527.6912],
  [1400976000, 573.3125],
  [1401062400, 584.848],
  [1401148800, 573.9283],
  [1401235200, 579.1893],
  [1401321600, 570.3493],
  [1401408000, 620.8464],
  [1401494400, 627.8924],
  [1401580800, 630.075],
  [1401667200, 663.5057],
  [1401753600, 672.3879],
  [1401840000, 643.8874],
  [1401926400, 661.5036],
  [1402012800, 650.1333],
  [1402099200, 656.8003],
  [1402185600, 657.82],
  [1402272000, 648.3363],
  [1402358400, 650.9366],
  [1402444800, 631.489],
  [1402531200, 591.9751],
  [1402617600, 597.045],
  [1402704000, 575.5595],
  [1402790400, 589.7246],
  [1402876800, 590.5675],
  [1402963200, 609.08],
  [1403049600, 607.6298],
  [1403136000, 595.7515],
  [1403222400, 591.5315],
  [1403308800, 592.7643],
  [1403395200, 599.6346],
  [1403481600, 589.5523],
  [1403568000, 579.9737],
  [1403654400, 562.2368],
  [1403740800, 580.7492],
  [1403827200, 600.6383],
  [1403913600, 594.3903],
  [1404000000, 600.8405],
  [1404086400, 638.9461],
  [1404172800, 642.9566],
  [1404259200, 651.2983],
  [1404345600, 646.4134],
  [1404432000, 630.6355],
  [1404518400, 630.4683],
  [1404604800, 634.6727],
  [1404691200, 622.855],
  [1404777600, 624.8943],
  [1404864000, 621.9391],
  [1404950400, 616.5228],
  [1405036800, 634.4944],
  [1405123200, 636.924],
  [1405209600, 629.8758],
  [1405296000, 619.1975],
  [1405382400, 621.9346],
  [1405468800, 616.3519],
  [1405555200, 624.2593],
  [1405641600, 630.7501],
  [1405728000, 629.1734],
  [1405814400, 625.2487],
  [1405900800, 621.3053],
  [1405987200, 619.8233],
  [1406073600, 619.7728],
  [1406160000, 602.8796],
  [1406246400, 601.5785],
  [1406332800, 594.7026],
  [1406419200, 591.5754],
  [1406505600, 587.493],
  [1406592000, 584.1124],
  [1406678400, 562.9146],
  [1406764800, 581.9756],
  [1406851200, 596.5068],
  [1406937600, 589.7573],
  [1407024000, 586.7537],
  [1407110400, 587.6083],
  [1407196800, 581.882],
  [1407283200, 582.2484],
  [1407369600, 586.0466],
  [1407456000, 589.0244],
  [1407542400, 588.9785],
  [1407628800, 589.3735],
  [1407715200, 573.4415],
  [1407801600, 568.3075],
  [1407888000, 548.3702],
  [1407974400, 505.1075],
  [1408060800, 500.3231],
  [1408147200, 521.748],
  [1408233600, 497.7647],
  [1408320000, 468.9579],
  [1408406400, 486.7944],
  [1408492800, 515.1204],
  [1408579200, 519.3079],
  [1408665600, 516.1594],
  [1408752000, 497.1258],
  [1408838400, 508.4307],
  [1408924800, 501.6103],
  [1409011200, 511.8523],
  [1409097600, 510.1623],
  [1409184000, 506.2852],
  [1409270400, 508.8666],
  [1409356800, 501.2757],
  [1409443200, 478.5114],
  [1409529600, 474.5415],
  [1409616000, 474.4307],
  [1409702400, 473.9592],
  [1409788800, 489.5552],
  [1409875200, 478.7498],
  [1409961600, 480.6425],
  [1410048000, 478.3655],
  [1410134400, 468.9755],
  [1410220800, 473.512],
  [1410307200, 477.7784],
  [1410393600, 477.2707],
  [1410480000, 473.9973],
  [1410566400, 477.961],
  [1410652800, 475.6481],
  [1410739200, 472.6556],
  [1410825600, 464.1778],
  [1410912000, 456.3399],
  [1410998400, 426.8801],
  [1411084800, 393.8939],
  [1411171200, 411.0413],
  [1411257600, 400.4045],
  [1411344000, 400.8816],
  [1411430400, 438.4918],
  [1411516800, 423.7001],
  [1411603200, 409.5377],
  [1411689600, 405.2983],
  [1411776000, 400.5993],
  [1411862400, 375.55],
  [1411948800, 373.0646],
  [1412035200, 389.264],
  [1412121600, 382.9094],
  [1412208000, 372.5257],
  [1412294400, 357.6657],
  [1412380800, 328.8261],
  [1412467200, 322.8263],
  [1412553600, 326.8035],
  [1412640000, 333.5702],
  [1412726400, 354.4073],
  [1412812800, 361.7164],
  [1412899200, 358.8904],
  [1412985600, 361.9084],
  [1413072000, 377.8712],
  [1413158400, 391.9942],
  [1413244800, 400.8806],
  [1413331200, 394.6259],
  [1413417600, 382.3215],
  [1413504000, 382.2008],
  [1413590400, 391.2932],
  [1413676800, 388.6845],
  [1413763200, 381.1909],
  [1413849600, 385.2046],
  [1413936000, 380.7788],
  [1414022400, 357.3448],
  [1414108800, 357.4884],
  [1414195200, 345.8112],
  [1414281600, 353.082],
  [1414368000, 350.0157],
  [1414454400, 354.6538],
  [1414540800, 333.5994],
  [1414627200, 344.6094],
  [1414713600, 337.1829],
  [1414800000, 324.3713],
  [1414886400, 324.2486],
  [1414972800, 325.3619],
  [1415059200, 329.6577],
  [1415145600, 338.8058],
  [1415232000, 349.6899],
  [1415318400, 342.1333],
  [1415404800, 345.7163],
  [1415491200, 363.6101],
  [1415577600, 365.5023],
  [1415664000, 367.8255],
  [1415750400, 422.5914],
  [1415836800, 421.9145],
  [1415923200, 398.3889],
  [1416009600, 377.9938],
  [1416096000, 390.2058],
  [1416182400, 387.501],
  [1416268800, 373.8646],
  [1416355200, 377.6134],
  [1416441600, 356.1813],
  [1416528000, 350.7489],
  [1416614400, 352.4555],
  [1416700800, 367.7732],
  [1416787200, 376.9942],
  [1416873600, 376.7556],
  [1416960000, 367.5302],
  [1417046400, 369.5302],
  [1417132800, 377.8969],
  [1417219200, 376.0763],
  [1417305600, 378.6904],
  [1417392000, 379.112],
  [1417478400, 382.9468],
  [1417564800, 375.916],
  [1417651200, 368.8456],
  [1417737600, 378.4283],
  [1417824000, 375.138],
  [1417910400, 376.6398],
  [1417996800, 363.2157],
  [1418083200, 351.1068],
  [1418169600, 347.8814],
  [1418256000, 348.593],
  [1418342400, 353.1906],
  [1418428800, 349.2429],
  [1418515200, 356.0797],
  [1418601600, 347.0952],
  [1418688000, 328.6133],
  [1418774400, 320.2976],
  [1418860800, 313.5117],
  [1418947200, 318.2429],
  [1419033600, 330.0658],
  [1419120000, 320.9927],
  [1419206400, 331.8426],
  [1419292800, 336.0841],
  [1419379200, 323.0323],
  [1419465600, 318.9961],
  [1419552000, 329.2103],
  [1419638400, 315.9684],
  [1419724800, 317.0105],
  [1419811200, 313.0655],
  [1419897600, 310.442],
  [1419984000, 320.6623],
  [1420070400, 314.7765],
  [1420156800, 315.9427],
  [1420243200, 285.6473],
  [1420329600, 263.3346],
  [1420416000, 275.0039],
  [1420502400, 287.5495],
  [1420588800, 297.5356],
  [1420675200, 284.3424],
  [1420761600, 292.5011],
  [1420848000, 276.2305],
  [1420934400, 268.7555],
  [1421020800, 268.6172],
  [1421107200, 224.1081],
  [1421193600, 175.6376],
  [1421280000, 212.341],
  [1421366400, 207.5952],
  [1421452800, 199.8248],
  [1421539200, 211.1325],
  [1421625600, 216.8947],
  [1421712000, 211.9199],
  [1421798400, 227.9042],
  [1421884800, 233.6474],
  [1421971200, 233.1329],
  [1422057600, 249.0821],
  [1422144000, 254.5179],
  [1422230400, 273.9522],
  [1422316800, 264.7538],
  [1422403200, 235.7358],
  [1422489600, 233.9574],
  [1422576000, 228.8962],
  [1422662400, 217.3322],
  [1422748800, 227.1113],
  [1422835200, 240.0924],
  [1422921600, 227.7757],
  [1423008000, 226.7811],
  [1423094400, 217.0112],
  [1423180800, 222.725],
  [1423267200, 228.6471],
  [1423353600, 224.036],
  [1423440000, 220.7685],
  [1423526400, 220.8882],
  [1423612800, 219.4959],
  [1423699200, 222.5832],
  [1423785600, 236.5554],
  [1423872000, 257.6277],
  [1423958400, 234.4458],
  [1424044800, 235.0861],
  [1424131200, 243.9058],
  [1424217600, 235.9952],
  [1424304000, 241.8723],
  [1424390400, 245.5308],
  [1424476800, 245.596],
  [1424563200, 236.6907],
  [1424649600, 239.066],
  [1424736000, 239.8693],
  [1424822400, 238.2361],
  [1424908800, 237.0444],
  [1424995200, 255.1168],
  [1425081600, 254.9484],
  [1425168000, 260.6513],
  [1425254400, 276.3226],
  [1425340800, 282.7059],
  [1425427200, 273.4475],
  [1425513600, 276.2688],
  [1425600000, 273.3181],
  [1425686400, 276.4034],
  [1425772800, 275.338],
  [1425859200, 290.1301],
  [1425945600, 292.3204],
  [1426032000, 296.6933],
  [1426118400, 295.8003],
  [1426204800, 285.911],
  [1426291200, 283.6083],
  [1426377600, 287.2701],
  [1426464000, 291.3921],
  [1426550400, 285.2484],
  [1426636800, 257.2862],
  [1426723200, 262.0929],
  [1426809600, 262.9665],
  [1426896000, 261.1843],
  [1426982400, 268.8994],
  [1427068800, 266.778],
  [1427155200, 246.8351],
  [1427241600, 246.7191],
  [1427328000, 249.533],
  [1427414400, 247.3789],
  [1427500800, 253.2316],
  [1427587200, 242.9676],
  [1427673600, 248.3369],
  [1427760000, 244.7125],
  [1427846400, 247.1858],
  [1427932800, 253.6301],
  [1428019200, 254.8332],
  [1428105600, 253.9458],
  [1428192000, 261.1121],
  [1428278400, 256.3674],
  [1428364800, 254.8319],
  [1428451200, 245.8252],
  [1428537600, 243.8606],
  [1428624000, 235.8719],
  [1428710400, 237.4091],
  [1428796800, 237.141],
  [1428883200, 225.5056],
  [1428969600, 219.7572],
  [1429056000, 223.3139],
  [1429142400, 228.4938],
  [1429228800, 222.7851],
  [1429315200, 223.398],
  [1429401600, 223.2841],
  [1429488000, 224.8949],
  [1429574400, 234.9394],
  [1429660800, 233.8224],
  [1429747200, 235.9333],
  [1429833600, 231.4586],
  [1429920000, 226.446],
  [1430006400, 220.5034],
  [1430092800, 227.326],
  [1430179200, 225.5494],
  [1430265600, 225.6693],
  [1430352000, 236.328],
  [1430438400, 232.7466],
  [1430524800, 235.5401],
  [1430611200, 240.4642],
  [1430697600, 238.9767],
  [1430784000, 236.0234],
  [1430870400, 229.4812],
  [1430956800, 237.1307],
  [1431043200, 244.3835],
  [1431129600, 242.706],
  [1431216000, 240.7315],
  [1431302400, 242.2498],
  [1431388800, 242.2091],
  [1431475200, 236.5503],
  [1431561600, 236.9489],
  [1431648000, 237.4845],
  [1431734400, 235.8121],
  [1431820800, 236.9637],
  [1431907200, 232.8838],
  [1431993600, 231.9744],
  [1432080000, 234.1903],
  [1432166400, 235.5538],
  [1432252800, 240.3232],
  [1432339200, 238.9633],
  [1432425600, 240.7118],
  [1432512000, 237.0035],
  [1432598400, 236.7963],
  [1432684800, 237.2036],
  [1432771200, 236.9569],
  [1432857600, 236.6465],
  [1432944000, 232.7888],
  [1433030400, 229.4505],
  [1433116800, 223.2827],
  [1433203200, 225.3208],
  [1433289600, 225.2131],
  [1433376000, 223.5401],
  [1433462400, 224.7311],
  [1433548800, 225.1605],
  [1433635200, 223.4117],
  [1433721600, 228.7743],
  [1433808000, 229.3705],
  [1433894400, 228.5885],
  [1433980800, 229.5844],
  [1434067200, 229.8112],
  [1434153600, 233.0153],
  [1434240000, 232.5071],
  [1434326400, 236.791],
  [1434412800, 251.4327],
  [1434499200, 247.9693],
  [1434585600, 249.0125],
  [1434672000, 244.8035],
  [1434758400, 245.5825],
  [1434844800, 244.3003],
  [1434931200, 247.0179],
  [1435017600, 244.1848],
  [1435104000, 240.4515],
  [1435190400, 242.3479],
  [1435276800, 242.968],
  [1435363200, 251.5293],
  [1435449600, 249.0583],
  [1435536000, 256.6502],
  [1435622400, 263.8544],
  [1435708800, 258.0426],
  [1435795200, 254.7471],
  [1435881600, 256.087],
  [1435968000, 260.5092],
  [1436054400, 271.3025],
  [1436140800, 269.1379],
  [1436227200, 266.4699],
  [1436313600, 270.5761],
  [1436400000, 269.6803],
  [1436486400, 285.5588],
  [1436572800, 293.9175],
  [1436659200, 311.4819],
  [1436745600, 292.6492],
  [1436832000, 287.741],
  [1436918400, 285.9229],
  [1437004800, 278.5327],
  [1437091200, 280.0647],
  [1437177600, 277.3546],
  [1437264000, 275.282],
  [1437350400, 279.1144],
  [1437436800, 276.6524],
  [1437523200, 277.7644],
  [1437609600, 276.8116],
  [1437696000, 289.306],
  [1437782400, 289.5076],
  [1437868800, 293.3148],
  [1437955200, 294.4268],
  [1438041600, 295.4101],
  [1438128000, 289.8558],
  [1438214400, 288.2363],
  [1438300800, 284.5973],
  [1438387200, 281.6688],
  [1438473600, 282.423],
  [1438560000, 282.1851],
  [1438646400, 285.2866],
  [1438732800, 282.3389],
  [1438819200, 278.9957],
  [1438905600, 279.4887],
  [1438992000, 261.4503],
  [1439078400, 266.342],
  [1439164800, 264.9288],
  [1439251200, 271.4217],
  [1439337600, 268.1439],
  [1439424000, 264.6916],
  [1439510400, 266.3559],
  [1439596800, 261.9368],
  [1439683200, 258.9308],
  [1439769600, 258.0094],
  [1439856000, 217.8859],
  [1439942400, 227.2183],
  [1440028800, 235.5239],
  [1440115200, 232.8006],
  [1440201600, 230.6392],
  [1440288000, 228.6731],
  [1440374400, 211.9559],
  [1440460800, 222.655],
  [1440547200, 226.1167],
  [1440633600, 224.9399],
  [1440720000, 232.1708],
  [1440806400, 229.8262],
  [1440892800, 229.0196],
  [1440979200, 230.6895],
  [1441065600, 227.9556],
  [1441152000, 229.5022],
  [1441238400, 227.1071],
  [1441324800, 231.1776],
  [1441411200, 235.903],
  [1441497600, 240.8055],
  [1441584000, 240.6336],
  [1441670400, 244.175],
  [1441756800, 238.7225],
  [1441843200, 238.7505],
  [1441929600, 240.845],
  [1442016000, 236.3518],
  [1442102400, 230.5488],
  [1442188800, 230.9488],
  [1442275200, 230.3986],
  [1442361600, 229.0433],
  [1442448000, 233.2027],
  [1442534400, 233.1751],
  [1442620800, 232.2416],
  [1442707200, 231.3623],
  [1442793600, 226.7734],
  [1442880000, 230.6263],
  [1442966400, 230.1324],
  [1443052800, 234.3199],
  [1443139200, 235.5382],
  [1443225600, 234.5918],
  [1443312000, 233.2433],
  [1443398400, 240.0173],
  [1443484800, 237.3362],
  [1443571200, 236.7398],
  [1443657600, 238.2298],
  [1443744000, 237.937],
  [1443830400, 239.7359],
  [1443916800, 239.5169],
  [1444003200, 240.9612],
  [1444089600, 246.9405],
  [1444176000, 243.7345],
  [1444262400, 243.0296],
  [1444348800, 244.4489],
  [1444435200, 245.9559],
  [1444521600, 248.5282],
  [1444608000, 246.0936],
  [1444694400, 250.4713],
  [1444780800, 253.1423],
  [1444867200, 254.693],
  [1444953600, 262.7374],
  [1445040000, 271.9309],
  [1445126400, 263.4817],
  [1445212800, 264.3627],
  [1445299200, 270.8322],
  [1445385600, 268.0402],
  [1445472000, 275.415],
  [1445558400, 278.6128],
  [1445644800, 283.6111],
  [1445731200, 286.0497],
  [1445817600, 286.7034],
  [1445904000, 295.5629],
  [1445990400, 304.4421],
  [1446076800, 314.8795],
  [1446163200, 328.4923],
  [1446249600, 314.1195],
  [1446336000, 329.8542],
  [1446422400, 364.6166],
  [1446508800, 400.9231],
  [1446595200, 405.4817],
  [1446681600, 384.3412],
  [1446768000, 372.9754],
  [1446854400, 386.5046],
  [1446940800, 372.4001],
  [1447027200, 380.4956],
  [1447113600, 337.8305],
  [1447200000, 308.9222],
  [1447286400, 337.523],
  [1447372800, 337.279],
  [1447459200, 333.0471],
  [1447545600, 319.928],
  [1447632000, 331.1327],
  [1447718400, 335.8498],
  [1447804800, 335.7445],
  [1447891200, 326.2321],
  [1447977600, 321.9405],
  [1448064000, 325.9052],
  [1448150400, 323.717],
  [1448236800, 323.0126],
  [1448323200, 319.9614],
  [1448409600, 328.9605],
  [1448496000, 356.2553],
  [1448582400, 359.2688],
  [1448668800, 356.5673],
  [1448755200, 371.7076],
  [1448841600, 377.3898],
  [1448928000, 362.5324],
  [1449014400, 359.2224],
  [1449100800, 361.2101],
  [1449187200, 363.2416],
  [1449273600, 389.363],
  [1449360000, 393.3191],
  [1449446400, 395.3466],
  [1449532800, 413.7987],
  [1449619200, 417.6327],
  [1449705600, 415.7299],
  [1449792000, 453.8615],
  [1449878400, 435.8557],
  [1449964800, 434.4035],
  [1450051200, 442.9917],
  [1450137600, 464.6179],
  [1450224000, 454.1425],
  [1450310400, 456.2401],
  [1450396800, 463.1758],
  [1450483200, 461.3999],
  [1450569600, 442.154],
  [1450656000, 437.6401],
  [1450742400, 435.2684],
  [1450828800, 442.6657],
  [1450915200, 455.8787],
  [1451001600, 455.7188],
  [1451088000, 418.2215],
  [1451174400, 422.7059],
  [1451260800, 421.0529],
  [1451347200, 431.34],
  [1451433600, 426.0436],
  [1451520000, 429.6772],
  [1451606400, 434.678],
  [1451692800, 434.4399],
  [1451779200, 430.1362],
  [1451865600, 433.449],
  [1451952000, 432.6695],
  [1452038400, 430.6779],
  [1452124800, 459.2089],
  [1452211200, 454.1344],
  [1452297600, 449.8452],
  [1452384000, 448.5802],
  [1452470400, 449.0331],
  [1452556800, 441.7682],
  [1452643200, 432.3106],
  [1452729600, 429.8232],
  [1452816000, 367.8232],
  [1452902400, 388.0712],
  [1452988800, 382.4821],
  [1453075200, 384.8652],
  [1453161600, 378.1617],
  [1453248000, 420.6229],
  [1453334400, 409.2985],
  [1453420800, 381.0465],
  [1453507200, 386.3706],
  [1453593600, 403.4469],
  [1453680000, 391.9861],
  [1453766400, 391.1429],
  [1453852800, 394.6275],
  [1453939200, 378.901],
  [1454025600, 379],
  [1454112000, 377.2628],
  [1454198400, 366.3417],
  [1454284800, 371.2234],
  [1454371200, 372.9276],
  [1454457600, 368.0982],
  [1454544000, 389.7231],
  [1454630400, 384.3984],
  [1454716800, 374.6316],
  [1454803200, 375.1539],
  [1454889600, 370.8144],
  [1454976000, 373.5116],
  [1455062400, 379.0826],
  [1455148800, 377.6392],
  [1455235200, 382.2945],
  [1455321600, 389.5984],
  [1455408000, 406.1507],
  [1455494400, 399.2676],
  [1455580800, 407.0353],
  [1455667200, 415.3241],
  [1455753600, 421.2897],
  [1455840000, 419.6265],
  [1455926400, 440.1958],
  [1456012800, 438.7186],
  [1456099200, 437.5353],
  [1456185600, 420.0326],
  [1456272000, 423.9951],
  [1456358400, 424.0909],
  [1456444800, 431.7622],
  [1456531200, 432.9478],
  [1456617600, 433.1023],
  [1456704000, 437.7759],
  [1456790400, 432.8079],
  [1456876800, 423.0798],
  [1456963200, 419.2688],
  [1457049600, 407.9902],
  [1457136000, 397.3145],
  [1457222400, 403.7052],
  [1457308800, 413.2294],
  [1457395200, 411.426],
  [1457481600, 412.5407],
  [1457568000, 416.3409],
  [1457654400, 419.5119],
  [1457740800, 410.2642],
  [1457827200, 411.8059],
  [1457913600, 415.027],
  [1458000000, 415.2664],
  [1458086400, 417.0241],
  [1458172800, 418.6054],
  [1458259200, 408.9016],
  [1458345600, 409.1244],
  [1458432000, 412.057],
  [1458518400, 411.6018],
  [1458604800, 416.5817],
  [1458691200, 417.3783],
  [1458777600, 413.5602],
  [1458864000, 416.3732],
  [1458950400, 416.8231],
  [1459036800, 425.455],
  [1459123200, 422.9174],
  [1459209600, 415.8638],
  [1459296000, 412.7777],
  [1459382400, 415.9568],
  [1459468800, 417.2007],
  [1459555200, 419.7631],
  [1459641600, 420.0736],
  [1459728000, 419.5407],
  [1459814400, 422.5014],
  [1459900800, 421.9072],
  [1459987200, 421.4672],
  [1460073600, 418.6435],
  [1460160000, 418.7586],
  [1460246400, 421.9545],
  [1460332800, 423.273],
  [1460419200, 427.4277],
  [1460505600, 424.8725],
  [1460592000, 425.8566],
  [1460678400, 430.7244],
  [1460764800, 432.2163],
  [1460851200, 429.34],
  [1460937600, 429.6569],
  [1461024000, 437.5687],
  [1461110400, 442.6617],
  [1461196800, 452.1647],
  [1461283200, 448.1344],
  [1461369600, 453.9147],
  [1461456000, 463.3829],
  [1461542400, 465.316],
  [1461628800, 469.6088],
  [1461715200, 445.7411],
  [1461801600, 451.0601],
  [1461888000, 457.01],
  [1461974400, 449.9005],
  [1462060800, 455.0107],
  [1462147200, 444.9331],
  [1462233600, 451.6289],
  [1462320000, 448.368],
  [1462406400, 449.3361],
  [1462492800, 461.6939],
  [1462579200, 461.3618],
  [1462665600, 461.3789],
  [1462752000, 463.4622],
  [1462838400, 451.0797],
  [1462924800, 453.8963],
  [1463011200, 455.6073],
  [1463097600, 457.2419],
  [1463184000, 458.1195],
  [1463270400, 460.8577],
  [1463356800, 455.2241],
  [1463443200, 453.5458],
  [1463529600, 454.4862],
  [1463616000, 437.7242],
  [1463702400, 442.3968],
  [1463788800, 444.0782],
  [1463875200, 440.5587],
  [1463961600, 444.2051],
  [1464048000, 445.6745],
  [1464134400, 450.5495],
  [1464220800, 454.4337],
  [1464307200, 471.8201],
  [1464393600, 530.9106],
  [1464480000, 527.5497],
  [1464566400, 533.4931],
  [1464652800, 530.9437],
  [1464739200, 537.6137],
  [1464825600, 538.7712],
  [1464912000, 570.176],
  [1464998400, 574.2662],
  [1465084800, 575.1376],
  [1465171200, 585.8571],
  [1465257600, 578.4692],
  [1465344000, 583.0976],
  [1465430400, 577.1017],
  [1465516800, 579.815],
  [1465603200, 605.4496],
  [1465689600, 670.3924],
  [1465776000, 704.3218],
  [1465862400, 684.9483],
  [1465948800, 695.0015],
  [1466035200, 767.42],
  [1466121600, 750.0146],
  [1466208000, 758.2888],
  [1466294400, 766.7671],
  [1466380800, 722.4975],
  [1466467200, 669.6042],
  [1466553600, 594.833],
  [1466640000, 627.6779],
  [1466726400, 664.127],
  [1466812800, 668.8727],
  [1466899200, 630.4342],
  [1466985600, 652.2448],
  [1467072000, 647.2188],
  [1467158400, 638.5863],
  [1467244800, 674.2848],
  [1467331200, 677.5124],
  [1467417600, 702.7393],
  [1467504000, 662.5501],
  [1467590400, 679.8425],
  [1467676800, 668.166],
  [1467763200, 677.6513],
  [1467849600, 640.0532],
  [1467936000, 665.0517],
  [1468022400, 651.9419],
  [1468108800, 649.9593],
  [1468195200, 650.2726],
  [1468281600, 670.0231],
  [1468368000, 658.3336],
  [1468454400, 660.906],
  [1468540800, 666.7587],
  [1468627200, 665.2756],
  [1468713600, 681.0896],
  [1468800000, 675.1186],
  [1468886400, 674.6604],
  [1468972800, 667.3054],
  [1469059200, 666.8517],
  [1469145600, 650.5629],
  [1469232000, 657.3779],
  [1469318400, 661.394],
  [1469404800, 655.1196],
  [1469491200, 654.6263],
  [1469577600, 656.2751],
  [1469664000, 656.1965],
  [1469750400, 657.5576],
  [1469836800, 655.3617],
  [1469923200, 624.8045],
  [1470009600, 606.5092],
  [1470096000, 526.9811],
  [1470182400, 570.347],
  [1470268800, 583.5422],
  [1470355200, 581.2798],
  [1470441600, 590.7954],
  [1470528000, 594.7323],
  [1470614400, 591.6293],
  [1470700800, 587.9321],
  [1470787200, 589.9688],
  [1470873600, 589.5859],
  [1470960000, 587.1916],
  [1471046400, 585.3636],
  [1471132800, 571.3871],
  [1471219200, 566.5644],
  [1471305600, 578.4149],
  [1471392000, 573.6637],
  [1471478400, 573.2632],
  [1471564800, 573.9585],
  [1471651200, 581.7971],
  [1471737600, 580.7922],
  [1471824000, 584.9719],
  [1471910400, 582.6277],
  [1471996800, 578.7018],
  [1472083200, 576.0334],
  [1472169600, 578.8747],
  [1472256000, 570.201],
  [1472342400, 575.1052],
  [1472428800, 573.4293],
  [1472515200, 575.6957],
  [1472601600, 572.2728],
  [1472688000, 572.2217],
  [1472774400, 576.8468],
  [1472860800, 600.3744],
  [1472947200, 610.5389],
  [1473033600, 607.527],
  [1473120000, 612.9955],
  [1473206400, 615.6598],
  [1473292800, 630.5502],
  [1473379200, 622.9779],
  [1473465600, 624.7526],
  [1473552000, 608.2467],
  [1473638400, 607.7074],
  [1473724800, 608.6943],
  [1473811200, 609.4131],
  [1473897600, 607.0703],
  [1473984000, 607.8064],
  [1474070400, 607.3814],
  [1474156800, 611.5335],
  [1474243200, 608.8713],
  [1474329600, 608.3717],
  [1474416000, 596.9458],
  [1474502400, 595.5647],
  [1474588800, 602.3788],
  [1474675200, 602.6874],
  [1474761600, 600.6101],
  [1474848000, 606.7788],
  [1474934400, 605.1516],
  [1475020800, 604.6865],
  [1475107200, 605.2026],
  [1475193600, 608.8658],
  [1475280000, 615.4085],
  [1475366400, 611.7486],
  [1475452800, 612.5903],
  [1475539200, 610.0079],
  [1475625600, 612.1478],
  [1475712000, 611.7609],
  [1475798400, 617.9057],
  [1475884800, 619.301],
  [1475971200, 617.101],
  [1476057600, 618.0852],
  [1476144000, 642.9814],
  [1476230400, 636.5979],
  [1476316800, 635.4441],
  [1476403200, 639.5861],
  [1476489600, 637.2838],
  [1476576000, 642.913],
  [1476662400, 639.1375],
  [1476748800, 635.5765],
  [1476835200, 629.6407],
  [1476921600, 628.5989],
  [1477008000, 630.9062],
  [1477094400, 654.5086],
  [1477180800, 651.962],
  [1477267200, 650.0272],
  [1477353600, 655.7925],
  [1477440000, 675.1099],
  [1477526400, 686.5233],
  [1477612800, 690.3907],
  [1477699200, 715.4455],
  [1477785600, 699.3334],
  [1477872000, 698.8977],
  [1477958400, 730.5785],
  [1478044800, 740.3671],
  [1478131200, 689.9392],
  [1478217600, 705.432],
  [1478304000, 706.8193],
  [1478390400, 715.8969],
  [1478476800, 706.1812],
  [1478563200, 711.8358],
  [1478649600, 721.5015],
  [1478736000, 713.4076],
  [1478822400, 715.7033],
  [1478908800, 703.8476],
  [1478995200, 703.6264],
  [1479081600, 705.6436],
  [1479168000, 712.3472],
  [1479254400, 742.0501],
  [1479340800, 735.3181],
  [1479427200, 749.5787],
  [1479513600, 751.2138],
  [1479600000, 730.3508],
  [1479686400, 736.507],
  [1479772800, 747.9977],
  [1479859200, 741.2403],
  [1479945600, 737.355],
  [1480032000, 739.6852],
  [1480118400, 734.6529],
  [1480204800, 727.7411],
  [1480291200, 730.0825],
  [1480377600, 731.6464],
  [1480464000, 742.2045],
  [1480550400, 753.6749],
  [1480636800, 772.3024],
  [1480723200, 766.1105],
  [1480809600, 766.3801],
  [1480896000, 752.6707],
  [1480982400, 759.1173],
  [1481068800, 764.9877],
  [1481155200, 767.6592],
  [1481241600, 771.9023],
  [1481328000, 775.4746],
  [1481414400, 770.4962],
  [1481500800, 778.5066],
  [1481587200, 778.9307],
  [1481673600, 776.964],
  [1481760000, 776.1768],
  [1481846400, 782.2302],
  [1481932800, 789.6029],
  [1482019200, 790.633],
  [1482105600, 790.279],
  [1482192000, 799.7775],
  [1482278400, 828.4837],
  [1482364800, 858.5014],
  [1482451200, 915.5624],
  [1482537600, 891.1553],
  [1482624000, 896.0033],
  [1482710400, 903.2012],
  [1482796800, 925.9508],
  [1482883200, 979.961],
  [1482969600, 973.4626],
  [1483056000, 961.1827],
  [1483142400, 968.9706],
  [1483228800, 997.2574],
  [1483315200, 1017.0779],
  [1483401600, 1032.6091],
  [1483488000, 1134.4964],
  [1483574400, 1000.4981],
  [1483660800, 892.464],
  [1483747200, 903.4533],
  [1483833600, 912.485],
  [1483920000, 903.5087],
  [1484006400, 906.4989],
  [1484092800, 788.3147],
  [1484179200, 807.1098],
  [1484265600, 826.7469],
  [1484352000, 820.0452],
  [1484438400, 824.5471],
  [1484524800, 830.838],
  [1484611200, 906.0268],
  [1484697600, 881.2598],
  [1484784000, 902.2639],
  [1484870400, 895.1745],
  [1484956800, 924.4683],
  [1485043200, 922.4671],
  [1485129600, 919.1157],
  [1485216000, 887.7432],
  [1485302400, 895.69],
  [1485388800, 916.6675],
  [1485475200, 920.4545],
  [1485561600, 922.7749],
  [1485648000, 915.632],
  [1485734400, 920.3133],
  [1485820800, 968.4991],
  [1485907200, 987.5326],
  [1485993600, 1007.7044],
  [1486080000, 1015.302],
  [1486166400, 1033.786],
  [1486252800, 1014.5679],
  [1486339200, 1023.3175],
  [1486425600, 1053.6245],
  [1486512000, 1052.3676],
  [1486598400, 982.7519],
  [1486684800, 996.6502],
  [1486771200, 1011.3753],
  [1486857600, 1006.2965],
  [1486944000, 999.9532],
  [1487030400, 1012.2135],
  [1487116800, 1013.9038],
  [1487203200, 1036.8069],
  [1487289600, 1058.6699],
  [1487376000, 1060.6688],
  [1487462400, 1058.7864],
  [1487548800, 1088.6884],
  [1487635200, 1128.8553],
  [1487721600, 1129.7018],
  [1487808000, 1188.8618],
  [1487894400, 1185.4889],
  [1487980800, 1151.6047],
  [1488067200, 1181.7109],
  [1488153600, 1194.1525],
  [1488240000, 1188.3999],
  [1488326400, 1228.4597],
  [1488412800, 1262.9315],
  [1488499200, 1289.3632],
  [1488585600, 1268.9407],
  [1488672000, 1276.2737],
  [1488758400, 1282.2547],
  [1488844800, 1234.4765],
  [1488931200, 1152.1394],
  [1489017600, 1193.4555],
  [1489104000, 1098.5301],
  [1489190400, 1176.8229],
  [1489276800, 1231.7484],
  [1489363200, 1239.3963],
  [1489449600, 1246.5366],
  [1489536000, 1258.6514],
  [1489622400, 1178.0208],
  [1489708800, 1072.0825],
  [1489795200, 962.5691],
  [1489881600, 1020.2203],
  [1489968000, 1037.7563],
  [1490054400, 1111.8183],
  [1490140800, 1037.3026],
  [1490227200, 1028.1729],
  [1490313600, 935.0635],
  [1490400000, 968.5433],
  [1490486400, 962.9581],
  [1490572800, 1042.9192],
  [1490659200, 1045.1629],
  [1490745600, 1039.6886],
  [1490832000, 1037.9877],
  [1490918400, 1081.7435],
  [1491004800, 1089.5248],
  [1491091200, 1105.563],
  [1491177600, 1144.6648],
  [1491264000, 1141.9219],
  [1491350400, 1135.8116],
  [1491436800, 1194.5965],
  [1491523200, 1191.7315],
  [1491609600, 1184.4177],
  [1491696000, 1213.6341],
  [1491782400, 1211.6499],
  [1491868800, 1229.7849],
  [1491955200, 1216.1144],
  [1492041600, 1172.5583],
  [1492128000, 1174.3332],
  [1492214400, 1175.5622],
  [1492300800, 1173.6914],
  [1492387200, 1191.9012],
  [1492473600, 1202.1315],
  [1492560000, 1209.5609],
  [1492646400, 1235.8031],
  [1492732800, 1247.3361],
  [1492819200, 1243.5504],
  [1492905600, 1250.0015],
  [1492992000, 1257.2394],
  [1493078400, 1279.8647],
  [1493164800, 1296.4855],
  [1493251200, 1345.89],
  [1493337600, 1347.9852],
  [1493424000, 1357.7153],
  [1493510400, 1381.9564],
  [1493596800, 1436.9415],
  [1493683200, 1463.8191],
  [1493769600, 1519.4089],
  [1493856000, 1539.8301],
  [1493942400, 1529.8504],
  [1494028800, 1573.2855],
  [1494115200, 1526.2678],
  [1494201600, 1685.0865],
  [1494288000, 1719.228],
  [1494374400, 1782.499],
  [1494460800, 1835.4875],
  [1494547200, 1704.6616],
  [1494633600, 1779.8403],
  [1494720000, 1794.5936],
  [1494806400, 1736.8828],
  [1494892800, 1757.0269],
  [1494979200, 1808.7461],
  [1495065600, 1894.2473],
  [1495152000, 1967.5455],
  [1495238400, 2048.1177],
  [1495324800, 2045.2225],
  [1495411200, 2078.9435],
  [1495497600, 2257.2884],
  [1495584000, 2415.0072],
  [1495670400, 2319.6014],
  [1495756800, 2279.4186],
  [1495843200, 2044.3005],
  [1495929600, 2225.7009],
  [1496016000, 2284.7158],
  [1496102400, 2167.2645],
  [1496188800, 2299.4326],
  [1496275200, 2399.8876],
  [1496361600, 2479.4239],
  [1496448000, 2549.552],
  [1496534400, 2524.9938],
  [1496620800, 2685.3189],
  [1496707200, 2871.3417],
  [1496793600, 2706.76],
  [1496880000, 2802.5635],
  [1496966400, 2804.8723],
  [1497052800, 2916.3279],
  [1497139200, 2974.2146],
  [1497225600, 2665.4333],
  [1497312000, 2707.1378],
  [1497398400, 2443.8245],
  [1497484800, 2409.8868],
  [1497571200, 2476.3591],
  [1497657600, 2652.7554],
  [1497744000, 2508.2142],
  [1497830400, 2589.6422],
  [1497916800, 2733.2266],
  [1498003200, 2639.2613],
  [1498089600, 2686.6475],
  [1498176000, 2685.8705],
  [1498262400, 2562.1891],
  [1498348800, 2497.7289],
  [1498435200, 2426.3651],
  [1498521600, 2530.3455],
  [1498608000, 2562.7923],
  [1498694400, 2540.443],
  [1498780800, 2452.7121],
  [1498867200, 2412.3662],
  [1498953600, 2518.8722],
  [1499040000, 2551.9274],
  [1499126400, 2599.7447],
  [1499212800, 2608.1049],
  [1499299200, 2603.1955],
  [1499385600, 2495.7809],
  [1499472000, 2553.4942],
  [1499558400, 2506.1732],
  [1499644800, 2319.3669],
  [1499731200, 2319.1674],
  [1499817600, 2374.8863],
  [1499904000, 2343.7383],
  [1499990400, 2214.8252],
  [1500076800, 1989.6332],
  [1500163200, 1910.7495],
  [1500249600, 2215.7463],
  [1500336000, 2303.7611],
  [1500422400, 2257.0652],
  [1500508800, 2823.8979],
  [1500595200, 2666.1397],
  [1500681600, 2829.7541],
  [1500768000, 2753.2439],
  [1500854400, 2755.1595],
  [1500940800, 2558.693],
  [1501027200, 2522.3246],
  [1501113600, 2665.1475],
  [1501200000, 2793.8335],
  [1501286400, 2706.4508],
  [1501372800, 2749.3845],
  [1501459200, 2862.6113],
  [1501545600, 2727.3892],
  [1501632000, 2690.1457],
  [1501718400, 2789.7463],
  [1501804800, 2860.2728],
  [1501891200, 3237.4234],
  [1501977600, 3230.1167],
  [1502064000, 3392.5624],
  [1502150400, 3425.6766],
  [1502236800, 3347.2154],
  [1502323200, 3437.0322],
  [1502409600, 3660.5205],
  [1502496000, 3871.0824],
  [1502582400, 4063.8011],
  [1502668800, 4304.6039],
  [1502755200, 4160.0305],
  [1502841600, 4364.6786],
];

More from voraui

Browse all components in this library →