diff options
Diffstat (limited to 'priv/static/metrics-graphics-3.0-alpha3/examples')
51 files changed, 41387 insertions, 0 deletions
diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/charts/annotations.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/annotations.htm new file mode 100644 index 0000000..5bd4d11 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/annotations.htm @@ -0,0 +1,338 @@ + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='markers'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/some_percentage.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/some_percentage.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + var markers = [{ + 'date': new Date('2014-02-01T00:00:00.000Z'), + 'label': '1st Milestone' + }, { + 'date': new Date('2014-03-15T00:00:00.000Z'), + 'label': '2nd Milestone' + }]; + + MG.data_graphic({ + title: "Markers", + description: "Markers are vertical lines that can be added at arbitrary points. Markers that are close to each other won't collide.", + data: data, + width: 600, + height: 200, + right: 40, + markers: markers, + format: 'percentage', + target: '#markers' + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='markers-clickable'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/some_percentage.json'>data</a></div> + + <pre><code class='javascript'>d3.json('data/some_percentage.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + var clicker = function() { + window.open('https://www.youtube.com/watch?v=dQw4w9WgXcQ', '_blank'); + }; + + var markers = [{ + 'date': new Date('2014-02-01T00:00:00.000Z'), + 'label': "Click me", + 'click': clicker + }, { + 'date': new Date('2014-03-15T00:00:00.000Z'), + 'label': "Nothing to see here" + }]; + + MG.data_graphic({ + title: "Clickable Markers", + description: "You can assign arbitrary functions to markers' click events.", + data: data, + width: 600, + height: 200, + right: 40, + markers: markers, + format: 'percentage', + target: '#markers-clickable' + }); +});</code></pre> + + </div> + </div> + + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='markers-mouseover'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/some_percentage.json'>data</a></div> + + <pre><code class='javascript'>d3.json('data/some_percentage.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + var mouseover = function() { + alert("You are over me!"); + }; + + var markers = [{ + 'date': new Date('2014-02-01T00:00:00.000Z'), + 'label': "Place your mouse here", + 'mouseover': mouseover + }, { + 'date': new Date('2014-03-15T00:00:00.000Z'), + 'label': "Nothing to see here" + }]; + + MG.data_graphic({ + title: "Mouse Over Markers", + description: "You can assign arbitrary functions to markers' mouseover events.", + data: data, + width: 600, + height: 200, + right: 40, + markers: markers, + format: 'percentage', + target: '#markers-mouseover' + });</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='markers-mouseout'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/some_percentage.json'>data</a></div> + + <pre><code class='javascript'>d3.json('data/some_percentage.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + var mouseout = function() { + alert("You just left me!"); + }; + + var markers = [{ + 'date': new Date('2014-02-01T00:00:00.000Z'), + 'label': "Place your mouse here and out!", + 'mouseout': mouseout + }, { + 'date': new Date('2014-03-15T00:00:00.000Z'), + 'label': "Nothing to see here" + }]; + + MG.data_graphic({ + title: "Mouse Out Markers", + description: "You can assign arbitrary functions to markers' mouseout events.", + data: data, + width: 600, + height: 200, + right: 40, + markers: markers, + format: 'percentage', + target: '#markers-mouseout' + });</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='baselines'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users1.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Baselines", + description: "Baselines are horizontal lines that can added at arbitrary points.", + data: data, + baselines: [{value: 160000000, label: 'a baseline'}], + width: 600, + height: 200, + right: 40, + target: '#baselines' + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center mg-main-area-solid' id='spike'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users1.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + + var markers = [{ + 'date': new Date('2014-03-17T00:00:00.000Z'), + 'label': 'Look, a spike!' + }]; + + MG.data_graphic({ + title: "Annotating a Point", + description: "By setting the graphic's target a class name of mg-main-area-solid, markers don't extend down to the bottom of the graphic, which better draws attention to, say, spikes.", + data: data, + width: 600, + height: 200, + right: 40, + markers: markers, + target: '#spike' + }); +});</code></pre> + + </div> + </div> + +<script> +MG._hooks = {}; +d3.json('data/some_percentage.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + var markers = [{ + 'date': new Date('2014-02-01T00:00:00.000Z'), + 'label': '1st Milestone' + }, { + 'date': new Date('2014-03-15T00:00:00.000Z'), + 'label': '2nd Milestone' + }]; + + MG.data_graphic({ + title: "Markers", + description: "Markers are vertical lines that can be added at arbitrary points. Markers that are close to each other won't collide.", + data: data, + width: 600, + height: 200, + right: 40, + markers: markers, + format: 'percentage', + target: '#markers' + }); + + var clicker = function() { + window.open('https://www.youtube.com/watch?v=dQw4w9WgXcQ', '_blank'); + }; + + markers = [{ + 'date': new Date('2014-02-01T00:00:00.000Z'), + 'label': "Click me", + 'click': clicker + }, { + 'date': new Date('2014-03-15T00:00:00.000Z'), + 'label': "Nothing to see here" + }]; + + MG.data_graphic({ + title: "Clickable Markers", + description: "You can assign arbitrary functions to markers' click events.", + data: data, + width: 600, + height: 200, + right: 40, + markers: markers, + format: 'percentage', + target: '#markers-clickable' + }); + + var mouseover = function() { + alert("You are over me!"); + }; + + markers = [{ + 'date': new Date('2014-02-01T00:00:00.000Z'), + 'label': "Place your mouse here", + 'mouseover': mouseover + }, { + 'date': new Date('2014-03-15T00:00:00.000Z'), + 'label': "Nothing to see here" + }]; + + MG.data_graphic({ + title: "Mouse Over Markers", + description: "You can assign arbitrary functions to markers' mouseover events.", + data: data, + width: 600, + height: 200, + right: 40, + markers: markers, + format: 'percentage', + target: '#markers-mouseover' + }); + + var mouseout = function() { + alert("You just left me!"); + }; + + markers = [{ + 'date': new Date('2014-02-01T00:00:00.000Z'), + 'label': "Place your mouse here and out!", + 'mouseout': mouseout + }, { + 'date': new Date('2014-03-15T00:00:00.000Z'), + 'label': "Nothing to see here" + }]; + + MG.data_graphic({ + title: "Mouse Out Markers", + description: "You can assign arbitrary functions to markers' mouseout events.", + data: data, + width: 600, + height: 200, + right: 40, + markers: markers, + format: 'percentage', + target: '#markers-mouseout' + }); + +}); + +d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Baselines", + description: "Baselines are horizontal lines that can added at arbitrary points.", + data: data, + baselines: [{value: 160000000, label: 'goal'}], + width: 600, + height: 200, + right: 40, + target: '#baselines' + }); +}); + +d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + + var markers = [{ + 'date': new Date('2014-03-17T00:00:00.000Z'), + 'label': 'Look, a spike!' + }]; + + MG.data_graphic({ + title: "Annotating a Point", + description: "By setting the graphic's target a class name of main-area-solid, markers don't extend down to the bottom of the graphic, which better draws attention to, say, spikes.", + data: data, + width: 600, + height: 200, + right: 40, + markers: markers, + target: '#spike' + }); +}); +</script> diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/charts/auto-time-formatting.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/auto-time-formatting.htm new file mode 100644 index 0000000..af132dd --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/auto-time-formatting.htm @@ -0,0 +1,296 @@ + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='row'> + <div class='col-lg-12 text-center' id='time1'></div> + <div class='col-lg-12 text-center' id='time2'></div> + <div class='col-lg-12 text-center' id='time3'></div> + <div class='col-lg-12 text-center' id='time4'></div> + <div class='col-lg-12 text-center' id='many-months'></div> + <div class='col-lg-12 text-center' id='a-few-years'></div> + <div class='col-lg-12 text-center' id='years'></div> + <div class='col-lg-12 text-center' id='decades'></div> + <div class='col-lg-12 text-center' id='centuries'></div> + + </div> + </div> + <div class='col-lg-5'> + + <pre><code class='javascript'>function fake_data(length, seconds) { + var d = new Date(); + var v = 100000; + var data=[]; + + for (var i = 0; i < length; i++) { + v += (Math.random() - 0.5) * 10000; + data.push({date: MG.clone(d), value: v}); + d = new Date(d.getTime() + seconds * 1000); + } + return data; +} + +function fake_days(length) { + var d = new Date(); + var v = 100000; + + var data = []; + for (var i = 0; i < length; i++) { + v += (Math.random() - 0.5) * 10000; + if (v < 0) v = 0; + data.push({date: MG.clone(d), value: v}); + d.setDate(d.getDate() + 1); + } + return data; +} + +function fake_years(length) { + var y = 2015; + var d = new Date(y,0,1); + out = []; + v = 100000; + for (var i = 0; i < length; i++) { + v += (Math.random()-.5) * 10000; + out.push({value:v, date: MG.clone(d)}); + y -=1; + d = new Date(y,0,1); + } + out.reverse(); + return out; +} + + +var less_than_a_minute = fake_data(25, 1); +var less_than_a_day = fake_data(25,60 * 20); +var a_few_days = fake_data(75,60 * 60); +var many_days = fake_days(60); +var many_many_many_days = fake_days(365*2); +var a_few_years = fake_days(365*4); + +MG.data_graphic({ + title: "European Clock", + description: 'By setting european_clock to true, you can default to European-style time. This is at the moment experimental, and the formatting may change.', + data: less_than_a_minute, + target: '#european', + european_clock: true, + width: 600, + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "Less Than A Minute", + data: less_than_a_minute, + target: '#time1', + width: 600, + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "Less Than A Day", + data: less_than_a_day, + target: '#time2', + width: 600, + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "A Few Days", + data: a_few_days, + target: '#time3', + width: 600, + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "Over A Large Span of Days", + data: many_days, + target: '#time4', + width: 600, + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "Over Many Months", + data: many_many_many_days, + target: '#many-months', + width: 600, + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "Over A Few Years", + data: a_few_years, + target: '#a-few-years', + width: 600, + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "Over Centuries", + data: fake_years(300), + target: '#centuries', + width: 600, + height: 200, + right: 40 +});</code></pre> + + </div> + </div> + + + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='row'> + <div class='col-lg-12 text-center' id='european'></div> + </div> + </div> + <div class='col-lg-5'> + + <pre><code class='javascript'>MG.data_graphic({ + title: "European Clock", + description: 'By setting european_clock to true, you can default to European-style time. This is at the moment experimental, and the formatting may change.', + data: less_than_a_minute, + target: '#european', + european_clock: true, + width: 600, + height: 200, + right: 40 +}); + </code></pre> + + </div> + </div> + +<script> +MG._hooks = {}; +function fake_data(length, seconds) { + var d = new Date(); + var v = 100000; + var data=[]; + + for (var i = 0; i < length; i++) { + v += (Math.random() - 0.5) * 10000; + data.push({date: MG.clone(d), value: v}); + d = new Date(d.getTime() + seconds * 1000); + } + return data; +} + +function fake_days(length) { + var d = new Date(); + var v = 100000; + + var data = []; + for (var i = 0; i < length; i++) { + v += (Math.random() - 0.5) * 10000; + if (v < 0) v = 0; + data.push({date: MG.clone(d), value: v}); + d.setDate(d.getDate() + 1); + } + return data; +} + +function fake_years(length) { + var y = 2015; + var d = new Date(y,0,1); + out = []; + v = 100000; + for (var i = 0; i < length; i++) { + v += (Math.random()-.5) * 10000; + out.push({value:v, date: MG.clone(d)}); + y -=1; + d = new Date(y,0,1); + } + out.reverse(); + return out; +} + + +var less_than_a_minute = fake_data(25, 1); +var less_than_a_day = fake_data(25,60 * 20); +var a_few_days = fake_data(75,60 * 60); +var many_days = fake_days(80); +var many_many_many_days = fake_days(365*2); +var a_few_years = fake_days(365*3); + +MG.data_graphic({ + title: "European Clock", + description: 'By setting european_clock to true, you can default to European-style time. This is at the moment experimental, and the formatting may change.', + data: less_than_a_minute, + target: '#european', + european_clock: true, + width: 600, + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "Less Than A Minute", + data: less_than_a_minute, + target: '#time1', + width: 600, + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "Less Than A Day", + data: less_than_a_day, + target: '#time2', + width: 600, + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "A Few Days", + data: a_few_days, + target: '#time3', + width: 600, + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "Over A Large Span of Days", + data: many_days, + width:600, + target: '#time4', + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "Over Many Months", + data: many_many_many_days, + target: '#many-months', + width: 600, + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "Over A Few Years", + data: a_few_years, + target: '#a-few-years', + width: 600, + height: 200, + right: 40 +}); + +MG.data_graphic({ + title: "Over Centuries", + data: fake_years(300), + target: '#centuries', + width: 600, + height: 200, + right: 40 +}); + + +</script> diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/charts/axes.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/axes.htm new file mode 100644 index 0000000..375120a --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/axes.htm @@ -0,0 +1,486 @@ + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='xnotdate'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/xnotdate.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/xnotdate.json', function(data) { + MG.data_graphic({ + title: "Axis Labels", + description: "A graphic where we're not plotting dates on the x-axis and where the axes include labels and the line animates on load. We've also enabled extended ticks along the y-axis.", + data: data, + animate_on_load: true, + area: false, + width: 600, + height: 240, + right: 40, + left: 90, + bottom: 50, + y_extended_ticks: true, + target: '#xnotdate', + x_accessor: 'males', + y_accessor: 'females', + x_label: 'males', + y_label: 'females', + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='percentage'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/some_percentage.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/some_percentage.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Some Percentages", + description: "Here is an example that shows percentages.", + data: data, + width: 600, + height: 200, + right: 40, + format: 'percentage', + target: '#percentage' + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='currency'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/some_currency.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/some_currency.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Some Currency", + description: "Here is an example that uses custom units for currency.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#currency', + yax_units: '$' + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='log1'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/log.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/log.json', function(data) { + data = [data]; + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Log Scale", + description: "You can change the y-axis' scale to logarithmic by setting <i>y_scale_type</i> to <i>log</i>.", + data: data, + y_scale_type: 'log', + width: 600, + height: 200, + right: 40, + target: '#log1' + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='col-lg-12 text-center' id='hidden1'></div> + <div class='col-lg-12 text-center' id='hidden2'></div> + </div> + <div class='col-lg-5'> + <div class='data-column'> + <a href='data/fake_users1.json'>data 1</a>, + <a href='data/brief-1.json'>data 2</a> + </div> + +<pre><code class='javascript'>d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "No X Axis", + description: "You can hide either axis by setting <i>x_axis</i> or <i>y_axis</i> to false.", + data: data, + decimals: 0, + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#hidden1', + area: false, + x_axis: false, + }); +}); + +d3.json('data/brief-1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "No Y Axis", + description: "You can hide either axis by setting <i>x_axis</i> or <i>y_axis</i> to false.", + data: data, + decimals: 0, + width: 600, + height: 200, + right: 20, + xax_count: 4, + target: '#hidden2', + area: false, + y_axis: false + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='y_rug'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users1.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Rug Plots", + description: "You can set rug plots either axis by setting <i>x_rug</i> or <i>y_rug</i> to true.", + data: data, + decimals: 0, + width: 600, + height: 200, + right: 40, + target: '#y_rug', + area: false, + y_rug: true + }); +});</code></pre> + + </div> +</div> + + + + + + + + + + +<div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='row'> + <div class='col-lg-6 text-center' id='axis-pos-1'></div> + <div class='col-lg-6 text-center' id='axis-pos-2'></div> + </div> + <div class='row'> + <div class='col-lg-6 text-center' id='axis-pos-3'></div> + <div class='col-lg-6 text-center' id='axis-pos-4'></div> + </div> + </div> + <div class='col-lg-5'> + <div class='data-column'> + <a href='data/fake_users1.json'>data 1</a>, + <a href='data/brief-1.json'>data 2</a> + </div> + +<pre><code class='javascript'>d3.json('data/brief-1.json', function(data) { + data = MG.convert.date(data, 'date'); + var position = [['left', 'top'],['right', 'top'], ['left', 'bottom'], ['right', 'bottom']]; + position.forEach(function(pos,i) { + console.log(pos,i) + var i = i+1; + + MG.data_graphic({ + title: "Axis Positions: " + pos[0] +', ' + pos[1], + description: "Set <i>x_axis_position: " + pos[1] + "</i> and <i>x_axis_position: " + pos[0] +"</i>.", + x_axis_position: pos[1], + y_axis_position: pos[0], + data: data, + decimals: 0, + left: pos[0] === 'right' ? 20 : 50, + right: pos[0] === 'left' ? 20 : 50, + top: pos[1] === 'bottom' ? 50 : 50, + bottom: pos[1] === 'top' ? 25 : 50, + target: '#axis-pos-'+i, + area: false + }); + }) +});</code></pre> + + </div> +</div> + + +<script> +d3.json('data/brief-1.json', function(data) { + data = MG.convert.date(data, 'date'); + var position = [['left', 'top'],['right', 'top'], ['left', 'bottom'], ['right', 'bottom']]; + position.forEach(function(pos,i) { + var i = i+1; + + MG.data_graphic({ + title: "Axis Positions: " + pos[0] +', ' + pos[1], + description: "Set <i>x_axis_position: " + pos[1] + "</i> and <i>x_axis_position: " + pos[0] +"</i>.", + x_axis_position: pos[1], + y_axis_position: pos[0], + data: data, + decimals: 0, + left: pos[0] === 'right' ? 20 : 50, + right: pos[0] === 'left' ? 20 : 50, + top: pos[1] === 'bottom' ? 50 : 50, + bottom: pos[1] === 'top' ? 25 : 50, + target: '#axis-pos-'+i, + area: false + }); + }) +}); +</script> + + + + + + + + + + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='col-lg-6 text-center' id='neg1'></div> + <div class='col-lg-6 text-center' id='neg2'></div> + <div class='col-lg-6 text-center' id='y-axis-not-zero'></div> + </div> + <div class='col-lg-5'> + <div class='data-column'> + <a href='data/neg1.json'>data 1</a>, + <a href='data/neg2.json'>data 2</a> + </div> + +<pre><code class='javascript'>d3.json('data/neg1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Negative Values 1", + description: "MG defaults to 0 on the y-axis as min if there are no negative numbers. If there are negatives, should provide some buffer below.", + data: data, + width: 295, + height: 220, + right: 10, + target: '#neg1' + }); + + var data2 = MG.clone(data).map(function(d) { + d.value = d.value + 550; + return d; + }); + + MG.data_graphic({ + title: "Y-Axis Not Zero", + data: data2, + width: 295, + height: 220, + right: 10, + min_y_from_data: true, + yax_units: '$', + target: '#y-axis-not-zero', + x_accessor: 'date', + y_accessor: 'value' + }); +}); + +d3.json('data/neg2.json', function(data) { + MG.data_graphic({ + title: "Negative Values 2", + data: data, + width: 295, + height: 220, + right: 10, + target: '#neg2', + x_accessor: 'subject', + y_accessor: 'measure' + }); +});</code></pre> + + </div> + </div> + +<script> +MG._hooks = {}; +d3.json('data/xnotdate.json', function(data) { + MG.data_graphic({ + title: "Axis Labels", + description: "A graphic where we're not plotting dates on the x-axis and where the axes include labels and the line animates on load. We've also enabled extended ticks along the y-axis.", + data: data, + animate_on_load: true, + area: false, + width: 600, + height: 240, + right: 40, + left: 90, + bottom: 50, + y_extended_ticks: true, + target: '#xnotdate', + x_accessor: 'males', + y_accessor: 'females', + x_label: 'males', + y_label: 'females', + }); +}); + +d3.json('data/some_percentage.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Some Percentages", + description: "Here is an example that shows percentages.", + data: data, + width: 600, + height: 200, + right: 40, + format: 'percentage', + target: '#percentage' + }); +}); + +d3.json('data/some_currency.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Some Currency", + description: "Here is an example that uses custom units for currency.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#currency', + yax_units: '$' + }); +}); + +d3.json('data/log.json', function(data) { + data = [data]; + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Log Scale", + description: "You can change the y-axis' scale to logarithmic by setting <i>y_scale_type</i> to <i>log</i>.", + data: data, + y_scale_type: 'log', + width: 600, + height: 200, + right: 40, + target: '#log1' + }); +}); + +d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "No X Axis", + description: "You can hide either axis by setting <i>x_axis</i> or <i>y_axis</i> to false.", + data: data, + decimals: 0, + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#hidden1', + area: false, + x_axis: false, + }); +}); + +d3.json('data/brief-1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "No Y Axis", + description: "You can hide either axis by setting <i>x_axis</i> or <i>y_axis</i> to false.", + data: data, + decimals: 0, + width: 600, + height: 200, + right: 20, + xax_count: 4, + target: '#hidden2', + area: false, + y_axis: false + }); +}); + +d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Rug Plots", + description: "You can set rug plots either axis by setting <i>x_rug</i> or <i>y_rug</i> to true.", + data: data, + decimals: 0, + width: 600, + height: 200, + right: 40, + target: '#y_rug', + area: false, + y_rug: true + }); +}); + +d3.json('data/neg1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Negative Values 1", + description: "MG defaults to 0 on the y-axis as min if there are no negative numbers. If there are negatives, should provide some buffer below.", + data: data, + width: 295, + height: 220, + right: 10, + target: '#neg1' + }); + + var data2 = MG.clone(data).map(function(d) { + d.value = d.value + 550; + return d; + }); + + MG.data_graphic({ + title: "Y-Axis Not Zero", + data: data2, + width: 295, + height: 220, + right: 10, + min_y_from_data: true, + yax_units: '$', + target: '#y-axis-not-zero', + x_accessor: 'date', + y_accessor: 'value' + }); +}); + +d3.json('data/neg2.json', function(data) { + MG.data_graphic({ + title: "Negative Values 2", + data: data, + width: 295, + height: 220, + right: 10, + target: '#neg2', + x_accessor: 'subject', + y_accessor: 'measure' + }); +}); +</script> diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/charts/brushing_zooming.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/brushing_zooming.htm new file mode 100644 index 0000000..e23e35d --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/brushing_zooming.htm @@ -0,0 +1,166 @@ + <div class='row trunk-section'> + <div class='col-lg-7'> + <div class='row'> + <div class='col-lg-12 text-center' id='basic_brushing'></div> + <div class='col-lg-12 text-center' id='point_chart_brushing'></div> + </div> + </div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users3.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/fake_users2.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + MG.data_graphic({ + title: "Basic Brushing & Zooming", + description: "This is a simple example of brushing and zooming. You can set 'brush' as 'xy', 'x', 'y' to specify the axis(es) that may be brushed.", + data: data, + top: 70, + width: 600, + height: 240, + right: 40, + missing_is_hidden: true, + target: '#basic_brushing', + brush: 'xy', + }); +}); + +d3.json('data/points1.json', function(data) { + MG.data_graphic({ + title: "Point Chart Brushing", + description: "Brushing and zooming also works for point charts.", + data: data, + chart_type: 'point', + width: 600, + height: 240, + right: 40, + target: '#point_chart_brushing', + x_accessor: 'x', + y_accessor: 'y', + y_rug: true, + brush: 'xy', + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7'> + <div class='row'> + <div class='col-lg-12 text-center' id='main'></div> + <div class='col-lg-12 text-center' id='overview_plot'></div> + </div> + </div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users3.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/fake_users2.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + const main = { + title: "Overview Plot", + description: "This is a simple example of an overview plot. You can create an overview plot by creating another chart with 'zoom_target' option and then setting it as the object of the main chart.", + data: data, + top: 70, + width: 600, + height: 200, + right: 40, + missing_is_hidden: true, + target: '#main', + brush: 'xy', + } + MG.data_graphic(main); + MG.data_graphic({ + data: data, + width: 600, + height: 50, + top: 8, + bottom: 0, + right: 40, + missing_is_hidden: true, + target: '#overview_plot', + brush: 'x', + zoom_target: main, + x_axis: false, + y_axis: false, + showActivePoint: false, + }); +});</code></pre> + + </div> + </div> + +<script> +d3.json('data/fake_users2.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + MG.data_graphic({ + title: "Basic Brushing & Zooming", + description: "This is a simple example of brushing and zooming. You can set 'brush' as 'xy', 'x', 'y' to specify the axis(es) that may be brushed.", + data: data, + top: 70, + width: 600, + height: 240, + right: 40, + missing_is_hidden: true, + target: '#basic_brushing', + brush: 'xy', + }); +}); + +d3.json('data/points1.json', function(data) { + MG.data_graphic({ + title: "Point Chart Brushing", + description: "Brushing and zooming also works for point charts.", + data: data, + chart_type: 'point', + width: 600, + height: 240, + right: 40, + target: '#point_chart_brushing', + x_accessor: 'x', + y_accessor: 'y', + y_rug: true, + brush: 'xy', + }); +}); + +d3.json('data/fake_users2.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + const main = { + title: "Overview Plot", + description: "This is a simple example of an overview plot. You can create an overview plot by creating another chart with 'zoom_target' option and then setting it as the object of the main chart.", + data: data, + top: 70, + width: 600, + height: 200, + right: 40, + missing_is_hidden: true, + target: '#main', + brush: 'xy', + } + MG.data_graphic(main); + MG.data_graphic({ + data: data, + width: 600, + height: 50, + top: 8, + bottom: 0, + right: 40, + missing_is_hidden: true, + target: '#overview_plot', + brush: 'x', + zoom_target: main, + x_axis: false, + y_axis: false, + showActivePoint: false, + }); +}); + +</script> diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/charts/data.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/data.htm new file mode 100644 index 0000000..aa0f076 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/data.htm @@ -0,0 +1,386 @@ + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='row'> + <div class='col-lg-12 text-center' id='missing-y'></div> + </div> + </div> + <div class='col-lg-5'> + <div class='data-column'> + <a href='data/missing-y.json'>data</a> + </div> + +<pre><code class='javascript'>d3.json('data/missing-y.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Few Observations", + description: "We sometimes have only a few observations. By setting <i>missing_is_zero: true</i>, missing values for a time-series will be interpreted as zeros. In this example, we've overridden the rollover callback to show 'no data' for missing observations and have set the <i>min_x</i> and <i>max_x</i> options in order to expand the date range.", + data: data, + interpolate: d3.curveLinear, + missing_is_zero: true, + width: 600, + height: 200, + right: 40, + min_x: new Date('2014-01-01'), + max_x: new Date('2014-06-01'), + target: '#missing-y', + mouseover: function(d, i) { + var df = d3.timeFormat('%b %d, %Y'); + var date = df(d.date); + var y_val = (d.value === 0) ? 'no data' : d.value; + + d3.select('#missing-y svg .mg-active-datapoint') + .text(date + ' ' + y_val); + } + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='missing_is_hidden'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/missing-is-hidden.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/missing-is-hidden.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Broken Lines", + description: "Setting <i>missing_is_hidden</i> to true will hide missing ranges rather than considering them to be zeros or interpolating between the two points on either side.", + data: data, + missing_is_hidden: true, + width: 600, + height: 200, + right: 40, + target: '#missing_is_hidden', + area: false, + show_secondary_x_label: false + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='missing_is_hidden_accessor'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/missing-is-hidden-accessor.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/missing-is-hidden-accessor.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Broken Lines (Missing Data Points)", + description: "You can hide individual data points on a particular attribute by setting <i>missing_is_hidden_accessor</i>. Data points whose y-accessor values are null are also hidden.", + data: data, + missing_is_hidden: true, + missing_is_hidden_accessor: 'dead', + width: 600, + height: 200, + right: 40, + target: '#missing_is_hidden_accessor' + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='row'> + <div class='col-lg-12 text-center' id='missing-data'></div> + </div> + </div> + <div class='col-lg-5'> + +<pre><code class='javascript'>MG.data_graphic({ + title: "Missing Data", + description: "This is an example of a graphic whose data is currently missing. We've also set the <i>error</i> option, which appends an error icon to the title and logs an error to the browser's console.", + error: 'This data is blocked by Lorem Ipsum. Get your **** together, Ipsum.', + chart_type: 'missing-data', + missing_text: 'This is an example of a missing chart', + target: '#missing-data', + width: 600, + height: 200 +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='row'> + <div class='col-lg-12 text-center' id='missing1'></div> + </div> + </div> + <div class='col-lg-5'> + <div class='data-column'> + <a href='data/fake_users2.json'>data</a> + </div> + +<pre><code class='javascript'>d3.json('data/fake_users2.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + var all_the_data = MG.clone(data[0]); + for (i = 1; i < data.length; i++){ + for (var j = 0; j < data[i].length; j++) { + if (i === 2 && all_the_data[j].date < new Date('2014-02-01')) { + } else { + all_the_data[j]['value' + (i + 1)] = data[i][j].value; + } + } + } + + MG.data_graphic({ + title: "Handling Different Sized Lines in a Single Array", + description: "How do you handle data with multiple implied time series lengths?", + data: all_the_data, + width: 600, + height: 200, + right: 40, + target: '#missing1', + linked: true, + x_accessor: 'date', + y_accessor: ['value', 'value2', 'value3'] + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='row'> + <div class='col-lg-12 text-center' id='display_active_point_01'></div> + </div> + </div> + <div class='col-lg-5'> + <div class='data-column'> + <a href='data/fake_users2.json'>data</a> + </div> + + <pre><code class='javascript'>d3.json('data/fake_users1.json', function(data) { + + for (var i = 0; i < data.length; i++) { + data[i].active = (i % 5 === 0); + } + + data = MG.convert.date(data, 'date'); + + MG.data_graphic({ + title: "Show active points on line chart", + description: "This line chart displays pre-defined active points", + data: data, + width: 600, + height: 200, + right: 40, + point_size: 3, + active_point_on_lines: true, + active_point_accessor: 'active', + active_point_size: 2, + target: '#display_active_point_01', + aggregate_rollover: true + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='row'> + <div class='col-lg-12 text-center' id='display_active_point_02'></div> + </div> + </div> + <div class='col-lg-5'> + <div class='data-column'> + <a href='data/fake_users2.json'>data</a> + </div> + + <pre><code class='javascript'>d3.json('data/fake_users2.json', function(data) { + + for (var i = 0; i < data.length; i++) { + for (var j = 0; j < data[i].length; j++) { + if (i === 0) { + data[i][j].active = (j % 5 === 0); + } + if (i === 1) { + data[i][j].active = (j % 10 === 0); + } + } + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Show active points on multi-lines chart", + description: "This multi-lines chart displays pre-defined active points for each lines", + data: data, + width: 600, + height: 200, + right: 40, + point_size: 3, + active_point_on_lines: true, + active_point_accessor: 'active', + active_point_size: 2, + target: '#display_active_point_01', + aggregate_rollover: true + }); +});</code></pre> + + </div> + </div> + +<script> +MG._hooks = {}; +d3.json('data/missing-y.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Few Observations", + description: "We sometimes have only a few observations. By setting <i>missing_is_zero: true</i>, missing values for a time-series will be interpreted as zeros. In this example, we've overridden the rollover callback to show 'no data' for missing observations and have set the <i>min_x</i> and <i>max_x</i> options in order to expand the date range.", + data: data, + interpolate: d3.curveLinear, + missing_is_zero: true, + width: 600, + height: 200, + right: 40, + min_x: new Date('2014-01-01'), + max_x: new Date('2014-06-01'), + target: '#missing-y', + mouseover: function(d, i) { + var df = d3.timeFormat('%b %d, %Y'); + var date = df(d.date); + var y_val = (d.value === 0) ? 'no data' : d.value; + + d3.select('#missing-y svg .mg-active-datapoint') + .text(date + ' ' + y_val); + } + }); +}); + +d3.json('data/missing-is-hidden.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Broken Lines (Missing Data Range)", + description: "Setting <i>missing_is_hidden</i> to true will hide missing ranges rather than considering them to be zeros or interpolating between the two points on either side.", + data: data, + missing_is_hidden: true, + width: 600, + height: 200, + right: 40, + target: '#missing_is_hidden', + area: false, + show_secondary_x_label: false + }); +}); + +d3.json('data/missing-is-hidden-accessor.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Broken Lines (Missing Data Points)", + description: "You can hide individual data points on a particular attribute by setting <i>missing_is_hidden_accessor</i>. Data points whose y-accessor values are null are also hidden.", + data: data, + missing_is_hidden: true, + missing_is_hidden_accessor: 'dead', + width: 600, + height: 200, + right: 40, + target: '#missing_is_hidden_accessor' + }); +}); + + +MG.data_graphic({ + title: "Missing Data", + chart_type: 'missing-data', + description: "This is an example of a graphic whose data is currently missing. We've also set the <i>error</i> option, which appends an error icon to the title and logs an error to the browser's console.", + error: 'This data is blocked by Lorem Ipsum. Get your **** together, Ipsum.', + missing_text: 'This is an example of a missing chart', + target: '#missing-data', + width: 600, + height: 200 +}); + +d3.json('data/fake_users2.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + var all_the_data = MG.clone(data[0]); + for (i = 1; i < data.length; i++){ + for (var j = 0; j < data[i].length; j++) { + if (i === 2 && all_the_data[j].date < new Date('2014-02-01')) { + } else { + all_the_data[j]['value' + (i + 1)] = data[i][j].value; + } + } + } + + MG.data_graphic({ + title: "Handling Different Sized Lines in a Single Array", + description: "How do you handle data with multiple implied time series lengths?", + data: all_the_data, + width: 600, + height: 200, + right: 40, + target: '#missing1', + linked: true, + x_accessor: 'date', + y_accessor: ['value', 'value2', 'value3'] + }); +}); + +d3.json('data/fake_users1.json', function(data) { + + for (var i = 0; i < data.length; i++) { + data[i].active = (i % 5 === 0); + } + + data = MG.convert.date(data, 'date'); + + MG.data_graphic({ + title: "Show active points on line chart", + description: "This line chart displays pre-defined active points", + data: data, + width: 600, + height: 200, + right: 40, + point_size: 3, + active_point_on_lines: true, + active_point_accessor: 'active', + active_point_size: 2, + target: '#display_active_point_01', + aggregate_rollover: true + }); +}); + +d3.json('data/fake_users2.json', function(data) { + + for (var i = 0; i < data.length; i++) { + for (var j = 0; j < data[i].length; j++) { + if (i === 0) { + data[i][j].active = (j % 5 === 0); + } + if (i === 1) { + data[i][j].active = (j % 10 === 0); + } + } + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Show active points on multi-lines chart", + description: "This multi-lines chart displays pre-defined active points for each lines", + data: data, + width: 600, + height: 200, + right: 40, + point_size: 3, + active_point_on_lines: true, + active_point_accessor: 'active', + active_point_size: 2, + target: '#display_active_point_02', + aggregate_rollover: true + }); +}); +</script> diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/charts/experimental.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/experimental.htm new file mode 100644 index 0000000..725a8d3 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/experimental.htm @@ -0,0 +1,1159 @@ + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='col-lg-6 text-center' id='scatter-simple'></div> + <div class='col-lg-6 text-center' id='categorical1'></div> + <div class='col-lg-6 text-center' id='categorical2'></div> + <div class='col-lg-6 text-center' id='scatter-line-best-fit'></div> + <div class='col-lg-6 text-center' id='scatter-size-and-color'></div> + <div class='col-lg-6 text-center' id='sls-time-series'></div> + <div class='col-lg-6 text-center' id='highlight'></div> + </div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/points1.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/points1.json', function(data) { + MG.data_graphic({ + title: "Simple Scatterplot", + description: "This is an example of a simple scatterplot, in which we have enabled rug plots on the y-axis by setting the <i>y_rug</i> option to true.", + data: data, + chart_type: 'point', + width: 295, + height: 225, + right: 10, + target: '#scatter-simple', + x_accessor: 'x', + y_accessor: 'y', + mouseover: function(d, i) { console.log(d,i); }, + y_rug: true + }); + + MG.data_graphic({ + title: "Automatic Category Coloring", + description: "By setting <i>color_type</i> to 'category' you can color the points according to another discrete value.", + data: data, + chart_type: 'point', + width: 295, + height: 225, + right: 10, + target: '#categorical1', + x_accessor: 'x', + y_accessor: 'y', + color_accessor: 'v', + color_type:'category', + y_rug: true + }); + + MG.data_graphic({ + title: "Custom Category Color Mapping", + description: "You can specify the color domain and the corresponding color range to get custom mapping of categories to colors.", + data: data, + chart_type: 'point', + width: 295, + height: 225, + right: 10, + target: '#categorical2', + x_accessor: 'x', + y_accessor: 'y', + color_accessor: 'v', + color_domain: ['cat_0', 'cat_1', 'other'], + color_range: ['blue', 'gray', 'black'], + color_type: 'category', + x_rug: true + }); + + MG.data_graphic({ + title: "Simple Line of Best Fit", + description: "For any scatterplot, set <i>least_squares</i> to true to add.", + data: data, + least_squares: true, + chart_type: 'point', + width: 295, + height: 225, + right: 10, + target: '#scatter-line-best-fit', + x_accessor: 'x', + y_accessor: 'y' + }); + + MG.data_graphic({ + title: "Points Highlighting", + description: "You can set <i>highlight</i> to filter the points you want to highlight.", + data: data, + chart_type: 'point', + width: 295, + height: 225, + right: 10, + target: '#highlight', + x_accessor: 'x', + y_accessor: 'y', + y_rug: true, + highlight: (d, i) => d.z > 2 + }); +}); + +d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Another Least Squares Example", + description: "Least squares effortlessly works with dates or times on axes.", + data: data, + chart_type: 'point', + width: 295, + height: 225, + left: 60, + right: 10, + least_squares: true, + target: '#sls-time-series', + x_accessor: 'date', + y_accessor: 'value' + }); +}); + +var color_range = (theme === 'light') ? null : ['white','yellow']; + +d3.json('data/points1.json', function(data) { + MG.data_graphic({ + title: "Scatterplot with Size and Color", + description: "Scatterplots have <i>x_accessor</i>, <i>y_accessor</i>, <i>size_accessor</i>, and <i>color_accessor</i>. For the last two you can also provide domain and range functions, to make it easy to change the color ranges. Colors default to red and blue, but can be overridden by passing an array of colors to <i>color_range</i>, as we've done in this example for the dark theme.", + data: data, + chart_type: 'point', + width: 295, + height: 225, + right: 10, + target: '#scatter-size-and-color', + x_accessor: 'x', + y_accessor: 'y', + color_accessor:'z', + color_range: color_range, + size_accessor:'w', + x_rug: true, + y_rug: true + }); +});</code></pre> + + </div> + </div> + + +<div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='row'> + <div class='col-lg-6 text-center' id='point-categorical'></div> + <div class='col-lg-6 text-center' id='bar-categorical'></div> + </div> + + <div class='row'> + <div class='col-lg-6 text-center' id='point-categorical2'></div> + <div class='col-lg-6 text-center' id='bar-categorical2'></div> + + </div> + <div class='row'> + <div class='col-lg-6 text-center' id='point-categorical-group'></div> + <div class='col-lg-6 text-center' id='bar-categorical-group'> + </div> + + </div> + <div class='row'> + <div class='col-lg-12 text-center' id='point-categorical-group-horizontal'></div> + </div> + <div class='row'> + <div class='col-lg-12 text-center' id='bar-categorical-group-horizontal'></div> + </div> + </div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/nh-gop.tsv'>data</a></div> + +<pre><code class='javascript'> +d3.tsv('data/nh-gop.tsv', function(data) { + var polls = []; + var who = ['Bush', 'Rubio', 'Trump', 'Cruz']; + data.forEach(function(p){ + who.forEach(function(d){ + var out = {}; + out.candidate = d; + out.number = p[d] === '--' ? 0 : parseFloat(p[d]); + out.poll = p.Poll; + out.size = Math.random(); + out.when = p.Date; + polls.push(out); + }) + }); + + var trump = polls.filter(function(d){ + return d.poll == 'PPP (D)'; + }) + + MG.data_graphic({ + title: 'Categorical Scale: X, points', + data: trump, + chart_type: 'point', + y_accessor: 'number', + x_accessor: 'candidate', + height:400, + width:300, + target: '#point-categorical', + }) + + MG.data_graphic({ + title: 'Categorical Scale: X, bars', + data: trump, + chart_type: 'bar', + y_accessor: 'number', + x_accessor: 'candidate', + height:400, + width:300, + target: '#bar-categorical', + }) + + MG.data_graphic({ + title: 'Categorical Scale: Y, points', + data: trump, + chart_type: 'point', + x_accessor: 'number', + y_accessor: 'candidate', + height:400, + width:300, + target: '#point-categorical2', + }) + + MG.data_graphic({ + title: 'Categorical Scale: Y, bars', + data: trump, + chart_type: 'bar', + x_accessor: 'number', + y_accessor: 'candidate', + height:400, + width:300, + target: '#bar-categorical2', + }) + + MG.data_graphic({ + title: 'Y points, groups', + data: polls, + chart_type: 'point', + y_axis_type: 'categorical', + x_accessor: 'number', + y_accessor: 'candidate', + ygroup_accessor: 'poll', + size_accessor: 'size', + size_domain: [0,1], + size_range: [3,6], + height:550, + width:300, + left:100, + target: '#point-categorical-group' + }) + + MG.data_graphic({ + title: 'Y bars, groups', + data: polls, + chart_type: 'bar', + y_axis_type: 'categorical', + x_accessor: 'number', + y_accessor: 'candidate', + ygroup_accessor: 'poll', + height:550, + width:300, + left:100, + right:40, + target: '#bar-categorical-group' + }) + + MG.data_graphic({ + title: 'Categorical Scale: Y, groups, horizontal', + data: polls, + chart_type: 'point', + y_accessor: 'number', + x_accessor: 'candidate', + xgroup_accessor: 'poll', + size_accessor: 'size', + size_domain: [0,1], + size_range: [3,6], + height:350, + width:700, + target: '#point-categorical-group-horizontal' + }) + + MG.data_graphic({ + title: 'Categorical Scale: Y, groups, horizontal', + data: polls, + chart_type: 'bar', + y_accessor: 'number', + x_accessor: 'candidate', + xgroup_accessor: 'poll', + size_accessor: 'size', + size_domain: [0,1], + size_range: [3,6], + height:350, + width:700, + target: '#bar-categorical-group-horizontal' + }) +}) +</code></pre> + + </div> +</div> + + +<script> +d3.tsv('data/nh-gop.tsv', function(data) { + var polls = []; + var who = ['Bush', 'Rubio', 'Trump', 'Cruz']; + data.forEach(function(p,j){ + who.forEach(function(d,i){ + var out = {}; + out.candidate = d; + out.number = p[d] === '--' ? 0 : parseFloat(p[d]); + out.poll = p.Poll; + out.size = Math.random(); + out.when = p.Date; + out.reference = Math.floor(Math.random() * 20 + 1); + out.comparison = j+i + 1; + polls.push(out); + }) + }); + + var trump = polls.filter(function(d){ + return d.poll == 'PPP (D)'; + }) + + MG.data_graphic({ + title: 'Categorical Scale: X, points', + data: trump, + chart_type: 'point', + y_accessor: 'number', + x_accessor: 'candidate', + height:300, + width:300, + target: '#point-categorical', + }) + + MG.data_graphic({ + title: 'Categorical Scale: X, bars', + data: trump, + chart_type: 'bar', + y_accessor: 'number', + x_accessor: 'candidate', + height:300, + width:300, + target: '#bar-categorical', + }) + + MG.data_graphic({ + title: 'Categorical Scale: Y, points', + data: trump, + chart_type: 'point', + x_accessor: 'number', + y_accessor: 'candidate', + height:300, + width:300, + target: '#point-categorical2', + }) + + MG.data_graphic({ + title: 'Categorical Scale: Y, bars', + data: trump, + chart_type: 'bar', + x_accessor: 'number', + y_accessor: 'candidate', + height:300, + width:300, + target: '#bar-categorical2', + }) + + MG.data_graphic({ + title: 'Y points, groups', + data: polls, + chart_type: 'point', + y_axis_type: 'categorical', + x_accessor: 'number', + y_accessor: 'candidate', + ygroup_accessor: 'poll', + size_accessor: 'size', + size_domain: [0,1], + size_range: [3,6], + height:550, + width:300, + left:100, + target: '#point-categorical-group' + }) + + MG.data_graphic({ + title: 'Y bars, groups', + data: polls, + chart_type: 'bar', + y_axis_type: 'categorical', + x_accessor: 'number', + y_accessor: 'candidate', + ygroup_accessor: 'poll', + height:550, + width:300, + left:100, + target: '#bar-categorical-group' + }) + + MG.data_graphic({ + title: 'Categorical Scale: Y, groups, horizontal', + data: polls, + chart_type: 'point', + y_accessor: 'number', + x_accessor: 'candidate', + xgroup_accessor: 'poll', + size_accessor: 'size', + size_domain: [0,1], + size_range: [3,6], + height:300, + width:650, + target: '#point-categorical-group-horizontal' + }) + + MG.data_graphic({ + title: 'Categorical Scale: Y, groups, horizontal', + data: polls, + chart_type: 'bar', + y_accessor: 'number', + x_accessor: 'candidate', + xgroup_accessor: 'poll', + size_accessor: 'size', + size_domain: [0,1], + size_range: [3,6], + height:300, + width:650, + target: '#bar-categorical-group-horizontal' + }) +}) +</script> + + + + + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='col-lg-6 text-center' id='histogram1'></div> + <div class='col-lg-6 text-center' id='histogram2'></div> + <div class='col-lg-6 text-center' id='histogram3'></div> + <div class='col-lg-6 text-center' id='histogram4'></div> + <div class='col-lg-12 text-center' id='time-hist'></div> + <div class='col-lg-12 text-center' id='ufos'></div> + </div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/ufo_dates.csv'>data</a></div> + +<pre><code class='javascript'>var values = d3.range(10000).map(d3.randomBates(10)); + +MG.data_graphic({ + title: "Histogram 1", + description: "Raw data values being fed in. Here, we specify the number of bins to be 50 and have bar margins set to 0. The histogram graphic type includes the ability to <a href='http://en.wikipedia.org/wiki/Freedman%E2%80%93Diaconis_rule'>bin data</a>.", + data: values, + chart_type: 'histogram', + width: 295, + height: 180, + right: 10, + bins: 50, + bar_margin: 0, + target: '#histogram1', + y_extended_ticks: true, + mouseover: function(d, i) { + var pf = d3.format(',.2f'); + d3.select('#histogram1 svg .mg-active-datapoint') + .text('Value: ' + pf(d.x) + ' Count: ' + d.y); + } +}); + +d3.csv('data/ufo_dates.csv', function(ufos){ + var data = ufos.map(function(d){ + return parseInt(d.value) / 30; + }); + data.sort(); + MG.data_graphic({ + title: "Difference in UFO Sighting and Reporting Dates (in months)", + description: "Semi-real data about the reported differences between the supposed sighting of a UFO and the date it was reported.", + data: data, + chart_type: 'histogram', + width: 600, + height: 300, + right: 40, + bar_margin: 0, + bins: 150, + target: '#ufos', + y_extended_ticks: true, + mouseover: function(d, i) { + var pf = d3.format(',.2f'); + d3.select('#ufos svg .mg-active-datapoint') + .text(pf(d.x) + ' months Volume: ' + pf(d.y)); + } + }); +}); + +var second = d3.range(10000).map(function(d) { return Math.random() * 10; }); +second = d3.histogram()(second) + .map(function(d) { + return {'count': d.y, 'value': d.x}; +}); + +MG.data_graphic({ + title: "Histogram 2", + description: "Already binned data being fed in.", + data: second, + binned: true, + chart_type: 'histogram', + width: 295, + height: 180, + right: 10, + target: '#histogram2', + y_extended_ticks: true, + x_accessor: 'value', + y_accessor: 'count', + mouseover: function(d, i) { + var pf = d3.format(',.2f'); + d3.select('#histogram2 svg .mg-active-datapoint') + .text('Value: ' + pf(d.x) + ' Count: ' + d.y); + } +}); + +var third = d3.range(10000).map(d3.randomBates(10)); +third = third.map(function(d,i){ return {val1: d, val2: i}; }); + +MG.data_graphic({ + title: "Histogram 3", + description: "Unbinned, but in same format as other line chart data.", + data: third, + chart_type: 'histogram', + width: 295, + height: 180, + right: 10, + target: '#histogram3', + linked: true, + y_extended_ticks: true, + x_accessor: 'val1', + mouseover: function(d, i) { + var pf = d3.format(',.2f'); + d3.select('#histogram3 svg .mg-active-datapoint') + .text('Value: ' + pf(d.x) + ' Count: ' + d.y); + } +}); + +// check for negative values, for sanity. +var fourth = d3.range(10000).map(d3.randomBates(10)); +fourth = fourth.map(function(d,i){ return d - 0.5; }); + +MG.data_graphic({ + title: "Histogram 4", + description: "Sanity-checking negative data.", + data: fourth, + chart_type: 'histogram', + width: 295, + height: 180, + right: 10, + target: '#histogram4', + y_extended_ticks: true, + x_accessor: 'val1', + mouseover: function(d, i) { + var pf = d3.format(',.2f'); + d3.select('#histogram4 svg .mg-active-datapoint') + .text('Value: ' + pf(d.x) + ' Count: ' + d.y); + } +}); + +var hist1 = fake_data(25, 60).map(function(d){ + d.value = Math.round(d.value); + return d; +}); + +MG.data_graphic({ + title: "Histograms can be time series as well", + data: hist1, + target: '#time-hist', + chart_type: 'histogram', + width: 600, + height: 200, + binned: true, +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='table1'></div> + <div class='col-lg-5'> + +<pre><code class='javascript'>var table_data = [ + { 'year': 1852, 'value1': 10.2, 'value2': 1030004.43423,'share': 0.12, 'total': 34003400, 'temp': 43, 'geo': 'United Kingdom', 'description': "Having a way of describing a row can be useful." }, + { 'year': 1901, 'value1': 10.1, 'value2': 54003.223, 'share': 0.11, 'total': 4302100, 'temp': 55, 'geo': 'United States', 'description': "More made-up numbers." }, + { 'year': 1732, 'value1': 4.3, 'value2': 1004.91422, 'share': 0.14, 'total': 4300240, 'temp': 42, 'geo': 'France', 'description': "We didn't specify a title for this column." }, + { 'year': 1945, 'value1': 2.9, 'value2': 2430.121, 'share': 0.23, 'total': 24000000, 'temp': 54, 'geo': 'Brazil', 'description': "Brazil, Brazil." }, + { 'year': 1910, 'value1': 1.0, 'value2': 5432.3, 'share': 0.19, 'total': 130000, 'temp': 52, 'geo': 'India', 'description': "Last description in the whole thing." } +]; + +var table1 = MG.data_table({ + title: "A Data Table", + description: "A table is often the most appropriate way to present data. We aim to make the creation of data tables very simple. We are working on implementing sparklines, bullet charts, and other niceties.", + data: table_data, + show_tooltips: true + }) + .target('#table1') + .title({ + accessor: 'geo', + secondary_accessor:'year', + label: 'Country', + description: "These are arbitrary countries with arbitrary years underneath." + }) + .number({ accessor: 'value1', label: 'Size', value_formatter: function(d){ return d + ' yrds'; }}) + .number({ accessor: 'value2', label: 'Score', round: 2, font_weight: 'bold' }) + .number({ accessor: 'temp', label: 'Temp.', format: 'temperature', width: 100, color: 'gray' }) + .number({ + accessor: 'total', + label: 'Volume', + format: 'count', currency: '$', + width: 100, + font_weight: function(d){ return d < 5000000 ? 'bold' : 'normal'; }, + color: function(d){ return d < 5000000 ? '#f70101' : 'auto'; } + }) + .number({ accessor: 'share', label: 'Share', format: 'percentage', width: 100 }) + .text({ accessor: 'description', width: 240, font_style: 'italic' }) + .display();</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='buttons'></div> + <div class='col-lg-5'> + +<pre><code class='javascript'>var bdata = [ + {a:'apples', b:'quartz'}, + {a:'bananas', b:'pyrite'}, + {a:'durian', b:'obsidian'} +]; + +var resolution_features = ['weekly', 'monthly']; + +var buttons = MG.button_layout('#buttons') + .data(bdata) + .manual_button('Time Scale', resolution_features, function(){ console.log('switched time scales'); }) + .button('a', 'Fruit') + .button('b', 'Rock') + .callback(function(){ + console.log('made it'); + return false; + }) + .display();</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class="tooltip"></div> + <style> + .tooltip { + display: none; + min-height: 32px; + min-width: 100px; + padding: 12px; + margin-bottom: 8px; + background-color: #333; + color: white; + opacity: 0.7; + text-align: left; + } + </style> + <div class='col-lg-12 text-center' id='tooltip-line-chart'></div> + <div class='col-lg-12 text-center' id='tooltip-point-chart'></div> + </div> + <div class='col-lg-5'> + +<pre><code class='html'><div class="tooltip"></div> +<style> +.tooltip { + display: none; + min-height: 32px; + min-width: 100px; + padding: 12px; + margin-bottom: 8px; + background-color: #333; + color: white; + opacity: 0.7; + text-align: left; +} +</style> +</code></pre> + +<pre><code class='javascript'>const tooltipEl = d3.select('.tooltip').node(); +const tooltip = new Popper(document.documentElement, tooltipEl, { placement: 'top' }); +tooltipEl.addEventListener('mouseover', () => { + tooltipEl.style.display = 'block'; +}) +tooltipEl.addEventListener('mouseout', () => { + tooltipEl.style.display = 'none'; +}) + +d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Tooltip on line chart", + description: "Using popper.js and the mouseover callback, you can easily create a tooltip when the user hovers over a particular datapoint.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#tooltip-line-chart', + x_accessor: 'date', + y_accessor: 'value', + show_rollover_text: false, + mouseover: (d, i) => { + tooltipEl.style.display = 'block'; + tooltipEl.innerText = `date: ${d3.timeFormat('%b %e, %Y')(d.date)}\nvalue: ${d.value}`; + tooltip.reference = d3.select(`#tooltip-line-chart .mg-line-rollover-circle`).node(); + tooltip.update(); + }, + mouseout: () => { + tooltipEl.style.display = 'none'; + } + }); +}); + +d3.json('data/points1.json', function(data) { + MG.data_graphic({ + title: "Tooltip on point chart", + description: "This technique also works for point charts.", + data: data, + chart_type: 'point', + width: 600, + height: 350, + right: 10, + target: '#tooltip-point-chart', + x_accessor: 'x', + y_accessor: 'y', + show_rollover_text: false, + mouseover: (d, i) => { + tooltipEl.style.display = 'block'; + tooltipEl.innerText = `X: ${d.data.x}\nY: ${d.data.y}`; + tooltip.reference = d3.select(`#tooltip-point-chart .mg-points .path-${i}`).node(); + tooltip.update(); + }, + mouseout: (d, i) => { + tooltipEl.style.display = 'none'; + } + }); +});</code></pre> + + </div> + </div> + + +<script> +MG._hooks = {}; +d3.json('data/points1.json', function(data) { + MG.data_graphic({ + title: "Simple Scatterplot", + description: "This is an example of a simple scatterplot, in which we have enabled rug plots on the y-axis by setting the <i>y_rug</i> option to true.", + data: data, + chart_type: 'point', + width: 295, + height: 225, + right: 10, + target: '#scatter-simple', + x_accessor: 'x', + y_accessor: 'y', + y_rug: true + }); + + MG.data_graphic({ + title: "Automatic Category Coloring", + description: "By setting <i>color_type</i> to 'category' you can color the points according to another discrete value.", + data: data, + chart_type: 'point', + width: 295, + height: 225, + right: 10, + target: '#categorical1', + x_accessor: 'x', + y_accessor: 'y', + color_accessor: 'v', + color_type: 'category', + y_rug: true + }); + + MG.data_graphic({ + title: "Custom Category Color Mapping", + description: "You can specify the color domain and the corresponding color range to get custom mapping of categories to colors.", + data: data, + chart_type: 'point', + width: 295, + height: 225, + right: 10, + target: '#categorical2', + x_accessor: 'x', + y_accessor: 'y', + color_accessor: 'v', + color_domain: ['cat_0', 'cat_1', 'other'], + color_range: ['blue', 'gray', 'black'], + color_type: 'category', + x_rug: true + }); + + MG.data_graphic({ + title: "Simple Line of Best Fit", + description: "For any scatterplot, set <i>least_squares</i> to true to add.", + data: data, + least_squares: true, + chart_type: 'point', + width: 295, + height: 225, + right: 10, + target: '#scatter-line-best-fit', + x_accessor: 'x', + y_accessor: 'y' + }); + + MG.data_graphic({ + title: "Points Highlighting", + description: "You can set <i>highlight</i> to filter the points you want to highlight.", + data: data, + chart_type: 'point', + width: 295, + height: 225, + right: 10, + target: '#highlight', + x_accessor: 'x', + y_accessor: 'y', + y_rug: true, + highlight: (d, i) => d.z > 2 + }); +}); + +d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Another Least Squares Example", + description: "Least squares effortlessly works with dates or times on axes.", + data: data, + chart_type: 'point', + width: 295, + height: 225, + left: 60, + right: 10, + least_squares: true, + target: '#sls-time-series', + x_accessor: 'date', + y_accessor: 'value' + }); +}); + +var color_range = (theme === 'light') ? null : ['white','yellow']; + +d3.json('data/points1.json', function(data) { + MG.data_graphic({ + title: "Scatterplot with Size and Color", + description: "Scatterplots have <i>x_accessor</i>, <i>y_accessor</i>, <i>size_accessor</i>, and <i>color_accessor</i>. For the last two you can also provide domain and range functions, to make it easy to change the color ranges. Colors default to red and blue, but can be overridden by passing an array of colors to <i>color_range</i>, as we've done in this example for the dark theme.", + data: data, + chart_type: 'point', + width: 295, + height: 225, + right: 10, + target: '#scatter-size-and-color', + x_accessor: 'x', + y_accessor: 'y', + color_accessor: 'z', + color_range: color_range, + size_accessor: 'w', + x_rug: true, + y_rug: true + }); +}); + +var values = d3.range(10000).map(d3.randomBates(10)); + +MG.data_graphic({ + title: "Histogram 1", + description: "Raw data values being fed in. Here, we specify the number of bins to be 50 and have bar margins set to 0. The histogram graphic type includes the ability to <a href='http://en.wikipedia.org/wiki/Freedman%E2%80%93Diaconis_rule'>bin data</a>.", + data: values, + chart_type: 'histogram', + width: 295, + height: 180, + bins: 50, + bar_margin: 0, + target: '#histogram1', + y_extended_ticks: true, + mouseover: function(d, i) { + var pf = d3.format(',.2f'); + d3.select('#histogram1 svg .mg-active-datapoint') + .text('Value: ' + pf(d.x) + ' Count: ' + d.y); + } +}); + +d3.csv('data/ufo_dates.csv', function(ufos){ + var data = ufos.map(function(d){ + return parseInt(d.value) / 30; + }); + data.sort(); + MG.data_graphic({ + title: "Difference in UFO Sighting and Reporting Dates (in months)", + description: "Semi-real data about the reported differences between the supposed sighting of a UFO and the date it was reported.", + data: data, + chart_type: 'histogram', + width: 600, + height: 300, + right: 40, + bar_margin: 0, + bins: 150, + target: '#ufos', + y_extended_ticks: true, + mouseover: function(d, i) { + var pf = d3.format(',.2f'); + d3.select('#ufos svg .mg-active-datapoint') + .text(pf(d.x) + ' months Volume: ' + d.y); + } + }); +}); + +var second = d3.range(10000).map(function(d) { return Math.random() * 10; }); +second = d3.histogram()(second) + .map(function(d) { + return {'value': d.x0, 'count': d.length}; +}); + +MG.data_graphic({ + title: "Histogram 2", + description: "Already binned data being fed in.", + data: second, + binned: true, + chart_type: 'histogram', + width: 295, + height: 180, + target: '#histogram2', + y_extended_ticks: true, + x_accessor: 'value', + y_accessor: 'count', + mouseover: function(d, i) { + var pf = d3.format(',.2f'); + d3.select('#histogram2 svg .mg-active-datapoint') + .text('Value: ' + pf(d.x) + ' Count: ' + d.y); + } +}); + +var third = d3.range(10000).map(d3.randomBates(10)); +third = third.map(function(d,i){ return {val1: d, val2: i}; }); + +MG.data_graphic({ + title: "Histogram 3", + description: "Unbinned, but in same format as other line chart data.", + data: third, + chart_type: 'histogram', + width: 295, + height: 180, + target: '#histogram3', + linked: true, + y_extended_ticks: true, + x_accessor: 'val1', + mouseover: function(d, i) { + var pf = d3.format(',.2f'); + d3.select('#histogram3 svg .mg-active-datapoint') + .text('Value: ' + pf(d.x) + ' Count: ' + d.y); + } +}); + +// check for negative values, for sanity. +var fourth = d3.range(10000).map(d3.randomBates(10)); +fourth = fourth.map(function(d,i){ return d - 0.5; }); + +MG.data_graphic({ + title: "Histogram 4", + description: "Sanity-checking negative data.", + data: fourth, + chart_type: 'histogram', + width: 295, + height: 180, + target: '#histogram4', + y_extended_ticks: true, + x_accessor: 'val1', + mouseover: function(d, i) { + var pf = d3.format(',.2f'); + d3.select('#histogram4 svg .mg-active-datapoint') + .text('Value: ' + pf(d.x) + ' Count: ' + d.y); + } +}); + +var hist1 = fake_data(25, 60).map(function(d){ + d.value = Math.round(d.value); + return d; +}); + +MG.data_graphic({ + title: "Histograms can be time series as well", + data: hist1, + target: '#time-hist', + chart_type: 'histogram', + width: 600, + height: 200, + binned: true, +}); + +var table_data = [ + { 'year': 1852, 'value1': 10.2, 'value2': 1030004.43423,'share': 0.12, 'total': 34003400, 'temp': 43, 'geo': 'United Kingdom', 'description': "Having a way of describing a row can be useful." }, + { 'year': 1901, 'value1': 10.1, 'value2': 54003.223, 'share': 0.11, 'total': 4302100, 'temp': 55, 'geo': 'United States', 'description': "More made-up numbers." }, + { 'year': 1732, 'value1': 4.3, 'value2': 1004.91422, 'share': 0.14, 'total': 4300240, 'temp': 42, 'geo': 'France', 'description': "We didn't specify a title for this column." }, + { 'year': 1945, 'value1': 2.9, 'value2': 2430.121, 'share': 0.23, 'total': 24000000, 'temp': 54, 'geo': 'Brazil', 'description': "Brazil, Brazil." }, + { 'year': 1910, 'value1': 1.0, 'value2': 5432.3, 'share': 0.19, 'total': 130000, 'temp': 52, 'geo': 'India', 'description': "Last description in the whole thing." } +]; + +var table1 = MG.data_table({ + title: "A Data Table", + description: "A table is often the most appropriate way to present data. We aim to make the creation of data tables very simple. We are working on implementing sparklines, bullet charts, and other niceties.", + data: table_data, + show_tooltips: true + }) + .target('#table1') + .title({ + accessor: 'geo', + secondary_accessor:'year', + label: 'Country', + description: "These are arbitrary countries with arbitrary years underneath." + }) + .number({ accessor: 'value1', label: 'Size', value_formatter: function(d){ return d + ' yrds'; }}) + .number({ accessor: 'value2', label: 'Score', round: 2, font_weight: 'bold' }) + .number({ accessor: 'temp', label: 'Temp.', format: 'temperature', width: 100, color: 'gray' }) + .number({ + accessor: 'total', + label: 'Volume', + format: 'count', currency: '$', + width: 100, + font_weight: function(d){ return d < 5000000 ? 'bold' : 'normal'; }, + color: function(d){ return d < 5000000 ? '#f70101' : 'auto'; } + }) + .number({ accessor: 'share', label: 'Share', format: 'percentage', width: 100 }) + .text({ accessor: 'description', width: 240, font_style: 'italic' }) + .display(); + +var bdata = [ + {a:'apples', b:'quartz'}, + {a:'bananas', b:'pyrite'}, + {a:'durian', b:'obsidian'} +]; + +var resolution_features = ['weekly', 'monthly']; + +var buttons = MG.button_layout('#buttons') + .data(bdata) + .manual_button('Time Scale', resolution_features, function(){ console.log('switched time scales'); }) + .button('a', 'Fruit') + .button('b', 'Rock') + .callback(function(){ + console.log('made it'); + return false; + }) + .display(); + +addScatterplotSizeAndColor(theme); + +function addScatterplotSizeAndColor(theme) { + var color_range = (theme === 'light') ? null : ['white','yellow']; + + // call data_graphic again since we need to use a different color_range for the dark theme + d3.json('data/points1.json', function(data) { + MG.data_graphic({ + title: "Scatterplot with Size and Color", + description: "Scatterplots have <i>x_accessor</i>, <i>y_accessor</i>, <i>size_accessor</i>, and <i>color_accessor</i>. For the last two you can also provide domain and range functions, to make it easy to change the color ranges. Colors default to red and blue, but can be overridden by passing an array of colors to <i>color_range</i>, as we've done in this example for the dark theme.", + data: data, + chart_type: 'point', + width: 295, + height: 225, + right: 10, + target: '#scatter-size-and-color', + x_accessor: 'x', + y_accessor: 'y', + color_accessor: 'z', + color_range: color_range, + size_accessor: 'w', + x_rug: true, + y_rug: true + }); + }); +} + +function fake_data(length, seconds) { + var d = new Date(); + var v = 100000; + var data=[]; + + for (var i = 0; i < length; i++){ + v += (Math.random() - 0.5) * 10000; + data.push({date: MG.clone(d), value: v}); + d = new Date(d.getTime() + seconds * 1000); + } + return data; +} + +function fake_days(length) { + var d = new Date(); + var v = 100000; + + var data = []; + for (var i = 0; i<length; i++) { + v += (Math.random() - 0.5) * 10000; + data.push({date: MG.clone(d), value: v}); + d.setDate(d.getDate() + 1); + } + return data; +} + +const tooltipEl = d3.select('.tooltip').node(); +const tooltip = new Popper(document.documentElement, tooltipEl, { placement: 'top' }); +tooltipEl.addEventListener('mouseover', () => { + tooltipEl.style.display = 'block'; +}) +tooltipEl.addEventListener('mouseout', () => { + tooltipEl.style.display = 'none'; +}) + +d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Tooltip on line chart", + description: "Using popper.js and the mouseover callback, you can easily create a tooltip when the user hovers over a particular datapoint.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#tooltip-line-chart', + x_accessor: 'date', + y_accessor: 'value', + show_rollover_text: false, + mouseover: (d, i) => { + tooltipEl.style.display = 'block'; + tooltipEl.innerText = `date: ${d3.timeFormat('%b %e, %Y')(d.date)}\nvalue: ${d.value}`; + tooltip.reference = d3.select(`#tooltip-line-chart .mg-line-rollover-circle`).node(); + tooltip.update(); + }, + mouseout: () => { + tooltipEl.style.display = 'none'; + } + }); +}); + +d3.json('data/points1.json', function(data) { + MG.data_graphic({ + title: "Tooltip on point chart", + description: "This technique also works for point charts.", + data: data, + chart_type: 'point', + width: 600, + height: 350, + right: 10, + target: '#tooltip-point-chart', + x_accessor: 'x', + y_accessor: 'y', + show_rollover_text: false, + mouseover: (d, i) => { + tooltipEl.style.display = 'block'; + tooltipEl.innerText = `X: ${d.data.x}\nY: ${d.data.y}`; + tooltip.reference = d3.select(`#tooltip-point-chart .mg-points .path-${i}`).node(); + tooltip.update(); + }, + mouseout: (d, i) => { + tooltipEl.style.display = 'none'; + } + }); +}); +</script> diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/charts/lines.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/lines.htm new file mode 100644 index 0000000..b758d34 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/lines.htm @@ -0,0 +1,335 @@ + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='fake_users1'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users1.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Line Chart", + description: "This is a simple line chart. You can remove the area portion by adding <i>area: false</i> to the arguments list.", + data: data, + width: 600, + height: 200, + right: 40, + target: document.getElementById('fake_users1'), + x_accessor: 'date', + y_accessor: 'value' + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='confidence_band'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/confidence_band.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/confidence_band.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Confidence Band", + description: "This is an example of a graphic with a confidence band and extended x-axis ticks enabled.", + data: data, + format: 'percentage', + width: 600, + height: 200, + right: 40, + area: false, + target: '#confidence_band', + show_secondary_x_label: false, + show_confidence_band: ['l', 'u'], + x_extended_ticks: true + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='small-range'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/small-range.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/small-range.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Small Range of Integers", + description: "When we have a data object of integers and a small range of values, the auto-generated set of y-axis ticks are filtered so that we don't include fractional values.", + data: data, + interpolate: d3.curveLinear, + width: 600, + height: 200, + right: 40, + target: '#small-range' + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div id='briefing-1'></div> + <div id='briefing-2'></div> + </div> + <div class='col-lg-5'> + <div class='data-column'> + <a href='data/brief-1.json'>data 1</a>, + <a href='data/brief-2.json'>data 2</a> + </div> + +<pre><code class='javascript'>d3.json('data/brief-1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Linked Graphic", + description: "The two graphics in this section are linked together. A rollover in one causes a rollover in the other.", + data: data, + linked: true, + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#briefing-1' + }); +}); + +d3.json('data/brief-2.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Other Linked Graphic", + description: "Roll over and watch as the graphic to the left triggers.", + data: data, + area: false, + linked: true, + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#briefing-2' + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='singleton'></div> + <div class='col-lg-5'> + +<pre><code class='javascript'>MG.data_graphic({ + title: "Singleton", + description: "Handling a solitary data point.", + data: [{'date': new Date('2015-03-05T21:00:00Z'), 'value': 12000}], + width: 600, + height: 200, + right: 40, + target: '#singleton' +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='custom-color'></div> + <div class='col-lg-5'> + +<pre><code class='javascript'>d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Changing Single Line Color", + description: "For single line charts, there are two simple ways to change a line color. The first is to change the css (described on the wiki). The other is to specify a color value using color: <em>string</em> or colors: <em>string</em>.", + data: data, + width: 600, + height: 200, + right: 40, + color: '#8C001A', + target: 'div#custom-color', + x_accessor: 'date', + y_accessor: 'value' + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='area_flipped_users_gain_loss'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users1.json'>data</a></div> + + <pre><code class='javascript'>d3.json('data/fake_users1.json', function(data) { + + var max = d3.max(data, function (d) { + return d.value; + }); + var min = d3.min(data, function(d) { + return d.value; + }); + + var offsetForNegativeValues = ((max - min) / 1.75); + + for (var i = 0; i < data.length; i++) { + data[i].value = (data[i].value - offsetForNegativeValues) / 1000000; + } + + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Flipped area under Y value baseline", + description: "This is a line chart having a flipped area under a Y value baseline", + data: data, + width: 600, + height: 200, + right: 40, + area: true, + flip_area_under_y_value: 0, + target: document.getElementById('area_flipped_users_gain_loss'), + x_accessor: 'date', + y_accessor: 'value' + }); +});</code></pre> + + </div> + </div> + +<script> + + + +d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Changing Single Line Color", + description: "For single line charts, there are two simple ways to change a line color. The first is to change the css (described on the wiki). The other is to specify a color value using color: <em>string</em> or colors: <em>string</em>.", + data: data, + width: 600, + height: 200, + right: 40, + color: '#8C001A', + target: 'div#custom-color', + x_accessor: 'date', + y_accessor: 'value' + }); +}); + +MG._hooks = {}; +d3.json('data/fake_users1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Line Chart", + description: "This is a simple line chart. You can remove the area portion by adding <i>area: false</i> to the arguments list.", + data: data, + width: 600, + height: 200, + right: 40, + target: document.getElementById('fake_users1'), + x_accessor: 'date', + y_accessor: 'value' + }); +}); + +d3.json('data/confidence_band.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Confidence Band", + description: "This is an example of a graphic with a confidence band and extended x-axis ticks enabled.", + data: data, + format: 'percentage', + width: 600, + height: 200, + right: 40, + area: false, + target: '#confidence_band', + show_secondary_x_label: false, + show_confidence_band: ['l', 'u'], + x_extended_ticks: true + }); +}); + +d3.json('data/small-range.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Small Range of Integers", + description: "When we have a data object of integers and a small range of values, the auto-generated set of y-axis ticks are filtered so that we don't include fractional values.", + data: data, + interpolate: d3.curveLinear, + width: 600, + height: 200, + right: 40, + target: '#small-range' + }); +}); + +d3.json('data/brief-1.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Linked Graphic", + description: "The two graphics in this section are linked together. A rollover in one causes a rollover in the other.", + data: data, + linked: true, + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#briefing-1' + }); +}); + +d3.json('data/brief-2.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Other Linked Graphic", + description: "Roll over and watch as the graphic to the left triggers.", + data: data, + area: false, + linked: true, + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#briefing-2' + }); +}); + +MG.data_graphic({ + title: "Singleton", + description: "Handling a solitary data point.", + data: [{'date': new Date('2015-03-05T21:00:00Z'), 'value': 12000}], + width: 600, + height: 200, + right: 40, + target: '#singleton' +}); + +d3.json('data/fake_users1.json', function(data) { + + var max = d3.max(data, function (d) { + return d.value; + }); + var min = d3.min(data, function(d) { + return d.value; + }); + + var offsetForNegativeValues = ((max - min) / 1.75); + + for (var i = 0; i < data.length; i++) { + data[i].value = (data[i].value - offsetForNegativeValues) / 1000000; + } + + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Flipped area under Y value baseline", + description: "This is a line chart having a flipped area under a Y value baseline", + data: data, + width: 600, + height: 200, + right: 40, + area: true, + flip_area_under_y_value: 0, + target: document.getElementById('area_flipped_users_gain_loss'), + x_accessor: 'date', + y_accessor: 'value' + }); +}); +</script> diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/charts/multilines.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/multilines.htm new file mode 100644 index 0000000..d807466 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/multilines.htm @@ -0,0 +1,368 @@ + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='fake_users2'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users2.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/fake_users2.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Multi-Line Chart", + description: "This line chart contains multiple lines.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#fake_users2', + legend: ['Line 1','Line 2','Line 3'], + legend_target: '.legend' + }); +});</code></pre> + + </div> + </div> + <div class='row'> + <div class='col-lg-7 text-center legend'></div> + <div class='col-lg-5'></div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='missing_is_hidden_multi'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/missing-is-hidden-multi.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/missing-is-hidden-multi.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Broken Multi-Lines", + description: 'Setting <i>missing_is_hidden</i> works with multiple lines too.', + data: data, + width: 600, + height: 200, + right: 40, + missing_is_hidden: true, + target: '#missing_is_hidden_multi', + show_secondary_x_label: false + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div id='linked_multi1'></div> + <div id='linked_multi2'></div> + </div> + <div class='col-lg-5'> + <div class='data-column'> + <a href='data/fake_users2.json'>data 1</a>, + <a href='data/fake_users3.json'>data 2</a> + </div> + +<pre><code class='javascript'>d3.json('data/fake_users2.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Multi-Line Linked", + description: "Demoing linked multi-line charts.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#linked_multi1', + linked: true + }); +}) + +d3.json('data/fake_users3.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Multi-Line Linked 2", + description: "Demoing linked multi-line charts.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#linked_multi2', + linked: true + }); +});</code></pre> + + </div> +</div> + +<div class='row trunk-section'> + <div class='col-lg-7 text-center' id='missing-multi'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users3.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/fake_users3.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + // set this to an empty array. + // data[0] and data[2] both still arrays of objects. + data[1] = []; + + MG.data_graphic({ + title: "Missing Time Series Don't Get Drawn", + description: "We set the second array to [] instead of the loaded data. The line color order is preserved.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#missing-multi' + }); +}); +});</code></pre> + + </div> +</div> + +<div class='row trunk-section'> + <div class='col-lg-7 text-center' id='multi-labelled'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users3.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/fake_users3.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + data[1][data[1].length-1].value = 50000000; + data[2][data[2].length-1] = MG.clone(data[1][data[1].length-1]); + data[2][data[2].length-1].value += 10000000; + + MG.data_graphic({ + title: "Labeling Lines", + data: data, + width: 600, + height: 200, + right: 40, + legend: ['US', 'CA', 'DE'], + target: '#multi-labelled' + }); +});</code></pre> + + </div> +</div> + + +<div class='row trunk-section'> + <div class='col-lg-7 text-center' id='custom-colors'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users3.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/fake_users2.json', function(data){ + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + }; + MG.data_graphic({ + title: "Custom Line Coloring", + description: "By passing in an array of hex / rgb / rgba / html strings, you can specify the colors of the lines. NOTE: this feature may have an API change before it is fully in Metrics Graphics. Use at your own risk.", + data: [data[0], data[1], data[2]], + width: 600, + height: 200, + right: 40, + target: '#custom-colors', + legend: ['Team A','Team B','Team C'], + legend_target: 'div#custom-color-key', + colors: ['blue', 'rgb(255,100,43)', '#CCCCFF'], + aggregate_rollover: true + }); +}) +</code></pre> + + </div> +</div> +<div class='row'> + <div class='col-lg-7 text-center legend' id='custom-color-key'></div> + <div class='col-lg-5'></div> +</div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='multiline_area_select'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users2.json'>data</a></div> + + <pre><code class='javascript'>d3.json('data/fake_users3.json', function(data) { + + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + }; + + MG.data_graphic({ + title: "Select lines of your multi-line chart having areas", + description: "By passing in an array of booleans in 'area' property, you can choose which lines has an area or not.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#multiline_area_select', + area: [false, true, false], + y_extended_ticks: true, + x_accessor: 'date' + }); +});</code></pre> + +<script> +MG._hooks = {}; +d3.json('data/fake_users2.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Multi-Line Chart", + description: "This line chart contains multiple lines.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#fake_users2', + legend: ['Line 1','Line 2','Line 3'], + legend_target: '.legend' + }); +}); + +d3.json('data/missing-is-hidden-multi.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Broken Multi-Lines", + description: 'Setting <i>missing_is_hidden</i> works with multiple lines too.', + data: data, + width: 600, + height: 200, + right: 40, + missing_is_hidden: true, + target: '#missing_is_hidden_multi', + show_secondary_x_label: false + }); +}); + +d3.json('data/fake_users2.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Multi-Line Linked", + description: "Demoing linked multi-line charts.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#linked_multi1', + linked: true + }); +}) + +d3.json('data/fake_users3.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Multi-Line Linked 2", + description: "Demoing linked multi-line charts.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#linked_multi2', + linked: true + }); +}); + +d3.json('data/fake_users3.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + // set this to an empty array. + // data[0] and data[2] both still arrays of objects. + data[1] = []; + MG.data_graphic({ + title: "Missing Time Series Don't Get Drawn", + description: "We set the second array to [] instead of the loaded data. The line color order is preserved.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#missing-multi' + }); +}); + +d3.json('data/fake_users3.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + data[1][data[1].length-1].value = 50000000; + data[2][data[2].length-1] = MG.clone(data[1][data[1].length-1]); + data[2][data[2].length-1].value += 10000000; + + + MG.data_graphic({ + title: "Labeling Lines", + data: data, + width: 600, + height: 200, + right: 40, + legend: ['US', 'CA', 'DE'], + target: '#multi-labelled' + }); +}); + +d3.json('data/fake_users2.json', function(data){ + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + }; + MG.data_graphic({ + title: "Custom Line Coloring", + description: "By passing in an array of hex / rgb / rgba / html strings, you can specify the colors of the lines. NOTE: this feature may have an API change before it is fully in Metrics Graphics. Use at your own risk.", + data: [data[0], data[1], data[2]], + width: 600, + height: 200, + right: 40, + target: '#custom-colors', + legend: ['Team A','Team B','Team C'], + legend_target: 'div#custom-color-key', + colors: ['blue', 'rgb(255,100,43)', '#CCCCFF'], + aggregate_rollover: true + }); +}); + +d3.json('data/fake_users3.json', function(data) { + + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + }; + + MG.data_graphic({ + title: "Select lines of your multi-line chart having areas", + description: "By passing in an array of booleans in 'area' property, you can choose which lines has an area or not.", + data: data, + width: 600, + height: 200, + right: 40, + target: '#multiline_area_select', + area: [false, true, false], + y_extended_ticks: true, + x_accessor: 'date' + }); +}); +</script> diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/charts/other.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/other.htm new file mode 100644 index 0000000..e65d641 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/other.htm @@ -0,0 +1,48 @@ + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='aspect1'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users3.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/fake_users3.json', function(data) { + for(var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Preserving the aspect ratio", + description: "You can automatically set the width or height of a data graphic to fit its parent element. When done the graphic will rescale to fit the size of the parent element while preserving its aspect ratio.", + data: data, + full_width: true, + height: 300, + right: 40, + x_extended_ticks: true, + target: '#aspect1', + x_accessor: 'date', + y_accessor: 'value' + }); +});</code></pre> + + </div> + </div> + +<script> +MG._hooks = {}; +d3.json('data/fake_users3.json', function(data) { + for(var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Preserving the aspect ratio", + description: "You can automatically set the width or height of a data graphic to fit its parent element. When done the graphic will rescale to fit the size of the parent element while preserving its aspect ratio.", + data: data, + full_width: true, + height: 300, + right: 40, + x_extended_ticks: true, + target: '#aspect1', + x_accessor: 'date', + y_accessor: 'value' + }); +}); +</script> diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/charts/rollovers.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/rollovers.htm new file mode 100644 index 0000000..53510bb --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/rollovers.htm @@ -0,0 +1,309 @@ + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='col-lg-12 text-center' id='precision1'></div> + <div class='col-lg-12 text-center' id='precision2'></div> + <div class='col-lg-12 text-center' id='custom-rollover'></div> + <div class='col-lg-12 text-center' id='no-rollover-text'></div> + </div> + <div class='col-lg-5'> + <div class='data-column'> + <a href='data/float.json'>data 1</a>, + <a href='data/some_percentage.json'>data 2</a> + </div> + +<pre><code class='javascript'>d3.json('data/float.json', function(data) { + data = MG.convert.date(data, 'date'); + + MG.data_graphic({ + title: "Changing Precision 1", + description: "We can change the precision if the axis data type is a float. We can also change both the formatting, or hide the rollover text altogether. Here we set <i>decimals: 3</i> to get three decimals in the rollover for percentages.", + data: data, + decimals: 3, + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#precision1' + }); + + MG.data_graphic({ + title: "Custom Rollover Text", + description: "Here is an example of changing the rollover text. You could in theory actually update any DOM element with the data from that rollover - a title, for instance.", + data: data, + width: 600, + height: 200, + right: 40, + xax_count: 4, + mouseover: function(d, i) { + // custom format the rollover text, show days + var pf = d3.format('.0s'); + d3.select('#custom-rollover svg .mg-active-datapoint') + .text('Day ' + (i + 1) + ' ' + pf(d.value)); + }, + target: '#custom-rollover' + }); +}); + +d3.json('data/some_percentage.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Changing Precision 2", + description: "Here we set <i>decimals: 0</i> for percentages.", + data: data, + decimals: 0, + format: 'percentage', + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#precision2' + }); + + MG.data_graphic({ + title: "... Or No Rollover Text", + description: "By setting <i>show_rollover_text: false</i>, you can hide the default rollover text from even appearing. This, coupled with the custom callback, gives a lot of interesting options for controlling rollovers.", + data: data, + decimals: 0, + show_rollover_text: false, + format: 'percentage', + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#no-rollover-text' + }); +});</code></pre> + + </div> + </div> + + <div class='row trunk-section'> + <div class='col-lg-7 text-center' id='aggregate'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users2.json'>data</a></div> + +<pre><code class='javascript'>d3.json('data/fake_users2.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + var all_the_data = MG.clone(data[0]); + for (i = 1; i < data.length; i++){ + for (var j = 0; j < data[i].length; j++){ + if (i === 2 && all_the_data[j].date < new Date('2014-02-01')) { + } else { + all_the_data[j]['value' + (i + 1)] = data[i][j].value; + } + } + } + + MG.data_graphic({ + title: "Aggregated Rollover Information", + description: "Aggregated information can be displayed with the <i>aggregate_rollover</i> option in order to clearly highlight the relationship between lines. Also handles non-contiguous data", + data: all_the_data, + width: 600, + height: 200, + right: 40, + target: '#aggregate', + y_extended_ticks: true, + x_accessor: 'date', + y_accessor: ['value', 'value2', 'value3'], + aggregate_rollover: true + }); +});</code></pre> + + </div> + </div> + + +<div class='row trunk-section'> + <div class='col-lg-7 text-center' id='formatting-with-strings'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users2.json'>data</a></div> + +<pre><code class='javascript'> +d3.json('data/float.json', function(data) { + + data = MG.convert.date(data, 'date'); + // check out https://github.com/mbostock/d3/wiki/Formatting for number formatting + //and https://github.com/mbostock/d3/wiki/Time-Formatting for time formatting options. + + MG.data_graphic({ + title: "Rollover Formatting With Strings", + description: "Metrics Graphics comes with two arguments: y_rollover_format and x_rollover_format. These arguments take either strings or functions. Strings are formatted according to D3's number format, or D3's time formatting, if the accessor pulls out Date objects.", + data: data, + width: 600, + height: 200, + right: 40, + y_mouseover: '%d', + x_mouseover: '%e of %b? Well, ', + target: '#y-formatting' + }); +}) +</code></pre> + + </div> +</div> + + +<div class='row trunk-section'> + <div class='col-lg-7 text-center' id='formatting-with-functions'></div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/fake_users2.json'>data</a></div> + +<pre><code class='javascript'> +d3.json('data/float.json', function(data) { + data = MG.convert.date(data, 'date'); + MG.data_graphic({ + title: "Rollover Formatting With Functions", + description: "You can also pass in a function, whose arguments are the data point and the index.", + data: data, + width: 600, + height: 200, + right: 40, + y_rollover_format: function(d){ + return Math.round(d.value) + (Math.random() > .5 ? ' + 1' : ' - 1') + }, + x_rollover_format: function(d){ + var today = new Date() + return Math.round((today - d.date)/ (1000 * 60 * 60 * 24)) + ' days ago, '; + }, + target: '#formatting-with-functions' + }); +}) +</code></pre> + + </div> +</div> + + +<script> +MG._hooks = {}; +d3.json('data/float.json', function(data) { + data = MG.convert.date(data, 'date'); + + MG.data_graphic({ + title: "Updating Rollover Accessor Formatting With Strings", + description: "Metrics Graphics comes with two arguments: y_rollover_format and x_rollover_format. These arguments take either strings or functions. Strings are formatted according to D3's number format, or D3's time formatting, if the accessor pulls out Date objects.", + data: data, + width: 600, + height: 200, + right: 40, + y_mouseover: '%d', + x_mouseover: '%e of %b? Well, ', + target: '#formatting-with-strings' + }); + + MG.data_graphic({ + title: "Updating Rollover Accessor Formatting With Functions", + description: "You can also pass in a function, whose arguments are the data point and the index.", + data: data, + width: 600, + height: 200, + right: 40, + y_mouseover: function(d){ + return Math.round(d.value) + (Math.random() > .5 ? ' + 1' : ' - 1') + }, + x_mouseover: function(d){ + var today = new Date() + return Math.round((today - d.date)/ (1000 * 60 * 60 * 24)) + ' days ago, '; + }, + target: '#formatting-with-functions' + }); + + MG.data_graphic({ + title: "Changing Precision 1", + description: "We can change the precision if the axis data type is a float. We can also change both the formatting, or hide the rollover text altogether. Here we set <i>decimals: 3</i> to get three decimals in the rollover for percentages.", + data: data, + decimals: 3, + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#precision1' + }); + + MG.data_graphic({ + title: "Custom Rollover Text", + description: "Here is an example of changing the rollover text. You could in theory actually update any DOM element with the data from that rollover - a title, for instance.", + data: data, + width: 600, + height: 200, + right: 40, + xax_count: 4, + mouseover: function(d, i) { + // custom format the rollover text, show days + var pf = d3.format('.0s'); + d3.select('#custom-rollover svg .mg-active-datapoint') + .text('Day ' + (i + 1) + ' ' + pf(d.value)); + }, + target: '#custom-rollover' + }); +}); + +d3.json('data/some_percentage.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + MG.data_graphic({ + title: "Changing Precision 2", + description: "Here we set <i>decimals: 0</i> for percentages.", + data: data, + decimals: 0, + format: 'percentage', + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#precision2' + }); + + MG.data_graphic({ + title: "... Or No Rollover Text", + description: "By setting <i>show_rollover_text: false</i>, you can hide the default rollover text from even appearing. This, coupled with the custom callback, gives a lot of interesting options for controlling rollovers.", + data: data, + decimals: 0, + show_rollover_text: false, + format: 'percentage', + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#no-rollover-text' + }); +}); + +d3.json('data/fake_users2.json', function(data) { + for (var i = 0; i < data.length; i++) { + data[i] = MG.convert.date(data[i], 'date'); + } + + var all_the_data = MG.clone(data[0]); + for (i = 1; i < data.length; i++){ + for (var j = 0; j < data[i].length; j++){ + if (i === 2 && all_the_data[j].date < new Date('2014-02-01')) { + } else { + all_the_data[j]['value' + (i + 1)] = data[i][j].value; + } + } + } + + MG.data_graphic({ + title: "Aggregated Rollover Information", + description: "Aggregated information can be displayed with the <i>aggregate_rollover</i> option in order to clearly highlight the relationship between lines. Also handles non-contiguous data", + data: all_the_data, + width: 600, + height: 200, + right: 40, + target: '#aggregate', + y_extended_ticks: true, + x_accessor: 'date', + y_accessor: ['value', 'value2', 'value3'], + aggregate_rollover: true + }); +}); +</script> diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/charts/updating.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/updating.htm new file mode 100644 index 0000000..af3919b --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/charts/updating.htm @@ -0,0 +1,169 @@ + <div class='row trunk-section'> + <div class='col-lg-7 text-center'> + <div class='col-lg-12' id='split_by'></div> + <div class='btn-group btn-group-sm text-center split-by-controls'> + <button type='button' class='btn btn-default active' + data-y_accessor='release'>Release</button> + <button type='button' class='btn btn-default' + data-y_accessor='beta'>Beta</button> + <button type='button' class='btn btn-default' + data-y_accessor='alpha'>Alpha</button> + </div> + <div class='col-lg-12' id='modify_time_period'></div> + <div class='btn-group btn-group-sm text-center + modify-time-period-controls'> + <button type='button' class='btn btn-default active' + data-time_period=''>All time</button> + <button type='button' class='btn btn-default' + data-time_period='61'>Past 2 months</button> + <button type='button' class='btn btn-default' + data-time_period='31'>Past month</button> + </div> + </div> + <div class='col-lg-5'> + <div class='data-column'><a href='data/split_by.json'>data</a></div> + +<pre><code class='javascript'>var globals = {}; + +var split_by_params = { + title: "Downloads by Channel", + description: "We sometimes have the need to split the data and then gracefully update the graphic with the newly selected subset of data.", + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#split_by', + x_accessor: 'date', + y_accessor: 'release' +}; + +var modify_time_period_params = { + title: "Beta Downloads", + description: "We sometimes have the need to view data for just the past n days. Here, the <i>transition_on_update</i> option is set to false.", + width: 600, + height: 200, + right: 40, + show_secondary_x_label: false, + xax_count: 4, + target: '#modify_time_period', + x_accessor: 'date', + y_accessor: 'beta' +} + +d3.json('data/split_by.json', function(data) { + data = MG.convert.date(data, 'date'); + globals.data = data; + + split_by_params.data = data; + MG.data_graphic(split_by_params); + + modify_time_period_params.data = data; + MG.data_graphic(modify_time_period_params); +}); + +$('.split-by-controls button').click(function() { + var new_y_accessor = $(this).data('y_accessor'); + split_by_params.y_accessor = new_y_accessor; + + // change button state + $(this).addClass('active').siblings().removeClass('active'); + + // update data + delete split_by_params.xax_format; + MG.data_graphic(split_by_params); +}); + +$('.modify-time-period-controls button').click(function() { + var past_n_days = $(this).data('time_period'); + var data = modify_time_period(globals.data, past_n_days); + + // change button state + $(this).addClass('active').siblings().removeClass('active'); + + delete modify_time_period_params.xax_format; + modify_time_period_params.data = data; + MG.data_graphic(modify_time_period_params); +}); + +function modify_time_period(data, past_n_days) { + if (past_n_days !== '') { + return MG.clone(data).slice(past_n_days * -1); + } + + return data; +}</code></pre> + + </div> + </div> + +<script> +MG._hooks = {}; +var globals = {}; + +var split_by_params = { + title: "Downloads by Channel", + description: "We sometimes have the need to split the data and then gracefully update the graphic with the newly selected subset of data.", + width: 600, + height: 200, + right: 40, + xax_count: 4, + target: '#split_by', + x_accessor: 'date', + y_accessor: 'release' +}; + +var modify_time_period_params = { + title: "Beta Downloads", + description: "We sometimes have the need to view data for just the past n days. Here, the <i>transition_on_update</i> option is set to false.", + width: 600, + height: 200, + right: 40, + show_secondary_x_label: false, + xax_count: 4, + transition_on_update: false, + target: '#modify_time_period', + x_accessor: 'date', + y_accessor: 'beta' +} + +d3.json('data/split_by.json', function(data) { + data = MG.convert.date(data, 'date'); + globals.data = data; + + split_by_params.data = data; + MG.data_graphic(split_by_params); + + modify_time_period_params.data = data; + MG.data_graphic(modify_time_period_params); +}); + +$('.split-by-controls button').click(function() { + var new_y_accessor = $(this).data('y_accessor'); + split_by_params.y_accessor = new_y_accessor; + + // change button state + $(this).addClass('active').siblings().removeClass('active'); + + // update data + MG.data_graphic(split_by_params); +}); + +$('.modify-time-period-controls button').click(function() { + var past_n_days = $(this).data('time_period'); + var data = modify_time_period(globals.data, past_n_days); + + // change button state + $(this).addClass('active').siblings().removeClass('active'); + + modify_time_period_params.data = data; + MG.data_graphic(modify_time_period_params); +}); + +function modify_time_period(data, past_n_days) { + if (past_n_days !== '') { + return MG.clone(data).slice(past_n_days * -1); + } + + return data; +} +</script>
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/css/highlightjs-default.css b/priv/static/metrics-graphics-3.0-alpha3/examples/css/highlightjs-default.css new file mode 100644 index 0000000..a7db875 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/css/highlightjs-default.css @@ -0,0 +1,153 @@ +/* + +Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org> + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #f0f0f0; + -webkit-text-size-adjust: none; +} + +.hljs, +.hljs-subst, +.hljs-tag .hljs-title, +.nginx .hljs-title { + color: black; +} + +.hljs-string, +.hljs-title, +.hljs-constant, +.hljs-parent, +.hljs-tag .hljs-value, +.hljs-rules .hljs-value, +.hljs-preprocessor, +.hljs-pragma, +.haml .hljs-symbol, +.ruby .hljs-symbol, +.ruby .hljs-symbol .hljs-string, +.hljs-template_tag, +.django .hljs-variable, +.smalltalk .hljs-class, +.hljs-addition, +.hljs-flow, +.hljs-stream, +.bash .hljs-variable, +.apache .hljs-tag, +.apache .hljs-cbracket, +.tex .hljs-command, +.tex .hljs-special, +.erlang_repl .hljs-function_or_atom, +.asciidoc .hljs-header, +.markdown .hljs-header, +.coffeescript .hljs-attribute { + color: #e6337c; +} + +.smartquote, +.hljs-comment, +.hljs-annotation, +.hljs-template_comment, +.diff .hljs-header, +.hljs-chunk, +.asciidoc .hljs-blockquote, +.markdown .hljs-blockquote { + color: #888; +} + +.hljs-number, +.hljs-date, +.hljs-regexp, +.hljs-literal, +.hljs-hexcolor, +.smalltalk .hljs-symbol, +.smalltalk .hljs-char, +.go .hljs-constant, +.hljs-change, +.lasso .hljs-variable, +.makefile .hljs-variable, +.asciidoc .hljs-bullet, +.markdown .hljs-bullet, +.asciidoc .hljs-link_url, +.markdown .hljs-link_url { + color: #366797; +} + +.hljs-label, +.hljs-javadoc, +.ruby .hljs-string, +.hljs-decorator, +.hljs-filter .hljs-argument, +.hljs-localvars, +.hljs-array, +.hljs-attr_selector, +.hljs-important, +.hljs-pseudo, +.hljs-pi, +.haml .hljs-bullet, +.hljs-doctype, +.hljs-deletion, +.hljs-envvar, +.hljs-shebang, +.apache .hljs-sqbracket, +.nginx .hljs-built_in, +.tex .hljs-formula, +.erlang_repl .hljs-reserved, +.hljs-prompt, +.asciidoc .hljs-link_label, +.markdown .hljs-link_label, +.vhdl .hljs-attribute, +.clojure .hljs-attribute, +.asciidoc .hljs-attribute, +.lasso .hljs-attribute, +.coffeescript .hljs-property, +.hljs-phony { + color: #88f; +} + +.hljs-keyword, +.hljs-id, +.hljs-title, +.hljs-built_in, +.css .hljs-tag, +.hljs-javadoctag, +.hljs-phpdoc, +.hljs-dartdoc, +.hljs-yardoctag, +.smalltalk .hljs-class, +.hljs-winutils, +.bash .hljs-variable, +.apache .hljs-tag, +.hljs-type, +.hljs-typename, +.tex .hljs-command, +.asciidoc .hljs-strong, +.markdown .hljs-strong, +.hljs-request, +.hljs-status { + font-weight: bold; +} + +.asciidoc .hljs-emphasis, +.markdown .hljs-emphasis { + font-style: italic; +} + +.nginx .hljs-built_in { + font-weight: normal; +} + +.coffeescript .javascript, +.javascript .xml, +.lasso .markup, +.tex .hljs-formula, +.xml .javascript, +.xml .vbscript, +.xml .css, +.xml .hljs-cdata { + opacity: 0.5; +} diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/css/metricsgraphics-demo-accessible.css b/priv/static/metrics-graphics-3.0-alpha3/examples/css/metricsgraphics-demo-accessible.css new file mode 100644 index 0000000..5ebf9b7 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/css/metricsgraphics-demo-accessible.css @@ -0,0 +1,26 @@ +html { + font-size: 16px; +} + +.mg-x-axis text, +.mg-y-axis text, +.mg-histogram .axis text { + opacity: 0.9; +} + +.mg-x-axis line, +.mg-y-axis line { + opacity: 1; +} + +.mg-markers text, +.mg-year-marker text, +.mg-baselines text { + opacity: 0.9; +} + +.mg-markers line, +.mg-year-marker line, +.mg-baselines line { + opacity: 1; +}
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/css/metricsgraphics-demo-dark.css b/priv/static/metrics-graphics-3.0-alpha3/examples/css/metricsgraphics-demo-dark.css new file mode 100644 index 0000000..a8bfe5f --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/css/metricsgraphics-demo-dark.css @@ -0,0 +1,686 @@ +a, +a:active, +a:visited { + color: #71b4eb; +} + +a:hover { + color: #71b4eb; +} + +a.active { + color: #fff; +} + +.mg-active-datapoint { + fill: #fff; +} + +.mg-area1-color { + fill: #ffd300; +} + +.mg-area2-color { + fill: #18ff00; +} + +.mg-area3-color { + fill: #f57070; +} + +.mg-area4-color { + fill: #28c5f8; +} + +.mg-area5-color { + fill: #f7f7f7; +} + +.mg-barplot .mg-bar-prediction { + fill: #5b5b5b; +} + +.mg-barplot .mg-bar-baseline { + stroke: #5b5b5b; +} + +.mg-baselines line { + stroke: #676767; +} + +.mg-baselines text { + fill: #fff; +} + +body { + background-color: #272727; + color: #cfcfcf; +} + +.divider { + color: #f1f1f1; + opacity: 0.1; +} + +pre { + border-left: 2px solid #3b3b3b; +} + +h1 { + color: #f1f1f1; +} + +h2.chart_title span { + color: #f1f1f1; +} + +.mg-histogram .axis path, +.mg-histogram .axis line { + opacity: 0.5; + stroke: #ccc; +} + +.mg-histogram .mg-bar rect { + fill: #d8b307; +} + +tspan.hist-symbol { + fill: #d8b307; +} + +.mg-barplot rect.mg-bar.default-bar { + fill: #d8b307; +} + +.mg-histogram .mg-bar rect.active, +.mg-barplot rect.mg-bar.default-active { + fill: #b3960f; +} + +.mg-histogram .mg-bar text { + fill: #fff; +} + +.mg-histogram .axis .tick line { + opacity: 0.3; +} + +li { + color: #cfcfcf; +} + +.mg-least-squares-line { + stroke: #f57070; +} + +.mg-line1-color { + stroke: #ffd300; +} + +.mg-hover-line1-color { + fill: #ffd300; +} + +.mg-line2-color { + stroke: #18ff00; +} + +.mg-hover-line2-color { + fill: #18ff00; +} + +.mg-line3-color { + stroke: #f57070; +} + +.mg-hover-line3-color { + fill: #f57070; +} + +.mg-line4-color { + stroke: #28c5f8; +} + +.mg-hover-line4-color { + fill: #28c5f8; +} + +.mg-line5-color { + stroke: #f7f7f7; +} + +.mg-hover-line5-color { + fill: #f7f7f7; +} + +.mg-line1-legend-color { + color: #ffd300; + fill: #ffd300; +} + +.mg-line2-legend-color { + color: #18ff00; + fill: #18ff00; +} + +.mg-line3-legend-color { + color: #f57070; + fill: #f57070; +} + +.mg-line4-legend-color { + color: #28c5f8; + fill: #28c5f8; +} + +.mg-line5-legend-color { + color: #f7f7f7; + fill: #f7f7f7; +} + +#logo g path { + fill: #e8e8e8; +} + +.mg-chart-title { + fill: #cfcfcf; +} + +.mg-category-guides line { + stroke: #676767; +} + +.mg-main-area-solid svg .mg-main-area { + fill: #52491f; +} + +.mg-markers line { + stroke: #676767; +} + +.mg-markers text { + fill: #fff; +} + +circle.mg-points-mono { + fill-opacity: 0.6; + stroke: #a89641; + fill: #a89641; + stroke-opacity: 1; +} + +tspan.mg-points-mono { + fill: #a89641; + stroke: #a89641; +} + +circle.mg-points-mono.selected { + fill: #a89641; + fill-opacity: 1; + stroke-opacity: 1; +} + +.popover { + color: #737373; +} + +text { + fill: #fff; +} + +.mg-x-rug-mono, +.mg-y-rug-mono { + stroke: #a89641; +} + +.mg-x-axis line, +.mg-y-axis line { + stroke: #676767; +} + +.mg-x-axis text, +.mg-y-axis text, +.mg-histogram .axis text { + fill: #fff; +} + +.mg-year-marker text { + fill: #fff; +} + +.mg-year-marker line { + stroke: #676767; +} + +/* + CSS from http://bootswatch.com/slate + Made by Thomas Park. Contact him at thomas@bootswatch.com + Code released under the MIT License. +*/ +.btn:active, .btn.active { + outline: 0; + background-image: none; + -webkit-box-shadow: inset 0 3px 5px rgba(0,0,0,0.125); + box-shadow: inset 0 3px 5px rgba(0,0,0,0.125); +} + +.btn.disabled,.btn[disabled],fieldset[disabled] .btn { + cursor: not-allowed; + pointer-events: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-default { + color: #ffffff; + background-color: #3a3f44; + border-color: #3a3f44; +} + +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + color: #ffffff; + background-color: #272b2e; + border-color: #1e2023; +} + +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + background-image: none; +} + +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #3a3f44; + border-color: #3a3f44; +} + +.btn-default .badge { + color: #3a3f44; + background-color: #ffffff; +} + +.btn-primary { + color: #ffffff; + background-color: #7a8288; + border-color: #7a8288; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #676d73; + border-color: #5d6368; +} + +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; +} + +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #7a8288; + border-color: #7a8288; +} + +.btn-primary .badge { + color: #7a8288; + background-color: #ffffff; +} + +.btn-success { + color: #ffffff; + background-color: #62c462; + border-color: #62c462; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #45b845; + border-color: #40a940; +} + +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + background-image: none; +} + +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #62c462; + border-color: #62c462; +} + +.btn-success .badge { + color: #62c462; + background-color: #ffffff; +} + +.btn-info { + color: #ffffff; + background-color: #5bc0de; + border-color: #5bc0de; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #39b3d7; + border-color: #2aabd2; +} + +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + background-image: none; +} + +.btn-info.disabled,.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #5bc0de; +} + +.btn-info .badge { + color: #5bc0de; + background-color: #ffffff; +} + +.btn-warning { + color: #ffffff; + background-color: #f89406; + border-color: #f89406; +} + +.btn-warning:hover,.btn-warning:focus, +.btn-warning:active,.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #d07c05; + border-color: #bc7005; +} + +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + background-image: none; +} + +.btn-warning.disabled,.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f89406; + border-color: #f89406; +} + +.btn-warning .badge { + color: #f89406; + background-color: #ffffff; +} + +.btn-danger { + color: #ffffff; + background-color: #ee5f5b; + border-color: #ee5f5b; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #ea3b36; + border-color: #e82924; +} + +.btn-danger:active,.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; +} + +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #ee5f5b; + border-color: #ee5f5b; +} + +.btn-danger .badge { + color: #ee5f5b; + background-color: #ffffff; +} + +.btn-link { + color: #ffffff; + font-weight: normal; + cursor: pointer; + border-radius: 0; +} + +.btn-link,.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-link,.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} + +.btn-link:hover,.btn-link:focus { + color: #ffffff; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #7a8288; + text-decoration: none; +} + +.btn,.btn:hover { + border-color: rgba(0,0,0,0.6); + text-shadow: 1px 1px 1px rgba(0,0,0,0.3); +} + +.btn-default { + background-image: -webkit-linear-gradient(#484e55, #3a3f44 60%, #313539); + background-image: linear-gradient(#484e55, #3a3f44 60%, #313539); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff484e55', endColorstr='#ff313539', GradientType=0); + filter: none; +} + +.btn-default:hover { + background-image: -webkit-linear-gradient(#020202, #101112 40%, #191b1d); + background-image: linear-gradient(#020202, #101112 40%, #191b1d); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff020202', endColorstr='#ff191b1d', GradientType=0); + filter: none; +} + +.btn-primary { + background-image: -webkit-linear-gradient(#8a9196, #7a8288 60%, #70787d); + background-image: linear-gradient(#8a9196, #7a8288 60%, #70787d); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8a9196', endColorstr='#ff70787d', GradientType=0); + filter: none; +} + +.btn-primary:hover { + background-image: -webkit-linear-gradient(#404448, #4e5458 40%, #585e62); + background-image: linear-gradient(#404448, #4e5458 40%, #585e62); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff404448', endColorstr='#ff585e62', GradientType=0); + filter: none; +} + +.btn-success { + background-image: -webkit-linear-gradient(#78cc78, #62c462 60%, #53be53); + background-image: linear-gradient(#78cc78, #62c462 60%, #53be53); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff78cc78', endColorstr='#ff53be53', GradientType=0); + filter: none; +} + +.btn-success:hover { + background-image: -webkit-linear-gradient(#2f7d2f, #379337 40%, #3da23d); + background-image: linear-gradient(#2f7d2f, #379337 40%, #3da23d); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2f7d2f', endColorstr='#ff3da23d', GradientType=0); + filter: none; +} + +.btn-info { + background-image: -webkit-linear-gradient(#74cae3, #5bc0de 60%, #4ab9db); + background-image: linear-gradient(#74cae3, #5bc0de 60%, #4ab9db); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff74cae3', endColorstr='#ff4ab9db', GradientType=0); + filter: none; +} + +.btn-info:hover { + background-image: -webkit-linear-gradient(#20829f, #2596b8 40%, #28a4c9); + background-image: linear-gradient(#20829f, #2596b8 40%, #28a4c9); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff20829f', endColorstr='#ff28a4c9', GradientType=0); + filter: none; +} + +.btn-warning { + background-image: -webkit-linear-gradient(#faa123, #f89406 60%, #e48806); + background-image: linear-gradient(#faa123, #f89406 60%, #e48806); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffaa123', endColorstr='#ffe48806', GradientType=0); + filter: none; +} + +.btn-warning:hover { + background-image: -webkit-linear-gradient(#804d03, #9e5f04 40%, #b26a04); + background-image: linear-gradient(#804d03, #9e5f04 40%, #b26a04); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff804d03', endColorstr='#ffb26a04', GradientType=0); + filter: none; +} + +.btn-danger { + background-image: -webkit-linear-gradient(#f17a77, #ee5f5b 60%, #ec4d49); + background-image: linear-gradient(#f17a77, #ee5f5b 60%, #ec4d49); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff17a77', endColorstr='#ffec4d49', GradientType=0); + filter: none; +} + +.btn-danger:hover { + background-image: -webkit-linear-gradient(#bb1813, #d71c16 40%, #e7201a); + background-image: linear-gradient(#bb1813, #d71c16 40%, #e7201a); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbb1813', endColorstr='#ffe7201a', GradientType=0); + filter: none; +} + +.btn-link,.btn-link:hover { + border-color: transparent; +} + diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/css/metricsgraphics-demo.css b/priv/static/metrics-graphics-3.0-alpha3/examples/css/metricsgraphics-demo.css new file mode 100644 index 0000000..497b816 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/css/metricsgraphics-demo.css @@ -0,0 +1,220 @@ +a, +a:active, +a:visited { + color: steelblue; + text-decoration: none; +} + +a:hover { + color: steelblue; +} + +a.active { + background-color: steelblue; + border: 0; + border-radius: 24px; + color: #fff; + padding: 2px 8px 2px 8px; + text-decoration: none; +} + +a.examples-options.selected { + font-weight: bold; +} + +a:hover.examples-options { + text-decoration: none; +} + +body { + background-color: #fff; + color: #000; + font-family: 'Open Sans', sans-serif, Arial; +} + +.btn-group { + display: inline-block; + margin-left: 3px; + margin-right: 3px; +} + +.btn-group span.which-button { + font-weight: 300; + color: darkgray; +} + +.btn-group span.title { + margin-left: 8px; + margin-right: 8px; +} + +.data-column { + font-size: 0.9rem; + margin: 0; + position: absolute; + right: 0; +} + +#description { + margin: auto; + margin-bottom: 50px; + width: 100%; +} + +.divider { + color: #000000; + opacity: 0.2; +} + +.examples-options { + font-size: 0.8rem; +} + +.float-right { + float: right; +} + +.footer { + font-size: 0.9rem; + padding: 40px; + text-align: center; +} + +.head { + color: black; + margin: auto; + margin-bottom: 20px; + width: 100%; +} + +.head h1 { + font-size: 4.1rem; + font-weight: 300; + margin: 45px 0 0 0; +} + +ul { + clear: both; + font-size: 1.2rem; + padding: 10px 0 0 0; +} + +.head ul li, +ul.examples li { + display: inline; + list-style: none; + padding-right: 15px; +} + +ul li.no-padding { + padding: 0; +} + +ul.examples li { + line-height: 30px; +} + +html { + font-size: 12px; +} + +.legend { + font-size: 0.9rem; + padding: 25px 0 15px 0; +} + +#logo { + margin: 60px 0 30px 0; + height: 79px; + width: 400px; +} + +p { + font-family: 'PT Serif', serif; + font-size: 1.3rem; + line-height: 24px; +} + +.pill { + font-family: 'Open Sans', serif; + font-size: 1rem; + text-transform: uppercase; +} + +.pill:hover { + text-decoration: none; +} + +pre { + background-color: transparent; + border: 0; + border-left: 2px solid #ccc; + border-radius: 0; + font-size: 0.9rem; + margin: 40px 0 0 10px; + overflow-x: auto; + padding: 0; + width: 100%; + word-wrap: normal; +} + +pre code { + white-space: inherit; +} + +pre code.hljs { + background-color: transparent; +} + +pre, code, text-area { + font-family: "Menlo", monospace; +} + +svg { + margin-top: 30px; +} + +#table1 .chart_title { + margin-left: 0; +} + +#torso { + margin: 0 auto; + text-align: center; + width: 100%; +} + +#torso div { + display: inline-block; +} + +#trunk { + margin-top: 40px; +} + +#trunk h2 { + font-size: 1.2rem; +} + +#trunk h2.trunk-title { + font-size: 2.2rem; + font-weight: 300; + text-transform: uppercase; +} + + +.trunk-section { + border-top: 1px solid #ccc; + padding-bottom: 25px; + padding-top: 15px; +} + +.wip { + background-color: #f1f1f1; + font-size: 1.3rem; + margin-top: 60px; + padding: 10px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + opacity: 0.8; +}
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/css/railscasts.css b/priv/static/metrics-graphics-3.0-alpha3/examples/css/railscasts.css new file mode 100644 index 0000000..21efe39 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/css/railscasts.css @@ -0,0 +1,187 @@ +/* + +Railscasts-like style (c) Visoft, Inc. (Damien White) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #232323; + color: #e6e1dc; + -webkit-text-size-adjust: none; +} + +.hljs-comment, +.hljs-javadoc, +.hljs-shebang { + color: #bc9458; + font-style: italic; +} + +.hljs-keyword, +.ruby .hljs-function .hljs-keyword, +.hljs-request, +.hljs-status, +.nginx .hljs-title, +.method, +.hljs-list .hljs-title { + color: #c26230; +} + +.hljs-string, +.hljs-number, +.hljs-regexp, +.hljs-tag .hljs-value, +.hljs-cdata, +.hljs-filter .hljs-argument, +.hljs-attr_selector, +.apache .hljs-cbracket, +.hljs-date, +.tex .hljs-command, +.asciidoc .hljs-link_label, +.markdown .hljs-link_label { + color: #a5c261; +} + +.hljs-subst { + color: #519f50; +} + +.hljs-tag, +.hljs-tag .hljs-keyword, +.hljs-tag .hljs-title, +.hljs-doctype, +.hljs-sub .hljs-identifier, +.hljs-pi, +.input_number { + color: #e8bf6a; +} + +.hljs-identifier { + color: #d0d0ff; +} + +.hljs-class .hljs-title, +.hljs-type, +.smalltalk .hljs-class, +.hljs-javadoctag, +.hljs-yardoctag, +.hljs-phpdoc, +.hljs-dartdoc { + text-decoration: none; +} + +.hljs-constant { + color: #da4939; +} + + +.hljs-symbol, +.hljs-built_in, +.ruby .hljs-symbol .hljs-string, +.ruby .hljs-symbol .hljs-identifier, +.asciidoc .hljs-link_url, +.markdown .hljs-link_url, +.hljs-attribute { + color: #6d9cbe; +} + +.asciidoc .hljs-link_url, +.markdown .hljs-link_url { + text-decoration: underline; +} + + + +.hljs-params, +.hljs-variable, +.clojure .hljs-attribute { + color: #d0d0ff; +} + +.css .hljs-tag, +.hljs-rules .hljs-property, +.hljs-pseudo, +.tex .hljs-special { + color: #cda869; +} + +.css .hljs-class { + color: #9b703f; +} + +.hljs-rules .hljs-keyword { + color: #c5af75; +} + +.hljs-rules .hljs-value { + color: #cf6a4c; +} + +.css .hljs-id { + color: #8b98ab; +} + +.hljs-annotation, +.apache .hljs-sqbracket, +.nginx .hljs-built_in { + color: #9b859d; +} + +.hljs-preprocessor, +.hljs-preprocessor *, +.hljs-pragma { + color: #8996a8 !important; +} + +.hljs-hexcolor, +.css .hljs-value .hljs-number { + color: #a5c261; +} + +.hljs-title, +.hljs-decorator, +.css .hljs-function { + color: #ffc66d; +} + +.diff .hljs-header, +.hljs-chunk { + background-color: #2f33ab; + color: #e6e1dc; + display: inline-block; + width: 100%; +} + +.diff .hljs-change { + background-color: #4a410d; + color: #f8f8f8; + display: inline-block; + width: 100%; +} + +.hljs-addition { + background-color: #144212; + color: #e6e1dc; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #600; + color: #e6e1dc; + display: inline-block; + width: 100%; +} + +.coffeescript .javascript, +.javascript .xml, +.tex .hljs-formula, +.xml .javascript, +.xml .vbscript, +.xml .css, +.xml .hljs-cdata { + opacity: 0.7; +} diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/brief-1.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/brief-1.json new file mode 100644 index 0000000..f84a3ff --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/brief-1.json @@ -0,0 +1,402 @@ +[ + { + "date": "2014-02-01", + "value": 15000000 + }, + { + "date": "2014-02-02", + "value": 16487625 + }, + { + "date": "2014-02-03", + "value": 17097434 + }, + { + "date": "2014-02-04", + "value": 17694420 + }, + { + "date": "2014-02-05", + "value": 17014381 + }, + { + "date": "2014-02-06", + "value": 15578984 + }, + { + "date": "2014-02-07", + "value": 14718953 + }, + { + "date": "2014-02-08", + "value": 15020669 + }, + { + "date": "2014-02-09", + "value": 13889722 + }, + { + "date": "2014-02-10", + "value": 13979897 + }, + { + "date": "2014-02-11", + "value": 14595566 + }, + { + "date": "2014-02-12", + "value": 14123256 + }, + { + "date": "2014-02-13", + "value": 14083675 + }, + { + "date": "2014-02-14", + "value": 15068426 + }, + { + "date": "2014-02-15", + "value": 15368056 + }, + { + "date": "2014-02-16", + "value": 15277054 + }, + { + "date": "2014-02-17", + "value": 14376243 + }, + { + "date": "2014-02-18", + "value": 13058892 + }, + { + "date": "2014-02-19", + "value": 12367653 + }, + { + "date": "2014-02-20", + "value": 13184423 + }, + { + "date": "2014-02-21", + "value": 14367203 + }, + { + "date": "2014-02-22", + "value": 14656447 + }, + { + "date": "2014-02-23", + "value": 14724526 + }, + { + "date": "2014-02-24", + "value": 14938129 + }, + { + "date": "2014-02-25", + "value": 14205617 + }, + { + "date": "2014-02-26", + "value": 14596607 + }, + { + "date": "2014-02-27", + "value": 13982597 + }, + { + "date": "2014-02-28", + "value": 15107034 + }, + { + "date": "2014-03-01", + "value": 13646739 + }, + { + "date": "2014-03-02", + "value": 14214763 + }, + { + "date": "2014-03-03", + "value": 14952136 + }, + { + "date": "2014-03-04", + "value": 14643933 + }, + { + "date": "2014-03-05", + "value": 13611435 + }, + { + "date": "2014-03-06", + "value": 12569788 + }, + { + "date": "2014-03-07", + "value": 11344469 + }, + { + "date": "2014-03-08", + "value": 12687132 + }, + { + "date": "2014-03-09", + "value": 11831144 + }, + { + "date": "2014-03-10", + "value": 10480837 + }, + { + "date": "2014-03-11", + "value": 9051161 + }, + { + "date": "2014-03-12", + "value": 9964784 + }, + { + "date": "2014-03-13", + "value": 11035006 + }, + { + "date": "2014-03-14", + "value": 10081289 + }, + { + "date": "2014-03-15", + "value": 9793897 + }, + { + "date": "2014-03-16", + "value": 9177447 + }, + { + "date": "2014-03-17", + "value": 8035348 + }, + { + "date": "2014-03-18", + "value": 6770242 + }, + { + "date": "2014-03-19", + "value": 7272077 + }, + { + "date": "2014-03-20", + "value": 8216348 + }, + { + "date": "2014-03-21", + "value": 8576584 + }, + { + "date": "2014-03-22", + "value": 9421060 + }, + { + "date": "2014-03-23", + "value": 10872288 + }, + { + "date": "2014-03-24", + "value": 9537996 + }, + { + "date": "2014-03-25", + "value": 9560363 + }, + { + "date": "2014-03-26", + "value": 8182813 + }, + { + "date": "2014-03-27", + "value": 9068173 + }, + { + "date": "2014-03-28", + "value": 10390251 + }, + { + "date": "2014-03-29", + "value": 9714081 + }, + { + "date": "2014-03-30", + "value": 9994670 + }, + { + "date": "2014-03-31", + "value": 9317878 + }, + { + "date": "2014-04-01", + "value": 8209077 + }, + { + "date": "2014-04-02", + "value": 9230830 + }, + { + "date": "2014-04-03", + "value": 8978342 + }, + { + "date": "2014-04-04", + "value": 8361854 + }, + { + "date": "2014-04-05", + "value": 9345999 + }, + { + "date": "2014-04-06", + "value": 7965407 + }, + { + "date": "2014-04-07", + "value": 8909276 + }, + { + "date": "2014-04-08", + "value": 8935489 + }, + { + "date": "2014-04-09", + "value": 8634997 + }, + { + "date": "2014-04-10", + "value": 8795592 + }, + { + "date": "2014-04-11", + "value": 7513086 + }, + { + "date": "2014-04-12", + "value": 8408561 + }, + { + "date": "2014-04-13", + "value": 7780649 + }, + { + "date": "2014-04-14", + "value": 7524281 + }, + { + "date": "2014-04-15", + "value": 8498062 + }, + { + "date": "2014-04-16", + "value": 7922453 + }, + { + "date": "2014-04-17", + "value": 9304312 + }, + { + "date": "2014-04-18", + "value": 8199457 + }, + { + "date": "2014-04-19", + "value": 8926136 + }, + { + "date": "2014-04-20", + "value": 7558184 + }, + { + "date": "2014-04-21", + "value": 6417511 + }, + { + "date": "2014-04-22", + "value": 5748831 + }, + { + "date": "2014-04-23", + "value": 6503022 + }, + { + "date": "2014-04-24", + "value": 6429606 + }, + { + "date": "2014-04-25", + "value": 5057410 + }, + { + "date": "2014-04-26", + "value": 5924669 + }, + { + "date": "2014-04-27", + "value": 4728239 + }, + { + "date": "2014-04-28", + "value": 3918540 + }, + { + "date": "2014-04-29", + "value": 2821473 + }, + { + "date": "2014-04-30", + "value": 1995781 + }, + { + "date": "2014-05-01", + "value": 1123626 + }, + { + "date": "2014-05-02", + "value": 516067 + }, + { + "date": "2014-05-03", + "value": 816831 + }, + { + "date": "2014-05-04", + "value": 816831 + }, + { + "date": "2014-05-05", + "value": 816831 + }, + { + "date": "2014-05-06", + "value": 1103818 + }, + { + "date": "2014-05-07", + "value": 958188 + }, + { + "date": "2014-05-08", + "value": 592995 + }, + { + "date": "2014-05-09", + "value": 856066 + }, + { + "date": "2014-05-10", + "value": 1766761 + }, + { + "date": "2014-05-11", + "value": 1330557 + } +]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/brief-2.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/brief-2.json new file mode 100644 index 0000000..6bea2bc --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/brief-2.json @@ -0,0 +1,402 @@ +[ + { + "date": "2014-02-01", + "value": 15000000 + }, + { + "date": "2014-02-02", + "value": 14603908 + }, + { + "date": "2014-02-03", + "value": 16058813 + }, + { + "date": "2014-02-04", + "value": 16751442 + }, + { + "date": "2014-02-05", + "value": 18236063 + }, + { + "date": "2014-02-06", + "value": 19276343 + }, + { + "date": "2014-02-07", + "value": 17869996 + }, + { + "date": "2014-02-08", + "value": 18283550 + }, + { + "date": "2014-02-09", + "value": 18146798 + }, + { + "date": "2014-02-10", + "value": 19114034 + }, + { + "date": "2014-02-11", + "value": 18243994 + }, + { + "date": "2014-02-12", + "value": 18230379 + }, + { + "date": "2014-02-13", + "value": 17569438 + }, + { + "date": "2014-02-14", + "value": 18237141 + }, + { + "date": "2014-02-15", + "value": 18177790 + }, + { + "date": "2014-02-16", + "value": 19278138 + }, + { + "date": "2014-02-17", + "value": 19520468 + }, + { + "date": "2014-02-18", + "value": 18074007 + }, + { + "date": "2014-02-19", + "value": 17387983 + }, + { + "date": "2014-02-20", + "value": 16303246 + }, + { + "date": "2014-02-21", + "value": 16532377 + }, + { + "date": "2014-02-22", + "value": 15992596 + }, + { + "date": "2014-02-23", + "value": 14510598 + }, + { + "date": "2014-02-24", + "value": 15242619 + }, + { + "date": "2014-02-25", + "value": 15099566 + }, + { + "date": "2014-02-26", + "value": 15786161 + }, + { + "date": "2014-02-27", + "value": 17041993 + }, + { + "date": "2014-02-28", + "value": 17792064 + }, + { + "date": "2014-03-01", + "value": 17135803 + }, + { + "date": "2014-03-02", + "value": 17902796 + }, + { + "date": "2014-03-03", + "value": 18082480 + }, + { + "date": "2014-03-04", + "value": 16599484 + }, + { + "date": "2014-03-05", + "value": 15556006 + }, + { + "date": "2014-03-06", + "value": 16095932 + }, + { + "date": "2014-03-07", + "value": 15877165 + }, + { + "date": "2014-03-08", + "value": 16184507 + }, + { + "date": "2014-03-09", + "value": 17578551 + }, + { + "date": "2014-03-10", + "value": 17397416 + }, + { + "date": "2014-03-11", + "value": 18665547 + }, + { + "date": "2014-03-12", + "value": 17599363 + }, + { + "date": "2014-03-13", + "value": 16625060 + }, + { + "date": "2014-03-14", + "value": 15823403 + }, + { + "date": "2014-03-15", + "value": 17166280 + }, + { + "date": "2014-03-16", + "value": 17214931 + }, + { + "date": "2014-03-17", + "value": 18057950 + }, + { + "date": "2014-03-18", + "value": 18467657 + }, + { + "date": "2014-03-19", + "value": 18174411 + }, + { + "date": "2014-03-20", + "value": 17726332 + }, + { + "date": "2014-03-21", + "value": 18624889 + }, + { + "date": "2014-03-22", + "value": 18442598 + }, + { + "date": "2014-03-23", + "value": 17924421 + }, + { + "date": "2014-03-24", + "value": 17943620 + }, + { + "date": "2014-03-25", + "value": 17787115 + }, + { + "date": "2014-03-26", + "value": 16707201 + }, + { + "date": "2014-03-27", + "value": 17013779 + }, + { + "date": "2014-03-28", + "value": 17468840 + }, + { + "date": "2014-03-29", + "value": 16855965 + }, + { + "date": "2014-03-30", + "value": 16198783 + }, + { + "date": "2014-03-31", + "value": 17237410 + }, + { + "date": "2014-04-01", + "value": 16157939 + }, + { + "date": "2014-04-02", + "value": 15279153 + }, + { + "date": "2014-04-03", + "value": 16007123 + }, + { + "date": "2014-04-04", + "value": 15394272 + }, + { + "date": "2014-04-05", + "value": 15753468 + }, + { + "date": "2014-04-06", + "value": 14785435 + }, + { + "date": "2014-04-07", + "value": 14894846 + }, + { + "date": "2014-04-08", + "value": 16113018 + }, + { + "date": "2014-04-09", + "value": 17083579 + }, + { + "date": "2014-04-10", + "value": 17318911 + }, + { + "date": "2014-04-11", + "value": 17301918 + }, + { + "date": "2014-04-12", + "value": 16294357 + }, + { + "date": "2014-04-13", + "value": 17006382 + }, + { + "date": "2014-04-14", + "value": 16305037 + }, + { + "date": "2014-04-15", + "value": 17173934 + }, + { + "date": "2014-04-16", + "value": 16519521 + }, + { + "date": "2014-04-17", + "value": 15741197 + }, + { + "date": "2014-04-18", + "value": 15685527 + }, + { + "date": "2014-04-19", + "value": 16593307 + }, + { + "date": "2014-04-20", + "value": 15108037 + }, + { + "date": "2014-04-21", + "value": 14280930 + }, + { + "date": "2014-04-22", + "value": 15048575 + }, + { + "date": "2014-04-23", + "value": 13925294 + }, + { + "date": "2014-04-24", + "value": 13655381 + }, + { + "date": "2014-04-25", + "value": 14083620 + }, + { + "date": "2014-04-26", + "value": 14390459 + }, + { + "date": "2014-04-27", + "value": 14253026 + }, + { + "date": "2014-04-28", + "value": 15524371 + }, + { + "date": "2014-04-29", + "value": 14810508 + }, + { + "date": "2014-04-30", + "value": 14942971 + }, + { + "date": "2014-05-01", + "value": 13849556 + }, + { + "date": "2014-05-02", + "value": 14811628 + }, + { + "date": "2014-05-03", + "value": 13489786 + }, + { + "date": "2014-05-04", + "value": 13875740 + }, + { + "date": "2014-05-05", + "value": 14581874 + }, + { + "date": "2014-05-06", + "value": 15856637 + }, + { + "date": "2014-05-07", + "value": 15377926 + }, + { + "date": "2014-05-08", + "value": 14523507 + }, + { + "date": "2014-05-09", + "value": 14629800 + }, + { + "date": "2014-05-10", + "value": 14018497 + }, + { + "date": "2014-05-11", + "value": 12917428 + } +]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/confidence_band.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/confidence_band.json new file mode 100644 index 0000000..0fb6dea --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/confidence_band.json @@ -0,0 +1,548 @@ + [ + { + "value": -1.1618426259, + "date": "2012-08-28", + "l": -2.6017329022, + "u": 0.2949717757 + }, + { + "value": -0.5828247293, + "date": "2012-08-29", + "l": -1.3166963635, + "u": 0.1324086347 + }, + { + "value": -0.3790770636, + "date": "2012-08-30", + "l": -0.8712221305, + "u": 0.0956413566 + }, + { + "value": -0.2792926002, + "date": "2012-08-31", + "l": -0.6541832008, + "u": 0.0717120241 + }, + { + "value": -0.2461165469, + "date": "2012-09-01", + "l": -0.5222677907, + "u": 0.0594188803 + }, + { + "value": -0.2017354137, + "date": "2012-09-02", + "l": -0.4434280535, + "u": 0.0419213465 + }, + { + "value": -0.1457476871, + "date": "2012-09-03", + "l": -0.3543957712, + "u": 0.0623761171 + }, + { + "value": -0.002610973, + "date": "2012-09-04", + "l": -0.3339911495, + "u": 0.031286929 + }, + { + "value": -0.0080692734, + "date": "2012-09-05", + "l": -0.2951839941, + "u": 0.0301762553 + }, + { + "value": -0.0296490933, + "date": "2012-09-06", + "l": -0.2964395801, + "u": -0.0029821004 + }, + { + "value": 0.001317397, + "date": "2012-09-07", + "l": -0.2295443759, + "u": 0.037903312 + }, + { + "value": -0.0117649838, + "date": "2012-09-08", + "l": -0.2226376418, + "u": 0.0239720183 + }, + { + "value": 0.0059394263, + "date": "2012-09-09", + "l": -0.2020479849, + "u": 0.0259489347 + }, + { + "value": -0.0115565898, + "date": "2012-09-10", + "l": -0.2042048037, + "u": 0.0077863806 + }, + { + "value": 0.0041183019, + "date": "2012-09-11", + "l": -0.1837263172, + "u": 0.0137898406 + }, + { + "value": 0.0353559544, + "date": "2012-09-12", + "l": -0.136610008, + "u": 0.051403828 + }, + { + "value": 0.0070046011, + "date": "2012-09-13", + "l": -0.1569988647, + "u": 0.0202266411 + }, + { + "value": -0.0004251807, + "date": "2012-09-14", + "l": -0.1410340292, + "u": 0.0273410185 + }, + { + "value": -0.0035461023, + "date": "2012-09-15", + "l": -0.1438653689, + "u": 0.0165445684 + }, + { + "value": 0.007797889, + "date": "2012-09-16", + "l": -0.1291975355, + "u": 0.0232461153 + }, + { + "value": 0.0025402723, + "date": "2012-09-17", + "l": -0.133972479, + "u": 0.0116753921 + }, + { + "value": -0.005317381, + "date": "2012-09-18", + "l": -0.1269266586, + "u": 0.0129723291 + }, + { + "value": -0.0075841521, + "date": "2012-09-19", + "l": -0.1283478383, + "u": 0.0056371616 + }, + { + "value": -0.0391388721, + "date": "2012-09-20", + "l": -0.1571172198, + "u": -0.0311678828 + }, + { + "value": 0.0075430252, + "date": "2012-09-21", + "l": -0.1097354417, + "u": 0.0141132062 + }, + { + "value": 0.1850284663, + "date": "2012-09-22", + "l": 0.0333682152, + "u": 0.2140709422 + }, + { + "value": 0.076629596, + "date": "2012-09-23", + "l": -0.0068472967, + "u": 0.1101280569 + }, + { + "value": -0.0314292271, + "date": "2012-09-24", + "l": -0.1074281762, + "u": 0.0032669363 + }, + { + "value": -0.0232608674, + "date": "2012-09-25", + "l": -0.0905197842, + "u": 0.0164250295 + }, + { + "value": -0.01968615, + "date": "2012-09-26", + "l": -0.084319856, + "u": 0.0193319465 + }, + { + "value": -0.0310196816, + "date": "2012-09-27", + "l": -0.0914356781, + "u": 0.0094436256 + }, + { + "value": -0.0758746967, + "date": "2012-09-28", + "l": -0.1169814745, + "u": -0.019659551 + }, + { + "value": 0.0233974572, + "date": "2012-09-29", + "l": -0.0356839258, + "u": 0.0610712506 + }, + { + "value": 0.011073579, + "date": "2012-09-30", + "l": -0.0558712863, + "u": 0.0346160081 + }, + { + "value": -0.002094822, + "date": "2012-10-01", + "l": -0.0707143388, + "u": 0.0152899266 + }, + { + "value": -0.1083707096, + "date": "2012-10-02", + "l": -0.1718101335, + "u": -0.0886271057 + }, + { + "value": -0.1098258972, + "date": "2012-10-03", + "l": -0.1881274065, + "u": -0.1072157972 + }, + { + "value": -0.0872970297, + "date": "2012-10-04", + "l": -0.1731903321, + "u": -0.064381434 + }, + { + "value": -0.0761992047, + "date": "2012-10-05", + "l": -0.1770373817, + "u": 0.100085727 + }, + { + "value": -0.0416654249, + "date": "2012-10-06", + "l": -0.1502479611, + "u": 0.0751148102 + }, + { + "value": -0.0410128962, + "date": "2012-10-07", + "l": -0.1618694445, + "u": 0.0881453482 + }, + { + "value": -0.0214289042, + "date": "2012-10-08", + "l": -0.1590852977, + "u": 0.0871880288 + }, + { + "value": 0.2430880604, + "date": "2012-10-09", + "l": 0.063624221, + "u": 0.2455101587 + }, + { + "value": 0.3472823479, + "date": "2012-10-10", + "l": 0.1553854927, + "u": 0.3583991097 + }, + { + "value": 0.3360734074, + "date": "2012-10-11", + "l": 0.2055952772, + "u": 0.3812162823 + }, + { + "value": -0.0463648355, + "date": "2012-10-12", + "l": -0.0626466998, + "u": 0.0037342957 + }, + { + "value": -0.0867009379, + "date": "2012-10-13", + "l": -0.0867594055, + "u": -0.0223791074 + }, + { + "value": -0.1288672826, + "date": "2012-10-14", + "l": -0.1161709129, + "u": -0.0534789124 + }, + { + "value": -0.1474426821, + "date": "2012-10-15", + "l": -0.1559759048, + "u": -0.0646995092 + }, + { + "value": -0.1502405066, + "date": "2012-10-16", + "l": -0.1604364638, + "u": -0.0602562376 + }, + { + "value": -0.1203765529, + "date": "2012-10-17", + "l": -0.1569023195, + "u": -0.0578129637 + }, + { + "value": -0.0649122919, + "date": "2012-10-18", + "l": -0.0782987564, + "u": -0.0501999174 + }, + { + "value": -0.015525562, + "date": "2012-10-19", + "l": -0.1103873808, + "u": -0.0132131311 + }, + { + "value": -0.006051357, + "date": "2012-10-20", + "l": -0.1089644497, + "u": 0.0230384197 + }, + { + "value": 0.0003154213, + "date": "2012-10-21", + "l": -0.1073849227, + "u": 0.0017290437 + }, + { + "value": -0.0063018298, + "date": "2012-10-22", + "l": -0.1120298155, + "u": 0.0173284555 + }, + { + "value": -0.004294834, + "date": "2012-10-23", + "l": -0.1076841119, + "u": 0.0547933965 + }, + { + "value": -0.0053400832, + "date": "2012-10-24", + "l": -0.1096991408, + "u": 0.0560555803 + }, + { + "value": 0.0070057212, + "date": "2012-10-25", + "l": -0.0940613813, + "u": 0.0425517607 + }, + { + "value": 0.0082121656, + "date": "2012-10-26", + "l": -0.0906810455, + "u": 0.0396884383 + }, + { + "value": 0.0141422884, + "date": "2012-10-27", + "l": -0.0841305678, + "u": 0.0340050012 + }, + { + "value": 0.0041613553, + "date": "2012-10-28", + "l": -0.0886723749, + "u": 0.039426727 + }, + { + "value": -0.0013614287, + "date": "2012-10-29", + "l": -0.0923481608, + "u": 0.0438725574 + }, + { + "value": -0.0052144933, + "date": "2012-10-30", + "l": -0.0937763043, + "u": 0.0459998555 + }, + { + "value": 0.0078904741, + "date": "2012-10-31", + "l": -0.0807028001, + "u": 0.0334824169 + }, + { + "value": 0.0099598702, + "date": "2012-11-01", + "l": -0.0740001323, + "u": 0.0280264274 + }, + { + "value": 0.0001146029, + "date": "2012-11-02", + "l": -0.0820430294, + "u": 0.0326771125 + }, + { + "value": 0.0047572651, + "date": "2012-11-03", + "l": -0.0754113825, + "u": 0.0294912577 + }, + { + "value": 0.006204557, + "date": "2012-11-04", + "l": -0.0750627059, + "u": 0.029693607 + }, + { + "value": 0.0115231406, + "date": "2012-11-05", + "l": -0.0663484142, + "u": 0.0214084056 + }, + { + "value": -0.0032634994, + "date": "2012-11-06", + "l": -0.0793170451, + "u": 0.0355159827 + }, + { + "value": -0.0108985452, + "date": "2012-11-07", + "l": -0.0846123893, + "u": 0.0409797057 + }, + { + "value": -0.0092766813, + "date": "2012-11-08", + "l": -0.0802668328, + "u": 0.0373886301 + }, + { + "value": 0.0095972086, + "date": "2012-11-09", + "l": -0.0623739694, + "u": 0.0194918693 + }, + { + "value": -0.0111809358, + "date": "2012-11-10", + "l": -0.0819555908, + "u": 0.038335749 + }, + { + "value": -0.0023572296, + "date": "2012-11-11", + "l": -0.0745443377, + "u": 0.0306093592 + }, + { + "value": 0.0084213775, + "date": "2012-11-12", + "l": -0.0657707155, + "u": 0.0227270619 + }, + { + "value": 0.0107446453, + "date": "2012-11-13", + "l": -0.0617995017, + "u": 0.0196547867 + }, + { + "value": 0.009457792, + "date": "2012-11-14", + "l": -0.0597697849, + "u": 0.0191832343 + }, + { + "value": 0.0031194779, + "date": "2012-11-15", + "l": -0.0589126783, + "u": 0.0186409442 + }, + { + "value": -0.0115128213, + "date": "2012-11-16", + "l": -0.0767105447, + "u": 0.0370292452 + }, + { + "value": 0.0058347339, + "date": "2012-11-17", + "l": -0.0592236472, + "u": 0.0198181452 + }, + { + "value": -0.0235630436, + "date": "2012-11-18", + "l": -0.083529944, + "u": 0.046280909 + }, + { + "value": -0.0479795964, + "date": "2012-11-19", + "l": -0.1086422529, + "u": 0.0113044645 + }, + { + "value": -0.0218184359, + "date": "2012-11-21", + "l": -0.0881634878, + "u": 0.0448568265 + }, + { + "value": -0.0071361172, + "date": "2012-11-28", + "l": -0.0807350229, + "u": 0.0453599734 + }, + { + "value": -0.0151966912, + "date": "2012-12-05", + "l": -0.089995793, + "u": 0.0558329569 + }, + { + "value": -0.0097784855, + "date": "2012-12-12", + "l": -0.089466481, + "u": 0.0550191387 + }, + { + "value": -0.0095681495, + "date": "2012-12-19", + "l": -0.090513354, + "u": 0.057073314 + }, + { + "value": -0.0034165915, + "date": "2012-12-27", + "l": -0.0907151292, + "u": 0.0561479112 + }, + { + "value": 0.3297981389, + "date": "2012-12-31", + "l": 0.1537781522, + "u": 0.3499473316 + } + ]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/fake_users1.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/fake_users1.json new file mode 100644 index 0000000..4550c0f --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/fake_users1.json @@ -0,0 +1,483 @@ + + [ + { + "date": "2014-01-01", + "value": 190000000 + }, + { + "date": "2014-01-02", + "value": 190379978 + }, + { + "date": "2014-01-03", + "value": 90493749 + }, + { + "date": "2014-01-04", + "value": 190785250 + }, + { + "date": "2014-01-05", + "value": 197391904 + }, + { + "date": "2014-01-06", + "value": 191576838 + }, + { + "date": "2014-01-07", + "value": 191413854 + }, + { + "date": "2014-01-08", + "value": 142177211 + }, + { + "date": "2014-01-09", + "value": 103762210 + }, + { + "date": "2014-01-10", + "value": 144381072 + }, + { + "date": "2014-01-11", + "value": 154352310 + }, + { + "date": "2014-01-12", + "value": 165531790 + }, + { + "date": "2014-01-13", + "value": 175748881 + }, + { + "date": "2014-01-14", + "value": 187064037 + }, + { + "date": "2014-01-15", + "value": 197520685 + }, + { + "date": "2014-01-16", + "value": 210176418 + }, + { + "date": "2014-01-17", + "value": 196122924 + }, + { + "date": "2014-01-18", + "value": 157337480 + }, + { + "date": "2014-01-19", + "value": 200258882 + }, + { + "date": "2014-01-20", + "value": 186829538 + }, + { + "date": "2014-01-21", + "value": 112456897 + }, + { + "date": "2014-01-22", + "value": 114299711 + }, + { + "date": "2014-01-23", + "value": 122759017 + }, + { + "date": "2014-01-24", + "value": 203596183 + }, + { + "date": "2014-01-25", + "value": 208107346 + }, + { + "date": "2014-01-26", + "value": 196359852 + }, + { + "date": "2014-01-27", + "value": 192570783 + }, + { + "date": "2014-01-28", + "value": 177967768 + }, + { + "date": "2014-01-29", + "value": 190632803 + }, + { + "date": "2014-01-30", + "value": 203725316 + }, + { + "date": "2014-01-31", + "value": 118226177 + }, + { + "date": "2014-02-01", + "value": 210698669 + }, + { + "date": "2014-02-02", + "value": 217640656 + }, + { + "date": "2014-02-03", + "value": 216142362 + }, + { + "date": "2014-02-04", + "value": 201410971 + }, + { + "date": "2014-02-05", + "value": 196704289 + }, + { + "date": "2014-02-06", + "value": 190436945 + }, + { + "date": "2014-02-07", + "value": 178891686 + }, + { + "date": "2014-02-08", + "value": 171613962 + }, + { + "date": "2014-02-09", + "value": 107579773 + }, + { + "date": "2014-02-10", + "value": 158677098 + }, + { + "date": "2014-02-11", + "value": 147129977 + }, + { + "date": "2014-02-12", + "value": 151561876 + }, + { + "date": "2014-02-13", + "value": 151627421 + }, + { + "date": "2014-02-14", + "value": 143543872 + }, + { + "date": "2014-02-15", + "value": 136581057 + }, + { + "date": "2014-02-16", + "value": 135560715 + }, + { + "date": "2014-02-17", + "value": 122625263 + }, + { + "date": "2014-02-18", + "value": 112091484 + }, + { + "date": "2014-02-19", + "value": 98810329 + }, + { + "date": "2014-02-20", + "value": 99882912 + }, + { + "date": "2014-02-21", + "value": 94943095 + }, + { + "date": "2014-02-22", + "value": 104875743 + }, + { + "date": "2014-02-23", + "value": 116383678 + }, + { + "date": "2014-02-24", + "value": 105028841 + }, + { + "date": "2014-02-25", + "value": 123967310 + }, + { + "date": "2014-02-26", + "value": 133167029 + }, + { + "date": "2014-02-27", + "value": 128577263 + }, + { + "date": "2014-02-28", + "value": 115836969 + }, + { + "date": "2014-03-01", + "value": 119264529 + }, + { + "date": "2014-03-02", + "value": 109363374 + }, + { + "date": "2014-03-03", + "value": 113985628 + }, + { + "date": "2014-03-04", + "value": 114650999 + }, + { + "date": "2014-03-05", + "value": 110866108 + }, + { + "date": "2014-03-06", + "value": 96473454 + }, + { + "date": "2014-03-07", + "value": 84075886 + }, + { + "date": "2014-03-08", + "value": 103568384 + }, + { + "date": "2014-03-09", + "value": 101534883 + }, + { + "date": "2014-03-10", + "value": 115825447 + }, + { + "date": "2014-03-11", + "value": 126133916 + }, + { + "date": "2014-03-12", + "value": 116502109 + }, + { + "date": "2014-03-13", + "value": 80169411 + }, + { + "date": "2014-03-14", + "value": 84296886 + }, + { + "date": "2014-03-15", + "value": 86347399 + }, + { + "date": "2014-03-16", + "value": 31483669 + }, + { + "date": "2014-03-17", + "value": 142811333 + }, + { + "date": "2014-03-18", + "value": 89675396 + }, + { + "date": "2014-03-19", + "value": 115514483 + }, + { + "date": "2014-03-20", + "value": 117630630 + }, + { + "date": "2014-03-21", + "value": 122340239 + }, + { + "date": "2014-03-22", + "value": 132349091 + }, + { + "date": "2014-03-23", + "value": 125613305 + }, + { + "date": "2014-03-24", + "value": 135592466 + }, + { + "date": "2014-03-25", + "value": 123408762 + }, + { + "date": "2014-03-26", + "value": 111991454 + }, + { + "date": "2014-03-27", + "value": 116123955 + }, + { + "date": "2014-03-28", + "value": 112817214 + }, + { + "date": "2014-03-29", + "value": 113029590 + }, + { + "date": "2014-03-30", + "value": 108753398 + }, + { + "date": "2014-03-31", + "value": 99383763 + }, + { + "date": "2014-04-01", + "value": 100151737 + }, + { + "date": "2014-04-02", + "value": 94985209 + }, + { + "date": "2014-04-03", + "value": 82913669 + }, + { + "date": "2014-04-04", + "value": 78748268 + }, + { + "date": "2014-04-05", + "value": 63829135 + }, + { + "date": "2014-04-06", + "value": 78694727 + }, + { + "date": "2014-04-07", + "value": 80868994 + }, + { + "date": "2014-04-08", + "value": 93799013 + }, + { + "date": "2014-04-09", + "value": 9042416 + }, + { + "date": "2014-04-10", + "value": 97298692 + }, + { + "date": "2014-04-11", + "value": 53353499 + }, + { + "date": "2014-04-12", + "value": 71248129 + }, + { + "date": "2014-04-13", + "value": 75253744 + }, + { + "date": "2014-04-14", + "value": 68976648 + }, + { + "date": "2014-04-15", + "value": 71002284 + }, + { + "date": "2014-04-16", + "value": 75052401 + }, + { + "date": "2014-04-17", + "value": 83894030 + }, + { + "date": "2014-04-18", + "value": 50236528 + }, + { + "date": "2014-04-19", + "value": 59739114 + }, + { + "date": "2014-04-20", + "value": 56407136 + }, + { + "date": "2014-04-21", + "value": 108323177 + }, + { + "date": "2014-04-22", + "value": 101578914 + }, + { + "date": "2014-04-23", + "value": 115877608 + }, + { + "date": "2014-04-24", + "value": 132088857 + }, + { + "date": "2014-04-25", + "value": 112071353 + }, + { + "date": "2014-04-26", + "value": 81790062 + }, + { + "date": "2014-04-27", + "value": 105003761 + }, + { + "date": "2014-04-28", + "value": 100457727 + }, + { + "date": "2014-04-29", + "value": 118253926 + }, + { + "date": "2014-04-30", + "value": 67956992 + } + ] diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/fake_users2.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/fake_users2.json new file mode 100644 index 0000000..7fc5842 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/fake_users2.json @@ -0,0 +1,1448 @@ +[ + [ + { + "date": "2014-01-01", + "value": 10000000 + }, + { + "date": "2014-01-02", + "value": 10379978 + }, + { + "date": "2014-01-03", + "value": 10493749 + }, + { + "date": "2014-01-04", + "value": 10785250 + }, + { + "date": "2014-01-05", + "value": 13901904 + }, + { + "date": "2014-01-06", + "value": 11576838 + }, + { + "date": "2014-01-07", + "value": 14413854 + }, + { + "date": "2014-01-08", + "value": 15177211 + }, + { + "date": "2014-01-09", + "value": 16622100 + }, + { + "date": "2014-01-10", + "value": 17381072 + }, + { + "date": "2014-01-11", + "value": 18802310 + }, + { + "date": "2014-01-12", + "value": 15531790 + }, + { + "date": "2014-01-13", + "value": 15748881 + }, + { + "date": "2014-01-14", + "value": 18706437 + }, + { + "date": "2014-01-15", + "value": 19752685 + }, + { + "date": "2014-01-16", + "value": 21016418 + }, + { + "date": "2014-01-17", + "value": 25622924 + }, + { + "date": "2014-01-18", + "value": 25337480 + }, + { + "date": "2014-01-19", + "value": 22258882 + }, + { + "date": "2014-01-20", + "value": 23829538 + }, + { + "date": "2014-01-21", + "value": 24245689 + }, + { + "date": "2014-01-22", + "value": 26429711 + }, + { + "date": "2014-01-23", + "value": 26259017 + }, + { + "date": "2014-01-24", + "value": 25396183 + }, + { + "date": "2014-01-25", + "value": 23107346 + }, + { + "date": "2014-01-26", + "value": 28659852 + }, + { + "date": "2014-01-27", + "value": 25270783 + }, + { + "date": "2014-01-28", + "value": 26270783 + }, + { + "date": "2014-01-29", + "value": 27270783 + }, + { + "date": "2014-01-30", + "value": 28270783 + }, + { + "date": "2014-01-31", + "value": 29270783 + }, + { + "date": "2014-02-01", + "value": 30270783 + }, + { + "date": "2014-02-02", + "value": 31270783 + }, + { + "date": "2014-02-03", + "value": 32270783 + }, + { + "date": "2014-02-04", + "value": 33270783 + }, + { + "date": "2014-02-05", + "value": 28270783 + }, + { + "date": "2014-02-06", + "value": 27270783 + }, + { + "date": "2014-02-07", + "value": 35270783 + }, + { + "date": "2014-02-08", + "value": 34270783 + }, + { + "date": "2014-02-09", + "value": 28270783 + }, + { + "date": "2014-02-10", + "value": 35270783 + }, + { + "date": "2014-02-11", + "value": 36270783 + }, + { + "date": "2014-02-12", + "value": 34127078 + }, + { + "date": "2014-02-13", + "value": 33124078 + }, + { + "date": "2014-02-14", + "value": 36227078 + }, + { + "date": "2014-02-15", + "value": 37827078 + }, + { + "date": "2014-02-16", + "value": 36427073 + }, + { + "date": "2014-02-17", + "value": 37570783 + }, + { + "date": "2014-02-18", + "value": 38627073 + }, + { + "date": "2014-02-19", + "value": 37727078 + }, + { + "date": "2014-02-20", + "value": 38827073 + }, + { + "date": "2014-02-21", + "value": 40927078 + }, + { + "date": "2014-02-22", + "value": 41027078 + }, + { + "date": "2014-02-23", + "value": 42127073 + }, + { + "date": "2014-02-24", + "value": 43220783 + }, + { + "date": "2014-02-25", + "value": 44327078 + }, + { + "date": "2014-02-26", + "value": 40427078 + }, + { + "date": "2014-02-27", + "value": 41027078 + }, + { + "date": "2014-02-28", + "value": 45627078 + }, + { + "date": "2014-03-01", + "value": 44727078 + }, + { + "date": "2014-03-02", + "value": 44227078 + }, + { + "date": "2014-03-03", + "value": 45227078 + }, + { + "date": "2014-03-04", + "value": 46027078 + }, + { + "date": "2014-03-05", + "value": 46927078 + }, + { + "date": "2014-03-06", + "value": 47027078 + }, + { + "date": "2014-03-07", + "value": 46227078 + }, + { + "date": "2014-03-08", + "value": 47027078 + }, + { + "date": "2014-03-09", + "value": 48027078 + }, + { + "date": "2014-03-10", + "value": 47027078 + }, + { + "date": "2014-03-11", + "value": 47027078 + }, + { + "date": "2014-03-12", + "value": 48017078 + }, + { + "date": "2014-03-13", + "value": 48077078 + }, + { + "date": "2014-03-14", + "value": 48087078 + }, + { + "date": "2014-03-15", + "value": 48017078 + }, + { + "date": "2014-03-16", + "value": 48047078 + }, + { + "date": "2014-03-17", + "value": 48067078 + }, + { + "date": "2014-03-18", + "value": 48077078 + }, + { + "date": "2014-03-19", + "value": 48027074 + }, + { + "date": "2014-03-20", + "value": 48927079 + }, + { + "date": "2014-03-21", + "value": 48727071 + }, + { + "date": "2014-03-22", + "value": 48127072 + }, + { + "date": "2014-03-23", + "value": 48527072 + }, + { + "date": "2014-03-24", + "value": 48627027 + }, + { + "date": "2014-03-25", + "value": 48027040 + }, + { + "date": "2014-03-26", + "value": 48027043 + }, + { + "date": "2014-03-27", + "value": 48057022 + }, + { + "date": "2014-03-28", + "value": 49057022 + }, + { + "date": "2014-03-29", + "value": 50057022 + }, + { + "date": "2014-03-30", + "value": 51057022 + }, + { + "date": "2014-03-31", + "value": 52057022 + }, + { + "date": "2014-04-01", + "value": 53057022 + }, + { + "date": "2014-04-02", + "value": 54057022 + }, + { + "date": "2014-04-03", + "value": 52057022 + }, + { + "date": "2014-04-04", + "value": 55057022 + }, + { + "date": "2014-04-05", + "value": 58270783 + }, + { + "date": "2014-04-06", + "value": 56270783 + }, + { + "date": "2014-04-07", + "value": 55270783 + }, + { + "date": "2014-04-08", + "value": 58270783 + }, + { + "date": "2014-04-09", + "value": 59270783 + }, + { + "date": "2014-04-10", + "value": 60270783 + }, + { + "date": "2014-04-11", + "value": 61270783 + }, + { + "date": "2014-04-12", + "value": 62270783 + }, + { + "date": "2014-04-13", + "value": 63270783 + }, + { + "date": "2014-04-14", + "value": 64270783 + }, + { + "date": "2014-04-15", + "value": 65270783 + }, + { + "date": "2014-04-16", + "value": 66270783 + }, + { + "date": "2014-04-17", + "value": 67270783 + }, + { + "date": "2014-04-18", + "value": 68270783 + }, + { + "date": "2014-04-19", + "value": 69270783 + }, + { + "date": "2014-04-20", + "value": 70270783 + }, + { + "date": "2014-04-21", + "value": 71270783 + }, + { + "date": "2014-04-22", + "value": 72270783 + }, + { + "date": "2014-04-23", + "value": 73270783 + }, + { + "date": "2014-04-24", + "value": 74270783 + }, + { + "date": "2014-04-25", + "value": 75270783 + }, + { + "date": "2014-04-26", + "value": 76660783 + }, + { + "date": "2014-04-27", + "value": 77270783 + }, + { + "date": "2014-04-28", + "value": 78370783 + }, + { + "date": "2014-04-29", + "value": 79470783 + }, + { + "date": "2014-04-30", + "value": 80170783 + } + ], + [ + { + "date": "2014-01-01", + "value": 150000000 + }, + { + "date": "2014-01-02", + "value": 160379978 + }, + { + "date": "2014-01-03", + "value": 170493749 + }, + { + "date": "2014-01-04", + "value": 160785250 + }, + { + "date": "2014-01-05", + "value": 167391904 + }, + { + "date": "2014-01-06", + "value": 161576838 + }, + { + "date": "2014-01-07", + "value": 161413854 + }, + { + "date": "2014-01-08", + "value": 152177211 + }, + { + "date": "2014-01-09", + "value": 143762210 + }, + { + "date": "2014-01-10", + "value": 144381072 + }, + { + "date": "2014-01-11", + "value": 154352310 + }, + { + "date": "2014-01-12", + "value": 165531790 + }, + { + "date": "2014-01-13", + "value": 175748881 + }, + { + "date": "2014-01-14", + "value": 187064037 + }, + { + "date": "2014-01-15", + "value": 197520685 + }, + { + "date": "2014-01-16", + "value": 210176418 + }, + { + "date": "2014-01-17", + "value": 196122924 + }, + { + "date": "2014-01-18", + "value": 207337480 + }, + { + "date": "2014-01-19", + "value": 200258882 + }, + { + "date": "2014-01-20", + "value": 186829538 + }, + { + "date": "2014-01-21", + "value": 192456897 + }, + { + "date": "2014-01-22", + "value": 204299711 + }, + { + "date": "2014-01-23", + "value": 192759017 + }, + { + "date": "2014-01-24", + "value": 203596183 + }, + { + "date": "2014-01-25", + "value": 208107346 + }, + { + "date": "2014-01-26", + "value": 196359852 + }, + { + "date": "2014-01-27", + "value": 192570783 + }, + { + "date": "2014-01-28", + "value": 177967768 + }, + { + "date": "2014-01-29", + "value": 190632803 + }, + { + "date": "2014-01-30", + "value": 203725316 + }, + { + "date": "2014-01-31", + "value": 218226177 + }, + { + "date": "2014-02-01", + "value": 210698669 + }, + { + "date": "2014-02-02", + "value": 217640656 + }, + { + "date": "2014-02-03", + "value": 216142362 + }, + { + "date": "2014-02-04", + "value": 201410971 + }, + { + "date": "2014-02-05", + "value": 196704289 + }, + { + "date": "2014-02-06", + "value": 190436945 + }, + { + "date": "2014-02-07", + "value": 178891686 + }, + { + "date": "2014-02-08", + "value": 171613962 + }, + { + "date": "2014-02-09", + "value": 157579773 + }, + { + "date": "2014-02-10", + "value": 158677098 + }, + { + "date": "2014-02-11", + "value": 147129977 + }, + { + "date": "2014-02-12", + "value": 151561876 + }, + { + "date": "2014-02-13", + "value": 151627421 + }, + { + "date": "2014-02-14", + "value": 143543872 + }, + { + "date": "2014-02-15", + "value": 136581057 + }, + { + "date": "2014-02-16", + "value": 135560715 + }, + { + "date": "2014-02-17", + "value": 122625263 + }, + { + "date": "2014-02-18", + "value": 112091484 + }, + { + "date": "2014-02-19", + "value": 98810329 + }, + { + "date": "2014-02-20", + "value": 99882912 + }, + { + "date": "2014-02-21", + "value": 94943095 + }, + { + "date": "2014-02-22", + "value": 104875743 + }, + { + "date": "2014-02-23", + "value": 116383678 + }, + { + "date": "2014-02-24", + "value": 125028841 + }, + { + "date": "2014-02-25", + "value": 123967310 + }, + { + "date": "2014-02-26", + "value": 133167029 + }, + { + "date": "2014-02-27", + "value": 128577263 + }, + { + "date": "2014-02-28", + "value": 115836969 + }, + { + "date": "2014-03-01", + "value": 119264529 + }, + { + "date": "2014-03-02", + "value": 109363374 + }, + { + "date": "2014-03-03", + "value": 113985628 + }, + { + "date": "2014-03-04", + "value": 114650999 + }, + { + "date": "2014-03-05", + "value": 110866108 + }, + { + "date": "2014-03-06", + "value": 96473454 + }, + { + "date": "2014-03-07", + "value": 104075886 + }, + { + "date": "2014-03-08", + "value": 103568384 + }, + { + "date": "2014-03-09", + "value": 101534883 + }, + { + "date": "2014-03-10", + "value": 115825447 + }, + { + "date": "2014-03-11", + "value": 126133916 + }, + { + "date": "2014-03-12", + "value": 116502109 + }, + { + "date": "2014-03-13", + "value": 130169411 + }, + { + "date": "2014-03-14", + "value": 124296886 + }, + { + "date": "2014-03-15", + "value": 126347399 + }, + { + "date": "2014-03-16", + "value": 131483669 + }, + { + "date": "2014-03-17", + "value": 142811333 + }, + { + "date": "2014-03-18", + "value": 129675396 + }, + { + "date": "2014-03-19", + "value": 115514483 + }, + { + "date": "2014-03-20", + "value": 117630630 + }, + { + "date": "2014-03-21", + "value": 122340239 + }, + { + "date": "2014-03-22", + "value": 132349091 + }, + { + "date": "2014-03-23", + "value": 125613305 + }, + { + "date": "2014-03-24", + "value": 135592466 + }, + { + "date": "2014-03-25", + "value": 123408762 + }, + { + "date": "2014-03-26", + "value": 111991454 + }, + { + "date": "2014-03-27", + "value": 116123955 + }, + { + "date": "2014-03-28", + "value": 112817214 + }, + { + "date": "2014-03-29", + "value": 113029590 + }, + { + "date": "2014-03-30", + "value": 108753398 + }, + { + "date": "2014-03-31", + "value": 99383763 + }, + { + "date": "2014-04-01", + "value": 100151737 + }, + { + "date": "2014-04-02", + "value": 94985209 + }, + { + "date": "2014-04-03", + "value": 82913669 + }, + { + "date": "2014-04-04", + "value": 78748268 + }, + { + "date": "2014-04-05", + "value": 63829135 + }, + { + "date": "2014-04-06", + "value": 78694727 + }, + { + "date": "2014-04-07", + "value": 80868994 + }, + { + "date": "2014-04-08", + "value": 93799013 + }, + { + "date": "2014-04-09", + "value": 99042416 + }, + { + "date": "2014-04-10", + "value": 97298692 + }, + { + "date": "2014-04-11", + "value": 83353499 + }, + { + "date": "2014-04-12", + "value": 71248129 + }, + { + "date": "2014-04-13", + "value": 75253744 + }, + { + "date": "2014-04-14", + "value": 68976648 + }, + { + "date": "2014-04-15", + "value": 71002284 + }, + { + "date": "2014-04-16", + "value": 75052401 + }, + { + "date": "2014-04-17", + "value": 83894030 + }, + { + "date": "2014-04-18", + "value": 90236528 + }, + { + "date": "2014-04-19", + "value": 99739114 + }, + { + "date": "2014-04-20", + "value": 96407136 + }, + { + "date": "2014-04-21", + "value": 108323177 + }, + { + "date": "2014-04-22", + "value": 101578914 + }, + { + "date": "2014-04-23", + "value": 115877608 + }, + { + "date": "2014-04-24", + "value": 112088857 + }, + { + "date": "2014-04-25", + "value": 112071353 + }, + { + "date": "2014-04-26", + "value": 101790062 + }, + { + "date": "2014-04-27", + "value": 115003761 + }, + { + "date": "2014-04-28", + "value": 120457727 + }, + { + "date": "2014-04-29", + "value": 118253926 + }, + { + "date": "2014-04-30", + "value": 117956992 + } + ], + [ + { + "date": "2014-01-01", + "value": 60000000 + }, + { + "date": "2014-01-02", + "value": 60379978 + }, + { + "date": "2014-01-03", + "value": 40493749 + }, + { + "date": "2014-01-04", + "value": 60785250 + }, + { + "date": "2014-01-05", + "value": 67391904 + }, + { + "date": "2014-01-06", + "value": 61576838 + }, + { + "date": "2014-01-07", + "value": 61413854 + }, + { + "date": "2014-01-08", + "value": 82177211 + }, + { + "date": "2014-01-09", + "value": 103762210 + }, + { + "date": "2014-01-10", + "value": 84381072 + }, + { + "date": "2014-01-11", + "value": 54352310 + }, + { + "date": "2014-01-12", + "value": 65531790 + }, + { + "date": "2014-01-13", + "value": 75748881 + }, + { + "date": "2014-01-14", + "value": 47064037 + }, + { + "date": "2014-01-15", + "value": 67520685 + }, + { + "date": "2014-01-16", + "value": 60176418 + }, + { + "date": "2014-01-17", + "value": 66122924 + }, + { + "date": "2014-01-18", + "value": 57337480 + }, + { + "date": "2014-01-19", + "value": 100258882 + }, + { + "date": "2014-01-20", + "value": 46829538 + }, + { + "date": "2014-01-21", + "value": 92456897 + }, + { + "date": "2014-01-22", + "value": 94299711 + }, + { + "date": "2014-01-23", + "value": 62759017 + }, + { + "date": "2014-01-24", + "value": 103596183 + }, + { + "date": "2014-01-25", + "value": 108107346 + }, + { + "date": "2014-01-26", + "value": 66359852 + }, + { + "date": "2014-01-27", + "value": 62570783 + }, + { + "date": "2014-01-28", + "value": 77967768 + }, + { + "date": "2014-01-29", + "value": 60632803 + }, + { + "date": "2014-01-30", + "value": 103725316 + }, + { + "date": "2014-01-31", + "value": 98226177 + }, + { + "date": "2014-02-01", + "value": 60698669 + }, + { + "date": "2014-02-02", + "value": 67640656 + }, + { + "date": "2014-02-03", + "value": 66142362 + }, + { + "date": "2014-02-04", + "value": 101410971 + }, + { + "date": "2014-02-05", + "value": 66704289 + }, + { + "date": "2014-02-06", + "value": 60436945 + }, + { + "date": "2014-02-07", + "value": 78891686 + }, + { + "date": "2014-02-08", + "value": 71613962 + }, + { + "date": "2014-02-09", + "value": 107579773 + }, + { + "date": "2014-02-10", + "value": 58677098 + }, + { + "date": "2014-02-11", + "value": 87129977 + }, + { + "date": "2014-02-12", + "value": 51561876 + }, + { + "date": "2014-02-13", + "value": 51627421 + }, + { + "date": "2014-02-14", + "value": 83543872 + }, + { + "date": "2014-02-15", + "value": 66581057 + }, + { + "date": "2014-02-16", + "value": 65560715 + }, + { + "date": "2014-02-17", + "value": 62625263 + }, + { + "date": "2014-02-18", + "value": 92091484 + }, + { + "date": "2014-02-19", + "value": 48810329 + }, + { + "date": "2014-02-20", + "value": 49882912 + }, + { + "date": "2014-02-21", + "value": 44943095 + }, + { + "date": "2014-02-22", + "value": 104875743 + }, + { + "date": "2014-02-23", + "value": 96383678 + }, + { + "date": "2014-02-24", + "value": 105028841 + }, + { + "date": "2014-02-25", + "value": 63967310 + }, + { + "date": "2014-02-26", + "value": 63167029 + }, + { + "date": "2014-02-27", + "value": 68577263 + }, + { + "date": "2014-02-28", + "value": 95836969 + }, + { + "date": "2014-03-01", + "value": 99264529 + }, + { + "date": "2014-03-02", + "value": 109363374 + }, + { + "date": "2014-03-03", + "value": 93985628 + }, + { + "date": "2014-03-04", + "value": 94650999 + }, + { + "date": "2014-03-05", + "value": 90866108 + }, + { + "date": "2014-03-06", + "value": 46473454 + }, + { + "date": "2014-03-07", + "value": 84075886 + }, + { + "date": "2014-03-08", + "value": 103568384 + }, + { + "date": "2014-03-09", + "value": 101534883 + }, + { + "date": "2014-03-10", + "value": 95825447 + }, + { + "date": "2014-03-11", + "value": 66133916 + }, + { + "date": "2014-03-12", + "value": 96502109 + }, + { + "date": "2014-03-13", + "value": 80169411 + }, + { + "date": "2014-03-14", + "value": 84296886 + }, + { + "date": "2014-03-15", + "value": 86347399 + }, + { + "date": "2014-03-16", + "value": 31483669 + }, + { + "date": "2014-03-17", + "value": 82811333 + }, + { + "date": "2014-03-18", + "value": 89675396 + }, + { + "date": "2014-03-19", + "value": 95514483 + }, + { + "date": "2014-03-20", + "value": 97630630 + }, + { + "date": "2014-03-21", + "value": 62340239 + }, + { + "date": "2014-03-22", + "value": 62349091 + }, + { + "date": "2014-03-23", + "value": 65613305 + }, + { + "date": "2014-03-24", + "value": 65592466 + }, + { + "date": "2014-03-25", + "value": 63408762 + }, + { + "date": "2014-03-26", + "value": 91991454 + }, + { + "date": "2014-03-27", + "value": 96123955 + }, + { + "date": "2014-03-28", + "value": 92817214 + }, + { + "date": "2014-03-29", + "value": 93029590 + }, + { + "date": "2014-03-30", + "value": 108753398 + }, + { + "date": "2014-03-31", + "value": 49383763 + }, + { + "date": "2014-04-01", + "value": 100151737 + }, + { + "date": "2014-04-02", + "value": 44985209 + }, + { + "date": "2014-04-03", + "value": 52913669 + }, + { + "date": "2014-04-04", + "value": 48748268 + }, + { + "date": "2014-04-05", + "value": 23829135 + }, + { + "date": "2014-04-06", + "value": 58694727 + }, + { + "date": "2014-04-07", + "value": 50868994 + }, + { + "date": "2014-04-08", + "value": 43799013 + }, + { + "date": "2014-04-09", + "value": 4042416 + }, + { + "date": "2014-04-10", + "value": 47298692 + }, + { + "date": "2014-04-11", + "value": 53353499 + }, + { + "date": "2014-04-12", + "value": 71248129 + }, + { + "date": "2014-04-13", + "value": 75253744 + }, + { + "date": "2014-04-14", + "value": 68976648 + }, + { + "date": "2014-04-15", + "value": 71002284 + }, + { + "date": "2014-04-16", + "value": 75052401 + }, + { + "date": "2014-04-17", + "value": 83894030 + }, + { + "date": "2014-04-18", + "value": 50236528 + }, + { + "date": "2014-04-19", + "value": 59739114 + }, + { + "date": "2014-04-20", + "value": 56407136 + }, + { + "date": "2014-04-21", + "value": 108323177 + }, + { + "date": "2014-04-22", + "value": 101578914 + }, + { + "date": "2014-04-23", + "value": 95877608 + }, + { + "date": "2014-04-24", + "value": 62088857 + }, + { + "date": "2014-04-25", + "value": 92071353 + }, + { + "date": "2014-04-26", + "value": 81790062 + }, + { + "date": "2014-04-27", + "value": 105003761 + }, + { + "date": "2014-04-28", + "value": 100457727 + }, + { + "date": "2014-04-29", + "value": 98253926 + }, + { + "date": "2014-04-30", + "value": 67956992 + } + ] +]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/fake_users3.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/fake_users3.json new file mode 100644 index 0000000..d0b8f16 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/fake_users3.json @@ -0,0 +1,1448 @@ +[ + [ + { + "date": "2014-01-01", + "value": 150000000 + }, + { + "date": "2014-01-02", + "value": 168799730 + }, + { + "date": "2014-01-03", + "value": 179473940 + }, + { + "date": "2014-01-04", + "value": 160525870 + }, + { + "date": "2014-01-05", + "value": 164091937 + }, + { + "date": "2014-01-06", + "value": 168386751 + }, + { + "date": "2014-01-07", + "value": 164583141 + }, + { + "date": "2014-01-08", + "value": 151127712 + }, + { + "date": "2014-01-09", + "value": 140122673 + }, + { + "date": "2014-01-10", + "value": 142701834 + }, + { + "date": "2014-01-11", + "value": 150132534 + }, + { + "date": "2014-01-12", + "value": 160971355 + }, + { + "date": "2014-01-13", + "value": 171888475 + }, + { + "date": "2014-01-14", + "value": 187304607 + }, + { + "date": "2014-01-15", + "value": 195860257 + }, + { + "date": "2014-01-16", + "value": 218146710 + }, + { + "date": "2014-01-17", + "value": 194292216 + }, + { + "date": "2014-01-18", + "value": 200847337 + }, + { + "date": "2014-01-19", + "value": 202888520 + }, + { + "date": "2014-01-20", + "value": 188359286 + }, + { + "date": "2014-01-21", + "value": 197986542 + }, + { + "date": "2014-01-22", + "value": 201179924 + }, + { + "date": "2014-01-23", + "value": 197109572 + }, + { + "date": "2014-01-24", + "value": 203816953 + }, + { + "date": "2014-01-25", + "value": 206437018 + }, + { + "date": "2014-01-26", + "value": 192589536 + }, + { + "date": "2014-01-27", + "value": 193870752 + }, + { + "date": "2014-01-28", + "value": 178677697 + }, + { + "date": "2014-01-29", + "value": 193082360 + }, + { + "date": "2014-01-30", + "value": 206135273 + }, + { + "date": "2014-01-31", + "value": 217716228 + }, + { + "date": "2014-02-01", + "value": 219668960 + }, + { + "date": "2014-02-02", + "value": 216560467 + }, + { + "date": "2014-02-03", + "value": 212632416 + }, + { + "date": "2014-02-04", + "value": 201790141 + }, + { + "date": "2014-02-05", + "value": 199824076 + }, + { + "date": "2014-02-06", + "value": 195496340 + }, + { + "date": "2014-02-07", + "value": 176861988 + }, + { + "date": "2014-02-08", + "value": 172693161 + }, + { + "date": "2014-02-09", + "value": 153779757 + }, + { + "date": "2014-02-10", + "value": 158907768 + }, + { + "date": "2014-02-11", + "value": 147799217 + }, + { + "date": "2014-02-12", + "value": 156781651 + }, + { + "date": "2014-02-13", + "value": 151247261 + }, + { + "date": "2014-02-14", + "value": 142783453 + }, + { + "date": "2014-02-15", + "value": 137501856 + }, + { + "date": "2014-02-16", + "value": 135170655 + }, + { + "date": "2014-02-17", + "value": 123625262 + }, + { + "date": "2014-02-18", + "value": 114841902 + }, + { + "date": "2014-02-19", + "value": 99230188 + }, + { + "date": "2014-02-20", + "value": 92192889 + }, + { + "date": "2014-02-21", + "value": 95903494 + }, + { + "date": "2014-02-22", + "value": 103475784 + }, + { + "date": "2014-02-23", + "value": 118763836 + }, + { + "date": "2014-02-24", + "value": 121488205 + }, + { + "date": "2014-02-25", + "value": 120137693 + }, + { + "date": "2014-02-26", + "value": 139207613 + }, + { + "date": "2014-02-27", + "value": 123627758 + }, + { + "date": "2014-02-28", + "value": 119696385 + }, + { + "date": "2014-03-01", + "value": 119254629 + }, + { + "date": "2014-03-02", + "value": 104733639 + }, + { + "date": "2014-03-03", + "value": 118265893 + }, + { + "date": "2014-03-04", + "value": 119990564 + }, + { + "date": "2014-03-05", + "value": 118016680 + }, + { + "date": "2014-03-06", + "value": 94543746 + }, + { + "date": "2014-03-07", + "value": 106885704 + }, + { + "date": "2014-03-08", + "value": 104838653 + }, + { + "date": "2014-03-09", + "value": 103884351 + }, + { + "date": "2014-03-10", + "value": 117445285 + }, + { + "date": "2014-03-11", + "value": 126193316 + }, + { + "date": "2014-03-12", + "value": 119012056 + }, + { + "date": "2014-03-13", + "value": 131149610 + }, + { + "date": "2014-03-14", + "value": 126886924 + }, + { + "date": "2014-03-15", + "value": 129937436 + }, + { + "date": "2014-03-16", + "value": 139663841 + }, + { + "date": "2014-03-17", + "value": 143331182 + }, + { + "date": "2014-03-18", + "value": 126935769 + }, + { + "date": "2014-03-19", + "value": 113844155 + }, + { + "date": "2014-03-20", + "value": 110360367 + }, + { + "date": "2014-03-21", + "value": 129320432 + }, + { + "date": "2014-03-22", + "value": 131909432 + }, + { + "date": "2014-03-23", + "value": 125033165 + }, + { + "date": "2014-03-24", + "value": 136642955 + }, + { + "date": "2014-03-25", + "value": 122678043 + }, + { + "date": "2014-03-26", + "value": 114541991 + }, + { + "date": "2014-03-27", + "value": 115593216 + }, + { + "date": "2014-03-28", + "value": 114127182 + }, + { + "date": "2014-03-29", + "value": 110959203 + }, + { + "date": "2014-03-30", + "value": 108933578 + }, + { + "date": "2014-03-31", + "value": 93673839 + }, + { + "date": "2014-04-01", + "value": 107371510 + }, + { + "date": "2014-04-02", + "value": 99025894 + }, + { + "date": "2014-04-03", + "value": 89663192 + }, + { + "date": "2014-04-04", + "value": 78628478 + }, + { + "date": "2014-04-05", + "value": 65319283 + }, + { + "date": "2014-04-06", + "value": 77274968 + }, + { + "date": "2014-04-07", + "value": 84998680 + }, + { + "date": "2014-04-08", + "value": 93109973 + }, + { + "date": "2014-04-09", + "value": 96142409 + }, + { + "date": "2014-04-10", + "value": 92968927 + }, + { + "date": "2014-04-11", + "value": 89943533 + }, + { + "date": "2014-04-12", + "value": 79218421 + }, + { + "date": "2014-04-13", + "value": 74473525 + }, + { + "date": "2014-04-14", + "value": 68466798 + }, + { + "date": "2014-04-15", + "value": 74822001 + }, + { + "date": "2014-04-16", + "value": 71042505 + }, + { + "date": "2014-04-17", + "value": 80304983 + }, + { + "date": "2014-04-18", + "value": 98256320 + }, + { + "date": "2014-04-19", + "value": 94119379 + }, + { + "date": "2014-04-20", + "value": 96317046 + }, + { + "date": "2014-04-21", + "value": 107713238 + }, + { + "date": "2014-04-22", + "value": 104198751 + }, + { + "date": "2014-04-23", + "value": 118067785 + }, + { + "date": "2014-04-24", + "value": 117588802 + }, + { + "date": "2014-04-25", + "value": 113531702 + }, + { + "date": "2014-04-26", + "value": 102600971 + }, + { + "date": "2014-04-27", + "value": 111673005 + }, + { + "date": "2014-04-28", + "value": 127277540 + }, + { + "date": "2014-04-29", + "value": 116293528 + }, + { + "date": "2014-04-30", + "value": 112996597 + } + ], + [ + { + "date": "2014-01-01", + "value": 10000000 + }, + { + "date": "2014-01-02", + "value": 18799730 + }, + { + "date": "2014-01-03", + "value": 19473940 + }, + { + "date": "2014-01-04", + "value": 10525870 + }, + { + "date": "2014-01-05", + "value": 14091093 + }, + { + "date": "2014-01-06", + "value": 18386751 + }, + { + "date": "2014-01-07", + "value": 14583144 + }, + { + "date": "2014-01-08", + "value": 11127715 + }, + { + "date": "2014-01-09", + "value": 10012266 + }, + { + "date": "2014-01-10", + "value": 12701837 + }, + { + "date": "2014-01-11", + "value": 10132088 + }, + { + "date": "2014-01-12", + "value": 10971355 + }, + { + "date": "2014-01-13", + "value": 11888475 + }, + { + "date": "2014-01-14", + "value": 17346078 + }, + { + "date": "2014-01-15", + "value": 15862579 + }, + { + "date": "2014-01-16", + "value": 28146101 + }, + { + "date": "2014-01-17", + "value": 24292265 + }, + { + "date": "2014-01-18", + "value": 20847335 + }, + { + "date": "2014-01-19", + "value": 22888522 + }, + { + "date": "2014-01-20", + "value": 28359283 + }, + { + "date": "2014-01-21", + "value": 29865424 + }, + { + "date": "2014-01-22", + "value": 21179246 + }, + { + "date": "2014-01-23", + "value": 27109526 + }, + { + "date": "2014-01-24", + "value": 23816935 + }, + { + "date": "2014-01-25", + "value": 26437013 + }, + { + "date": "2014-01-26", + "value": 22589568 + }, + { + "date": "2014-01-27", + "value": 23870725 + }, + { + "date": "2014-01-28", + "value": 23870726 + }, + { + "date": "2014-01-29", + "value": 23870727 + }, + { + "date": "2014-01-30", + "value": 23870728 + }, + { + "date": "2014-01-31", + "value": 23870729 + }, + { + "date": "2014-02-01", + "value": 33870720 + }, + { + "date": "2014-02-02", + "value": 33870721 + }, + { + "date": "2014-02-03", + "value": 33870722 + }, + { + "date": "2014-02-04", + "value": 33870723 + }, + { + "date": "2014-02-05", + "value": 23870728 + }, + { + "date": "2014-02-06", + "value": 23870727 + }, + { + "date": "2014-02-07", + "value": 33870725 + }, + { + "date": "2014-02-08", + "value": 33870724 + }, + { + "date": "2014-02-09", + "value": 23870728 + }, + { + "date": "2014-02-10", + "value": 33870725 + }, + { + "date": "2014-02-11", + "value": 33870726 + }, + { + "date": "2014-02-12", + "value": 38707214 + }, + { + "date": "2014-02-13", + "value": 38704213 + }, + { + "date": "2014-02-14", + "value": 38707226 + }, + { + "date": "2014-02-15", + "value": 38707287 + }, + { + "date": "2014-02-16", + "value": 33707246 + }, + { + "date": "2014-02-17", + "value": 33870757 + }, + { + "date": "2014-02-18", + "value": 33707268 + }, + { + "date": "2014-02-19", + "value": 38707277 + }, + { + "date": "2014-02-20", + "value": 33707288 + }, + { + "date": "2014-02-21", + "value": 48707290 + }, + { + "date": "2014-02-22", + "value": 48707201 + }, + { + "date": "2014-02-23", + "value": 43707212 + }, + { + "date": "2014-02-24", + "value": 43870223 + }, + { + "date": "2014-02-25", + "value": 48707234 + }, + { + "date": "2014-02-26", + "value": 48707240 + }, + { + "date": "2014-02-27", + "value": 48707201 + }, + { + "date": "2014-02-28", + "value": 48707265 + }, + { + "date": "2014-03-01", + "value": 48707274 + }, + { + "date": "2014-03-02", + "value": 48707224 + }, + { + "date": "2014-03-03", + "value": 48707225 + }, + { + "date": "2014-03-04", + "value": 48707206 + }, + { + "date": "2014-03-05", + "value": 48707296 + }, + { + "date": "2014-03-06", + "value": 48707207 + }, + { + "date": "2014-03-07", + "value": 48707226 + }, + { + "date": "2014-03-08", + "value": 48707207 + }, + { + "date": "2014-03-09", + "value": 48707208 + }, + { + "date": "2014-03-10", + "value": 48707207 + }, + { + "date": "2014-03-11", + "value": 48707207 + }, + { + "date": "2014-03-12", + "value": 48707108 + }, + { + "date": "2014-03-13", + "value": 48707708 + }, + { + "date": "2014-03-14", + "value": 48707808 + }, + { + "date": "2014-03-15", + "value": 48707108 + }, + { + "date": "2014-03-16", + "value": 48707408 + }, + { + "date": "2014-03-17", + "value": 48707608 + }, + { + "date": "2014-03-18", + "value": 48707708 + }, + { + "date": "2014-03-19", + "value": 44707208 + }, + { + "date": "2014-03-20", + "value": 49707298 + }, + { + "date": "2014-03-21", + "value": 41707278 + }, + { + "date": "2014-03-22", + "value": 42707218 + }, + { + "date": "2014-03-23", + "value": 42707258 + }, + { + "date": "2014-03-24", + "value": 47207268 + }, + { + "date": "2014-03-25", + "value": 40407208 + }, + { + "date": "2014-03-26", + "value": 43407208 + }, + { + "date": "2014-03-27", + "value": 42207508 + }, + { + "date": "2014-03-28", + "value": 42207509 + }, + { + "date": "2014-03-29", + "value": 52207500 + }, + { + "date": "2014-03-30", + "value": 52207501 + }, + { + "date": "2014-03-31", + "value": 52207502 + }, + { + "date": "2014-04-01", + "value": 52207503 + }, + { + "date": "2014-04-02", + "value": 52207504 + }, + { + "date": "2014-04-03", + "value": 52207502 + }, + { + "date": "2014-04-04", + "value": 52207505 + }, + { + "date": "2014-04-05", + "value": 53870728 + }, + { + "date": "2014-04-06", + "value": 53870726 + }, + { + "date": "2014-04-07", + "value": 53870725 + }, + { + "date": "2014-04-08", + "value": 53870728 + }, + { + "date": "2014-04-09", + "value": 53870729 + }, + { + "date": "2014-04-10", + "value": 63870720 + }, + { + "date": "2014-04-11", + "value": 63870721 + }, + { + "date": "2014-04-12", + "value": 63870722 + }, + { + "date": "2014-04-13", + "value": 63870723 + }, + { + "date": "2014-04-14", + "value": 63870724 + }, + { + "date": "2014-04-15", + "value": 63870725 + }, + { + "date": "2014-04-16", + "value": 63870726 + }, + { + "date": "2014-04-17", + "value": 63870727 + }, + { + "date": "2014-04-18", + "value": 63870728 + }, + { + "date": "2014-04-19", + "value": 63870729 + }, + { + "date": "2014-04-20", + "value": 73870720 + }, + { + "date": "2014-04-21", + "value": 73870721 + }, + { + "date": "2014-04-22", + "value": 73870722 + }, + { + "date": "2014-04-23", + "value": 73870723 + }, + { + "date": "2014-04-24", + "value": 73870724 + }, + { + "date": "2014-04-25", + "value": 73870725 + }, + { + "date": "2014-04-26", + "value": 73870666 + }, + { + "date": "2014-04-27", + "value": 73870727 + }, + { + "date": "2014-04-28", + "value": 73870738 + }, + { + "date": "2014-04-29", + "value": 73870749 + }, + { + "date": "2014-04-30", + "value": 83870710 + } + ], + [ + { + "date": "2014-01-01", + "value": 60000000 + }, + { + "date": "2014-01-02", + "value": 68799730 + }, + { + "date": "2014-01-03", + "value": 49473940 + }, + { + "date": "2014-01-04", + "value": 60525870 + }, + { + "date": "2014-01-05", + "value": 64091937 + }, + { + "date": "2014-01-06", + "value": 68386751 + }, + { + "date": "2014-01-07", + "value": 64583141 + }, + { + "date": "2014-01-08", + "value": 81127712 + }, + { + "date": "2014-01-09", + "value": 100122673 + }, + { + "date": "2014-01-10", + "value": 82701834 + }, + { + "date": "2014-01-11", + "value": 50132534 + }, + { + "date": "2014-01-12", + "value": 60971355 + }, + { + "date": "2014-01-13", + "value": 71888475 + }, + { + "date": "2014-01-14", + "value": 47304607 + }, + { + "date": "2014-01-15", + "value": 65860257 + }, + { + "date": "2014-01-16", + "value": 68146710 + }, + { + "date": "2014-01-17", + "value": 64292216 + }, + { + "date": "2014-01-18", + "value": 50847337 + }, + { + "date": "2014-01-19", + "value": 102888520 + }, + { + "date": "2014-01-20", + "value": 48359286 + }, + { + "date": "2014-01-21", + "value": 97986542 + }, + { + "date": "2014-01-22", + "value": 91179924 + }, + { + "date": "2014-01-23", + "value": 67109572 + }, + { + "date": "2014-01-24", + "value": 103816953 + }, + { + "date": "2014-01-25", + "value": 106437018 + }, + { + "date": "2014-01-26", + "value": 62589536 + }, + { + "date": "2014-01-27", + "value": 63870752 + }, + { + "date": "2014-01-28", + "value": 78677697 + }, + { + "date": "2014-01-29", + "value": 63082360 + }, + { + "date": "2014-01-30", + "value": 106135273 + }, + { + "date": "2014-01-31", + "value": 97716228 + }, + { + "date": "2014-02-01", + "value": 69668960 + }, + { + "date": "2014-02-02", + "value": 66560467 + }, + { + "date": "2014-02-03", + "value": 62632416 + }, + { + "date": "2014-02-04", + "value": 101790141 + }, + { + "date": "2014-02-05", + "value": 69824076 + }, + { + "date": "2014-02-06", + "value": 65496340 + }, + { + "date": "2014-02-07", + "value": 76861988 + }, + { + "date": "2014-02-08", + "value": 72693161 + }, + { + "date": "2014-02-09", + "value": 103779757 + }, + { + "date": "2014-02-10", + "value": 58907768 + }, + { + "date": "2014-02-11", + "value": 87799217 + }, + { + "date": "2014-02-12", + "value": 56781651 + }, + { + "date": "2014-02-13", + "value": 51247261 + }, + { + "date": "2014-02-14", + "value": 82783453 + }, + { + "date": "2014-02-15", + "value": 67501856 + }, + { + "date": "2014-02-16", + "value": 65170655 + }, + { + "date": "2014-02-17", + "value": 63625262 + }, + { + "date": "2014-02-18", + "value": 94841902 + }, + { + "date": "2014-02-19", + "value": 49230188 + }, + { + "date": "2014-02-20", + "value": 42192889 + }, + { + "date": "2014-02-21", + "value": 45903494 + }, + { + "date": "2014-02-22", + "value": 103475784 + }, + { + "date": "2014-02-23", + "value": 98763836 + }, + { + "date": "2014-02-24", + "value": 101488205 + }, + { + "date": "2014-02-25", + "value": 60137693 + }, + { + "date": "2014-02-26", + "value": 69207613 + }, + { + "date": "2014-02-27", + "value": 63627758 + }, + { + "date": "2014-02-28", + "value": 99696385 + }, + { + "date": "2014-03-01", + "value": 99254629 + }, + { + "date": "2014-03-02", + "value": 104733639 + }, + { + "date": "2014-03-03", + "value": 98265893 + }, + { + "date": "2014-03-04", + "value": 99990564 + }, + { + "date": "2014-03-05", + "value": 98016680 + }, + { + "date": "2014-03-06", + "value": 44543746 + }, + { + "date": "2014-03-07", + "value": 86885704 + }, + { + "date": "2014-03-08", + "value": 104838653 + }, + { + "date": "2014-03-09", + "value": 103884351 + }, + { + "date": "2014-03-10", + "value": 97445285 + }, + { + "date": "2014-03-11", + "value": 66193316 + }, + { + "date": "2014-03-12", + "value": 99012056 + }, + { + "date": "2014-03-13", + "value": 81149610 + }, + { + "date": "2014-03-14", + "value": 86886924 + }, + { + "date": "2014-03-15", + "value": 89937436 + }, + { + "date": "2014-03-16", + "value": 39663841 + }, + { + "date": "2014-03-17", + "value": 83331182 + }, + { + "date": "2014-03-18", + "value": 86935769 + }, + { + "date": "2014-03-19", + "value": 93844155 + }, + { + "date": "2014-03-20", + "value": 90360367 + }, + { + "date": "2014-03-21", + "value": 69320432 + }, + { + "date": "2014-03-22", + "value": 61909432 + }, + { + "date": "2014-03-23", + "value": 65033165 + }, + { + "date": "2014-03-24", + "value": 66642955 + }, + { + "date": "2014-03-25", + "value": 62678043 + }, + { + "date": "2014-03-26", + "value": 94541991 + }, + { + "date": "2014-03-27", + "value": 95593216 + }, + { + "date": "2014-03-28", + "value": 94127182 + }, + { + "date": "2014-03-29", + "value": 90959203 + }, + { + "date": "2014-03-30", + "value": 108933578 + }, + { + "date": "2014-03-31", + "value": 43673839 + }, + { + "date": "2014-04-01", + "value": 107371510 + }, + { + "date": "2014-04-02", + "value": 49025894 + }, + { + "date": "2014-04-03", + "value": 59663192 + }, + { + "date": "2014-04-04", + "value": 48628478 + }, + { + "date": "2014-04-05", + "value": 25319283 + }, + { + "date": "2014-04-06", + "value": 57274968 + }, + { + "date": "2014-04-07", + "value": 54998680 + }, + { + "date": "2014-04-08", + "value": 43109973 + }, + { + "date": "2014-04-09", + "value": 6142404 + }, + { + "date": "2014-04-10", + "value": 42968927 + }, + { + "date": "2014-04-11", + "value": 59943533 + }, + { + "date": "2014-04-12", + "value": 79218421 + }, + { + "date": "2014-04-13", + "value": 74473525 + }, + { + "date": "2014-04-14", + "value": 68466798 + }, + { + "date": "2014-04-15", + "value": 74822001 + }, + { + "date": "2014-04-16", + "value": 71042505 + }, + { + "date": "2014-04-17", + "value": 80304983 + }, + { + "date": "2014-04-18", + "value": 58256320 + }, + { + "date": "2014-04-19", + "value": 54119379 + }, + { + "date": "2014-04-20", + "value": 56317046 + }, + { + "date": "2014-04-21", + "value": 107713238 + }, + { + "date": "2014-04-22", + "value": 104198751 + }, + { + "date": "2014-04-23", + "value": 98067785 + }, + { + "date": "2014-04-24", + "value": 67588802 + }, + { + "date": "2014-04-25", + "value": 93531702 + }, + { + "date": "2014-04-26", + "value": 82600971 + }, + { + "date": "2014-04-27", + "value": 101673005 + }, + { + "date": "2014-04-28", + "value": 107277540 + }, + { + "date": "2014-04-29", + "value": 96293528 + }, + { + "date": "2014-04-30", + "value": 62996597 + } + ] +]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/firefox_releases.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/firefox_releases.json new file mode 100644 index 0000000..0c40fbe --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/firefox_releases.json @@ -0,0 +1,168 @@ +{ + "releases": [ + { + "version": "30.0", + "date": "2014-06-01", + "end": "2014-08-01" + }, + { + "version": "29.0", + "date": "2014-04-29", + "end": "2014-06-01" + + }, + { + "version": "28.0", + "date": "2014-03-18", + "end": "2014-04-29" + }, + { + "version": "27.0", + "date": "2014-01-21", + "end": "2014-03-18" + }, + { + "version": "26.0", + "date": "2013-12-10", + "end": "2014-01-21" + }, + { + "version": "25.0", + "date": "2013-10-29", + "end": "2013-12-10" + + }, + { + "version": "24.0", + "date": "2013-09-17", + "end": "2013-10-29" + + }, + { + "version": "23.0", + "date": "2013-08-06", + "end": "2013-09-17" + + }, + { + "version": "22.0", + "date": "2013-06-25" + }, + { + "version": "21.0", + "date": "2013-05-14" + }, + { + "version": "20.0", + "date": "2013-04-02" + }, + { + "version": "19.0", + "date": "2013-02-19" + }, + { + "version": "18.0", + "date": "2013-01-08" + }, + { + "version": "17.0.1", + "date": "2012-11-30" + }, + { + "version": "17.0", + "date": "2012-11-20" + }, + { + "version": "16.0.2", + "date": "2012-10-26" + }, + { + "version": "16.0.1", + "date": "2012-10-11" + }, + { + "version": "16.0", + "date": "2012-10-09" + }, + { + "version": "15.0.1", + "date": "2012-09-06" + }, + { + "version": "15.0", + "date": "2012-08-28" + }, + { + "version": "14.0", + "date": "2012-07-17" + }, + { + "version": "13.0.1", + "date": "2012-06-15" + }, + { + "version": "13.0", + "date": "2012-06-05" + }, + { + "version": "12.0", + "date": "2012-04-24" + }, + { + "version": "11.0", + "date": "2012-03-13" + }, + { + "version": "10.0", + "date": "2012-01-31" + }, + { + "version": "9.0", + "date": "2011-12-20" + }, + { + "version": "8.0", + "date": "2011-11-08" + }, + { + "version": "7.0", + "date": "2011-09-27" + }, + { + "version": "6.0", + "date": "2011-08-16" + }, + { + "version": "5.0", + "date": "2011-06-21" + }, + { + "version": "4.0", + "date": "2011-03-22" + }, + { + "version": "3.6", + "date": "2010-01-21" + }, + { + "version": "3.5", + "date": "2009-06-30" + }, + { + "version": "3.0", + "date": "2008-06-17" + }, + { + "version": "2.0", + "date": "2006-10-24" + }, + { + "version": "1.5", + "date": "2005-11-29" + }, + { + "version": "1.0", + "date": "2004-11-09" + } + ] +} diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/float.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/float.json new file mode 100644 index 0000000..a799832 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/float.json @@ -0,0 +1,802 @@ +[ + { + "date": "2013-10-01", + "value": 150.0 + }, + { + "date": "2013-10-02", + "value": 152.38052769378947 + }, + { + "date": "2013-10-03", + "value": 154.26923077120756 + }, + { + "date": "2013-10-04", + "value": 155.37842413996768 + }, + { + "date": "2013-10-05", + "value": 154.91598408222126 + }, + { + "date": "2013-10-06", + "value": 155.6051503275322 + }, + { + "date": "2013-10-07", + "value": 156.020995422744 + }, + { + "date": "2013-10-08", + "value": 153.1518021247084 + }, + { + "date": "2013-10-09", + "value": 151.21729814562673 + }, + { + "date": "2013-10-10", + "value": 151.38433609966495 + }, + { + "date": "2013-10-11", + "value": 150.78872781927018 + }, + { + "date": "2013-10-12", + "value": 153.9134389141148 + }, + { + "date": "2013-10-13", + "value": 156.94601290283427 + }, + { + "date": "2013-10-14", + "value": 158.86305615638318 + }, + { + "date": "2013-10-15", + "value": 159.25111032644563 + }, + { + "date": "2013-10-16", + "value": 157.70892050744425 + }, + { + "date": "2013-10-17", + "value": 156.5166885320253 + }, + { + "date": "2013-10-18", + "value": 159.2391477211863 + }, + { + "date": "2013-10-19", + "value": 156.15457859306844 + }, + { + "date": "2013-10-20", + "value": 157.32962414620647 + }, + { + "date": "2013-10-21", + "value": 153.83264840368938 + }, + { + "date": "2013-10-22", + "value": 152.8551947020626 + }, + { + "date": "2013-10-23", + "value": 153.38853405036897 + }, + { + "date": "2013-10-24", + "value": 152.93427670642123 + }, + { + "date": "2013-10-25", + "value": 153.1469976790017 + }, + { + "date": "2013-10-26", + "value": 156.32209665860327 + }, + { + "date": "2013-10-27", + "value": 155.3284262677578 + }, + { + "date": "2013-10-28", + "value": 154.90051183690736 + }, + { + "date": "2013-10-29", + "value": 152.21341963762546 + }, + { + "date": "2013-10-30", + "value": 154.8384882355127 + }, + { + "date": "2013-10-31", + "value": 153.49778206006178 + }, + { + "date": "2013-11-01", + "value": 150.69077772414497 + }, + { + "date": "2013-11-02", + "value": 148.3688534222137 + }, + { + "date": "2013-11-03", + "value": 147.1517262760622 + }, + { + "date": "2013-11-04", + "value": 146.64232264462947 + }, + { + "date": "2013-11-05", + "value": 143.7977476766292 + }, + { + "date": "2013-11-06", + "value": 142.82657667368557 + }, + { + "date": "2013-11-07", + "value": 144.37296514065383 + }, + { + "date": "2013-11-08", + "value": 145.59894477345333 + }, + { + "date": "2013-11-09", + "value": 145.88560250329667 + }, + { + "date": "2013-11-10", + "value": 148.28518729606375 + }, + { + "date": "2013-11-11", + "value": 147.02769155090894 + }, + { + "date": "2013-11-12", + "value": 146.69585270653417 + }, + { + "date": "2013-11-13", + "value": 145.45574401363186 + }, + { + "date": "2013-11-14", + "value": 148.18505057473558 + }, + { + "date": "2013-11-15", + "value": 148.36757870086083 + }, + { + "date": "2013-11-16", + "value": 145.1284637176675 + }, + { + "date": "2013-11-17", + "value": 143.38783013080223 + }, + { + "date": "2013-11-18", + "value": 145.58507244067314 + }, + { + "date": "2013-11-19", + "value": 148.16482741338075 + }, + { + "date": "2013-11-20", + "value": 151.30824629651008 + }, + { + "date": "2013-11-21", + "value": 148.94149732547913 + }, + { + "date": "2013-11-22", + "value": 149.08060427013632 + }, + { + "date": "2013-11-23", + "value": 151.10349313471838 + }, + { + "date": "2013-11-24", + "value": 151.38042365227193 + }, + { + "date": "2013-11-25", + "value": 153.61246750490707 + }, + { + "date": "2013-11-26", + "value": 152.3819387058022 + }, + { + "date": "2013-11-27", + "value": 154.7666777810689 + }, + { + "date": "2013-11-28", + "value": 156.20049982296294 + }, + { + "date": "2013-11-29", + "value": 157.60570664431154 + }, + { + "date": "2013-11-30", + "value": 158.83110208147457 + }, + { + "date": "2013-12-01", + "value": 157.05145284891836 + }, + { + "date": "2013-12-02", + "value": 160.5636817325332 + }, + { + "date": "2013-12-03", + "value": 158.52309803850414 + }, + { + "date": "2013-12-04", + "value": 159.5481262069485 + }, + { + "date": "2013-12-05", + "value": 162.66665660028468 + }, + { + "date": "2013-12-06", + "value": 164.14412262081478 + }, + { + "date": "2013-12-07", + "value": 167.24305427243902 + }, + { + "date": "2013-12-08", + "value": 167.26032062671646 + }, + { + "date": "2013-12-09", + "value": 168.74492234114962 + }, + { + "date": "2013-12-10", + "value": 165.37752588946347 + }, + { + "date": "2013-12-11", + "value": 166.97673724876898 + }, + { + "date": "2013-12-12", + "value": 165.24083072211786 + }, + { + "date": "2013-12-13", + "value": 163.91840295642777 + }, + { + "date": "2013-12-14", + "value": 161.21392266343142 + }, + { + "date": "2013-12-15", + "value": 161.09086330318053 + }, + { + "date": "2013-12-16", + "value": 159.72436012634117 + }, + { + "date": "2013-12-17", + "value": 162.92718203581796 + }, + { + "date": "2013-12-18", + "value": 166.05289239617858 + }, + { + "date": "2013-12-19", + "value": 167.8303488173302 + }, + { + "date": "2013-12-20", + "value": 169.1076706115558 + }, + { + "date": "2013-12-21", + "value": 172.18214540311942 + }, + { + "date": "2013-12-22", + "value": 173.60361186108835 + }, + { + "date": "2013-12-23", + "value": 170.3333738357524 + }, + { + "date": "2013-12-24", + "value": 171.44904351284399 + }, + { + "date": "2013-12-25", + "value": 171.4237348889382 + }, + { + "date": "2013-12-26", + "value": 170.63558145007596 + }, + { + "date": "2013-12-27", + "value": 168.67744459688063 + }, + { + "date": "2013-12-28", + "value": 170.87359507435463 + }, + { + "date": "2013-12-29", + "value": 170.91071470721673 + }, + { + "date": "2013-12-30", + "value": 173.52457327401646 + }, + { + "date": "2013-12-31", + "value": 175.89856657641783 + }, + { + "date": "2014-01-01", + "value": 175.9115683446306 + }, + { + "date": "2014-01-02", + "value": 178.12945782320122 + }, + { + "date": "2014-01-03", + "value": 179.9335431435273 + }, + { + "date": "2014-01-04", + "value": 180.4112576197819 + }, + { + "date": "2014-01-05", + "value": 179.7701613992972 + }, + { + "date": "2014-01-06", + "value": 177.4686229951754 + }, + { + "date": "2014-01-07", + "value": 175.172988264621 + }, + { + "date": "2014-01-08", + "value": 172.89816035941323 + }, + { + "date": "2014-01-09", + "value": 169.32566831004084 + }, + { + "date": "2014-01-10", + "value": 166.200899808268 + }, + { + "date": "2014-01-11", + "value": 163.47733139260433 + }, + { + "date": "2014-01-12", + "value": 166.14564943514935 + }, + { + "date": "2014-01-13", + "value": 162.6972855825834 + }, + { + "date": "2014-01-14", + "value": 163.8285391707244 + }, + { + "date": "2014-01-15", + "value": 162.83765973354699 + }, + { + "date": "2014-01-16", + "value": 159.48461419107502 + }, + { + "date": "2014-01-17", + "value": 158.38069135440546 + }, + { + "date": "2014-01-18", + "value": 159.36210753864273 + }, + { + "date": "2014-01-19", + "value": 155.9389059732206 + }, + { + "date": "2014-01-20", + "value": 159.44340217055645 + }, + { + "date": "2014-01-21", + "value": 157.1252301818101 + }, + { + "date": "2014-01-22", + "value": 155.0515461360151 + }, + { + "date": "2014-01-23", + "value": 154.31662985182166 + }, + { + "date": "2014-01-24", + "value": 156.2405729119896 + }, + { + "date": "2014-01-25", + "value": 154.4303911259191 + }, + { + "date": "2014-01-26", + "value": 156.96007254763632 + }, + { + "date": "2014-01-27", + "value": 156.88984607757212 + }, + { + "date": "2014-01-28", + "value": 158.46953270592533 + }, + { + "date": "2014-01-29", + "value": 159.9760971292252 + }, + { + "date": "2014-01-30", + "value": 158.6064520244421 + }, + { + "date": "2014-01-31", + "value": 159.30396031924434 + }, + { + "date": "2014-02-01", + "value": 158.27130616930083 + }, + { + "date": "2014-02-02", + "value": 156.76310105114038 + }, + { + "date": "2014-02-03", + "value": 158.01962557788505 + }, + { + "date": "2014-02-04", + "value": 155.5601666102677 + }, + { + "date": "2014-02-05", + "value": 152.5655582330515 + }, + { + "date": "2014-02-06", + "value": 153.83308497210635 + }, + { + "date": "2014-02-07", + "value": 155.0906250736871 + }, + { + "date": "2014-02-08", + "value": 156.6661412607239 + }, + { + "date": "2014-02-09", + "value": 154.487982130377 + }, + { + "date": "2014-02-10", + "value": 151.80870052397174 + }, + { + "date": "2014-02-11", + "value": 152.6566948046261 + }, + { + "date": "2014-02-12", + "value": 153.3776096334368 + }, + { + "date": "2014-02-13", + "value": 151.52116899747688 + }, + { + "date": "2014-02-14", + "value": 154.99799005974643 + }, + { + "date": "2014-02-15", + "value": 153.78962974183693 + }, + { + "date": "2014-02-16", + "value": 155.5614787876006 + }, + { + "date": "2014-02-17", + "value": 155.50672366114722 + }, + { + "date": "2014-02-18", + "value": 155.2247468326664 + }, + { + "date": "2014-02-19", + "value": 157.04530694488096 + }, + { + "date": "2014-02-20", + "value": 159.7683676258508 + }, + { + "date": "2014-02-21", + "value": 156.19049862244253 + }, + { + "date": "2014-02-22", + "value": 157.77626968451625 + }, + { + "date": "2014-02-23", + "value": 157.85540343546958 + }, + { + "date": "2014-02-24", + "value": 157.606624912295 + }, + { + "date": "2014-02-25", + "value": 154.29310962212645 + }, + { + "date": "2014-02-26", + "value": 151.47520450013815 + }, + { + "date": "2014-02-27", + "value": 153.29471917494737 + }, + { + "date": "2014-02-28", + "value": 156.704724984211 + }, + { + "date": "2014-03-01", + "value": 155.04358060019956 + }, + { + "date": "2014-03-02", + "value": 153.2334356350558 + }, + { + "date": "2014-03-03", + "value": 152.03821354498334 + }, + { + "date": "2014-03-04", + "value": 154.19199847895723 + }, + { + "date": "2014-03-05", + "value": 152.06664190112994 + }, + { + "date": "2014-03-06", + "value": 153.2986037364113 + }, + { + "date": "2014-03-07", + "value": 156.4046061310383 + }, + { + "date": "2014-03-08", + "value": 154.42925835672014 + }, + { + "date": "2014-03-09", + "value": 155.18025911896245 + }, + { + "date": "2014-03-10", + "value": 153.37647431770608 + }, + { + "date": "2014-03-11", + "value": 150.61799083023823 + }, + { + "date": "2014-03-12", + "value": 153.66746188173215 + }, + { + "date": "2014-03-13", + "value": 156.3151844520418 + }, + { + "date": "2014-03-14", + "value": 153.95015669138036 + }, + { + "date": "2014-03-15", + "value": 155.29282634003127 + }, + { + "date": "2014-03-16", + "value": 158.5090157803603 + }, + { + "date": "2014-03-17", + "value": 155.14902966934457 + }, + { + "date": "2014-03-18", + "value": 156.85877093764927 + }, + { + "date": "2014-03-19", + "value": 159.97825057884495 + }, + { + "date": "2014-03-20", + "value": 160.0756240788441 + }, + { + "date": "2014-03-21", + "value": 163.71251312564075 + }, + { + "date": "2014-03-22", + "value": 160.35896864910785 + }, + { + "date": "2014-03-23", + "value": 159.6979743839615 + }, + { + "date": "2014-03-24", + "value": 160.64504978193472 + }, + { + "date": "2014-03-25", + "value": 161.35500716559707 + }, + { + "date": "2014-03-26", + "value": 160.2606961200085 + }, + { + "date": "2014-03-27", + "value": 158.57932628000506 + }, + { + "date": "2014-03-28", + "value": 161.07173063651766 + }, + { + "date": "2014-03-29", + "value": 164.7598991714389 + }, + { + "date": "2014-03-30", + "value": 165.51463489538983 + }, + { + "date": "2014-03-31", + "value": 168.03477347136803 + }, + { + "date": "2014-04-01", + "value": 164.8919155855522 + }, + { + "date": "2014-04-02", + "value": 162.43871270413882 + }, + { + "date": "2014-04-03", + "value": 160.56491168480784 + }, + { + "date": "2014-04-04", + "value": 160.6231106692656 + }, + { + "date": "2014-04-05", + "value": 158.51347739227052 + }, + { + "date": "2014-04-06", + "value": 157.05813234785617 + }, + { + "date": "2014-04-07", + "value": 159.7471186342081 + }, + { + "date": "2014-04-08", + "value": 161.25579641704525 + }, + { + "date": "2014-04-09", + "value": 161.35157834105863 + }, + { + "date": "2014-04-10", + "value": 164.93059854718956 + }, + { + "date": "2014-04-11", + "value": 162.2509201417386 + }, + { + "date": "2014-04-12", + "value": 162.73580527992038 + }, + { + "date": "2014-04-13", + "value": 166.48398412407607 + }, + { + "date": "2014-04-14", + "value": 163.15310481696565 + }, + { + "date": "2014-04-15", + "value": 164.5079907470571 + }, + { + "date": "2014-04-16", + "value": 164.2005466198294 + }, + { + "date": "2014-04-17", + "value": 165.77632203055697 + }, + { + "date": "2014-04-18", + "value": 168.99155761340631 + } +]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/log.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/log.json new file mode 100644 index 0000000..1f57231 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/log.json @@ -0,0 +1,802 @@ +[ + { + "date": "2014-01-01", + "value": 2062.025150690567 + }, + { + "date": "2014-01-02", + "value": 9490.615524570567 + }, + { + "date": "2014-01-03", + "value": 49143.35242208582 + }, + { + "date": "2014-01-04", + "value": 83781.24929181556 + }, + { + "date": "2014-01-05", + "value": 109648.70666620035 + }, + { + "date": "2014-01-06", + "value": 46173.741222724544 + }, + { + "date": "2014-01-07", + "value": 165309.1825970328 + }, + { + "date": "2014-01-08", + "value": 134390.76197886752 + }, + { + "date": "2014-01-09", + "value": 382245.0764417244 + }, + { + "date": "2014-01-10", + "value": 261951.04021767154 + }, + { + "date": "2014-01-11", + "value": 365476.76967184874 + }, + { + "date": "2014-01-12", + "value": 307933.33112867293 + }, + { + "date": "2014-01-13", + "value": 122142.84412918231 + }, + { + "date": "2014-01-14", + "value": 439273.6427485952 + }, + { + "date": "2014-01-15", + "value": 283379.5623780852 + }, + { + "date": "2014-01-16", + "value": 238943.45026934962 + }, + { + "date": "2014-01-17", + "value": 363906.78317270277 + }, + { + "date": "2014-01-18", + "value": 1018001.8313018363 + }, + { + "date": "2014-01-19", + "value": 1138159.039774829 + }, + { + "date": "2014-01-20", + "value": 316399.43565288646 + }, + { + "date": "2014-01-21", + "value": 94835.07271610542 + }, + { + "date": "2014-01-22", + "value": 18781.513209857534 + }, + { + "date": "2014-01-23", + "value": 18249.48928239598 + }, + { + "date": "2014-01-24", + "value": 3999.643726105876 + }, + { + "date": "2014-01-25", + "value": 14221.763703455596 + }, + { + "date": "2014-01-26", + "value": 3444.9725583557893 + }, + { + "date": "2014-01-27", + "value": 7147.116251563855 + }, + { + "date": "2014-01-28", + "value": 14502.314013448287 + }, + { + "date": "2014-01-29", + "value": 44911.76232177228 + }, + { + "date": "2014-01-30", + "value": 122174.22764316449 + }, + { + "date": "2014-01-31", + "value": 54225.475099677475 + }, + { + "date": "2014-02-01", + "value": 29195.867918886433 + }, + { + "date": "2014-02-02", + "value": 30485.050577153477 + }, + { + "date": "2014-02-03", + "value": 4960.742108121759 + }, + { + "date": "2014-02-04", + "value": 5814.4040147487185 + }, + { + "date": "2014-02-05", + "value": 2075.4863124795897 + }, + { + "date": "2014-02-06", + "value": 11365.620177539273 + }, + { + "date": "2014-02-07", + "value": 6818.763378635227 + }, + { + "date": "2014-02-08", + "value": 7265.042372143863 + }, + { + "date": "2014-02-09", + "value": 1288.1919040639705 + }, + { + "date": "2014-02-10", + "value": 2903.318504081354 + }, + { + "date": "2014-02-11", + "value": 3476.3564765091846 + }, + { + "date": "2014-02-12", + "value": 428.6416126782084 + }, + { + "date": "2014-02-13", + "value": 4566.4372898258425 + }, + { + "date": "2014-02-14", + "value": 711.2536837438607 + }, + { + "date": "2014-02-15", + "value": 384.520808469771 + }, + { + "date": "2014-02-16", + "value": 126.37136078741982 + }, + { + "date": "2014-02-17", + "value": 1709.721519931354 + }, + { + "date": "2014-02-18", + "value": 10148.81839728999 + }, + { + "date": "2014-02-19", + "value": 3819.8318150089253 + }, + { + "date": "2014-02-20", + "value": 1911.5698109115874 + }, + { + "date": "2014-02-21", + "value": 1237.0465606485475 + }, + { + "date": "2014-02-22", + "value": 82.83456054447824 + }, + { + "date": "2014-02-23", + "value": 247.0567207206995 + }, + { + "date": "2014-02-24", + "value": 2203.4022567407605 + }, + { + "date": "2014-02-25", + "value": 200.68097764702628 + }, + { + "date": "2014-02-26", + "value": 1121.5673568474388 + }, + { + "date": "2014-02-27", + "value": 627.5130197784911 + }, + { + "date": "2014-02-28", + "value": 1962.9915978862207 + }, + { + "date": "2014-03-01", + "value": 4167.075152352931 + }, + { + "date": "2014-03-02", + "value": 3849.2422430353718 + }, + { + "date": "2014-03-03", + "value": 26024.15104428929 + }, + { + "date": "2014-03-04", + "value": 45516.77289686834 + }, + { + "date": "2014-03-05", + "value": 7027.573697798366 + }, + { + "date": "2014-03-06", + "value": 17669.906070121062 + }, + { + "date": "2014-03-07", + "value": 31044.119274296314 + }, + { + "date": "2014-03-08", + "value": 16408.707887136083 + }, + { + "date": "2014-03-09", + "value": 3892.134863935774 + }, + { + "date": "2014-03-10", + "value": 11938.967226184868 + }, + { + "date": "2014-03-11", + "value": 1553.5233934189364 + }, + { + "date": "2014-03-12", + "value": 11862.515702018087 + }, + { + "date": "2014-03-13", + "value": 11158.305407269254 + }, + { + "date": "2014-03-14", + "value": 1334.4016354870455 + }, + { + "date": "2014-03-15", + "value": 2187.7480927633233 + }, + { + "date": "2014-03-16", + "value": 4024.375328815201 + }, + { + "date": "2014-03-17", + "value": 2395.3870463434037 + }, + { + "date": "2014-03-18", + "value": 1087.1435238277254 + }, + { + "date": "2014-03-19", + "value": 677.9406955253385 + }, + { + "date": "2014-03-20", + "value": 1684.7330261245882 + }, + { + "date": "2014-03-21", + "value": 3009.7657573084657 + }, + { + "date": "2014-03-22", + "value": 13969.174225175822 + }, + { + "date": "2014-03-23", + "value": 68108.10656837105 + }, + { + "date": "2014-03-24", + "value": 188573.87239187933 + }, + { + "date": "2014-03-25", + "value": 559783.3612696081 + }, + { + "date": "2014-03-26", + "value": 209480.2451268065 + }, + { + "date": "2014-03-27", + "value": 139144.43213947577 + }, + { + "date": "2014-03-28", + "value": 365608.9134261734 + }, + { + "date": "2014-03-29", + "value": 320844.7892292448 + }, + { + "date": "2014-03-30", + "value": 211943.9255856596 + }, + { + "date": "2014-03-31", + "value": 762121.6146144189 + }, + { + "date": "2014-04-01", + "value": 1553918.287468606 + }, + { + "date": "2014-04-02", + "value": 2776190.8340374744 + }, + { + "date": "2014-04-03", + "value": 2132982.883619252 + }, + { + "date": "2014-04-04", + "value": 3034471.5222186935 + }, + { + "date": "2014-04-05", + "value": 8334267.184667878 + }, + { + "date": "2014-04-06", + "value": 19096849.199135397 + }, + { + "date": "2014-04-07", + "value": 35173655.63395549 + }, + { + "date": "2014-04-08", + "value": 35284088.03655991 + }, + { + "date": "2014-04-09", + "value": 15386352.945048828 + }, + { + "date": "2014-04-10", + "value": 16092176.925682666 + }, + { + "date": "2014-04-11", + "value": 17800747.264360324 + }, + { + "date": "2014-04-12", + "value": 9022272.93207202 + }, + { + "date": "2014-04-13", + "value": 19539255.318293292 + }, + { + "date": "2014-04-14", + "value": 18632765.170638006 + }, + { + "date": "2014-04-15", + "value": 22207773.697823893 + }, + { + "date": "2014-04-16", + "value": 20513350.14760112 + }, + { + "date": "2014-04-17", + "value": 8644588.740459614 + }, + { + "date": "2014-04-18", + "value": 3866972.7646409343 + }, + { + "date": "2014-04-19", + "value": 8627791.327706825 + }, + { + "date": "2014-04-20", + "value": 21876288.3070209 + }, + { + "date": "2014-04-21", + "value": 13065156.692366121 + }, + { + "date": "2014-04-22", + "value": 7006977.18803938 + }, + { + "date": "2014-04-23", + "value": 7322004.070875965 + }, + { + "date": "2014-04-24", + "value": 9144087.906869492 + }, + { + "date": "2014-04-25", + "value": 15712634.308609735 + }, + { + "date": "2014-04-26", + "value": 11675332.990584275 + }, + { + "date": "2014-04-27", + "value": 5276441.428244869 + }, + { + "date": "2014-04-28", + "value": 2098065.0498573617 + }, + { + "date": "2014-04-29", + "value": 4274196.893315845 + }, + { + "date": "2014-04-30", + "value": 6837182.692798125 + }, + { + "date": "2014-05-01", + "value": 5762561.20563913 + }, + { + "date": "2014-05-02", + "value": 8597818.493391953 + }, + { + "date": "2014-05-03", + "value": 15162543.40157677 + }, + { + "date": "2014-05-04", + "value": 10330812.046296848 + }, + { + "date": "2014-05-05", + "value": 8535447.031729257 + }, + { + "date": "2014-05-06", + "value": 3486240.413358828 + }, + { + "date": "2014-05-07", + "value": 2402788.773306244 + }, + { + "date": "2014-05-08", + "value": 2289950.291292259 + }, + { + "date": "2014-05-09", + "value": 3518464.1366947945 + }, + { + "date": "2014-05-10", + "value": 2218638.123249026 + }, + { + "date": "2014-05-11", + "value": 3024707.6308568935 + }, + { + "date": "2014-05-12", + "value": 1481284.8173510565 + }, + { + "date": "2014-05-13", + "value": 3804459.7482742644 + }, + { + "date": "2014-05-14", + "value": 3166547.5499812495 + }, + { + "date": "2014-05-15", + "value": 1244140.8712990445 + }, + { + "date": "2014-05-16", + "value": 1176461.8065991711 + }, + { + "date": "2014-05-17", + "value": 348538.1604919795 + }, + { + "date": "2014-05-18", + "value": 630138.4502415754 + }, + { + "date": "2014-05-19", + "value": 263415.04074479925 + }, + { + "date": "2014-05-20", + "value": 316526.39152859966 + }, + { + "date": "2014-05-21", + "value": 429475.93857651815 + }, + { + "date": "2014-05-22", + "value": 1384523.2440813945 + }, + { + "date": "2014-05-23", + "value": 1422251.2082510514 + }, + { + "date": "2014-05-24", + "value": 2982780.2273946116 + }, + { + "date": "2014-05-25", + "value": 1592004.698676512 + }, + { + "date": "2014-05-26", + "value": 705823.7238808231 + }, + { + "date": "2014-05-27", + "value": 382341.76239653886 + }, + { + "date": "2014-05-28", + "value": 117304.37608341743 + }, + { + "date": "2014-05-29", + "value": 103270.103426627 + }, + { + "date": "2014-05-30", + "value": 189088.38503418514 + }, + { + "date": "2014-05-31", + "value": 67547.73907513174 + }, + { + "date": "2014-06-01", + "value": 152445.22088057562 + }, + { + "date": "2014-06-02", + "value": 616622.4572364822 + }, + { + "date": "2014-06-03", + "value": 1330103.0525501214 + }, + { + "date": "2014-06-04", + "value": 4077706.361059827 + }, + { + "date": "2014-06-05", + "value": 4338332.117707394 + }, + { + "date": "2014-06-06", + "value": 9626054.268217776 + }, + { + "date": "2014-06-07", + "value": 6269805.105786423 + }, + { + "date": "2014-06-08", + "value": 2834343.2338959207 + }, + { + "date": "2014-06-09", + "value": 2175015.158688689 + }, + { + "date": "2014-06-10", + "value": 812456.163680258 + }, + { + "date": "2014-06-11", + "value": 2175163.4473366365 + }, + { + "date": "2014-06-12", + "value": 3808510.5886766836 + }, + { + "date": "2014-06-13", + "value": 5640689.343213645 + }, + { + "date": "2014-06-14", + "value": 4790537.231192042 + }, + { + "date": "2014-06-15", + "value": 4120824.1460910775 + }, + { + "date": "2014-06-16", + "value": 5302994.492796655 + }, + { + "date": "2014-06-17", + "value": 5186664.730492513 + }, + { + "date": "2014-06-18", + "value": 4044030.4941446534 + }, + { + "date": "2014-06-19", + "value": 8581214.856586913 + }, + { + "date": "2014-06-20", + "value": 15013739.74932458 + }, + { + "date": "2014-06-21", + "value": 5719554.417262289 + }, + { + "date": "2014-06-22", + "value": 2453002.234262133 + }, + { + "date": "2014-06-23", + "value": 7264081.292628654 + }, + { + "date": "2014-06-24", + "value": 3809522.1941388543 + }, + { + "date": "2014-06-25", + "value": 2357350.1101749516 + }, + { + "date": "2014-06-26", + "value": 1451776.5422490966 + }, + { + "date": "2014-06-27", + "value": 1951158.0790648684 + }, + { + "date": "2014-06-28", + "value": 942477.7660032308 + }, + { + "date": "2014-06-29", + "value": 284438.3044602669 + }, + { + "date": "2014-06-30", + "value": 395774.63111623266 + }, + { + "date": "2014-07-01", + "value": 181209.66166852613 + }, + { + "date": "2014-07-02", + "value": 99093.59454012293 + }, + { + "date": "2014-07-03", + "value": 112785.84621170859 + }, + { + "date": "2014-07-04", + "value": 268022.501587529 + }, + { + "date": "2014-07-05", + "value": 624290.8018990511 + }, + { + "date": "2014-07-06", + "value": 836181.367972055 + }, + { + "date": "2014-07-07", + "value": 565108.5866839852 + }, + { + "date": "2014-07-08", + "value": 293702.2823721791 + }, + { + "date": "2014-07-09", + "value": 128190.39198775633 + }, + { + "date": "2014-07-10", + "value": 57180.40753508925 + }, + { + "date": "2014-07-11", + "value": 62878.27977730392 + }, + { + "date": "2014-07-12", + "value": 204999.77253837787 + }, + { + "date": "2014-07-13", + "value": 95022.40040256473 + }, + { + "date": "2014-07-14", + "value": 41401.200972437386 + }, + { + "date": "2014-07-15", + "value": 183846.47705915576 + }, + { + "date": "2014-07-16", + "value": 114247.21116015536 + }, + { + "date": "2014-07-17", + "value": 34743.36459470002 + }, + { + "date": "2014-07-18", + "value": 11872.77812834004 + }, + { + "date": "2014-07-19", + "value": 28822.077421492377 + } +]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/make_fake_data.py b/priv/static/metrics-graphics-3.0-alpha3/examples/data/make_fake_data.py new file mode 100644 index 0000000..f350eab --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/make_fake_data.py @@ -0,0 +1,56 @@ +import sys +from datetime import datetime, date, timedelta +import json +from random import random +import argparse + +parser = argparse.ArgumentParser(description="Fake data maker.") +parser.add_argument('-s', '--start', help="start date", nargs=1) +parser.add_argument('-d', '--small', help="allow decimal values", action="store_true") +parser.add_argument('-r', '--range', help="how many days from start date", nargs=1) +parser.add_argument('-m', '--magnitude', help="size of change", nargs=1) +parser.add_argument('-p', '--percentage', help="whether or not this is a percentage", action="store_true") +parser.add_argument('-n', '--let_negative', help="let the data values go negative", action="store_true") +parser.add_argument('-v', '--start_value', help='start value', nargs=1) +args = parser.parse_args() + +doy = { + 0: 1, + 1:.9, + 2:1, + 3:1.1, + 4:1.05, + 5:.7, + 6:.75 +} +if args.percentage: convert = lambda x: float(x) +elif args.small: convert = lambda x: float(x) +else: convert = lambda x: int(x) + +current_date = datetime.strptime(args.start[0], '%Y-%m-%d').date() +length = int(args.range[0]) + +baseline = convert(args.start_value[0]) + +if args.magnitude: magnitude = convert(args.magnitude[0]) +elif args.percentage: magnitude = baseline/50. +elif args.small: magnitude = baseline/20. +else: magnitude = baseline/5 +out = [] + +# Needed to automatically convert dates to strings in json. +dthandler = lambda obj: obj.isoformat() if isinstance(obj, date) else None + +for i in xrange(length): + out.append({'date': current_date, 'value': baseline}) + nb = convert(magnitude * (random()-.5)) + if args.percentage: + if (baseline+nb < 0 or baseline+nb > 1) and (not args.let_negative): pass + else: baseline += nb + else: + if baseline+nb < 0 and not args.let_negative: pass + else: baseline += nb + + current_date += timedelta(days=1) + +sys.stdout.write(json.dumps(out,default=dthandler, indent=4))
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/missing-is-hidden-accessor.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/missing-is-hidden-accessor.json new file mode 100644 index 0000000..088ec47 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/missing-is-hidden-accessor.json @@ -0,0 +1,57 @@ + + [ + { + "date": "2014-01-08", + "value": 500 + }, + { + "date": "2014-01-09", + "value": 500 + }, + { + "date": "2014-01-10", + "value": 400 + }, + { + "date": "2014-01-11", + "value": 500, + "dead": true + }, + { + "date": "2014-01-12", + "value": 400 + }, + { + "date": "2014-01-13", + "value": 430 + }, + { + "date": "2014-01-14", + "value": 410 + }, + { + "date": "2014-01-15", + "value": 200, + "dead": true + }, + { + "date": "2014-01-16", + "value": 500 + }, + { + "date": "2014-01-17", + "value": 100 + }, + { + "date": "2014-01-18", + "value": 30 + }, + { + "date": "2014-01-19", + "value": 300 + }, + { + "date": "2014-01-20", + "value": 200 + } + ] diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/missing-is-hidden-multi.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/missing-is-hidden-multi.json new file mode 100644 index 0000000..e64a30b --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/missing-is-hidden-multi.json @@ -0,0 +1,1436 @@ +[ + [ + { + "date": "2014-01-01", + "value": 10000000 + }, + { + "date": "2014-01-02", + "value": 10379978 + }, + { + "date": "2014-01-03", + "value": 10493749 + }, + { + "date": "2014-01-04", + "value": 10785250 + }, + { + "date": "2014-01-08", + "value": 15177211 + }, + { + "date": "2014-01-09", + "value": 16622100 + }, + { + "date": "2014-01-10", + "value": 17381072 + }, + { + "date": "2014-01-11", + "value": 18802310 + }, + { + "date": "2014-01-12", + "value": 15531790 + }, + { + "date": "2014-01-13", + "value": 15748881 + }, + { + "date": "2014-01-14", + "value": 18706437 + }, + { + "date": "2014-01-15", + "value": 19752685 + }, + { + "date": "2014-01-16", + "value": 21016418 + }, + { + "date": "2014-01-17", + "value": 25622924 + }, + { + "date": "2014-01-18", + "value": 25337480 + }, + { + "date": "2014-01-19", + "value": 22258882 + }, + { + "date": "2014-01-20", + "value": 23829538 + }, + { + "date": "2014-01-21", + "value": 24245689 + }, + { + "date": "2014-01-22", + "value": 26429711 + }, + { + "date": "2014-01-23", + "value": 26259017 + }, + { + "date": "2014-01-24", + "value": 25396183 + }, + { + "date": "2014-01-25", + "value": 23107346 + }, + { + "date": "2014-01-26", + "value": 28659852 + }, + { + "date": "2014-01-27", + "value": 25270783 + }, + { + "date": "2014-01-28", + "value": 26270783 + }, + { + "date": "2014-01-29", + "value": 27270783 + }, + { + "date": "2014-01-30", + "value": 28270783 + }, + { + "date": "2014-01-31", + "value": 29270783 + }, + { + "date": "2014-02-01", + "value": 30270783 + }, + { + "date": "2014-02-02", + "value": 31270783 + }, + { + "date": "2014-02-03", + "value": 32270783 + }, + { + "date": "2014-02-04", + "value": 33270783 + }, + { + "date": "2014-02-05", + "value": 28270783 + }, + { + "date": "2014-02-06", + "value": 27270783 + }, + { + "date": "2014-02-07", + "value": 35270783 + }, + { + "date": "2014-02-08", + "value": 34270783 + }, + { + "date": "2014-02-09", + "value": 28270783 + }, + { + "date": "2014-02-10", + "value": 35270783 + }, + { + "date": "2014-02-11", + "value": 36270783 + }, + { + "date": "2014-02-12", + "value": 34127078 + }, + { + "date": "2014-02-13", + "value": 33124078 + }, + { + "date": "2014-02-14", + "value": 36227078 + }, + { + "date": "2014-02-15", + "value": 37827078 + }, + { + "date": "2014-02-16", + "value": 36427073 + }, + { + "date": "2014-02-17", + "value": 37570783 + }, + { + "date": "2014-02-18", + "value": 38627073 + }, + { + "date": "2014-02-19", + "value": 37727078 + }, + { + "date": "2014-02-20", + "value": 38827073 + }, + { + "date": "2014-02-21", + "value": 40927078 + }, + { + "date": "2014-02-22", + "value": 41027078 + }, + { + "date": "2014-02-23", + "value": 42127073 + }, + { + "date": "2014-02-24", + "value": 43220783 + }, + { + "date": "2014-02-25", + "value": 44327078 + }, + { + "date": "2014-02-26", + "value": 40427078 + }, + { + "date": "2014-02-27", + "value": 41027078 + }, + { + "date": "2014-02-28", + "value": 45627078 + }, + { + "date": "2014-03-01", + "value": 44727078 + }, + { + "date": "2014-03-02", + "value": 44227078 + }, + { + "date": "2014-03-03", + "value": 45227078 + }, + { + "date": "2014-03-04", + "value": 46027078 + }, + { + "date": "2014-03-05", + "value": 46927078 + }, + { + "date": "2014-03-06", + "value": 47027078 + }, + { + "date": "2014-03-07", + "value": 46227078 + }, + { + "date": "2014-03-08", + "value": 47027078 + }, + { + "date": "2014-03-09", + "value": 48027078 + }, + { + "date": "2014-03-10", + "value": 47027078 + }, + { + "date": "2014-03-11", + "value": 47027078 + }, + { + "date": "2014-03-12", + "value": 48017078 + }, + { + "date": "2014-03-13", + "value": 48077078 + }, + { + "date": "2014-03-14", + "value": 48087078 + }, + { + "date": "2014-03-15", + "value": 48017078 + }, + { + "date": "2014-03-16", + "value": 48047078 + }, + { + "date": "2014-03-17", + "value": 48067078 + }, + { + "date": "2014-03-18", + "value": 48077078 + }, + { + "date": "2014-03-19", + "value": 48027074 + }, + { + "date": "2014-03-20", + "value": 48927079 + }, + { + "date": "2014-03-21", + "value": 48727071 + }, + { + "date": "2014-03-22", + "value": 48127072 + }, + { + "date": "2014-03-23", + "value": 48527072 + }, + { + "date": "2014-03-24", + "value": 48627027 + }, + { + "date": "2014-03-25", + "value": 48027040 + }, + { + "date": "2014-03-26", + "value": 48027043 + }, + { + "date": "2014-03-27", + "value": 48057022 + }, + { + "date": "2014-03-28", + "value": 49057022 + }, + { + "date": "2014-03-29", + "value": 50057022 + }, + { + "date": "2014-03-30", + "value": 51057022 + }, + { + "date": "2014-03-31", + "value": 52057022 + }, + { + "date": "2014-04-01", + "value": 53057022 + }, + { + "date": "2014-04-02", + "value": 54057022 + }, + { + "date": "2014-04-03", + "value": 52057022 + }, + { + "date": "2014-04-04", + "value": 55057022 + }, + { + "date": "2014-04-05", + "value": 58270783 + }, + { + "date": "2014-04-06", + "value": 56270783 + }, + { + "date": "2014-04-07", + "value": 55270783 + }, + { + "date": "2014-04-08", + "value": 58270783 + }, + { + "date": "2014-04-09", + "value": 59270783 + }, + { + "date": "2014-04-10", + "value": 60270783 + }, + { + "date": "2014-04-11", + "value": 61270783 + }, + { + "date": "2014-04-12", + "value": 62270783 + }, + { + "date": "2014-04-13", + "value": 63270783 + }, + { + "date": "2014-04-14", + "value": 64270783 + }, + { + "date": "2014-04-15", + "value": 65270783 + }, + { + "date": "2014-04-16", + "value": 66270783 + }, + { + "date": "2014-04-17", + "value": 67270783 + }, + { + "date": "2014-04-18", + "value": 68270783 + }, + { + "date": "2014-04-19", + "value": 69270783 + }, + { + "date": "2014-04-20", + "value": 70270783 + }, + { + "date": "2014-04-21", + "value": 71270783 + }, + { + "date": "2014-04-22", + "value": 72270783 + }, + { + "date": "2014-04-23", + "value": 73270783 + }, + { + "date": "2014-04-24", + "value": 74270783 + }, + { + "date": "2014-04-25", + "value": 75270783 + }, + { + "date": "2014-04-26", + "value": 76660783 + }, + { + "date": "2014-04-27", + "value": 77270783 + }, + { + "date": "2014-04-28", + "value": 78370783 + }, + { + "date": "2014-04-29", + "value": 79470783 + }, + { + "date": "2014-04-30", + "value": 80170783 + } + ], + [ + { + "date": "2014-01-01", + "value": 150000000 + }, + { + "date": "2014-01-02", + "value": 160379978 + }, + { + "date": "2014-01-03", + "value": 170493749 + }, + { + "date": "2014-01-04", + "value": 160785250 + }, + { + "date": "2014-01-05", + "value": 167391904 + }, + { + "date": "2014-01-06", + "value": 161576838 + }, + { + "date": "2014-01-07", + "value": 161413854 + }, + { + "date": "2014-01-08", + "value": 152177211 + }, + { + "date": "2014-01-09", + "value": 143762210 + }, + { + "date": "2014-01-10", + "value": 144381072 + }, + { + "date": "2014-01-11", + "value": 154352310 + }, + { + "date": "2014-01-12", + "value": 165531790 + }, + { + "date": "2014-01-13", + "value": 175748881 + }, + { + "date": "2014-01-14", + "value": 187064037 + }, + { + "date": "2014-01-15", + "value": 197520685 + }, + { + "date": "2014-01-16", + "value": 210176418 + }, + { + "date": "2014-01-17", + "value": 196122924 + }, + { + "date": "2014-01-18", + "value": 207337480 + }, + { + "date": "2014-01-19", + "value": 200258882 + }, + { + "date": "2014-01-20", + "value": 186829538 + }, + { + "date": "2014-01-21", + "value": 192456897 + }, + { + "date": "2014-01-22", + "value": 204299711 + }, + { + "date": "2014-01-23", + "value": 192759017 + }, + { + "date": "2014-01-24", + "value": 203596183 + }, + { + "date": "2014-01-25", + "value": 208107346 + }, + { + "date": "2014-01-26", + "value": 196359852 + }, + { + "date": "2014-01-27", + "value": 192570783 + }, + { + "date": "2014-01-28", + "value": 177967768 + }, + { + "date": "2014-01-29", + "value": 190632803 + }, + { + "date": "2014-01-30", + "value": 203725316 + }, + { + "date": "2014-01-31", + "value": 218226177 + }, + { + "date": "2014-02-01", + "value": 210698669 + }, + { + "date": "2014-02-02", + "value": 217640656 + }, + { + "date": "2014-02-03", + "value": 216142362 + }, + { + "date": "2014-02-04", + "value": 201410971 + }, + { + "date": "2014-02-05", + "value": 196704289 + }, + { + "date": "2014-02-06", + "value": 190436945 + }, + { + "date": "2014-02-07", + "value": 178891686 + }, + { + "date": "2014-02-08", + "value": 171613962 + }, + { + "date": "2014-02-09", + "value": 157579773 + }, + { + "date": "2014-02-10", + "value": 158677098 + }, + { + "date": "2014-02-11", + "value": 147129977 + }, + { + "date": "2014-02-12", + "value": 151561876 + }, + { + "date": "2014-02-13", + "value": 151627421 + }, + { + "date": "2014-02-14", + "value": 143543872 + }, + { + "date": "2014-02-15", + "value": 136581057 + }, + { + "date": "2014-02-16", + "value": 135560715 + }, + { + "date": "2014-02-17", + "value": 122625263 + }, + { + "date": "2014-02-18", + "value": 112091484 + }, + { + "date": "2014-02-19", + "value": 98810329 + }, + { + "date": "2014-02-20", + "value": 99882912 + }, + { + "date": "2014-02-21", + "value": 94943095 + }, + { + "date": "2014-02-22", + "value": 104875743 + }, + { + "date": "2014-02-23", + "value": 116383678 + }, + { + "date": "2014-02-24", + "value": 125028841 + }, + { + "date": "2014-02-25", + "value": 123967310 + }, + { + "date": "2014-02-26", + "value": 133167029 + }, + { + "date": "2014-02-27", + "value": 128577263 + }, + { + "date": "2014-02-28", + "value": 115836969 + }, + { + "date": "2014-03-01", + "value": 119264529 + }, + { + "date": "2014-03-02", + "value": 109363374 + }, + { + "date": "2014-03-03", + "value": 113985628 + }, + { + "date": "2014-03-04", + "value": 114650999 + }, + { + "date": "2014-03-05", + "value": 110866108 + }, + { + "date": "2014-03-06", + "value": 96473454 + }, + { + "date": "2014-03-07", + "value": 104075886 + }, + { + "date": "2014-03-08", + "value": 103568384 + }, + { + "date": "2014-03-09", + "value": 101534883 + }, + { + "date": "2014-03-10", + "value": 115825447 + }, + { + "date": "2014-03-11", + "value": 126133916 + }, + { + "date": "2014-03-12", + "value": 116502109 + }, + { + "date": "2014-03-13", + "value": 130169411 + }, + { + "date": "2014-03-14", + "value": 124296886 + }, + { + "date": "2014-03-15", + "value": 126347399 + }, + { + "date": "2014-03-16", + "value": 131483669 + }, + { + "date": "2014-03-17", + "value": 142811333 + }, + { + "date": "2014-03-18", + "value": 129675396 + }, + { + "date": "2014-03-19", + "value": 115514483 + }, + { + "date": "2014-03-20", + "value": 117630630 + }, + { + "date": "2014-03-21", + "value": 122340239 + }, + { + "date": "2014-03-22", + "value": 132349091 + }, + { + "date": "2014-03-23", + "value": 125613305 + }, + { + "date": "2014-03-24", + "value": 135592466 + }, + { + "date": "2014-03-25", + "value": 123408762 + }, + { + "date": "2014-03-26", + "value": 111991454 + }, + { + "date": "2014-03-27", + "value": 116123955 + }, + { + "date": "2014-03-28", + "value": 112817214 + }, + { + "date": "2014-03-29", + "value": 113029590 + }, + { + "date": "2014-03-30", + "value": 108753398 + }, + { + "date": "2014-03-31", + "value": 99383763 + }, + { + "date": "2014-04-01", + "value": 100151737 + }, + { + "date": "2014-04-02", + "value": 94985209 + }, + { + "date": "2014-04-03", + "value": 82913669 + }, + { + "date": "2014-04-04", + "value": 78748268 + }, + { + "date": "2014-04-05", + "value": 63829135 + }, + { + "date": "2014-04-06", + "value": 78694727 + }, + { + "date": "2014-04-07", + "value": 80868994 + }, + { + "date": "2014-04-08", + "value": 93799013 + }, + { + "date": "2014-04-09", + "value": 99042416 + }, + { + "date": "2014-04-10", + "value": 97298692 + }, + { + "date": "2014-04-11", + "value": 83353499 + }, + { + "date": "2014-04-12", + "value": 71248129 + }, + { + "date": "2014-04-13", + "value": 75253744 + }, + { + "date": "2014-04-14", + "value": 68976648 + }, + { + "date": "2014-04-15", + "value": 71002284 + }, + { + "date": "2014-04-16", + "value": 75052401 + }, + { + "date": "2014-04-17", + "value": 83894030 + }, + { + "date": "2014-04-18", + "value": 90236528 + }, + { + "date": "2014-04-19", + "value": 99739114 + }, + { + "date": "2014-04-20", + "value": 96407136 + }, + { + "date": "2014-04-21", + "value": 108323177 + }, + { + "date": "2014-04-22", + "value": 101578914 + }, + { + "date": "2014-04-23", + "value": 115877608 + }, + { + "date": "2014-04-24", + "value": 112088857 + }, + { + "date": "2014-04-25", + "value": 112071353 + }, + { + "date": "2014-04-26", + "value": 101790062 + }, + { + "date": "2014-04-27", + "value": 115003761 + }, + { + "date": "2014-04-28", + "value": 120457727 + }, + { + "date": "2014-04-29", + "value": 118253926 + }, + { + "date": "2014-04-30", + "value": 117956992 + } + ], + [ + { + "date": "2014-01-01", + "value": 60000000 + }, + { + "date": "2014-01-02", + "value": 60379978 + }, + { + "date": "2014-01-03", + "value": 40493749 + }, + { + "date": "2014-01-04", + "value": 60785250 + }, + { + "date": "2014-01-05", + "value": 67391904 + }, + { + "date": "2014-01-06", + "value": 61576838 + }, + { + "date": "2014-01-07", + "value": 61413854 + }, + { + "date": "2014-01-08", + "value": 82177211 + }, + { + "date": "2014-01-09", + "value": 103762210 + }, + { + "date": "2014-01-10", + "value": 84381072 + }, + { + "date": "2014-01-11", + "value": 54352310 + }, + { + "date": "2014-01-12", + "value": 65531790 + }, + { + "date": "2014-01-13", + "value": 75748881 + }, + { + "date": "2014-01-14", + "value": 47064037 + }, + { + "date": "2014-01-15", + "value": 67520685 + }, + { + "date": "2014-01-16", + "value": 60176418 + }, + { + "date": "2014-01-17", + "value": 66122924 + }, + { + "date": "2014-01-18", + "value": 57337480 + }, + { + "date": "2014-01-19", + "value": 100258882 + }, + { + "date": "2014-01-20", + "value": 46829538 + }, + { + "date": "2014-01-21", + "value": 92456897 + }, + { + "date": "2014-01-22", + "value": 94299711 + }, + { + "date": "2014-01-23", + "value": 62759017 + }, + { + "date": "2014-01-24", + "value": 103596183 + }, + { + "date": "2014-01-25", + "value": 108107346 + }, + { + "date": "2014-01-26", + "value": 66359852 + }, + { + "date": "2014-01-27", + "value": 62570783 + }, + { + "date": "2014-01-28", + "value": 77967768 + }, + { + "date": "2014-01-29", + "value": 60632803 + }, + { + "date": "2014-01-30", + "value": 103725316 + }, + { + "date": "2014-01-31", + "value": 98226177 + }, + { + "date": "2014-02-01", + "value": 60698669 + }, + { + "date": "2014-02-02", + "value": 67640656 + }, + { + "date": "2014-02-03", + "value": 66142362 + }, + { + "date": "2014-02-04", + "value": 101410971 + }, + { + "date": "2014-02-05", + "value": 66704289 + }, + { + "date": "2014-02-06", + "value": 60436945 + }, + { + "date": "2014-02-07", + "value": 78891686 + }, + { + "date": "2014-02-08", + "value": 71613962 + }, + { + "date": "2014-02-09", + "value": 107579773 + }, + { + "date": "2014-02-10", + "value": 58677098 + }, + { + "date": "2014-02-11", + "value": 87129977 + }, + { + "date": "2014-02-12", + "value": 51561876 + }, + { + "date": "2014-02-13", + "value": 51627421 + }, + { + "date": "2014-02-14", + "value": 83543872 + }, + { + "date": "2014-02-15", + "value": 66581057 + }, + { + "date": "2014-02-16", + "value": 65560715 + }, + { + "date": "2014-02-17", + "value": 62625263 + }, + { + "date": "2014-02-18", + "value": 92091484 + }, + { + "date": "2014-02-19", + "value": 48810329 + }, + { + "date": "2014-02-20", + "value": 49882912 + }, + { + "date": "2014-02-21", + "value": 44943095 + }, + { + "date": "2014-02-22", + "value": 104875743 + }, + { + "date": "2014-02-23", + "value": 96383678 + }, + { + "date": "2014-02-24", + "value": 105028841 + }, + { + "date": "2014-02-25", + "value": 63967310 + }, + { + "date": "2014-02-26", + "value": 63167029 + }, + { + "date": "2014-02-27", + "value": 68577263 + }, + { + "date": "2014-02-28", + "value": 95836969 + }, + { + "date": "2014-03-01", + "value": 99264529 + }, + { + "date": "2014-03-02", + "value": 109363374 + }, + { + "date": "2014-03-03", + "value": 93985628 + }, + { + "date": "2014-03-04", + "value": 94650999 + }, + { + "date": "2014-03-05", + "value": 90866108 + }, + { + "date": "2014-03-06", + "value": 46473454 + }, + { + "date": "2014-03-07", + "value": 84075886 + }, + { + "date": "2014-03-08", + "value": 103568384 + }, + { + "date": "2014-03-09", + "value": 101534883 + }, + { + "date": "2014-03-10", + "value": 95825447 + }, + { + "date": "2014-03-11", + "value": 66133916 + }, + { + "date": "2014-03-12", + "value": 96502109 + }, + { + "date": "2014-03-13", + "value": 80169411 + }, + { + "date": "2014-03-14", + "value": 84296886 + }, + { + "date": "2014-03-15", + "value": 86347399 + }, + { + "date": "2014-03-16", + "value": 31483669 + }, + { + "date": "2014-03-17", + "value": 82811333 + }, + { + "date": "2014-03-18", + "value": 89675396 + }, + { + "date": "2014-03-19", + "value": 95514483 + }, + { + "date": "2014-03-20", + "value": 97630630 + }, + { + "date": "2014-03-21", + "value": 62340239 + }, + { + "date": "2014-03-22", + "value": 62349091 + }, + { + "date": "2014-03-23", + "value": 65613305 + }, + { + "date": "2014-03-24", + "value": 65592466 + }, + { + "date": "2014-03-25", + "value": 63408762 + }, + { + "date": "2014-03-26", + "value": 91991454 + }, + { + "date": "2014-03-27", + "value": 96123955 + }, + { + "date": "2014-03-28", + "value": 92817214 + }, + { + "date": "2014-03-29", + "value": 93029590 + }, + { + "date": "2014-03-30", + "value": 108753398 + }, + { + "date": "2014-03-31", + "value": 49383763 + }, + { + "date": "2014-04-01", + "value": 100151737 + }, + { + "date": "2014-04-02", + "value": 44985209 + }, + { + "date": "2014-04-03", + "value": 52913669 + }, + { + "date": "2014-04-04", + "value": 48748268 + }, + { + "date": "2014-04-05", + "value": 23829135 + }, + { + "date": "2014-04-06", + "value": 58694727 + }, + { + "date": "2014-04-07", + "value": 50868994 + }, + { + "date": "2014-04-08", + "value": 43799013 + }, + { + "date": "2014-04-09", + "value": 4042416 + }, + { + "date": "2014-04-10", + "value": 47298692 + }, + { + "date": "2014-04-11", + "value": 53353499 + }, + { + "date": "2014-04-12", + "value": 71248129 + }, + { + "date": "2014-04-13", + "value": 75253744 + }, + { + "date": "2014-04-14", + "value": 68976648 + }, + { + "date": "2014-04-15", + "value": 71002284 + }, + { + "date": "2014-04-16", + "value": 75052401 + }, + { + "date": "2014-04-17", + "value": 83894030 + }, + { + "date": "2014-04-18", + "value": 50236528 + }, + { + "date": "2014-04-19", + "value": 59739114 + }, + { + "date": "2014-04-20", + "value": 56407136 + }, + { + "date": "2014-04-21", + "value": 108323177 + }, + { + "date": "2014-04-22", + "value": 101578914 + }, + { + "date": "2014-04-23", + "value": 95877608 + }, + { + "date": "2014-04-24", + "value": 62088857 + }, + { + "date": "2014-04-25", + "value": 92071353 + }, + { + "date": "2014-04-26", + "value": 81790062 + }, + { + "date": "2014-04-27", + "value": 105003761 + }, + { + "date": "2014-04-28", + "value": 100457727 + }, + { + "date": "2014-04-29", + "value": 98253926 + }, + { + "date": "2014-04-30", + "value": 67956992 + } + ] +]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/missing-is-hidden.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/missing-is-hidden.json new file mode 100644 index 0000000..582d08a --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/missing-is-hidden.json @@ -0,0 +1,39 @@ + + [ + { + "date": "2014-01-08", + "value": 500 + }, + { + "date": "2014-01-09", + "value": 500 + }, + { + "date": "2014-01-10", + "value": 400 + }, + { + "date": "2014-02-12", + "value": 500 + }, + { + "date": "2014-02-13", + "value": 100 + }, + { + "date": "2014-02-14", + "value": null + }, + { + "date": "2014-02-15", + "value": 30 + }, + { + "date": "2014-02-16", + "value": 300 + }, + { + "date": "2014-02-17", + "value": 200 + } + ] diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/missing-y.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/missing-y.json new file mode 100644 index 0000000..9ec8f18 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/missing-y.json @@ -0,0 +1,35 @@ + + [ + { + "date": "2014-01-08", + "value": 500 + }, + { + "date": "2014-01-12", + "value": 500 + }, + { + "date": "2014-01-19", + "value": 2000 + }, + { + "date": "2014-01-20", + "value": 2200 + }, + { + "date": "2014-01-21", + "value": 2300 + }, + { + "date": "2014-04-23", + "value": 500 + }, + { + "date": "2014-04-24", + "value": 1500 + }, + { + "date": "2014-04-25", + "value": 3000 + } + ] diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/multiline.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/multiline.json new file mode 100644 index 0000000..90102ba --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/multiline.json @@ -0,0 +1,902 @@ +[ + { + "date": "2013-11-30", + "value3": 40770, + "value2": 38327, + "value1": 43564 + }, + { + "date": "2013-12-01", + "value3": 39705, + "value2": 39998, + "value1": 43104 + }, + { + "date": "2013-12-02", + "value3": 39209, + "value2": 40158, + "value1": 40300 + }, + { + "date": "2013-12-03", + "value3": 35539, + "value2": 37155, + "value1": 37078 + }, + { + "date": "2013-12-04", + "value3": 33231, + "value2": 37554, + "value1": 38526 + }, + { + "date": "2013-12-05", + "value3": 29792, + "value2": 40383, + "value1": 36456 + }, + { + "date": "2013-12-06", + "value3": 33533, + "value2": 42351, + "value1": 39354 + }, + { + "date": "2013-12-07", + "value3": 31903, + "value2": 45058, + "value1": 42378 + }, + { + "date": "2013-12-08", + "value3": 30748, + "value2": 47100, + "value1": 38812 + }, + { + "date": "2013-12-09", + "value3": 30380, + "value2": 44866, + "value1": 37220 + }, + { + "date": "2013-12-10", + "value3": 29189, + "value2": 41967, + "value1": 39755 + }, + { + "date": "2013-12-11", + "value3": 31210, + "value2": 39328, + "value1": 40757 + }, + { + "date": "2013-12-12", + "value3": 35036, + "value2": 35949, + "value1": 39377 + }, + { + "date": "2013-12-13", + "value3": 35619, + "value2": 33159, + "value1": 38073 + }, + { + "date": "2013-12-14", + "value3": 36377, + "value2": 33589, + "value1": 35086 + }, + { + "date": "2013-12-15", + "value3": 38730, + "value2": 33746, + "value1": 34582 + }, + { + "date": "2013-12-16", + "value3": 34850, + "value2": 36825, + "value1": 36423 + }, + { + "date": "2013-12-17", + "value3": 33172, + "value2": 38092, + "value1": 37563 + }, + { + "date": "2013-12-18", + "value3": 29390, + "value2": 36368, + "value1": 38391 + }, + { + "date": "2013-12-19", + "value3": 27097, + "value2": 32403, + "value1": 38486 + }, + { + "date": "2013-12-20", + "value3": 25922, + "value2": 35803, + "value1": 35076 + }, + { + "date": "2013-12-21", + "value3": 29734, + "value2": 37922, + "value1": 32287 + }, + { + "date": "2013-12-22", + "value3": 31860, + "value2": 35274, + "value1": 28294 + }, + { + "date": "2013-12-23", + "value3": 29052, + "value2": 35216, + "value1": 31195 + }, + { + "date": "2013-12-24", + "value3": 27400, + "value2": 35466, + "value1": 28475 + }, + { + "date": "2013-12-25", + "value3": 29042, + "value2": 33327, + "value1": 26174 + }, + { + "date": "2013-12-26", + "value3": 28410, + "value2": 35632, + "value1": 28177 + }, + { + "date": "2013-12-27", + "value3": 27045, + "value2": 35348, + "value1": 28660 + }, + { + "date": "2013-12-28", + "value3": 26506, + "value2": 37153, + "value1": 27007 + }, + { + "date": "2013-12-29", + "value3": 26331, + "value2": 35442, + "value1": 29527 + }, + { + "date": "2013-12-30", + "value3": 23209, + "value2": 37541, + "value1": 30305 + }, + { + "date": "2013-12-31", + "value3": 24124, + "value2": 34335, + "value1": 32349 + }, + { + "date": "2014-01-01", + "value3": 21329, + "value2": 32894, + "value1": 32782 + }, + { + "date": "2014-01-02", + "value3": 21989, + "value2": 30909, + "value1": 29583 + }, + { + "date": "2014-01-03", + "value3": 23481, + "value2": 33794, + "value1": 25680 + }, + { + "date": "2014-01-04", + "value3": 20253, + "value2": 37516, + "value1": 24292 + }, + { + "date": "2014-01-05", + "value3": 21150, + "value2": 36692, + "value1": 24372 + }, + { + "date": "2014-01-06", + "value3": 23170, + "value2": 35783, + "value1": 20990 + }, + { + "date": "2014-01-07", + "value3": 19767, + "value2": 38478, + "value1": 24691 + }, + { + "date": "2014-01-08", + "value3": 17130, + "value2": 40333, + "value1": 22481 + }, + { + "date": "2014-01-09", + "value3": 16280, + "value2": 39265, + "value1": 25239 + }, + { + "date": "2014-01-10", + "value3": 12306, + "value2": 40702, + "value1": 24248 + }, + { + "date": "2014-01-11", + "value3": 14425, + "value2": 39793, + "value1": 24395 + }, + { + "date": "2014-01-12", + "value3": 14555, + "value2": 36282, + "value1": 25580 + }, + { + "date": "2014-01-13", + "value3": 14582, + "value2": 32495, + "value1": 24165 + }, + { + "date": "2014-01-14", + "value3": 15216, + "value2": 36217, + "value1": 26088 + }, + { + "date": "2014-01-15", + "value3": 18650, + "value2": 39448, + "value1": 29528 + }, + { + "date": "2014-01-16", + "value3": 16567, + "value2": 36157, + "value1": 27990 + }, + { + "date": "2014-01-17", + "value3": 16512, + "value2": 33246, + "value1": 24218 + }, + { + "date": "2014-01-18", + "value3": 19777, + "value2": 35543, + "value1": 20837 + }, + { + "date": "2014-01-19", + "value3": 20399, + "value2": 34715, + "value1": 22407 + }, + { + "date": "2014-01-20", + "value3": 18816, + "value2": 32680, + "value1": 19989 + }, + { + "date": "2014-01-21", + "value3": 19986, + "value2": 29250, + "value1": 23828 + }, + { + "date": "2014-01-22", + "value3": 22251, + "value2": 30438, + "value1": 26714 + }, + { + "date": "2014-01-23", + "value3": 25922, + "value2": 28387, + "value1": 30514 + }, + { + "date": "2014-01-24", + "value3": 26428, + "value2": 29612, + "value1": 33155 + }, + { + "date": "2014-01-25", + "value3": 25424, + "value2": 25831, + "value1": 34462 + }, + { + "date": "2014-01-26", + "value3": 27621, + "value2": 22203, + "value1": 32276 + }, + { + "date": "2014-01-27", + "value3": 23961, + "value2": 22855, + "value1": 31899 + }, + { + "date": "2014-01-28", + "value3": 25591, + "value2": 22024, + "value1": 29327 + }, + { + "date": "2014-01-29", + "value3": 26847, + "value2": 22686, + "value1": 32158 + }, + { + "date": "2014-01-30", + "value3": 27853, + "value2": 24676, + "value1": 29473 + }, + { + "date": "2014-01-31", + "value3": 24178, + "value2": 27591, + "value1": 32247 + }, + { + "date": "2014-02-01", + "value3": 20626, + "value2": 24225, + "value1": 30117 + }, + { + "date": "2014-02-02", + "value3": 17938, + "value2": 27842, + "value1": 29435 + }, + { + "date": "2014-02-03", + "value3": 21312, + "value2": 24541, + "value1": 27320 + }, + { + "date": "2014-02-04", + "value3": 17385, + "value2": 27164, + "value1": 30515 + }, + { + "date": "2014-02-05", + "value3": 17638, + "value2": 23288, + "value1": 28635 + }, + { + "date": "2014-02-06", + "value3": 18946, + "value2": 21521, + "value1": 27292 + }, + { + "date": "2014-02-07", + "value3": 21089, + "value2": 22467, + "value1": 24966 + }, + { + "date": "2014-02-08", + "value3": 22956, + "value2": 20604, + "value1": 24670 + }, + { + "date": "2014-02-09", + "value3": 23081, + "value2": 20732, + "value1": 27518 + }, + { + "date": "2014-02-10", + "value3": 25334, + "value2": 21436, + "value1": 24862 + }, + { + "date": "2014-02-11", + "value3": 21989, + "value2": 23315, + "value1": 27263 + }, + { + "date": "2014-02-12", + "value3": 20933, + "value2": 23816, + "value1": 25352 + }, + { + "date": "2014-02-13", + "value3": 21185, + "value2": 22416, + "value1": 22396 + }, + { + "date": "2014-02-14", + "value3": 22801, + "value2": 19348, + "value1": 18497 + }, + { + "date": "2014-02-15", + "value3": 20072, + "value2": 20167, + "value1": 21890 + }, + { + "date": "2014-02-16", + "value3": 23120, + "value2": 23505, + "value1": 22635 + }, + { + "date": "2014-02-17", + "value3": 26351, + "value2": 27294, + "value1": 23970 + }, + { + "date": "2014-02-18", + "value3": 27078, + "value2": 30219, + "value1": 20245 + }, + { + "date": "2014-02-19", + "value3": 26042, + "value2": 28226, + "value1": 17369 + }, + { + "date": "2014-02-20", + "value3": 28763, + "value2": 26489, + "value1": 19326 + }, + { + "date": "2014-02-21", + "value3": 31668, + "value2": 23210, + "value1": 17781 + }, + { + "date": "2014-02-22", + "value3": 31141, + "value2": 22636, + "value1": 15731 + }, + { + "date": "2014-02-23", + "value3": 34681, + "value2": 24430, + "value1": 11917 + }, + { + "date": "2014-02-24", + "value3": 32836, + "value2": 22607, + "value1": 8723 + }, + { + "date": "2014-02-25", + "value3": 29452, + "value2": 22561, + "value1": 7930 + }, + { + "date": "2014-02-26", + "value3": 31958, + "value2": 21692, + "value1": 7898 + }, + { + "date": "2014-02-27", + "value3": 30526, + "value2": 24281, + "value1": 4909 + }, + { + "date": "2014-02-28", + "value3": 30271, + "value2": 23369, + "value1": 1564 + }, + { + "date": "2014-03-01", + "value3": 30977, + "value2": 21954, + "value1": 1564 + }, + { + "date": "2014-03-02", + "value3": 27892, + "value2": 24495, + "value1": 3179 + }, + { + "date": "2014-03-03", + "value3": 26752, + "value2": 20644, + "value1": 4147 + }, + { + "date": "2014-03-04", + "value3": 28318, + "value2": 20201, + "value1": 7271 + }, + { + "date": "2014-03-05", + "value3": 30646, + "value2": 19919, + "value1": 8747 + }, + { + "date": "2014-03-06", + "value3": 32219, + "value2": 20166, + "value1": 10704 + }, + { + "date": "2014-03-07", + "value3": 36175, + "value2": 24020, + "value1": 13698 + }, + { + "date": "2014-03-08", + "value3": 33312, + "value2": 23848, + "value1": 10890 + }, + { + "date": "2014-03-09", + "value3": 30792, + "value2": 23966, + "value1": 7044 + }, + { + "date": "2014-03-10", + "value3": 31162, + "value2": 24539, + "value1": 6461 + }, + { + "date": "2014-03-11", + "value3": 33510, + "value2": 26713, + "value1": 5604 + }, + { + "date": "2014-03-12", + "value3": 37339, + "value2": 23373, + "value1": 4937 + }, + { + "date": "2014-03-13", + "value3": 36413, + "value2": 20127, + "value1": 4007 + }, + { + "date": "2014-03-14", + "value3": 34026, + "value2": 18112, + "value1": 7673 + }, + { + "date": "2014-03-15", + "value3": 33383, + "value2": 20099, + "value1": 7768 + }, + { + "date": "2014-03-16", + "value3": 33358, + "value2": 17391, + "value1": 11123 + }, + { + "date": "2014-03-17", + "value3": 33433, + "value2": 16720, + "value1": 13294 + }, + { + "date": "2014-03-18", + "value3": 33898, + "value2": 17686, + "value1": 15860 + }, + { + "date": "2014-03-19", + "value3": 32549, + "value2": 19989, + "value1": 12153 + }, + { + "date": "2014-03-20", + "value3": 32990, + "value2": 17285, + "value1": 15822 + }, + { + "date": "2014-03-21", + "value3": 31703, + "value2": 15461, + "value1": 13681 + }, + { + "date": "2014-03-22", + "value3": 28348, + "value2": 18088, + "value1": 11944 + }, + { + "date": "2014-03-23", + "value3": 32284, + "value2": 19755, + "value1": 12479 + }, + { + "date": "2014-03-24", + "value3": 34991, + "value2": 19796, + "value1": 12171 + }, + { + "date": "2014-03-25", + "value3": 34395, + "value2": 20606, + "value1": 12889 + }, + { + "date": "2014-03-26", + "value3": 35467, + "value2": 23220, + "value1": 13169 + }, + { + "date": "2014-03-27", + "value3": 36434, + "value2": 26524, + "value1": 12952 + }, + { + "date": "2014-03-28", + "value3": 34007, + "value2": 27261, + "value1": 12141 + }, + { + "date": "2014-03-29", + "value3": 36605, + "value2": 28143, + "value1": 8420 + }, + { + "date": "2014-03-30", + "value3": 35324, + "value2": 29999, + "value1": 9551 + }, + { + "date": "2014-03-31", + "value3": 35077, + "value2": 33650, + "value1": 5917 + }, + { + "date": "2014-04-01", + "value3": 32331, + "value2": 37641, + "value1": 4555 + }, + { + "date": "2014-04-02", + "value3": 32161, + "value2": 40591, + "value1": 8205 + }, + { + "date": "2014-04-03", + "value3": 28921, + "value2": 39738, + "value1": 7119 + }, + { + "date": "2014-04-04", + "value3": 32534, + "value2": 39608, + "value1": 8866 + }, + { + "date": "2014-04-05", + "value3": 31463, + "value2": 40618, + "value1": 10712 + }, + { + "date": "2014-04-06", + "value3": 27973, + "value2": 36821, + "value1": 12396 + }, + { + "date": "2014-04-07", + "value3": 29953, + "value2": 34470, + "value1": 9679 + }, + { + "date": "2014-04-08", + "value3": 26788, + "value2": 31653, + "value1": 12035 + }, + { + "date": "2014-04-09", + "value3": 28319, + "value2": 30246, + "value1": 15903 + }, + { + "date": "2014-04-10", + "value3": 25536, + "value2": 32591, + "value1": 12835 + }, + { + "date": "2014-04-11", + "value3": 26710, + "value2": 34847, + "value1": 10734 + }, + { + "date": "2014-04-12", + "value3": 28521, + "value2": 36313, + "value1": 8157 + }, + { + "date": "2014-04-13", + "value3": 29304, + "value2": 37283, + "value1": 7307 + }, + { + "date": "2014-04-14", + "value3": 26847, + "value2": 35552, + "value1": 3414 + }, + { + "date": "2014-04-15", + "value3": 23252, + "value2": 33905, + "value1": 622 + }, + { + "date": "2014-04-16", + "value3": 21251, + "value2": 37098, + "value1": 3710 + }, + { + "date": "2014-04-17", + "value3": 21938, + "value2": 35414, + "value1": 2900 + }, + { + "date": "2014-04-18", + "value3": 19210, + "value2": 35479, + "value1": 4723 + }, + { + "date": "2014-04-19", + "value3": 17765, + "value2": 35822, + "value1": 7656 + }, + { + "date": "2014-04-20", + "value3": 15064, + "value2": 32006, + "value1": 5948 + }, + { + "date": "2014-04-21", + "value3": 16166, + "value2": 35829, + "value1": 4471 + }, + { + "date": "2014-04-22", + "value3": 14336, + "value2": 38851, + "value1": 6870 + }, + { + "date": "2014-04-23", + "value3": 18145, + "value2": 42598, + "value1": 4625 + }, + { + "date": "2014-04-24", + "value3": 20986, + "value2": 41071, + "value1": 4396 + }, + { + "date": "2014-04-25", + "value3": 21492, + "value2": 43611, + "value1": 5542 + }, + { + "date": "2014-04-26", + "value3": 20712, + "value2": 41320, + "value1": 7280 + }, + { + "date": "2014-04-27", + "value3": 18048, + "value2": 39232, + "value1": 3426 + }, + { + "date": "2014-04-28", + "value3": 17747, + "value2": 42156, + "value1": 4539 + } +]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/neg1.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/neg1.json new file mode 100644 index 0000000..f12a4ca --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/neg1.json @@ -0,0 +1,602 @@ +[ + { + "date": "2013-10-01", + "value": 0.0 + }, + { + "date": "2013-10-02", + "value": -20.27860065952477 + }, + { + "date": "2013-10-03", + "value": -12.426109787612926 + }, + { + "date": "2013-10-04", + "value": -17.699256257379318 + }, + { + "date": "2013-10-05", + "value": -22.019134369994354 + }, + { + "date": "2013-10-06", + "value": -41.59885296861614 + }, + { + "date": "2013-10-07", + "value": -31.867314787877127 + }, + { + "date": "2013-10-08", + "value": -16.68549399939984 + }, + { + "date": "2013-10-09", + "value": -14.214554612147637 + }, + { + "date": "2013-10-10", + "value": -37.100703439565635 + }, + { + "date": "2013-10-11", + "value": -41.716391973782905 + }, + { + "date": "2013-10-12", + "value": -60.65986986496344 + }, + { + "date": "2013-10-13", + "value": -65.88269292682585 + }, + { + "date": "2013-10-14", + "value": -85.89811733657307 + }, + { + "date": "2013-10-15", + "value": -87.57011580082312 + }, + { + "date": "2013-10-16", + "value": -69.1076591319889 + }, + { + "date": "2013-10-17", + "value": -69.71829820893743 + }, + { + "date": "2013-10-18", + "value": -48.07710064468784 + }, + { + "date": "2013-10-19", + "value": -42.02312145221815 + }, + { + "date": "2013-10-20", + "value": -36.94872786920486 + }, + { + "date": "2013-10-21", + "value": -26.283993993694217 + }, + { + "date": "2013-10-22", + "value": -41.683357633072106 + }, + { + "date": "2013-10-23", + "value": -48.410135784779435 + }, + { + "date": "2013-10-24", + "value": -24.647894376874603 + }, + { + "date": "2013-10-25", + "value": -24.48313857183973 + }, + { + "date": "2013-10-26", + "value": -30.775646331124953 + }, + { + "date": "2013-10-27", + "value": -42.353653361246884 + }, + { + "date": "2013-10-28", + "value": -56.408927207093086 + }, + { + "date": "2013-10-29", + "value": -40.78984664417509 + }, + { + "date": "2013-10-30", + "value": -41.42605076469138 + }, + { + "date": "2013-10-31", + "value": -18.09604151517472 + }, + { + "date": "2013-11-01", + "value": 2.0546535501343186 + }, + { + "date": "2013-11-02", + "value": 16.427200269275257 + }, + { + "date": "2013-11-03", + "value": 36.26021813729312 + }, + { + "date": "2013-11-04", + "value": 17.943623384419123 + }, + { + "date": "2013-11-05", + "value": 17.640349147379087 + }, + { + "date": "2013-11-06", + "value": 28.733924995418647 + }, + { + "date": "2013-11-07", + "value": 43.17866048300303 + }, + { + "date": "2013-11-08", + "value": 42.352421757240364 + }, + { + "date": "2013-11-09", + "value": 20.96374796987576 + }, + { + "date": "2013-11-10", + "value": 0.4817825186157414 + }, + { + "date": "2013-11-11", + "value": 4.454052949905262 + }, + { + "date": "2013-11-12", + "value": 9.903521845328488 + }, + { + "date": "2013-11-13", + "value": -9.659938196685449 + }, + { + "date": "2013-11-14", + "value": -1.6572458262441714 + }, + { + "date": "2013-11-15", + "value": -19.421347615158197 + }, + { + "date": "2013-11-16", + "value": -5.133047713617817 + }, + { + "date": "2013-11-17", + "value": 7.142073986101426 + }, + { + "date": "2013-11-18", + "value": 19.965752044244944 + }, + { + "date": "2013-11-19", + "value": 34.06855156342502 + }, + { + "date": "2013-11-20", + "value": 32.035712731383306 + }, + { + "date": "2013-11-21", + "value": 26.800280474507574 + }, + { + "date": "2013-11-22", + "value": 36.74472173965269 + }, + { + "date": "2013-11-23", + "value": 17.635258758794258 + }, + { + "date": "2013-11-24", + "value": 21.70157569545806 + }, + { + "date": "2013-11-25", + "value": 12.880215322765117 + }, + { + "date": "2013-11-26", + "value": -1.6952234072651535 + }, + { + "date": "2013-11-27", + "value": -25.709873487640706 + }, + { + "date": "2013-11-28", + "value": -24.333141952222054 + }, + { + "date": "2013-11-29", + "value": -23.101049395363514 + }, + { + "date": "2013-11-30", + "value": -30.77467592550588 + }, + { + "date": "2013-12-01", + "value": -52.484803998469324 + }, + { + "date": "2013-12-02", + "value": -59.967129097767554 + }, + { + "date": "2013-12-03", + "value": -58.54448864190029 + }, + { + "date": "2013-12-04", + "value": -35.733861688599625 + }, + { + "date": "2013-12-05", + "value": -49.95861223226006 + }, + { + "date": "2013-12-06", + "value": -68.88793877584408 + }, + { + "date": "2013-12-07", + "value": -50.428275259634844 + }, + { + "date": "2013-12-08", + "value": -40.26117556623101 + }, + { + "date": "2013-12-09", + "value": -38.891176869589806 + }, + { + "date": "2013-12-10", + "value": -59.758690871453695 + }, + { + "date": "2013-12-11", + "value": -71.1695554284355 + }, + { + "date": "2013-12-12", + "value": -90.63524940599096 + }, + { + "date": "2013-12-13", + "value": -79.23423804726241 + }, + { + "date": "2013-12-14", + "value": -71.25861388735568 + }, + { + "date": "2013-12-15", + "value": -60.61596323199725 + }, + { + "date": "2013-12-16", + "value": -62.93902244769705 + }, + { + "date": "2013-12-17", + "value": -41.22170848850722 + }, + { + "date": "2013-12-18", + "value": -27.226208027424434 + }, + { + "date": "2013-12-19", + "value": -7.309085309368637 + }, + { + "date": "2013-12-20", + "value": 3.670426015191861 + }, + { + "date": "2013-12-21", + "value": 19.473948613489632 + }, + { + "date": "2013-12-22", + "value": 40.415945876438144 + }, + { + "date": "2013-12-23", + "value": 31.289641086998923 + }, + { + "date": "2013-12-24", + "value": 17.434969637396232 + }, + { + "date": "2013-12-25", + "value": 30.21158378387427 + }, + { + "date": "2013-12-26", + "value": 30.727072719951824 + }, + { + "date": "2013-12-27", + "value": 20.184828808977333 + }, + { + "date": "2013-12-28", + "value": 27.76791048820225 + }, + { + "date": "2013-12-29", + "value": 34.40666779673991 + }, + { + "date": "2013-12-30", + "value": 28.662553475743806 + }, + { + "date": "2013-12-31", + "value": 20.816765875588956 + }, + { + "date": "2014-01-01", + "value": 30.498234516361673 + }, + { + "date": "2014-01-02", + "value": 6.549837407292948 + }, + { + "date": "2014-01-03", + "value": -17.03978957481648 + }, + { + "date": "2014-01-04", + "value": -6.201247455250156 + }, + { + "date": "2014-01-05", + "value": -9.481910347672848 + }, + { + "date": "2014-01-06", + "value": -1.4927745588584092 + }, + { + "date": "2014-01-07", + "value": 7.015746206056052 + }, + { + "date": "2014-01-08", + "value": 16.24056736124951 + }, + { + "date": "2014-01-09", + "value": 40.86145060910893 + }, + { + "date": "2014-01-10", + "value": 30.561347738520645 + }, + { + "date": "2014-01-11", + "value": 7.104703671937518 + }, + { + "date": "2014-01-12", + "value": 30.52693531793409 + }, + { + "date": "2014-01-13", + "value": 43.612806638528454 + }, + { + "date": "2014-01-14", + "value": 20.25247412642843 + }, + { + "date": "2014-01-15", + "value": 7.141936114658641 + }, + { + "date": "2014-01-16", + "value": -10.81374417310036 + }, + { + "date": "2014-01-17", + "value": 13.268210809685325 + }, + { + "date": "2014-01-18", + "value": 9.593303343135403 + }, + { + "date": "2014-01-19", + "value": 9.190238080819555 + }, + { + "date": "2014-01-20", + "value": -7.087595978474408 + }, + { + "date": "2014-01-21", + "value": 16.112869601906773 + }, + { + "date": "2014-01-22", + "value": 19.92397510159386 + }, + { + "date": "2014-01-23", + "value": 33.4964486295363 + }, + { + "date": "2014-01-24", + "value": 46.4831931105589 + }, + { + "date": "2014-01-25", + "value": 22.484343494394732 + }, + { + "date": "2014-01-26", + "value": 9.574360390216658 + }, + { + "date": "2014-01-27", + "value": 12.56929545850477 + }, + { + "date": "2014-01-28", + "value": -0.14595957202229037 + }, + { + "date": "2014-01-29", + "value": -14.696983674286617 + }, + { + "date": "2014-01-30", + "value": -15.237944850705059 + }, + { + "date": "2014-01-31", + "value": -1.7882058112963062 + }, + { + "date": "2014-02-01", + "value": -7.860538889362351 + }, + { + "date": "2014-02-02", + "value": 8.444727352087527 + }, + { + "date": "2014-02-03", + "value": 32.30058738777103 + }, + { + "date": "2014-02-04", + "value": 16.055786840333848 + }, + { + "date": "2014-02-05", + "value": -0.36610893414817625 + }, + { + "date": "2014-02-06", + "value": -1.1025132187248678 + }, + { + "date": "2014-02-07", + "value": 16.48048170957292 + }, + { + "date": "2014-02-08", + "value": 30.920083106250665 + }, + { + "date": "2014-02-09", + "value": 9.793945311635703 + }, + { + "date": "2014-02-10", + "value": -14.741798239121763 + }, + { + "date": "2014-02-11", + "value": 9.788165531444847 + }, + { + "date": "2014-02-12", + "value": -8.119237390130131 + }, + { + "date": "2014-02-13", + "value": -1.1782643021314554 + }, + { + "date": "2014-02-14", + "value": 7.310002841362066 + }, + { + "date": "2014-02-15", + "value": -6.0549226820141255 + }, + { + "date": "2014-02-16", + "value": 8.311998864819806 + }, + { + "date": "2014-02-17", + "value": 2.2233224632177393 + }, + { + "date": "2014-02-18", + "value": -18.946268533746085 + }, + { + "date": "2014-02-19", + "value": -5.889102580833665 + }, + { + "date": "2014-02-20", + "value": -0.19481412319894353 + }, + { + "date": "2014-02-21", + "value": -1.9196952442973252 + }, + { + "date": "2014-02-22", + "value": -25.056284352606756 + }, + { + "date": "2014-02-23", + "value": -32.09293779807747 + }, + { + "date": "2014-02-24", + "value": -55.77733578681833 + }, + { + "date": "2014-02-25", + "value": -73.55650805303047 + }, + { + "date": "2014-02-26", + "value": -78.44939933625979 + }, + { + "date": "2014-02-27", + "value": -61.75086522568682 + } +]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/neg2.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/neg2.json new file mode 100644 index 0000000..00bdbcc --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/neg2.json @@ -0,0 +1,30 @@ +[ + { + "measure": 43.34, + "subject": 32.0 + }, + { + "measure": 53.3423, + "subject": 20.27 + }, + { + "measure": -10.343, + "subject": 12.42 + }, + { + "measure": -1, + "subject": -1.69 + }, + { + "measure": 10, + "subject": -10.01 + }, + { + "measure": 25, + "subject": -21.59 + }, + { + "measure": -20.343, + "subject": -31.86 + } +]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/nh-gop.tsv b/priv/static/metrics-graphics-3.0-alpha3/examples/data/nh-gop.tsv new file mode 100644 index 0000000..e0dc414 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/nh-gop.tsv @@ -0,0 +1,6 @@ +Poll Date Trump Rubio Cruz Christie Kasich Bush Carson Fiorina Paul Huckabee Santorum Pataki Graham Spread +RCP Average 12/13 - 1/6 27.0 13.8 11.5 11.3 10.0 8.3 5.0 4.8 3.8 0.3 0.3 0.0 0.0 Trump +13.2 +PPP (D) 1/4 - 1/6 29 15 10 11 11 10 4 4 3 1 1 -- -- Trump +14 +ARG 12/20 - 12/20 21 15 10 12 13 7 6 5 4 0 0 0 -- Trump +6 +CBS News/YouGov 12/14 - 12/17 32 13 14 11 8 6 5 4 5 0 0 0 0 Trump +18 +Boston Herald 12/13 - 12/17 26 12 12 11 8 10 5 6 3 0 0 0 0 Trump +14
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/points1.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/points1.json new file mode 100644 index 0000000..c3b17f7 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/points1.json @@ -0,0 +1,802 @@ +[ + { + "u": "cat_10", + "w": 1.243871075541485, + "v": "other", + "y": 211.80029085913867, + "x": 156.56698521169255, + "z": 1.2592730408041488 + }, + { + "u": "cat_9", + "w": 0.18317089873596637, + "v": "other", + "y": 196.93116746887526, + "x": 182.9226627644747, + "z": 1.5420852412869692 + }, + { + "u": "cat_11", + "w": 1.6440310398846552, + "v": "other", + "y": 198.15275935129918, + "x": 180.46587284398524, + "z": 1.0607952297441374 + }, + { + "u": "cat_7", + "w": -0.7500939816017782, + "v": "other", + "y": 146.31202991730444, + "x": 102.35636312891461, + "z": 0.30940991631448456 + }, + { + "u": "cat_10", + "w": 0.46988959503208527, + "v": "other", + "y": 118.66304545624911, + "x": 175.8035980586206, + "z": 1.589820005614669 + }, + { + "u": "cat_3", + "w": 2.4359184943127667, + "v": "other", + "y": 214.0123663650676, + "x": 146.24883586964125, + "z": -0.8716888194991463 + }, + { + "u": "cat_8", + "w": -1.2794477449179462, + "v": "other", + "y": 165.45000531931404, + "x": 138.83167553877533, + "z": 0.365531221729956 + }, + { + "u": "other", + "w": 0.6533051004485967, + "v": "cat_0", + "y": 133.99465910929834, + "x": 119.39730303633817, + "z": 1.270978774871001 + }, + { + "u": "cat_13", + "w": -0.4527608603464446, + "v": "other", + "y": 262.89541671133776, + "x": 209.42459012646566, + "z": 0.15317285949553272 + }, + { + "u": "cat_12", + "w": 0.06915365942882012, + "v": "cat_0", + "y": 139.0123425273913, + "x": 140.27809963809628, + "z": 1.0850789531923752 + }, + { + "u": "cat_5", + "w": 0.18422289588498686, + "v": "other", + "y": 123.5696526089444, + "x": 178.47540577185424, + "z": 0.40291991519951875 + }, + { + "u": "cat_4", + "w": -0.4338210953783319, + "v": "cat_1", + "y": 161.93728020049016, + "x": 166.16502625602917, + "z": 0.5093424182003234 + }, + { + "u": "cat_7", + "w": 1.40583885575462, + "v": "other", + "y": 155.63962440916566, + "x": 99.85204107456539, + "z": 1.2530442449107233 + }, + { + "u": "cat_10", + "w": -0.4275099099676807, + "v": "other", + "y": 176.85285727542032, + "x": 161.42701652535786, + "z": 0.8230669881454445 + }, + { + "u": "cat_4", + "w": 1.463656501437303, + "v": "cat_1", + "y": 246.6642430026098, + "x": 73.48368170456627, + "z": 1.0052929735375302 + }, + { + "u": "cat_11", + "w": 0.013089161287933138, + "v": "other", + "y": 156.36354536529558, + "x": 243.2026715373837, + "z": 0.39667694750274274 + }, + { + "u": "cat_12", + "w": 0.36730326802039404, + "v": "other", + "y": 156.71697413402487, + "x": 148.27450037397765, + "z": -1.4105618351561287 + }, + { + "u": "cat_14", + "w": -0.06953747774947772, + "v": "other", + "y": 141.22433267951084, + "x": 69.06616491304716, + "z": 0.475924622911404 + }, + { + "u": "other", + "w": 0.517415189557197, + "v": "other", + "y": 115.95680666029197, + "x": 153.0898637311175, + "z": 0.9443947812526814 + }, + { + "u": "cat_3", + "w": 0.5670223685982718, + "v": "other", + "y": 227.27960266143467, + "x": 153.22490080491232, + "z": 1.32067405076989 + }, + { + "u": "cat_7", + "w": 0.5376290623874869, + "v": "other", + "y": 260.9119300068415, + "x": 158.76997596111525, + "z": 0.26196386810779426 + }, + { + "u": "cat_8", + "w": 2.168516664994767, + "v": "other", + "y": 170.77570545745968, + "x": 135.65940169018805, + "z": 0.9162849263421061 + }, + { + "u": "cat_5", + "w": 2.311955371948698, + "v": "other", + "y": 243.37468134084048, + "x": 20.66820288532847, + "z": -0.322645627898664 + }, + { + "u": "cat_4", + "w": 1.8314759939943595, + "v": "other", + "y": 214.1727802647768, + "x": 216.61746891013505, + "z": 2.4147498286441165 + }, + { + "u": "other", + "w": 0.8365279958031904, + "v": "other", + "y": 100.90575192733515, + "x": 151.6306779403549, + "z": 0.8606212265228668 + }, + { + "u": "cat_13", + "w": -0.26452281419648993, + "v": "cat_0", + "y": 194.59598730955793, + "x": 129.361227705571, + "z": 1.0322894496099724 + }, + { + "u": "cat_13", + "w": 2.6043512596594365, + "v": "other", + "y": 213.8128177957785, + "x": 194.6414121394208, + "z": 3.280204884184917 + }, + { + "u": "cat_6", + "w": 1.6310983407120137, + "v": "other", + "y": 163.2658097189387, + "x": 187.70506769054072, + "z": 1.3488889788600984 + }, + { + "u": "cat_8", + "w": 0.6487974580274094, + "v": "other", + "y": 194.3209257079902, + "x": 192.10028088047798, + "z": -0.07036372606337338 + }, + { + "u": "cat_10", + "w": 1.3927144738318111, + "v": "other", + "y": 161.3486689563104, + "x": 86.73894049392862, + "z": 0.1537876062955914 + }, + { + "u": "cat_9", + "w": -0.3771368838057665, + "v": "other", + "y": 182.55687300867896, + "x": 201.1112292465731, + "z": -0.058098755927163515 + }, + { + "u": "cat_0", + "w": -0.6345913552330389, + "v": "other", + "y": 165.80314397714827, + "x": 206.7182591446124, + "z": 1.4845564495064427 + }, + { + "u": "cat_0", + "w": 0.6855019579009463, + "v": "cat_1", + "y": 159.66118937446728, + "x": 192.39649008863876, + "z": 0.055873071009385766 + }, + { + "u": "cat_6", + "w": 2.964882131756106, + "v": "other", + "y": 241.84769149238159, + "x": 111.35023940160411, + "z": 0.167414971004892 + }, + { + "u": "other", + "w": -0.4506378010737888, + "v": "other", + "y": 90.4639669582562, + "x": 158.90001697899683, + "z": 1.1696787253371819 + }, + { + "u": "cat_0", + "w": 1.2656151949587624, + "v": "other", + "y": 183.02945581640645, + "x": 180.4213167593254, + "z": 2.0539930046863035 + }, + { + "u": "cat_13", + "w": 1.228801369090003, + "v": "other", + "y": 277.13369884311936, + "x": 80.15664163346004, + "z": 2.2937904251948638 + }, + { + "u": "cat_5", + "w": 2.0896213510871937, + "v": "other", + "y": 163.72382240169802, + "x": 215.41216187620037, + "z": 2.553028570447125 + }, + { + "u": "cat_15", + "w": 1.0981586322470924, + "v": "other", + "y": 109.2838491053391, + "x": 184.09570421897956, + "z": 0.44759620112619647 + }, + { + "u": "other", + "w": 1.3457067544720736, + "v": "other", + "y": 171.16629782677862, + "x": 213.12963803437316, + "z": 0.7270493828061404 + }, + { + "u": "cat_13", + "w": -0.7076617244518462, + "v": "other", + "y": 144.05587078713071, + "x": 184.28906651578978, + "z": 1.382134562867984 + }, + { + "u": "cat_0", + "w": -0.2800595737017382, + "v": "other", + "y": 193.27473606725474, + "x": 154.94633537134789, + "z": -0.33791235399367947 + }, + { + "u": "cat_14", + "w": 0.4456793621586681, + "v": "other", + "y": 125.1308061934427, + "x": 123.90267987241343, + "z": 2.3230978938654645 + }, + { + "u": "cat_5", + "w": 3.075103103171694, + "v": "cat_0", + "y": 154.8755877624397, + "x": 61.020238047163375, + "z": 1.6674654330131888 + }, + { + "u": "other", + "w": 0.16319305741807733, + "v": "cat_0", + "y": 114.08645682777497, + "x": 225.28654361195518, + "z": 0.4242182000961613 + }, + { + "u": "cat_6", + "w": 1.9417162589422323, + "v": "other", + "y": 185.28537858495014, + "x": 155.5736376536581, + "z": 1.1747492195973144 + }, + { + "u": "cat_4", + "w": 1.155787735870216, + "v": "cat_1", + "y": 183.24930292147863, + "x": 115.40643586463635, + "z": 0.19242660628339903 + }, + { + "u": "other", + "w": 0.6070329867687532, + "v": "other", + "y": 57.398818613660296, + "x": 219.87611544574744, + "z": 1.1095208041769122 + }, + { + "u": "cat_6", + "w": 0.4083905726447342, + "v": "other", + "y": 175.40387812166918, + "x": 224.68335734038368, + "z": -0.42207104629857617 + }, + { + "u": "cat_5", + "w": 0.6585907631358738, + "v": "cat_1", + "y": 124.05051069396585, + "x": 127.07766432478591, + "z": 0.1354114111502046 + }, + { + "u": "cat_10", + "w": 1.734882212854999, + "v": "cat_1", + "y": 143.78518104207086, + "x": 198.75776145611215, + "z": -0.12283925137929064 + }, + { + "u": "other", + "w": 0.20503963437937356, + "v": "other", + "y": 151.75327292745928, + "x": 148.9695770940796, + "z": 0.564428194218838 + }, + { + "u": "cat_15", + "w": 1.8574692523422356, + "v": "other", + "y": 306.0898140884456, + "x": 147.43144660079602, + "z": -0.22413411708624853 + }, + { + "u": "cat_4", + "w": 1.1062688896220425, + "v": "other", + "y": 212.44397654702615, + "x": 195.86829581464062, + "z": 0.7453160939357952 + }, + { + "u": "cat_15", + "w": -0.27774340110996487, + "v": "cat_0", + "y": 122.63707978879633, + "x": 95.64182307323996, + "z": 0.6430476399500114 + }, + { + "u": "cat_11", + "w": 1.693891428609414, + "v": "other", + "y": 161.59041244043587, + "x": 64.83892325218056, + "z": 0.6409468598992659 + }, + { + "u": "cat_0", + "w": 1.8192638452039414, + "v": "cat_0", + "y": 203.44169192711857, + "x": 175.9035258508178, + "z": 1.0101903553514529 + }, + { + "u": "cat_10", + "w": 1.6693901234237167, + "v": "other", + "y": 266.02281722067806, + "x": 193.7229721388815, + "z": 1.3287927803604402 + }, + { + "u": "cat_2", + "w": 1.6276382654036277, + "v": "cat_0", + "y": 174.54476940927518, + "x": 85.70090208863968, + "z": 1.3166929052154481 + }, + { + "u": "cat_4", + "w": 0.893609545984623, + "v": "other", + "y": 135.20127141724655, + "x": 161.0852992807473, + "z": 0.7423369081120028 + }, + { + "u": "cat_8", + "w": -0.25726080091728387, + "v": "other", + "y": 87.98074634203813, + "x": 194.6466767641028, + "z": 1.171709779521613 + }, + { + "u": "cat_6", + "w": 1.4386749809763226, + "v": "other", + "y": 154.56889252680085, + "x": 137.16494490842896, + "z": 1.8319953052292166 + }, + { + "u": "cat_1", + "w": 1.9751827147081238, + "v": "other", + "y": 150.52324196509258, + "x": 51.69078624012406, + "z": -0.23529144151246717 + }, + { + "u": "cat_14", + "w": 1.3843184328271165, + "v": "other", + "y": 160.51323171649904, + "x": 169.7361988952806, + "z": 1.3970600816965812 + }, + { + "u": "cat_15", + "w": -0.475868599212677, + "v": "other", + "y": 132.27225542990598, + "x": 103.56729490389614, + "z": 0.4512210085364755 + }, + { + "u": "cat_4", + "w": 1.2081442447975173, + "v": "cat_0", + "y": 56.102440394233255, + "x": 124.56829572524175, + "z": 1.2994110022657026 + }, + { + "u": "cat_13", + "w": 1.736143244910195, + "v": "cat_0", + "y": 212.5650565277553, + "x": 140.4278102663895, + "z": 2.3771380059458744 + }, + { + "u": "cat_14", + "w": -0.461785512082463, + "v": "cat_1", + "y": 101.5707842719089, + "x": 196.16957370342342, + "z": 2.0950787429883846 + }, + { + "u": "cat_5", + "w": 1.3260330340794257, + "v": "cat_1", + "y": 195.74556071781365, + "x": 36.939138857293585, + "z": -0.05847270264086335 + }, + { + "u": "cat_9", + "w": 0.3220908087517964, + "v": "other", + "y": 221.78294482102933, + "x": 74.76586558666337, + "z": -0.05817419869022866 + }, + { + "u": "cat_5", + "w": 0.8170251870816604, + "v": "other", + "y": 179.17790605043118, + "x": 232.48747575985655, + "z": 1.7029885149441673 + }, + { + "u": "cat_3", + "w": 0.2659811986182221, + "v": "cat_1", + "y": 192.81824199631728, + "x": 140.710358385573, + "z": 1.5793646916427102 + }, + { + "u": "cat_8", + "w": 1.2271687489820546, + "v": "other", + "y": 111.59013545108343, + "x": 101.3489243773156, + "z": 3.21128318091031 + }, + { + "u": "cat_13", + "w": 1.3499209090064648, + "v": "other", + "y": 91.89209852687142, + "x": 154.6035518322702, + "z": 0.6817267324899431 + }, + { + "u": "cat_0", + "w": 2.159235435849202, + "v": "other", + "y": 158.63631854616588, + "x": 120.35802170671863, + "z": 0.6067162231097979 + }, + { + "u": "cat_14", + "w": 0.8523794752014957, + "v": "other", + "y": 76.05793322732642, + "x": 138.4115475783541, + "z": 0.2967991752860232 + }, + { + "u": "cat_12", + "w": 1.0558373735944235, + "v": "other", + "y": 124.74002651703651, + "x": 157.02907657551447, + "z": -0.025374565392791038 + }, + { + "u": "cat_0", + "w": 1.3648422432834806, + "v": "cat_1", + "y": 203.82847317695288, + "x": 152.02003088030492, + "z": -0.4421819240850271 + }, + { + "u": "cat_4", + "w": 0.8156055831409262, + "v": "other", + "y": 95.97296459484079, + "x": 78.51455593195435, + "z": 1.1994133990162583 + }, + { + "u": "cat_3", + "w": 0.727605537039985, + "v": "other", + "y": 168.70196209212494, + "x": 212.41730028904536, + "z": 0.6997491454171789 + }, + { + "u": "cat_6", + "w": 1.262490286926595, + "v": "other", + "y": 134.65200754480446, + "x": 42.54634367887225, + "z": 0.5177600909542267 + }, + { + "u": "cat_8", + "w": 1.4837053114286998, + "v": "cat_0", + "y": 112.28208956177541, + "x": 193.95863032046006, + "z": 1.0019859410064678 + }, + { + "u": "cat_8", + "w": -0.16895357221403362, + "v": "cat_0", + "y": 192.98985884826888, + "x": 144.96182365337268, + "z": 1.4190462447457899 + }, + { + "u": "cat_16", + "w": 1.0468806482899717, + "v": "cat_0", + "y": 152.86277692393685, + "x": 137.2022037296142, + "z": 0.4593974450208086 + }, + { + "u": "cat_6", + "w": 2.462089222004976, + "v": "cat_1", + "y": 178.5621123552027, + "x": 142.01082685227874, + "z": 0.580699096900331 + }, + { + "u": "other", + "w": -0.9097490420343397, + "v": "other", + "y": 137.21823856264854, + "x": 94.98376759227347, + "z": 2.118286289288478 + }, + { + "u": "cat_5", + "w": 0.6155123359814616, + "v": "other", + "y": 52.94291552982141, + "x": 85.57431217669814, + "z": -0.09704681018895633 + }, + { + "u": "cat_11", + "w": 1.9468348457441005, + "v": "other", + "y": 243.07706417763518, + "x": 163.35061475046334, + "z": 1.178015608927323 + }, + { + "u": "cat_13", + "w": -0.11396040656336393, + "v": "other", + "y": 102.69550510842956, + "x": 105.80547059051209, + "z": 1.7309952065474825 + }, + { + "u": "cat_0", + "w": 1.0201819734167836, + "v": "other", + "y": 226.24093931458543, + "x": 128.26413056781655, + "z": 0.602354545792653 + }, + { + "u": "cat_9", + "w": 0.41269060095932775, + "v": "other", + "y": 22.06560060765568, + "x": 169.41836118747312, + "z": 0.6422396319927962 + }, + { + "u": "cat_13", + "w": 1.1423761297271733, + "v": "other", + "y": 122.16006750791158, + "x": 64.32267243426844, + "z": 0.5677725122287971 + }, + { + "u": "cat_0", + "w": -0.4940883354815302, + "v": "other", + "y": 146.45339448820994, + "x": 172.009924725858, + "z": 0.5733149663059203 + }, + { + "u": "cat_12", + "w": 2.0427267231236836, + "v": "other", + "y": 105.09233739863171, + "x": 151.8604441328228, + "z": -1.0417341971519445 + }, + { + "u": "cat_0", + "w": -0.06844772614894712, + "v": "cat_0", + "y": 208.74646965359665, + "x": 211.0589178490544, + "z": 3.033892234816319 + }, + { + "u": "cat_10", + "w": 0.1407531030532979, + "v": "other", + "y": 212.1295737404453, + "x": 157.62156278215423, + "z": -0.17802781876760476 + }, + { + "u": "cat_7", + "w": 0.654514275645782, + "v": "cat_1", + "y": 127.45107550739947, + "x": 94.87901525572023, + "z": 1.169027403658316 + }, + { + "u": "cat_15", + "w": 2.7361843748627708, + "v": "other", + "y": 184.8888620082486, + "x": 116.81017887336674, + "z": -0.5196787907040106 + }, + { + "u": "other", + "w": 0.7134526835944346, + "v": "other", + "y": 169.9779808978828, + "x": 108.48468655071922, + "z": 2.4985146493801524 + }, + { + "u": "cat_1", + "w": 2.0017599837707474, + "v": "other", + "y": 193.69331303548242, + "x": 161.953677145996, + "z": 0.9928254618909004 + } +]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/small-range.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/small-range.json new file mode 100644 index 0000000..c50d5df --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/small-range.json @@ -0,0 +1,26 @@ + [ + { + "date": "2014-01-01", + "value": 1 + }, + { + "date": "2014-01-02", + "value": 3 + }, + { + "date": "2014-01-03", + "value": 2 + }, + { + "date": "2014-01-04", + "value": 2 + }, + { + "date": "2014-01-05", + "value": 2 + }, + { + "date": "2014-01-06", + "value": 1 + } + ] diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/some_currency.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/some_currency.json new file mode 100644 index 0000000..f84a3ff --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/some_currency.json @@ -0,0 +1,402 @@ +[ + { + "date": "2014-02-01", + "value": 15000000 + }, + { + "date": "2014-02-02", + "value": 16487625 + }, + { + "date": "2014-02-03", + "value": 17097434 + }, + { + "date": "2014-02-04", + "value": 17694420 + }, + { + "date": "2014-02-05", + "value": 17014381 + }, + { + "date": "2014-02-06", + "value": 15578984 + }, + { + "date": "2014-02-07", + "value": 14718953 + }, + { + "date": "2014-02-08", + "value": 15020669 + }, + { + "date": "2014-02-09", + "value": 13889722 + }, + { + "date": "2014-02-10", + "value": 13979897 + }, + { + "date": "2014-02-11", + "value": 14595566 + }, + { + "date": "2014-02-12", + "value": 14123256 + }, + { + "date": "2014-02-13", + "value": 14083675 + }, + { + "date": "2014-02-14", + "value": 15068426 + }, + { + "date": "2014-02-15", + "value": 15368056 + }, + { + "date": "2014-02-16", + "value": 15277054 + }, + { + "date": "2014-02-17", + "value": 14376243 + }, + { + "date": "2014-02-18", + "value": 13058892 + }, + { + "date": "2014-02-19", + "value": 12367653 + }, + { + "date": "2014-02-20", + "value": 13184423 + }, + { + "date": "2014-02-21", + "value": 14367203 + }, + { + "date": "2014-02-22", + "value": 14656447 + }, + { + "date": "2014-02-23", + "value": 14724526 + }, + { + "date": "2014-02-24", + "value": 14938129 + }, + { + "date": "2014-02-25", + "value": 14205617 + }, + { + "date": "2014-02-26", + "value": 14596607 + }, + { + "date": "2014-02-27", + "value": 13982597 + }, + { + "date": "2014-02-28", + "value": 15107034 + }, + { + "date": "2014-03-01", + "value": 13646739 + }, + { + "date": "2014-03-02", + "value": 14214763 + }, + { + "date": "2014-03-03", + "value": 14952136 + }, + { + "date": "2014-03-04", + "value": 14643933 + }, + { + "date": "2014-03-05", + "value": 13611435 + }, + { + "date": "2014-03-06", + "value": 12569788 + }, + { + "date": "2014-03-07", + "value": 11344469 + }, + { + "date": "2014-03-08", + "value": 12687132 + }, + { + "date": "2014-03-09", + "value": 11831144 + }, + { + "date": "2014-03-10", + "value": 10480837 + }, + { + "date": "2014-03-11", + "value": 9051161 + }, + { + "date": "2014-03-12", + "value": 9964784 + }, + { + "date": "2014-03-13", + "value": 11035006 + }, + { + "date": "2014-03-14", + "value": 10081289 + }, + { + "date": "2014-03-15", + "value": 9793897 + }, + { + "date": "2014-03-16", + "value": 9177447 + }, + { + "date": "2014-03-17", + "value": 8035348 + }, + { + "date": "2014-03-18", + "value": 6770242 + }, + { + "date": "2014-03-19", + "value": 7272077 + }, + { + "date": "2014-03-20", + "value": 8216348 + }, + { + "date": "2014-03-21", + "value": 8576584 + }, + { + "date": "2014-03-22", + "value": 9421060 + }, + { + "date": "2014-03-23", + "value": 10872288 + }, + { + "date": "2014-03-24", + "value": 9537996 + }, + { + "date": "2014-03-25", + "value": 9560363 + }, + { + "date": "2014-03-26", + "value": 8182813 + }, + { + "date": "2014-03-27", + "value": 9068173 + }, + { + "date": "2014-03-28", + "value": 10390251 + }, + { + "date": "2014-03-29", + "value": 9714081 + }, + { + "date": "2014-03-30", + "value": 9994670 + }, + { + "date": "2014-03-31", + "value": 9317878 + }, + { + "date": "2014-04-01", + "value": 8209077 + }, + { + "date": "2014-04-02", + "value": 9230830 + }, + { + "date": "2014-04-03", + "value": 8978342 + }, + { + "date": "2014-04-04", + "value": 8361854 + }, + { + "date": "2014-04-05", + "value": 9345999 + }, + { + "date": "2014-04-06", + "value": 7965407 + }, + { + "date": "2014-04-07", + "value": 8909276 + }, + { + "date": "2014-04-08", + "value": 8935489 + }, + { + "date": "2014-04-09", + "value": 8634997 + }, + { + "date": "2014-04-10", + "value": 8795592 + }, + { + "date": "2014-04-11", + "value": 7513086 + }, + { + "date": "2014-04-12", + "value": 8408561 + }, + { + "date": "2014-04-13", + "value": 7780649 + }, + { + "date": "2014-04-14", + "value": 7524281 + }, + { + "date": "2014-04-15", + "value": 8498062 + }, + { + "date": "2014-04-16", + "value": 7922453 + }, + { + "date": "2014-04-17", + "value": 9304312 + }, + { + "date": "2014-04-18", + "value": 8199457 + }, + { + "date": "2014-04-19", + "value": 8926136 + }, + { + "date": "2014-04-20", + "value": 7558184 + }, + { + "date": "2014-04-21", + "value": 6417511 + }, + { + "date": "2014-04-22", + "value": 5748831 + }, + { + "date": "2014-04-23", + "value": 6503022 + }, + { + "date": "2014-04-24", + "value": 6429606 + }, + { + "date": "2014-04-25", + "value": 5057410 + }, + { + "date": "2014-04-26", + "value": 5924669 + }, + { + "date": "2014-04-27", + "value": 4728239 + }, + { + "date": "2014-04-28", + "value": 3918540 + }, + { + "date": "2014-04-29", + "value": 2821473 + }, + { + "date": "2014-04-30", + "value": 1995781 + }, + { + "date": "2014-05-01", + "value": 1123626 + }, + { + "date": "2014-05-02", + "value": 516067 + }, + { + "date": "2014-05-03", + "value": 816831 + }, + { + "date": "2014-05-04", + "value": 816831 + }, + { + "date": "2014-05-05", + "value": 816831 + }, + { + "date": "2014-05-06", + "value": 1103818 + }, + { + "date": "2014-05-07", + "value": 958188 + }, + { + "date": "2014-05-08", + "value": 592995 + }, + { + "date": "2014-05-09", + "value": 856066 + }, + { + "date": "2014-05-10", + "value": 1766761 + }, + { + "date": "2014-05-11", + "value": 1330557 + } +]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/some_percentage.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/some_percentage.json new file mode 100644 index 0000000..38e73a8 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/some_percentage.json @@ -0,0 +1,482 @@ +[[ + { + "date": "2014-01-01", + "value": 0.5 + }, + { + "date": "2014-01-02", + "value": 0.5038520341226763 + }, + { + "date": "2014-01-03", + "value": 0.501041575106488 + }, + { + "date": "2014-01-04", + "value": 0.4984465228974178 + }, + { + "date": "2014-01-05", + "value": 0.5003884470629179 + }, + { + "date": "2014-01-06", + "value": 0.5031564481343913 + }, + { + "date": "2014-01-07", + "value": 0.5078607730320586 + }, + { + "date": "2014-01-08", + "value": 0.5041111109212457 + }, + { + "date": "2014-01-09", + "value": 0.5069321806604172 + }, + { + "date": "2014-01-10", + "value": 0.5026154784253497 + }, + { + "date": "2014-01-11", + "value": 0.5065241796178874 + }, + { + "date": "2014-01-12", + "value": 0.5018867686214743 + }, + { + "date": "2014-01-13", + "value": 0.5043001746033196 + }, + { + "date": "2014-01-14", + "value": 0.504404210966798 + }, + { + "date": "2014-01-15", + "value": 0.5075142056997484 + }, + { + "date": "2014-01-16", + "value": 0.5040481679854495 + }, + { + "date": "2014-01-17", + "value": 0.5079346812032152 + }, + { + "date": "2014-01-18", + "value": 0.5049685486383059 + }, + { + "date": "2014-01-19", + "value": 0.501658667449764 + }, + { + "date": "2014-01-20", + "value": 0.5062171996366631 + }, + { + "date": "2014-01-21", + "value": 0.5099836766672865 + }, + { + "date": "2014-01-22", + "value": 0.5142091385990467 + }, + { + "date": "2014-01-23", + "value": 0.51791294997185 + }, + { + "date": "2014-01-24", + "value": 0.515437378755626 + }, + { + "date": "2014-01-25", + "value": 0.5108648416664958 + }, + { + "date": "2014-01-26", + "value": 0.5066707579977331 + }, + { + "date": "2014-01-27", + "value": 0.5082993886500073 + }, + { + "date": "2014-01-28", + "value": 0.508072158918364 + }, + { + "date": "2014-01-29", + "value": 0.5118157526668022 + }, + { + "date": "2014-01-30", + "value": 0.5086344978955772 + }, + { + "date": "2014-01-31", + "value": 0.5044280885188968 + }, + { + "date": "2014-02-01", + "value": 0.5030791435263089 + }, + { + "date": "2014-02-02", + "value": 0.502718430201384 + }, + { + "date": "2014-02-03", + "value": 0.5049505139164281 + }, + { + "date": "2014-02-04", + "value": 0.5004045433833447 + }, + { + "date": "2014-02-05", + "value": 0.49766880474999803 + }, + { + "date": "2014-02-06", + "value": 0.4974778854176423 + }, + { + "date": "2014-02-07", + "value": 0.4985548716459768 + }, + { + "date": "2014-02-08", + "value": 0.5023737776839208 + }, + { + "date": "2014-02-09", + "value": 0.504603230338525 + }, + { + "date": "2014-02-10", + "value": 0.504432332684573 + }, + { + "date": "2014-02-11", + "value": 0.5037437093637779 + }, + { + "date": "2014-02-12", + "value": 0.5086112226114583 + }, + { + "date": "2014-02-13", + "value": 0.5053845731032296 + }, + { + "date": "2014-02-14", + "value": 0.5015637131811963 + }, + { + "date": "2014-02-15", + "value": 0.5021784674076278 + }, + { + "date": "2014-02-16", + "value": 0.5063559353265494 + }, + { + "date": "2014-02-17", + "value": 0.5061080613055542 + }, + { + "date": "2014-02-18", + "value": 0.5088703428084825 + }, + { + "date": "2014-02-19", + "value": 0.5096209075909987 + }, + { + "date": "2014-02-20", + "value": 0.5128114425067571 + }, + { + "date": "2014-02-21", + "value": 0.5166249796532173 + }, + { + "date": "2014-02-22", + "value": 0.5139670211970626 + }, + { + "date": "2014-02-23", + "value": 0.5142364616064596 + }, + { + "date": "2014-02-24", + "value": 0.509528966467216 + }, + { + "date": "2014-02-25", + "value": 0.5061758737477107 + }, + { + "date": "2014-02-26", + "value": 0.5107159178338729 + }, + { + "date": "2014-02-27", + "value": 0.508788445629648 + }, + { + "date": "2014-02-28", + "value": 0.5104817721021337 + }, + { + "date": "2014-03-01", + "value": 0.5078546349712474 + }, + { + "date": "2014-03-02", + "value": 0.5034753798731827 + }, + { + "date": "2014-03-03", + "value": 0.5007772580143368 + }, + { + "date": "2014-03-04", + "value": 0.5038655942824244 + }, + { + "date": "2014-03-05", + "value": 0.5005272030781814 + }, + { + "date": "2014-03-06", + "value": 0.5051827393254152 + }, + { + "date": "2014-03-07", + "value": 0.5005534190016493 + }, + { + "date": "2014-03-08", + "value": 0.5018578155863522 + }, + { + "date": "2014-03-09", + "value": 0.5040739797833739 + }, + { + "date": "2014-03-10", + "value": 0.501067869219016 + }, + { + "date": "2014-03-11", + "value": 0.49814427475390644 + }, + { + "date": "2014-03-12", + "value": 0.4963610004168396 + }, + { + "date": "2014-03-13", + "value": 0.4930795253820748 + }, + { + "date": "2014-03-14", + "value": 0.49079904429566784 + }, + { + "date": "2014-03-15", + "value": 0.48809922877941647 + }, + { + "date": "2014-03-16", + "value": 0.4877332115117854 + }, + { + "date": "2014-03-17", + "value": 0.48411898100901407 + }, + { + "date": "2014-03-18", + "value": 0.4845248458179287 + }, + { + "date": "2014-03-19", + "value": 0.4831193157053157 + }, + { + "date": "2014-03-20", + "value": 0.4819550362933503 + }, + { + "date": "2014-03-21", + "value": 0.4786897823467451 + }, + { + "date": "2014-03-22", + "value": 0.4761045288827436 + }, + { + "date": "2014-03-23", + "value": 0.478630898886419 + }, + { + "date": "2014-03-24", + "value": 0.4790840508114705 + }, + { + "date": "2014-03-25", + "value": 0.4794318346558028 + }, + { + "date": "2014-03-26", + "value": 0.4748848817015309 + }, + { + "date": "2014-03-27", + "value": 0.47815004291090735 + }, + { + "date": "2014-03-28", + "value": 0.47980437734217457 + }, + { + "date": "2014-03-29", + "value": 0.4817800142504527 + }, + { + "date": "2014-03-30", + "value": 0.4768033811913309 + }, + { + "date": "2014-03-31", + "value": 0.47223012774930034 + }, + { + "date": "2014-04-01", + "value": 0.467614878310697 + }, + { + "date": "2014-04-02", + "value": 0.4690382217852809 + }, + { + "date": "2014-04-03", + "value": 0.4707312671717389 + }, + { + "date": "2014-04-04", + "value": 0.46874599002888123 + }, + { + "date": "2014-04-05", + "value": 0.4695232950365088 + }, + { + "date": "2014-04-06", + "value": 0.46812382634056693 + }, + { + "date": "2014-04-07", + "value": 0.4638152377393435 + }, + { + "date": "2014-04-08", + "value": 0.46846294509572217 + }, + { + "date": "2014-04-09", + "value": 0.46537117781745313 + }, + { + "date": "2014-04-10", + "value": 0.46667486617647175 + }, + { + "date": "2014-04-11", + "value": 0.4700567595482735 + }, + { + "date": "2014-04-12", + "value": 0.4722401087279864 + }, + { + "date": "2014-04-13", + "value": 0.4754113422480582 + }, + { + "date": "2014-04-14", + "value": 0.47237758499686866 + }, + { + "date": "2014-04-15", + "value": 0.476321568527422 + }, + { + "date": "2014-04-16", + "value": 0.4782068702675784 + }, + { + "date": "2014-04-17", + "value": 0.4745382598882709 + }, + { + "date": "2014-04-18", + "value": 0.4778251241650657 + }, + { + "date": "2014-04-19", + "value": 0.48001845981032665 + }, + { + "date": "2014-04-20", + "value": 0.47797297492254276 + }, + { + "date": "2014-04-21", + "value": 0.473354228995828 + }, + { + "date": "2014-04-22", + "value": 0.470896702947272 + }, + { + "date": "2014-04-23", + "value": 0.4745305949746629 + }, + { + "date": "2014-04-24", + "value": 0.47596513680604596 + }, + { + "date": "2014-04-25", + "value": 0.4731953889995623 + }, + { + "date": "2014-04-26", + "value": 0.4737532034837451 + }, + { + "date": "2014-04-27", + "value": 0.4710481041669472 + }, + { + "date": "2014-04-28", + "value": 0.46605544080317923 + }, + { + "date": "2014-04-29", + "value": 0.4631336037812991 + }, + { + "date": "2014-04-30", + "value": 0.46305963624370283 + } +]]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/split_by.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/split_by.json new file mode 100644 index 0000000..3f06d9d --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/split_by.json @@ -0,0 +1,548 @@ + [ + { + "date": "2014-01-01", + "release": 110000000, + "beta": 4200000, + "alpha": 2600000 + }, + { + "date": "2014-01-02", + "release": 110379978, + "beta": 5379978, + "alpha": 2779978 + }, + { + "date": "2014-01-03", + "release": 110493749, + "beta": 5493749, + "alpha": 2893749 + }, + { + "date": "2014-01-04", + "release": 110785250, + "beta": 5785250, + "alpha": 2485250 + }, + { + "date": "2014-01-05", + "release": 113901904, + "beta": 13901904, + "alpha": 23901904 + }, + { + "date": "2014-01-06", + "release": 111576838, + "beta": 6576838, + "alpha": 5576838 + }, + { + "date": "2014-01-07", + "release": 114413854, + "beta": 7413854, + "alpha": 6413854 + }, + { + "date": "2014-01-08", + "release": 115177211, + "beta": 8177211, + "alpha": 5977211 + }, + { + "date": "2014-01-09", + "release": 116622100, + "beta": 9622100, + "alpha": 9122100 + }, + { + "date": "2014-01-10", + "release": 117381072, + "beta": 11381072, + "alpha": 11381072 + }, + { + "date": "2014-01-11", + "release": 118802310, + "beta": 10802310, + "alpha": 8802310 + }, + { + "date": "2014-01-12", + "release": 115531790, + "beta": 8531790, + "alpha": 8131790 + }, + { + "date": "2014-01-13", + "release": 115748881, + "beta": 8748881, + "alpha": 8848881 + }, + { + "date": "2014-01-14", + "release": 118706437, + "beta": 10706437, + "alpha": 10006437 + }, + { + "date": "2014-01-15", + "release": 119752685, + "beta": 12752685, + "alpha": 12752685 + }, + { + "date": "2014-01-16", + "release": 121016418, + "beta": 13016418, + "alpha": 13016418 + }, + { + "date": "2014-01-17", + "release": 125622924, + "beta": 17622924, + "alpha": 17622924 + }, + { + "date": "2014-01-18", + "release": 125337480, + "beta": 17337480, + "alpha": 12337480 + }, + { + "date": "2014-01-19", + "release": 122258882, + "beta": 14258882, + "alpha": 11218882 + }, + { + "date": "2014-01-20", + "release": 123829538, + "beta": 15829538, + "alpha": 15129538 + }, + { + "date": "2014-01-21", + "release": 124245689, + "beta": 16245689, + "alpha": 15215689 + }, + { + "date": "2014-01-22", + "release": 126429711, + "beta": 18429711, + "alpha": 18429711 + }, + { + "date": "2014-01-23", + "release": 126259017, + "beta": 18259017, + "alpha": 18259017 + }, + { + "date": "2014-01-24", + "release": 125396183, + "beta": 17396183, + "alpha": 12396183 + }, + { + "date": "2014-01-25", + "release": 123107346, + "beta": 15107346, + "alpha": 15107346 + }, + { + "date": "2014-01-26", + "release": 128659852, + "beta": 20659852, + "alpha": 10659852 + }, + { + "date": "2014-01-27", + "release": 125270783, + "beta": 17270783, + "alpha": 17270783 + }, + { + "date": "2014-01-28", + "release": 126270783, + "beta": 18270783, + "alpha": 18270783 + }, + { + "date": "2014-01-29", + "release": 127270783, + "beta": 19270783, + "alpha": 11270783 + }, + { + "date": "2014-01-30", + "release": 128270783, + "beta": 20270783, + "alpha": 20270783 + }, + { + "date": "2014-01-31", + "release": 129270783, + "beta": 21270783, + "alpha": 21270783 + }, + { + "date": "2014-02-01", + "release": 130270783, + "beta": 22270783, + "alpha": 22270783 + }, + { + "date": "2014-02-02", + "release": 131270783, + "beta": 23270783, + "alpha": 23270783 + }, + { + "date": "2014-02-03", + "release": 132270783, + "beta": 24270783, + "alpha": 24270783 + }, + { + "date": "2014-02-04", + "release": 133270783, + "beta": 25270783, + "alpha": 23270783 + }, + { + "date": "2014-02-05", + "release": 128270783, + "beta": 20270783, + "alpha": 20270783 + }, + { + "date": "2014-02-06", + "release": 127270783, + "beta": 19270783, + "alpha": 19270783 + }, + { + "date": "2014-02-07", + "release": 135270783, + "beta": 27270783, + "alpha": 27270783 + }, + { + "date": "2014-02-08", + "release": 134270783, + "beta": 26270783, + "alpha": 26270783 + }, + { + "date": "2014-02-09", + "release": 128270783, + "beta": 20270783, + "alpha": 20270783 + }, + { + "date": "2014-02-10", + "release": 135270783, + "beta": 27270783, + "alpha": 24270783 + }, + { + "date": "2014-02-11", + "release": 136270783, + "beta": 28270783, + "alpha": 28270783 + }, + { + "date": "2014-02-12", + "release": 134127078, + "beta": 26127078, + "alpha": 26127078 + }, + { + "date": "2014-02-13", + "release": 133124078, + "beta": 25124078, + "alpha": 25124078 + }, + { + "date": "2014-02-14", + "release": 136227078, + "beta": 28227078, + "alpha": 26127078 + }, + { + "date": "2014-02-15", + "release": 137827078, + "beta": 29827078, + "alpha": 29827078 + }, + { + "date": "2014-02-16", + "release": 136427073, + "beta": 28427073, + "alpha": 28427073 + }, + { + "date": "2014-02-17", + "release": 137570783, + "beta": 29570783, + "alpha": 29570783 + }, + { + "date": "2014-02-18", + "release": 138627073, + "beta": 30627073, + "alpha": 30627073 + }, + { + "date": "2014-02-19", + "release": 137727078, + "beta": 29727078, + "alpha": 29727078 + }, + { + "date": "2014-02-20", + "release": 138827073, + "beta": 30827073, + "alpha": 30827073 + }, + { + "date": "2014-02-21", + "release": 140927078, + "beta": 32927078, + "alpha": 32927078 + }, + { + "date": "2014-02-22", + "release": 141027078, + "beta": 33027078, + "alpha": 40027078 + }, + { + "date": "2014-02-23", + "release": 142127073, + "beta": 34127073, + "alpha": 34127073 + }, + { + "date": "2014-02-24", + "release": 143220783, + "beta": 35220783, + "alpha": 35220783 + }, + { + "date": "2014-02-25", + "release": 144327078, + "beta": 36327078, + "alpha": 36327078 + }, + { + "date": "2014-02-26", + "release": 140427078, + "beta": 32427078, + "alpha": 32427078 + }, + { + "date": "2014-02-27", + "release": 141027078, + "beta": 33027078, + "alpha": 33027078 + }, + { + "date": "2014-02-28", + "release": 145627078, + "beta": 37627078, + "alpha": 37627078 + }, + { + "date": "2014-03-01", + "release": 144727078, + "beta": 36727078, + "alpha": 36727078 + }, + { + "date": "2014-03-02", + "release": 144227078, + "beta": 36227078, + "alpha": 36227078 + }, + { + "date": "2014-03-03", + "release": 145227078, + "beta": 37227078, + "alpha": 37227078 + }, + { + "date": "2014-03-04", + "release": 146027078, + "beta": 38027078, + "alpha": 38027078 + }, + { + "date": "2014-03-05", + "release": 146927078, + "beta": 38927078, + "alpha": 38927078 + }, + { + "date": "2014-03-06", + "release": 147027078, + "beta": 39027078, + "alpha": 39027078 + }, + { + "date": "2014-03-07", + "release": 146227078, + "beta": 38227078, + "alpha": 32427078 + }, + { + "date": "2014-03-08", + "release": 147027078, + "beta": 39027078, + "alpha": 39027078 + }, + { + "date": "2014-03-09", + "release": 148027078, + "beta": 40027078, + "alpha": 40027078 + }, + { + "date": "2014-03-10", + "release": 147027078, + "beta": 39027078, + "alpha": 39027078 + }, + { + "date": "2014-03-11", + "release": 147027078, + "beta": 39027078, + "alpha": 37027078 + }, + { + "date": "2014-03-12", + "release": 148017078, + "beta": 40017078, + "alpha": 38817078 + }, + { + "date": "2014-03-13", + "release": 148077078, + "beta": 40077078, + "alpha": 40077078 + }, + { + "date": "2014-03-14", + "release": 148087078, + "beta": 40087078, + "alpha": 40087078 + }, + { + "date": "2014-03-15", + "release": 148017078, + "beta": 40017078, + "alpha": 40017078 + }, + { + "date": "2014-03-16", + "release": 148047078, + "beta": 40047078, + "alpha": 40047078 + }, + { + "date": "2014-03-17", + "release": 148067078, + "beta": 40067078, + "alpha": 40067078 + }, + { + "date": "2014-03-18", + "release": 148077078, + "beta": 40077078, + "alpha": 39977078 + }, + { + "date": "2014-03-19", + "release": 148027074, + "beta": 40027074, + "alpha": 40027074 + }, + { + "date": "2014-03-20", + "release": 148927079, + "beta": 40927079, + "alpha": 40927079 + }, + { + "date": "2014-03-21", + "release": 148727071, + "beta": 40727071, + "alpha": 40727071 + }, + { + "date": "2014-03-22", + "release": 148127072, + "beta": 40127072, + "alpha": 37127072 + }, + { + "date": "2014-03-23", + "release": 148527072, + "beta": 40527072, + "alpha": 40527072 + }, + { + "date": "2014-03-24", + "release": 148627027, + "beta": 40627027, + "alpha": 40627027 + }, + { + "date": "2014-03-25", + "release": 148027040, + "beta": 40027040, + "alpha": 40027040 + }, + { + "date": "2014-03-26", + "release": 148027043, + "beta": 40027043, + "alpha": 40027043 + }, + { + "date": "2014-03-27", + "release": 148057022, + "beta": 40057022, + "alpha": 40057022 + }, + { + "date": "2014-03-28", + "release": 149057022, + "beta": 41057022, + "alpha": 40057022 + }, + { + "date": "2014-03-29", + "release": 150057022, + "beta": 42057022, + "alpha": 42057022 + }, + { + "date": "2014-03-30", + "release": 151057022, + "beta": 43057022, + "alpha": 43057022 + }, + { + "date": "2014-03-31", + "release": 152057022, + "beta": 44057022, + "alpha": 44057022 + }, + { + "date": "2014-04-01", + "release": 152056143, + "beta": 45056143, + "alpha": 42056143 + } + ]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/ufo-sightings.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/ufo-sightings.json new file mode 100644 index 0000000..26caedd --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/ufo-sightings.json @@ -0,0 +1,266 @@ +[ + { + "year": "1945", + "sightings": 6 + }, + { + "year": "1946", + "sightings": 8 + }, + { + "year": "1947", + "sightings": 34 + }, + { + "year": "1948", + "sightings": 8 + }, + { + "year": "1949", + "sightings": 15 + }, + { + "year": "1950", + "sightings": 25 + }, + { + "year": "1951", + "sightings": 20 + }, + { + "year": "1952", + "sightings": 48 + }, + { + "year": "1953", + "sightings": 34 + }, + { + "year": "1954", + "sightings": 50 + }, + { + "year": "1955", + "sightings": 31 + }, + { + "year": "1956", + "sightings": 38 + }, + { + "year": "1957", + "sightings": 67 + }, + { + "year": "1958", + "sightings": 40 + }, + { + "year": "1959", + "sightings": 47 + }, + { + "year": "1960", + "sightings": 64 + }, + { + "year": "1961", + "sightings": 39 + }, + { + "year": "1962", + "sightings": 55 + }, + { + "year": "1963", + "sightings": 75 + }, + { + "year": "1964", + "sightings": 77 + }, + { + "year": "1965", + "sightings": 167 + }, + { + "year": "1966", + "sightings": 169 + }, + { + "year": "1967", + "sightings": 178 + }, + { + "year": "1968", + "sightings": 183 + }, + { + "year": "1969", + "sightings": 138 + }, + { + "year": "1970", + "sightings": 126 + }, + { + "year": "1971", + "sightings": 110 + }, + { + "year": "1972", + "sightings": 146 + }, + { + "year": "1973", + "sightings": 209 + }, + { + "year": "1974", + "sightings": 241 + }, + { + "year": "1975", + "sightings": 279 + }, + { + "year": "1976", + "sightings": 246 + }, + { + "year": "1977", + "sightings": 239 + }, + { + "year": "1978", + "sightings": 301 + }, + { + "year": "1979", + "sightings": 221 + }, + { + "year": "1980", + "sightings": 211 + }, + { + "year": "1981", + "sightings": 146 + }, + { + "year": "1982", + "sightings": 182 + }, + { + "year": "1983", + "sightings": 132 + }, + { + "year": "1984", + "sightings": 172 + }, + { + "year": "1985", + "sightings": 192 + }, + { + "year": "1986", + "sightings": 173 + }, + { + "year": "1987", + "sightings": 193 + }, + { + "year": "1988", + "sightings": 203 + }, + { + "year": "1989", + "sightings": 220 + }, + { + "year": "1990", + "sightings": 217 + }, + { + "year": "1991", + "sightings": 210 + }, + { + "year": "1992", + "sightings": 228 + }, + { + "year": "1993", + "sightings": 285 + }, + { + "year": "1994", + "sightings": 381 + }, + { + "year": "1995", + "sightings": 1336 + }, + { + "year": "1996", + "sightings": 862 + }, + { + "year": "1997", + "sightings": 1248 + }, + { + "year": "1998", + "sightings": 1812 + }, + { + "year": "1999", + "sightings": 2906 + }, + { + "year": "2000", + "sightings": 2780 + }, + { + "year": "2001", + "sightings": 3105 + }, + { + "year": "2002", + "sightings": 3176 + }, + { + "year": "2003", + "sightings": 3896 + }, + { + "year": "2004", + "sightings": 4208 + }, + { + "year": "2005", + "sightings": 3996 + }, + { + "year": "2006", + "sightings": 3590 + }, + { + "year": "2007", + "sightings": 4195 + }, + { + "year": "2008", + "sightings": 4705 + }, + { + "year": "2009", + "sightings": 4297 + }, + { + "year": "2010", + "sightings": 2531 + } +]
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/ufo_dates.csv b/priv/static/metrics-graphics-3.0-alpha3/examples/data/ufo_dates.csv new file mode 100644 index 0000000..b7fe149 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/ufo_dates.csv @@ -0,0 +1,22841 @@ +value +30 +0 +203 +0 +30 +0 +0 +116 +180 +57 +0 +0 +2 +75 +0 +0 +21 +25 +2 +0 +29 +0 +101 +27 +43 +0 +770 +0 +24 +0 +0 +39 +0 +2 +24 +21 +25 +1 +27 +1866 +113 +0 +1 +1 +876 +1 +0 +0 +68 +287 +1 +257 +31 +299 +176 +21 +51 +51 +51 +25 +20 +91 +24 +0 +0 +48 +279 +70 +52 +22 +100 +50 +80 +1 +10 +0 +3059 +3059 +3059 +4 +74 +26 +383 +0 +3227 +32 +315 +0 +0 +28 +34 +1 +35 +84 +20 +0 +94 +21 +730 +203 +3 +30 +5 +0 +1 +1013 +84 +8 +2056 +7 +75 +291 +291 +291 +570 +4582 +4582 +4582 +148 +415 +139 +30 +0 +6 +40 +237 +3318 +3318 +3318 +253 +106 +162 +356 +121 +1172 +41 +525 +320 +320 +320 +1632 +1632 +1632 +1437 +1267 +64 +149 +67 +0 +29 +33 +115 +482 +1 +434 +65 +219 +0 +142 +157 +13 +0 +27 +24 +1464 +1464 +1464 +56 +422 +1 +775 +367 +90 +189 +0 +1636 +631 +3261 +3261 +3261 +137 +20 +30 +1268 +1268 +1268 +115 +153 +193 +3 +20 +0 +1 +0 +162 +726 +16 +2069 +53 +786 +552 +46 +148 +28 +205 +3 +0 +0 +98 +4006 +4006 +4006 +37 +2 +49 +25 +211 +135 +541 +549 +56 +184 +1398 +1398 +1398 +2602 +2602 +2602 +178 +331 +49 +598 +2219 +28 +8 +65 +3653 +3653 +3653 +2552 +2552 +2552 +31 +1233 +28 +69 +126 +585 +22 +89 +35 +97 +36 +32 +430 +4241 +4241 +4241 +4513 +4513 +4513 +132 +701 +21 +493 +119 +784 +346 +149 +0 +43 +101 +20 +28 +398 +23 +980 +343 +51 +1183 +58 +61 +358 +977 +938 +1 +22 +567 +622 +2341 +1166 +194 +1044 +292 +942 +754 +39 +2 +642 +99 +35 +23 +140 +2534 +280 +3228 +3228 +3228 +36 +40 +37 +1424 +40 +309 +36 +48 +87 +1 +627 +155 +155 +155 +326 +178 +481 +1321 +1321 +1321 +2310 +2310 +2310 +32 +3773 +3773 +3773 +63 +729 +406 +369 +119 +119 +119 +4193 +4193 +4193 +799 +677 +912 +2197 +2197 +2197 +23 +56 +1203 +1203 +1203 +1030 +224 +363 +1746 +1746 +1746 +23 +417 +2340 +4634 +4634 +4634 +610 +350 +320 +3 +115 +3 +23 +202 +47 +4001 +4001 +4001 +0 +0 +211 +211 +211 +0 +2 +133 +1588 +1588 +1588 +53 +34 +4 +12 +21 +238 +144 +144 +144 +11 +74 +280 +107 +24 +343 +68 +46 +38 +339 +1922 +0 +1947 +1947 +1947 +3187 +29 +61 +55 +47 +104 +179 +1446 +1 +238 +669 +3 +79 +61 +5 +581 +1112 +24 +52 +316 +203 +39 +226 +106 +106 +106 +0 +203 +137 +4411 +4411 +4411 +120 +36 +722 +27 +681 +105 +135 +21 +215 +0 +69 +81 +65 +4 +104 +792 +2327 +74 +20 +30 +42 +0 +4300 +4300 +4300 +92 +113 +28 +392 +20 +37 +115 +31 +607 +241 +169 +104 +27 +84 +403 +2205 +3447 +3447 +3447 +213 +21 +36 +989 +888 +888 +888 +0 +206 +14 +98 +98 +98 +325 +87 +172 +299 +1193 +208 +2862 +203 +727 +727 +727 +409 +3770 +3770 +3770 +56 +87 +582 +582 +582 +614 +3067 +3067 +3067 +252 +2272 +2272 +2272 +3911 +21 +451 +894 +49 +268 +268 +268 +0 +151 +212 +575 +23 +1063 +2 +21 +159 +440 +979 +3183 +3183 +3183 +1805 +217 +280 +90 +1110 +2480 +444 +1382 +2523 +2523 +2523 +22 +131 +35 +125 +388 +3502 +3502 +3502 +30 +26 +64 +1830 +1830 +1830 +1268 +3604 +3604 +3604 +967 +41 +483 +46 +972 +84 +21 +906 +0 +0 +3 +576 +365 +2885 +2885 +2885 +365 +1 +236 +634 +99 +477 +49 +114 +34 +1381 +702 +395 +775 +255 +4660 +4660 +4660 +116 +803 +289 +2432 +2432 +2432 +148 +28 +1206 +98 +67 +2639 +185 +1205 +1511 +1463 +24 +1290 +450 +1 +1370 +3315 +2558 +181 +0 +1380 +1380 +1380 +174 +2507 +2507 +2507 +29 +286 +525 +1732 +70 +99 +8 +21 +95 +2163 +664 +664 +664 +21 +33 +56 +3138 +28 +1 +1361 +37 +0 +36 +33 +38 +260 +90 +0 +582 +972 +302 +4854 +4854 +4854 +7 +485 +53 +4636 +4636 +4636 +55 +89 +255 +186 +93 +22 +2032 +23 +63 +3524 +3524 +3524 +2596 +2596 +2596 +2843 +4589 +4589 +4589 +1172 +367 +26 +22 +350 +15 +278 +122 +1202 +185 +0 +1593 +1593 +1593 +32 +39 +916 +23 +577 +526 +1231 +36 +34 +502 +52 +0 +2084 +2084 +2084 +853 +853 +853 +21 +82 +195 +1592 +1592 +1592 +22 +4372 +4372 +4372 +1 +9 +904 +904 +904 +474 +1135 +100 +1490 +1284 +25 +2415 +2415 +2415 +44 +140 +352 +220 +345 +48 +25 +147 +82 +360 +1487 +1487 +1487 +1601 +1601 +1601 +20 +1536 +29 +410 +1077 +0 +161 +161 +161 +3949 +3949 +3949 +1139 +257 +29 +44 +62 +62 +62 +582 +582 +582 +130 +1076 +320 +1 +61 +214 +2782 +64 +41 +283 +30 +520 +454 +2454 +2454 +2454 +388 +7 +950 +45 +80 +190 +5 +189 +1933 +1933 +1933 +26 +2 +470 +73 +1513 +434 +1410 +1410 +1410 +559 +3363 +3363 +3363 +0 +441 +525 +1070 +0 +1834 +1506 +41 +32 +404 +0 +808 +166 +53 +2 +834 +0 +136 +24 +404 +1056 +1 +3284 +3284 +3284 +4662 +4662 +4662 +1009 +1009 +1009 +40 +1326 +25 +1542 +195 +49 +31 +45 +21 +1436 +25 +1476 +1476 +1476 +1194 +49 +2002 +51 +2 +3734 +3734 +3734 +455 +1209 +243 +48 +34 +393 +1160 +1160 +1160 +1020 +368 +34 +1 +31 +47 +103 +109 +540 +3212 +3212 +3212 +460 +1958 +1958 +1958 +30 +1121 +1959 +1959 +1959 +411 +93 +203 +1425 +190 +245 +2088 +280 +280 +280 +2290 +94 +4755 +4755 +4755 +1 +25 +3512 +3512 +3512 +53 +59 +1887 +1887 +1887 +33 +45 +55 +24 +1872 +741 +1405 +1405 +1405 +1098 +85 +31 +92 +94 +148 +397 +393 +445 +2476 +56 +1182 +711 +789 +0 +48 +264 +104 +839 +780 +780 +780 +360 +533 +0 +27 +2625 +1851 +697 +53 +1342 +4443 +4443 +4443 +23 +1 +112 +3118 +1535 +4705 +4705 +4705 +1 +3 +397 +679 +1489 +202 +202 +202 +72 +1199 +1275 +1259 +2028 +2028 +2028 +32 +360 +1076 +1076 +1076 +1042 +1776 +155 +63 +39 +3698 +563 +146 +40 +125 +1218 +3873 +4683 +4683 +4683 +68 +811 +79 +22 +514 +31 +362 +153 +714 +1188 +1188 +1188 +501 +4037 +4037 +4037 +900 +2653 +2653 +2653 +1557 +1557 +1557 +2174 +29 +0 +32 +3332 +3332 +3332 +32 +31 +349 +2 +307 +349 +828 +4 +764 +27 +4044 +1 +14 +3327 +3327 +3327 +480 +480 +480 +171 +99 +22 +4321 +4321 +4321 +35 +101 +20 +68 +101 +59 +0 +489 +27 +55 +43 +1648 +1648 +1648 +1 +4 +1769 +68 +1273 +646 +639 +1557 +452 +216 +1070 +1229 +1229 +1229 +701 +142 +3494 +2 +149 +365 +608 +370 +30 +0 +2388 +2388 +2388 +27 +314 +603 +24 +333 +333 +333 +2736 +2736 +2736 +365 +417 +2808 +2808 +2808 +2201 +3341 +3341 +3341 +1327 +42 +366 +366 +366 +249 +23 +56 +1258 +486 +93 +210 +2581 +2581 +2581 +810 +49 +251 +251 +251 +205 +1100 +135 +75 +155 +160 +82 +960 +2037 +2110 +75 +3421 +3421 +3421 +158 +37 +873 +70 +674 +4606 +4606 +4606 +192 +4435 +4435 +4435 +2251 +1 +848 +220 +0 +155 +768 +768 +768 +54 +31 +1460 +1460 +1460 +168 +102 +342 +3147 +3147 +3147 +128 +37 +1856 +161 +614 +520 +27 +480 +54 +4166 +838 +92 +512 +219 +219 +219 +661 +75 +220 +812 +27 +1976 +1899 +41 +172 +4975 +4975 +4975 +4709 +4709 +4709 +2734 +2734 +2734 +3147 +3147 +3147 +505 +231 +231 +231 +44 +31 +271 +62 +862 +276 +36 +18 +228 +497 +4279 +4279 +4279 +606 +1 +29 +496 +152 +223 +63 +1196 +156 +78 +221 +368 +1954 +1954 +1954 +271 +4 +101 +2336 +398 +262 +2297 +2060 +4252 +2905 +2905 +2905 +35 +598 +1417 +175 +1280 +1280 +1280 +55 +1176 +2453 +1921 +1921 +1921 +48 +1729 +1397 +71 +0 +1748 +2 +223 +336 +1603 +1332 +28 +90 +1545 +2630 +1347 +120 +3668 +3668 +3668 +0 +477 +2780 +2399 +2399 +2399 +2497 +46 +1250 +282 +26 +28 +2064 +7 +58 +4926 +4926 +4926 +160 +392 +281 +1006 +1025 +133 +4877 +4877 +4877 +185 +139 +399 +276 +4065 +4065 +4065 +4840 +4840 +4840 +1948 +25 +184 +184 +184 +154 +1636 +30 +71 +497 +698 +698 +698 +1813 +21 +3 +135 +47 +729 +207 +804 +31 +5 +252 +32 +657 +2 +1342 +497 +166 +522 +102 +1657 +1657 +1657 +157 +1282 +1282 +1282 +365 +365 +365 +3726 +3726 +3726 +263 +84 +170 +562 +27 +43 +2045 +2045 +2045 +3 +325 +144 +4646 +4646 +4646 +1611 +82 +1601 +1601 +1601 +1656 +1656 +1656 +259 +963 +900 +1107 +1225 +543 +56 +0 +876 +2235 +2235 +2235 +218 +378 +378 +378 +4806 +4806 +4806 +276 +53 +176 +2050 +3659 +1167 +804 +117 +3113 +3113 +3113 +130 +1118 +133 +48 +2 +1 +206 +55 +55 +55 +2049 +366 +558 +64 +1729 +85 +95 +608 +91 +28 +105 +153 +342 +15 +0 +438 +20 +644 +1750 +276 +3458 +3458 +3458 +89 +1274 +551 +971 +294 +302 +1000 +172 +107 +21 +23 +1 +371 +104 +2222 +2 +27 +4976 +4976 +4976 +1663 +1663 +1663 +3121 +3121 +3121 +296 +672 +754 +83 +38 +710 +4678 +4678 +4678 +2 +2128 +2128 +2128 +48 +198 +489 +8 +798 +580 +0 +34 +4840 +4840 +4840 +44 +1419 +2838 +2838 +2838 +22 +463 +4657 +4657 +4657 +1651 +310 +0 +35 +31 +3618 +3618 +3618 +3795 +3795 +3795 +1498 +2 +1377 +347 +147 +32 +114 +303 +52 +510 +510 +510 +30 +35 +683 +0 +4983 +4983 +4983 +579 +42 +1162 +3189 +3189 +3189 +165 +1 +2872 +2872 +2872 +47 +1355 +1092 +2108 +2108 +2108 +4373 +15 +322 +1053 +213 +331 +344 +23 +1477 +1477 +1477 +2190 +2190 +2190 +114 +62 +650 +41 +1439 +1439 +1439 +30 +595 +1882 +1186 +25 +334 +4677 +4677 +4677 +91 +4091 +528 +1756 +1756 +1756 +45 +40 +316 +0 +279 +1634 +673 +61 +1517 +66 +407 +106 +251 +22 +3731 +3731 +3731 +218 +533 +85 +1050 +1050 +1050 +458 +1435 +363 +94 +1431 +126 +930 +3655 +1461 +1 +755 +231 +36 +271 +2843 +92 +48 +0 +603 +30 +320 +131 +24 +1369 +30 +1390 +308 +1 +2823 +2823 +2823 +3691 +3691 +3691 +1934 +373 +548 +726 +50 +1406 +783 +304 +353 +35 +670 +365 +344 +628 +1885 +1885 +1885 +30 +60 +34 +34 +2550 +691 +3172 +3172 +3172 +35 +978 +4810 +4810 +4810 +127 +7 +4430 +4430 +4430 +2173 +378 +340 +719 +26 +642 +646 +4585 +4585 +4585 +549 +3227 +3227 +3227 +50 +378 +67 +2 +66 +89 +308 +964 +467 +4986 +4986 +4986 +4343 +4343 +4343 +789 +139 +32 +18 +172 +954 +44 +3285 +3285 +3285 +2 +1485 +24 +885 +81 +12 +2364 +292 +415 +1376 +4366 +4366 +4366 +29 +902 +140 +85 +1208 +0 +522 +26 +1847 +622 +701 +701 +701 +1072 +1072 +1072 +59 +25 +190 +921 +55 +77 +53 +4387 +4387 +4387 +2173 +2173 +2173 +749 +63 +0 +703 +703 +703 +143 +125 +181 +15 +190 +715 +4029 +4029 +4029 +27 +2042 +2042 +2042 +2221 +195 +253 +605 +96 +62 +48 +47 +36 +2387 +2387 +2387 +22 +192 +38 +91 +1721 +396 +396 +396 +42 +374 +64 +85 +584 +25 +1944 +46 +1052 +1052 +1052 +340 +22 +33 +104 +0 +852 +21 +419 +2292 +2292 +2292 +57 +64 +1815 +312 +1843 +1843 +1843 +320 +79 +269 +369 +369 +369 +78 +3141 +3141 +3141 +44 +64 +4418 +30 +92 +175 +97 +4724 +4724 +4724 +828 +3451 +415 +4148 +4148 +4148 +46 +224 +0 +2198 +2198 +2198 +1212 +1212 +1212 +31 +1129 +161 +1908 +1908 +1908 +714 +322 +42 +3816 +3816 +3816 +33 +249 +249 +249 +3 +22 +48 +1641 +3635 +3788 +3788 +3788 +215 +592 +1660 +1471 +447 +2 +0 +1 +665 +1202 +615 +1575 +277 +277 +277 +38 +397 +30 +1166 +1118 +116 +76 +52 +946 +21 +57 +153 +55 +41 +1900 +31 +2964 +2964 +2964 +473 +4095 +4095 +4095 +0 +1771 +733 +21 +162 +625 +1118 +20 +376 +395 +395 +395 +4 +4023 +4023 +4023 +628 +3671 +3671 +3671 +1 +781 +675 +334 +83 +619 +580 +56 +95 +85 +44 +23 +1096 +150 +31 +1811 +1811 +1811 +3033 +3033 +3033 +747 +747 +747 +146 +243 +2149 +497 +25 +206 +764 +764 +764 +4357 +4357 +4357 +4720 +4720 +4720 +339 +25 +0 +310 +188 +4041 +4041 +4041 +50 +706 +733 +64 +722 +4077 +4077 +4077 +4515 +4515 +4515 +1213 +1448 +1165 +0 +26 +67 +2379 +2379 +2379 +59 +84 +38 +1474 +351 +494 +808 +26 +311 +311 +311 +180 +1638 +1638 +1638 +1834 +1834 +1834 +22 +3732 +3732 +3732 +70 +237 +96 +2878 +133 +610 +4369 +4369 +4369 +53 +1017 +1017 +1017 +765 +765 +765 +1050 +1050 +1050 +23 +1253 +282 +318 +375 +7 +2054 +409 +31 +18 +0 +37 +3 +42 +370 +91 +31 +914 +270 +733 +31 +183 +31 +1 +11 +633 +1 +101 +101 +101 +27 +70 +186 +248 +24 +1836 +243 +28 +880 +30 +133 +27 +20 +792 +363 +1063 +27 +24 +5 +633 +633 +633 +37 +722 +1562 +1562 +1562 +0 +0 +16 +54 +39 +277 +857 +15 +1097 +38 +802 +1065 +34 +3223 +3223 +3223 +38 +1957 +1957 +1957 +513 +604 +23 +3337 +3337 +3337 +881 +590 +30 +9 +7 +274 +22 +23 +3253 +3253 +3253 +105 +58 +130 +843 +843 +843 +160 +191 +223 +223 +223 +196 +1844 +1844 +1844 +1 +9 +1 +53 +25 +908 +769 +398 +2116 +22 +263 +2974 +3442 +3442 +3442 +49 +801 +24 +24 +911 +68 +69 +255 +321 +26 +41 +0 +337 +20 +817 +1865 +2922 +2922 +2922 +350 +55 +71 +1974 +1974 +1974 +131 +911 +911 +911 +4947 +4947 +4947 +1 +25 +21 +372 +41 +141 +44 +3 +1 +761 +23 +1960 +1960 +1960 +25 +76 +269 +799 +799 +799 +903 +903 +903 +11 +7 +48 +3 +28 +4737 +4737 +4737 +176 +1 +3344 +800 +0 +132 +1869 +1869 +1869 +21 +24 +199 +27 +43 +1 +71 +1 +4176 +4176 +4176 +1843 +1843 +1843 +4106 +4106 +4106 +80 +1015 +1015 +1015 +110 +1460 +122 +2947 +28 +12 +0 +30 +36 +112 +141 +756 +61 +71 +282 +27 +1816 +1816 +1816 +2302 +1726 +125 +89 +41 +234 +0 +124 +22 +4127 +4127 +4127 +4546 +4546 +4546 +805 +70 +0 +1592 +568 +851 +28 +4449 +4449 +4449 +0 +0 +327 +884 +1 +1261 +338 +322 +64 +90 +85 +0 +43 +239 +8 +118 +1512 +841 +452 +251 +859 +45 +789 +1550 +22 +1 +26 +120 +1370 +24 +50 +0 +231 +1056 +21 +218 +885 +129 +20 +2590 +2590 +2590 +377 +0 +2639 +2639 +2639 +1556 +1556 +1556 +33 +872 +24 +0 +1080 +0 +4145 +4145 +4145 +32 +0 +33 +1122 +3058 +51 +1561 +2263 +2263 +2263 +34 +39 +0 +4443 +4443 +4443 +889 +346 +1295 +1 +1894 +1894 +1894 +21 +32 +3303 +3303 +3303 +23 +102 +1 +59 +46 +836 +3319 +3319 +3319 +1408 +20 +924 +563 +563 +563 +2846 +2846 +2846 +1 +370 +1646 +4339 +46 +915 +952 +3609 +548 +1220 +2 +369 +539 +539 +539 +4528 +4528 +4528 +513 +148 +3166 +1910 +1910 +1910 +930 +79 +127 +21 +545 +864 +591 +3723 +539 +120 +367 +20 +24 +222 +162 +56 +23 +484 +4 +59 +1 +162 +240 +9 +458 +952 +1022 +32 +20 +155 +131 +51 +26 +1 +4414 +4414 +4414 +1134 +0 +360 +0 +147 +70 +890 +126 +29 +114 +771 +860 +609 +22 +68 +977 +173 +1181 +20 +2668 +2668 +2668 +45 +40 +367 +113 +958 +863 +863 +863 +180 +26 +1 +43 +1611 +1611 +1611 +1376 +24 +4714 +4714 +4714 +2983 +2983 +2983 +3 +0 +0 +1096 +31 +64 +4195 +4195 +4195 +185 +3939 +3939 +3939 +784 +334 +22 +26 +3531 +3531 +3531 +1599 +1599 +1599 +4127 +4127 +4127 +54 +126 +1055 +79 +371 +1187 +28 +0 +116 +1645 +170 +22 +1960 +458 +550 +25 +39 +43 +269 +892 +1 +0 +592 +592 +592 +1 +555 +555 +555 +1822 +1822 +1822 +14 +1463 +1463 +1463 +52 +365 +92 +41 +36 +3079 +3079 +3079 +1156 +525 +604 +2606 +1671 +201 +2249 +2249 +2249 +29 +345 +2938 +24 +3875 +3875 +3875 +925 +925 +925 +366 +31 +298 +177 +185 +36 +189 +546 +486 +1 +52 +1267 +71 +1718 +2325 +2325 +2325 +4059 +47 +1646 +1687 +38 +739 +499 +37 +608 +23 +22 +6 +103 +38 +0 +101 +3431 +3431 +3431 +4044 +4044 +4044 +225 +527 +905 +905 +905 +3387 +3387 +3387 +46 +519 +376 +376 +376 +2344 +216 +743 +743 +743 +3671 +3671 +3671 +328 +508 +41 +4001 +4001 +4001 +88 +1 +25 +365 +40 +1543 +374 +461 +324 +2402 +2 +1983 +1983 +1983 +2073 +441 +24 +145 +137 +4993 +4993 +4993 +36 +1 +155 +317 +54 +276 +260 +2396 +3463 +3463 +3463 +1137 +4 +96 +3201 +3201 +3201 +2 +60 +2369 +1567 +1 +235 +113 +52 +392 +2360 +175 +175 +175 +415 +1269 +1269 +1269 +0 +30 +632 +207 +365 +3434 +3434 +3434 +222 +167 +1428 +3867 +3867 +3867 +1723 +172 +99 +1030 +192 +316 +911 +124 +1066 +43 +236 +3589 +575 +449 +65 +366 +76 +1382 +547 +104 +2 +1947 +1947 +1947 +187 +198 +3554 +3554 +3554 +1378 +51 +4624 +185 +217 +3 +258 +4650 +4650 +4650 +47 +1071 +61 +976 +37 +978 +978 +978 +1717 +1717 +1717 +12 +493 +0 +784 +22 +1193 +1193 +1193 +50 +2310 +1299 +7 +1271 +1271 +1271 +3098 +62 +29 +667 +341 +358 +4075 +4075 +4075 +2738 +2738 +2738 +3564 +3564 +3564 +2472 +186 +2 +132 +409 +545 +1283 +1283 +1283 +1479 +593 +592 +231 +231 +231 +1 +2524 +2524 +2524 +157 +3725 +151 +334 +2503 +1063 +1063 +1063 +11 +761 +29 +53 +579 +74 +129 +32 +233 +3821 +3821 +3821 +1287 +102 +923 +339 +79 +146 +2470 +2470 +2470 +101 +64 +2965 +2965 +2965 +209 +1 +1731 +367 +156 +223 +194 +20 +1081 +1081 +1081 +62 +40 +518 +220 +317 +1081 +4213 +4213 +4213 +1743 +3607 +3607 +3607 +1487 +664 +519 +1 +2511 +321 +3370 +3370 +3370 +32 +36 +1738 +111 +1228 +1228 +1228 +30 +35 +421 +942 +942 +942 +18 +29 +611 +205 +4981 +4981 +4981 +998 +974 +2763 +2856 +2856 +2856 +3996 +3996 +3996 +99 +1036 +1036 +1036 +367 +1664 +367 +367 +367 +1167 +111 +372 +796 +796 +796 +113 +113 +113 +210 +56 +127 +791 +47 +855 +65 +1140 +22 +448 +1224 +21 +33 +1147 +113 +119 +557 +26 +48 +226 +315 +0 +302 +60 +1189 +1189 +1189 +3124 +3124 +3124 +5 +25 +47 +37 +923 +1733 +1733 +1733 +22 +0 +21 +179 +0 +679 +692 +1 +1059 +1059 +1059 +24 +43 +0 +3843 +3843 +3843 +4 +1 +2728 +1727 +2536 +1123 +0 +2947 +10 +3874 +3874 +3874 +4260 +962 +225 +1821 +84 +0 +3576 +3576 +3576 +138 +3474 +3474 +3474 +4045 +4045 +4045 +1093 +36 +3406 +133 +113 +236 +249 +2737 +53 +1757 +157 +968 +0 +848 +59 +2094 +2094 +2094 +304 +1978 +29 +921 +1 +3757 +3757 +3757 +306 +20 +145 +26 +189 +4678 +4678 +4678 +202 +76 +28 +94 +74 +18 +1429 +634 +0 +1420 +35 +147 +339 +2240 +2240 +2240 +22 +1752 +101 +4878 +4878 +4878 +230 +112 +38 +71 +359 +39 +74 +1795 +30 +3990 +3990 +3990 +40 +2572 +2572 +2572 +383 +30 +836 +55 +29 +356 +1738 +35 +1839 +1839 +1839 +2125 +2125 +2125 +761 +96 +23 +204 +6 +53 +1 +1829 +125 +284 +743 +26 +20 +301 +1867 +3889 +3889 +3889 +327 +281 +2999 +2999 +2999 +1151 +22 +66 +725 +1367 +4 +4601 +4601 +4601 +6 +706 +89 +25 +545 +44 +30 +91 +26 +21 +1218 +52 +1520 +456 +1741 +2496 +2496 +2496 +278 +1050 +362 +54 +1 +37 +249 +21 +1269 +38 +1 +2021 +2021 +2021 +89 +179 +1126 +1126 +1126 +2 +752 +752 +752 +29 +2356 +2356 +2356 +373 +1120 +190 +31 +1376 +4318 +4683 +20 +45 +55 +0 +111 +930 +464 +25 +1812 +265 +696 +906 +326 +326 +326 +51 +294 +685 +2309 +2309 +2309 +298 +333 +2545 +2545 +2545 +70 +1540 +559 +501 +710 +1159 +41 +617 +1200 +1125 +849 +1437 +1437 +1437 +916 +390 +138 +175 +0 +227 +332 +1472 +2550 +2550 +2550 +1130 +16 +1796 +0 +393 +366 +26 +2817 +1 +711 +907 +26 +41 +4320 +4320 +4320 +1510 +1510 +1510 +2 +132 +1379 +1501 +605 +64 +186 +1101 +89 +1574 +80 +187 +329 +118 +59 +56 +2 +212 +1025 +174 +1 +25 +253 +1431 +2193 +2193 +2193 +1956 +916 +916 +916 +2446 +2620 +21 +43 +6 +139 +0 +2607 +2607 +2607 +0 +1365 +274 +33 +241 +2285 +52 +1 +61 +235 +235 +235 +183 +30 +0 +1 +1 +765 +1 +3533 +3533 +3533 +1042 +29 +4190 +4190 +4190 +26 +1615 +27 +229 +368 +368 +368 +250 +8 +1 +0 +32 +355 +31 +432 +32 +20 +22 +22 +44 +146 +1763 +491 +491 +491 +0 +180 +39 +30 +50 +941 +1180 +328 +1 +100 +1778 +707 +293 +32 +1790 +31 +825 +31 +11 +24 +429 +0 +20 +1852 +79 +109 +0 +0 +2579 +2579 +2579 +74 +30 +29 +112 +3392 +3087 +3087 +3087 +19 +1554 +1554 +1554 +23 +2393 +131 +347 +444 +1842 +1681 +3 +6 +999 +34 +1193 +183 +880 +880 +880 +919 +919 +919 +966 +966 +966 +1242 +3275 +3275 +3275 +1 +0 +137 +665 +25 +31 +65 +70 +1389 +3097 +845 +2669 +91 +370 +213 +1850 +38 +138 +218 +624 +624 +624 +93 +1955 +1955 +1955 +265 +1297 +21 +1577 +1994 +1994 +1994 +113 +552 +57 +834 +75 +0 +1187 +3400 +3400 +3400 +2250 +34 +61 +2885 +2885 +2885 +0 +35 +35 +35 +1892 +1862 +1897 +1897 +1897 +235 +45 +43 +3906 +3906 +3906 +121 +2751 +21 +2072 +2072 +2072 +36 +83 +1881 +483 +2506 +2987 +2987 +2987 +419 +6 +32 +4860 +4860 +4860 +82 +385 +4 +1578 +1578 +1578 +3072 +3072 +3072 +7 +574 +104 +265 +853 +0 +60 +1626 +91 +242 +58 +1 +4465 +3005 +3005 +3005 +250 +1864 +2215 +1858 +20 +105 +458 +20 +46 +26 +29 +220 +3818 +3818 +3818 +88 +22 +462 +339 +0 +2 +0 +1239 +1239 +1239 +33 +40 +87 +2687 +2687 +2687 +0 +856 +28 +35 +2496 +2496 +2496 +20 +44 +498 +205 +61 +557 +60 +1984 +646 +1511 +182 +6 +625 +29 +246 +2044 +475 +4162 +4162 +4162 +21 +1971 +0 +1998 +3016 +20 +44 +29 +32 +35 +110 +125 +1470 +737 +33 +803 +1036 +1861 +31 +0 +4866 +4866 +4866 +12 +44 +889 +889 +889 +367 +1810 +1172 +1172 +1172 +24 +892 +307 +1585 +900 +191 +2985 +0 +1946 +1946 +1946 +344 +344 +344 +4551 +4551 +4551 +1670 +1670 +1670 +852 +123 +1598 +22 +366 +23 +69 +132 +3373 +3373 +3373 +366 +27 +148 +1654 +599 +72 +4561 +4561 +4561 +502 +1731 +1731 +1731 +2186 +2184 +197 +22 +189 +933 +457 +2372 +2504 +488 +889 +3976 +3976 +3976 +1122 +988 +38 +1393 +1393 +1393 +1877 +393 +470 +1513 +343 +362 +175 +42 +390 +818 +0 +68 +3096 +3096 +3096 +1002 +1277 +332 +1189 +2058 +171 +650 +650 +650 +792 +105 +2215 +21 +112 +23 +118 +2470 +46 +4422 +4422 +4422 +294 +105 +716 +28 +57 +222 +4616 +4616 +4616 +372 +1146 +1202 +1202 +1202 +4119 +4119 +4119 +444 +1326 +1326 +1326 +1 +4898 +4898 +4898 +941 +603 +4385 +4385 +4385 +46 +573 +181 +219 +3481 +3481 +3481 +518 +0 +4143 +4143 +4143 +366 +20 +1618 +104 +157 +74 +46 +173 +1 +3373 +3373 +3373 +950 +950 +950 +1 +492 +2372 +2372 +2372 +1 +28 +1873 +1873 +1873 +1108 +1108 +1108 +566 +302 +2848 +2848 +2848 +39 +2366 +2366 +2366 +40 +2379 +2379 +2379 +542 +134 +4232 +4232 +4232 +866 +920 +3135 +3135 +3135 +533 +97 +22 +258 +2166 +3157 +1101 +1101 +1101 +43 +64 +340 +25 +4973 +4973 +4973 +3421 +3421 +3421 +377 +1163 +1220 +22 +1299 +1664 +1664 +1664 +42 +185 +171 +58 +705 +26 +43 +33 +671 +49 +0 +53 +1107 +165 +1743 +556 +3062 +3062 +3062 +4932 +4932 +4932 +366 +38 +44 +4845 +4845 +4845 +746 +3155 +36 +119 +2979 +218 +4093 +129 +1485 +73 +30 +43 +25 +4201 +4201 +4201 +38 +21 +896 +2 +70 +49 +34 +1905 +467 +2748 +132 +478 +500 +1 +38 +365 +2442 +521 +0 +101 +1383 +62 +4633 +4633 +4633 +601 +2061 +64 +2353 +2353 +2353 +718 +717 +2245 +786 +1562 +41 +27 +1254 +1254 +1254 +588 +190 +102 +24 +43 +2217 +24 +2452 +2452 +2452 +26 +1452 +1187 +1187 +1187 +211 +446 +81 +21 +48 +1 +85 +255 +1874 +1874 +1874 +3813 +97 +2221 +154 +429 +1463 +1463 +1463 +1032 +28 +479 +48 +2047 +4980 +4980 +4980 +1927 +1927 +1927 +4605 +4605 +4605 +1 +0 +1486 +4299 +4299 +4299 +369 +506 +367 +37 +1313 +1313 +1313 +1621 +9 +4727 +4727 +4727 +3164 +3164 +3164 +1252 +1252 +1252 +1144 +1144 +1144 +1514 +1514 +1514 +0 +1435 +213 +575 +58 +1548 +187 +339 +64 +60 +205 +1176 +1176 +1176 +378 +1119 +3780 +3780 +3780 +1 +246 +25 +1083 +1083 +1083 +66 +101 +2463 +3925 +3925 +3925 +471 +2171 +366 +244 +478 +3174 +3174 +3174 +247 +201 +0 +2431 +4348 +4348 +4348 +29 +808 +263 +1444 +1444 +1444 +80 +122 +378 +174 +2659 +2659 +2659 +415 +21 +42 +3059 +3059 +3059 +1 +1222 +2060 +40 +49 +288 +572 +3942 +3942 +3942 +1449 +2106 +2106 +2106 +1186 +40 +1201 +1952 +203 +48 +898 +421 +31 +2226 +2226 +2226 +45 +400 +184 +195 +2790 +2790 +2790 +99 +4239 +4239 +4239 +78 +177 +793 +545 +3252 +3252 +3252 +78 +86 +2310 +2310 +2310 +1345 +1721 +1 +115 +174 +3626 +57 +1696 +1696 +1696 +492 +492 +492 +2330 +2285 +2285 +2285 +40 +2867 +2867 +2867 +2513 +2513 +2513 +85 +2099 +1759 +4508 +4508 +4508 +4951 +4951 +4951 +21 +564 +1068 +29 +1696 +433 +55 +1943 +4264 +4264 +4264 +994 +21 +2707 +0 +10 +258 +258 +258 +948 +51 +504 +268 +251 +1 +856 +2629 +2629 +2629 +19 +407 +4431 +4431 +4431 +1 +505 +3883 +607 +48 +115 +3477 +3477 +3477 +54 +80 +2827 +2827 +2827 +1101 +526 +1034 +102 +47 +921 +228 +32 +1 +58 +20 +2398 +893 +1730 +414 +47 +224 +334 +246 +928 +338 +1948 +1948 +1948 +4161 +4161 +4161 +1517 +1241 +2094 +2094 +2094 +2380 +98 +3690 +3690 +3690 +578 +439 +0 +145 +190 +1217 +1 +3538 +3538 +3538 +512 +1125 +2 +138 +713 +367 +476 +73 +62 +544 +1387 +76 +550 +0 +126 +248 +967 +967 +967 +826 +975 +181 +446 +1266 +34 +460 +31 +1568 +1 +2 +2201 +2201 +2201 +13 +36 +24 +234 +234 +234 +368 +1468 +1478 +4221 +4221 +4221 +248 +2673 +2673 +2673 +4552 +4552 +4552 +4664 +4664 +4664 +227 +29 +222 +4439 +3184 +3184 +3184 +886 +98 +2492 +103 +193 +1775 +332 +332 +332 +365 +59 +108 +302 +39 +3406 +3406 +3406 +212 +599 +599 +599 +264 +2 +250 +979 +663 +325 +0 +1105 +2124 +2470 +55 +151 +1533 +1533 +1533 +507 +294 +294 +294 +38 +2150 +1562 +202 +202 +202 +323 +235 +756 +48 +4345 +4345 +4345 +371 +2863 +2863 +2863 +274 +712 +325 +529 +1019 +1019 +1019 +4481 +4481 +4481 +232 +4254 +4254 +4254 +312 +3827 +3827 +3827 +150 +1030 +2779 +2779 +2779 +4979 +4979 +4979 +373 +28 +277 +806 +658 +35 +154 +36 +1571 +148 +295 +3614 +4 +262 +1 +2019 +30 +600 +2991 +2991 +2991 +1021 +1404 +33 +38 +75 +531 +667 +376 +2050 +19 +3807 +3807 +3807 +199 +89 +2187 +3599 +3599 +3599 +389 +2123 +3409 +716 +716 +716 +1861 +1753 +1753 +1753 +107 +53 +2105 +2105 +2105 +645 +1707 +301 +36 +1812 +1785 +1785 +1785 +190 +112 +901 +2622 +2622 +2622 +0 +580 +4022 +1259 +282 +1269 +1269 +1269 +2990 +2990 +2990 +99 +2800 +64 +4621 +4621 +4621 +154 +0 +1385 +85 +240 +691 +0 +24 +1965 +191 +105 +49 +2 +273 +381 +3669 +3669 +3669 +1771 +282 +478 +708 +51 +290 +671 +122 +122 +122 +3453 +3453 +3453 +1045 +62 +4394 +4394 +4394 +2201 +310 +948 +2271 +658 +1516 +2852 +1714 +2130 +2160 +56 +60 +2447 +2447 +2447 +232 +373 +2240 +2240 +2240 +64 +3 +1119 +34 +2224 +0 +5 +1390 +1390 +1390 +3708 +3708 +3708 +345 +609 +23 +255 +352 +188 +1280 +1203 +168 +58 +703 +189 +31 +532 +1087 +627 +21 +24 +903 +1314 +33 +991 +991 +991 +561 +271 +2245 +1228 +4 +4905 +4905 +4905 +155 +203 +2821 +32 +183 +32 +1042 +1780 +7 +1597 +279 +86 +43 +4 +2084 +2084 +2084 +20 +3630 +3630 +3630 +1065 +1414 +1414 +1414 +4667 +4667 +4667 +21 +3598 +3598 +3598 +164 +1102 +546 +27 +25 +233 +910 +0 +808 +808 +808 +1800 +59 +97 +41 +10 +23 +0 +1493 +2525 +2525 +2525 +121 +6 +29 +706 +41 +143 +98 +1564 +674 +674 +674 +1119 +82 +3417 +3417 +3417 +24 +429 +2042 +1651 +3287 +3287 +3287 +27 +30 +25 +5 +0 +373 +381 +103 +24 +231 +3419 +3419 +3419 +475 +31 +60 +60 +60 +502 +1374 +477 +21 +4 +4 +3 +881 +674 +1017 +1017 +1017 +2185 +2185 +2185 +0 +30 +1053 +1053 +1053 +0 +0 +2273 +2273 +2273 +1007 +32 +400 +26 +441 +22 +61 +171 +39 +1086 +58 +2580 +2580 +2580 +4193 +4193 +4193 +43 +111 +1755 +155 +380 +1 +3978 +27 +2851 +31 +458 +1 +23 +1120 +35 +40 +3 +3491 +4734 +4734 +4734 +4750 +4750 +4750 +93 +1 +29 +72 +4012 +4012 +4012 +4448 +4448 +4448 +324 +855 +1683 +1683 +1683 +3013 +3013 +3013 +0 +1381 +10 +1393 +1513 +1513 +1513 +0 +519 +36 +692 +36 +26 +243 +174 +307 +2336 +2336 +2336 +132 +1540 +91 +229 +20 +1 +635 +4927 +4927 +4927 +4029 +4029 +4029 +803 +67 +1367 +55 +44 +206 +47 +4444 +4444 +4444 +9 +74 +134 +1071 +1071 +1071 +1443 +1443 +1443 +714 +757 +124 +282 +1258 +64 +46 +96 +365 +92 +4083 +79 +398 +2258 +2258 +2258 +30 +2858 +86 +40 +3196 +1054 +46 +1 +187 +2111 +173 +763 +59 +1026 +774 +89 +28 +3075 +3075 +3075 +753 +23 +0 +1358 +0 +3655 +3655 +3655 +89 +21 +56 +1993 +5 +14 +700 +700 +700 +2920 +2981 +1929 +1538 +5 +458 +278 +79 +33 +1017 +0 +737 +2 +43 +20 +0 +860 +39 +28 +330 +25 +1158 +173 +318 +0 +260 +71 +45 +16 +1358 +420 +1086 +122 +482 +0 +1561 +110 +3687 +3687 +3687 +2988 +1060 +32 +12 +4 +381 +59 +4287 +4287 +4287 +65 +2355 +1171 +1171 +1171 +67 +68 +87 +1012 +524 +33 +0 +1998 +1998 +1998 +823 +823 +823 +28 +21 +1086 +1086 +1086 +1 +3459 +3459 +3459 +3 +883 +4 +198 +2282 +2282 +2282 +478 +651 +2638 +28 +4010 +54 +53 +41 +336 +2251 +2907 +2907 +2907 +731 +2171 +30 +21 +3393 +1 +734 +1509 +3042 +3042 +3042 +27 +2362 +2362 +2362 +39 +26 +91 +26 +117 +656 +2284 +1 +0 +1 +2341 +0 +239 +4008 +4008 +4008 +4539 +4539 +4539 +196 +69 +24 +34 +90 +1808 +2530 +2530 +2530 +389 +377 +22 +39 +0 +1564 +1564 +1564 +22 +3745 +3745 +3745 +2061 +375 +28 +28 +796 +796 +796 +67 +2612 +87 +38 +63 +816 +10 +77 +63 +346 +68 +4032 +4032 +4032 +0 +653 +0 +41 +2243 +2243 +2243 +4365 +4365 +4365 +1 +177 +21 +408 +32 +4707 +134 +1 +5 +2564 +0 +89 +2313 +4065 +4065 +4065 +508 +508 +508 +1542 +208 +249 +1901 +103 +544 +26 +1926 +197 +1558 +1558 +1558 +26 +3740 +3740 +3740 +49 +274 +1831 +54 +388 +100 +1558 +3037 +3037 +3037 +102 +27 +1612 +3382 +1 +436 +1913 +4690 +4690 +4690 +1242 +0 +170 +4292 +4292 +4292 +37 +1793 +1793 +1793 +967 +967 +967 +1 +1 +4719 +4719 +4719 +2340 +2340 +2340 +553 +1851 +1851 +1851 +1143 +113 +71 +65 +143 +50 +0 +2392 +1298 +2 +88 +2524 +2524 +2524 +1558 +1558 +1558 +32 +120 +0 +74 +479 +705 +4094 +21 +2217 +1820 +3 +143 +3410 +3410 +3410 +2165 +1271 +1271 +1271 +44 +1 +77 +0 +45 +21 +1411 +20 +595 +97 +3 +919 +3895 +3895 +3895 +32 +587 +30 +140 +521 +521 +521 +199 +68 +26 +247 +4441 +4441 +4441 +21 +45 +2363 +2363 +2363 +1 +33 +25 +2625 +1581 +1581 +1581 +4761 +4761 +4761 +434 +4 +3101 +44 +3 +20 +3216 +3216 +3216 +118 +173 +751 +4537 +4537 +4537 +0 +31 +2362 +2362 +2362 +1423 +469 +49 +33 +222 +1176 +1 +300 +4933 +4933 +4933 +1139 +2409 +2409 +2409 +554 +45 +1144 +25 +35 +73 +120 +1988 +105 +1929 +0 +4 +208 +39 +23 +473 +2901 +2901 +2901 +1644 +1644 +1644 +2329 +2329 +2329 +46 +1642 +74 +34 +2 +537 +69 +2770 +17 +45 +601 +601 +601 +1 +641 +0 +813 +2004 +35 +105 +26 +77 +1534 +9 +922 +27 +3 +330 +0 +609 +63 +810 +17 +0 +1146 +344 +1 +365 +365 +365 +25 +685 +49 +108 +1128 +1128 +1128 +21 +3154 +3154 +3154 +792 +354 +749 +1165 +1165 +1165 +1195 +1613 +1613 +1613 +1718 +1718 +1718 +118 +22 +804 +1375 +111 +1145 +615 +6 +334 +1490 +76 +71 +521 +199 +1297 +222 +323 +507 +2 +217 +431 +38 +22 +1 +337 +4184 +4184 +4184 +371 +891 +4339 +4339 +4339 +888 +1206 +4408 +4408 +4408 +1374 +75 +2301 +1 +1726 +0 +1 +62 +1622 +392 +21 +31 +2776 +2279 +2279 +2279 +454 +90 +1 +38 +35 +3537 +3537 +3537 +454 +377 +375 +22 +1671 +1671 +1671 +2204 +2204 +2204 +37 +129 +47 +43 +2012 +44 +225 +889 +920 +38 +148 +3830 +3830 +3830 +829 +2538 +2538 +2538 +585 +611 +117 +150 +396 +1827 +1 +1336 +189 +708 +359 +1980 +70 +5 +1676 +725 +150 +150 +150 +95 +60 +213 +118 +103 +133 +965 +32 +2 +2308 +2308 +2308 +1204 +146 +4767 +21 +2156 +2156 +2156 +22 +391 +391 +391 +264 +153 +24 +50 +34 +365 +2666 +63 +4440 +1131 +1155 +1155 +1155 +29 +3500 +3500 +3500 +156 +1702 +930 +365 +124 +0 +508 +4585 +4585 +4585 +87 +84 +38 +609 +609 +609 +102 +3495 +3495 +3495 +1654 +146 +3570 +3570 +3570 +288 +1 +159 +2386 +598 +93 +23 +4913 +4913 +4913 +36 +72 +651 +1286 +2158 +2158 +2158 +71 +456 +1238 +728 +4265 +0 +2107 +1760 +1760 +1760 +22 +1284 +25 +204 +4435 +4435 +4435 +941 +424 +1395 +3126 +3126 +3126 +2688 +547 +83 +8 +146 +4390 +4390 +4390 +499 +510 +1 +2130 +51 +148 +0 +25 +171 +701 +3773 +3773 +3773 +206 +3611 +3611 +3611 +28 +1083 +5 +560 +529 +114 +3156 +115 +20 +4597 +4597 +4597 +1515 +145 +2 +712 +32 +181 +165 +695 +127 +2113 +108 +52 +775 +775 +775 +0 +28 +30 +117 +117 +117 +174 +32 +1658 +1658 +1658 +2721 +211 +255 +255 +255 +173 +63 +112 +108 +67 +2646 +69 +1022 +1422 +1422 +1422 +20 +2893 +2893 +2893 +8 +15 +3255 +3255 +3255 +778 +231 +25 +974 +1368 +217 +637 +30 +141 +2169 +117 +1 +48 +63 +708 +688 +2015 +2015 +2015 +158 +158 +158 +3284 +3284 +3284 +0 +882 +37 +2 +1444 +4343 +4343 +4343 +3084 +3084 +3084 +325 +27 +1416 +1416 +1416 +569 +1826 +1826 +1826 +927 +1285 +38 +44 +28 +190 +3197 +3197 +3197 +1471 +83 +1748 +1748 +1748 +1615 +1615 +1615 +60 +2799 +2799 +2799 +4971 +4971 +4971 +282 +134 +444 +32 +616 +427 +209 +1063 +3891 +816 +139 +1115 +932 +2152 +815 +407 +407 +407 +313 +103 +1536 +3278 +47 +1345 +512 +3204 +3204 +3204 +20 +2218 +4480 +4480 +4480 +1753 +1486 +316 +16 +1826 +67 +4002 +4002 +4002 +1764 +1764 +1764 +46 +2088 +0 +3999 +3999 +3999 +2880 +2880 +2880 +4980 +4980 +4980 +1657 +1657 +1657 +169 +2039 +2039 +2039 +237 +5 +42 +1002 +1636 +1636 +1636 +1291 +26 +10 +4502 +4502 +4502 +198 +237 +1 +1000 +187 +36 +144 +955 +79 +2051 +233 +2269 +2269 +2269 +1713 +1713 +1713 +2908 +911 +911 +911 +130 +89 +666 +22 +1969 +1969 +1969 +3234 +3234 +3234 +905 +676 +23 +11 +985 +1448 +180 +180 +180 +165 +330 +126 +6 +671 +2855 +2855 +2855 +1826 +26 +1 +322 +3252 +3252 +3252 +589 +78 +721 +1732 +1732 +1732 +749 +21 +1102 +118 +530 +2096 +2724 +2724 +2724 +1077 +110 +45 +48 +74 +30 +101 +343 +2515 +2515 +2515 +1585 +1461 +551 +1047 +354 +1959 +223 +337 +4371 +4371 +4371 +0 +1488 +254 +950 +950 +950 +576 +100 +578 +578 +578 +3650 +3917 +3917 +3917 +2466 +926 +303 +2191 +925 +1206 +1206 +1206 +0 +315 +1826 +1826 +1826 +3 +223 +31 +147 +661 +661 +661 +1081 +704 +87 +717 +9 +108 +993 +166 +27 +83 +174 +263 +28 +708 +708 +708 +1239 +2396 +2396 +2396 +998 +307 +1814 +2662 +2662 +2662 +4294 +4294 +4294 +4702 +4702 +4702 +31 +133 +54 +2 +80 +22 +1967 +4562 +4562 +4562 +158 +2467 +97 +480 +705 +1290 +1511 +3403 +1117 +1117 +1117 +1872 +283 +178 +738 +738 +738 +1431 +1753 +66 +210 +3423 +3423 +3423 +33 +473 +62 +1078 +1085 +56 +4312 +4312 +4312 +41 +20 +622 +2160 +920 +56 +118 +1 +34 +45 +20 +398 +22 +730 +481 +481 +481 +1142 +1551 +1551 +1551 +35 +3590 +3590 +3590 +357 +2973 +2973 +2973 +24 +531 +365 +365 +365 +31 +1119 +744 +2593 +2593 +2593 +90 +0 +2121 +2121 +2121 +367 +263 +4998 +4998 +4998 +52 +1127 +1127 +1127 +77 +54 +2965 +2965 +2965 +1359 +1365 +553 +91 +114 +62 +45 +1211 +1 +2599 +2599 +2599 +2218 +2218 +2218 +198 +33 +194 +1014 +1 +840 +1498 +1498 +1498 +1494 +1494 +1494 +1 +2454 +2454 +2454 +619 +393 +206 +189 +4658 +1036 +238 +439 +34 +96 +1080 +2020 +2128 +665 +1448 +1 +369 +1844 +177 +2787 +2787 +2787 +36 +827 +1302 +1435 +0 +4 +1785 +725 +607 +8 +32 +2605 +2605 +2605 +365 +1 +37 +263 +0 +24 +4658 +4658 +4658 +2187 +130 +136 +160 +0 +2 +1062 +750 +158 +2515 +1 +30 +1243 +104 +427 +207 +3280 +3280 +3280 +465 +28 +141 +161 +4705 +4705 +4705 +268 +41 +65 +65 +65 +326 +3729 +3729 +3729 +32 +1897 +1897 +1897 +1930 +94 +927 +90 +339 +254 +270 +270 +270 +11 +1333 +1333 +1333 +301 +1085 +730 +84 +1855 +20 +71 +1062 +21 +21 +3271 +3271 +3271 +1859 +245 +61 +1507 +1507 +1507 +368 +2203 +1389 +1389 +1389 +437 +51 +147 +1 +2565 +2524 +1239 +22 +290 +0 +4363 +4363 +4363 +1947 +1947 +1947 +36 +11 +3 +516 +459 +4785 +4785 +4785 +1 +303 +2470 +2470 +2470 +728 +34 +20 +41 +161 +72 +1517 +1438 +1690 +1443 +3132 +3132 +3132 +123 +51 +522 +1 +29 +23 +375 +365 +1257 +1257 +1257 +72 +1760 +1760 +1760 +1366 +968 +1 +1 +4404 +4404 +4404 +2958 +2958 +2958 +2301 +29 +261 +169 +31 +1889 +0 +328 +123 +1898 +1898 +1898 +1475 +42 +31 +737 +101 +0 +596 +596 +596 +39 +24 +231 +26 +2251 +2251 +2251 +924 +599 +24 +2981 +2981 +2981 +1379 +1379 +1379 +1060 +1525 +755 +42 +2154 +1620 +128 +2105 +1075 +193 +738 +1240 +27 +776 +3134 +3134 +3134 +4830 +4830 +4830 +241 +35 +987 +0 +1439 +1439 +1439 +53 +1728 +3718 +3718 +3718 +6 +182 +220 +3910 +3910 +3910 +1 +25 +1209 +79 +408 +110 +28 +413 +4851 +4851 +4851 +0 +411 +36 +316 +65 +2503 +2503 +2503 +193 +32 +176 +4816 +4816 +4816 +264 +223 +29 +1108 +408 +53 +162 +100 +788 +788 +788 +32 +75 +25 +29 +41 +4155 +4155 +4155 +2777 +2777 +2777 +425 +401 +1565 +445 +35 +1424 +753 +3501 +31 +2589 +1 +3271 +1112 +1112 +1112 +2129 +0 +4411 +4411 +4411 +1168 +1168 +1168 +1198 +1752 +1752 +1752 +0 +66 +33 +1501 +430 +2719 +2719 +2719 +0 +1111 +711 +4 +678 +0 +141 +1198 +1198 +1198 +0 +282 +301 +10 +3664 +3664 +3664 +23 +4 +20 +410 +3358 +3358 +3358 +37 +4637 +4637 +4637 +3386 +3386 +3386 +33 +2271 +2271 +2271 +778 +48 +1536 +580 +339 +2 +0 +3599 +2566 +2566 +2566 +1780 +1780 +1780 +645 +45 +1456 +1456 +1456 +10 +41 +33 +4 +741 +288 +25 +113 +2131 +0 +4 +21 +2172 +372 +21 +1720 +1720 +1720 +63 +63 +63 +81 +896 +896 +896 +22 +3 +470 +148 +46 +536 +3024 +1 +2954 +2954 +2954 +356 +1968 +67 +2022 +2022 +2022 +2196 +2203 +2203 +2203 +2798 +3 +20 +37 +31 +32 +230 +21 +73 +1999 +1999 +1999 +50 +0 +488 +1759 +1756 +4598 +4598 +4598 +763 +763 +763 +4260 +4260 +4260 +393 +176 +2940 +1208 +1208 +1208 +0 +302 +2559 +2351 +2351 +2351 +0 +395 +886 +381 +2924 +0 +27 +602 +260 +151 +1 +767 +767 +767 +2996 +2996 +2996 +37 +383 +383 +383 +351 +696 +190 +0 +1 +1091 +2986 +2122 +82 +2054 +335 +750 +0 +182 +776 +2633 +2582 +2582 +2582 +71 +755 +2 +1 +50 +378 +122 +2571 +1292 +1292 +1292 +1469 +39 +4873 +4873 +4873 +0 +31 +122 +120 +336 +61 +74 +31 +1487 +1159 +1159 +1159 +776 +1848 +16 +4571 +4571 +4571 +54 +225 +225 +225 +1626 +0 +4482 +4482 +4482 +41 +3 +0 +45 +45 +45 +24 +0 +391 +4871 +4871 +4871 +1286 +55 +123 +5 +46 +200 +55 +130 +1185 +51 +193 +234 +43 +43 +43 +40 +133 +2571 +32 +48 +328 +29 +3979 +3979 +3979 +487 +2680 +2680 +2680 +0 +4263 +4263 +4263 +1620 +1620 +1620 +28 +1 +31 +2111 +216 +816 +4 +229 +28 +3103 +3103 +3103 +79 +51 +120 +782 +107 +24 +435 +435 +435 +52 +9 +876 +876 +876 +503 +3043 +3043 +3043 +30 +326 +4488 +4488 +4488 +84 +35 +1 +846 +846 +846 +469 +469 +469 +0 +538 +25 +3171 +3171 +3171 +124 +51 +1 +197 +36 +53 +4747 +4747 +4747 +3010 +4526 +4526 +4526 +1794 +29 +497 +22 +914 +139 +404 +2937 +1078 +4473 +4473 +4473 +0 +2928 +2967 +2967 +2967 +50 +0 +208 +572 +572 +572 +2932 +2932 +2932 +171 +0 +1 +844 +844 +844 +2 +1 +1880 +26 +2770 +2770 +2770 +33 +42 +28 +2923 +4146 +4146 +4146 +1153 +958 +1973 +141 +29 +1570 +14 +154 +132 +3779 +3779 +3779 +176 +3823 +3823 +3823 +1470 +474 +20 +0 +1 +63 +1082 +59 +1 +32 +215 +161 +1687 +1687 +1687 +32 +0 +63 +100 +81 +20 +32 +1653 +1653 +1653 +4935 +4935 +4935 +22 +1963 +1284 +20 +43 +1954 +731 +80 +178 +1027 +783 +783 +783 +4937 +4937 +4937 +2746 +2746 +2746 +415 +153 +158 +0 +1362 +1127 +24 +21 +27 +300 +2529 +2529 +2529 +3095 +3095 +3095 +66 +2725 +2725 +2725 +30 +132 +178 +2337 +2337 +2337 +1663 +2655 +2655 +2655 +47 +816 +1017 +1043 +1576 +1576 +1576 +4719 +4719 +4719 +3041 +3041 +3041 +2281 +665 +665 +665 +722 +151 +151 +151 +795 +1648 +1648 +1648 +2762 +36 +28 +1 +114 +1202 +1202 +1202 +168 +1218 +186 +306 +2016 +2459 +1131 +68 +129 +75 +29 +0 +138 +1085 +1259 +1259 +1259 +4162 +4162 +4162 +720 +0 +26 +2522 +2522 +2522 +1139 +23 +4 +142 +150 +23 +608 +608 +608 +32 +1987 +8 +3498 +3498 +3498 +1836 +22 +29 +365 +365 +365 +34 +775 +1862 +487 +61 +3833 +3833 +3833 +708 +708 +708 +1251 +1251 +1251 +102 +52 +1670 +4379 +4379 +4379 +0 +2020 +2020 +2020 +3002 +1213 +2 +6 +546 +2170 +2170 +2170 +325 +27 +4915 +4915 +4915 +1577 +61 +3294 +2012 +87 +58 +20 +4459 +4459 +4459 +4145 +20 +0 +3834 +3834 +3834 +96 +55 +2175 +2175 +2175 +24 +365 +107 +3388 +3388 +3388 +608 +60 +4080 +4080 +4080 +2053 +31 +1640 +1568 +1568 +1568 +171 +4106 +4106 +4106 +2579 +1831 +1831 +1831 +2181 +35 +2152 +1518 +1518 +1518 +147 +209 +0 +1296 +1296 +1296 +117 +0 +214 +15 +3149 +3149 +3149 +106 +1549 +1549 +1549 +61 +495 +112 +471 +3429 +3429 +3429 +0 +181 +36 +89 +3456 +365 +26 +830 +151 +4170 +4170 +4170 +140 +860 +1517 +1517 +1517 +106 +471 +0 +223 +550 +3989 +3989 +3989 +5 +0 +2449 +2449 +2449 +2214 +307 +0 +2788 +2788 +2788 +0 +91 +1 +308 +3839 +3839 +3839 +4522 +4522 +4522 +3818 +3818 +3818 +3411 +91 +0 +3951 +3951 +3951 +60 +1550 +1550 +1550 +2015 +3006 +3006 +3006 +12 +1 +71 +212 +155 +21 +72 +24 +201 +2137 +2137 +2137 +34 +4484 +4484 +4484 +462 +64 +28 +0 +56 +2437 +2437 +2437 +1522 +1522 +1522 +116 +2083 +2083 +2083 +390 +1879 +1879 +1879 +2649 +2649 +2649 +1633 +1292 +32 +4610 +4610 +4610 +375 +164 +2076 +2076 +2076 +1866 +2978 +4 +4844 +4844 +4844 +4229 +4229 +4229 +45 +28 +156 +546 +1336 +1201 +3879 +3879 +3879 +857 +2090 +3147 +46 +190 +3154 +3154 +3154 +3511 +3511 +3511 +34 +1314 +161 +2149 +2149 +2149 +162 +4985 +4985 +4985 +4462 +4462 +4462 +4769 +4769 +4769 +627 +233 +175 +2647 +4225 +4225 +4225 +3653 +1834 +471 +1241 +1241 +1241 +899 +35 +150 +705 +1652 +1306 +0 +1297 +1297 +1297 +2071 +499 +1 +67 +1246 +586 +6 +1 +50 +3857 +3857 +3857 +29 +0 +374 +1639 +156 +3549 +3549 +3549 +9 +175 +42 +563 +0 +1 +226 +2296 +111 +23 +36 +479 +3403 +3403 +3403 +3167 +206 +1874 +87 +20 +64 +2685 +1654 +1654 +1654 +1334 +90 +2225 +242 +242 +242 +31 +230 +59 +1 +883 +1377 +818 +448 +4184 +4184 +4184 +362 +913 +106 +950 +950 +950 +562 +38 +144 +2807 +37 +102 +4110 +4110 +4110 +2422 +2422 +2422 +4277 +4277 +4277 +99 +377 +0 +169 +102 +501 +165 +0 +611 +1115 +39 +4785 +4785 +4785 +1140 +3539 +3539 +3539 +645 +841 +841 +841 +378 +3897 +3897 +3897 +2699 +1 +62 +234 +1950 +1428 +1428 +1428 +211 +211 +1825 +0 +1 +26 +31 +1349 +1349 +1349 +925 +75 +185 +32 +56 +368 +171 +2 +389 +485 +31 +1557 +1079 +4813 +4813 +4813 +155 +498 +113 +3898 +3898 +3898 +1293 +42 +4972 +4972 +4972 +236 +42 +1782 +1782 +1782 +1667 +3010 +3010 +3010 +26 +2446 +2446 +2446 +538 +3913 +3913 +3913 +367 +248 +433 +2257 +519 +461 +2263 +2263 +2263 +130 +40 +54 +166 +46 +231 +0 +3937 +3937 +3937 +1575 +4460 +4460 +4460 +0 +692 +27 +842 +842 +842 +163 +618 +0 +186 +230 +2714 +838 +1134 +113 +504 +20 +598 +284 +7 +176 +66 +3873 +3873 +3873 +0 +368 +368 +368 +187 +203 +75 +3183 +3183 +3183 +93 +326 +1331 +186 +2577 +2577 +2577 +29 +1050 +3593 +3593 +3593 +1076 +573 +2239 +31 +1536 +1536 +1536 +41 +0 +4378 +4378 +4378 +3238 +3238 +3238 +77 +0 +584 +847 +4890 +4890 +4890 +205 +545 +978 +2504 +36 +296 +190 +1566 +33 +701 +701 +701 +961 +2218 +4266 +4266 +4266 +0 +23 +36 +2056 +2056 +2056 +5 +331 +571 +30 +166 +32 +4628 +4628 +4628 +641 +681 +40 +65 +2463 +276 +2191 +2191 +2191 +71 +90 +2124 +2124 +2124 +266 +32 +28 +4067 +4067 +4067 +39 +649 +4228 +85 +3345 +3345 +3345 +73 +3999 +3999 +3999 +25 +844 +2502 +2502 +2502 +3 +219 +323 +25 +917 +2508 +2508 +2508 +1514 +1514 +1514 +922 +62 +2764 +2764 +2764 +48 +29 +2072 +184 +1921 +741 +741 +741 +25 +31 +40 +306 +65 +1513 +1400 +1400 +1400 +355 +3623 +3623 +3623 +4703 +4703 +4703 +1429 +1440 +42 +3721 +3721 +3721 +69 +705 +2718 +265 +29 +21 +21 +1727 +192 +2820 +98 +19 +269 +2 +5 +2195 +2195 +2195 +37 +25 +2050 +1718 +1718 +1718 +23 +21 +3155 +3155 +3155 +190 +1 +99 +1213 +1213 +1213 +0 +114 +1693 +1693 +1693 +168 +43 +0 +368 +1457 +21 +1489 +1489 +1489 +900 +1142 +0 +616 +27 +2113 +2113 +2113 +29 +47 +875 +305 +27 +252 +3722 +3722 +3722 +1636 +3558 +3558 +3558 +57 +2082 +789 +344 +1246 +4286 +247 +20 +66 +10 +197 +666 +111 +59 +2179 +2179 +2179 +326 +3732 +3732 +3732 +59 +20 +818 +1941 +30 +317 +142 +52 +42 +895 +35 +561 +42 +137 +640 +1276 +105 +4943 +4943 +4943 +297 +65 +1 +628 +161 +3712 +3712 +3712 +1 +653 +966 +80 +251 +21 +2490 +43 +276 +80 +262 +1262 +1383 +23 +692 +1271 +80 +115 +136 +1 +1044 +151 +79 +1735 +1361 +1361 +1361 +90 +3191 +152 +48 +29 +61 +1389 +240 +2468 +2433 +88 +696 +696 +696 +1755 +1755 +1755 +906 +906 +906 +293 +532 +526 +240 +1 +845 +845 +845 +2500 +1766 +85 +87 +671 +245 +914 +689 +37 +86 +332 +481 +735 +112 +2 +0 +1 +4646 +4646 +4646 +4298 +4298 +4298 +179 +181 +1367 +365 +164 +2529 +9 +946 +216 +30 +23 +4564 +4564 +4564 +4657 +4657 +4657 +293 +284 +233 +94 +1418 +1418 +1418 +258 +1002 +139 +398 +608 +56 +2504 +2504 +2504 +204 +87 +274 +49 +542 +62 +27 +1 +3664 +2716 +2716 +2716 +25 +706 +1370 +2590 +1 +396 +31 +1070 +1070 +1070 +2312 +2312 +2312 +92 +0 +673 +30 +38 +2499 +2499 +2499 +1412 +427 +2129 +3284 +3284 +3284 +162 +305 +3258 +3258 +3258 +703 +645 +3615 +3615 +3615 +341 +276 +1366 +93 +697 +697 +697 +54 +355 +37 +57 +4015 +4015 +4015 +1100 +1100 +1100 +149 +1762 +1762 +1762 +1262 +65 +20 +4897 +4897 +4897 +753 +0 +679 +63 +3279 +32 +4856 +4856 +4856 +1 +28 +4716 +4716 +4716 +65 +750 +2 +29 +23 +4790 +4790 +4790 +127 +894 +260 +2164 +3 +1175 +236 +583 +1098 +1 +42 +335 +4629 +4629 +4629 +2 +1799 +399 +121 +2266 +441 +2122 +72 +172 +1472 +0 +3059 +3059 +3059 +1403 +1403 +1403 +44 +4425 +4425 +4425 +339 +339 +339 +0 +3364 +3364 +3364 +1114 +1753 +1753 +1753 +755 +30 +1136 +399 +82 +1102 +617 +61 +3422 +173 +105 +3778 +3778 +3778 +712 +318 +3635 +30 +1419 +49 +65 +65 +0 +324 +787 +18 +1 +2718 +2718 +2718 +4 +1391 +34 +33 +3826 +3826 +3826 +73 +0 +6 +59 +1005 +165 +4732 +4732 +4732 +56 +1823 +334 +4759 +4759 +4759 +732 +55 +182 +37 +361 +26 +3965 +3965 +3965 +365 +382 +1531 +115 +4758 +4758 +4758 +1417 +110 +1110 +121 +219 +4784 +4784 +4784 +0 +4034 +3942 +3942 +3942 +46 +2595 +2197 +3665 +3665 +3665 +30 +76 +2859 +2859 +2859 +4380 +4380 +4380 +1850 +731 +2507 +800 +0 +34 +1327 +24 +325 +57 +3 +24 +70 +30 +1339 +4 +64 +324 +324 +324 +4830 +4830 +4830 +681 +133 +2202 +2202 +2202 +203 +2 +2239 +381 +1108 +1108 +1108 +3156 +3156 +3156 +3 +307 +40 +3315 +30 +2918 +22 +3716 +3716 +3716 +2528 +3284 +3284 +3284 +254 +56 +1 +365 +3164 +3164 +3164 +53 +0 +0 +2531 +634 +300 +4610 +4610 +4610 +3121 +4397 +4397 +4397 +1388 +1388 +1388 +31 +371 +70 +0 +3656 +3656 +3656 +5 +2137 +2389 +2389 +2389 +26 +6 +4737 +4737 +4737 +1513 +1195 +22 +233 +328 +182 +180 +100 +1897 +1897 +1897 +26 +171 +2602 +1815 +1815 +1815 +11 +88 +178 +0 +27 +4741 +4741 +4741 +21 +121 +4734 +4734 +4734 +505 +505 +505 +31 +703 +4083 +4083 +4083 +2428 +1867 +1992 +3168 +3168 +3168 +188 +509 +509 +509 +2823 +1320 +3144 +152 +3082 +3710 +3710 +3710 +2998 +50 +50 +50 +1559 +689 +1372 +1372 +1372 +2091 +1010 +1010 +1010 +2267 +1835 +3246 +3246 +3246 +2900 +2900 +2900 +21 +1 +4476 +4476 +4476 +337 +201 +29 +4057 +4057 +4057 +42 +33 +3318 +3318 +3318 +1047 +84 +64 +24 +4042 +4042 +4042 +20 +2367 +33 +3555 +3555 +3555 +0 +105 +1684 +1 +1379 +25 +29 +92 +455 +455 +455 +1541 +1541 +1541 +1995 +2290 +447 +33 +101 +1455 +1455 +1455 +31 +2507 +2045 +2045 +2045 +7 +20 +31 +21 +0 +387 +374 +100 +32 +3349 +3349 +3349 +37 +1267 +373 +1 +200 +68 +339 +40 +532 +532 +532 +1492 +1886 +5 +1400 +7 +468 +951 +472 +1193 +1930 +1930 +1930 +29 +4211 +4211 +4211 +119 +1 +0 +94 +371 +28 +183 +21 +1502 +1502 +1502 +46 +491 +491 +491 +1416 +1416 +1416 +3359 +3359 +3359 +2511 +4 +773 +0 +3 +100 +0 +21 +0 +45 +1496 +1496 +1496 +116 +4727 +4727 +4727 +394 +1993 +138 +2229 +2229 +2229 +1476 +3652 +3652 +3652 +21 +351 +3781 +3781 +3781 +28 +2113 +1510 +2930 +2930 +2930 +22 +22 +3254 +3254 +3254 +203 +4056 +3024 +1159 +37 +58 +46 +1779 +355 +1091 +40 +21 +0 +880 +2882 +2882 +2882 +1144 +3614 +3614 +3614 +0 +399 +20 +30 +92 +1673 +256 +2735 +2735 +2735 +4 +40 +2964 +2964 +2964 +45 +436 +3090 +3090 +3090 +403 +983 +1549 +1058 +1712 +22 +1539 +376 +357 +24 +9 +3066 +3066 +3066 +2897 +2910 +34 +8 +4 +549 +3589 +3589 +3589 +717 +191 +60 +24 +0 +33 +25 +4825 +4825 +4825 +1860 +52 +35 +4401 +4401 +4401 +3221 +83 +1893 +39 +603 +53 +991 +2615 +197 +197 +197 +7 +75 +2825 +31 +775 +775 +775 +2854 +2854 +2854 +714 +3093 +3093 +3093 +80 +745 +5 +1815 +69 +618 +1840 +2279 +2279 +2279 +847 +426 +390 +753 +178 +284 +284 +284 +248 +1 +8 +1537 +594 +1537 +1537 +1537 +74 +0 +2352 +2352 +2352 +3487 +3487 +3487 +2989 +2989 +2989 +1 +26 +4110 +4110 +4110 +1824 +2318 +2318 +2318 +3669 +139 +391 +704 +1 +49 +1 +37 +21 +2930 +2863 +2863 +2863 +785 +785 +785 +924 +3519 +40 +27 +1822 +0 +25 +0 +1108 +4700 +4700 +4700 +507 +1831 +1 +4432 +4432 +4432 +2566 +0 +1810 +212 +82 +22 +28 +685 +33 +143 +638 +638 +638 +203 +1166 +1166 +1166 +37 +22 +35 +36 +798 +798 +798 +330 +283 +42 +284 +1994 +73 +2941 +2638 +2638 +2638 +35 +1311 +3 +274 +1059 +1059 +1059 +757 +2304 +4628 +4628 +4628 +5 +3258 +3258 +3258 +799 +2373 +11 +635 +2634 +2634 +2634 +2537 +2654 +28 +4450 +2304 +0 +378 +2478 +2478 +2478 +35 +1380 +1090 +396 +396 +396 +428 +428 +428 +28 +34 +692 +692 +692 +3534 +3534 +3534 +1 +99 +58 +3 +1 +4608 +4608 +4608 +1 +506 +293 +3326 +882 +2188 +3033 +3033 +3033 +29 +5 +27 +514 +2690 +2690 +2690 +207 +130 +23 +67 +30 +1356 +1356 +1356 +3933 +3933 +3933 +3610 +3610 +3610 +430 +26 +1786 +2652 +2652 +2652 +62 +460 +760 +3787 +3787 +3787 +43 +2 +91 +3628 +3628 +3628 +3825 +3825 +3825 +1952 +45 +1740 +21 +2642 +21 +109 +1118 +1509 +1509 +1509 +30 +4 +20 +522 +295 +60 +131 +2263 +2263 +2263 +1801 +1801 +1801 +0 +111 +731 +731 +731 +0 +2133 +96 +20 +3970 +3970 +3970 +203 +4146 +4146 +4146 +518 +518 +518 +24 +3040 +3040 +3040 +2091 +1908 +795 +795 +795 +21 +1849 +51 +150 +230 +4 +36 +61 +1128 +472 +473 +473 +473 +35 +387 +34 +3426 +2111 +22 +697 +1241 +26 +1470 +1269 +849 +3350 +3350 +3350 +3058 +3058 +3058 +52 +9 +3363 +3363 +3363 +21 +3720 +3720 +3720 +65 +36 +2900 +2900 +2900 +986 +30 +0 +38 +748 +1747 +1126 +4 +4406 +4406 +4406 +4202 +86 +2688 +1529 +0 +33 +1591 +1591 +1591 +15 +1957 +3119 +30 +5 +4629 +4629 +4629 +34 +1490 +1490 +1490 +55 +1862 +1862 +1862 +96 +190 +1433 +416 +850 +3494 +3494 +3494 +830 +28 +169 +4658 +4658 +4658 +2577 +140 +652 +1586 +0 +370 +1365 +201 +1 +82 +3030 +61 +74 +380 +1080 +4217 +4217 +4217 +5 +1 +3748 +3748 +3748 +2255 +411 +508 +201 +3 +21 +198 +29 +2196 +2237 +24 +1376 +1421 +5 +1295 +3604 +3604 +3604 +149 +149 +149 +376 +1473 +1473 +1473 +2371 +215 +489 +184 +184 +184 +62 +1418 +1418 +1418 +23 +23 +820 +96 +574 +32 +3492 +3492 +3492 +1454 +2985 +2985 +2985 +119 +38 +1591 +2271 +2271 +2271 +10 +2232 +3009 +3009 +3009 +3785 +3785 +3785 +1399 +2856 +2856 +2856 +4201 +4201 +4201 +22 +545 +38 +69 +1904 +1904 +1904 +2818 +97 +25 +510 +1524 +122 +1931 +1931 +1931 +3444 +3444 +3444 +878 +803 +41 +146 +31 +3359 +3359 +3359 +3724 +3724 +3724 +2938 +2938 +2938 +50 +478 +13 +2 +286 +112 +2626 +2626 +2626 +766 +156 +42 +2895 +1052 +60 +3655 +3655 +3655 +181 +634 +2625 +3149 +1821 +24 +402 +219 +20 +44 +48 +57 +73 +468 +1194 +32 +5 +49 +4729 +46 +205 +3782 +1 +2 +302 +111 +3749 +28 +412 +1520 +36 +2892 +2892 +2892 +68 +1626 +2226 +1198 +0 +173 +216 +216 +216 +1965 +20 +1776 +757 +23 +4366 +4366 +4366 +95 +139 +1566 +188 +1375 +0 +2248 +2248 +2248 +4836 +4836 +4836 +1002 +32 +4533 +4533 +4533 +2207 +104 +0 +592 +458 +21 +1986 +1986 +1986 +256 +1954 +1954 +1954 +829 +115 +1532 +1532 +1532 +1 +214 +2976 +669 +4860 +4860 +4860 +1601 +1601 +1601 +29 +31 +216 +2227 +113 +4351 +4351 +4351 +1230 +3110 +397 +41 +3 +1 +110 +77 +1994 +1994 +1994 +4041 +1219 +588 +338 +22 +27 +2667 +2667 +2667 +2009 +2009 +2009 +31 +222 +91 +2 +3012 +4582 +4582 +4582 +0 +1736 +2442 +88 +505 +2718 +4497 +4497 +4497 +155 +3352 +3352 +3352 +10 +24 +4889 +4889 +4889 +520 +1856 +53 +2 +33 +2187 +2187 +2187 +1 +2965 +2965 +2965 +117 +30 +3991 +3991 +3991 +633 +40 +385 +1964 +57 +34 +3962 +2163 +2281 +3828 +3828 +3828 +157 +4493 +4493 +4493 +2782 +577 +70 +4448 +4448 +4448 +56 +3344 +3344 +3344 +3 +39 +149 +149 +149 +352 +759 +61 +89 +22 +1128 +1128 +1128 +35 +142 +2367 +2367 +2367 +159 +966 +2992 +2992 +2992 +3398 +3398 +3398 +372 +376 +21 +107 +3824 +3824 +3824 +4854 +4854 +4854 +1867 +339 +383 +755 +819 +81 +864 +75 +32 +258 +396 +3080 +3080 +3080 +45 +1243 +107 +3100 +3061 +3061 +3061 +1 +62 +61 +3236 +3236 +3236 +1955 +1955 +1955 +1336 +0 +0 +1292 +1292 +1292 +95 +1953 +30 +488 +4836 +4836 +4836 +153 +135 +839 +839 +839 +1284 +2916 +3056 +1555 +206 +1924 +1924 +1924 +2928 +3138 +3138 +3138 +2589 +2589 +2589 +59 +2659 +25 +0 +20 +106 +31 +31 +233 +4495 +4495 +4495 +835 +847 +1149 +381 +51 +27 +2619 +120 +836 +836 +836 +4878 +4878 +4878 +1585 +1585 +1585 +32 +1243 +90 +329 +44 +2166 +2166 +2166 +4033 +4033 +4033 +3051 +1 +34 +845 +285 +1 +2101 +0 +4137 +4137 +4137 +141 +52 +3824 +3824 +3824 +2450 +2 +69 +2619 +0 +36 +1530 +1201 +69 +1153 +4076 +4076 +4076 +1829 +1829 +1829 +132 +4701 +4701 +4701 +32 +99 +2327 +3074 +3074 +3074 +55 +2403 +2403 +2403 +27 +2156 +381 +3 +124 +1092 +3818 +3818 +3818 +4827 +4827 +4827 +625 +68 +29 +0 +2 +109 +1242 +1242 +1242 +187 +33 +225 +93 +35 +117 +2171 +18 +71 +49 +0 +3755 +1158 +137 +137 +137 +2402 +2402 +2402 +100 +1893 +2618 +2618 +2618 +309 +953 +1426 +1426 +1426 +3651 +3651 +3651 +458 +1 +161 +415 +3844 +3844 +3844 +2337 +3039 +3039 +3039 +1892 +2 +1417 +1417 +1417 +1770 +140 +53 +801 +2367 +2816 +2816 +2816 +2553 +4194 +4194 +4194 +723 +6 +25 +219 +1852 +103 +1822 +43 +365 +34 +1847 +34 +58 +4929 +4929 +4929 +731 +2540 +2540 +2540 +1611 +99 +2502 +2328 +1549 +1273 +1273 +1273 +6 +736 +4045 +4045 +4045 +1084 +24 +438 +0 +572 +4206 +4206 +4206 +1 +237 +2605 +2605 +2605 +3100 +1566 +1566 +1566 +1372 +1372 +1372 +31 +120 +176 +2680 +2680 +2680 +362 +214 +2787 +210 +1976 +1976 +1976 +77 +1803 +49 +25 +2012 +2012 +2012 +438 +438 +438 +1973 +361 +28 +366 +4032 +4032 +4032 +91 +4110 +4110 +4110 +63 +2410 +28 +9 +49 +194 +26 +95 +99 +982 +3277 +3277 +3277 +116 +923 +697 +1170 +54 +2537 +2537 +2537 +1267 +1204 +3565 +3565 +3565 +2498 +107 +42 +1708 +66 +28 +573 +997 +0 +1512 +1512 +1512 +4477 +4477 +4477 +46 +30 +81 +67 +186 +4 +31 +78 +4382 +2174 +366 +1933 +1034 +179 +6 +231 +1737 +1737 +1737 +1161 +156 +97 +4917 +4917 +4917 +4236 +4236 +4236 +0 +446 +27 +71 +55 +36 +825 +1 +823 +823 +823 +327 +327 +327 +81 +173 +0 +2740 +46 +46 +2719 +2719 +2719 +845 +26 +21 +1 +4276 +4276 +4276 +1282 +0 +2110 +3971 +63 +4614 +4614 +4614 +495 +3572 +2314 +1412 +79 +3128 +3128 +3128 +578 +2536 +2536 +2536 +4490 +86 +1872 +3543 +3543 +3543 +977 +977 +977 +303 +0 +2087 +2574 +2574 +2574 +907 +28 +589 +71 +32 +31 +3593 +3593 +3593 +84 +338 +153 +2408 +2408 +2408 +62 +814 +3170 +3170 +3170 +83 +22 +1288 +212 +1788 +47 +1 +2346 +2346 +2346 +4922 +4922 +4922 +2 +561 +50 +4086 +4086 +4086 +135 +22 +1085 +1085 +1085 +177 +80 +0 +23 +20 +2506 +2122 +2122 +2122 +367 +2837 +2837 +2837 +23 +985 +10 +1323 +1323 +1323 +2795 +1527 +4083 +4083 +4083 +72 +2 +31 +432 +1723 +534 +3075 +127 +2708 +2708 +2708 +365 +538 +2771 +2771 +2771 +119 +920 +4669 +4669 +4669 +861 +366 +173 +67 +159 +49 +2738 +124 +22 +123 +72 +27 +3428 +39 +57 +2769 +64 +956 +11 +63 +13 +588 +2415 +2415 +2415 +383 +1120 +3658 +3658 +3658 +661 +661 +661 +1984 +153 +29 +2163 +988 +37 +43 +0 +0 +980 +6 +27 +1985 +875 +2017 +2927 +2927 +2927 +2757 +613 +4718 +4718 +4718 +367 +17 +242 +200 +28 +1331 +216 +257 +257 +257 +29 +251 +2021 +2527 +2527 +2527 +1153 +29 +177 +75 +1185 +485 +2212 +389 +43 +36 +590 +1812 +1812 +1812 +1620 +59 +80 +3192 +3192 +3192 +21 +925 +245 +630 +32 +2961 +29 +2636 +1 +390 +935 +336 +25 +4567 +4567 +4567 +128 +95 +1 +2117 +4 +30 +574 +554 +2328 +2328 +2328 +97 +43 +106 +25 +1364 +573 +0 +622 +0 +2066 +4978 +4978 +4978 +2185 +2185 +2185 +151 +338 +0 +2375 +31 +1 +0 +250 +94 +4163 +4163 +4163 +282 +165 +3546 +3546 +3546 +3199 +229 +3774 +3774 +3774 +2001 +192 +40 +2534 +2534 +2534 +0 +109 +4812 +4812 +4812 +91 +1181 +1181 +1181 +125 +269 +4737 +4737 +4737 +2797 +2797 +2797 +315 +34 +0 +20 +66 +1 +334 +4991 +4991 +4991 +84 +202 +488 +28 +1009 +1009 +1009 +1626 +2283 +2283 +2283 +2450 +1168 +143 +38 +582 +160 +1936 +1936 +1936 +147 +31 +4560 +4560 +4560 +139 +26 +1 +75 +72 +2884 +2884 +2884 +732 +66 +163 +16 +5 +366 +249 +4203 +4203 +4203 +23 +3128 +3128 +3128 +0 +1008 +1008 +1008 +55 +560 +560 +560 +1346 +0 +1919 +26 +0 +26 +635 +658 +4 +44 +112 +112 +112 +0 +5 +221 +4683 +4683 +4683 +264 +264 +264 +0 +32 +148 +29 +835 +881 +1 +2434 +2434 +2434 +98 +176 +1382 +80 +48 +62 +42 +57 +47 +1511 +147 +235 +2891 +2891 +2891 +410 +3400 +81 +4984 +4984 +4984 +2534 +2534 +2534 +3598 +3598 +3598 +732 +732 +732 +54 +422 +21 +1855 +3197 +3197 +3197 +117 +2122 +2122 +2122 +1024 +41 +138 +2859 +2859 +2859 +0 +66 +0 +768 +768 +768 +1 +4794 +4794 +4794 +38 +2635 +226 +3958 +3958 +3958 +662 +71 +71 +71 +0 +2827 +2827 +2827 +96 +367 +2768 +2768 +2768 +277 +2196 +0 +1969 +60 +688 +2288 +23 +46 +4986 +4986 +4986 +1741 +2397 +2397 +2397 +604 +117 +47 +1 +3665 +2241 +72 +208 +1570 +1570 +1570 +145 +67 +23 +170 +2 +247 +35 +2574 +2852 +1639 +1639 +1639 +22 +1385 +2641 +20 +77 +72 +3506 +365 +0 +68 +77 +2743 +2743 +2743 +26 +4514 +4514 +4514 +2 +30 +3 +230 +3667 +1371 +1371 +1371 +3923 +3923 +3923 +128 +59 +59 +59 +4327 +4327 +4327 +86 +1678 +3 +2504 +1579 +1579 +1579 +0 +1033 +2398 +2398 +2398 +4238 +4238 +4238 +3307 +3480 +37 +1460 +116 +4 +2015 +2015 +2015 +2220 +2220 +2220 +232 +583 +667 +3689 +3689 +3689 +3 +4083 +4083 +4083 +394 +83 +310 +0 +168 +4419 +4419 +4419 +969 +969 +969 +528 +402 +1587 +4859 +4859 +4859 +572 +572 +572 +674 +3903 +3903 +3903 +0 +26 +2255 +68 +3 +34 +51 +3293 +3293 +3293 +1061 +2456 +2456 +2456 +176 +188 +1 +2130 +31 +30 +339 +368 +368 +368 +1 +166 +275 +255 +341 +751 +31 +657 +657 +657 +330 +841 +53 +1760 +1760 +1760 +210 +258 +1000 +3881 +3881 +3881 +41 +3974 +3974 +3974 +1827 +1547 +1547 +1547 +1499 +1499 +1499 +30 +318 +52 +41 +37 +37 +37 +21 +99 +677 +2534 +2156 +2156 +2156 +1742 +637 +1690 +1690 +1690 +2511 +1291 +3297 +3297 +3297 +131 +505 +452 +0 +3670 +3670 +3670 +1 +28 +3173 +3173 +3173 +25 +1366 +28 +103 +56 +63 +2495 +2495 +2495 +2255 +2255 +2255 +2872 +33 +1166 +68 +1 +1086 +69 +69 +69 +2609 +2609 +2609 +269 +20 +2770 +2770 +2770 +2 +1130 +1130 +1130 +1285 +1225 +527 +33 +2308 +45 +2164 +2164 +2164 +2369 +2369 +2369 +20 +642 +642 +642 +1127 +1590 +626 +3462 +3462 +3462 +1788 +78 +129 +0 +2089 +2089 +2089 +30 +26 +1030 +59 +3961 +568 +1 +1376 +171 +23 +9 +0 +96 +75 +264 +1348 +1348 +1348 +3235 +3235 +3235 +0 +2 +2840 +2840 +2840 +405 +3933 +1719 +3192 +22 +32 +664 +689 +159 +292 +55 +2855 +2855 +2855 +109 +2457 +2457 +2457 +2158 +812 +1 +600 +302 +852 +0 +395 +223 +2572 +2572 +2572 +105 +40 +1730 +4361 +20 +0 +2101 +22 +57 +4667 +4667 +4667 +526 +177 +177 +177 +284 +783 +25 +68 +562 +4053 +4053 +4053 +169 +26 +524 +89 +2 +0 +326 +256 +26 +0 +1283 +756 +1236 +104 +35 +302 +4304 +4304 +4304 +2351 +2351 +2351 +1868 +3622 +1298 +12 +21 +2931 +2931 +2931 +2802 +2802 +2802 +138 +63 +2816 +2816 +2816 +254 +6 +99 +11 +32 +1007 +2512 +88 +88 +88 +375 +61 +44 +4568 +4568 +4568 +3389 +3389 +3389 +39 +24 +4673 +4673 +4673 +4685 +4685 +4685 +2911 +2911 +2911 +0 +153 +344 +344 +344 +3270 +2192 +264 +2803 +2803 +2803 +0 +114 +650 +2859 +2859 +2859 +204 +279 +6 +525 +26 +20 +1070 +63 +132 +132 +132 +756 +61 +258 +269 +436 +0 +2656 +37 +41 +805 +1551 +1551 +1551 +110 +33 +10 +1753 +1753 +1753 +0 +103 +103 +103 +876 +876 +876 +3290 +3290 +3290 +3430 +58 +0 +336 +92 +1460 +1507 +1818 +1818 +1818 +25 +2542 +1006 +1006 +1006 +3306 +3306 +3306 +97 +33 +23 +26 +30 +0 +2862 +2 +20 +141 +1276 +825 +365 +360 +42 +103 +698 +413 +1321 +2517 +2517 +2517 +62 +1100 +687 +1116 +1331 +62 +36 +3430 +2915 +1366 +277 +2970 +2970 +2970 +10 +2274 +24 +4169 +4169 +4169 +36 +1 +366 +21 +1752 +1752 +1752 +26 +3355 +3355 +3355 +325 +351 +522 +22 +722 +950 +950 +950 +0 +23 +50 +34 +1621 +1621 +1621 +2028 +2028 +2028 +36 +4793 +4793 +4793 +957 +1387 +91 +756 +1 +139 +328 +450 +3003 +71 +1 +224 +4866 +4866 +4866 +2347 +2347 +2347 +2330 +2330 +2330 +24 +35 +130 +301 +1784 +146 +731 +3914 +3914 +3914 +1 +3192 +27 +1598 +172 +990 +24 +1141 +286 +310 +1673 +1673 +1673 +40 +3653 +3653 +3653 +2039 +2039 +2039 +25 +20 +27 +3264 +3264 +3264 +303 +751 +4467 +4467 +4467 +1 +101 +1443 +120 +98 +4 +4281 +4281 +4281 +5 +121 +20 +3245 +3245 +3245 +75 +1555 +1555 +1555 +428 +82 +27 +1060 +4364 +4364 +4364 +2981 +2981 +2981 +186 +4437 +4437 +4437 +125 +0 +2298 +2298 +2298 +1337 +109 +2560 +2560 +2560 +30 +2241 +1877 +30 +2299 +22 +241 +580 +91 +2759 +2759 +2759 +704 +463 +51 +435 +0 +204 +31 +2676 +0 +4295 +4295 +4295 +40 +1539 +37 +1531 +1 +1525 +290 +2184 +26 +28 +171 +2313 +84 +184 +368 +4 +2303 +3719 +3719 +3719 +7 +3288 +3288 +3288 +4 +110 +443 +127 +314 +20 +7 +1537 +1537 +1537 +67 +21 +2 +2585 +214 +589 +0 +456 +3653 +3653 +3653 +128 +1 +519 +151 +0 +67 +360 +0 +41 +2565 +2565 +2565 +31 +3 +730 +1167 +2220 +84 +28 +24 +43 +0 +1 +1828 +2413 +2413 +2413 +1081 +1081 +1081 +1864 +2123 +410 +2257 +2257 +2257 +2559 +25 +1598 +1598 +1598 +910 +0 +784 +2589 +2589 +2589 +38 +951 +316 +316 +316 +14 +200 +526 +23 +54 +3213 +3213 +3213 +75 +40 +675 +741 +23 +164 +5 +2447 +2447 +2447 +23 +0 +4344 +4344 +4344 +2 +2684 +2684 +2684 +719 +719 +719 +2273 +1068 +1856 +1856 +1856 +159 +1045 +0 +62 +172 +26 +874 +2785 +2973 +2973 +2973 +1259 +3211 +24 +45 +0 +2534 +1 +7 +32 +23 +21 +4134 +4134 +4134 +1873 +50 +22 +2912 +99 +5 +2094 +41 +29 +32 +24 +2594 +29 +28 +2927 +1740 +1740 +1740 +195 +72 +103 +4729 +4729 +4729 +36 +3783 +3783 +3783 +4091 +4091 +4091 +348 +4989 +2763 +3049 +4 +22 +349 +57 +2711 +1012 +299 +0 +245 +2317 +123 +41 +23 +1096 +31 +1009 +1108 +1108 +1108 +73 +61 +2 +56 +33 +0 +71 +311 +311 +918 +32 +274 +97 +767 +767 +767 +2641 +4746 +4746 +4746 +62 +0 +34 +777 +53 +129 +54 +21 +398 +3293 +3293 +3293 +1348 +35 +806 +259 +150 +1090 +792 +1189 +27 +2315 +48 +0 +0 +759 +40 +363 +93 +104 +37 +3687 +3687 +3687 +68 +26 +71 +37 +63 +57 +20 +2662 +2662 +2662 +21 +35 +470 +2998 +2998 +2998 +40 +848 +54 +72 +93 +322 +5 +26 +29 +2965 +2965 +2965 +276 +23 +32 +127 +239 +239 +239 +1160 +53 +1548 +27 +57 +34 +0 +60 +58 +8 +1928 +1928 +1928 +300 +434 +45 +410 +4278 +4278 +4278 +1154 +3683 +3683 +3683 +31 +1 +198 +32 +796 +4024 +4024 +4024 +1110 +53 +32 +58 +4540 +4540 +4540 +4116 +4116 +4116 +761 +67 +328 +603 +21 +3953 +3953 +3953 +4387 +4387 +4387 +476 +29 +1 +0 +1259 +73 +0 +203 +1509 +2505 +3305 +2439 +2340 +214 +2283 +0 +34 +381 +0 +7 +3049 +3049 +3049 +364 +3090 +3090 +3090 +844 +844 +844 +0 +178 +5 +2995 +2995 +2995 +21 +387 +4709 +4709 +4709 +2740 +2740 +2740 +26 +213 +3581 +3581 +3581 +221 +59 +2664 +2664 +2664 +380 +380 +380 +498 +25 +56 +3195 +3195 +3195 +225 +670 +3122 +3122 +3122 +0 +65 +1098 +49 +132 +945 +945 +945 +50 +731 +620 +620 +620 +58 +1464 +100 +59 +131 +65 +58 +58 +21 +0 +357 +536 +4844 +4844 +4844 +2947 +2947 +2947 +93 +769 +28 +20 +21 +48 +58 +1144 +83 +58 +1095 +1531 +0 +44 +3959 +3959 +3959 +95 +4045 +69 +3073 +3073 +3073 +182 +27 +66 +26 +120 +30 +4060 +4060 +4060 +27 +0 +29 +194 +86 +44 +4 +28 +431 +789 +1489 +743 +155 +22 +733 +132 +0 +115 +67 +1 +1087 +30 +117 +0 +1 +2318 +4068 +104 +2358 +2358 +2358 +88 +1913 +1913 +1913 +4826 +4826 +4826 +2612 +41 +20 +624 +4 +98 +796 +1777 +589 +589 +589 +3514 +3514 +3514 +1026 +434 +2644 +0 +5 +0 +59 +21 +4852 +4852 +4852 +2201 +35 +1198 +4382 +4382 +4382 +35 +71 +800 +33 +32 +20 +42 +52 +34 +29 +772 +2267 +2267 +2267 +1097 +107 +0 +2208 +4 +1103 +134 +3168 +3168 +3168 +7 +48 +1753 +29 +107 +0 +310 +82 +124 +1171 +3788 +3788 +3788 +1 +62 +66 +93 +0 +4748 +4748 +4748 +94 +418 +53 +4966 +4966 +4966 +29 +27 +1097 +3442 +176 +1672 +837 +0 +185 +0 +1023 +128 +64 +1464 +31 +31 +1 +2076 +2076 +2076 +214 +616 +1549 +32 +3090 +3090 +3090 +4502 +4502 +4502 +37 +98 +89 +3328 +3328 +3328 +3774 +3774 +3774 +2775 +517 +78 +30 +869 +0 +32 +186 +2256 +66 +3451 +3451 +3451 +836 +2208 +98 +85 +32 +260 +3005 +3005 +3005 +441 +441 +441 +139 +91 +102 +47 +517 +76 +41 +1792 +1792 +1792 +1705 +4153 +4153 +4153 +933 +90 +2221 +2221 +2221 +2040 +1769 +1769 +1769 +7 +2753 +37 +812 +139 +94 +3636 +67 +24 +4786 +4786 +4786 +2846 +4 +29 +1296 +46 +33 +62 +39 +1 +2772 +0 +183 +319 +188 +914 +1278 +2992 +3595 +136 +3388 +3388 +3388 +62 +681 +1 +50 +26 +122 +26 +147 +94 +150 +63 +366 +915 +1 +133 +3051 +1403 +99 +486 +0 +1290 +515 +1670 +30 +58 +1741 +1741 +1741 +641 +23 +52 +0 +3409 +3409 +3409 +133 +1942 +1942 +1942 +559 +407 +2054 +367 +93 +109 +367 +80 +201 +0 +2922 +106 +106 +106 +56 +4284 +4284 +4284 +1464 +72 +2307 +71 +31 +1299 +1299 +1299 +4382 +4382 +4382 +28 +310 +1 +2042 +3141 +371 +2827 +2827 +2827 +2051 +71 +0 +24 +123 +191 +2373 +2373 +2373 +1 +24 +0 +25 +634 +4 +3 +140 +148 +369 +0 +55 +372 +216 +4516 +4516 +4516 +41 +129 +1 +4081 +2645 +124 +3766 +246 +116 +62 +243 +659 +659 +659 +0 +126 +23 +150 +3544 +276 +276 +276 +830 +173 +210 +854 +514 +34 +195 +105 +2625 +2625 +2625 +1489 +1 +20 +1548 +21 +1 +5 +857 +78 +26 +2270 +2648 +2648 +2648 +2889 +2889 +2889 +861 +4942 +4942 +4942 +37 +1 +0 +3309 +3309 +3309 +3613 +3613 +3613 +25 +338 +898 +113 +32 +2336 +2336 +2336 +2024 +1623 +3302 +3302 +3302 +3167 +3167 +3167 +1268 +2762 +2762 +2762 +151 +73 +48 +114 +2945 +2945 +2945 +4136 +4136 +4136 +102 +2057 +2057 +2057 +79 +928 +928 +928 +320 +4537 +4537 +4537 +0 +626 +3653 +72 +58 +814 +2408 +2408 +2408 +54 +168 +3622 +3622 +3622 +2288 +71 +1255 +1735 +1735 +1735 +221 +103 +297 +435 +435 +435 +858 +5 +0 +248 +1436 +1436 +1436 +1766 +1766 +1766 +2525 +2525 +2525 +34 +60 +299 +24 +3843 +3843 +3843 +508 +3116 +3116 +3116 +35 +0 +839 +2700 +79 +3013 +3628 +3628 +3628 +2732 +2732 +2732 +1 +275 +73 +945 +98 +2365 +2365 +2365 +1266 +568 +568 +568 +3 +367 +111 +2106 +1741 +896 +3961 +510 +510 +510 +4134 +4134 +4134 +60 +3499 +3499 +3499 +4189 +4189 +4189 +101 +101 +101 +20 +20 +11 +3560 +3560 +3560 +104 +23 +506 +31 +217 +1411 +1 +2291 +2291 +2291 +21 +101 +1254 +1254 +1254 +93 +3 +377 +105 +1761 +39 +0 +3 +2 +62 +53 +60 +152 +450 +44 +502 +4847 +4847 +4847 +1264 +1509 +1509 +1509 +25 +1778 +2380 +2380 +2380 +74 +2803 +2803 +2803 +299 +1027 +1466 +4635 +4635 +4635 +119 +127 +1334 +23 +1731 +231 +381 +2781 +2781 +2781 +304 +29 +28 +4364 +1459 +2268 +4590 +4590 +4590 +2225 +2225 +2225 +216 +2441 +4082 +101 +266 +3542 +368 +1218 +27 +615 +4206 +785 +3851 +3851 +3851 +1262 +1 +101 +1263 +1263 +1263 +2919 +29 +1275 +1641 +624 +1056 +4759 +4759 +4759 +4604 +4604 +4604 +2 +261 +4704 +4704 +4704 +632 +1586 +2460 +2460 +2460 +137 +61 +1114 +785 +625 +2003 +1891 +81 +133 +2854 +2854 +2854 +2888 +2382 +2382 +2382 +1660 +4252 +4252 +4252 +2811 +2811 +2811 +1947 +1947 +1947 +593 +4553 +4553 +4553 +4839 +4839 +4839 +1386 +1386 +1386 +2360 +2360 +2360 +4930 +4930 +4930 +463 +55 +294 +294 +294 +815 +565 +3 +549 +4973 +4973 +4973 +4423 +4423 +4423 +545 +3983 +3983 +3983 +1165 +2013 +327 +327 +327 +1422 +1422 +1422 +620 +1853 +3173 +3173 +3173 +2772 +2772 +2772 +69 +682 +523 +3946 +3946 +3946 +1275 +1275 +1275 +4182 +4182 +4182 +1876 +1876 +1876 +2383 +2383 +2383 +2442 +581 +684 +564 +1009 +1267 +418 +367 +4580 +4580 +4580 +188 +1002 +7 +495 +4933 +4933 +4933 +1752 +62 +559 +989 +989 +989 +2 +124 +4471 +4471 +4471 +788 +691 +2081 +0 +1729 +3171 +2905 +2905 +2905 +2386 +2386 +2386 +33 +52 +2013 +0 +65 +2989 +4495 +4495 +4495 +0 +409 +2081 +1314 +190 +2262 +2262 +2262 +76 +127 +2314 +0 +4089 +4089 +4089 +237 +375 +1965 +252 +137 +137 +137 +602 +2031 +2031 +2031 +2081 +2081 +2081 +299 +23 +3165 +3165 +3165 +72 +1771 +309 +71 +1903 +1836 +3434 +3434 +3434 +2173 +4024 +1036 +485 +695 +695 +695 +4666 +4666 +4666 +4877 +4877 +4877 +203 +3221 +3221 +3221 +1114 +1940 +223 +2905 +2905 +2905 +69 +0 +2781 +254 +3974 +63 +1027 +1027 +1027 +70 +2008 +2008 +2008 +4729 +4729 +4729 +1514 +60 +4511 +3558 +3558 +3558 +623 +18 +50 +1365 +1365 +1365 +134 +3455 +3455 +3455 +82 +1041 +254 +502 +1350 +879 +967 +967 +967 +248 +3115 +3115 +3115 +509 +2906 +4009 +4009 +4009 +374 +208 +1819 +1819 +1819 +1928 +4987 +4987 +4987 +3609 +3609 +3609 +2102 +1 +360 +918 +0 +3748 +3748 +3748 +327 +2283 +1263 +627 +2084 +1 +325 +1776 +1776 +1776 +4042 +4042 +4042 +2823 +269 +687 +3157 +3157 +3157 +159 +88 +509 +20 +570 +4759 +4759 +4759 +163 +22 +4623 +4623 +4623 +1979 +3252 +3252 +3252 +70 +2905 +2905 +2905 +1936 +4269 +4269 +4269 +1 +1200 +2769 +4863 +4863 +4863 +4222 +1898 +1898 +1898 +890 +4624 +4624 +4624 +1830 +1830 +1830 +23 +2823 +2823 +2823 +467 +82 +2038 +2038 +2038 +61 +3671 +4430 +4430 +4430 +40 +1114 +1114 +1114 +3436 +27 +1668 +3119 +4916 +4916 +4916 +349 +30 +60 +1313 +1 +1930 +643 +985 +29 +1624 +1624 +1624 +2016 +1295 +226 +1309 +1309 +1309 +3888 +3888 +3888 +2415 +1754 +2372 +285 +4244 +4244 +4244 +2459 +3968 +3968 +3968 +1071 +36 +1458 +1458 +1458 +78 +1824 +385 +1236 +7 +942 +20 +1446 +1446 +1446 +2859 +2859 +2859 +51 +20 +284 +2715 +2715 +2715 +2406 +22 +1616 +0 +1530 +42 +49 +995 +33 +20 +1216 +1 +24 +582 +499 +852 +852 +852 +726 +1532 +49 +88 +100 +2903 +2903 +2903 +1188 +32 +556 +3923 +3923 +3923 +662 +775 +595 +2075 +175 +2487 +2487 +2487 +2963 +4205 +4205 +4205 +236 +3924 +3924 +3924 +53 +55 +604 +604 +604 +293 +125 +54 +2246 +22 +8 +25 +224 +1 +1678 +365 +4123 +4123 +4123 +1024 +1307 +1307 +1307 +247 +4610 +4610 +4610 +3215 +727 +1502 +1 +53 +2829 +3968 +3968 +3968 +1420 +1420 +1420 +29 +29 +29 +179 +39 +611 +1084 +1821 +1821 +1821 +261 +2794 +2794 +2794 +1633 +2176 +2176 +2176 +582 +3234 +359 +359 +359 +0 +365 +576 +4305 +4305 +4305 +61 +4567 +4567 +4567 +2573 +2573 +2573 +366 +1247 +1247 +1247 +1283 +446 +3591 +3591 +3591 +2142 +343 +3152 +3152 +3152 +42 +93 +3163 +236 +630 +2920 +2920 +2920 +64 +1602 +1602 +1602 +1745 +1745 +1745 +235 +365 +31 +901 +1176 +1 +335 +13 +24 +29 +888 +888 +888 +1051 +2773 +2773 +2773 +2918 +2918 +2918 +60 +99 +30 +1603 +54 +33 +835 +1082 +3878 +3878 +3878 +67 +906 +2 +9 +1244 +1244 +1244 +369 +30 +53 +0 +3973 +3973 +3973 +2491 +455 +887 +73 +37 +269 +29 +1 +38 +28 +410 +1076 +3948 +3948 +3948 +973 +26 +280 +203 +2566 +2566 +2566 +632 +260 +151 +3616 +3616 +3616 +2473 +2285 +2372 +0 +0 +34 +706 +2765 +2765 +2765 +2619 +2619 +2619 +34 +0 +60 +936 +51 +2 +109 +167 +33 +391 +23 +2434 +253 +106 +227 +404 +254 +3503 +3503 +3503 +1175 +37 +140 +1 +23 +28 +2319 +104 +2423 +2423 +2423 +0 +2115 +700 +462 +0 +1511 +2448 +2448 +2448 +61 +40 +2451 +1651 +1053 +1053 +1053 +635 +1677 +177 +985 +985 +985 +3351 +3351 +3351 +32 +2954 +96 +279 +257 +24 +24 +24 +108 +2369 +272 +2031 +23 +2954 +2954 +2954 +306 +318 +365 +2583 +2583 +2583 +271 +254 +48 +0 +3643 +3643 +3643 +5 +51 +1081 +50 +36 +3028 +3028 +3028 +710 +2 +447 +466 +4844 +4844 +4844 +1887 +1887 +1887 +1802 +8 +41 +73 +96 +1082 +1082 +1082 +1882 +281 +229 +2510 +2510 +2510 +780 +780 +780 +33 +31 +163 +92 +136 +3029 +3029 +3029 +150 +67 +3660 +727 +2150 +729 +28 +291 +0 +61 +35 +105 +1086 +34 +159 +0 +38 +75 +2907 +2907 +2907 +1256 +2143 +27 +368 +249 +1 +342 +342 +342 +2405 +327 +61 +3032 +86 +3738 +3738 +3738 +21 +4003 +4003 +4003 +4 +1313 +9 +633 +2 +3666 +49 +59 +1821 +4732 +4732 +4732 +184 +1734 +3636 +2918 +2918 +2918 +1355 +36 +255 +0 +91 +33 +47 +159 +29 +1916 +1916 +1916 +117 +584 +584 +584 +303 +303 +303 +352 +452 +33 +115 +1197 +4064 +4064 +4064 +369 +2826 +2826 +2826 +425 +1 +3696 +3696 +3696 +3300 +3300 +3300 +1 +3408 +3408 +3408 +74 +407 +271 +319 +24 +43 +96 +90 +2924 +49 +32 +746 +277 +3176 +3976 +3976 +3976 +356 +356 +356 +375 +34 +1778 +2 +29 +1486 +4027 +4027 +4027 +1848 +1848 +1848 +262 +9 +1195 +31 +2909 +2909 +2909 +1172 +1172 +1172 +49 +2 +3302 +3302 +3302 +4076 +4076 +4076 +1 +27 +3271 +25 +676 +90 +1662 +20 +3214 +11 +57 +4781 +4781 +4781 +47 +1977 +281 +0 +325 +112 +60 +1 +2158 +2379 +2379 +2379 +434 +65 +53 +87 +2501 +2501 +2501 +64 +20 +33 +3149 +3149 +3149 +25 +90 +30 +1366 +73 +594 +3244 +3244 +3244 +696 +696 +696 +11 +687 +208 +1444 +1444 +1444 +162 +47 +3956 +3956 +3956 +51 +2916 +709 +2984 +2984 +2984 +0 +1 +79 +256 +393 +393 +393 +275 +3 +191 +2912 +2912 +2912 +57 +348 +670 +4093 +4093 +4093 +526 +3040 +3040 +3040 +367 +33 +1039 +1039 +1039 +1732 +1279 +0 +535 +317 +1027 +35 +1 +4551 +4551 +4551 +4662 +4662 +4662 +183 +25 +1147 +1147 +1147 +3673 +3673 +3673 +60 +2121 +83 +3667 +3667 +3667 +75 +365 +1797 +305 +10 +1403 +4 +3205 +3205 +3205 +3623 +3623 +3623 +370 +1407 +54 +1311 +0 +441 +31 +4772 +4772 +4772 +27 +1412 +2750 +2750 +2750 +540 +388 +936 +1528 +2 +32 +1736 +1736 +1736 +57 +26 +1392 +3293 +3293 +3293 +3326 +282 +1057 +143 +7 +12 +23 +2595 +2595 +2595 +0 +32 +310 +54 +130 +86 +6 +2644 +2644 +2644 +28 +3048 +3048 +3048 +681 +2182 +2182 +2182 +136 +41 +92 +64 +2133 +2133 +2133 +1393 +1393 +1393 +4360 +4360 +4360 +314 +114 +1512 +1349 +1349 +1349 +1555 +423 +3 +29 +72 +23 +728 +329 +3695 +3695 +3695 +1745 +20 +1138 +133 +7 +39 +103 +2201 +2201 +2201 +2202 +2202 +2202 +37 +378 +4694 +4694 +4694 +25 +401 +63 +2681 +4354 +4354 +4354 +290 +557 +463 +272 +382 +44 +22 +124 +2274 +2274 +2274 +35 +1 +188 +2581 +4668 +62 +1507 +33 +3123 +3123 +3123 +1369 +0 +59 +34 +46 +20 +795 +247 +7 +789 +4220 +736 +31 +2679 +138 +120 +30 +2114 +4174 +4174 +4174 +47 +331 +49 +147 +2798 +3170 +3170 +3170 +44 +160 +0 +649 +1191 +4844 +4844 +4844 +15 +58 +45 +969 +32 +4264 +4264 +4264 +173 +2566 +2566 +2566 +0 +361 +2690 +25 +47 +4637 +4637 +4637 +400 +2682 +2682 +2682 +174 +0 +1 +1467 +2985 +0 +65 +2615 +2615 +2615 +86 +2816 +2816 +2816 +2827 +2827 +2827 +1150 +1150 +1150 +99 +185 +2934 +2133 +3964 +3964 +3964 +2938 +2938 +2938 +4854 +4854 +4854 +34 +1694 +1694 +1694 +2610 +32 +88 +373 +2988 +3659 +3659 +3659 +2900 +779 +248 +2411 +26 +16 +1067 +154 +197 +36 +63 +137 +3256 +25 +49 +73 +45 +279 +2708 +2708 +2708 +47 +41 +2223 +3931 +3931 +3931 +52 +141 +95 +251 +28 +29 +4445 +4445 +4445 +4054 +4054 +4054 +262 +1427 +2621 +2621 +2621 +4917 +4917 +4917 +458 +2193 +2193 +2193 +3934 +3934 +3934 +35 +81 +25 +309 +2257 +2257 +2257 +30 +26 +76 +2021 +2021 +2021 +93 +2596 +2596 +2596 +73 +294 +49 +435 +494 +2497 +497 +1315 +1878 +2 +243 +529 +39 +787 +787 +787 +67 +21 +0 +1 +4410 +4410 +4410 +36 +158 +2633 +4054 +4054 +4054 +1 +59 +1463 +57 +2231 +188 +701 +276 +1629 +902 +902 +902 +502 +0 +2829 +0 +501 +2813 +2813 +2813 +354 +310 +1569 +3391 +3391 +3391 +2806 +2806 +2806 +2519 +2519 +2519 +27 +33 +3673 +3673 +3673 +860 +1888 +126 +70 +451 +366 +61 +1 +873 +2954 +155 +722 +722 +722 +145 +365 +13 +1219 +1219 +1219 +1 +0 +2707 +259 +130 +41 +751 +2 +882 +145 +36 +0 +4 +3284 +3284 +3284 +4847 +4847 +4847 +104 +368 +2583 +1620 +1620 +1620 +94 +2940 +2940 +2940 +10 +110 +23 +365 +252 +20 +1 +2218 +4368 +4368 +4368 +1046 +4798 +4798 +4798 +49 +485 +0 +1184 +4830 +4830 +4830 +2195 +2195 +2195 +243 +0 +2544 +1834 +1834 +1834 +1473 +790 +321 +23 +1053 +41 +1109 +3690 +3690 +3690 +50 +55 +2521 +2521 +2521 +2631 +406 +202 +202 +202 +119 +55 +61 +1363 +711 +686 +3428 +3428 +3428 +785 +452 +45 +11 +1706 +460 +460 +460 +1478 +2483 +225 +2120 +388 +296 +1454 +113 +102 +382 +181 +117 +70 +99 +38 +1213 +1213 +1213 +2639 +2639 +2639 +2944 +1509 +70 +109 +23 +340 +38 +39 +156 +105 +0 +3006 +332 +234 +0 +3 +3656 +3749 +3749 +3749 +4410 +4410 +4410 +2006 +133 +819 +1526 +37 +344 +0 +4383 +4383 +4383 +512 +753 +235 +0 +385 +95 +2 +53 +120 +21 +380 +50 +4005 +4005 +4005 +0 +4088 +4088 +4088 +298 +3713 +3713 +3713 +21 +37 +91 +1 +431 +24 +561 +62 +62 +36 +130 +751 +3096 +3096 +3096 +56 +89 +113 +0 +2 +415 +583 +782 +54 +782 +73 +0 +3694 +2 +25 +2323 +2323 +2323 +4066 +3019 +428 +428 +428 +0 +70 +70 +117 +117 +117 +74 +3561 +3561 +3561 +1 +1 +1 +3258 +3258 +3258 +0 +0 +2345 +2345 +2345 +3744 +3744 +3744 +413 +443 +144 +42 +1428 +1428 +1428 +345 +231 +27 +4527 +4527 +4527 +682 +410 +3710 +3710 +3710 +48 +380 +97 +3301 +3301 +3301 +549 +0 +71 +1558 +1558 +1558 +1273 +688 +107 +2967 +423 +0 +1625 +163 +3071 +33 +364 +2410 +3211 +3211 +3211 +2259 +31 +1084 +1084 +1084 +58 +0 +2181 +2181 +2181 +44 +287 +38 +1 +39 +26 +26 +3440 +3440 +3440 +3313 +29 +148 +148 +148 +2955 +2955 +2955 +2213 +61 +68 +27 +155 +21 +2 +92 +47 +1 +3823 +305 +683 +683 +683 +4 +21 +2029 +1 +20 +4772 +4772 +4772 +52 +65 +2253 +38 +181 +209 +1843 +1843 +1843 +45 +859 +32 +125 +2983 +2983 +2983 +28 +4108 +4108 +4108 +1963 +170 +32 +1 +1354 +86 +1459 +1459 +1459 +23 +0 +56 +84 +26 +34 +66 +319 +32 +1018 +73 +3526 +3526 +3526 +28 +271 +2042 +2042 +2042 +489 +341 +1 +26 +81 +48 +4077 +4077 +4077 +32 +0 +32 +689 +0 +1005 +31 +4245 +1 +0 +2 +3368 +3368 +3368 +4407 +170 +3135 +849 +222 +128 +41 +222 +222 +222 +32 +1868 +1868 +1868 +140 +547 +1004 +111 +24 +424 +3508 +3508 +3508 +1046 +1046 +1046 +2326 +2326 +2326 +2395 +42 +95 +142 +229 +304 +0 +368 +262 +262 +262 +80 +20 +28 +148 +57 +48 +46 +3488 +3488 +3488 +36 +30 +43 +816 +2928 +1523 +40 +907 +22 +3764 +3575 +3575 +3575 +222 +3 +275 +371 +773 +4866 +4866 +4866 +1243 +1128 +4190 +4190 +4190 +6 +35 +135 +138 +206 +1754 +22 +21 +241 +278 +1273 +6 +171 +22 +274 +1575 +1575 +1575 +403 +2650 +2650 +2650 +314 +1969 +310 +190 +163 +1346 +405 +167 +2370 +2370 +2370 +135 +65 +31 +895 +1740 +0 +0 +339 +0 +79 +4672 +4672 +4672 +1421 +921 +452 +1182 +372 +0 +763 +4158 +4158 +4158 +38 +946 +177 +1919 +1100 +4265 +4265 +4265 +1869 +48 +511 +511 +511 +2300 +589 +372 +372 +372 +2261 +64 +24 +0 +2373 +2373 +2373 +533 +2995 +2995 +2995 +110 +141 +123 +648 +123 +910 +31 +0 +518 +1156 +3056 +44 +142 +99 +99 +99 +131 +4185 +4185 +4185 +1593 +746 +94 +268 +2684 +2684 +2684 +415 +38 +140 +149 +424 +1388 +24 +2742 +160 +1 +1 +577 +136 +925 +925 +925 +25 +661 +79 +1086 +383 +1 +4570 +4570 +4570 +55 +3347 +3 +26 +376 +14 +2734 +2734 +2734 +193 +193 +193 +1398 +1398 +1398 +805 +3918 +3918 +3918 +1680 +178 +196 +2765 +2765 +2765 +1146 +500 +853 +4969 +4969 +4969 +3209 +3993 +3993 +3993 +264 +60 +4544 +372 +2627 +2627 +2627 +2 +1 +2305 +2305 +2305 +365 +4552 +4552 +4552 +217 +3825 +3825 +3825 +2573 +2573 +2573 +3088 +3088 +3088 +106 +205 +3280 +3280 +3280 +4942 +4942 +4942 +83 +2798 +2798 +2798 +16 +868 +868 +868 +938 +30 +22 +23 +809 +95 +84 +70 +261 +894 +3556 +3556 +3556 +390 +4179 +4179 +4179 +3861 +3861 +3861 +2 +1010 +1010 +1010 +175 +21 +3778 +3778 +3778 +405 +156 +8 +4905 +4905 +4905 +2027 +2027 +2027 +947 +38 +30 +1677 +1677 +1677 +2 +135 +1992 +1992 +1992 +1633 +170 +859 +85 +742 +634 +634 +634 +107 +22 +132 +9 +189 +47 +33 +2881 +763 +2971 +2971 +2971 +1826 +147 +314 +314 +314 +55 +62 +681 +96 +1475 +0 +3 +109 +847 +4626 +4626 +4626 +4941 +4941 +4941 +28 +47 +4682 +4682 +4682 +1273 +0 +81 +172 +24 +337 +2 +1937 +115 +157 +96 +914 +3147 +3147 +3147 +106 +142 +859 +7 +511 +1519 +1519 +1519 +4666 +4666 +4666 +309 +365 +63 +24 +429 +3441 +3441 +3441 +2034 +2034 +2034 +2358 +51 +80 +20 +3077 +1032 +3398 +3398 +3398 +1259 +888 +269 +600 +64 +643 +232 +4860 +4860 +4860 +615 +45 +3180 +3180 +3180 +159 +159 +159 +3465 +3465 +3465 +915 +2001 +2018 +1519 +38 +2050 +2050 +2050 +764 +4974 +4974 +4974 +4302 +4302 +4302 +1551 +1551 +1551 +30 +21 +67 +67 +67 +3451 +3451 +3451 +3834 +3834 +3834 +2 +0 +0 +365 +1540 +1540 +1540 +24 +336 +2642 +2642 +2642 +175 +163 +470 +0 +31 +908 +103 +27 +108 +80 +3291 +3291 +3291 +273 +293 +111 +1350 +447 +96 +247 +40 +0 +3285 +3285 +3285 +119 +96 +0 +31 +29 +127 +2786 +2786 +2786 +438 +241 +42 +1236 +1236 +1236 +1962 +636 +704 +21 +305 +126 +119 +256 +2081 +590 +1351 +4962 +4962 +4962 +214 +580 +1668 +1668 +1668 +4258 +4258 +4258 +1 +228 +228 +228 +1 +129 +2842 +23 +58 +110 +4204 +180 +134 +3235 +3235 +3235 +2087 +77 +161 +142 +65 +72 +68 +1089 +3286 +3286 +3286 +135 +1627 +1818 +2047 +36 +1 +112 +112 +112 +124 +0 +72 +855 +855 +855 +3170 +3170 +3170 +1668 +1668 +1668 +698 +517 +108 +39 +36 +0 +60 +54 +2811 +300 +4 +1586 +599 +243 +1762 +0 +969 +969 +969 +26 +555 +555 +555 +1 +492 +206 +308 +105 +3291 +3291 +3291 +883 +2753 +0 +342 +138 +190 +21 +4298 +4298 +4298 +48 +105 +122 +622 +171 +3149 +1 +2731 +115 +2928 +2928 +2928 +4258 +4258 +4258 +3270 +3270 +3270 +1298 +2227 +34 +2295 +65 +36 +36 +142 +256 +1937 +650 +1497 +25 +259 +55 +219 +212 +212 +212 +0 +365 +2816 +2816 +2816 +319 +56 +4191 +4191 +4191 +301 +134 +272 +620 +1355 +1347 +151 +2859 +1 +559 +215 +1097 +9 +251 +1972 +1972 +1972 +110 +3108 +3108 +3108 +533 +2424 +3511 +138 +56 +105 +1 +3642 +3642 +3642 +180 +1 +39 +139 +656 +346 +2484 +1 +1691 +1691 +1691 +38 +37 +3299 +3299 +3299 +374 +1 +2211 +2211 +2211 +2245 +4258 +4258 +4258 +365 +43 +25 +2072 +1751 +12 +81 +367 +129 +3883 +3883 +3883 +2803 +2 +1 +32 +42 +241 +1075 +112 +179 +4654 +4654 +4654 +56 +588 +225 +351 +44 +1029 +453 +3402 +3402 +3402 +369 +4654 +4654 +4654 +3281 +3281 +3281 +106 +3850 +4302 +4302 +4302 +471 +0 +976 +976 +976 +2725 +2372 +2372 +2372 +201 +585 +547 +99 +134 +252 +437 +85 +3167 +651 +2913 +38 +95 +857 +857 +857 +27 +34 +2152 +1462 +591 +3446 +3446 +3446 +1789 +112 +2193 +2193 +2193 +887 +605 +4889 +4889 +4889 +3286 +3286 +3286 +1331 +1569 +1569 +1569 +1 +1725 +366 +734 +4018 +4018 +4018 +11 +2411 +2411 +2411 +1990 +3811 +1096 +51 +126 +0 +36 +999 +3596 +3596 +3596 +154 +376 +1043 +226 +330 +3965 +3965 +3965 +365 +4877 +4877 +4877 +3880 +3880 +3880 +292 +1898 +1898 +1898 +2870 +169 +4997 +4997 +4997 +21 +3535 +3535 +3535 +30 +3809 +364 +338 +3521 +3521 +3521 +285 +49 +1913 +640 +1408 +259 +144 +1026 +164 +3591 +3591 +3591 +369 +4524 +4524 +4524 +1438 +1438 +1438 +704 +704 +704 +609 +67 +358 +2973 +2973 +2973 +63 +299 +3277 +3277 +3277 +306 +3582 +16 +3970 +3970 +3970 +1013 +1013 +1013 +1410 +1410 +1410 +376 +2963 +88 +579 +2174 +2174 +2174 +87 +59 +2875 +549 +966 +155 +362 +38 +37 +1 +1 +169 +45 +883 +1050 +29 +116 +1778 +1013 +1013 +1013 +71 +66 +1687 +47 +482 +1098 +22 +2849 +1256 +1256 +1256 +276 +73 +175 +225 +20 +84 +382 +770 +1601 +1601 +1601 +2085 +4028 +4028 +4028 +3255 +3255 +3255 +62 +664 +664 +664 +369 +0 +1325 +4158 +4158 +4158 +35 +6 +1 +0 +2891 +2891 +2891 +32 +422 +928 +18 +3963 +3963 +3963 +94 +2848 +2848 +2848 +758 +1 +2901 +2901 +2901 +335 +0 +799 +21 +1820 +1820 +1820 +4 +3980 +3980 +3980 +3253 +3253 +3253 +186 +1745 +44 +4355 +4355 +4355 +0 +1992 +1992 +1992 +1013 +456 +0 +42 +152 +758 +758 +758 +1548 +83 +67 +44 +54 +680 +3039 +3039 +3039 +45 +1276 +33 +1733 +1772 +90 +1010 +25 +2343 +2343 +2343 +1688 +105 +2972 +2972 +2972 +0 +648 +694 +694 +694 +1011 +1 +326 +15 +312 +2877 +1799 +3543 +3543 +3543 +97 +868 +163 +3713 +3713 +3713 +27 +328 +4490 +186 +1404 +4709 +514 +2146 +654 +337 +243 +559 +582 +1124 +3203 +3203 +3203 +814 +28 +1733 +1733 +1733 +0 +3885 +3885 +3885 +557 +1796 +1832 +2484 +2484 +2484 +186 +3998 +3998 +3998 +69 +3223 +139 +137 +1762 +1 +298 +158 +0 +2022 +3123 +3123 +3123 +31 +242 +25 +3039 +3039 +3039 +2822 +2822 +2822 +747 +156 +3269 +2289 +3670 +3670 +3670 +4412 +4412 +4412 +3870 +293 +460 +53 +660 +4 +2561 +3257 +3257 +3257 +2119 +2119 +2119 +90 +216 +62 +29 +2272 +0 +151 +49 +106 +43 +2 +774 +27 +217 +540 +34 +118 +0 +67 +27 +140 +0 +3576 +3576 +3576 +3659 +3659 +3659 +640 +1587 +32 +4459 +4459 +4459 +175 +4768 +4768 +4768 +242 +1323 +1 +128 +34 +1834 +1834 +1834 +0 +2438 +2095 +1806 +30 +62 +4784 +4784 +4784 +3045 +3045 +3045 +3316 +3316 +3316 +4495 +4495 +4495 +4116 +4116 +4116 +63 +1611 +1611 +1611 +49 +74 +0 +20 +621 +94 +289 +20 +64 +84 +31 +74 +23 +500 +3435 +3435 +3435 +516 +1485 +0 +123 +955 +1485 +232 +138 +59 +23 +58 +545 +30 +2376 +119 +424 +0 +264 +1065 +3412 +2 +93 +48 +1781 +381 +1 +40 +2623 +2623 +2623 +4968 +4968 +4968 +141 +21 +727 +727 +727 +1097 +1097 +1097 +61 +0 +21 +274 +1092 +1092 +1092 +4007 +21 +358 +358 +358 +606 +260 +20 +2295 +8 +2337 +2337 +2337 +120 +60 +4172 +3 +0 +31 +3223 +0 +0 +0 +848 +332 +3015 +275 +1105 +0 +3335 +3335 +3335 +57 +1500 +21 +53 +61 +814 +2483 +2483 +2483 +2155 +32 +1 +77 +1 +4314 +4314 +4314 +108 +828 +21 +4 +252 +1802 +72 +264 +169 +4609 +4609 +4609 +1054 +31 +30 +2474 +32 +13 +186 +3373 +3373 +3373 +0 +672 +976 +976 +976 +31 +50 +4863 +4863 +4863 +4029 +665 +665 +665 +353 +723 +1 +2956 +86 +26 +365 +1 +2232 +0 +2319 +2319 +2319 +298 +34 +42 +72 +56 +2935 +91 +147 +0 +151 +438 +468 +404 +202 +766 +26 +34 +68 +35 +43 +83 +0 +3297 +3297 +3297 +0 +177 +3229 +4142 +4142 +4142 +184 +31 +1 +2192 +2192 +2192 +31 +4803 +4803 +4803 +2780 +1608 +60 +4509 +4509 +4509 +23 +23 +23 +1 +135 +781 +35 +181 +380 +152 +416 +1513 +1513 +1513 +24 +1 +827 +376 +762 +119 +32 +2199 +206 +206 +206 +4854 +4854 +4854 +137 +2582 +2582 +2582 +60 +310 +93 +0 +1876 +54 +329 +329 +329 +310 +40 +3690 +3690 +3690 +35 +0 +2230 +2230 +2230 +4422 +4422 +4422 +35 +744 +5 +4388 +4388 +4388 +48 +724 +43 +3432 +67 +281 +4754 +4754 +4754 +3 +9 +764 +336 +351 +651 +178 +147 +699 +55 +395 +38 +2000 +23 +1253 +1253 +1253 +155 +3161 +33 +0 +34 +0 +122 +2013 +3297 +3297 +3297 +1880 +3442 +3442 +3442 +1552 +1552 +1552 +26 +322 +31 +525 +313 +2528 +2528 +2528 +1464 +2485 +2485 +2485 +2177 +25 +0 +4803 +4803 +4803 +28 +1 +35 +2289 +2289 +2289 +574 +36 +1831 +55 +26 +2240 +3 +408 +22 +31 +1172 +24 +33 +31 +136 +1057 +0 +2228 +33 +28 +2 +4391 +4391 +4391 +32 +50 +31 +64 +1048 +4149 +4149 +4149 +0 +36 +40 +31 +61 +1524 +1524 +1524 +332 +1904 +36 +28 +3 +3621 +3621 +3621 +805 +86 +28 +498 +2900 +2900 +2900 +4963 +4963 +4963 +273 +2557 +27 +89 +51 +37 +62 +682 +1934 +160 +1 +33 +264 +3985 +3985 +3985 +47 +303 +970 +970 +970 +2249 +0 +59 +31 +22 +121 +4357 +4357 +4357 +419 +2803 +1 +26 +2 +89 +47 +124 +160 +38 +720 +720 +720 +47 +2644 +2927 +2927 +2927 +457 +365 +365 +365 +1385 +369 +1871 +288 +624 +315 +1090 +29 +2 +83 +1336 +488 +85 +75 +15 +0 +24 +461 +897 +21 +29 +62 +377 +194 +700 +4974 +4974 +4974 +102 +104 +789 +1186 +1186 +1186 +2681 +20 +443 +443 +443 +30 +100 +148 +1569 +1569 +1569 +672 +3748 +3748 +3748 +62 +62 +62 +24 +367 +313 +3783 +3783 +3783 +32 +0 +1 +108 +31 +140 +4 +6 +366 +80 +24 +33 +62 +569 +1 +281 +6 +454 +4045 +4045 +4045 +2300 +4433 +4433 +4433 +964 +180 +150 +37 +63 +3827 +3827 +3827 +2074 +2 +34 +26 +446 +852 +155 +243 +90 +1309 +2283 +170 +71 +94 +2342 +2342 +2342 +3116 +3116 +3116 +347 +780 +780 +780 +130 +836 +836 +836 +455 +3283 +3283 +3283 +111 +2 +3424 +0 +0 +22 +0 +526 +20 +734 +68 +302 +94 +107 +1031 +1031 +1031 +2071 +590 +4133 +4133 +4133 +890 +67 +22 +21 +2954 +2885 +2308 +37 +40 +135 +34 +1 +160 +29 +1292 +1292 +1292 +150 +4550 +4550 +4550 +20 +1145 +1 +1 +2728 +138 +42 +30 +1544 +2451 +2451 +2451 +1352 +1352 +1352 +121 +32 +2266 +3377 +3377 +3377 +65 +310 +33 +156 +61 +34 +41 +26 +31 +3679 +2 +1307 +120 +37 +41 +1803 +1803 +1803 +30 +196 +26 +2 +2630 +2630 +2630 +958 +811 +113 +20 +36 +97 +394 +907 +1122 +59 +227 +4401 +4401 +4401 +4975 +4975 +4975 +4129 +4129 +4129 +4386 +4386 +4386 +2039 +122 +37 +0 +3047 +3047 +3047 +2448 +2448 +2448 +4003 +125 +138 +2542 +2542 +2542 +37 +0 +3068 +32 +128 +128 +128 +538 +178 +0 +1767 +1767 +1767 +2569 +2569 +2569 +3057 +3770 +3770 +3770 +852 +0 +1564 +30 +52 +776 +69 +4562 +4562 +4562 +3517 +3517 +3517 +45 +23 +1 +607 +0 +4924 +4924 +4924 +0 +1496 +119 +471 +43 +779 +1124 +1124 +1124 +2487 +4511 +4511 +4511 +30 +392 +35 +126 +19 +43 +86 +36 +2 +1944 +53 +89 +89 +89 +124 +4 +4487 +4487 +4487 +412 +94 +78 +116 +2343 +2343 +2343 +851 +53 +1596 +1596 +1596 +401 +401 +401 +2194 +33 +471 +158 +26 +125 +1034 +9 +32 +45 +425 +60 +4580 +4580 +4580 +53 +21 +3008 +3008 +3008 +2275 +2275 +2275 +30 +38 +25 +148 +148 +148 +171 +3031 +3031 +3031 +480 +66 +236 +4546 +4546 +4546 +39 +4507 +4507 +4507 +31 +0 +1140 +1140 +1140 +2609 +3 +207 +60 +31 +3974 +50 +58 +479 +479 +479 +68 +244 +1 +91 +0 +262 +2366 +2366 +2366 +54 +84 +132 +30 +20 +0 +71 +451 +1900 +1865 +1247 +1247 +1247 +353 +353 +353 +2439 +1 +630 +4191 +4191 +4191 +367 +4893 +4893 +4893 +44 +20 +4952 +4952 +4952 +50 +1739 +23 +2989 +2989 +2989 +242 +0 +732 +10 +2258 +1 +128 +35 +1020 +1020 +1020 +748 +57 +69 +367 +108 +534 +1519 +2 +73 +2699 +219 +694 +694 +694 +7 +2065 +3492 +3492 +3492 +2381 +228 +873 +4220 +4220 +4220 +1464 +0 +830 +20 +4285 +4285 +4285 +1001 +4353 +4353 +4353 +380 +439 +492 +719 +802 +81 +333 +900 +896 +3391 +26 +4554 +4554 +4554 +4566 +4566 +4566 +377 +513 +0 +121 +88 +2 +1438 +3819 +3819 +3819 +249 +4834 +4834 +4834 +108 +102 +3659 +3659 +3659 +3604 +3604 +3604 +182 +447 +520 +1542 +1542 +1542 +4479 +4479 +4479 +5 +21 +137 +812 +812 +812 +23 +84 +45 +1 +2305 +60 +3100 +3100 +3100 +0 +411 +3149 +54 +29 +366 +43 +0 +3464 +3049 +3049 +3049 +498 +4567 +4567 +4567 +519 +22 +50 +544 +218 +139 +3105 +366 +148 +4705 +4705 +4705 +100 +839 +4576 +4576 +4576 +166 +1181 +516 +378 +2065 +30 +3512 +3512 +3512 +1378 +27 +3799 +3799 +3799 +29 +0 +0 +365 +2012 +722 +37 +588 +876 +3721 +3721 +3721 +1668 +3315 +3315 +3315 +112 +428 +129 +4150 +4150 +4150 +422 +4378 +3584 +505 +2 +7 +477 +191 +4829 +4829 +4829 +852 +108 +834 +58 +366 +799 +4932 +4932 +4932 +0 +32 +10 +0 +172 +2315 +68 +61 +84 +365 +57 +163 +35 +4623 +4623 +4623 +74 +291 +27 +357 +2 +2749 +2749 +2749 +1 +30 +145 +1638 +1 +4297 +4297 +4297 +4641 +4641 +4641 +1793 +1605 +1605 +1605 +574 +39 +3297 +3297 +3297 +35 +582 +57 +944 +944 +944 +366 +2122 +2122 +2122 +24 +2003 +280 +40 +4 +28 +938 +29 +81 +343 +361 +361 +361 +1165 +1165 +1165 +2 +1953 +3835 +3835 +3835 +240 +0 +3889 +3889 +3889 +209 +2671 +20 +509 +20 +366 +506 +58 +36 +4125 +4125 +4125 +142 +1903 +51 +72 +1644 +1602 +1512 +1512 +1512 +94 +180 +4103 +121 +356 +1 +1258 +1258 +1258 +108 +4557 +4557 +4557 +3645 +97 +3043 +3043 +3043 +0 +1614 +58 +3431 +3425 +196 +464 +212 +809 +82 +4261 +4261 +4261 +1206 +1206 +1206 +140 +14 +0 +196 +4 +179 +143 +143 +143 +4351 +4959 +4959 +4959 +28 +29 +116 +2936 +4112 +4112 +4112 +870 +112 +112 +112 +71 +4190 +4190 +4190 +572 +341 +23 +4537 +4537 +4537 +1953 +213 +31 +173 +0 +3389 +292 +1 +152 +31 +235 +2990 +2990 +2990 +4897 +4897 +4897 +856 +366 +20 +536 +161 +187 +20 +500 +500 +500 +25 +34 +1163 +4620 +4620 +4620 +21 +2998 +96 +296 +296 +296 +787 +11 +1 +95 +2725 +2725 +2725 +138 +3756 +3756 +3756 +38 +124 +217 +3300 +3300 +3300 +4096 +4096 +4096 +2419 +2419 +2419 +249 +0 +186 +26 +1 +5 +7 +1492 +1492 +1492 +2664 +2664 +2664 +90 +962 +2411 +32 +34 +0 +772 +1673 +2500 +2500 +2500 +4097 +4097 +4097 +120 +343 +961 +1648 +26 +47 +311 +21 +105 +26 +297 +297 +297 +223 +1312 +518 +120 +1655 +1655 +1655 +1462 +21 +2332 +2332 +2332 +1564 +1564 +1564 +1 +10 +56 +1951 +1951 +1951 +2326 +2326 +2326 +487 +1976 +1976 +1976 +123 +121 +98 +2592 +2592 +2592 +345 +80 +1745 +1745 +1745 +25 +1594 +98 +2894 +253 +3907 +3907 +3907 +81 +29 +678 +4653 +4653 +4653 +22 +34 +389 +24 +963 +148 +22 +3786 +3786 +3786 +2629 +2629 +2629 +37 +45 +22 +31 +28 +27 +4185 +4185 +4185 +1 +4341 +4341 +4341 +489 +605 +81 +2 +1083 +3 +365 +31 +1458 +1458 +1458 +111 +1620 +453 +2841 +2841 +2841 +168 +219 +2439 +700 +700 +700 +1 +49 +4851 +4851 +4851 +139 +0 +2649 +2649 +2649 +4199 +4199 +4199 +85 +4 +645 +29 +305 +264 +112 +27 +2799 +262 +171 +38 +366 +1 +0 +78 +50 +595 +43 +116 +470 +2744 +2744 +2744 +1298 +4651 +4651 +4651 +282 +2049 +107 +69 +2422 +131 +130 +73 +137 +729 +2458 +40 +8 +559 +3655 +3655 +3655 +3497 +154 +327 +94 +2391 +2391 +2391 +475 +2432 +128 +329 +2449 +368 +3916 +3916 +3916 +3620 +3620 +3620 +29 +0 +949 +137 +66 +581 +3609 +55 +1310 +160 +175 +2121 +2121 +2121 +57 +2894 +2894 +2894 +2550 +2550 +2550 +389 +33 +246 +52 +31 +299 +513 +1714 +21 +108 +210 +1684 +1684 +1684 +20 +36 +857 +4210 +78 +498 +344 +1518 +271 +550 +23 +4621 +4621 +4621 +375 +364 +4996 +4996 +4996 +1086 +3636 +3636 +3636 +516 +3443 +3443 +3443 +37 +123 +24 +65 +600 +22 +92 +0 +369 +57 +31 +0 +125 +4 +49 +158 +93 +37 +516 +3174 +38 +2187 +2187 +2187 +4765 +4765 +4765 +188 +1 +2 +1385 +726 +726 +726 +171 +4640 +4640 +4640 +496 +424 +594 +29 +1016 +1778 +2867 +2867 +2867 +804 +6 +308 +3611 +3611 +3611 +789 +789 +789 +2786 +2786 +2786 +641 +138 +1206 +317 +219 +47 +14 +3227 +3227 +3227 +314 +3149 +2757 +30 +59 +16 +3295 +3295 +3295 +367 +2315 +46 +550 +1035 +1035 +1035 +218 +3987 +3987 +3987 +67 +1098 +3817 +3817 +3817 +2517 +573 +185 +133 +244 +244 +244 +1785 +102 +367 +30 +147 +248 +1191 +1191 +1191 +89 +0 +4379 +4379 +4379 +59 +59 +59 +235 +30 +3991 +116 +302 +1 +316 +20 +1016 +701 +701 +701 +1096 +3992 +3992 +3992 +0 +317 +1 +297 +297 +297 +31 +3607 +3607 +3607 +21 +153 +732 +4091 +4091 +4091 +21 +0 +27 +1 +54 +292 +150 +8 +253 +69 +1 +3565 +3565 +3565 +1796 +1796 +1796 +512 +2996 +86 +287 +321 +2529 +3267 +3267 +3267 +2898 +2898 +2898 +38 +40 +125 +388 +2251 +2251 +2251 +1108 +69 +132 +2672 +0 +3654 +3654 +3654 +3858 +3858 +3858 +287 +4488 +4488 +4488 +113 +141 +1 +31 +2259 +2259 +2259 +51 +63 +3235 +3235 +3235 +1 +4137 +4137 +4137 +2919 +2610 +2610 +2610 +2816 +2816 +2816 +32 +1 +4 +84 +1594 +3614 +3614 +3614 +30 +32 +3224 +3224 +3224 +55 +2443 +2443 +2443 +54 +1294 +1294 +1294 +221 +28 +146 +317 +317 +317 +1783 +4355 +4355 +4355 +914 +126 +151 +168 +345 +692 +637 +637 +637 +2986 +2986 +2986 +230 +338 +43 +269 +4350 +4350 +4350 +23 +226 +0 +120 +23 +0 +24 +20 +505 +31 +4371 +4371 +4371 +1 +61 +3117 +3117 +3117 +394 +973 +973 +973 +213 +4140 +4140 +4140 +30 +85 +2003 +636 +31 +390 +537 +52 +198 +254 +1 +189 +4641 +4641 +4641 +4273 +4273 +4273 +299 +139 +1098 +128 +128 +128 +685 +6 +22 +0 +52 +2069 +2069 +2069 +100 +4729 +4729 +4729 +620 +554 +1399 +96 +209 +209 +209 +63 +1 +207 +289 +988 +358 +1 +25 +679 +679 +679 +20 +1 +28 +35 +1037 +1379 +2180 +32 +365 +22 +22 +3968 +3968 +3968 +62 +665 +206 +94 +4670 +4670 +4670 +98 +212 +2947 +2 +38 +38 +38 +668 +0 +418 +2000 +2000 +2000 +4013 +4013 +4013 +337 +4417 +4417 +4417 +79 +1415 +1415 +1415 +3927 +3927 +3927 +2168 +2168 +2168 +20 +30 +96 +580 +1100 +221 +4040 +4040 +4040 +0 +2577 +2101 +2 +249 +1104 +488 +95 +0 +2042 +43 +0 +36 +4404 +4404 +4404 +44 +1 +653 +550 +550 +550 +37 +2898 +2898 +2898 +1861 +1861 +1861 +3287 +196 +35 +104 +30 +3653 +4015 +4015 +4015 +2601 +800 +49 +140 +106 +28 +54 +228 +44 +1844 +33 +35 +0 +135 +2 +96 +713 +5 +94 +3807 +3807 +3807 +26 +2175 +29 +41 +4600 +4600 +4600 +110 +358 +21 +53 +0 +104 +4332 +4332 +4332 +24 +42 +341 +21 +624 +918 +3 +22 +21 +42 +322 +322 +322 +1867 +0 +922 +922 +922 +3750 +3750 +3750 +452 +452 +452 +1675 +0 +27 +608 +2818 +575 +575 +575 +0 +0 +1387 +1387 +1387 +175 +121 +0 +4361 +4361 +4361 +749 +368 +366 +2602 +2602 +2602 +3232 +4705 +4705 +4705 +3296 +0 +1199 +21 +1768 +1768 +1768 +1 +3796 +3796 +3796 +156 +2577 +235 +20 +4052 +4052 +4052 +0 +4 +249 +77 +77 +77 +415 +115 +0 +281 +1 +2095 +371 +355 +3752 +3752 +3752 +26 +185 +342 +27 +6 +32 +1 +365 +37 +0 +0 +5 +2379 +2379 +2379 +0 +233 +4 +3774 +3774 +3774 +139 +680 +3366 +96 +96 +96 +1057 +230 +4636 +4636 +4636 +1784 +31 +3263 +3263 +3263 +4568 +4568 +4568 +1946 +1356 +4785 +4785 +4785 +120 +31 +48 +244 +1466 +354 +0 +1436 +41 +29 +3966 +3966 +3966 +4359 +4359 +4359 +49 +365 +4552 +4552 +4552 +31 +3 +30 +294 +49 +1234 +38 +820 +1481 +1481 +1481 +465 +79 +770 +2264 +2264 +2264 +21 +40 +309 +25 +100 +3014 +3014 +3014 +80 +34 +4668 +4668 +4668 +140 +34 +74 +31 +149 +48 +3710 +152 +1 +2157 +445 +30 +2061 +701 +282 +0 +206 +2 +0 +804 +28 +2987 +2987 +2987 +0 +34 +4704 +4704 +4704 +0 +147 +2874 +1 +710 +3700 +396 +40 +50 +163 +1766 +75 +824 +1 +31 +85 +51 +3339 +3023 +1099 +209 +60 +40 +2 +4480 +4480 +4480 +93 +2262 +2262 +2262 +33 +0 +71 +32 +1571 +2258 +11 +32 +31 +25 +1800 +267 +445 +0 +54 +337 +28 +1 +20 +91 +180 +53 +33 +23 +24 +478 +1 +4783 +4783 +4783 +23 +22 +12 +523 +3331 +3331 +3331 +33 +4307 +4307 +4307 +26 +3442 +3442 +3442 +2 +214 +24 +35 +80 +105 +0 +13 +104 +1 +2241 +42 +2585 +2585 +2585 +0 +2302 +145 +23 +96 +0 +33 +27 +32 +1836 +0 +369 +287 +396 +581 +148 +199 +40 +47 +23 +0 +70 +3 +2494 +2494 +2494 +3199 +1 +31 +0 +240 +87 +1468 +2 +3347 +3347 +3347 +204 +20 +1076 +21 +35 +4288 +4288 +4288 +33 +100 +190 +2774 +179 +1 +22 +57 +2004 +2004 +2004 +114 +2 +3636 +3636 +3636 +20 +1 +91 +3824 +3824 +3824 +25 +350 +3362 +3362 +3362 +22 +3312 +4797 +4797 +4797 +2184 +981 +3516 +3516 +3516 +279 +31 +32 +25 +125 +68 +0 +1219 +113 +34 +25 +0 +0 +3203 +2082 +166 +4881 +4881 +4881 +4016 +4016 +4016 +59 +533 +1451 +1451 +1451 +4160 +4160 +4160 +27 +97 +32 +4058 +4058 +4058 +414 +49 +421 +89 +31 +74 +911 +3898 +3898 +3898 +3423 +3423 +3423 +1 +39 +28 +1901 +197 +86 +47 +2359 +2359 +2359 +4159 +4159 +4159 +26 +35 +25 +30 +410 +31 +68 +1920 +1920 +1920 +22 +866 +22 +4865 +4865 +4865 +2776 +3256 +3256 +3256 +32 +30 +64 +577 +31 +1 +1123 +1123 +1123 +23 +3415 +3415 +3415 +1139 +1139 +1139 +0 +4792 +4792 +4792 +4822 +4822 +4822 +805 +95 +1369 +1369 +1369 +3957 +3957 +3957 +27 +61 +46 +1080 +1080 +1080 +4243 +4243 +4243 +870 +3 +98 +98 +98 +3993 +3993 +3993 +1273 +1273 +1273 +0 +1939 +25 +4516 +4516 +4516 +140 +1 +209 +4384 +4384 +4384 +90 +31 +1545 +25 +3 +1 +27 +2198 +37 +1889 +1 +115 +443 +992 +276 +812 +5 +29 +300 +43 +43 +43 +1036 +134 +3152 +3152 +3152 +3 +365 +884 +3764 +3764 +3764 +31 +86 +547 +2194 +43 +2993 +2993 +2993 +70 +361 +1232 +528 +0 +867 +95 +3212 +669 +705 +4522 +4522 +4522 +1918 +374 +21 +134 +1 +237 +3107 +3107 +3107 +0 +128 +107 +286 +126 +0 +18 +61 +45 +45 +45 +232 +2077 +2077 +2077 +178 +2675 +2823 +2823 +2823 +1105 +0 +76 +22 +39 +915 +36 +6 +10 +959 +0 +37 +3820 +2008 +10 +60 +23 +209 +1076 +0 +4336 +10 +4696 +4696 +4696 +238 +115 +3787 +21 +77 +0 +4849 +4523 +4523 +4523 +3811 +3811 +3811 +38 +0 +31 +3894 +3894 +3894 +299 +511 +1938 +1938 +1938 +4818 +4818 +4818 +8 +1353 +1353 +1353 +740 +2669 +2669 +2669 +102 +264 +514 +4359 +4359 +4359 +148 +29 +2490 +2490 +2490 +54 +31 +1 +38 +51 +32 +1602 +25 +885 +148 +3639 +3639 +3639 +135 +135 +135 +231 +3 +182 +1374 +1374 +1374 +2692 +2692 +2692 +1213 +1213 +1213 +30 +53 +3905 +3905 +3905 +462 +34 +3 +366 +366 +366 +3839 +3839 +3839 +31 +6 +0 +4225 +4225 +4225 +2726 +1946 +67 +258 +4412 +4412 +4412 +3482 +3482 +3482 +365 +3278 +3278 +3278 +76 +55 +1997 +1997 +1997 +365 +565 +125 +841 +841 +841 +45 +3404 +3404 +3404 +184 +2344 +4511 +4511 +4511 +223 +56 +2 +33 +365 +31 +2675 +3 +71 +2741 +2741 +2741 +0 +4935 +4935 +4935 +21 +690 +56 +3709 +3709 +3709 +481 +481 +481 +55 +162 +361 +1107 +2999 +2999 +2999 +106 +16 +38 +559 +1 +24 +2556 +905 +31 +106 +387 +192 +8 +4101 +3479 +3479 +3479 +101 +0 +230 +0 +58 +2424 +2424 +2424 +72 +3429 +3429 +3429 +554 +52 +70 +0 +28 +169 +4193 +4193 +4193 +3 +36 +248 +9 +4193 +4193 +4193 +4526 +4526 +4526 +0 +43 +228 +524 +144 +144 +144 +650 +741 +31 +567 +30 +368 +169 +4459 +40 +184 +2241 +1260 +793 +90 +1160 +0 +47 +345 +514 +62 +1262 +1495 +3475 +3475 +3475 +3075 +221 +90 +25 +51 +55 +38 +746 +39 +869 +24 +33 +0 +595 +3883 +3883 +3883 +71 +1256 +1256 +1256 +238 +293 +528 +2 +368 +75 +1146 +4726 +4726 +4726 +163 +106 +452 +3873 +3873 +3873 +46 +25 +184 +26 +1363 +1996 +78 +30 +641 +380 +62 +733 +235 +53 +0 +90 +163 +145 +52 +24 +2266 +128 +25 +98 +206 +834 +239 +372 +34 +164 +537 +88 +151 +0 +1639 +1639 +1639 +27 +20 +60 +4560 +4560 +4560 +78 +1 +0 +40 +0 +44 +32 +413 +22 +158 +115 +21 +1504 +1504 +1504 +546 +546 +546 +471 +180 +180 +180 +0 +2433 +40 +3850 +3850 +3850 +4440 +4440 +4440 +1036 +20 +60 +3332 +3332 +3332 +1151 +1151 +1151 +115 +24 +46 +63 +2948 +105 +0 +610 +229 +229 +229 +0 +88 +169 +123 +407 +136 +862 +2905 +2905 +2905 +0 +480 +391 +30 +5 +190 +17 +266 +52 +76 +196 +367 +28 +366 +2 +60 +1 +2270 +259 +135 +1436 +365 +55 +338 +0 +70 +580 +46 +532 +29 +96 +91 +91 +31 +22 +71 +71 +71 +40 +4145 +4145 +4145 +22 +365 +184 +1360 +176 +1 +122 +991 +80 +4386 +4386 +4386 +3278 +58 +181 +21 +832 +37 +4283 +4283 +4283 +156 +3153 +34 +125 +276 +33 +3869 +3869 +3869 +496 +318 +88 +1370 +0 +4601 +4601 +4601 +75 +65 +3175 +3175 +3175 +58 +525 +1483 +365 +565 +1307 +184 +26 +4640 +4640 +4640 +4333 +4333 +4333 +3 +4645 +4645 +4645 +1844 +434 +1659 +1659 +1659 +1 +952 +952 +952 +2923 +51 +3579 +3579 +3579 +1240 +28 +23 +1871 +49 +874 +366 +53 +123 +0 +1 +3816 +25 +36 +888 +3099 +41 +597 +1518 +1518 +1518 +562 +0 +28 +21 +3954 +3954 +3954 +148 +188 +30 +54 +520 +53 +2320 +3894 +3894 +3894 +40 +8 +104 +650 +4187 +4187 +4187 +2961 +2961 +2961 +48 +1276 +34 +572 +796 +23 +21 +0 +0 +4815 +4815 +4815 +27 +174 +4671 +4671 +4671 +145 +356 +2761 +2145 +149 +2522 +127 +3553 +3553 +3553 +48 +22 +1515 +71 +1449 +206 +0 +1001 +69 +24 +21 +226 +53 +4804 +4804 +4804 +4439 +4439 +4439 +56 +0 +42 +509 +0 +201 +1992 +72 +25 +2 +0 +588 +588 +588 +1360 +1022 +938 +938 +938 +1728 +179 +654 +32 +2256 +1002 +65 +1065 +1065 +1065 +118 +440 +151 +1 +3964 +3964 +3964 +205 +1067 +7 +243 +27 +4637 +4637 +4637 +328 +3577 +3577 +3577 +165 +950 +137 +50 +860 +225 +3897 +554 +931 +365 +23 +852 +3169 +2 +186 +24 +3976 +3976 +3976 +3980 +3980 +3980 +0 +2 +4129 +4129 +4129 +1426 +36 +0 +4569 +4569 +4569 +2809 +3549 +3549 +3549 +45 +365 +883 +883 +883 +677 +23 +368 +365 +196 +1621 +1334 +3880 +1419 +1 +2 +1297 +1772 +1951 +206 +33 +3461 +1 +26 +57 +4237 +3717 +3717 +3717 +22 +20 +3967 +3967 +3967 +29 +3132 +3132 +3132 +33 +1 +3764 +93 +97 +16 +983 +983 +983 +3967 +3967 +3967 +1380 +20 +937 +1 +3882 +3882 +3882 +36 +54 +0 +21 +29 +55 +2822 +2822 +2822 +120 +365 +20 +44 +97 +132 +220 +149 +3045 +2124 +2124 +2124 +22 +4993 +4993 +4993 +983 +365 +106 +0 +182 +4144 +4144 +4144 +4046 +4046 +4046 +1038 +0 +143 +100 +1470 +1470 +1470 +880 +17 +1749 +74 +1 +110 +0 +20 +216 +261 +153 +26 +877 +3910 +58 +293 +2401 +2401 +2401 +0 +611 +115 +100 +847 +304 +113 +22 +255 +2497 +97 +992 +34 +31 +0 +52 +1727 +1727 +1727 +37 +3513 +3513 +3513 +4885 +4885 +4885 +31 +25 +632 +632 +632 +3965 +3965 +3965 +1045 +265 +265 +265 +4688 +4688 +4688 +3430 +705 +2367 +285 +0 +2532 +2532 +2532 +614 +494 +2312 +2312 +2312 +303 +303 +303 +74 +40 +3184 +3184 +3184 +4974 +4974 +4974 +612 +378 +4058 +4058 +4058 +358 +1 +84 +795 +4577 +4577 +4577 +727 +174 +2312 +0 +4045 +4045 +4045 +2182 +4823 +4823 +4823 +54 +368 +2381 +56 +60 +2739 +2739 +2739 +0 +3004 +3004 +3004 +98 +8 +37 +367 +367 +50 +102 +70 +53 +3788 +3788 +3788 +697 +201 +0 +4874 +4874 +4874 +126 +126 +126 +88 +1036 +1036 +1036 +1732 +8 +244 +4822 +4822 +4822 +31 +305 +1 +206 +1 +74 +0 +58 +4070 +4070 +4070 +2922 +2922 +2922 +1 +1305 +1305 +1305 +24 +28 +0 +34 +38 +130 +40 +0 +26 +2573 +2573 +2573 +44 +2200 +253 +253 +253 +346 +76 +4306 +4306 +4306 +83 +671 +0 +266 +1 +931 +229 +2369 +2369 +2369 +195 +38 +65 +28 +39 +2782 +42 +46 +924 +116 +3188 +3188 +3188 +1 +37 +37 +37 +4910 +4910 +4910 +26 +0 +70 +112 +784 +163 +411 +2 +3158 +3158 +3158 +2375 +4249 +4249 +4249 +33 +65 +39 +31 +454 +230 +0 +74 +597 +139 +26 +3249 +3249 +3249 +2464 +92 +38 +33 +4627 +2122 +2122 +2122 +25 +0 +386 +8 +344 +1000 +1000 +1000 +622 +1962 +101 +2 +1365 +1365 +1365 +330 +46 +401 +36 +1 +21 +3607 +3607 +3607 +70 +29 +45 +199 +26 +21 +20 +31 +1 +1947 +53 +31 +4842 +4842 +4842 +28 +71 +23 +42 +31 +474 +1077 +188 +201 +217 +33 +0 +29 +34 +0 +3 +3990 +3990 +3990 +39 +25 +24 +64 +47 +31 +4361 +4361 +4361 +76 +55 +40 +29 +4306 +4306 +4306 +32 +49 +235 +1762 +1762 +1762 +38 +335 +4 +3961 +3961 +3961 +73 +396 +553 +0 +44 +25 +2518 +43 +30 +0 +33 +0 +35 +159 +159 +159 +2825 +2825 +2825 +40 +3895 +29 +74 +0 +723 +189 +642 +642 +642 +30 +481 +51 +64 +68 +1157 +1157 +1157 +288 +38 +21 +31 +440 +256 +170 +3 +0 +4871 +4871 +4871 +29 +37 +26 +1337 +298 +393 +2436 +2436 +2436 +2 +1571 +1571 +1571 +27 +291 +27 +39 +400 +278 +25 +4068 +28 +1290 +1290 +1290 +54 +919 +319 +808 +2 +35 +4338 +4338 +4338 +594 +668 +32 +3975 +3975 +3975 +480 +179 +0 +95 +395 +4359 +4359 +4359 +897 +4646 +4646 +4646 +1466 +1466 +1466 +687 +35 +33 +336 +109 +195 +45 +174 +4713 +4713 +4713 +59 +525 +274 +2 +29 +26 +692 +692 +692 +34 +62 +4707 +4707 +4707 +1 +1 +28 +427 +873 +873 +873 +33 +36 +59 +174 +2825 +2825 +2825 +33 +45 +43 +1735 +0 +27 +182 +25 +42 +0 +90 +0 +0 +0 +29 +3170 +4125 +4125 +4125 +231 +4346 +4346 +4346 +32 +242 +28 +33 +3609 +141 +1 +44 +34 +28 +3658 +3658 +3658 +310 +2717 +4967 +4967 +4967 +353 +293 +1157 +100 +4072 +4072 +4072 +4594 +156 +31 +0 +37 +298 +1773 +1773 +1773 +22 +2130 +96 +1724 +37 +34 +245 +35 +256 +33 +34 +263 +525 +38 +731 +1 +36 +53 +29 +76 +20 +894 +561 +32 +389 +61 +29 +33 +24 +38 +2494 +29 +4158 +4158 +4158 +28 +40 +418 +3054 +3054 +3054 +29 +56 +25 +34 +780 +780 +780 +1 +2474 +2474 +2474 +3531 +3531 +3531 +0 +269 +939 +26 +148 +40 +47 +79 +945 +45 +44 +64 +156 +648 +1 +403 +94 +27 +4400 +4400 +4400 +24 +33 +21 +30 +204 +33 +2049 +736 +1415 +37 +28 +2571 +2571 +2571 +30 +2505 +0 +77 +1 +1 +0 +24 +0 +71 +4184 +1103 +818 +553 +2553 +914 +230 +4795 +4795 +4795 +86 +359 +163 +389 +20 +0 +2302 +2302 +2302 +88 +29 +36 +4031 +4031 +4031 +3164 +688 +207 +71 +1 +0 +4339 +4339 +4339 +3326 +258 +30 +1395 +28 +1570 +2574 +33 +432 +2819 +2819 +2819 +1 +3348 +26 +396 +20 +1554 +20 +0 +1379 +27 +3083 +3083 +3083 +3028 +3028 +3028 +4385 +4385 +4385 +134 +101 +53 +24 +205 +59 +22 +205 +22 +1 +45 +1395 +413 +118 +1973 +1973 +1973 +122 +4141 +562 +149 +2151 +2151 +2151 +2936 +2936 +2936 +845 +845 +845 +1203 +1098 +1098 +1098 +44 +1536 +1536 +1536 +4879 +4879 +4879 +34 +31 +615 +36 +2 +92 +0 +92 +92 +69 +103 +1206 +1206 +1206 +1 +4309 +4309 +4309 +41 +731 +20 +34 +2940 +183 +4299 +2205 +2205 +2205 +16 +71 +699 +53 +67 +2572 +2572 +2572 +776 +0 +99 +80 +369 +2 +2922 +2922 +2922 +38 +60 +951 +951 +951 +21 +4811 +4811 +4811 +2 +2993 +2993 +2993 +24 +4343 +4343 +4343 +82 +297 +44 +1268 +2536 +2536 +2536 +21 +3606 +3606 +3606 +0 +2096 +0 +673 +47 +342 +27 +42 +132 +22 +44 +127 +102 +654 +1810 +2820 +26 +630 +45 +30 +147 +4225 +4225 +4225 +1 +92 +2465 +44 +279 +322 +68 +30 +231 +3571 +2193 +3104 +4060 +4060 +4060 +31 +1075 +20 +32 +1492 +146 +1178 +4 +27 +314 +33 +20 +127 +64 +558 +0 +34 +1445 +1445 +1445 +146 +1 +70 +1 +978 +4289 +4289 +4289 +177 +44 +1 +54 +3757 +3757 +3757 +35 +35 +35 +240 +1 +269 +32 +83 +408 +21 +31 +1789 +41 +413 +58 +1096 +191 +33 +1203 +0 +994 +2 +443 +756 +756 +756 +1050 +39 +21 +153 +1174 +162 +357 +69 +4270 +4270 +4270 +32 +27 +364 +33 +0 +103 +491 +75 +72 +182 +48 +615 +615 +615 +439 +509 +84 +31 +274 +61 +392 +4127 +366 +1 +734 +55 +83 +22 +101 +22 +333 +0 +50 +113 +21 +404 +3081 +3081 +3081 +0 +27 +178 +62 +38 +374 +2 +0 +95 +1 +38 +55 +32 +35 +4201 +489 +489 +489 +1174 +987 +125 +4462 +4462 +4462 +822 +1036 +302 +178 +46 +21 +34 +171 +171 +171 +1538 +1 +1829 +1829 +1829 +21 +2 +3033 +3033 +3033 +68 +731 +33 +863 +4218 +4218 +4218 +287 +753 +55 +21 +0 +488 +61 +82 +2518 +54 +35 +25 +43 +367 +852 +852 +852 +26 +23 +20 +21 +168 +31 +18 +417 +235 +8 +35 +0 +295 +10 +3380 +3380 +3380 +3712 +3712 +3712 +1529 +1624 +3 +45 +323 +64 +3 +785 +1097 +23 +30 +3033 +9 +0 +76 +2 +25 +0 +65 +1147 +84 +218 +41 +4448 +91 +30 +4728 +4728 +4728 +35 +32 +3536 +3536 +3536 +0 +2193 +88 +371 +910 +0 +1 +999 +350 +260 +31 +20 +311 +2106 +0 +1159 +189 +1 +3230 +3230 +3230 +55 +145 +86 +1 +59 +379 +0 +2192 +21 +1 +104 +264 +1428 +2829 +2829 +2829 +91 +29 +1948 +1948 +1948 +1 +28 +97 +1209 +366 +26 +4846 +4846 +4846 +272 +0 +1401 +1401 +1401 +2 +50 +3654 +3654 +3654 +2 +221 +4929 +4929 +4929 +92 +56 +1 +1097 +4814 +4814 +4814 +148 +156 +1 +24 +270 +270 +270 +22 +29 +234 +954 +3444 +3444 +3444 +690 +690 +690 +79 +3653 +30 +2560 +2560 +2560 +1126 +476 +8 +280 +2196 +100 +1584 +1234 +1 +0 +22 +5 +0 +4 +2065 +2065 +2065 +181 +145 +0 +129 +463 +89 +839 +0 +894 +3322 +3322 +3322 +75 +3 +3862 +3862 +3862 +393 +412 +113 +653 +47 +45 +0 +0 +63 +2 +1570 +353 +136 +31 +118 +134 +1823 +431 +89 +2 +74 +733 +733 +733 +440 +20 +35 +84 +43 +33 +828 +16 +821 +202 +121 +1327 +1327 +1327 +645 +6 +305 +112 +401 +26 +67 +61 +41 +450 +317 +1 +4121 +4121 +4121 +100 +0 +2014 +2014 +2014 +2 +1 +27 +31 +277 +4140 +4140 +4140 +118 +3 +29 +26 +3301 +3301 +3301 +22 +22 +1 +0 +230 +0 +875 +39 +4121 +4121 +4121 +910 +910 +910 +8 +0 +93 +153 +12 +11 +295 +3300 +3300 +3300 +2505 +2505 +2505 +484 +484 +484 +216 +150 +0 +35 +47 +0 +0 +0 +495 +4512 +64 +205 +0 +352 +274 +128 +4940 +4940 +4940 +367 +39 +149 +4781 +4781 +4781 +296 +74 +60 +44 +2820 +0 +0 +86 +288 +734 +119 +30 +44 +1 +135 +370 +21 +3702 +3702 +3702 +1 +304 +26 +58 +24 +4184 +4184 +4184 +1191 +1191 +1191 +356 +3656 +7 +1526 +1526 +1526 +2 +208 +1200 +21 +3506 +3506 +3506 +40 +63 +804 +266 +1161 +1161 +1161 +24 +2685 +31 +140 +25 +251 +3862 +3862 +3862 +24 +263 +61 +55 +33 +48 +108 +31 +495 +2017 +2017 +2017 +49 +114 +439 +1022 +32 +29 +475 +2 +29 +3268 +3268 +3268 +1539 +50 +268 +45 +160 +513 +0 +64 +1239 +342 +342 +342 +172 +4027 +4027 +4027 +1237 +1237 +1237 +210 +279 +279 +279 +6 +515 +1 +20 +0 +104 +23 +3 +32 +389 +3737 +3737 +3737 +1 +3259 +3259 +3259 +3830 +911 +566 +0 +54 +169 +283 +30 +304 +2908 +712 +31 +0 +23 +1 +0 +79 +94 +834 +170 +0 +4292 +4292 +4292 +0 +326 +68 +779 +25 +3844 +3844 +3844 +64 +5 +232 +4128 +4128 +4128 +4162 +4162 +4162 +109 +728 +235 +406 +164 +41 +3091 +4577 +4577 +4577 +23 +1 +267 +161 +510 +55 +1151 +136 +0 +44 +683 +9 +356 +38 +4028 +4028 +4028 +3374 +3374 +3374 +2995 +407 +39 +31 +236 +895 +196 +3275 +3275 +3275 +1656 +338 +2142 +2662 +4013 +4013 +4013 +666 +0 +67 +184 +182 +397 +450 +450 +450 +578 +3938 +1373 +544 +578 +372 +48 +0 +48 +2424 +590 +919 +13 +0 +859 +2800 +2800 +2800 +60 +79 +0 +549 +0 +4138 +4138 +4138 +2380 +2380 +2380 +10 +4534 +4534 +4534 +3872 +3872 +3872 +30 +147 +802 +48 +2661 +2661 +2661 +4072 +1613 +44 +560 +24 +169 +35 +4281 +4281 +4281 +309 +468 +3268 +3268 +3268 +148 +0 +124 +318 +60 +179 +62 +1 +29 +30 +50 +3368 +22 +738 +216 +367 +367 +367 +1877 +107 +224 +111 +1 +22 +2402 +3 +21 +39 +0 +278 +366 +602 +3343 +3343 +3343 +32 +189 +205 +48 +22 +2709 +160 +2728 +4991 +4991 +4991 +3232 +3232 +3232 +189 +0 +23 +595 +606 +1218 +1218 +1218 +38 +214 +1219 +1219 +1219 +1319 +590 +590 +590 +233 +4131 +4131 +4131 +940 +622 +588 +1698 +4700 +4700 +4700 +110 +3813 +3813 +3813 +26 +0 +4 +1116 +37 +3129 +3129 +3129 +0 +95 +95 +95 +33 +308 +413 +69 +49 +908 +220 +577 +577 +577 +366 +3092 +3092 +3092 +1 +64 +9 +1 +4405 +4405 +4405 +97 +218 +0 +29 +1 +50 +1 +94 +3539 +77 +1661 +20 +110 +0 +1304 +257 +815 +211 +23 +1 +91 +688 +45 +230 +864 +0 +2218 +2218 +2218 +106 +2 +2696 +2696 +2696 +202 +397 +2798 +1317 +30 +382 +2728 +4334 +4334 +4334 +3914 +3914 +3914 +32 +32 +4834 +4834 +4834 +4833 +4833 +4833 +1598 +1598 +1598 +473 +1 +2 +438 +4213 +4213 +4213 +3221 +3221 +3221 +26 +103 +135 +0 +3834 +3834 +3834 +3861 +3861 +3861 +84 +82 +82 +82 +598 +2559 +21 +28 +367 +367 +367 +1 +78 +895 +33 +236 +123 +907 +4018 +4018 +4018 +352 +352 +352 +380 +575 +1638 +1638 +1638 +666 +2944 +115 +2029 +2029 +2029 +857 +178 +45 +27 +96 +282 +582 +176 +44 +1 +368 +4880 +4880 +4880 +1622 +2064 +0 +1 +237 +30 +101 +0 +204 +248 +248 +248 +82 +1290 +1290 +1290 +489 +47 +56 +31 +31 +210 +1159 +1664 +1664 +1664 +30 +1185 +1074 +1074 +1074 +367 +1024 +45 +4995 +4995 +4995 +548 +548 +548 +5 +322 +1197 +581 +46 +2134 +2134 +2134 +211 +622 +0 +49 +31 +1550 +239 +129 +2 +20 +991 +0 +576 +576 +576 +337 +4329 +4329 +4329 +57 +2733 +41 +46 +4367 +4367 +4367 +4635 +4635 +4635 +0 +868 +868 +868 +863 +25 +113 +125 +56 +32 +367 +0 +883 +2770 +2770 +2770 +3852 +46 +24 +28 +32 +926 +112 +3834 +0 +67 +0 +1650 +1650 +1650 +0 +474 +474 +474 +1 +369 +104 +47 +253 +253 +253 +1373 +2020 +2020 +2020 +0 +313 +1050 +1352 +1352 +1352 +2316 +2316 +2316 +0 +4286 +4286 +4286 +1004 +1348 +73 +292 +0 +966 +63 +176 +176 +176 +3331 +3331 +3331 +286 +3477 +21 +4172 +4172 +4172 +2 +659 +41 +718 +718 +718 +67 +28 +977 +42 +50 +32 +61 +4299 +4299 +4299 +262 +70 +54 +1364 +1364 +1364 +1 +1 +333 +107 +0 +189 +50 +287 +1659 +0 +3114 +3114 +3114 +732 +90 +3449 +3449 +3449 +2126 +2126 +2126 +522 +942 +307 +29 +1472 +1278 +2421 +1617 +109 +281 +42 +50 +2509 +2509 +2509 +367 +0 +1998 +1998 +1998 +4015 +4015 +4015 +142 +69 +9 +244 +2246 +2607 +72 +2521 +2521 +2521 +3119 +3119 +3119 +1 +452 +225 +0 +38 +3976 +74 +0 +93 +4565 +4565 +4565 +78 +32 +62 +2849 +2849 +2849 +63 +314 +12 +0 +362 +562 +34 +931 +275 +52 +155 +281 +4391 +4391 +4391 +276 +120 +120 +120 +1764 +44 +34 +3615 +1 +29 +53 +90 +369 +22 +26 +2543 +2543 +2543 +226 +29 +331 +95 +337 +635 +197 +0 +35 +1404 +1134 +0 +54 +118 +985 +1570 +28 +370 +163 +3936 +975 +975 +975 +238 +300 +51 +246 +22 +652 +365 +73 +117 +117 +117 +497 +269 +1995 +2024 +2856 +53 +22 +82 +189 +1 +48 +152 +4032 +4032 +4032 +28 +1147 +1147 +1147 +90 +2539 +0 +3285 +3285 +3285 +586 +15 +2737 +4276 +4276 +4276 +98 +86 +2958 +2106 +3483 +3634 +0 +4382 +1294 +1294 +1294 +57 +559 +559 +559 +61 +202 +2745 +27 +700 +700 +700 +115 +0 +1 +1823 +1 +4204 +178 +2355 +27 +1 +236 +28 +284 +197 +0 +8 +171 +749 +157 +37 +590 +457 +1224 +2576 +687 +687 +687 +33 +829 +202 +2139 +24 +1328 +1328 +1328 +0 +1 +31 +31 +0 +76 +0 +257 +28 +101 +2142 +2142 +2142 +1766 +306 +30 +42 +0 +1285 +1 +216 +2360 +2360 +2360 +20 +82 +46 +37 +335 +408 +1462 +1462 +1462 +4342 +4342 +4342 +22 +468 +1 +4007 +4007 +4007 +1097 +1 +3655 +42 +2150 +1809 +1809 +1809 +0 +1 +1793 +1793 +1793 +335 +223 +1253 +306 +1766 +4052 +1 +2001 +2001 +2001 +1562 +1562 +1562 +611 +28 +4355 +1521 +196 +0 +1732 +5 +2574 +2574 +2574 +173 +40 +623 +1313 +430 +88 +1 +769 +769 +769 +0 +345 +4768 +4768 +4768 +1 +385 +1176 +1176 +1176 +26 +30 +79 +129 +4 +44 +224 +641 +0 +355 +82 +142 +24 +122 +621 +1709 +3657 +3657 +3657 +154 +0 +3704 +0 +424 +280 +280 +280 +3610 +3610 +3610 +31 +1 +32 +335 +1 +20 +0 +0 +3 +1 +4678 +4678 +4678 +27 +109 +121 +2231 +701 +814 +814 +814 +36 +304 +691 +210 +1 +1842 +1 +0 +31 +0 +95 +1464 +1464 +1464 +5 +281 +0 +49 +4073 +4073 +4073 +4411 +4411 +4411 +640 +640 +640 +0 +55 +67 +55 +3906 +3906 +3906 +31 +2 +1 +60 +31 +6 +31 +1475 +226 +2931 +670 +670 +670 +373 +373 +373 +331 +0 +1476 +3 +1578 +519 +2 +183 +69 +294 +2057 +2057 +2057 +0 +102 +62 +41 +4278 +4278 +4278 +3612 +3612 +3612 +53 +1 +26 +31 +1680 +329 +32 +311 +40 +30 +37 +31 +46 +4788 +3210 +3210 +3210 +20 +49 +1134 +3771 +3771 +3771 +683 +0 +0 +1088 +25 +29 +2912 +2912 +2912 +0 +1 +177 +0 +3668 +3668 +3668 +294 +40 +33 +30 +1 +4705 +4705 +4705 +0 +0 +357 +103 +11 +298 +4784 +4784 +4784 +26 +1 +4382 +4382 +4382 +167 +22 +0 +3061 +3061 +3061 +119 +531 +367 +201 +30 +0 +177 +31 +0 +58 +29 +4 +155 +4095 +4095 +4095 +682 +55 +2256 +2256 +2256 +101 +693 +20 +240 +31 +41 +4494 +4494 +4494 +769 +4 +800 +25 +752 +1 +238 +24 +32 +53 +0 +0 +28 +1 +2109 +46 +200 +168 +398 +87 +3297 +351 +0 +67 +338 +2249 +1190 +24 +340 +340 +340 +3117 +3117 +3117 +229 +408 +31 +1887 +1887 +1887 +574 +574 +574 +2 +2563 +2563 +2563 +24 +378 +53 +3754 +3754 +3754 +0 +47 +50 +2151 +85 +4019 +4019 +4019 +4390 +4390 +4390 +946 +18 +2830 +374 +410 +410 +410 +1 +1081 +54 +1 +3274 +82 +375 +945 +139 +0 +3273 +3273 +3273 +2219 +2219 +2219 +4753 +4753 +4753 +354 +28 +395 +25 +332 +63 +0 +2 +3285 +29 +0 +49 +106 +75 +30 +0 +4100 +4100 +4100 +1 +1 +327 +15 +31 +27 +1 +1876 +31 +1153 +30 +46 +308 +1545 +1545 +1545 +21 +180 +3 +22 +119 +174 +202 +700 +27 +31 +4163 +4163 +4163 +2200 +2200 +2200 +1 +140 +31 +55 +20 +47 +36 +253 +0 +168 +27 +31 +1 +200 +1903 +1903 +1903 +437 +27 +601 +1 +32 +51 +983 +1 +3472 +3472 +3472 +91 +35 +37 +1173 +1173 +1173 +1 +59 +20 +0 +1 +4090 +4090 +4090 +77 +530 +2556 +1807 +1807 +1807 +3184 +3184 +3184 +10 +23 +1630 +62 +34 +7 +55 +0 +1572 +0 +28 +2 +35 +84 +1 +79 +1769 +1769 +1769 +92 +3086 +3086 +3086 +419 +10 +4877 +4877 +4877 +1857 +4504 +4504 +4504 +34 +0 +4010 +4010 +4010 +37 +24 +40 +0 +135 +437 +0 +0 +0 +3784 +3784 +3784 +31 +20 +78 +1 +31 +32 +0 +92 +60 +268 +140 +480 +2962 +2962 +2962 +23 +58 +44 +1582 +1582 +1582 +665 +22 +0 +44 +28 +87 +489 +3 +2917 +90 +418 +32 +24 +3291 +562 +93 +3792 +3792 +3792 +90 +3046 +31 +1 +1832 +1832 +1832 +22 +4068 +4042 +4042 +4042 +257 +20 +22 +0 +345 +440 +421 +68 +0 +3795 +4038 +4038 +4038 +31 +1090 +98 +25 +25 +25 +2383 +65 +98 +358 +2269 +2269 +2269 +42 +173 +59 +0 +143 +0 +2303 +3988 +3988 +3988 +767 +176 +1 +746 +827 +33 +730 +197 +269 +47 +24 +1 +1498 +1498 +1498 +2683 +6 +51 +0 +440 +4515 +4515 +4515 +30 +1586 +33 +597 +52 +1079 +915 +915 +915 +21 +79 +106 +62 +611 +102 +2924 +132 +2981 +2981 +2981 +2716 +2716 +2716 +51 +2954 +78 +24 +61 +532 +660 +1523 +1523 +1523 +2484 +0 +95 +233 +25 +16 +1485 +28 +181 +3127 +31 +0 +1 +1244 +49 +59 +4 +255 +155 +30 +0 +2576 +171 +3840 +3840 +3840 +484 +3443 +3443 +3443 +61 +4808 +4808 +4808 +67 +2016 +2016 +2016 +4513 +4513 +4513 +3472 +3472 +3472 +57 +2 +22 +45 +127 +34 +30 +1 +619 +142 +0 +118 +507 +1636 +1069 +634 +46 +2991 +3 +1590 +61 +466 +741 +1837 +1837 +1837 +36 +3638 +24 +4633 +4633 +4633 +103 +21 +437 +20 +23 +513 +565 +58 +991 +112 +3795 +3795 +3795 +1846 +1846 +1846 +481 +60 +559 +27 +204 +2758 +2758 +2758 +32 +1346 +255 +1 +258 +68 +238 +28 +0 +370 +72 +1505 +1505 +1505 +1371 +61 +1 +61 +809 +463 +1140 +505 +3468 +741 +100 +357 +357 +357 +1 +1 +149 +2597 +2597 +2597 +486 +486 +486 +67 +211 +2251 +761 +14 +0 +664 +4 +213 +258 +476 +65 +4958 +4958 +4958 +851 +91 +20 +841 +841 +841 +41 +1581 +1581 +1581 +23 +2477 +143 +174 +127 +52 +73 +107 +59 +1446 +1446 +1446 +261 +1 +24 +489 +1 +458 +58 +305 +45 +397 +1 +26 +4004 +4004 +4004 +465 +1 +4687 +4687 +4687 +4210 +4210 +4210 +433 +3750 +3750 +3750 +97 +31 +89 +112 +0 +1526 +1526 +1526 +564 +28 +564 +1200 +25 +21 +1933 +1933 +1933 +359 +4131 +4131 +4131 +320 +2994 +98 +4361 +4361 +4361 +0 +138 +191 +103 +124 +0 +67 +1776 +3321 +3321 +3321 +500 +0 +918 +1553 +1553 +1553 +474 +21 +0 +1187 +700 +95 +4548 +4548 +4548 +583 +583 +583 +2484 +2484 +2484 +58 +878 +134 +3548 +3548 +3548 +532 +63 +26 +130 +2 +101 +27 +23 +248 +58 +31 +0 +1962 +157 +52 +0 +0 +1 +376 +233 +315 +1337 +2401 +522 +57 +188 +156 +249 +350 +39 +225 +276 +92 +276 +31 +2 +37 +460 +2555 +2555 +2555 +4609 +4609 +4609 +0 +26 +366 +1178 +390 +57 +0 +112 +605 +645 +365 +483 +22 +221 +59 +54 +94 +23 +4419 +4419 +4419 +4585 +3843 +3843 +3843 +250 +250 +250 +1695 +1695 +1695 +611 +46 +65 +3 +1008 +1008 +1008 +115 +68 +0 +561 +42 +50 +3032 +3032 +3032 +2391 +0 +1975 +28 +1409 +1409 +1409 +36 +463 +206 +0 +71 +90 +0 +0 +605 +52 +78 +4809 +4809 +4809 +336 +38 +0 +244 +42 +493 +0 +50 +406 +406 +406 +24 +4433 +4433 +4433 +0 +3909 +3909 +3909 +4589 +4589 +4589 +68 +46 +1666 +21 +1 +2479 +113 +1 +230 +2832 +2832 +2832 +46 +1150 +1150 +1150 +4666 +4666 +4666 +32 +364 +0 +0 +178 +109 +96 +2 +2282 +2282 +2282 +48 +717 +3080 +32 +78 +1937 +1937 +1937 +1 +96 +186 +607 +80 +4985 +4985 +4985 +281 +254 +1 +168 +2 +88 +2476 +2476 +2476 +32 +20 +4782 +4782 +4782 +2482 +193 +698 +791 +791 +791 +243 +122 +173 +270 +980 +612 +574 +21 +1432 +27 +30 +23 +5 +24 +105 +3778 +3778 +3778 +147 +118 +1697 +1697 +1697 +32 +1466 +26 +1548 +1078 +1078 +1078 +1561 +3757 +3757 +3757 +0 +109 +252 +125 +110 +58 +216 +237 +0 +119 +1826 +1748 +0 +75 +6 +321 +61 +285 +28 +78 +587 +46 +1349 +328 +295 +879 +273 +71 +224 +21 +270 +27 +0 +246 +3173 +32 +2142 +129 +3805 +392 +290 +39 +394 +28 +0 +0 +53 +0 +32 +94 +1710 +0 +101 +111 +242 +1 +3507 +3507 +3507 +34 +1427 +1427 +1427 +3863 +3863 +3863 +1 +601 +215 +981 +981 +981 +0 +48 +0 +21 +249 +249 +249 +0 +286 +38 +1754 +1404 +1404 +1404 +3 +27 +1740 +1740 +1740 +323 +30 +134 +118 +202 +2390 +384 +365 +60 +78 +31 +73 +1813 +3616 +3616 +3616 +735 +15 +0 +3827 +3827 +3827 +562 +1821 +640 +1016 +0 +21 +2 +1 +0 +33 +95 +21 +1758 +3208 +1 +0 +1 +0 +587 +0 +365 +4456 +4456 +4456 +3253 +51 +247 +918 +50 +3298 +3298 +3298 +461 +3827 +1 +3590 +3590 +3590 +1 +1471 +370 +4839 +4839 +4839 +32 +42 +32 +356 +3515 +14 +4 +0 +0 +1042 +5 +1 +0 +14 +20 +1 +33 +727 +3 +27 +41 +146 +0 +1159 +1824 +1 +20 +1442 +1442 +1442 +0 +212 +2303 +2303 +2303 +3875 +636 +0 +0 +29 +1 +2 +36 +1402 +1402 +1402 +118 +673 +4732 +4732 +4732 +36 +61 +1064 +33 +708 +125 +3 +319 +1013 +1 +1 +373 +373 +373 +180 +362 +1 +21 +1324 +380 +123 +123 +123 +1 +106 +2500 +804 +646 +91 +575 +229 +309 +0 +215 +33 +3609 +36 +771 +38 +4978 +4978 +4978 +477 +30 +24 +0 +1457 +1457 +1457 +31 +2264 +0 +4 +1 +0 +885 +3 +722 +303 +539 +122 +31 +95 +36 +254 +345 +5 +0 +0 +13 +1 +34 +1306 +1468 +808 +808 +808 +0 +543 +77 +415 +4656 +4656 +4656 +374 +1189 +30 +2303 +2303 +2303 +214 +22 +26 +160 +25 +4694 +21 +25 +27 +20 +1 +406 +0 +21 +6 +30 +368 +1 +26 +4161 +4161 +4161 +1 +33 +835 +146 +3269 +3269 +3269 +0 +2 +35 +33 +0 +0 +23 +13 +0 +1581 +302 +4763 +4763 +4763 +4794 +4794 +4794 +24 +365 +1 +2 +266 +30 +4327 +4327 +4327 +29 +146 +3234 +35 +5 +156 +1 +1 +1 +369 +22 +641 +2 +3482 +3482 +3482 +25 +30 +4684 +4684 +4684 +2 +436 +0 +62 +48 +1 +6 +1 +0 +37 +2564 +2564 +2564 +0 +4775 +4775 +4775 +26 +1220 +1220 +1220 +3993 +3993 +3993 +2193 +2563 +0 +156 +22 +0 +3 +926 +2047 +2047 +2047 +364 +3829 +3829 +3829 +53 +27 +1063 +2056 +40 +208 +0 +2111 +157 +20 +266 +34 +0 +88 +819 +7 +433 +3895 +3895 +3895 +39 +27 +90 +3 +41 +111 +30 +2828 +2828 +2828 +12 +464 +729 +729 +729 +417 +408 +0 +25 +1514 +35 +0 +415 +35 +4389 +4389 +4389 +55 +99 +4845 +4845 +4845 +3980 +52 +901 +0 +408 +4894 +4894 +4894 +59 +756 +46 +4822 +4822 +4822 +35 +1512 +155 +58 +2232 +447 +1 +246 +32 +38 +514 +50 +1100 +0 +745 +225 +225 +225 +33 +41 +37 +47 +20 +2 +1097 +32 +0 +59 +31 +447 +24 +37 +58 +36 +333 +4429 +4429 +4429 +248 +1497 +477 +63 +21 +0 +34 +0 +477 +0 +30 +23 +22 +145 +4791 +4791 +4791 +0 +31 +3129 +3129 +3129 +2477 +2477 +2477 +2191 +2191 +2191 +2 +31 +79 +36 +243 +120 +54 +1975 +1975 +1975 +34 +948 +948 +948 +0 +1975 +1975 +1975 +54 +239 +44 +857 +119 +0 +222 +58 +58 +58 +483 +1940
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/data/xnotdate.json b/priv/static/metrics-graphics-3.0-alpha3/examples/data/xnotdate.json new file mode 100644 index 0000000..989a08a --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/data/xnotdate.json @@ -0,0 +1,34 @@ +[ + { + "males": 50, + "females": 12 + }, + { + "males": 95, + "females": 66 + }, + { + "males": 143, + "females": 89 + }, + { + "males": 198, + "females": 105 + }, + { + "males": 244, + "females": 533 + }, + { + "males": 277, + "females": 175 + }, + { + "males": 344, + "females": 401 + }, + { + "males": 441, + "females": 1299 + } +] diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/examples.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/examples.htm new file mode 100644 index 0000000..1219425 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/examples.htm @@ -0,0 +1,113 @@ +<html lang='en'> +<head> + <meta content='text/html; charset=utf-8' http-equiv='Content-Type'> + + <title>MetricsGraphics.js - Examples</title> + + <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,700' rel='stylesheet' type='text/css'> + <link href='https://fonts.googleapis.com/css?family=PT+Serif:400,700,400italic' rel='stylesheet' type='text/css'> + <link href='https://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.css' rel='stylesheet' type='text/css'> + <link href='https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css' rel='stylesheet' type='text/css'> + + <link href='metricsgraphics.css' rel='stylesheet' type='text/css'> + <link href='css/metricsgraphics-demo.css' rel='stylesheet' type='text/css' id='light'> + <link href='' rel='stylesheet' type='text/css' id='dark'> + <link href='' rel='stylesheet' type='text/css' id='accessible'> + <link href='css/highlightjs-default.css' rel='stylesheet' type='text/css' id='light-code'> + <link href='' rel='stylesheet' type='text/css' id='dark-code'> + + <script src='js/lib/highlight.pack.js'></script> + <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js'></script> + <script src="https://d3js.org/d3.v4.min.js"></script> + <script src='https://unpkg.com/popper.js/dist/umd/popper.min.js'></script> + + <!-- dev start --> + <script src='js/MG.js'></script> + <script src='js/misc/utility.js'></script> + <script src='js/common/data_graphic.js'></script> + <script src='js/common/hooks.js'></script> + <script src='js/common/register.js'></script> + <script src='js/common/bootstrap_tooltip_popover.js'></script> + <script src='js/common/scales.js'></script> + <script src='js/common/chart_title.js'></script> + <script src='js/common/y_axis.js'></script> + <script src='js/common/x_axis.js'></script> + <script src='js/common/scales.js'></script> + <script src='js/common/init.js'></script> + <script src='js/common/markers.js'></script> + <script src='js/common/rollover.js'></script> + <script src='js/common/zoom.js'></script> + <script src='js/common/brush.js'></script> + <script src='js/common/window_listeners.js'></script> + <script src='js/layout/bootstrap_dropdown.js'></script> + <script src='js/layout/button.js'></script> + <script src='js/charts/line.js'></script> + <script src='js/charts/histogram.js'></script> + <script src='js/charts/point.js'></script> + <script src='js/charts/bar.js'></script> + <script src='js/charts/table.js'></script> + <script src='js/charts/missing.js'></script> + <script src='js/misc/process.js'></script> + <script src='js/misc/smoothers.js'></script> + <script src='js/misc/formatters.js'></script> + <script src='js/misc/transitions.js'></script> + <script src='js/misc/error.js'></script> + <!-- dev end --> + + <script> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-51487512-1', 'metricsgraphicsjs.org'); + ga('send', 'pageview'); + </script> +</head> + +<body> + <div class='container'> + <div class='head'> + <ul> + <li><a href='./'>Home</a></li> + <li><a href='https://github.com/metricsgraphics/metrics-graphics/releases'>Download</a></li> + <li><a href='interactive-demo.htm'>Interactive</a></li> + <li><a href='https://github.com/metricsgraphics/metrics-graphics'>Code</a></li> + <li><a href='https://github.com/metricsgraphics/metrics-graphics/issues'>Issues</a></li> + <li class='divider'>|</li> + <li><a href='#' id='light-css' class='pill active'>Light style</a></li> + <li><a href='#' id='dark-css' class='pill'>Dark style</a></li> + <li><a href='#' id='accessible-css' class='pill'>Accessible style</a></li> + </ul> + + <img src='images/logo.svg' id='logo' class='svg' /> + </div> + + <ul class='examples text-center'> + <li><a href='#' id='goto-lines' class='pill'>Lines</a></li> + <li><a href='#' id='goto-multilines' class='pill'>Multiple Lines</a></li> + <li><a href='#' id='goto-data' class='pill'>Data</a></li> + <li><a href='#' id='goto-axes' class='pill'>Axes</a></li> + <li><a href='#' id='goto-rollovers' class='pill'>Rollovers</a></li> + <li><a href='#' id='goto-auto-time-formatting' class='pill'>Automatic time formatting</a></li> + <li><a href='#' id='goto-annotations' class='pill'>Annotations</a></li> + <li><a href='#' id='goto-updating' class='pill'>Updating</a></li> + <li><a href='#' id='goto-other' class='pill'>Other</a></li> + <li><a href='#' id='goto-brushing_zooming' class='pill'>Brushing & Zooming</a></li> + <li><a href='#' id='goto-experimental' class='pill'>Experimental</a></li> + </ul> + + <div id='trunk'></div> + + <div class='footer'> + Created by <a href='https://twitter.com/alialmossawi'>Ali Almossawi</a>, + <a href='https://github.com/hamilton'>Hamilton Ulmer</a> — Metrics at + <a href='https://www.mozilla.org/en-US/'>Mozilla</a> + <br />Shared under the <a href='http://www.mozilla.org/MPL/2.0/'> + Mozilla Public License</a>. + </div> + </div> <!-- end container --> + + <script src='js/main.js'></script> +</body> +</html> diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/images/divider.png b/priv/static/metrics-graphics-3.0-alpha3/examples/images/divider.png Binary files differnew file mode 100644 index 0000000..9647b67 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/images/divider.png diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/images/logo.svg b/priv/static/metrics-graphics-3.0-alpha3/examples/images/logo.svg new file mode 100644 index 0000000..c847025 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/images/logo.svg @@ -0,0 +1,242 @@ +<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="480px" height="79px" viewBox="0 0 480 79" enable-background="new 0 0 480 79" xml:space="preserve">
+<g>
+ <path fill="#101111" d="M96.164,52.427c2.84-4.839,5.58-9.709,8.22-14.61c2.64-4.899,5.24-9.875,7.8-14.924
+ c0.56,0.038,1.149,0.064,1.77,0.083c0.62,0.019,1.27,0.027,1.95,0.027c0.56,0,1.11-0.027,1.65-0.083
+ c0.54-0.055,1.089-0.083,1.65-0.083c0.64,0,0.96,0.185,0.96,0.554c0,0.407-0.22,0.619-0.66,0.638
+ c-0.441,0.019-0.96,0.064-1.56,0.138c-1.121,0.121-1.821,0.904-2.1,2.348l-5.52,29.436c-0.12,0.683-0.18,1.225-0.18,1.626
+ c0,1.284,0.58,1.926,1.74,1.926c0.36,0,0.649,0.03,0.87,0.091c0.219,0.06,0.33,0.271,0.33,0.632c0,0.161-0.081,0.311-0.24,0.451
+ c-0.16,0.141-0.4,0.211-0.72,0.211c-0.32,0-0.86-0.051-1.62-0.149c-0.761-0.101-1.74-0.151-2.94-0.151
+ c-1.44,0-2.57,0.062-3.39,0.181c-0.82,0.119-1.331,0.181-1.53,0.181c-0.52,0-0.78-0.261-0.78-0.783c0-0.48,0.2-0.722,0.6-0.722
+ c0.399,0,0.879-0.08,1.44-0.241c0.879-0.24,1.449-0.672,1.71-1.295c0.26-0.621,0.53-1.574,0.81-2.859l5.88-29.676l-17.76,33.951
+ c-0.36,0.723-0.74,1.084-1.14,1.084c-0.24,0-0.39-0.14-0.45-0.421s-0.11-0.702-0.15-1.265l-1.38-31.844
+ c-2.961,9.15-5.081,16.204-6.36,21.16c-1.28,4.956-1.92,7.796-1.92,8.518c0,0.843,0.17,1.445,0.51,1.806
+ c0.339,0.362,0.72,0.623,1.14,0.783c0.42,0.16,0.8,0.29,1.14,0.391c0.339,0.101,0.51,0.312,0.51,0.632
+ c0,0.241-0.09,0.441-0.27,0.602c-0.18,0.161-0.39,0.241-0.63,0.241c-0.4,0-0.96-0.08-1.68-0.24c-0.72-0.159-1.661-0.239-2.82-0.239
+ c-0.999,0-1.83,0.06-2.49,0.18s-1.149,0.18-1.47,0.18c-0.519,0-0.78-0.199-0.78-0.6c0-0.439,0.24-0.71,0.72-0.811
+ c0.48-0.099,1.08-0.249,1.8-0.449c0.48-0.12,0.87-0.29,1.17-0.511c0.3-0.219,0.57-0.519,0.81-0.899c0.24-0.38,0.459-0.88,0.66-1.5
+ c0.2-0.62,0.439-1.39,0.72-2.311l7.62-26.16c0.08-0.2,0.14-0.459,0.18-0.78c0.039-0.32,0.06-0.68,0.06-1.08
+ c0-0.64-0.16-1.06-0.48-1.26c-0.32-0.2-0.67-0.33-1.05-0.39c-0.381-0.06-0.73-0.12-1.05-0.18c-0.321-0.06-0.48-0.25-0.48-0.57
+ c0-0.44,0.3-0.66,0.9-0.66c0.159,0,0.699,0.038,1.62,0.111c0.919,0.074,2.34,0.11,4.26,0.11c0.8,0,1.25,0.112,1.35,0.333
+ c0.099,0.221,0.169,0.657,0.21,1.306L96.164,52.427z"/>
+ <path fill="#101111" d="M122.144,51.947c0,2.24,0.489,3.96,1.47,5.16c0.979,1.199,2.25,1.8,3.81,1.8c2.16,0,4.26-1.22,6.3-3.66
+ c0.6-0.72,0.979-1.32,1.14-1.8c0.159-0.48,0.42-0.721,0.78-0.721c0.24,0,0.36,0.201,0.36,0.601c0,0.32-0.15,0.78-0.45,1.38
+ c-0.3,0.6-0.771,1.32-1.41,2.16c-2.601,3.359-5.3,5.04-8.1,5.04c-1.08,0-2.09-0.251-3.03-0.75c-0.94-0.5-1.761-1.2-2.46-2.101
+ c-0.7-0.899-1.25-1.989-1.65-3.27c-0.4-1.279-0.6-2.7-0.6-4.26c0-2.199,0.422-4.41,1.268-6.63c0.845-2.221,2.091-4.329,3.741-6.331
+ c1.528-1.879,3.128-3.279,4.797-4.2c1.67-0.92,3.269-1.38,4.798-1.38c1.81,0,3.278,0.561,4.405,1.68
+ c1.127,1.12,1.69,2.561,1.69,4.32c0,2.96-1.4,5.321-4.2,7.081c-2.8,1.761-6.96,2.86-12.479,3.3
+ C122.204,50.647,122.144,51.508,122.144,51.947z M132.074,44.807c2.22-1.879,3.33-4.199,3.33-6.959c0-1.12-0.27-2.02-0.81-2.7
+ c-0.54-0.68-1.271-1.02-2.19-1.02c-0.921,0-1.851,0.3-2.79,0.9c-0.94,0.6-1.851,1.491-2.73,2.67c-0.88,1.18-1.71,2.631-2.49,4.35
+ c-0.78,1.721-1.431,3.681-1.95,5.88C126.644,47.728,129.854,46.688,132.074,44.807z"/>
+ <path fill="#101111" d="M150.043,34.307h4.38c0.279,0,0.42,0.12,0.42,0.36c0,0.72-0.24,1.08-0.72,1.08h-4.38l-3.24,12.18
+ c-0.6,2.28-1.08,4.131-1.44,5.55c-0.36,1.421-0.54,2.431-0.54,3.03c0,0.4,0.09,0.72,0.27,0.96c0.18,0.24,0.369,0.36,0.57,0.36
+ c0.56,0,1.52-1.04,2.88-3.12c0.56-0.84,0.91-1.489,1.05-1.95c0.14-0.459,0.35-0.689,0.63-0.689c0.32,0,0.48,0.2,0.48,0.6
+ c0,0.6-0.681,1.9-2.04,3.9c-1.041,1.56-2.061,2.74-3.06,3.54c-1,0.799-1.84,1.199-2.52,1.199c-0.6,0-1.09-0.27-1.47-0.81
+ c-0.381-0.54-0.57-1.29-0.57-2.25c0-1.959,0.76-5.619,2.28-10.98l3.24-11.52h-3.66c-0.12,0-0.221-0.04-0.3-0.12
+ c-0.081-0.08-0.12-0.159-0.12-0.24c0-0.72,0.24-1.08,0.72-1.08h3.78l1.5-5.64c0.159-0.56,0.41-0.919,0.75-1.08
+ c0.339-0.159,0.89-0.24,1.65-0.24c0.799,0,1.2,0.201,1.2,0.6c0,0.16-0.1,0.6-0.3,1.32L150.043,34.307z"/>
+ <path fill="#101111" d="M161.383,50.17c2.28-5.588,4.329-9.758,6.15-12.512c1.82-2.754,3.57-4.132,5.25-4.132
+ c0.68,0,1.27,0.27,1.77,0.808c0.5,0.539,0.75,1.268,0.75,2.186c0,0.999-0.24,1.817-0.72,2.455c-0.48,0.639-1.02,0.958-1.62,0.958
+ c-0.48,0-0.87-0.149-1.17-0.449c-0.3-0.299-0.45-0.729-0.45-1.287c0-0.439-0.101-0.788-0.3-1.047
+ c-0.201-0.259-0.42-0.389-0.66-0.389c-0.681,0-1.93,1.557-3.75,4.67c-1.821,3.113-3.951,7.823-6.39,14.129
+ c-0.44,1.157-0.771,2.075-0.99,2.754c-0.221,0.679-0.42,1.197-0.6,1.557c-0.18,0.359-0.39,0.59-0.63,0.688
+ c-0.24,0.1-0.621,0.149-1.14,0.149c-0.96,0-1.44-0.239-1.44-0.718c0-0.08,0.06-0.34,0.18-0.778l4.44-16.879
+ c0.28-1.076,0.5-2.014,0.66-2.812c0.16-0.798,0.24-1.477,0.24-2.035c0-0.758-0.3-1.137-0.9-1.137c-0.52,0-1.041,0.28-1.56,0.84
+ c-0.521,0.561-1.011,1.17-1.47,1.83c-0.46,0.66-0.88,1.26-1.26,1.8c-0.381,0.54-0.651,0.81-0.81,0.81c-0.28,0-0.42-0.199-0.42-0.6
+ c0-0.16,0.199-0.6,0.6-1.32c0.399-0.72,1.06-1.62,1.98-2.7c2.16-2.559,3.98-3.84,5.46-3.84c0.6,0,1.08,0.229,1.44,0.689
+ c0.36,0.459,0.54,1.147,0.54,2.065c0,0.319-0.06,0.978-0.18,1.975c-0.12,0.999-0.36,2.195-0.72,3.593L161.383,50.17z"/>
+ <path fill="#101111" d="M179.802,55.007c-0.36,1.2-0.54,1.98-0.54,2.34c0,0.841,0.279,1.261,0.84,1.261c1,0,2.08-1.021,3.24-3.061
+ c0.639-1.08,1.069-1.869,1.29-2.37c0.219-0.499,0.41-0.75,0.57-0.75c0.279,0,0.42,0.141,0.42,0.42c0,0.681-0.801,2.241-2.4,4.681
+ c-0.921,1.4-1.84,2.45-2.76,3.149c-0.92,0.699-1.78,1.05-2.58,1.05c-1.601,0-2.4-1-2.4-3c0-1.039,0.22-2.329,0.66-3.869
+ c0.439-1.54,1.04-3.391,1.8-5.551l2.46-7.199c0.36-1.08,0.66-2.01,0.9-2.791c0.24-0.78,0.36-1.449,0.36-2.01
+ c0-0.44-0.051-0.759-0.15-0.96c-0.101-0.2-0.33-0.3-0.69-0.3c-0.48,0-0.96,0.25-1.44,0.75c-0.48,0.501-0.93,1.061-1.35,1.68
+ c-0.42,0.621-0.801,1.18-1.14,1.68c-0.34,0.501-0.591,0.75-0.75,0.75c-0.201,0-0.3-0.181-0.3-0.54c0-0.16,0.159-0.54,0.48-1.14
+ c0.319-0.6,0.84-1.359,1.56-2.28c2.04-2.56,3.84-3.84,5.4-3.84c0.68,0,1.22,0.22,1.62,0.66c0.399,0.44,0.6,1.06,0.6,1.86
+ c0,0.84-0.141,1.761-0.42,2.76c-0.28,1-0.621,2.099-1.02,3.3L179.802,55.007z M184.872,23.837c0.58-0.819,1.23-1.23,1.95-1.23
+ c0.519,0,0.939,0.201,1.26,0.6c0.32,0.4,0.48,0.92,0.48,1.56c0,1.161-0.28,2.16-0.84,3c-0.561,0.84-1.2,1.26-1.92,1.26
+ c-0.561,0-1-0.219-1.32-0.66c-0.32-0.44-0.48-1.06-0.48-1.86C184.002,25.547,184.292,24.657,184.872,23.837z"/>
+ <path fill="#101111" d="M209.082,33.917c0.919,0.581,1.38,1.41,1.38,2.49c0,0.4-0.16,0.78-0.48,1.14
+ c-0.321,0.36-0.76,0.54-1.32,0.54c-0.681,0-1.251-0.18-1.71-0.54c-0.46-0.36-0.88-0.75-1.26-1.17c-0.38-0.42-0.741-0.81-1.08-1.17
+ c-0.34-0.36-0.73-0.54-1.17-0.54c-0.88,0-1.87,0.4-2.97,1.2c-1.101,0.8-2.14,1.911-3.12,3.33c-0.981,1.42-1.811,3.13-2.49,5.13
+ c-0.681,2.001-1.02,4.2-1.02,6.6c0,2.561,0.51,4.521,1.53,5.88c1.02,1.36,2.45,2.04,4.29,2.04c1.879,0,3.9-1.199,6.06-3.6
+ c0.64-0.72,1.05-1.32,1.23-1.8c0.18-0.48,0.45-0.721,0.81-0.721c0.28,0,0.42,0.201,0.42,0.601c0,0.32-0.21,0.84-0.63,1.56
+ c-0.42,0.721-1.07,1.581-1.95,2.58c-1.281,1.48-2.571,2.591-3.87,3.33c-1.3,0.74-2.65,1.11-4.05,1.11
+ c-1.161,0-2.23-0.251-3.21-0.75c-0.98-0.5-1.84-1.2-2.58-2.101c-0.741-0.899-1.32-1.989-1.74-3.27c-0.42-1.279-0.63-2.7-0.63-4.26
+ c0-2.199,0.439-4.41,1.32-6.63c0.879-2.221,2.18-4.25,3.9-6.09c1.68-2.04,3.47-3.51,5.37-4.41c1.899-0.9,3.63-1.35,5.19-1.35
+ C206.901,33.047,208.161,33.338,209.082,33.917z"/>
+ <path fill="#101111" d="M222.342,46.901c0.96,1.206,1.72,2.34,2.28,3.405c0.56,1.064,0.84,2.2,0.84,3.404
+ c0,1.086-0.23,2.11-0.69,3.074s-1.06,1.808-1.8,2.531s-1.61,1.307-2.61,1.748c-1,0.441-2.04,0.662-3.12,0.662
+ c-0.84,0-1.68-0.11-2.52-0.329c-0.84-0.221-1.6-0.511-2.28-0.87c-0.68-0.36-1.23-0.76-1.65-1.2c-0.42-0.439-0.63-0.859-0.63-1.26
+ c0-1.28,0.13-2.271,0.39-2.971c0.261-0.699,0.57-1.05,0.93-1.05c0.24,0,0.44,0.09,0.6,0.271c0.159,0.18,0.309,0.42,0.45,0.72
+ c0.14,0.3,0.27,0.62,0.39,0.96s0.279,0.69,0.48,1.05c0.64,1.161,1.359,2.021,2.16,2.58c0.8,0.561,1.659,0.84,2.58,0.84
+ c1.119,0,2.079-0.47,2.88-1.41c0.8-0.939,1.2-2.089,1.2-3.449c0-0.92-0.19-1.771-0.57-2.551c-0.38-0.779-0.91-1.59-1.59-2.43
+ l-2.52-3.06c-0.96-1.16-1.701-2.26-2.22-3.301c-0.52-1.039-0.78-2.079-0.78-3.119c0-1,0.21-1.98,0.63-2.94s0.979-1.81,1.68-2.55
+ c0.699-0.74,1.509-1.33,2.43-1.77c0.92-0.44,1.899-0.66,2.94-0.66c0.76,0,1.51,0.074,2.25,0.222s1.41,0.351,2.01,0.609
+ c0.601,0.259,1.08,0.575,1.44,0.948c0.36,0.374,0.54,0.781,0.54,1.221c0,1.92-0.381,2.88-1.14,2.88c-0.321,0-0.681-0.229-1.08-0.69
+ c-0.4-0.459-0.87-0.969-1.41-1.53c-0.54-0.56-1.14-1.07-1.8-1.53c-0.66-0.459-1.41-0.69-2.25-0.69c-0.92,0-1.73,0.372-2.43,1.116
+ c-0.701,0.743-1.05,1.677-1.05,2.802c0,0.724,0.16,1.417,0.48,2.079c0.32,0.663,0.78,1.375,1.38,2.139L222.342,46.901z"/>
+ <path fill="#101111" d="M259.182,31.007c-0.12,0.521-0.4,0.78-0.84,0.78c-0.48,0-0.721-0.42-0.721-1.26
+ c0-0.36,0.021-0.789,0.061-1.29c0.039-0.5,0.06-1.089,0.06-1.77c0-1.479-0.13-2.499-0.39-3.06c-0.261-0.56-0.971-0.84-2.13-0.84
+ c-1.721,0-3.641,0.42-5.76,1.26c-2.121,0.84-4.121,2.1-6,3.78c-2.801,2.52-4.941,5.43-6.42,8.73c-1.48,3.3-2.221,6.771-2.221,10.41
+ c0,3.921,0.88,6.971,2.641,9.15c1.76,2.181,4.159,3.27,7.199,3.27c1.2,0,2.229-0.12,3.091-0.36c0.859-0.239,1.569-0.639,2.13-1.199
+ c0.439-1.44,0.77-2.68,0.989-3.721c0.22-1.039,0.391-1.839,0.511-2.399l0.899-4.561c0.12-0.759,0.181-1.2,0.181-1.319
+ c0-1.04-0.42-1.681-1.261-1.92c-0.28-0.08-0.561-0.12-0.84-0.12c-0.28,0-0.54-0.01-0.78-0.03c-0.239-0.02-0.44-0.08-0.6-0.18
+ c-0.16-0.1-0.24-0.29-0.24-0.57c0-0.48,0.36-0.72,1.08-0.72c0.56,0,1.26,0.04,2.101,0.12c0.84,0.08,1.819,0.119,2.939,0.119
+ c1.16,0,2.12-0.06,2.88-0.18s1.32-0.18,1.681-0.18c0.479,0,0.72,0.2,0.72,0.6c0,0.32-0.081,0.531-0.24,0.63
+ c-0.16,0.101-0.37,0.181-0.63,0.24c-0.261,0.06-0.54,0.12-0.84,0.18c-0.3,0.061-0.591,0.19-0.87,0.391c-0.48,0.4-0.87,1-1.17,1.8
+ c-0.3,0.801-0.591,1.881-0.87,3.24l-0.66,3.359c-0.12,0.641-0.28,1.44-0.479,2.4c-0.201,0.96-0.36,2.141-0.48,3.54
+ c-2.8,1.72-5.961,2.58-9.479,2.58c-2.081,0-3.99-0.351-5.73-1.05c-1.74-0.7-3.24-1.689-4.5-2.971
+ c-1.26-1.279-2.24-2.819-2.939-4.62c-0.701-1.8-1.051-3.779-1.051-5.939c0-3.92,0.9-7.55,2.7-10.89c1.8-3.339,4.46-6.33,7.98-8.97
+ c2.6-1.92,5.399-3.369,8.399-4.35c3-0.98,5.9-1.47,8.7-1.47c2,0,3,0.4,3,1.2c0,0.201-0.021,0.34-0.06,0.42L259.182,31.007z"/>
+ <path fill="#101111" d="M268.721,50.17c2.28-5.588,4.329-9.758,6.15-12.512c1.819-2.754,3.569-4.132,5.25-4.132
+ c0.68,0,1.269,0.27,1.77,0.808c0.5,0.539,0.75,1.268,0.75,2.186c0,0.999-0.24,1.817-0.72,2.455c-0.48,0.639-1.021,0.958-1.62,0.958
+ c-0.48,0-0.87-0.149-1.17-0.449c-0.3-0.299-0.45-0.729-0.45-1.287c0-0.439-0.101-0.788-0.3-1.047
+ c-0.201-0.259-0.42-0.389-0.66-0.389c-0.681,0-1.931,1.557-3.75,4.67c-1.82,3.113-3.951,7.823-6.39,14.129
+ c-0.441,1.157-0.771,2.075-0.99,2.754c-0.221,0.679-0.42,1.197-0.601,1.557c-0.18,0.359-0.39,0.59-0.63,0.688
+ c-0.239,0.1-0.62,0.149-1.14,0.149c-0.96,0-1.44-0.239-1.44-0.718c0-0.08,0.061-0.34,0.181-0.778l4.439-16.879
+ c0.279-1.076,0.5-2.014,0.66-2.812c0.159-0.798,0.24-1.477,0.24-2.035c0-0.758-0.3-1.137-0.9-1.137c-0.521,0-1.04,0.28-1.56,0.84
+ c-0.521,0.561-1.011,1.17-1.47,1.83c-0.461,0.66-0.881,1.26-1.261,1.8s-0.65,0.81-0.81,0.81c-0.28,0-0.42-0.199-0.42-0.6
+ c0-0.16,0.199-0.6,0.6-1.32c0.399-0.72,1.06-1.62,1.98-2.7c2.16-2.559,3.979-3.84,5.46-3.84c0.6,0,1.08,0.229,1.439,0.689
+ c0.36,0.459,0.54,1.147,0.54,2.065c0,0.319-0.06,0.978-0.18,1.975c-0.12,0.999-0.36,2.195-0.72,3.593L268.721,50.17z"/>
+ <path fill="#101111" d="M302.141,53.207c-0.24,0.84-0.4,1.521-0.48,2.04c-0.08,0.521-0.12,0.86-0.12,1.02
+ c0,0.841,0.22,1.261,0.66,1.261c0.68,0,1.62-0.84,2.82-2.521c0.52-0.72,0.859-1.279,1.02-1.68c0.16-0.399,0.399-0.601,0.721-0.601
+ c0.199,0,0.3,0.141,0.3,0.421c0,0.84-0.641,2.159-1.92,3.96c-2.2,3.2-4.141,4.8-5.82,4.8c-1.28,0-1.92-0.86-1.92-2.58
+ c0-0.999,0.13-2.03,0.39-3.09s0.55-2.17,0.87-3.33l1.801-6.66c-3,5.16-5.641,9.04-7.921,11.64c-2.279,2.601-4.42,3.9-6.42,3.9
+ c-1.479,0-2.66-0.561-3.54-1.68c-0.879-1.12-1.319-2.74-1.319-4.86c0-2.199,0.51-4.539,1.529-7.021
+ c1.021-2.479,2.59-5.039,4.71-7.68c2-2.52,4.051-4.389,6.15-5.61c2.1-1.22,3.95-1.83,5.55-1.83c1.08,0,1.95,0.21,2.61,0.63
+ c0.66,0.42,1.13,0.63,1.41,0.63c0.159,0,0.31-0.09,0.45-0.27c0.14-0.18,0.309-0.38,0.51-0.6c0.199-0.219,0.45-0.42,0.75-0.6
+ s0.669-0.27,1.109-0.27c0.561,0,0.939,0.051,1.141,0.15c0.199,0.101,0.3,0.371,0.3,0.81c0,0.28-0.101,0.72-0.3,1.32L302.141,53.207
+ z M294.671,36.557c-1.821,1.5-3.631,3.81-5.431,6.93c-1.4,2.44-2.44,4.649-3.12,6.63c-0.681,1.979-1.02,3.65-1.02,5.01
+ c0,1.161,0.26,2.04,0.78,2.64c0.519,0.601,1.179,0.9,1.979,0.9c1.119,0,2.35-0.669,3.69-2.01c1.34-1.34,2.91-3.33,4.71-5.97
+ c4.2-6.16,6.3-10.4,6.3-12.721c0-1.16-0.3-2.06-0.9-2.7c-0.6-0.64-1.439-0.96-2.52-0.96
+ C297.979,34.307,296.49,35.057,294.671,36.557z"/>
+ <path fill="#101111" d="M320.08,33.827c0.8-0.2,1.569-0.35,2.31-0.45c0.74-0.099,1.45-0.15,2.131-0.15c2.76,0,4.89,0.801,6.39,2.4
+ c1.5,1.601,2.25,3.9,2.25,6.9c0,2.279-0.411,4.58-1.23,6.899c-0.82,2.32-2.01,4.5-3.569,6.54c-2.961,3.801-6,5.7-9.12,5.7
+ c-1.041,0-1.971-0.21-2.79-0.63c-0.82-0.42-1.631-1.069-2.43-1.95l-2.101,10.32c-0.08,0.399-0.12,0.739-0.12,1.02
+ c0,0.601,0.181,1.029,0.54,1.29c0.36,0.26,0.77,0.46,1.23,0.601c0.459,0.14,0.87,0.26,1.229,0.359c0.36,0.1,0.54,0.29,0.54,0.57
+ c0,0.439-0.22,0.66-0.66,0.66s-1.18-0.07-2.22-0.21c-1.04-0.141-2.359-0.21-3.96-0.21c-1.119,0-2.04,0.069-2.76,0.21
+ c-0.72,0.14-1.28,0.21-1.68,0.21c-0.68,0-1.021-0.16-1.021-0.48c0-0.44,0.25-0.7,0.75-0.779c0.501-0.081,1.17-0.28,2.01-0.601
+ c0.48-0.2,0.851-0.39,1.11-0.57c0.261-0.18,0.471-0.399,0.63-0.659c0.16-0.261,0.291-0.591,0.39-0.99
+ c0.101-0.4,0.231-0.921,0.391-1.561l7.68-31.68c-0.921,0.48-1.641,0.87-2.16,1.17c-0.521,0.3-0.88,0.45-1.08,0.45
+ c-0.32,0-0.479-0.1-0.479-0.3c0-0.52,0.339-0.99,1.02-1.41c0.68-0.42,1.72-0.909,3.12-1.47l1.32-5.76c0.12-0.48,0.26-0.78,0.42-0.9
+ c0.159-0.12,0.439-0.18,0.84-0.18h0.78c0.56,0,0.949,0.01,1.17,0.03c0.22,0.021,0.33,0.13,0.33,0.33v0.24
+ c0,0.12-0.04,0.28-0.12,0.48L320.08,33.827z M315.28,53.837c-0.16,0.844-0.24,1.608-0.24,2.29c0,1.287,0.33,2.292,0.99,3.016
+ s1.55,1.084,2.67,1.084c2.84,0,5.199-1.828,7.08-5.485c1.359-2.612,2.359-5.094,3-7.445c0.64-2.351,0.96-4.33,0.96-5.938
+ c0-2.09-0.54-3.698-1.62-4.823s-2.64-1.688-4.68-1.688c-0.96,0-2.2,0.221-3.721,0.663l-3.779,15.373
+ C315.66,52.008,315.439,52.993,315.28,53.837z"/>
+ <path fill="#101111" d="M341.499,46.907c2.36-4.6,4.53-8.03,6.51-10.29c1.98-2.26,3.931-3.39,5.851-3.39
+ c1.479,0,2.68,0.648,3.6,1.941c0.92,1.294,1.38,3.136,1.38,5.525c0,2.15-0.359,4.46-1.08,6.928c-0.72,2.47-1.739,4.799-3.06,6.988
+ c-1.4,2.27-2.87,3.994-4.41,5.172c-1.54,1.176-2.91,1.766-4.109,1.766c-1.001,0-1.78-0.25-2.341-0.75s-0.84-1.169-0.84-2.007
+ c0-0.597,0.159-1.074,0.48-1.433c0.319-0.358,0.699-0.538,1.14-0.538c0.36,0,0.66,0.14,0.9,0.418
+ c0.239,0.279,0.459,0.588,0.66,0.927c0.199,0.338,0.429,0.646,0.689,0.925c0.26,0.279,0.609,0.418,1.05,0.418
+ c0.8,0,1.51-0.457,2.13-1.372s1.311-2.309,2.07-4.18c0.56-1.353,1.04-2.696,1.44-4.029c0.399-1.333,0.72-2.606,0.96-3.82
+ c0.239-1.213,0.42-2.328,0.54-3.343s0.18-1.86,0.18-2.537c0-1.393-0.25-2.448-0.75-3.164c-0.501-0.716-1.15-1.075-1.95-1.075
+ c-1.601,0-3.471,1.38-5.609,4.14c-2.141,2.76-4.211,6.72-6.21,11.88c-1.041,2.76-1.771,4.821-2.19,6.181s-0.67,2.1-0.75,2.22
+ c-0.2,0.359-0.761,0.54-1.68,0.54c-0.44,0-0.75-0.051-0.931-0.15c-0.18-0.1-0.27-0.369-0.27-0.81c0-0.2,0.06-0.54,0.18-1.021
+ l8.7-33.84c0.279-1.08,0.42-1.86,0.42-2.34c0-0.279-0.12-0.53-0.36-0.75c-0.239-0.219-0.58-0.33-1.02-0.33
+ c-0.12,0-0.23,0.01-0.33,0.03c-0.101,0.021-0.21,0.03-0.33,0.03c-0.641,0-0.96-0.2-0.96-0.6c0-0.24,0.09-0.41,0.271-0.51
+ c0.18-0.1,0.42-0.17,0.72-0.21c0.3-0.04,0.669-0.07,1.109-0.09c0.44-0.02,0.92-0.09,1.44-0.21c1.08-0.2,1.86-0.5,2.34-0.9
+ c0.48-0.399,0.9-0.6,1.26-0.6c0.2,0,0.301,0.16,0.301,0.48c0,0.041-0.011,0.111-0.03,0.21c-0.021,0.101-0.051,0.25-0.09,0.45
+ L341.499,46.907z"/>
+ <path fill="#101111" d="M366.579,55.007c-0.36,1.2-0.54,1.98-0.54,2.34c0,0.841,0.279,1.261,0.84,1.261
+ c0.999,0,2.079-1.021,3.24-3.061c0.64-1.08,1.069-1.869,1.29-2.37c0.219-0.499,0.409-0.75,0.569-0.75
+ c0.28,0,0.421,0.141,0.421,0.42c0,0.681-0.801,2.241-2.4,4.681c-0.921,1.4-1.841,2.45-2.76,3.149c-0.921,0.699-1.78,1.05-2.58,1.05
+ c-1.601,0-2.4-1-2.4-3c0-1.039,0.22-2.329,0.66-3.869c0.439-1.54,1.04-3.391,1.8-5.551l2.46-7.199c0.36-1.08,0.66-2.01,0.9-2.791
+ c0.24-0.78,0.359-1.449,0.359-2.01c0-0.44-0.05-0.759-0.149-0.96c-0.101-0.2-0.33-0.3-0.69-0.3c-0.479,0-0.96,0.25-1.439,0.75
+ c-0.48,0.501-0.931,1.061-1.351,1.68c-0.42,0.621-0.8,1.18-1.14,1.68c-0.34,0.501-0.591,0.75-0.75,0.75c-0.2,0-0.3-0.181-0.3-0.54
+ c0-0.16,0.159-0.54,0.479-1.14s0.84-1.359,1.561-2.28c2.04-2.56,3.84-3.84,5.399-3.84c0.68,0,1.22,0.22,1.62,0.66
+ c0.399,0.44,0.601,1.06,0.601,1.86c0,0.84-0.141,1.761-0.42,2.76c-0.28,1-0.621,2.099-1.021,3.3L366.579,55.007z M371.649,23.837
+ c0.579-0.819,1.229-1.23,1.949-1.23c0.52,0,0.939,0.201,1.261,0.6c0.319,0.4,0.479,0.92,0.479,1.56c0,1.161-0.28,2.16-0.84,3
+ c-0.561,0.84-1.2,1.26-1.92,1.26c-0.561,0-1-0.219-1.32-0.66c-0.32-0.44-0.479-1.06-0.479-1.86
+ C370.779,25.547,371.068,24.657,371.649,23.837z"/>
+ <path fill="#101111" d="M395.858,33.917c0.92,0.581,1.38,1.41,1.38,2.49c0,0.4-0.16,0.78-0.48,1.14
+ c-0.32,0.36-0.76,0.54-1.319,0.54c-0.681,0-1.251-0.18-1.71-0.54c-0.461-0.36-0.881-0.75-1.26-1.17
+ c-0.381-0.42-0.741-0.81-1.08-1.17c-0.341-0.36-0.73-0.54-1.17-0.54c-0.881,0-1.871,0.4-2.971,1.2c-1.101,0.8-2.14,1.911-3.12,3.33
+ c-0.98,1.42-1.81,3.13-2.489,5.13c-0.681,2.001-1.021,4.2-1.021,6.6c0,2.561,0.51,4.521,1.53,5.88c1.02,1.36,2.449,2.04,4.29,2.04
+ c1.88,0,3.899-1.199,6.06-3.6c0.64-0.72,1.05-1.32,1.23-1.8c0.18-0.48,0.45-0.721,0.81-0.721c0.279,0,0.42,0.201,0.42,0.601
+ c0,0.32-0.21,0.84-0.63,1.56c-0.42,0.721-1.07,1.581-1.95,2.58c-1.28,1.48-2.57,2.591-3.87,3.33c-1.3,0.74-2.649,1.11-4.05,1.11
+ c-1.16,0-2.23-0.251-3.21-0.75c-0.98-0.5-1.84-1.2-2.58-2.101c-0.74-0.899-1.319-1.989-1.739-3.27
+ c-0.421-1.279-0.631-2.7-0.631-4.26c0-2.199,0.44-4.41,1.32-6.63c0.88-2.221,2.18-4.25,3.9-6.09c1.68-2.04,3.47-3.51,5.37-4.41
+ c1.899-0.9,3.63-1.35,5.189-1.35C393.678,33.047,394.938,33.338,395.858,33.917z"/>
+ <path fill="#101111" d="M409.118,46.901c0.96,1.206,1.72,2.34,2.28,3.405c0.56,1.064,0.84,2.2,0.84,3.404
+ c0,1.086-0.23,2.11-0.69,3.074s-1.06,1.808-1.8,2.531s-1.61,1.307-2.609,1.748c-1.001,0.441-2.04,0.662-3.12,0.662
+ c-0.84,0-1.681-0.11-2.521-0.329c-0.84-0.221-1.6-0.511-2.279-0.87c-0.68-0.36-1.23-0.76-1.65-1.2
+ c-0.42-0.439-0.63-0.859-0.63-1.26c0-1.28,0.13-2.271,0.39-2.971c0.261-0.699,0.57-1.05,0.93-1.05c0.24,0,0.441,0.09,0.601,0.271
+ c0.159,0.18,0.31,0.42,0.45,0.72c0.14,0.3,0.27,0.62,0.39,0.96s0.279,0.69,0.48,1.05c0.639,1.161,1.359,2.021,2.159,2.58
+ c0.8,0.561,1.66,0.84,2.58,0.84c1.12,0,2.08-0.47,2.88-1.41c0.8-0.939,1.2-2.089,1.2-3.449c0-0.92-0.19-1.771-0.569-2.551
+ c-0.381-0.779-0.911-1.59-1.591-2.43l-2.52-3.06c-0.96-1.16-1.701-2.26-2.22-3.301c-0.521-1.039-0.78-2.079-0.78-3.119
+ c0-1,0.21-1.98,0.63-2.94s0.979-1.81,1.68-2.55c0.7-0.74,1.51-1.33,2.431-1.77c0.919-0.44,1.899-0.66,2.939-0.66
+ c0.76,0,1.51,0.074,2.25,0.222s1.41,0.351,2.01,0.609c0.601,0.259,1.08,0.575,1.44,0.948c0.36,0.374,0.54,0.781,0.54,1.221
+ c0,1.92-0.381,2.88-1.14,2.88c-0.321,0-0.681-0.229-1.08-0.69c-0.4-0.459-0.87-0.969-1.41-1.53c-0.54-0.56-1.14-1.07-1.8-1.53
+ c-0.66-0.459-1.41-0.69-2.25-0.69c-0.921,0-1.73,0.372-2.431,1.116c-0.7,0.743-1.05,1.677-1.05,2.802
+ c0,0.724,0.159,1.417,0.48,2.079c0.319,0.663,0.779,1.375,1.38,2.139L409.118,46.901z"/>
+ <path fill="#101111" d="M416.708,56.717c0.459-0.619,1.01-0.93,1.649-0.93c1.12,0,1.681,0.78,1.681,2.34
+ c0,0.801-0.23,1.54-0.69,2.22s-1.011,1.021-1.649,1.021c-1.121,0-1.681-0.78-1.681-2.34
+ C416.018,58.107,416.248,57.338,416.708,56.717z"/>
+ <path fill="#101111" d="M431.678,61.188c-0.6,2.279-1.311,4.249-2.13,5.909c-0.82,1.66-1.68,3.05-2.58,4.17
+ c-0.899,1.12-1.83,1.95-2.79,2.49s-1.88,0.811-2.76,0.811c-1.239,0-2.27-0.36-3.09-1.08c-0.819-0.721-1.23-1.541-1.23-2.46
+ c0-0.641,0.181-1.141,0.54-1.5c0.36-0.36,0.761-0.54,1.2-0.54c0.48,0,0.87,0.199,1.17,0.6c0.3,0.399,0.58,0.84,0.84,1.32
+ c0.261,0.479,0.521,0.92,0.78,1.319c0.261,0.399,0.61,0.601,1.05,0.601c0.601,0,1.141-0.341,1.62-1.021
+ c0.48-0.681,0.971-1.739,1.47-3.18c0.501-1.439,1.041-3.261,1.62-5.46c0.579-2.2,1.29-4.819,2.13-7.86l4.32-15.959
+ c0.199-0.68,0.33-1.24,0.39-1.68c0.061-0.439,0.091-0.72,0.091-0.84c0-0.44-0.281-0.66-0.841-0.66c-0.4,0-0.82,0.25-1.26,0.75
+ c-0.44,0.5-0.87,1.041-1.29,1.62c-0.42,0.58-0.801,1.12-1.14,1.62c-0.341,0.501-0.591,0.75-0.75,0.75c-0.24,0-0.36-0.181-0.36-0.54
+ c0-0.16,0.17-0.54,0.51-1.14s0.87-1.359,1.591-2.28c1.039-1.28,1.989-2.24,2.85-2.88c0.859-0.639,1.71-0.96,2.55-0.96
+ c0.601,0,1.1,0.201,1.5,0.6c0.399,0.4,0.601,0.98,0.601,1.74c0,0.44-0.051,0.93-0.15,1.47c-0.101,0.54-0.25,1.15-0.45,1.83
+ L431.678,61.188z M437.738,23.837c0.56-0.819,1.199-1.23,1.92-1.23c0.52,0,0.939,0.201,1.26,0.6c0.319,0.4,0.479,0.92,0.479,1.56
+ c0,1.161-0.27,2.16-0.81,3s-1.17,1.26-1.89,1.26c-0.561,0-1.001-0.219-1.32-0.66c-0.32-0.44-0.48-1.06-0.48-1.86
+ C436.897,25.547,437.178,24.657,437.738,23.837z"/>
+ <path fill="#101111" d="M451.417,46.901c0.96,1.206,1.72,2.34,2.28,3.405c0.56,1.064,0.84,2.2,0.84,3.404
+ c0,1.086-0.23,2.11-0.69,3.074s-1.06,1.808-1.8,2.531s-1.61,1.307-2.609,1.748c-1.001,0.441-2.04,0.662-3.12,0.662
+ c-0.84,0-1.681-0.11-2.521-0.329c-0.84-0.221-1.6-0.511-2.279-0.87c-0.68-0.36-1.23-0.76-1.65-1.2
+ c-0.42-0.439-0.63-0.859-0.63-1.26c0-1.28,0.13-2.271,0.39-2.971c0.261-0.699,0.57-1.05,0.93-1.05c0.24,0,0.441,0.09,0.601,0.271
+ c0.159,0.18,0.31,0.42,0.45,0.72c0.14,0.3,0.27,0.62,0.39,0.96s0.279,0.69,0.48,1.05c0.639,1.161,1.359,2.021,2.159,2.58
+ c0.8,0.561,1.66,0.84,2.58,0.84c1.12,0,2.08-0.47,2.88-1.41c0.8-0.939,1.2-2.089,1.2-3.449c0-0.92-0.19-1.771-0.569-2.551
+ c-0.381-0.779-0.911-1.59-1.591-2.43l-2.52-3.06c-0.96-1.16-1.701-2.26-2.22-3.301c-0.521-1.039-0.78-2.079-0.78-3.119
+ c0-1,0.21-1.98,0.63-2.94s0.979-1.81,1.68-2.55c0.7-0.74,1.51-1.33,2.431-1.77c0.919-0.44,1.899-0.66,2.939-0.66
+ c0.76,0,1.51,0.074,2.25,0.222s1.41,0.351,2.01,0.609c0.601,0.259,1.08,0.575,1.44,0.948c0.36,0.374,0.54,0.781,0.54,1.221
+ c0,1.92-0.381,2.88-1.14,2.88c-0.321,0-0.681-0.229-1.08-0.69c-0.4-0.459-0.87-0.969-1.41-1.53c-0.54-0.56-1.14-1.07-1.8-1.53
+ c-0.66-0.459-1.41-0.69-2.25-0.69c-0.921,0-1.73,0.372-2.431,1.116c-0.7,0.743-1.05,1.677-1.05,2.802
+ c0,0.724,0.159,1.417,0.48,2.079c0.319,0.663,0.779,1.375,1.38,2.139L451.417,46.901z"/>
+</g>
+<g>
+ <path fill="#101111" d="M3.802,51.254V24.525c0-0.928,0.267-1.775,0.8-2.541s1.241-1.311,2.123-1.636l24.502-8.91
+ c0.51-0.186,1.021-0.279,1.531-0.279c0.51,0,1.021,0.093,1.531,0.279l24.501,8.91c0.882,0.325,1.589,0.87,2.123,1.636
+ s0.801,1.613,0.801,2.541v26.729c0,0.812-0.209,1.566-0.626,2.263c-0.418,0.696-0.987,1.241-1.706,1.636L34.882,68.517
+ c-0.65,0.371-1.357,0.558-2.123,0.558s-1.474-0.187-2.123-0.558L6.134,55.152c-0.72-0.395-1.288-0.939-1.706-1.636
+ S3.802,52.066,3.802,51.254z M8.466,24.456l24.293,8.84l24.292-8.84l-24.292-8.84L8.466,24.456z M34.986,63.4L57.26,51.254V29.12
+ l-22.274,8.109V63.4z"/>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>
diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/index.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/index.htm new file mode 100644 index 0000000..e4c1ed0 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/index.htm @@ -0,0 +1,269 @@ +<html lang='en'> +<head> + <meta content='text/html; charset=utf-8' http-equiv='Content-Type'> + + <title>MetricsGraphics.js - a library based on D3.js, optimized for visualizing and laying out time-series data</title> + + <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,700' rel='stylesheet' type='text/css'> + <link href='https://fonts.googleapis.com/css?family=PT+Serif:400,700,400italic' rel='stylesheet' type='text/css'> + <link href='https://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.css' rel='stylesheet' type='text/css'> + <link href='https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css' rel='stylesheet' type='text/css'> + + <link href='metricsgraphics.css' rel='stylesheet' type='text/css'> + <link href='css/metricsgraphics-demo.css' rel='stylesheet' type='text/css'> + <link href='css/highlightjs-default.css' rel='stylesheet' type='text/css'> + + <script src='js/lib/highlight.pack.js'></script> + <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'></script> + <script src='https://d3js.org/d3.v4.min.js' charset='utf-8'></script> + <script src='metricsgraphics.min.js'></script> + + <script> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-51487512-1', 'metricsgraphicsjs.org'); + ga('send', 'pageview'); + </script> +</head> + +<body> + <a href="https://github.com/metrics-graphics/metrics-graphics"><img style="z-index: 2; position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/38ef81f8aca64bb9a64448d0d70f1308ef5341ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f6461726b626c75655f3132313632312e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a> + + <div class='container'> + <div id='content-body'> + <img src='images/logo.svg' id='logo' class='svg' /> + <iframe src="https://ghbtns.com/github-btn.html?user=mozilla&repo=metrics-graphics&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="110" height="20" class='github-stars-top'></iframe> + + <div id='description'> + <p><i>MetricsGraphics.js</i> is a library built on top of + <a href='http://d3js.org/'>D3</a> that is optimized for visualizing and + laying out time-series data. It provides a simple way to produce common types of + graphics in a principled, consistent and responsive way. The library + currently supports line charts, scatterplots, histograms, bar charts and data + tables as well as features like rug plots and basic linear regression.</p> + </div> + + <div id='torso'> + <div class='thumb'><a href='https://github.com/metricsgraphics/metrics-graphics/releases'><i class="fa fa-download fa-4x"></i><br /><span class='text'>Download</span></a></div> + <div class='thumb'><a href='examples.htm'><i class="fa fa-area-chart fa-4x"></i><br /><span class='text'>Examples</span></a></div> + <div class='thumb'><a href='https://github.com/metricsgraphics/metrics-graphics'><i class="fa fa-github fa-4x"></i><br /><span class='text'>Github</span></a></div> + </div> + </div> + </div> + + <div class='api-example'> + <div class='container'> + +<pre><code class='javascript'>MG.data_graphic({ + title: "Downloads", + description: "This graphic shows a time-series of downloads.", + data: [{'date':new Date('2014-11-01'),'value':12}, + {'date':new Date('2014-11-02'),'value':18}], + width: 600, + height: 250, + target: '#downloads', + x_accessor: 'date', + y_accessor: 'value', +})</code></pre> + + </div> + </div> + + <div class='container'> + <p>The API is simple. All that's needed to create a graphic is to specify a few default parameters and then, if desired, override one or more of the <a href='https://github.com/metricsgraphics/metrics-graphics/wiki/List-of-Options'>optional parameters on offer</a>. We don't maintain state. To update a graphic, one would call <i>MG.data_graphic</i> on the same target element.</p> + <p>The library is data-source agnostic. While it provides a number of convenience functions and options that allow for graphics to better handle things like missing observations, it doesn't care where the data comes from.</p> + <p>The library makes it easy to construct narratives by providing a layout template based on Bootstrap. Take a look at <a href='examples.htm'>the examples</a> to see that in action.</p> + <p>MetricsGraphics.js <a href='https://www.youtube.com/watch?v=ZmkeAlut7KI#t=399'>takes the misery out of</a> creating beautiful interactive graphics. <a href='http://blog.mozilla.org/metrics/2014/11/10/introducing-metricsgraphics-js/'>Read our blog post for more details</a>.</p> + + <h1>A bit about the library's design philosophy</h1> + <p>MetricsGraphics.js is an opinionated library that aims to take the mystery and complication out of presenting simple data. It offers only line charts, scatterplots, bar charts, histograms and data tables, while maintaining a wide variety of options for each, and elevates the layout and explanation of these graphics to the same level of priority as the graphics themselves. The emergent philosophy is one of efficiency and practicality - by following the standards embodied by the library, you will make beautiful, concise and impactful presentations and dashboards.</p> + + <h1>Creating your first graphic</h1> + <p>Here's a quick tutorial to get you started. Say that we have some data on a scholarly topic like <a href='http://geocommons.com/overlays/134594'>UFO sightings</a>. We decide that we're interested in creating a line chart of yearly sightings.</p> + <p>We create a JSON file called <a href='data/ufo-sightings.json'>data/ufo-sightings.json</a> based on the original dataset, where we aggregate yearly sightings. The data doesn't have to be JSON of course, but that will mean less work later on.</p> + <p>The next thing we do is load the data:</p> + +<pre class='highbottom'><code class='javascript'>d3.json('data/ufo-sightings.json', function(data) { +})</code></pre> + + <p><i>MG.data_graphic</i> expects the data object to be an array of objects, which is already the case for us. That's good. It also needs dates to be timestamps if they're in a format like <i>yyyy-mm-dd</i>. We've got aggregated yearly data, so we don't need to worry about that. Otherwise, we'd add a line like this one.</p> + +<pre class='highbottom'><code class='javascript'>d3.json('data/ufo-sightings.json', function(data) { + data = MG.convert.date(data, 'year'); +})</code></pre> + + <p>Finally, we create the graphic and place it in the element specified in <i>target</i>.</p> + +<pre class='highbottom'><code class='javascript'>d3.json('data/ufo-sightings.json', function(data) { + MG.data_graphic({ + title: "UFO Sightings", + description: "Yearly UFO sightings from the year 1945 to 2010.", + data: data, + width: 650, + height: 150, + target: '#ufo-sightings', + x_accessor: 'year', + y_accessor: 'sightings', + markers: [{'year': 1964, 'label': '"The Creeping Terror" released'}] + }) +})</code></pre> + + <p class='highbottom'>And this is what we end up with. In this example, we're adding a marker to draw attention to a particular data point. This is optional of course.</p> + <div id='ufo-sightings'></div> + <p class='hightop'>It's as easy as that. If for whatever reason we decide to update the data in the graphic, we call <i>MG.data_graphic</i> with the updated data object on the same target element. The library will gracefully transition the existing plot to the new one. It's ridiculously easy to modify every aspect of the graphic by setting one or more of the <a href='https://github.com/metricsgraphics/metrics-graphics/wiki/List-of-Options'>available options</a>.</p> + + <h1>Still not convinced?</h1> + <p>We've set up an interactive version of this example that you can play around with. You don't need to download anything. <a href='interactive-demo.htm'>Check it out</a>.</p> + <p>Take the library out for a spin, file bugs and don't forget to star the project on Github!</p> + </div> + + <div class='container footer'> + Created by <a href='https://twitter.com/alialmossawi'>Ali Almossawi</a>, + <a href='https://github.com/hamilton'>Hamilton Ulmer</a> — Metrics at + <a href='https://www.mozilla.org/en-US/'>Mozilla</a> + <br />Shared under the <a href='http://www.mozilla.org/MPL/2.0/'> + Mozilla Public License</a>. + </div> + + <style> + body { + background-color: #fcfcfc; + } + + .api-example { + margin: 80px 0 40px 0; + width: 100%; + background-color: #f1f1f1; + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; + } + + .container { + width: 680px; + } + + #fb-block { + display: inline; + padding: 0 0 0 6px; + position: relative; + top: 0; + width: 60px; + } + + @media only screen + and (min-device-width : 320px) + and (max-device-width : 480px) { + #fb-block { + top: -5px; + } + } + + .github-stars-top { + margin: 95px 0 0 160px; + position: absolute; + } + + h1 { + font-size: 24px; + padding-top: 40px; + } + + .highbottom { + margin-bottom: 40px; + } + + .hightop { + margin-top: 40px; + } + + p { + padding-top: 6px; + } + + pre { + background-color: #f1f1f1; + border: none; + margin: 0 0 0 0 ; + } + + .social-buttons { + background-image: url(images/divider.png); + background-repeat: no-repeat; + background-position: center 35px; + padding-top: 80px; + } + + .thumb { + padding: 0 35px 0 35px; + } + + .thumb a { + color: #227dc4; + } + + .thumb a i.fa { + background-color: #036bbc; + color: transparent; + text-shadow: 0px 1px 1px rgba(255,255,255,0.5); + -webkit-background-clip: text; + -moz-background-clip: text; + background-clip: text; + padding: 10px; + } + + @-moz-document url-prefix() { + .thumb a i.fa { + background-color: transparent; + color: #60a2d5; + } + } + + .thumb a span.text { + color: white; + font-size: 12px; + letter-spacing: 1; + text-transform: uppercase; + background: #60a2d5; + border-radius: 6px; + padding: 1px 5px 1px 5px; + } + + /*.thumb a:hover span.text { + border-bottom: 1px solid #227dc4; + }*/ + + .thumb a:hover { + text-decoration: none; + } + + #twitter-block { + display: inline; + overflow: hidden; + padding-top: 2px; + position: relative; + top: 0; + } + </style> + + <script> + hljs.initHighlightingOnLoad(); + + d3.json('data/ufo-sightings.json', function(data) { + MG.data_graphic({ + title: "UFO Sightings", + description: "Yearly UFO sightings from the year 1945 to 2010.", + data: data, + markers: [{'year': 1964, 'label': '"The Creeping Terror" released'}], + width: 650, + height: 180, + target: '#ufo-sightings', + x_accessor: 'year', + y_accessor: 'sightings' + }) + }) + </script> +</body> +</html> diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/interactive-demo.htm b/priv/static/metrics-graphics-3.0-alpha3/examples/interactive-demo.htm new file mode 100644 index 0000000..f87f060 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/interactive-demo.htm @@ -0,0 +1,236 @@ +<html lang='en'> +<head> + <meta content='text/html; charset=utf-8' http-equiv='Content-Type'> + + <title>MetricsGraphics.js - a library based on D3.js, optimized for visualizing and laying out time-series data</title> + + <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,700' rel='stylesheet' type='text/css'> + <link href='https://fonts.googleapis.com/css?family=PT+Serif:400,700,400italic' rel='stylesheet' type='text/css'> + <link href='https://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.css' rel='stylesheet' type='text/css'> + <link href='https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css' rel='stylesheet' type='text/css'> + + <link href='metricsgraphics.css' rel='stylesheet' type='text/css'> + <link href='css/metricsgraphics-demo.css' rel='stylesheet' type='text/css'> + + <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js'></script> + <script src="https://d3js.org/d3.v4.min.js"></script> + <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js" charset="utf-8"></script> + + <!-- dev start --> + <script src='js/MG.js'></script> + <script src='js/misc/utility.js'></script> + <script src='js/common/data_graphic.js'></script> + <script src='js/common/hooks.js'></script> + <script src='js/common/register.js'></script> + <script src='js/common/bootstrap_tooltip_popover.js'></script> + <script src='js/common/chart_title.js'></script> + <script src='js/common/scales.js'></script> + <script src='js/common/y_axis.js'></script> + <script src='js/common/x_axis.js'></script> + <script src='js/common/init.js'></script> + <script src='js/common/markers.js'></script> + <script src='js/common/rollover.js'></script> + <script src='js/common/zoom.js'></script> + <script src='js/common/brush.js'></script> + <script src='js/common/window_listeners.js'></script> + <script src='js/layout/bootstrap_dropdown.js'></script> + <script src='js/layout/button.js'></script> + <script src='js/charts/line.js'></script> + <script src='js/charts/histogram.js'></script> + <script src='js/charts/point.js'></script> + <script src='js/charts/bar.js'></script> + <script src='js/charts/table.js'></script> + <script src='js/charts/missing.js'></script> + <script src='js/misc/process.js'></script> + <script src='js/misc/smoothers.js'></script> + <script src='js/misc/formatters.js'></script> + <script src='js/misc/transitions.js'></script> + <script src='js/misc/error.js'></script> + <!-- dev end --> + + <script> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-51487512-1', 'metricsgraphicsjs.org'); + ga('send', 'pageview'); + </script> +</head> + +<body> + <div class='container'> + <div class='head'> + <ul> + <li><a href='./'>Home</a></li> + <li><a href='https://github.com/metricsgraphics/metrics-graphics/releases'>Download</a></li> + <li><a href='https://github.com/metricsgraphics/metrics-graphics'>Code</a></li> + <li><a href='https://github.com/metricsgraphics/metrics-graphics/issues'>Issues</a></li> + <li><a href='examples.htm'>Examples</a></li> + </ul> + + <img src='images/logo.svg' id='logo' class='svg' /> + </div> + + <div id='description'> + <p><i>MetricsGraphics.js</i> is a library built on top of + <a href='http://d3js.org/'>D3</a> that is optimized for visualizing and + laying out time-series data. It provides a simple way to produce common + types of graphics in a principled, consistent and responsive way. The + library currently supports line charts, scatterplots and histograms as + well as features like rug plots and basic linear regression.</p> + + <p>This demo allows you to play around with the library without having to + download it. Try doubling the number of sightings in, say, 1995 and see + how that affects the graphic. Or how about changing any of the options in + <i>MG.data_graphic</i>? Or perhaps change the chart type to a scatterplot by + setting <code>chart_type:'point'</code>, switching the <i>x</i> and <i>y</i> + accessors and increasing the <i>height</i>? The data object is set to the + contents of the <i>Data</i> text area. Errors are logged to the console.</p> + </div> + </div> + + <div class='container'> + <div class='row main-windows-titles'> + <div class='col-xs-2'>Data</div> + <div class='js-title col-xs-5'> + JavaScript <a href='https://github.com/metricsgraphics/metrics-graphics/wiki/List-of-Options#list-of-options' target='_blank'>See Full List of Options</a> + <button type='button' class='update btn'>Run</button> + </div> + </div> + <div class='row main-windows'> + <div class='data col-xs-2'> + <textarea></textarea> + </div> + <div class='js col-xs-5' id='editor'></div> + <div class='result text-center col-xs-5'></div> + </div> + </div> + + <div class='container footer'> + Created by <a href='https://twitter.com/alialmossawi'>Ali Almossawi</a>, + <a href='https://github.com/hamilton'>Hamilton Ulmer</a> — Metrics at + <a href='https://www.mozilla.org/en-US/'>Mozilla</a> + <br />Shared under the <a href='http://www.mozilla.org/MPL/2.0/'> + Mozilla Public License</a>. + </div> + + <style> + body { + background-color: #fcfcfc; + } + + .container { + width: 90%; + min-width: 960px; + } + + .data textarea { + font-family: Menlo,Monaco,Consolas,"Courier New",monospace; + font-size: 11px; + height: 100%; + width: 100%; + } + + .footer { + background-image: url(images/divider.png); + background-repeat: no-repeat; + background-position: center 115px; + padding-top: 70px; + margin-bottom: 20px; + } + + .hightop { + margin-top: 40px; + } + + #logo { + margin: 15px 0 10px 0; + } + + .main-windows-titles { + color: #3b3b3b; + font-size: 16px; + padding-bottom: 5px; + text-align: center; + } + + .main-windows-titles .js-title a { + position: absolute; + right: 0; + font-size: 70%; + margin: 7px 1px 0 0; + } + + .main-windows .data, + .main-windows .js, + .main-windows .result { + height: 400px; + } + + p { + padding-top: 6px; + } + + textarea, + #editor { + border-radius: 3px; + border: none; + overflow: auto; + outline: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + padding: 10px; + border: 1px solid #ccc; + } + + .btn.update { + background-color: steelblue; + color: white; + margin-top: 34px; + outline: none; + position: absolute; + right: 7px; + z-index: 99; + } + + .btn.update:hover, + .btn.update:active, + .btn.update:visited { + color: #efefef; + outline: none; + } + </style> + <script> + var default_call = '//modify away!\n' + + 'MG.data_graphic({\n' + + ' title: "UFO Sightings",\n' + + ' description: "Yearly UFO sightings from 1945 to 2010.",\n' + + ' data: JSON.parse(document.querySelector(\'.data textarea\').value),\n' + + ' markers: [{\'year\': 1964, \'label\': \'"The Creeping Terror" released\'}],\n' + + ' width: 400,\n' + + ' height: 250,\n' + + ' target: ".result",\n' + + ' x_accessor: "year",\n' + + ' y_accessor: "sightings",\n' + + '});'; + + var editor = ace.edit("editor"); + editor.getSession().setMode("ace/mode/javascript"); + editor.setValue(default_call); + editor.gotoLine(1); + editor.setHighlightActiveLine(false); + + d3.json('data/ufo-sightings.json', function(data) { + document.querySelector('.data textarea').value = JSON.stringify(data, null, 2); + eval(editor.getValue()); + }) + + d3.select('.update').on('click', function() { + eval(editor.getValue()); + }) + </script> +</body> +</html> diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/js/lib/highlight.pack.js b/priv/static/metrics-graphics-3.0-alpha3/examples/js/lib/highlight.pack.js new file mode 100644 index 0000000..470e125 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/js/lib/highlight.pack.js @@ -0,0 +1 @@ +var hljs=new function(){function e(e){return e.replace(/&/gm,"&").replace(/</gm,"<").replace(/>/gm,">")}function t(e){return e.nodeName.toLowerCase()}function n(e,t){var n=e&&e.exec(t);return n&&0==n.index}function r(e){var t=(e.className+" "+(e.parentNode?e.parentNode.className:"")).split(/\s+/);return t=t.map(function(e){return e.replace(/^lang(uage)?-/,"")}),t.filter(function(e){return m(e)||/no(-?)highlight/.test(e)})[0]}function i(e,t){var n={};for(var r in e)n[r]=e[r];if(t)for(var r in t)n[r]=t[r];return n}function a(e){var n=[];return function r(e,i){for(var a=e.firstChild;a;a=a.nextSibling)3==a.nodeType?i+=a.nodeValue.length:1==a.nodeType&&(n.push({event:"start",offset:i,node:a}),i=r(a,i),t(a).match(/br|hr|img|input/)||n.push({event:"stop",offset:i,node:a}));return i}(e,0),n}function s(n,r,i){function a(){return n.length&&r.length?n[0].offset!=r[0].offset?n[0].offset<r[0].offset?n:r:"start"==r[0].event?n:r:n.length?n:r}function s(n){function r(t){return" "+t.nodeName+'="'+e(t.value)+'"'}l+="<"+t(n)+Array.prototype.map.call(n.attributes,r).join("")+">"}function o(e){l+="</"+t(e)+">"}function c(e){("start"==e.event?s:o)(e.node)}for(var u=0,l="",f=[];n.length||r.length;){var h=a();if(l+=e(i.substr(u,h[0].offset-u)),u=h[0].offset,h==n){f.reverse().forEach(o);do c(h.splice(0,1)[0]),h=a();while(h==n&&h.length&&h[0].offset==u);f.reverse().forEach(s)}else"start"==h[0].event?f.push(h[0].node):f.pop(),c(h.splice(0,1)[0])}return l+e(i.substr(u))}function o(e){function t(e){return e&&e.source||e}function n(n,r){return RegExp(t(n),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,s){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var o={},c=function(t,n){e.cI&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");o[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"==typeof a.k?c("keyword",a.k):Object.keys(a.k).forEach(function(e){c(e,a.k[e])}),a.k=o}a.lR=n(a.l||/\b[A-Za-z0-9_]+\b/,!0),s&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=n(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=n(a.e)),a.tE=t(a.e)||"",a.eW&&s.tE&&(a.tE+=(a.e?"|":"")+s.tE)),a.i&&(a.iR=n(a.i)),void 0===a.r&&(a.r=1),a.c||(a.c=[]);var u=[];a.c.forEach(function(e){e.v?e.v.forEach(function(t){u.push(i(e,t))}):u.push("self"==e?a:e)}),a.c=u,a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,s);var l=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(t).filter(Boolean);a.t=l.length?n(l.join("|"),!0):{exec:function(){return null}}}}r(e)}function c(t,r,i,a){function s(e,t){for(var r=0;r<t.c.length;r++)if(n(t.c[r].bR,e))return t.c[r]}function l(e,t){return n(e.eR,t)?e:e.eW?l(e.parent,t):void 0}function f(e,t){return!i&&n(t.iR,e)}function h(e,t){var n=x.cI?t[0].toLowerCase():t[0];return e.k.hasOwnProperty(n)&&e.k[n]}function g(e,t,n,r){var i=r?"":N.classPrefix,a='<span class="'+i,s=n?"":"</span>";return a+=e+'">',a+t+s}function p(){if(!w.k)return e(B);var t="",n=0;w.lR.lastIndex=0;for(var r=w.lR.exec(B);r;){t+=e(B.substr(n,r.index-n));var i=h(w,r);i?(y+=i[1],t+=g(i[0],e(r[0]))):t+=e(r[0]),n=w.lR.lastIndex,r=w.lR.exec(B)}return t+e(B.substr(n))}function v(){if(w.sL&&!E[w.sL])return e(B);var t=w.sL?c(w.sL,B,!0,L[w.sL]):u(B);return w.r>0&&(y+=t.r),"continuous"==w.subLanguageMode&&(L[w.sL]=t.top),g(t.language,t.value,!1,!0)}function b(){return void 0!==w.sL?v():p()}function d(t,n){var r=t.cN?g(t.cN,"",!0):"";t.rB?(M+=r,B=""):t.eB?(M+=e(n)+r,B=""):(M+=r,B=n),w=Object.create(t,{parent:{value:w}})}function R(t,n){if(B+=t,void 0===n)return M+=b(),0;var r=s(n,w);if(r)return M+=b(),d(r,n),r.rB?0:n.length;var i=l(w,n);if(i){var a=w;a.rE||a.eE||(B+=n),M+=b();do w.cN&&(M+="</span>"),y+=w.r,w=w.parent;while(w!=i.parent);return a.eE&&(M+=e(n)),B="",i.starts&&d(i.starts,""),a.rE?0:n.length}if(f(n,w))throw new Error('Illegal lexeme "'+n+'" for mode "'+(w.cN||"<unnamed>")+'"');return B+=n,n.length||1}var x=m(t);if(!x)throw new Error('Unknown language: "'+t+'"');o(x);for(var w=a||x,L={},M="",k=w;k!=x;k=k.parent)k.cN&&(M=g(k.cN,"",!0)+M);var B="",y=0;try{for(var C,I,j=0;;){if(w.t.lastIndex=j,C=w.t.exec(r),!C)break;I=R(r.substr(j,C.index-j),C[0]),j=C.index+I}R(r.substr(j));for(var k=w;k.parent;k=k.parent)k.cN&&(M+="</span>");return{r:y,value:M,language:t,top:w}}catch(A){if(-1!=A.message.indexOf("Illegal"))return{r:0,value:e(r)};throw A}}function u(t,n){n=n||N.languages||Object.keys(E);var r={r:0,value:e(t)},i=r;return n.forEach(function(e){if(m(e)){var n=c(e,t,!1);n.language=e,n.r>i.r&&(i=n),n.r>r.r&&(i=r,r=n)}}),i.language&&(r.second_best=i),r}function l(e){return N.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,function(e,t){return t.replace(/\t/g,N.tabReplace)})),N.useBR&&(e=e.replace(/\n/g,"<br>")),e}function f(e,t,n){var r=t?R[t]:n,i=[e.trim()];return e.match(/(\s|^)hljs(\s|$)/)||i.push("hljs"),r&&i.push(r),i.join(" ").trim()}function h(e){var t=r(e);if(!/no(-?)highlight/.test(t)){var n;N.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n")):n=e;var i=n.textContent,o=t?c(t,i,!0):u(i),h=a(n);if(h.length){var g=document.createElementNS("http://www.w3.org/1999/xhtml","div");g.innerHTML=o.value,o.value=s(h,a(g),i)}o.value=l(o.value),e.innerHTML=o.value,e.className=f(e.className,t,o.language),e.result={language:o.language,re:o.r},o.second_best&&(e.second_best={language:o.second_best.language,re:o.second_best.r})}}function g(e){N=i(N,e)}function p(){if(!p.called){p.called=!0;var e=document.querySelectorAll("pre code");Array.prototype.forEach.call(e,h)}}function v(){addEventListener("DOMContentLoaded",p,!1),addEventListener("load",p,!1)}function b(e,t){var n=E[e]=t(this);n.aliases&&n.aliases.forEach(function(t){R[t]=e})}function d(){return Object.keys(E)}function m(e){return E[e]||E[R[e]]}var N={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},E={},R={};this.highlight=c,this.highlightAuto=u,this.fixMarkup=l,this.highlightBlock=h,this.configure=g,this.initHighlighting=p,this.initHighlightingOnLoad=v,this.registerLanguage=b,this.listLanguages=d,this.getLanguage=m,this.inherit=i,this.IR="[a-zA-Z][a-zA-Z0-9_]*",this.UIR="[a-zA-Z_][a-zA-Z0-9_]*",this.NR="\\b\\d+(\\.\\d+)?",this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",this.BNR="\\b(0b[01]+)",this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",this.BE={b:"\\\\[\\s\\S]",r:0},this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE]},this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE]},this.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/},this.CLCM={cN:"comment",b:"//",e:"$",c:[this.PWM]},this.CBCM={cN:"comment",b:"/\\*",e:"\\*/",c:[this.PWM]},this.HCM={cN:"comment",b:"#",e:"$",c:[this.PWM]},this.NM={cN:"number",b:this.NR,r:0},this.CNM={cN:"number",b:this.CNR,r:0},this.BNM={cN:"number",b:this.BNR,r:0},this.CSSNM={cN:"number",b:this.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},this.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[this.BE,{b:/\[/,e:/\]/,r:0,c:[this.BE]}]},this.TM={cN:"title",b:this.IR,r:0},this.UTM={cN:"title",b:this.UIR,r:0}};hljs.registerLanguage("javascript",function(r){return{aliases:["js"],k:{keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document"},c:[{cN:"pi",b:/^\s*('|")use strict('|")/,r:10},r.ASM,r.QSM,r.CLCM,r.CBCM,r.CNM,{b:"("+r.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[r.CLCM,r.CBCM,r.RM,{b:/</,e:/>;/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[r.inherit(r.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,c:[r.CLCM,r.CBCM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+r.IR,r:0}]}});hljs.registerLanguage("http",function(){return{i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:"",eW:!0}}]}});hljs.registerLanguage("json",function(e){var t={literal:"true false null"},i=[e.QSM,e.CNM],l={cN:"value",e:",",eW:!0,eE:!0,c:i,k:t},c={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:!0,eE:!0,c:[e.BE],i:"\\n",starts:l}],i:"\\S"},n={b:"\\[",e:"\\]",c:[e.inherit(l,{cN:null})],i:"\\S"};return i.splice(i.length,0,c,n),{c:i,k:t,i:"\\S"}});hljs.registerLanguage("xml",function(){var t="[A-Za-z0-9\\._:-]+",e={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"},c={eW:!0,i:/</,r:0,c:[e,{cN:"attribute",b:t,r:0},{b:"=",r:0,c:[{cN:"value",c:[e],v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s\/>]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:!0,c:[{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[c],starts:{e:"</style>",rE:!0,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[c],starts:{e:"</script>",rE:!0,sL:"javascript"}},e,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:/[^ \/><\n\t]+/,r:0},c]}]}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",a={cN:"function",b:c+"\\(",rB:!0,eE:!0,e:"\\("};return{cI:!0,i:"[=/|']",c:[e.CBCM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[a,e.ASM,e.QSM,e.CSSNM]}]},{cN:"tag",b:c,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[e.CBCM,{cN:"rule",b:"[^\\s]",rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:!0,i:"[^\\s]",starts:{cN:"value",eW:!0,eE:!0,c:[a,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"hexcolor",b:"#[0-9A-Fa-f]+"},{cN:"important",b:"!important"}]}}]}]}]}});
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/js/lib/mode-javascript.js b/priv/static/metrics-graphics-3.0-alpha3/examples/js/lib/mode-javascript.js new file mode 100755 index 0000000..a80f564 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/js/lib/mode-javascript.js @@ -0,0 +1 @@ +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc.tag",regex:"\\bTODO\\b"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],comment:[{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment"}],line_comment_regex_allowed:[{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment"}],line_comment:[{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.id,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l=="\\")return null;var p=r.getTokens(o.start.row),d=0,v,m=-1;for(var g=0;g<p.length;g++){v=p[g],v.type=="string"?m=-1:m<0&&(m=v.value.indexOf(s));if(v.value.length+d>o.start.column)break;d+=p[g].value.length}if(!v||m<0&&v.type!=="comment"&&(v.type!=="string"||o.start.column!==v.value.length+d-1&&v.value.lastIndexOf(s)===v.value.length-1)){if(!h.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(v&&v.type==="string"){var y=f.substring(a.column,a.column+1);if(y==s)return{text:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n),s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("jslint",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c})
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/js/lib/worker-javascript.js b/priv/static/metrics-graphics-3.0-alpha3/examples/js/lib/worker-javascript.js new file mode 100755 index 0000000..f4935e8 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/js/lib/worker-javascript.js @@ -0,0 +1 @@ +"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(t){require.tlns=t},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?(s.row!==r||i!==0||!this.$insertRight)&&s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),define("ace/mode/javascript/jshint",["require","exports","module"],function(e,t,n){n.exports=function r(t,n,i){function s(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&&f)return f(u,!0);if(o)return o(u,!0);throw new Error("Cannot find module '"+u+"'")}var l=n[u]={exports:{}};t[u][0].call(l.exports,function(e){var n=t[u][1][e];return s(n?n:e)},l,l.exports,r,t,n,i)}return n[u].exports}var o=typeof e=="function"&&e;for(var u=0;u<i.length;u++)s(i[u]);return s}({1:[function(e,t,n){var r=[];for(var i=0;i<128;i++)r[i]=i===36||i>=65&&i<=90||i===95||i>=97&&i<=122;var s=[];for(var i=0;i<128;i++)s[i]=r[i]||i>=48&&i<=57;t.exports={asciiIdentifierStartTable:r,asciiIdentifierPartTable:s}},{}],2:[function(e,t,n){(function(){var e=this,r=e._,i={},s=Array.prototype,o=Object.prototype,u=Function.prototype,a=s.push,f=s.slice,l=s.concat,c=o.toString,h=o.hasOwnProperty,p=s.forEach,d=s.map,v=s.reduce,m=s.reduceRight,g=s.filter,y=s.every,b=s.some,w=s.indexOf,E=s.lastIndexOf,S=Array.isArray,x=Object.keys,T=u.bind,N=function(e){if(e instanceof N)return e;if(!(this instanceof N))return new N(e);this._wrapped=e};typeof n!="undefined"?(typeof t!="undefined"&&t.exports&&(n=t.exports=N),n._=N):e._=N,N.VERSION="1.6.0";var C=N.each=N.forEach=function(e,t,n){if(e==null)return e;if(p&&e.forEach===p)e.forEach(t,n);else if(e.length===+e.length){for(var r=0,s=e.length;r<s;r++)if(t.call(n,e[r],r,e)===i)return}else{var o=N.keys(e);for(var r=0,s=o.length;r<s;r++)if(t.call(n,e[o[r]],o[r],e)===i)return}return e};N.map=N.collect=function(e,t,n){var r=[];return e==null?r:d&&e.map===d?e.map(t,n):(C(e,function(e,i,s){r.push(t.call(n,e,i,s))}),r)};var k="Reduce of empty array with no initial value";N.reduce=N.foldl=N.inject=function(e,t,n,r){var i=arguments.length>2;e==null&&(e=[]);if(v&&e.reduce===v)return r&&(t=N.bind(t,r)),i?e.reduce(t,n):e.reduce(t);C(e,function(e,s,o){i?n=t.call(r,n,e,s,o):(n=e,i=!0)});if(!i)throw new TypeError(k);return n},N.reduceRight=N.foldr=function(e,t,n,r){var i=arguments.length>2;e==null&&(e=[]);if(m&&e.reduceRight===m)return r&&(t=N.bind(t,r)),i?e.reduceRight(t,n):e.reduceRight(t);var s=e.length;if(s!==+s){var o=N.keys(e);s=o.length}C(e,function(u,a,f){a=o?o[--s]:--s,i?n=t.call(r,n,e[a],a,f):(n=e[a],i=!0)});if(!i)throw new TypeError(k);return n},N.find=N.detect=function(e,t,n){var r;return L(e,function(e,i,s){if(t.call(n,e,i,s))return r=e,!0}),r},N.filter=N.select=function(e,t,n){var r=[];return e==null?r:g&&e.filter===g?e.filter(t,n):(C(e,function(e,i,s){t.call(n,e,i,s)&&r.push(e)}),r)},N.reject=function(e,t,n){return N.filter(e,function(e,r,i){return!t.call(n,e,r,i)},n)},N.every=N.all=function(e,t,n){t||(t=N.identity);var r=!0;return e==null?r:y&&e.every===y?e.every(t,n):(C(e,function(e,s,o){if(!(r=r&&t.call(n,e,s,o)))return i}),!!r)};var L=N.some=N.any=function(e,t,n){t||(t=N.identity);var r=!1;return e==null?r:b&&e.some===b?e.some(t,n):(C(e,function(e,s,o){if(r||(r=t.call(n,e,s,o)))return i}),!!r)};N.contains=N.include=function(e,t){return e==null?!1:w&&e.indexOf===w?e.indexOf(t)!=-1:L(e,function(e){return e===t})},N.invoke=function(e,t){var n=f.call(arguments,2),r=N.isFunction(t);return N.map(e,function(e){return(r?t:e[t]).apply(e,n)})},N.pluck=function(e,t){return N.map(e,N.property(t))},N.where=function(e,t){return N.filter(e,N.matches(t))},N.findWhere=function(e,t){return N.find(e,N.matches(t))},N.max=function(e,t,n){if(!t&&N.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.max.apply(Math,e);var r=-Infinity,i=-Infinity;return C(e,function(e,s,o){var u=t?t.call(n,e,s,o):e;u>i&&(r=e,i=u)}),r},N.min=function(e,t,n){if(!t&&N.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.min.apply(Math,e);var r=Infinity,i=Infinity;return C(e,function(e,s,o){var u=t?t.call(n,e,s,o):e;u<i&&(r=e,i=u)}),r},N.shuffle=function(e){var t,n=0,r=[];return C(e,function(e){t=N.random(n++),r[n-1]=r[t],r[t]=e}),r},N.sample=function(e,t,n){return t==null||n?(e.length!==+e.length&&(e=N.values(e)),e[N.random(e.length-1)]):N.shuffle(e).slice(0,Math.max(0,t))};var A=function(e){return e==null?N.identity:N.isFunction(e)?e:N.property(e)};N.sortBy=function(e,t,n){return t=A(t),N.pluck(N.map(e,function(e,r,i){return{value:e,index:r,criteria:t.call(n,e,r,i)}}).sort(function(e,t){var n=e.criteria,r=t.criteria;if(n!==r){if(n>r||n===void 0)return 1;if(n<r||r===void 0)return-1}return e.index-t.index}),"value")};var O=function(e){return function(t,n,r){var i={};return n=A(n),C(t,function(s,o){var u=n.call(r,s,o,t);e(i,u,s)}),i}};N.groupBy=O(function(e,t,n){N.has(e,t)?e[t].push(n):e[t]=[n]}),N.indexBy=O(function(e,t,n){e[t]=n}),N.countBy=O(function(e,t){N.has(e,t)?e[t]++:e[t]=1}),N.sortedIndex=function(e,t,n,r){n=A(n);var i=n.call(r,t),s=0,o=e.length;while(s<o){var u=s+o>>>1;n.call(r,e[u])<i?s=u+1:o=u}return s},N.toArray=function(e){return e?N.isArray(e)?f.call(e):e.length===+e.length?N.map(e,N.identity):N.values(e):[]},N.size=function(e){return e==null?0:e.length===+e.length?e.length:N.keys(e).length},N.first=N.head=N.take=function(e,t,n){return e==null?void 0:t==null||n?e[0]:t<0?[]:f.call(e,0,t)},N.initial=function(e,t,n){return f.call(e,0,e.length-(t==null||n?1:t))},N.last=function(e,t,n){return e==null?void 0:t==null||n?e[e.length-1]:f.call(e,Math.max(e.length-t,0))},N.rest=N.tail=N.drop=function(e,t,n){return f.call(e,t==null||n?1:t)},N.compact=function(e){return N.filter(e,N.identity)};var M=function(e,t,n){return t&&N.every(e,N.isArray)?l.apply(n,e):(C(e,function(e){N.isArray(e)||N.isArguments(e)?t?a.apply(n,e):M(e,t,n):n.push(e)}),n)};N.flatten=function(e,t){return M(e,t,[])},N.without=function(e){return N.difference(e,f.call(arguments,1))},N.partition=function(e,t){var n=[],r=[];return C(e,function(e){(t(e)?n:r).push(e)}),[n,r]},N.uniq=N.unique=function(e,t,n,r){N.isFunction(t)&&(r=n,n=t,t=!1);var i=n?N.map(e,n,r):e,s=[],o=[];return C(i,function(n,r){if(t?!r||o[o.length-1]!==n:!N.contains(o,n))o.push(n),s.push(e[r])}),s},N.union=function(){return N.uniq(N.flatten(arguments,!0))},N.intersection=function(e){var t=f.call(arguments,1);return N.filter(N.uniq(e),function(e){return N.every(t,function(t){return N.contains(t,e)})})},N.difference=function(e){var t=l.apply(s,f.call(arguments,1));return N.filter(e,function(e){return!N.contains(t,e)})},N.zip=function(){var e=N.max(N.pluck(arguments,"length").concat(0)),t=new Array(e);for(var n=0;n<e;n++)t[n]=N.pluck(arguments,""+n);return t},N.object=function(e,t){if(e==null)return{};var n={};for(var r=0,i=e.length;r<i;r++)t?n[e[r]]=t[r]:n[e[r][0]]=e[r][1];return n},N.indexOf=function(e,t,n){if(e==null)return-1;var r=0,i=e.length;if(n){if(typeof n!="number")return r=N.sortedIndex(e,t),e[r]===t?r:-1;r=n<0?Math.max(0,i+n):n}if(w&&e.indexOf===w)return e.indexOf(t,n);for(;r<i;r++)if(e[r]===t)return r;return-1},N.lastIndexOf=function(e,t,n){if(e==null)return-1;var r=n!=null;if(E&&e.lastIndexOf===E)return r?e.lastIndexOf(t,n):e.lastIndexOf(t);var i=r?n:e.length;while(i--)if(e[i]===t)return i;return-1},N.range=function(e,t,n){arguments.length<=1&&(t=e||0,e=0),n=arguments[2]||1;var r=Math.max(Math.ceil((t-e)/n),0),i=0,s=new Array(r);while(i<r)s[i++]=e,e+=n;return s};var _=function(){};N.bind=function(e,t){var n,r;if(T&&e.bind===T)return T.apply(e,f.call(arguments,1));if(!N.isFunction(e))throw new TypeError;return n=f.call(arguments,2),r=function(){if(this instanceof r){_.prototype=e.prototype;var i=new _;_.prototype=null;var s=e.apply(i,n.concat(f.call(arguments)));return Object(s)===s?s:i}return e.apply(t,n.concat(f.call(arguments)))}},N.partial=function(e){var t=f.call(arguments,1);return function(){var n=0,r=t.slice();for(var i=0,s=r.length;i<s;i++)r[i]===N&&(r[i]=arguments[n++]);while(n<arguments.length)r.push(arguments[n++]);return e.apply(this,r)}},N.bindAll=function(e){var t=f.call(arguments,1);if(t.length===0)throw new Error("bindAll must be passed function names");return C(t,function(t){e[t]=N.bind(e[t],e)}),e},N.memoize=function(e,t){var n={};return t||(t=N.identity),function(){var r=t.apply(this,arguments);return N.has(n,r)?n[r]:n[r]=e.apply(this,arguments)}},N.delay=function(e,t){var n=f.call(arguments,2);return setTimeout(function(){return e.apply(null,n)},t)},N.defer=function(e){return N.delay.apply(N,[e,1].concat(f.call(arguments,1)))},N.throttle=function(e,t,n){var r,i,s,o=null,u=0;n||(n={});var a=function(){u=n.leading===!1?0:N.now(),o=null,s=e.apply(r,i),r=i=null};return function(){var f=N.now();!u&&n.leading===!1&&(u=f);var l=t-(f-u);return r=this,i=arguments,l<=0?(clearTimeout(o),o=null,u=f,s=e.apply(r,i),r=i=null):!o&&n.trailing!==!1&&(o=setTimeout(a,l)),s}},N.debounce=function(e,t,n){var r,i,s,o,u,a=function(){var f=N.now()-o;f<t?r=setTimeout(a,t-f):(r=null,n||(u=e.apply(s,i),s=i=null))};return function(){s=this,i=arguments,o=N.now();var f=n&&!r;return r||(r=setTimeout(a,t)),f&&(u=e.apply(s,i),s=i=null),u}},N.once=function(e){var t=!1,n;return function(){return t?n:(t=!0,n=e.apply(this,arguments),e=null,n)}},N.wrap=function(e,t){return N.partial(t,e)},N.compose=function(){var e=arguments;return function(){var t=arguments;for(var n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},N.after=function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},N.keys=function(e){if(!N.isObject(e))return[];if(x)return x(e);var t=[];for(var n in e)N.has(e,n)&&t.push(n);return t},N.values=function(e){var t=N.keys(e),n=t.length,r=new Array(n);for(var i=0;i<n;i++)r[i]=e[t[i]];return r},N.pairs=function(e){var t=N.keys(e),n=t.length,r=new Array(n);for(var i=0;i<n;i++)r[i]=[t[i],e[t[i]]];return r},N.invert=function(e){var t={},n=N.keys(e);for(var r=0,i=n.length;r<i;r++)t[e[n[r]]]=n[r];return t},N.functions=N.methods=function(e){var t=[];for(var n in e)N.isFunction(e[n])&&t.push(n);return t.sort()},N.extend=function(e){return C(f.call(arguments,1),function(t){if(t)for(var n in t)e[n]=t[n]}),e},N.pick=function(e){var t={},n=l.apply(s,f.call(arguments,1));return C(n,function(n){n in e&&(t[n]=e[n])}),t},N.omit=function(e){var t={},n=l.apply(s,f.call(arguments,1));for(var r in e)N.contains(n,r)||(t[r]=e[r]);return t},N.defaults=function(e){return C(f.call(arguments,1),function(t){if(t)for(var n in t)e[n]===void 0&&(e[n]=t[n])}),e},N.clone=function(e){return N.isObject(e)?N.isArray(e)?e.slice():N.extend({},e):e},N.tap=function(e,t){return t(e),e};var D=function(e,t,n,r){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return e===t;e instanceof N&&(e=e._wrapped),t instanceof N&&(t=t._wrapped);var i=c.call(e);if(i!=c.call(t))return!1;switch(i){case"[object String]":return e==String(t);case"[object Number]":return e!=+e?t!=+t:e==0?1/e==1/t:e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object RegExp]":return e.source==t.source&&e.global==t.global&&e.multiline==t.multiline&&e.ignoreCase==t.ignoreCase}if(typeof e!="object"||typeof t!="object")return!1;var s=n.length;while(s--)if(n[s]==e)return r[s]==t;var o=e.constructor,u=t.constructor;if(o!==u&&!(N.isFunction(o)&&o instanceof o&&N.isFunction(u)&&u instanceof u)&&"constructor"in e&&"constructor"in t)return!1;n.push(e),r.push(t);var a=0,f=!0;if(i=="[object Array]"){a=e.length,f=a==t.length;if(f)while(a--)if(!(f=D(e[a],t[a],n,r)))break}else{for(var l in e)if(N.has(e,l)){a++;if(!(f=N.has(t,l)&&D(e[l],t[l],n,r)))break}if(f){for(l in t)if(N.has(t,l)&&!(a--))break;f=!a}}return n.pop(),r.pop(),f};N.isEqual=function(e,t){return D(e,t,[],[])},N.isEmpty=function(e){if(e==null)return!0;if(N.isArray(e)||N.isString(e))return e.length===0;for(var t in e)if(N.has(e,t))return!1;return!0},N.isElement=function(e){return!!e&&e.nodeType===1},N.isArray=S||function(e){return c.call(e)=="[object Array]"},N.isObject=function(e){return e===Object(e)},C(["Arguments","Function","String","Number","Date","RegExp"],function(e){N["is"+e]=function(t){return c.call(t)=="[object "+e+"]"}}),N.isArguments(arguments)||(N.isArguments=function(e){return!!e&&!!N.has(e,"callee")}),typeof /./!="function"&&(N.isFunction=function(e){return typeof e=="function"}),N.isFinite=function(e){return isFinite(e)&&!isNaN(parseFloat(e))},N.isNaN=function(e){return N.isNumber(e)&&e!=+e},N.isBoolean=function(e){return e===!0||e===!1||c.call(e)=="[object Boolean]"},N.isNull=function(e){return e===null},N.isUndefined=function(e){return e===void 0},N.has=function(e,t){return h.call(e,t)},N.noConflict=function(){return e._=r,this},N.identity=function(e){return e},N.constant=function(e){return function(){return e}},N.property=function(e){return function(t){return t[e]}},N.matches=function(e){return function(t){if(t===e)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0}},N.times=function(e,t,n){var r=Array(Math.max(0,e));for(var i=0;i<e;i++)r[i]=t.call(n,i);return r},N.random=function(e,t){return t==null&&(t=e,e=0),e+Math.floor(Math.random()*(t-e+1))},N.now=Date.now||function(){return(new Date).getTime()};var P={escape:{"&":"&","<":"<",">":">",'"':""","'":"'"}};P.unescape=N.invert(P.escape);var H={escape:new RegExp("["+N.keys(P.escape).join("")+"]","g"),unescape:new RegExp("("+N.keys(P.unescape).join("|")+")","g")};N.each(["escape","unescape"],function(e){N[e]=function(t){return t==null?"":(""+t).replace(H[e],function(t){return P[e][t]})}}),N.result=function(e,t){if(e==null)return void 0;var n=e[t];return N.isFunction(n)?n.call(e):n},N.mixin=function(e){C(N.functions(e),function(t){var n=N[t]=e[t];N.prototype[t]=function(){var e=[this._wrapped];return a.apply(e,arguments),q.call(this,n.apply(N,e))}})};var B=0;N.uniqueId=function(e){var t=++B+"";return e?e+t:t},N.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var j=/(.)^/,F={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},I=/\\|'|\r|\n|\t|\u2028|\u2029/g;N.template=function(e,t,n){var r;n=N.defaults({},n,N.templateSettings);var i=new RegExp([(n.escape||j).source,(n.interpolate||j).source,(n.evaluate||j).source].join("|")+"|$","g"),s=0,o="__p+='";e.replace(i,function(t,n,r,i,u){return o+=e.slice(s,u).replace(I,function(e){return"\\"+F[e]}),n&&(o+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'"),r&&(o+="'+\n((__t=("+r+"))==null?'':__t)+\n'"),i&&(o+="';\n"+i+"\n__p+='"),s=u+t.length,t}),o+="';\n",n.variable||(o="with(obj||{}){\n"+o+"}\n"),o="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+o+"return __p;\n";try{r=new Function(n.variable||"obj","_",o)}catch(u){throw u.source=o,u}if(t)return r(t,N);var a=function(e){return r.call(this,e,N)};return a.source="function("+(n.variable||"obj")+"){\n"+o+"}",a},N.chain=function(e){return N(e).chain()};var q=function(e){return this._chain?N(e).chain():e};N.mixin(N),C(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=s[e];N.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),(e=="shift"||e=="splice")&&n.length===0&&delete n[0],q.call(this,n)}}),C(["concat","join","slice"],function(e){var t=s[e];N.prototype[e]=function(){return q.call(this,t.apply(this._wrapped,arguments))}}),N.extend(N.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}}),typeof define=="function"&&define.amd&&define("underscore",[],function(){return N})}).call(this)},{}],3:[function(e,t,n){var r=e("underscore"),i=e("events"),s=e("./vars.js"),o=e("./messages.js"),u=e("./lex.js").Lexer,a=e("./reg.js"),f=e("./state.js").state,l=e("./style.js"),c=function(){"use strict";function I(e,t){return e=e.trim(),/^[+-]W\d{3}$/g.test(e)?!0:p[e]===undefined&&h[e]===undefined&&t.type!=="jslint"&&!m[e]?(G("E001",t,e),!1):!0}function q(e){return Object.prototype.toString.call(e)==="[object String]"}function R(e,t){return e?!e.identifier||e.value!==t?!1:!0:!1}function U(e){if(!e.reserved)return!1;var t=e.meta;if(t&&t.isFutureReservedWord&&f.option.inES5()){if(!t.es5)return!1;if(t.strictOnly&&!f.option.strict&&!f.directive["use strict"])return!1;if(e.isProperty)return!1}return!0}function z(e,t){return e.replace(/\{([^{}]*)\}/g,function(e,n){var r=t[n];return typeof r=="string"||typeof r=="number"?r:e})}function W(e,t){Object.keys(t).forEach(function(n){if(r.has(c.blacklist,n))return;e[n]=t[n]})}function X(){f.option.esnext&&W(M,s.newEcmaIdentifiers),f.option.couch&&W(M,s.couch),f.option.qunit&&W(M,s.qunit),f.option.rhino&&W(M,s.rhino),f.option.shelljs&&(W(M,s.shelljs),W(M,s.node)),f.option.typed&&W(M,s.typed),f.option.phantom&&W(M,s.phantom),f.option.prototypejs&&W(M,s.prototypejs),f.option.node&&(W(M,s.node),W(M,s.typed)),f.option.devel&&W(M,s.devel),f.option.dojo&&W(M,s.dojo),f.option.browser&&(W(M,s.browser),W(M,s.typed)),f.option.nonstandard&&W(M,s.nonstandard),f.option.jasmine&&W(M,s.jasmine),f.option.jquery&&W(M,s.jquery),f.option.mootools&&W(M,s.mootools),f.option.worker&&W(M,s.worker),f.option.wsh&&W(M,s.wsh),f.option.globalstrict&&f.option.strict!==!1&&(f.option.strict=!0),f.option.yui&&W(M,s.yui),f.option.mocha&&W(M,s.mocha),f.option.inMoz=function(e){return f.option.moz},f.option.inESNext=function(e){return f.option.moz||f.option.esnext},f.option.inES5=function(){return!f.option.es3},f.option.inES3=function(e){return e?!f.option.moz&&!f.option.esnext&&f.option.es3:f.option.es3}}function V(e,t,n){var r=Math.floor(t/f.lines.length*100),i=o.errors[e].desc;throw{name:"JSHintError",line:t,character:n,message:i+" ("+r+"% scanned).",raw:i,code:e}}function $(e,t,n,r){return c.undefs.push([e,t,n,r])}function J(){var e=f.ignoredLines;if(r.isEmpty(e))return;c.errors=r.reject(c.errors,function(t){return e[t.line]})}function K(e,t,n,r,i,s){var u,a,l,h;if(/^W\d{3}$/.test(e)){if(f.ignored[e])return;h=o.warnings[e]}else/E\d{3}/.test(e)?h=o.errors[e]:/I\d{3}/.test(e)&&(h=o.info[e]);return t=t||f.tokens.next,t.id==="(end)"&&(t=f.tokens.curr),a=t.line||0,u=t.from||0,l={id:"(error)",raw:h.desc,code:h.code,evidence:f.lines[a-1]||"",line:a,character:u,scope:c.scope,a:n,b:r,c:i,d:s},l.reason=z(h.desc,l),c.errors.push(l),J(),c.errors.length>=f.option.maxerr&&V("E043",a,u),l}function Q(e,t,n,r,i,s,o){return K(e,{line:t,from:n},r,i,s,o)}function G(e,t,n,r,i,s){K(e,t,n,r,i,s)}function Y(e,t,n,r,i,s,o){return G(e,{line:t,from:n},r,i,s,o)}function Z(e,t){var n;return n={id:"(internal)",elem:e,value:t},c.internals.push(n),n}function et(e,t){t=t||{};var n=t.type,i=t.token,s=t.islet;n==="exception"&&r.has(w["(context)"],e)&&w[e]!==!0&&!f.option.node&&K("W002",f.tokens.next,e),r.has(w,e)&&!w["(global)"]&&(w[e]===!0?f.option.latedef&&(f.option.latedef===!0&&r.contains([w[e],n],"unction")||!r.contains([w[e],n],"unction"))&&K("W003",f.tokens.next,e):((!f.option.shadow||r.contains(["inner","outer"],f.option.shadow))&&n!=="exception"||w["(blockscope)"].getlabel(e))&&K("W004",f.tokens.next,e)),w["(context)"]&&r.has(w["(context)"],e)&&n!=="function"&&f.option.shadow==="outer"&&K("W123",f.tokens.next,e),s?w["(blockscope)"].current.add(e,n,f.tokens.curr):(w["(blockscope)"].shadow(e),w[e]=n,i&&(w["(tokens)"][e]=i),Xt(w,e,{unused:t.unused||!1}),w["(global)"]?(S[e]=w,r.has(x,e)&&(f.option.latedef&&(f.option.latedef===!0&&r.contains([w[e],n],"unction")||!r.contains([w[e],n],"unction"))&&K("W003",f.tokens.next,e),delete x[e])):D[e]=w)}function tt(){var e=f.tokens.next,t=e.body.match(/(-\s+)?[^\s,:]+(?:\s*:\s*(-\s+)?[^\s,]+)?/g)||[],n={};if(e.type==="globals"){t.forEach(function(e){e=e.split(":");var t=(e[0]||"").trim(),r=(e[1]||"").trim();t.charAt(0)==="-"?(t=t.slice(1),r=!1,c.blacklist[t]=t,delete M[t]):n[t]=r==="true"}),W(M,n);for(var i in n)r.has(n,i)&&(g[i]=e)}e.type==="exported"&&t.forEach(function(e){y[e]=!0}),e.type==="members"&&(A=A||{},t.forEach(function(e){var t=e.charAt(0),n=e.charAt(e.length-1);t===n&&(t==='"'||t==="'")&&(e=e.substr(1,e.length-2).replace('\\"','"')),A[e]=!1}));var s=["maxstatements","maxparams","maxdepth","maxcomplexity","maxerr","maxlen","indent"];if(e.type==="jshint"||e.type==="jslint")t.forEach(function(t){t=t.split(":");var n=(t[0]||"").trim(),r=(t[1]||"").trim();if(!I(n,e))return;if(s.indexOf(n)>=0){if(r!=="false"){r=+r;if(typeof r!="number"||!isFinite(r)||r<=0||Math.floor(r)!==r){G("E032",e,t[1].trim());return}f.option[n]=r}else f.option[n]=n==="indent"?4:!1;return}if(n==="validthis"){if(w["(global)"])return void G("E009");if(r!=="true"&&r!=="false")return void G("E002",e);f.option.validthis=r==="true";return}if(n==="quotmark"){switch(r){case"true":case"false":f.option.quotmark=r==="true";break;case"double":case"single":f.option.quotmark=r;break;default:G("E002",e)}return}if(n==="shadow"){switch(r){case"true":f.option.shadow=!0;break;case"outer":f.option.shadow="outer";break;case"false":case"inner":f.option.shadow="inner";break;default:G("E002",e)}return}if(n==="unused"){switch(r){case"true":f.option.unused=!0;break;case"false":f.option.unused=!1;break;case"vars":case"strict":f.option.unused=r;break;default:G("E002",e)}return}if(n==="latedef"){switch(r){case"true":f.option.latedef=!0;break;case"false":f.option.latedef=!1;break;case"nofunc":f.option.latedef="nofunc";break;default:G("E002",e)}return}if(n==="ignore"){switch(r){case"start":f.ignoreLinterErrors=!0;break;case"end":f.ignoreLinterErrors=!1;break;case"line":f.ignoredLines[e.line]=!0,J();break;default:G("E002",e)}return}var i=/^([+-])(W\d{3})$/g.exec(n);if(i){f.ignored[i[2]]=i[1]==="-";return}var o;if(r==="true"||r==="false"){e.type==="jslint"?(o=v[n]||n,f.option[o]=r==="true",d[o]!==undefined&&(f.option[o]=!f.option[o])):f.option[n]=r==="true",n==="newcap"&&(f.option["(explicitNewcap)"]=!0);return}G("E002",e)}),X()}function nt(e){var t=e||0,n=0,r;while(n<=t)r=C[n],r||(r=C[n]=k.token()),n+=1;return r}function rt(t,n){switch(f.tokens.curr.id){case"(number)":f.tokens.next.id==="."&&K("W005",f.tokens.curr);break;case"-":(f.tokens.next.id==="-"||f.tokens.next.id==="--")&&K("W006");break;case"+":(f.tokens.next.id==="+"||f.tokens.next.id==="++")&&K("W007")}if(f.tokens.curr.type==="(string)"||f.tokens.curr.identifier)e=f.tokens.curr.value;t&&f.tokens.next.id!==t&&(n?f.tokens.next.id==="(end)"?G("E019",n,n.id):G("E020",f.tokens.next,t,n.id,n.line,f.tokens.next.value):(f.tokens.next.type!=="(identifier)"||f.tokens.next.value!==t)&&K("W116",f.tokens.next,t,f.tokens.next.value)),f.tokens.prev=f.tokens.curr,f.tokens.curr=f.tokens.next;for(;;){f.tokens.next=C.shift()||k.token(),f.tokens.next||V("E041",f.tokens.curr.line);if(f.tokens.next.id==="(end)"||f.tokens.next.id==="(error)")return;f.tokens.next.check&&f.tokens.next.check();if(f.tokens.next.isSpecial)tt();else if(f.tokens.next.id!=="(endline)")break}}function it(e){return e.infix||!e.identifier&&!!e.led}function st(){var e=f.tokens.curr,t=f.tokens.next;return t.id===";"||t.id==="}"||t.id===":"?!0:it(t)===it(e)||e.id==="yield"&&f.option.inMoz(!0)?e.line!==t.line:!1}function ot(t,n){var i,s=!1,o=!1,u=!1;!n&&f.tokens.next.value==="let"&&nt(0).value==="("&&(f.option.inMoz(!0)||K("W118",f.tokens.next,"let expressions"),u=!0,w["(blockscope)"].stack(),rt("let"),rt("("),f.syntax.let.fud.call(f.syntax.let.fud,!1),rt(")")),f.tokens.next.id==="(end)"&&G("E006",f.tokens.curr);var a=f.option.asi&&f.tokens.prev.line<f.tokens.curr.line&&r.contains(["]",")"],f.tokens.prev.id)&&r.contains(["[","("],f.tokens.curr.id);a&&K("W014",f.tokens.curr,f.tokens.curr.id),rt(),n&&(e="anonymous",w["(verb)"]=f.tokens.curr.value);if(n===!0&&f.tokens.curr.fud)i=f.tokens.curr.fud();else{f.tokens.curr.nud?i=f.tokens.curr.nud():G("E030",f.tokens.curr,f.tokens.curr.id);while(t<f.tokens.next.lbp&&!st())s=f.tokens.curr.value==="Array",o=f.tokens.curr.value==="Object",i&&(i.value||i.first&&i.first.value)&&(i.value!=="new"||i.first&&i.first.value&&i.first.value===".")&&(s=!1,i.value!==f.tokens.curr.value&&(o=!1)),rt(),s&&f.tokens.curr.id==="("&&f.tokens.next.id===")"&&K("W009",f.tokens.curr),o&&f.tokens.curr.id==="("&&f.tokens.next.id===")"&&K("W010",f.tokens.curr),i&&f.tokens.curr.led?i=f.tokens.curr.led(i):G("E033",f.tokens.curr,f.tokens.curr.id)}return u&&w["(blockscope)"].unstack(),i}function ut(e,t){e=e||f.tokens.curr,t=t||f.tokens.next,!f.option.laxbreak&&e.line!==t.line&&K("W014",t,t.value)}function at(e){e=e||f.tokens.curr,e.line!==f.tokens.next.line&&K("E022",e,e.value)}function ft(e,t){e.line!==t.line&&(f.option.laxcomma||(lt.first&&(K("I001"),lt.first=!1),K("W014",e,t.value)))}function lt(e){e=e||{},e.peek?ft(f.tokens.prev,f.tokens.curr):(ft(f.tokens.curr,f.tokens.next),rt(","));if(f.tokens.next.identifier&&(!e.property||!f.option.inES5()))switch(f.tokens.next.value){case"break":case"case":case"catch":case"continue":case"default":case"do":case"else":case"finally":case"for":case"if":case"in":case"instanceof":case"return":case"switch":case"throw":case"try":case"var":case"let":case"while":case"with":return G("E024",f.tokens.next,f.tokens.next.value),!1}if(f.tokens.next.type==="(punctuator)")switch(f.tokens.next.value){case"}":case"]":case",":if(e.allowTrailing)return!0;case")":return G("E024",f.tokens.next,f.tokens.next.value),!1}return!0}function ct(e,t){var n=f.syntax[e];if(!n||typeof n!="object")f.syntax[e]=n={id:e,lbp:t,value:e};return n}function ht(e){return ct(e,0)}function pt(e,t){var n=ht(e);return n.identifier=n.reserved=!0,n.fud=t,n}function dt(e,t){var n=pt(e,t);return n.block=!0,n}function vt(e){var t=e.id.charAt(0);if(t>="a"&&t<="z"||t>="A"&&t<="Z")e.identifier=e.reserved=!0;return e}function mt(e,t){var n=ct(e,150);return vt(n),n.nud=typeof t=="function"?t:function(){this.right=ot(150),this.arity="unary";if(this.id==="++"||this.id==="--")f.option.plusplus?K("W016",this,this.id):this.right&&(!this.right.identifier||U(this.right))&&this.right.id!=="."&&this.right.id!=="["&&K("W017",this);return this},n}function gt(e,t){var n=ht(e);return n.type=e,n.nud=t,n}function yt(e,t){var n=gt(e,t);return n.identifier=!0,n.reserved=!0,n}function bt(e,t){var n=gt(e,t&&t.nud||function(){return this});return t=t||{},t.isFutureReservedWord=!0,n.value=e,n.identifier=!0,n.reserved=!0,n.meta=t,n}function wt(e,t){return yt(e,function(){return typeof t=="function"&&t(this),this})}function Et(e,t,n,r){var i=ct(e,n);return vt(i),i.infix=!0,i.led=function(i){return r||ut(f.tokens.prev,f.tokens.curr),e==="in"&&i.id==="!"&&K("W018",i,"!"),typeof t=="function"?t(i,this):(this.left=i,this.right=ot(n),this)},i}function St(e){var t=ct(e,42);return t.led=function(e){return f.option.inESNext()||K("W104",f.tokens.curr,"arrow function syntax (=>)"),ut(f.tokens.prev,f.tokens.curr),this.left=e,this.right=Jt(undefined,undefined,!1,e),this},t}function xt(e,t){var n=ct(e,100);return n.led=function(e){ut(f.tokens.prev,f.tokens.curr);var n=ot(100);return R(e,"NaN")||R(n,"NaN")?K("W019",this):t&&t.apply(this,[e,n]),(!e||!n)&&V("E041",f.tokens.curr.line),e.id==="!"&&K("W018",e,"!"),n.id==="!"&&K("W018",n,"!"),this.left=e,this.right=n,this},n}function Tt(e){return e&&(e.type==="(number)"&&+e.value===0||e.type==="(string)"&&e.value===""||e.type==="null"&&!f.option.eqnull||e.type==="true"||e.type==="false"||e.type==="undefined")}function Nt(e,t){if(f.option.notypeof)return!1;if(!e||!t)return!1;var n=["undefined","object","boolean","number","string","function","xml","object","unknown"];return t.type==="(identifier)"&&t.value==="typeof"&&e.type==="(string)"?!r.contains(n,e.value):!1}function Ct(e){function n(e){if(typeof e!="object")return;return e.right==="prototype"?e:n(e.left)}function r(e){while(!e.identifier&&typeof e.left=="object")e=e.left;if(e.identifier&&t.indexOf(e.value)>=0)return e.value}var t=["Array","ArrayBuffer","Boolean","Collator","DataView","Date","DateTimeFormat","Error","EvalError","Float32Array","Float64Array","Function","Infinity","Intl","Int16Array","Int32Array","Int8Array","Iterator","Number","NumberFormat","Object","RangeError","ReferenceError","RegExp","StopIteration","String","SyntaxError","TypeError","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","URIError"],i=n(e);if(i)return r(i)}function kt(e,t,n){var r=Et(e,typeof t=="function"?t:function(e,t){t.left=e;if(e){if(f.option.freeze){var n=Ct(e);n&&K("W121",e,n)}M[e.value]===!1&&D[e.value]["(global)"]===!0?K("W020",e):e["function"]&&K("W021",e,e.value),w[e.value]==="const"&&G("E013",e,e.value);if(e.id===".")return e.left?e.left.value==="arguments"&&!f.directive["use strict"]&&K("E031",t):K("E031",t),t.right=ot(10),t;if(e.id==="[")return f.tokens.curr.left.first?f.tokens.curr.left.first.forEach(function(e){e&&w[e.value]==="const"&&G("E013",e,e.value)}):e.left?e.left.value==="arguments"&&!f.directive["use strict"]&&K("E031",t):K("E031",t),t.right=ot(10),t;if(e.identifier&&!U(e))return w[e.value]==="exception"&&K("W022",e),t.right=ot(10),t;e===f.syntax["function"]&&K("W023",f.tokens.curr)}G("E031",t)},n);return r.exps=!0,r.assign=!0,r}function Lt(e,t,n){var r=ct(e,n);return vt(r),r.led=typeof t=="function"?t:function(e){return f.option.bitwise&&K("W016",this,this.id),this.left=e,this.right=ot(n),this},r}function At(e){return kt(e,function(e,t){f.option.bitwise&&K("W016",t,t.id);if(e)return e.id==="."||e.id==="["||e.identifier&&!U(e)?(ot(10),t):(e===f.syntax["function"]&&K("W023",f.tokens.curr),t);G("E031",t)},20)}function Ot(e){var t=ct(e,150);return t.led=function(e){return f.option.plusplus?K("W016",this,this.id):(!e.identifier||U(e))&&e.id!=="."&&e.id!=="["&&K("W017",this),this.left=e,this},t}function Mt(e,t){if(!f.tokens.next.identifier)return;rt();var n=f.tokens.curr,r=f.tokens.curr.value;return U(n)?t&&f.option.inES5()?r:e&&r==="undefined"?r:(K("W024",f.tokens.curr,f.tokens.curr.id),r):r}function _t(e,t){var n=Mt(e,t);if(n)return n;f.tokens.curr.id==="function"&&f.tokens.next.id==="("?K("W025"):G("E030",f.tokens.next,f.tokens.next.value)}function Dt(e){var t=0,n;if(f.tokens.next.id!==";"||O)return;for(;;){do n=nt(t),t+=1;while(n.id!="(end)"&&n.id==="(comment)");if(n.reach)return;if(n.id!=="(endline)"){if(n.id==="function"){f.option.latedef===!0&&K("W026",n);break}K("W027",n,n.value,e);break}}}function Pt(){f.tokens.next.id!==";"?f.option.asi||(!f.option.lastsemic||f.tokens.next.id!=="}"||f.tokens.next.line!==f.tokens.curr.line)&&Q("W033",f.tokens.curr.line,f.tokens.curr.character):rt(";")}function Ht(){var e,t=N,n,i=D,s=f.tokens.next;if(s.id===";"){rt(";");return}var o=U(s);o&&s.meta&&s.meta.isFutureReservedWord&&nt().id===":"&&(K("W024",s,s.id),o=!1);if(s.value==="module"&&s.type==="(identifier)"&&nt().type==="(identifier)"){f.option.inESNext()||K("W119",f.tokens.curr,"module"),rt("module");var u=_t();et(u,{type:"unused",token:f.tokens.curr}),rt("from"),rt("(string)"),Pt();return}if(r.has(["[","{"],s.value)&&on().isDestAssign){f.option.inESNext()||K("W104",f.tokens.curr,"destructuring expression"),e=Yt(),e.forEach(function(e){$(w,"W117",e.token,e.id)}),rt("="),Zt(e,ot(10,!0)),rt(";");return}s.identifier&&!o&&nt().id===":"&&(rt(),rt(":"),D=Object.create(i),et(s.value,{type:"label"}),!f.tokens.next.labelled&&f.tokens.next.value!=="{"&&K("W028",f.tokens.next,s.value,f.tokens.next.value),f.tokens.next.label=s.value,s=f.tokens.next);if(s.id==="{"){var a=w["(verb)"]==="case"&&f.tokens.curr.value===":";Ft(!0,!0,!1,!1,a);return}return n=ot(0,!0),n&&(!n.identifier||n.value!=="function")&&n.type!=="(punctuator)"&&!f.directive["use strict"]&&f.option.globalstrict&&f.option.strict&&K("E007"),s.block||(!f.option.expr&&(!n||!n.exps)?K("W030",f.tokens.curr):f.option.nonew&&n&&n.left&&n.id==="("&&n.left.id==="new"&&K("W031",s),Pt()),N=t,D=i,n}function Bt(e){var t=[],n;while(!f.tokens.next.reach&&f.tokens.next.id!=="(end)")f.tokens.next.id===";"?(n=nt(),(!n||n.id!=="("&&n.id!=="[")&&K("W032"),rt(";")):t.push(Ht(e===f.tokens.next.line));return t}function jt(){var e,t,n;for(;;){if(f.tokens.next.id==="(string)"){t=nt(0);if(t.id==="(endline)"){e=1;do n=nt(e),e+=1;while(n.id==="(endline)");if(n.id!==";"){if(n.id!=="(string)"&&n.id!=="(number)"&&n.id!=="(regexp)"&&n.identifier!==!0&&n.id!=="}")break;K("W033",f.tokens.next)}else t=n}else if(t.id==="}")K("W033",t);else if(t.id!==";")break;rt(),f.directive[f.tokens.curr.value]&&K("W034",f.tokens.curr,f.tokens.curr.value),f.tokens.curr.value==="use strict"&&(f.option["(explicitNewcap)"]||(f.option.newcap=!0),f.option.undef=!0),f.directive[f.tokens.curr.value]=!0,t.id===";"&&rt(";");continue}break}}function Ft(e,t,n,i,s){var o,u=T,a=N,l,c=D,h,p,d;T=e;if(!e||!f.option.funcscope)D=Object.create(D);h=f.tokens.next;var v=w["(metrics)"];v.nestedBlockDepth+=1,v.verifyMaxNestedBlockDepthPerFunction();if(f.tokens.next.id==="{"){rt("{"),w["(blockscope)"].stack(),p=f.tokens.curr.line;if(f.tokens.next.id!=="}"){N+=f.option.indent;while(!e&&f.tokens.next.from>N)N+=f.option.indent;if(n){l={};for(d in f.directive)r.has(f.directive,d)&&(l[d]=f.directive[d]);jt(),f.option.strict&&w["(context)"]["(global)"]&&!l["use strict"]&&!f.directive["use strict"]&&K("E007")}o=Bt(p),v.statementCount+=o.length,n&&(f.directive=l),N-=f.option.indent}rt("}",h),w["(blockscope)"].unstack(),N=a}else if(!e)if(n){l={},t&&!i&&!f.option.inMoz(!0)&&G("W118",f.tokens.curr,"function closure expressions");if(!t)for(d in f.directive)r.has(f.directive,d)&&(l[d]=f.directive[d]);ot(10),f.option.strict&&w["(context)"]["(global)"]&&!l["use strict"]&&!f.directive["use strict"]&&K("E007")}else G("E021",f.tokens.next,"{",f.tokens.next.value);else w["(nolet)"]=!0,(!t||f.option.curly)&&K("W116",f.tokens.next,"{",f.tokens.next.value),O=!0,N+=f.option.indent,o=[Ht()],N-=f.option.indent,O=!1,delete w["(nolet)"];switch(w["(verb)"]){case"break":case"continue":case"return":case"throw":if(s)break;default:w["(verb)"]=null}if(!e||!f.option.funcscope)D=c;return T=u,e&&f.option.noempty&&(!o||o.length===0)&&K("W035"),v.nestedBlockDepth-=1,o}function It(e){A&&typeof A[e]!="boolean"&&K("W036",f.tokens.curr,e),typeof L[e]=="number"?L[e]+=1:L[e]=1}function qt(e){var t=e.value,n=Object.getOwnPropertyDescriptor(x,t);n?n.value.push(e.line):x[t]=[e.line]}function Ut(){var e={};e.exps=!0,w["(comparray)"].stack();var t=!1;return f.tokens.next.value!=="for"&&(t=!0,f.option.inMoz(!0)||K("W116",f.tokens.next,"for",f.tokens.next.value),w["(comparray)"].setState("use"),e.right=ot(10)),rt("for"),f.tokens.next.value==="each"&&(rt("each"),f.option.inMoz(!0)||K("W118",f.tokens.curr,"for each")),rt("("),w["(comparray)"].setState("define"),e.left=ot(130),r.contains(["in","of"],f.tokens.next.value)?rt():G("E045",f.tokens.curr),w["(comparray)"].setState("generate"),ot(10),rt(")"),f.tokens.next.value==="if"&&(rt("if"),rt("("),w["(comparray)"].setState("filter"),e.filter=ot(10),rt(")")),t||(w["(comparray)"].setState("use"),e.right=ot(10)),rt("]"),w["(comparray)"].unstack(),e}function zt(){var e=Mt(!1,!0);return e||(f.tokens.next.id==="(string)"?(e=f.tokens.next.value,rt()):f.tokens.next.id==="(number)"&&(e=f.tokens.next.value.toString(),rt())),e==="hasOwnProperty"&&K("W001"),e}function Wt(e){var t,n,i=[],s,o=[],u,a=!1;if(e){if(Array.isArray(e)){for(var l in e){t=e[l];if(t.value==="..."){f.option.inESNext()||K("W104",t,"spread/rest operator");continue}t.value!==","&&(i.push(t.value),et(t.value,{type:"unused",token:t}))}return i}if(e.identifier===!0)return et(e.value,{type:"unused",token:e}),[e]}n=f.tokens.next,rt("(");if(f.tokens.next.id===")"){rt(")");return}for(;;){if(r.contains(["{","["],f.tokens.next.id)){o=Yt();for(u in o)u=o[u],u.id&&(i.push(u.id),et(u.id,{type:"unused",token:u.token}))}else f.tokens.next.value==="..."?(f.option.inESNext()||K("W104",f.tokens.next,"spread/rest operator"),rt("..."),s=_t(!0),i.push(s),et(s,{type:"unused",token:f.tokens.curr})):(s=_t(!0),i.push(s),et(s,{type:"unused",token:f.tokens.curr}));a&&f.tokens.next.id!=="="&&G("E051",f.tokens.current),f.tokens.next.id==="="&&(f.option.inESNext()||K("W119",f.tokens.next,"default parameters"),rt("="),a=!0,ot(10));if(f.tokens.next.id!==",")return rt(")",n),i;lt()}}function Xt(e,t,n){e["(properties)"][t]||(e["(properties)"][t]={unused:!1}),r.extend(e["(properties)"][t],n)}function Vt(e,t,n){return e["(properties)"][t]?e["(properties)"][t][n]||null:null}function $t(e,t,n,i){var s={"(name)":e,"(breakage)":0,"(loopage)":0,"(scope)":n,"(tokens)":{},"(properties)":{},"(catch)":!1,"(global)":!1,"(line)":null,"(character)":null,"(metrics)":null,"(statement)":null,"(context)":null,"(blockscope)":null,"(comparray)":null,"(generator)":null,"(params)":null};return t&&r.extend(s,{"(line)":t.line,"(character)":t.character,"(metrics)":Kt(t)}),r.extend(s,i),s["(context)"]&&(s["(blockscope)"]=s["(context)"]["(blockscope)"],s["(comparray)"]=s["(context)"]["(comparray)"]),s}function Jt(t,n,i,s){var o,u=f.option,a=f.ignored,l=D;return f.option=Object.create(f.option),f.ignored=Object.create(f.ignored),D=Object.create(D),w=$t(t||'"'+e+'"',f.tokens.next,D,{"(statement)":n,"(context)":w,"(generator)":i?!0:null}),o=w,f.tokens.curr.funct=w,E.push(w),t&&et(t,{type:"function"}),w["(params)"]=Wt(s),w["(metrics)"].verifyMaxParametersPerFunction(w["(params)"]),c.undefs=r.filter(c.undefs,function(e){return!r.contains(r.union(s),e[2])}),Ft(!1,!0,!0,s?!0:!1),!f.option.noyield&&i&&w["(generator)"]!=="yielded"&&K("W124",f.tokens.curr),w["(metrics)"].verifyMaxStatementsPerFunction(),w["(metrics)"].verifyMaxComplexityPerFunction(),w["(unusedOption)"]=f.option.unused,D=l,f.option=u,f.ignored=a,w["(last)"]=f.tokens.curr.line,w["(lastcharacter)"]=f.tokens.curr.character,r.map(Object.keys(w),function(e){if(e[0]==="(")return;w["(blockscope)"].unshadow(e)}),w=w["(context)"],o}function Kt(e){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,verifyMaxStatementsPerFunction:function(){f.option.maxstatements&&this.statementCount>f.option.maxstatements&&K("W071",e,this.statementCount)},verifyMaxParametersPerFunction:function(t){t=t||[],f.option.maxparams&&t.length>f.option.maxparams&&K("W072",e,t.length)},verifyMaxNestedBlockDepthPerFunction:function(){f.option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===f.option.maxdepth+1&&K("W073",null,this.nestedBlockDepth)},verifyMaxComplexityPerFunction:function(){var t=f.option.maxcomplexity,n=this.ComplexityCount;t&&n>t&&K("W074",e,n)}}}function Qt(){w["(metrics)"].ComplexityCount+=1}function Gt(e){var t,n;e&&(t=e.id,n=e.paren,t===","&&(e=e.exprs[e.exprs.length-1])&&(t=e.id,n=n||e.paren));switch(t){case"=":case"+=":case"-=":case"*=":case"%=":case"&=":case"|=":case"^=":case"/=":!n&&!f.option.boss&&K("W084")}}function Yt(){var e,t,n=[];f.option.inESNext()||K("W104",f.tokens.curr,"destructuring expression");var i=function(){var e;if(r.contains(["[","{"],f.tokens.next.value)){t=Yt();for(var s in t)s=t[s],n.push({id:s.id,token:s.token})}else f.tokens.next.value===","?n.push({id:null,token:f.tokens.curr}):f.tokens.next.value==="("?(rt("("),i(),rt(")")):(e=_t(),e&&n.push({id:e,token:f.tokens.curr}))};if(f.tokens.next.value==="["){rt("["),i();while(f.tokens.next.value!=="]")rt(","),i();rt("]")}else if(f.tokens.next.value==="{"){rt("{"),e=_t(),f.tokens.next.value===":"?(rt(":"),i()):n.push({id:e,token:f.tokens.curr});while(f.tokens.next.value!=="}")rt(","),e=_t(),f.tokens.next.value===":"?(rt(":"),i()):n.push({id:e,token:f.tokens.curr});rt("}")}return n}function Zt(e,t){var n=t.first;if(!n)return;r.zip(e,Array.isArray(n)?n:[n]).forEach(function(e){var t=e[0],n=e[1];t&&n?t.first=n:t&&t.first&&!n&&K("W080",t.first,t.first.value)})}function rn(e){return f.option.inESNext()||K("W104",f.tokens.curr,"class"),e?(this.name=_t(),et(this.name,{type:"unused",token:f.tokens.curr})):f.tokens.next.identifier&&f.tokens.next.value!=="extends"&&(this.name=_t()),sn(this),this}function sn(e){var t=f.directive["use strict"];f.tokens.next.value==="extends"&&(rt("extends"),e.heritage=ot(10)),f.directive["use strict"]=!0,rt("{"),e.body=f.syntax["{"].nud(!0),f.directive["use strict"]=t}function un(){var e=on();e.notJson?(!f.option.inESNext()&&e.isDestAssign&&K("W104",f.tokens.curr,"destructuring assignment"),Bt()):(f.option.laxbreak=!0,f.jsonMode=!0,fn())}function fn(){function e(){var e={},t=f.tokens.next;rt("{");if(f.tokens.next.id!=="}")for(;;){if(f.tokens.next.id==="(end)")G("E026",f.tokens.next,t.line);else{if(f.tokens.next.id==="}"){K("W094",f.tokens.curr);break}f.tokens.next.id===","?G("E028",f.tokens.next):f.tokens.next.id!=="(string)"&&K("W095",f.tokens.next,f.tokens.next.value)}e[f.tokens.next.value]===!0?K("W075",f.tokens.next,f.tokens.next.value):f.tokens.next.value==="__proto__"&&!f.option.proto||f.tokens.next.value==="__iterator__"&&!f.option.iterator?K("W096",f.tokens.next,f.tokens.next.value):e[f.tokens.next.value]=!0,rt(),rt(":"),fn();if(f.tokens.next.id!==",")break;rt(",")}rt("}")}function t(){var e=f.tokens.next;rt("[");if(f.tokens.next.id!=="]")for(;;){if(f.tokens.next.id==="(end)")G("E027",f.tokens.next,e.line);else{if(f.tokens.next.id==="]"){K("W094",f.tokens.curr);break}f.tokens.next.id===","&&G("E028",f.tokens.next)}fn();if(f.tokens.next.id!==",")break;rt(",")}rt("]")}switch(f.tokens.next.id){case"{":e();break;case"[":t();break;case"true":case"false":case"null":case"(number)":case"(string)":rt();break;case"-":rt("-"),rt("(number)");break;default:G("E003",f.tokens.next)}}var e,t,n={"<":!0,"<=":!0,"==":!0,"===":!0,"!==":!0,"!=":!0,">":!0,">=":!0,"+":!0,"-":!0,"*":!0,"/":!0,"%":!0},h={asi:!0,bitwise:!0,boss:!0,browser:!0,camelcase:!0,couch:!0,curly:!0,debug:!0,devel:!0,dojo:!0,eqeqeq:!0,eqnull:!0,notypeof:!0,es3:!0,es5:!0,esnext:!0,moz:!0,evil:!0,expr:!0,forin:!0,funcscope:!0,globalstrict:!0,immed:!0,iterator:!0,jasmine:!0,jquery:!0,lastsemic:!0,laxbreak:!0,laxcomma:!0,loopfunc:!0,mootools:!0,multistr:!0,freeze:!0,newcap:!0,noarg:!0,node:!0,noempty:!0,nonbsp:!0,nonew:!0,nonstandard:!0,phantom:!0,plusplus:!0,proto:!0,prototypejs:!0,qunit:!0,rhino:!0,shelljs:!0,typed:!0,undef:!0,scripturl:!0,strict:!0,sub:!0,supernew:!0,validthis:!0,withstmt:!0,worker:!0,wsh:!0,yui:!0,mocha:!0,noyield:!0,onecase:!0,regexp:!0,regexdash:!0},p={maxlen:!1,indent:!1,maxerr:!1,predef:!1,globals:!1,quotmark:!1,scope:!1,maxstatements:!1,maxdepth:!1,maxparams:!1,maxcomplexity:!1,shadow:!1,unused:!0,latedef:!1,ignore:!1},d={bitwise:!0,forin:!0,newcap:!0,plusplus:!0,regexp:!0,undef:!0,eqeqeq:!0,strict:!0},v={eqeq:"eqeqeq",windows:"wsh",sloppy:"strict"},m={nomen:!0,onevar:!0,passfail:!0,white:!0,gcl:!0,smarttabs:!0,trailing:!0},g,y,b=["closure","exception","global","label","outer","unused","var"],w,E,S,x,T,N,C,k,L,A,O,M,D,P,H,B,j=[],F=new i.EventEmitter;gt("(number)",function(){return this}),gt("(string)",function(){return this}),gt("(template)",function(){return this}),f.syntax["(identifier)"]={type:"(identifier)",lbp:0,identifier:!0,nud:function(){var t=this.value,n=D[t],r,i;typeof n=="function"?n=undefined:!w["(blockscope)"].current.has(t)&&typeof n=="boolean"&&(r=w,w=E[0],et(t,{type:"var"}),n=w,w=r),i=w["(blockscope)"].getlabel(t);if(w===n||i)switch(i?i[t]["(type)"]:w[t]){case"unused":i?i[t]["(type)"]="var":w[t]="var";break;case"unction":i?i[t]["(type)"]="function":w[t]="function",this["function"]=!0;break;case"const":Xt(w,t,{unused:!1});break;case"function":this["function"]=!0;break;case"label":K("W037",f.tokens.curr,t)}else if(w["(global)"])typeof M[t]!="boolean"&&(e!=="typeof"&&e!=="delete"||f.tokens.next&&(f.tokens.next.value==="."||f.tokens.next.value==="["))&&(w["(comparray)"].check(t)||$(w,"W117",f.tokens.curr,t)),qt(f.tokens.curr);else switch(w[t]){case"closure":case"function":case"var":case"unused":K("W038",f.tokens.curr,t);break;case"label":K("W037",f.tokens.curr,t);break;case"outer":case"global":break;default:if(n===!0)w[t]=!0;else if(n===null)K("W039",f.tokens.curr,t),qt(f.tokens.curr);else if(typeof n!="object")(e!=="typeof"&&e!=="delete"||f.tokens.next&&(f.tokens.next.value==="."||f.tokens.next.value==="["))&&$(w,"W117",f.tokens.curr,t),w[t]=!0,qt(f.tokens.curr);else switch(n[t]){case"function":case"unction":this["function"]=!0,n[t]="closure",w[t]=n["(global)"]?"global":"outer";break;case"var":case"unused":n[t]="closure",w[t]=n["(global)"]?"global":"outer";break;case"const":Xt(n,t,{unused:!1});break;case"closure":w[t]=n["(global)"]?"global":"outer";break;case"label":K("W037",f.tokens.curr,t)}}return this},led:function(){G("E033",f.tokens.next,f.tokens.next.value)}},gt("(regexp)",function(){return this}),ht("(endline)"),ht("(begin)"),ht("(end)").reach=!0,ht("(error)").reach=!0,ht("}").reach=!0,ht(")"),ht("]"),ht('"').reach=!0,ht("'").reach=!0,ht(";"),ht(":").reach=!0,ht("#"),yt("else"),yt("case").reach=!0,yt("catch"),yt("default").reach=!0,yt("finally"),wt("arguments",function(e){f.directive["use strict"]&&w["(global)"]&&K("E008",e)}),wt("eval"),wt("false"),wt("Infinity"),wt("null"),wt("this",function(e){f.directive["use strict"]&&!f.option.validthis&&(w["(statement)"]&&w["(name)"].charAt(0)>"Z"||w["(global)"])&&K("W040",e)}),wt("true"),wt("undefined"),kt("=","assign",20),kt("+=","assignadd",20),kt("-=","assignsub",20),kt("*=","assignmult",20),kt("/=","assigndiv",20).nud=function(){G("E014")},kt("%=","assignmod",20),At("&=","assignbitand",20),At("|=","assignbitor",20),At("^=","assignbitxor",20),At("<<=","assignshiftleft",20),At(">>=","assignshiftright",20),At(">>>=","assignshiftrightunsigned",20),Et(",",function(e,t){var n;t.exprs=[e];if(!lt({peek:!0}))return t;for(;;){if(!(n=ot(10)))break;t.exprs.push(n);if(f.tokens.next.value!==","||!lt())break}return t},10,!0),Et("?",function(e,t){return Qt(),t.left=e,t.right=ot(10),rt(":"),t["else"]=ot(10),t},30);var Rt=40;Et("||",function(e,t){return Qt(),t.left=e,t.right=ot(Rt),t},Rt),Et("&&","and",50),Lt("|","bitor",70),Lt("^","bitxor",80),Lt("&","bitand",90),xt("==",function(e,t){var n=f.option.eqnull&&(e.value==="null"||t.value==="null");switch(!0){case!n&&f.option.eqeqeq:this.from=this.character,K("W116",this,"===","==");break;case Tt(e):K("W041",this,"===",e.value);break;case Tt(t):K("W041",this,"===",t.value);break;case Nt(t,e):K("W122",this,t.value);break;case Nt(e,t):K("W122",this,e.value)}return this}),xt("===",function(e,t){return Nt(t,e)?K("W122",this,t.value):Nt(e,t)&&K("W122",this,e.value),this}),xt("!=",function(e,t){var n=f.option.eqnull&&(e.value==="null"||t.value==="null");return!n&&f.option.eqeqeq?(this.from=this.character,K("W116",this,"!==","!=")):Tt(e)?K("W041",this,"!==",e.value):Tt(t)?K("W041",this,"!==",t.value):Nt(t,e)?K("W122",this,t.value):Nt(e,t)&&K("W122",this,e.value),this}),xt("!==",function(e,t){return Nt(t,e)?K("W122",this,t.value):Nt(e,t)&&K("W122",this,e.value),this}),xt("<"),xt(">"),xt("<="),xt(">="),Lt("<<","shiftleft",120),Lt(">>","shiftright",120),Lt(">>>","shiftrightunsigned",120),Et("in","in",120),Et("instanceof","instanceof",120),Et("+",function(e,t){var n=ot(130);return e&&n&&e.id==="(string)"&&n.id==="(string)"?(e.value+=n.value,e.character=n.character,!f.option.scripturl&&a.javascriptURL.test(e.value)&&K("W050",e),e):(t.left=e,t.right=n,t)},130),mt("+","num"),mt("+++",function(){return K("W007"),this.right=ot(150),this.arity="unary",this}),Et("+++",function(e){return K("W007"),this.left=e,this.right=ot(130),this},130),Et("-","sub",130),mt("-","neg"),mt("---",function(){return K("W006"),this.right=ot(150),this.arity="unary",this}),Et("---",function(e){return K("W006"),this.left=e,this.right=ot(130),this},130),Et("*","mult",140),Et("/","div",140),Et("%","mod",140),Ot("++","postinc"),mt("++","preinc"),f.syntax["++"].exps=!0,Ot("--","postdec"),mt("--","predec"),f.syntax["--"].exps=!0,mt("delete",function(){var e=ot(10);return(!e||e.id!=="."&&e.id!=="[")&&K("W051"),this.first=e,this}).exps=!0,mt("~",function(){return f.option.bitwise&&K("W052",this,"~"),ot(150),this}),mt("...",function(){return f.option.inESNext()||K("W104",this,"spread/rest operator"),f.tokens.next.identifier||G("E030",f.tokens.next,f.tokens.next.value),ot(150),this}),mt("!",function(){return this.right=ot(150),this.arity="unary",this.right||V("E041",this.line||0),n[this.right.id]===!0&&K("W018",this,"!"),this}),mt("typeof","typeof"),mt("new",function(){var e=ot(155),t;if(e&&e.id!=="function")if(e.identifier){e["new"]=!0;switch(e.value){case"Number":case"String":case"Boolean":case"Math":case"JSON":K("W053",f.tokens.prev,e.value);break;case"Function":f.option.evil||K("W054");break;case"Date":case"RegExp":case"this":break;default:e.id!=="function"&&(t=e.value.substr(0,1),f.option.newcap&&(t<"A"||t>"Z")&&!r.has(S,e.value)&&K("W055",f.tokens.curr))}}else e.id!=="."&&e.id!=="["&&e.id!=="("&&K("W056",f.tokens.curr);else f.option.supernew||K("W057",this);return f.tokens.next.id!=="("&&!f.option.supernew&&K("W058",f.tokens.curr,f.tokens.curr.value),this.first=e,this}),f.syntax["new"].exps=!0,mt("void").exps=!0,Et(".",function(e,t){var n=_t(!1,!0);return typeof n=="string"&&It(n),t.left=e,t.right=n,n&&n==="hasOwnProperty"&&f.tokens.next.value==="="&&K("W001"),!e||e.value!=="arguments"||n!=="callee"&&n!=="caller"?!f.option.evil&&e&&e.value==="document"&&(n==="write"||n==="writeln")&&K("W060",e):f.option.noarg?K("W059",e,n):f.directive["use strict"]&&G("E008"),!f.option.evil&&(n==="eval"||n==="execScript")&&K("W061"),t},160,!0),Et("(",function(e,t){f.option.immed&&e&&!e.immed&&e.id==="function"&&K("W062");var n=0,r=[];e&&e.type==="(identifier)"&&e.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&"Number String Boolean Date Object Error".indexOf(e.value)===-1&&(e.value==="Math"?K("W063",e):f.option.newcap&&K("W064",e));if(f.tokens.next.id!==")")for(;;){r[r.length]=ot(10),n+=1;if(f.tokens.next.id!==",")break;lt()}return rt(")"),typeof e=="object"&&(f.option.inES3()&&e.value==="parseInt"&&n===1&&K("W065",f.tokens.curr),f.option.evil||(e.value==="eval"||e.value==="Function"||e.value==="execScript"?(K("W061",e),r[0]&&[0].id==="(string)"&&Z(e,r[0].value)):!r[0]||r[0].id!=="(string)"||e.value!=="setTimeout"&&e.value!=="setInterval"?r[0]&&r[0].id==="(string)"&&e.value==="."&&e.left.value==="window"&&(e.right==="setTimeout"||e.right==="setInterval")&&(K("W066",e),Z(e,r[0].value)):(K("W066",e),Z(e,r[0].value))),!e.identifier&&e.id!=="."&&e.id!=="["&&e.id!=="("&&e.id!=="&&"&&e.id!=="||"&&e.id!=="?"&&K("W067",e)),t.left=e,t},155,!0).exps=!0,mt("(",function(){var e,t=[],n,i,s=0,o,u=1;do n=nt(s),n.value==="("?u+=1:n.value===")"&&(u-=1),s+=1,i=nt(s);while((u!==0||n.value!==")")&&i.value!=="=>"&&i.value!==";"&&i.type!=="(end)");f.tokens.next.id==="function"&&(f.tokens.next.immed=!0);var a=[];if(f.tokens.next.id!==")")for(;;){if(i.value==="=>"&&r.contains(["{","["],f.tokens.next.value)){e=f.tokens.next,e.left=Yt(),t.push(e);for(var l in e.left)a.push(e.left[l].token)}else a.push(ot(10));if(f.tokens.next.id!==",")break;lt()}rt(")",this),f.option.immed&&a[0]&&a[0].id==="function"&&f.tokens.next.id!=="("&&(f.tokens.next.id!=="."||nt().value!=="call"&&nt().value!=="apply")&&K("W068",this);if(f.tokens.next.value==="=>")return a;if(!a.length)return;return a.length>1?(o=Object.create(f.syntax[","]),o.exprs=a):o=a[0],o&&(o.paren=!0),o}),St("=>"),Et("[",function(e,t){var n=ot(10),r;return n&&n.type==="(string)"&&(!f.option.evil&&(n.value==="eval"||n.value==="execScript")&&K("W061",t),It(n.value),!f.option.sub&&a.identifier.test(n.value)&&(r=f.syntax[n.value],(!r||!U(r))&&K("W069",f.tokens.prev,n.value))),rt("]",t),n&&n.value==="hasOwnProperty"&&f.tokens.next.value==="="&&K("W001"),t.left=e,t.right=n,t},160,!0),mt("[",function(){var e=on(!0);if(e.isCompArray)return f.option.inESNext()||K("W119",f.tokens.curr,"array comprehension"),Ut();e.isDestAssign&&!f.option.inESNext()&&K("W104",f.tokens.curr,"destructuring assignment");var t=f.tokens.curr.line!==f.tokens.next.line;this.first=[],t&&(N+=f.option.indent,f.tokens.next.from===N+f.option.indent&&(N+=f.option.indent));while(f.tokens.next.id!=="(end)"){while(f.tokens.next.id===",")f.option.inES5()||K("W070"),rt(",");if(f.tokens.next.id==="]")break;this.first.push(ot(10));if(f.tokens.next.id!==",")break;lt({allowTrailing:!0});if(f.tokens.next.id==="]"&&!f.option.inES5(!0)){K("W070",f.tokens.curr);break}}return t&&(N-=f.option.indent),rt("]",this),this},160),function(e){e.nud=function(e){function c(e,t){a[e]&&r.has(a,e)?K("W075",f.tokens.next,i):a[e]={},a[e].basic=!0,a[e].basictkn=t}function h(e,t){a[e]&&r.has(a,e)?(a[e].basic||a[e].setter)&&K("W075",f.tokens.next,i):a[e]={},a[e].setter=!0,a[e].setterToken=t}function p(e){a[e]&&r.has(a,e)?(a[e].basic||a[e].getter)&&K("W075",f.tokens.next,i):a[e]={},a[e].getter=!0,a[e].getterToken=f.tokens.curr}var t,n,i,s,o,u,a={},l="";t=f.tokens.curr.line!==f.tokens.next.line,t&&(N+=f.option.indent,f.tokens.next.from===N+f.option.indent&&(N+=f.option.indent));for(;;){if(f.tokens.next.id==="}")break;e&&f.tokens.next.value==="static"&&(rt("static"),l="static ");if(f.tokens.next.value==="get"&&nt().id!==":")rt("get"),f.option.inES5(!e)||G("E034"),i=zt(),!i&&!f.option.inESNext()&&G("E035"),e&&i==="constructor"&&G("E049",f.tokens.next,"class getter method",i),i&&p(l+i),o=f.tokens.next,n=Jt(),s=n["(params)"],i&&s&&K("W076",o,s[0],i);else if(f.tokens.next.value==="set"&&nt().id!==":")rt("set"),f.option.inES5(!e)||G("E034"),i=zt(),!i&&!f.option.inESNext()&&G("E035"),e&&i==="constructor"&&G("E049",f.tokens.next,"class setter method",i),i&&h(l+i,f.tokens.next),o=f.tokens.next,n=Jt(),s=n["(params)"],i&&(!s||s.length!==1)&&K("W077",o,i);else{u=!1,f.tokens.next.value==="*"&&f.tokens.next.type==="(punctuator)"&&(f.option.inESNext()||K("W104",f.tokens.next,"generator functions"),rt("*"),u=!0),i=zt(),c(l+i,f.tokens.next);if(typeof i!="string")break;f.tokens.next.value==="("?(f.option.inESNext()||K("W104",f.tokens.curr,"concise methods"),Jt(i,undefined,u)):e||(rt(":"),ot(10))}e&&i==="prototype"&&G("E049",f.tokens.next,"class method",i),It(i);if(e){l="";continue}if(f.tokens.next.id!==",")break;lt({allowTrailing:!0,property:!0}),f.tokens.next.id===","?K("W070",f.tokens.curr):f.tokens.next.id==="}"&&!f.option.inES5(!0)&&K("W070",f.tokens.curr)}t&&(N-=f.option.indent),rt("}",this);if(f.option.inES5())for(var d in a)r.has(a,d)&&a[d].setter&&!a[d].getter&&K("W078",a[d].setterToken);return this},e.fud=function(){G("E036",f.tokens.curr)}}(ht("{"));var en=pt("const",function(e){var t,n,i;f.option.inESNext()||K("W104",f.tokens.curr,"const"),this.first=[];for(;;){var s=[];r.contains(["{","["],f.tokens.next.value)?(t=Yt(),i=!1):(t=[{id:_t(),token:f.tokens.curr}],i=!0);for(var o in t)t.hasOwnProperty(o)&&(o=t[o],w[o.id]==="const"&&K("E011",null,o.id),w["(global)"]&&M[o.id]===!1&&K("W079",o.token,o.id),o.id&&(et(o.id,{token:o.token,type:"const",unused:!0}),s.push(o.token)));if(e)break;this.first=this.first.concat(s),f.tokens.next.id!=="="&&K("E012",f.tokens.curr,f.tokens.curr.value),f.tokens.next.id==="="&&(rt("="),f.tokens.next.id==="undefined"&&K("W080",f.tokens.prev,f.tokens.prev.value),nt(0).id==="="&&f.tokens.next.identifier&&K("W120",f.tokens.next,f.tokens.next.value),n=ot(10),i?t[0].first=n:Zt(s,n));if(f.tokens.next.id!==",")break;lt()}return this});en.exps=!0;var tn=pt("var",function(e){var t,n,i;this.first=[];for(;;){var s=[];r.contains(["{","["],f.tokens.next.value)?(t=Yt(),n=!1):(t=[{id:_t(),token:f.tokens.curr}],n=!0);for(var o in t)t.hasOwnProperty(o)&&(o=t[o],f.option.inESNext()&&w[o.id]==="const"&&K("E011",null,o.id),w["(global)"]&&M[o.id]===!1&&K("W079",o.token,o.id),o.id&&(et(o.id,{type:"unused",token:o.token}),s.push(o.token)));if(e)break;this.first=this.first.concat(s),f.tokens.next.id==="="&&(rt("="),f.tokens.next.id==="undefined"&&K("W080",f.tokens.prev,f.tokens.prev.value),nt(0).id==="="&&f.tokens.next.identifier&&K("W120",f.tokens.next,f.tokens.next.value),i=ot(10),n?t[0].first=i:Zt(s,i));if(f.tokens.next.id!==",")break;lt()}return this});tn.exps=!0;var nn=pt("let",function(e){var t,n,i,s;f.option.inESNext()||K("W104",f.tokens.curr,"let"),f.tokens.next.value==="("?(f.option.inMoz(!0)||K("W118",f.tokens.next,"let block"),rt("("),w["(blockscope)"].stack(),s=!0):w["(nolet)"]&&G("E048",f.tokens.curr),this.first=[];for(;;){var o=[];r.contains(["{","["],f.tokens.next.value)?(t=Yt(),n=!1):(t=[{id:_t(),token:f.tokens.curr.value}],n=!0);for(var u in t)t.hasOwnProperty(u)&&(u=t[u],f.option.inESNext()&&w[u.id]==="const"&&K("E011",null,u.id),w["(global)"]&&M[u.id]===!1&&K("W079",u.token,u.id),u.id&&!w["(nolet)"]&&(et(u.id,{type:"unused",token:u.token,islet:!0}),o.push(u.token)));if(e)break;this.first=this.first.concat(o),f.tokens.next.id==="="&&(rt("="),f.tokens.next.id==="undefined"&&K("W080",f.tokens.prev,f.tokens.prev.value),nt(0).id==="="&&f.tokens.next.identifier&&K("W120",f.tokens.next,f.tokens.next.value),i=ot(10),n?t[0].first=i:Zt(o,i));if(f.tokens.next.id!==",")break;lt()}return s&&(rt(")"),Ft(!0,!0),this.block=!0,w["(blockscope)"].unstack()),this});nn.exps=!0,dt("class",function(){return rn.call(this,!0)}),dt("function",function(){var e=!1;f.tokens.next.value==="*"&&(rt("*"),f.option.inESNext(!0)?e=!0:K("W119",f.tokens.curr,"function*")),T&&K("W082",f.tokens.curr);var t=_t();return w[t]==="const"&&K("E011",null,t),et(t,{type:"unction",token:f.tokens.curr}),Jt(t,{statement:!0},e),f.tokens.next.id==="("&&f.tokens.next.line===f.tokens.curr.line&&G("E039"),this}),mt("function",function(){var e=!1;f.tokens.next.value==="*"&&(f.option.inESNext()||K("W119",f.tokens.curr,"function*"),rt("*"),e=!0);var t=Mt();return Jt(t,undefined,e),!f.option.loopfunc&&w["(loopage)"]&&K("W083"),this}),dt("if",function(){var e=f.tokens.next;return Qt(),f.condition=!0,rt("("),Gt(ot(0)),rt(")",e),f.condition=!1,Ft(!0,!0),f.tokens.next.id==="else"&&(rt("else"),f.tokens.next.id==="if"||f.tokens.next.id==="switch"?Ht(!0):Ft(!0,!0)),this}),dt("try",function(){function t(){var e=D,t;rt("catch"),rt("("),D=Object.create(e),t=f.tokens.next.value,f.tokens.next.type!=="(identifier)"&&(t=null,K("E030",f.tokens.next,t)),rt(),w=$t("(catch)",f.tokens.next,D,{"(context)":w,"(breakage)":w["(breakage)"],"(loopage)":w["(loopage)"],"(statement)":!1,"(catch)":!0}),t&&et(t,{type:"exception"}),f.tokens.next.value==="if"&&(f.option.inMoz(!0)||K("W118",f.tokens.curr,"catch filter"),rt("if"),ot(0)),rt(")"),f.tokens.curr.funct=w,E.push(w),Ft(!1),D=e,w["(last)"]=f.tokens.curr.line,w["(lastcharacter)"]=f.tokens.curr.character,w=w["(context)"]}var e;Ft(!0);while(f.tokens.next.id==="catch")Qt(),e&&!f.option.inMoz(!0)&&K("W118",f.tokens.next,"multiple catch blocks"),t(),e=!0;if(f.tokens.next.id==="finally"){rt("finally"),Ft(!0);return}return e||G("E021",f.tokens.next,"catch",f.tokens.next.value),this}),dt("while",function(){var e=f.tokens.next;return w["(breakage)"]+=1,w["(loopage)"]+=1,Qt(),rt("("),Gt(ot(0)),rt(")",e),Ft(!0,!0),w["(breakage)"]-=1,w["(loopage)"]-=1,this}).labelled=!0,dt("with",function(){var e=f.tokens.next;return f.directive["use strict"]?G("E010",f.tokens.curr):f.option.withstmt||K("W085",f.tokens.curr),rt("("),ot(0),rt(")",e),Ft(!0,!0),this}),dt("switch",function(){var e=f.tokens.next,t=!1,n=!1;w["(breakage)"]+=1,rt("("),Gt(ot(0)),rt(")",e),e=f.tokens.next,rt("{"),f.tokens.next.from===N&&(n=!0),n||(N+=f.option.indent),this.cases=[];for(;;)switch(f.tokens.next.id){case"case":switch(w["(verb)"]){case"yield":case"break":case"case":case"continue":case"return":case"switch":case"throw":break;default:a.fallsThrough.test(f.lines[f.tokens.next.line-2])||K("W086",f.tokens.curr,"case")}rt("case"),this.cases.push(ot(0)),Qt(),t=!0,rt(":"),w["(verb)"]="case";break;case"default":switch(w["(verb)"]){case"yield":case"break":case"continue":case"return":case"throw":break;default:this.cases.length&&(a.fallsThrough.test(f.lines[f.tokens.next.line-2])||K("W086",f.tokens.curr,"default"))}rt("default"),t=!0,rt(":");break;case"}":n||(N-=f.option.indent),rt("}",e),w["(breakage)"]-=1,w["(verb)"]=undefined;return;case"(end)":G("E023",f.tokens.next,"}");return;default:N+=f.option.indent;if(t)switch(f.tokens.curr.id){case",":G("E040");return;case":":t=!1,Bt();break;default:G("E025",f.tokens.curr);return}else{if(f.tokens.curr.id!==":"){G("E021",f.tokens.next,"case",f.tokens.next.value);return}rt(":"),G("E024",f.tokens.curr,":"),Bt()}N-=f.option.indent}}).labelled=!0,pt("debugger",function(){return f.option.debug||K("W087",this),this}).exps=!0,function(){var e=pt("do",function(){w["(breakage)"]+=1,w["(loopage)"]+=1,Qt(),this.first=Ft(!0,!0),rt("while");var e=f.tokens.next;return rt("("),Gt(ot(0)),rt(")",e),w["(breakage)"]-=1,w["(loopage)"]-=1,this});e.labelled=!0,e.exps=!0}(),dt("for",function(){var e,t=f.tokens.next,n=!1,i=null;t.value==="each"&&(i=t,rt("each"),f.option.inMoz(!0)||K("W118",f.tokens.curr,"for each")),w["(breakage)"]+=1,w["(loopage)"]+=1,Qt(),rt("(");var s,o=0,u=["in","of"];do s=nt(o),++o;while(!r.contains(u,s.value)&&s.value!==";"&&s.type!=="(end)");if(r.contains(u,s.value)){!f.option.inESNext()&&s.value==="of"&&G("W104",s,"for of");if(f.tokens.next.id==="var")rt("var"),f.syntax["var"].fud.call(f.syntax["var"].fud,!0);else if(f.tokens.next.id==="let")rt("let"),n=!0,w["(blockscope)"].stack(),f.syntax.let.fud.call(f.syntax.let.fud,!0);else if(!f.tokens.next.identifier)G("E030",f.tokens.next,f.tokens.next.type),rt();else{switch(w[f.tokens.next.value]){case"unused":w[f.tokens.next.value]="var";break;case"var":break;default:w["(blockscope)"].getlabel(f.tokens.next.value)||K("W088",f.tokens.next,f.tokens.next.value)}rt()}rt(s.value),ot(20),rt(")",t),e=Ft(!0,!0),f.option.forin&&e&&(e.length>1||typeof e[0]!="object"||e[0].value!=="if")&&K("W089",this),w["(breakage)"]-=1,w["(loopage)"]-=1}else{i&&G("E045",i);if(f.tokens.next.id!==";")if(f.tokens.next.id==="var")rt("var"),f.syntax["var"].fud.call(f.syntax["var"].fud);else if(f.tokens.next.id==="let")rt("let"),n=!0,w["(blockscope)"].stack(),f.syntax.let.fud.call(f.syntax.let.fud);else for(;;){ot(0,"for");if(f.tokens.next.id!==",")break;lt()}at(f.tokens.curr),rt(";"),f.tokens.next.id!==";"&&Gt(ot(0)),at(f.tokens.curr),rt(";"),f.tokens.next.id===";"&&G("E021",f.tokens.next,")",";");if(f.tokens.next.id!==")")for(;;){ot(0,"for");if(f.tokens.next.id!==",")break;lt()}rt(")",t),Ft(!0,!0),w["(breakage)"]-=1,w["(loopage)"]-=1}return n&&w["(blockscope)"].unstack(),this}).labelled=!0,pt("break",function(){var e=f.tokens.next.value;return w["(breakage)"]===0&&K("W052",f.tokens.next,this.value),f.option.asi||at(this),f.tokens.next.id!==";"&&!f.tokens.next.reach&&f.tokens.curr.line===f.tokens.next.line&&(w[e]!=="label"?K("W090",f.tokens.next,e):D[e]!==w&&K("W091",f.tokens.next,e),this.first=f.tokens.next,rt()),Dt("break"),this}).exps=!0,pt("continue",function(){var e=f.tokens.next.value;return w["(breakage)"]===0&&K("W052",f.tokens.next,this.value),f.option.asi||at(this),f.tokens.next.id!==";"&&!f.tokens.next.reach?f.tokens.curr.line===f.tokens.next.line&&(w[e]!=="label"?K("W090",f.tokens.next,e):D[e]!==w&&K("W091",f.tokens.next,e),this.first=f.tokens.next,rt()):w["(loopage)"]||K("W052",f.tokens.next,this.value),Dt("continue"),this}).exps=!0,pt("return",function(){return this.line===f.tokens.next.line?f.tokens.next.id!==";"&&!f.tokens.next.reach&&(this.first=ot(0),this.first&&this.first.type==="(punctuator)"&&this.first.value==="="&&!this.first.paren&&!f.option.boss&&Q("W093",this.first.line,this.first.character)):f.tokens.next.type==="(punctuator)"&&["[","{","+","-"].indexOf(f.tokens.next.value)>-1&&at(this),Dt("return"),this}).exps=!0,function(e){e.exps=!0,e.lbp=25}(mt("yield",function(){var e=f.tokens.prev;return f.option.inESNext(!0)&&!w["(generator)"]?("(catch)"!==w["(name)"]||!w["(context)"]["(generator)"])&&G("E046",f.tokens.curr,"yield"):f.option.inESNext()||K("W104",f.tokens.curr,"yield"),w["(generator)"]="yielded",this.line===f.tokens.next.line||!f.option.inMoz(!0)?(f.tokens.next.id!==";"&&!f.tokens.next.reach&&f.tokens.next.nud&&(ut(f.tokens.curr,f.tokens.next),this.first=ot(10),this.first.type==="(punctuator)"&&this.first.value==="="&&!this.first.paren&&!f.option.boss&&Q("W093",this.first.line,this.first.character)),f.option.inMoz(!0)&&f.tokens.next.id!==")"&&(e.lbp>30||!e.assign&&!st()||e.id==="yield")&&G("E050",this)):f.option.asi||at(this),this})),pt("throw",function(){return at(this),this.first=ot(20),Dt("throw"),this}).exps=!0,pt("import",function(){f.option.inESNext()||K("W119",f.tokens.curr,"import");if(f.tokens.next.type==="(string)")return rt("(string)"),this;if(f.tokens.next.identifier)this.name=_t(),et(this.name,{type:"unused",token:f.tokens.curr});else{rt("{");for(;;){if(f.tokens.next.value==="}"){rt("}");break}var e;f.tokens.next.type==="default"?(e="default",rt("default")):e=_t(),f.tokens.next.value==="as"&&(rt("as"),e=_t()),et(e,{type:"unused",token:f.tokens.curr});if(f.tokens.next.value!==","){if(f.tokens.next.value==="}"){rt("}");break}G("E024",f.tokens.next,f.tokens.next.value);break}rt(",")}}return rt("from"),rt("(string)"),this}).exps=!0,pt("export",function(){f.option.inESNext()||K("W119",f.tokens.curr,"export");if(f.tokens.next.type==="default"){rt("default");if(f.tokens.next.id==="function"||f.tokens.next.id==="class")this.block=!0;return this.exportee=ot(10),this}if(f.tokens.next.value==="{"){rt("{");for(;;){y[_t()]=!0;if(f.tokens.next.value!==","){if(f.tokens.next.value==="}"){rt("}");break}G("E024",f.tokens.next,f.tokens.next.value);break}rt(",")}return this}return f.tokens.next.id==="var"?(rt("var"),y[f.tokens.next.value]=!0,f.syntax["var"].fud.call(f.syntax["var"].fud)):f.tokens.next.id==="let"?(rt("let"),y[f.tokens.next.value]=!0,f.syntax.let.fud.call(f.syntax.let.fud)):f.tokens.next.id==="const"?(rt("const"),y[f.tokens.next.value]=!0,f.syntax["const"].fud.call(f.syntax["const"].fud)):f.tokens.next.id==="function"?(this.block=!0,rt("function"),y[f.tokens.next.value]=!0,f.syntax["function"].fud()):f.tokens.next.id==="class"?(this.block=!0,rt("class"),y[f.tokens.next.value]=!0,f.syntax["class"].fud()):G("E024",f.tokens.next,f.tokens.next.value),this}).exps=!0,bt("abstract"),bt("boolean"),bt("byte"),bt("char"),bt("class",{es5:!0,nud:rn}),bt("double"),bt("enum",{es5:!0}),bt("export",{es5:!0}),bt("extends",{es5:!0}),bt("final"),bt("float"),bt("goto"),bt("implements",{es5:!0,strictOnly:!0}),bt("import",{es5:!0}),bt("int"),bt("interface",{es5:!0,strictOnly:!0}),bt("long"),bt("native"),bt("package",{es5:!0,strictOnly:!0}),bt("private",{es5:!0,strictOnly:!0}),bt("protected",{es5:!0,strictOnly:!0}),bt("public",{es5:!0,strictOnly:!0}),bt("short"),bt("static",{es5:!0,strictOnly:!0}),bt("super",{es5:!0}),bt("synchronized"),bt("transient"),bt("volatile");var on=function(){var e,t,n=-1,i=0,s={};r.contains(["[","{"],f.tokens.curr.value)&&(i+=1);do{e=n===-1?f.tokens.next:nt(n),t=nt(n+1),n+=1,r.contains(["[","{"],e.value)?i+=1:r.contains(["]","}"],e.value)&&(i-=1);if(e.identifier&&e.value==="for"&&i===1){s.isCompArray=!0,s.notJson=!0;break}if(r.contains(["}","]"],e.value)&&t.value==="="&&i===0){s.isDestAssign=!0,s.notJson=!0;break}e.value===";"&&(s.isBlock=!0,s.notJson=!0)}while(i>0&&e.id!=="(end)"&&n<15);return s},an=function(){function i(e){var t=n.variables.filter(function(t){if(t.value===e)return t.undef=!1,e}).length;return t!==0}function s(e){var t=n.variables.filter(function(t){if(t.value===e&&!t.undef)return t.unused===!0&&(t.unused=!1),e}).length;return t===0}var e=function(){this.mode="use",this.variables=[]},t=[],n;return{stack:function(){n=new e,t.push(n)},unstack:function(){n.variables.filter(function(e){e.unused&&K("W098",e.token,e.value),e.undef&&$(e.funct,"W117",e.token,e.value)}),t.splice(-1,1),n=t[t.length-1]},setState:function(e){r.contains(["use","define","generate","filter"],e)&&(n.mode=e)},check:function(e){if(!n)return;return n&&n.mode==="use"?(s(e)&&n.variables.push({funct:w,token:f.tokens.curr,value:e,undef:!0,unused:!1}),!0):n&&n.mode==="define"?(i(e)||n.variables.push({funct:w,token:f.tokens.curr,value:e,undef:!1,unused:!0}),!0):n&&n.mode==="generate"?($(w,"W117",f.tokens.curr,e),!0):n&&n.mode==="filter"?(s(e)&&$(w,"W117",f.tokens.curr,e),!0):!1}}},ln=function(){function n(){for(var t in e)if(e[t]["(type)"]==="unused"&&f.option.unused){var n=e[t]["(token)"],r=n.line,i=n.character;Q("W098",r,i,t)}}var e={},t=[e];return{stack:function(){e={},t.push(e)},unstack:function(){n(),t.splice(t.length-1,1),e=r.last(t)},getlabel:function(e){for(var n=t.length-1;n>=0;--n)if(r.has(t[n],e)&&!t[n][e]["(shadowed)"])return t[n]},shadow:function(e){for(var n=t.length-1;n>=0;n--)r.has(t[n],e)&&(t[n][e]["(shadowed)"]=!0)},unshadow:function(e){for(var n=t.length-1;n>=0;n--)r.has(t[n],e)&&(t[n][e]["(shadowed)"]=!1)},current:{has:function(t){return r.has(e,t)},add:function(t,n,r){e[t]={"(type)":n,"(token)":r,"(shadowed)":!1}}}}},cn=function(e,n,i){function v(e,t){if(!e)return;!Array.isArray(e)&&typeof e=="object"&&(e=Object.keys(e)),e.forEach(t)}var o,a,l,h,p={},d={};n=r.clone(n),f.reset(),n&&n.scope?c.scope=n.scope:(c.errors=[],c.undefs=[],c.internals=[],c.blacklist={},c.scope="(main)"),M=Object.create(null),W(M,s.ecmaIdentifiers),W(M,s.reservedVars),W(M,i||{}),g=Object.create(null),y=Object.create(null);if(n){v(n.predef||null,function(e){var t,r;e[0]==="-"?(t=e.slice(1),c.blacklist[t]=t):(r=Object.getOwnPropertyDescriptor(n.predef,e),M[e]=r?r.value:!1)}),v(n.exported||null,function(e){y[e]=!0}),delete n.predef,delete n.exported,h=Object.keys(n);for(l=0;l<h.length;l++)/^-W\d{3}$/g.test(h[l])?d[h[l].slice(1)]=!0:(p[h[l]]=n[h[l]],h[l]==="newcap"&&n[h[l]]===!1&&(p["(explicitNewcap)"]=!0))}f.option=p,f.ignored=d,f.option.indent=f.option.indent||4,f.option.maxerr=f.option.maxerr||50,N=1,S=Object.create(M),D=S,w=$t("(global)",null,D,{"(global)":!0,"(blockscope)":ln(),"(comparray)":an(),"(metrics)":Kt(f.tokens.next)}),E=[w],B=[],P=null,L={},A=null,x={},T=!1,C=[],H=[];if(!q(e)&&!Array.isArray(e))return Y("E004",0),!1;t={get isJSON(){return f.jsonMode},getOption:function(e){return f.option[e]||null},getCache:function(e){return f.cache[e]},setCache:function(e,t){f.cache[e]=t},warn:function(e,t){Q.apply(null,[e,t.line,t.char].concat(t.data))},on:function(e,t){e.split(" ").forEach(function(e){F.on(e,t)}.bind(this))}},F.removeAllListeners(),(j||[]).forEach(function(e){e(t)}),f.tokens.prev=f.tokens.curr=f.tokens.next=f.syntax["(begin)"],k=new u(e),k.on("warning",function(e){Q.apply(null,[e.code,e.line,e.character].concat(e.data))}),k.on("error",function(e){Y.apply(null,[e.code,e.line,e.character].concat(e.data))}),k.on("fatal",function(e){V("E041",e.line,e.from)}),k.on("Identifier",function(e){F.emit("Identifier",e)}),k.on("String",function(e){F.emit("String",e)}),k.on("Number",function(e){F.emit("Number",e)}),k.start();for(var m in n)r.has(n,m)&&I(m,f.tokens.curr);X(),W(M,i||{}),lt.first=!0;try{rt();switch(f.tokens.next.id){case"{":case"[":un();break;default:jt(),f.directive["use strict"]&&!f.option.globalstrict&&!f.option.node&&!f.option.phantom&&K("W097",f.tokens.prev),Bt()}rt(f.tokens.next&&f.tokens.next.value!=="."?"(end)":undefined),w["(blockscope)"].unstack();var b=function(e,t){do{if(typeof t[e]=="string")return t[e]==="unused"?t[e]="var":t[e]==="unction"&&(t[e]="closure"),!0;t=t["(context)"]}while(t);return!1},O=function(e,t){if(!x[e])return;var n=[];for(var r=0;r<x[e].length;r+=1)x[e][r]!==t&&n.push(x[e][r]);n.length===0?delete x[e]:x[e]=n},R=function(e,t,n,r){var i=t.line,s=t.character;r===undefined&&(r=f.option.unused),r===!0&&(r="last-param");var o={vars:["var"],"last-param":["var","param"],strict:["var","param","last-param"]};r&&o[r]&&o[r].indexOf(n)!==-1&&Q("W098",i,s,e),H.push({name:e,line:i,character:s})},U=function(e,t){var n=e[t],i=e["(tokens)"][t];if(t.charAt(0)==="(")return;if(n!=="unused"&&n!=="unction"&&n!=="const")return;if(e["(params)"]&&e["(params)"].indexOf(t)!==-1)return;if(e["(global)"]&&r.has(y,t))return;if(n==="const"&&!Vt(e,t,"unused"))return;R(t,i,"var")};for(o=0;o<c.undefs.length;o+=1)a=c.undefs[o].slice(0),b(a[2].value,a[0])?O(a[2].value,a[2].line):f.option.undef&&K.apply(K,a.slice(1));E.forEach(function(e){if(e["(unusedOption)"]===!1)return;for(var t in e)r.has(e,t)&&U(e,t);if(!e["(params)"])return;var n=e["(params)"].slice(),i=n.pop(),s,o;while(i){s=e[i],o=e["(unusedOption)"]||f.option.unused,o=o===!0?"last-param":o;if(i==="undefined")return;if(s==="unused"||s==="unction")R(i,e["(tokens)"][i],"param",e["(unusedOption)"]);else if(o==="last-param")return;i=n.pop()}});for(var z in g)r.has(g,z)&&!r.has(S,z)&&!r.has(y,z)&&R(z,g[z],"var")}catch($){if(!$||$.name!=="JSHintError")throw $;var J=f.tokens.next||{};c.errors.push({scope:"(main)",raw:$.raw,code:$.code,reason:$.message,line:$.line||J.line,character:$.character||J.from},null)}if(c.scope==="(main)"){n=n||{};for(o=0;o<c.internals.length;o+=1)a=c.internals[o],n.scope=a.elem,cn(a.value,n,i)}return c.errors.length===0};return cn.addModule=function(e){j.push(e)},cn.addModule(l.register),cn.data=function(){var e={functions:[],options:f.option},t=[],n=[],i,s,o,u,a,l;cn.errors.length&&(e.errors=cn.errors),f.jsonMode&&(e.json=!0);for(a in x)r.has(x,a)&&t.push({name:a,line:x[a]});t.length>0&&(e.implieds=t),B.length>0&&(e.urls=B),l=Object.keys(D),l.length>0&&(e.globals=l);for(o=1;o<E.length;o+=1){s=E[o],i={};for(u=0;u<b.length;u+=1)i[b[u]]=[];for(u=0;u<b.length;u+=1)i[b[u]].length===0&&delete i[b[u]];i.name=s["(name)"],i.param=s["(params)"],i.line=s["(line)"],i.character=s["(character)"],i.last=s["(last)"],i.lastcharacter=s["(lastcharacter)"],i.metrics={complexity:s["(metrics)"].ComplexityCount,parameters:(s["(params)"]||[]).length,statements:s["(metrics)"].statementCount},e.functions.push(i)}H.length>0&&(e.unused=H),n=[];for(a in L)if(typeof L[a]=="number"){e.member=L;break}return e},cn.jshint=cn,cn}();typeof n=="object"&&n&&(n.JSHINT=c)},{"./lex.js":4,"./messages.js":5,"./reg.js":6,"./state.js":7,"./style.js":8,"./vars.js":9,events:10,underscore:2}],4:[function(e,t,n){"use strict";function c(){var e=[];return{push:function(t){e.push(t)},check:function(){for(var t=0;t<e.length;++t)e[t]();e.splice(0,e.length)}}}function h(e){var t=e;typeof t=="string"&&(t=t.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split("\n")),t[0]&&t[0].substr(0,2)==="#!"&&(t[0].indexOf("node")!==-1&&(o.option.node=!0),t[0]=""),this.emitter=new i.EventEmitter,this.source=e,this.setLines(t),this.prereg=!0,this.line=0,this.char=1,this.from=1,this.input="",this.inComment=!1;for(var n=0;n<o.option.indent;n+=1)o.tab+=" "}var r=e("underscore"),i=e("events"),s=e("./reg.js"),o=e("./state.js").state,u=e("../data/ascii-identifier-data.js"),a=u.asciiIdentifierStartTable,f=u.asciiIdentifierPartTable,l={Identifier:1,Punctuator:2,NumericLiteral:3,StringLiteral:4,Comment:5,Keyword:6,NullLiteral:7,BooleanLiteral:8,RegExp:9,TemplateLiteral:10};h.prototype={_lines:[],getLines:function(){return this._lines=o.lines,this._lines},setLines:function(e){this._lines=e,o.lines=this._lines},peek:function(e){return this.input.charAt(e||0)},skip:function(e){e=e||1,this.char+=e,this.input=this.input.slice(e)},on:function(e,t){e.split(" ").forEach(function(e){this.emitter.on(e,t)}.bind(this))},trigger:function(){this.emitter.emit.apply(this.emitter,Array.prototype.slice.call(arguments))},triggerAsync:function(e,t,n,r){n.push(function(){r()&&this.trigger(e,t)}.bind(this))},scanPunctuator:function(){var e=this.peek(),t,n,r;switch(e){case".":if(/^[0-9]$/.test(this.peek(1)))return null;if(this.peek(1)==="."&&this.peek(2)===".")return{type:l.Punctuator,value:"..."};case"(":case")":case";":case",":case"{":case"}":case"[":case"]":case":":case"~":case"?":return{type:l.Punctuator,value:e};case"#":return{type:l.Punctuator,value:e};case"":return null}return t=this.peek(1),n=this.peek(2),r=this.peek(3),e===">"&&t===">"&&n===">"&&r==="="?{type:l.Punctuator,value:">>>="}:e==="="&&t==="="&&n==="="?{type:l.Punctuator,value:"==="}:e==="!"&&t==="="&&n==="="?{type:l.Punctuator,value:"!=="}:e===">"&&t===">"&&n===">"?{type:l.Punctuator,value:">>>"}:e==="<"&&t==="<"&&n==="="?{type:l.Punctuator,value:"<<="}:e===">"&&t===">"&&n==="="?{type:l.Punctuator,value:">>="}:e==="="&&t===">"?{type:l.Punctuator,value:e+t}:e===t&&"+-<>&|".indexOf(e)>=0?{type:l.Punctuator,value:e+t}:"<>=!+-*%&|^".indexOf(e)>=0?t==="="?{type:l.Punctuator,value:e+t}:{type:l.Punctuator,value:e}:e==="/"?t==="="&&/\/=(?!(\S*\/[gim]?))/.test(this.input)?{type:l.Punctuator,value:"/="}:{type:l.Punctuator,value:"/"}:null},scanComments:function(){function s(e,t,n){var r=["jshint","jslint","members","member","globals","global","exported"],i=!1,s=e+t,o="plain";return n=n||{},n.isMultiline&&(s+="*/"),r.forEach(function(n){if(i)return;if(e==="//"&&n!=="jshint")return;t.substr(0,n.length)===n&&(i=!0,e+=n,t=t.substr(n.length)),!i&&t.charAt(0)===" "&&t.substr(1,n.length)===n&&(i=!0,e=e+" "+n,t=t.substr(n.length+1));if(!i)return;switch(n){case"member":o="members";break;case"global":o="globals";break;default:o=n}}),{type:l.Comment,commentType:o,value:s,body:t,isSpecial:i,isMultiline:n.isMultiline||!1,isMalformed:n.isMalformed||!1}}var e=this.peek(),t=this.peek(1),n=this.input.substr(2),r=this.line,i=this.char;if(e==="*"&&t==="/")return this.trigger("error",{code:"E018",line:r,character:i}),this.skip(2),null;if(e!=="/"||t!=="*"&&t!=="/")return null;if(t==="/")return this.skip(this.input.length),s("//",n);var o="";if(t==="*"){this.inComment=!0,this.skip(2);while(this.peek()!=="*"||this.peek(1)!=="/")if(this.peek()===""){o+="\n";if(!this.nextLine())return this.trigger("error",{code:"E017",line:r,character:i}),this.inComment=!1,s("/*",o,{isMultiline:!0,isMalformed:!0})}else o+=this.peek(),this.skip();return this.skip(2),this.inComment=!1,s("/*",o,{isMultiline:!0})}},scanKeyword:function(){var e=/^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input),t=["if","in","do","var","for","new","try","let","this","else","case","void","with","enum","while","break","catch","throw","const","yield","class","super","return","typeof","delete","switch","export","import","default","finally","extends","function","continue","debugger","instanceof"];return e&&t.indexOf(e[0])>=0?{type:l.Keyword,value:e[0]}:null},scanIdentifier:function(){function i(e){return e>256}function s(e){return e>256}function o(e){return/^[0-9a-fA-F]$/.test(e)}var e="",t=0,n,r,u=function(){t+=1;if(this.peek(t)!=="u")return null;var e=this.peek(t+1),n=this.peek(t+2),r=this.peek(t+3),i=this.peek(t+4),u;return o(e)&&o(n)&&o(r)&&o(i)?(u=parseInt(e+n+r+i,16),f[u]||s(u)?(t+=5,"\\u"+e+n+r+i):null):null}.bind(this),c=function(){var e=this.peek(t),n=e.charCodeAt(0);return n===92?u():n<128?a[n]?(t+=1,e):null:i(n)?(t+=1,e):null}.bind(this),h=function(){var e=this.peek(t),n=e.charCodeAt(0);return n===92?u():n<128?f[n]?(t+=1,e):null:s(n)?(t+=1,e):null}.bind(this);r=c();if(r===null)return null;e=r;for(;;){r=h();if(r===null)break;e+=r}switch(e){case"true":case"false":n=l.BooleanLiteral;break;case"null":n=l.NullLiteral;break;default:n=l.Identifier}return{type:n,value:e}},scanNumericLiteral:function(){function s(e){return/^[0-9]$/.test(e)}function o(e){return/^[0-7]$/.test(e)}function u(e){return/^[0-9a-fA-F]$/.test(e)}function a(e){return e==="$"||e==="_"||e==="\\"||e>="a"&&e<="z"||e>="A"&&e<="Z"}var e=0,t="",n=this.input.length,r=this.peek(e),i;if(r!=="."&&!s(r))return null;if(r!=="."){t=this.peek(e),e+=1,r=this.peek(e);if(t==="0"){if(r==="x"||r==="X"){e+=1,t+=r;while(e<n){r=this.peek(e);if(!u(r))break;t+=r,e+=1}if(t.length<=2)return{type:l.NumericLiteral,value:t,isMalformed:!0};if(e<n){r=this.peek(e);if(a(r))return null}return{type:l.NumericLiteral,value:t,base:16,isMalformed:!1}}if(o(r)){e+=1,t+=r,i=!1;while(e<n){r=this.peek(e);if(s(r))i=!0;else if(!o(r))break;t+=r,e+=1}if(e<n){r=this.peek(e);if(a(r))return null}return{type:l.NumericLiteral,value:t,base:8,isMalformed:!1}}s(r)&&(e+=1,t+=r)}while(e<n){r=this.peek(e);if(!s(r))break;t+=r,e+=1}}if(r==="."){t+=r,e+=1;while(e<n){r=this.peek(e);if(!s(r))break;t+=r,e+=1}}if(r==="e"||r==="E"){t+=r,e+=1,r=this.peek(e);if(r==="+"||r==="-")t+=this.peek(e),e+=1;r=this.peek(e);if(!s(r))return null;t+=r,e+=1;while(e<n){r=this.peek(e);if(!s(r))break;t+=r,e+=1}}if(e<n){r=this.peek(e);if(a(r))return null}return{type:l.NumericLiteral,value:t,base:10,isMalformed:!isFinite(t)}},scanTemplateLiteral:function(){if(!o.option.esnext||this.peek()!=="`")return null;var e=this.line,t=this.char,n=1,r="";this.skip();while(this.peek()!=="`"){while(this.peek()===""){if(!this.nextLine())return this.trigger("error",{code:"E052",line:e,character:t}),{type:l.TemplateLiteral,value:r,isUnclosed:!0};r+="\n"}var i=this.peek();this.skip(n),r+=i}return this.skip(),{type:l.TemplateLiteral,value:r,isUnclosed:!1}},scanStringLiteral:function(e){var t=this.peek();if(t!=='"'&&t!=="'")return null;this.triggerAsync("warning",{code:"W108",line:this.line,character:this.char},e,function(){return o.jsonMode&&t!=='"'});var n="",r=this.line,i=this.char,s=!1;this.skip();e:while(this.peek()!==t){while(this.peek()===""){s?(s=!1,this.triggerAsync("warning",{code:"W043",line:this.line,character:this.char},e,function(){return!o.option.multistr}),this.triggerAsync("warning",{code:"W042",line:this.line,character:this.char},e,function(){return o.jsonMode&&o.option.multistr})):this.trigger("warning",{code:"W112",line:this.line,character:this.char});if(!this.nextLine())return this.trigger("error",{code:"E029",line:r,character:i}),{type:l.StringLiteral,value:n,isUnclosed:!0,quote:t};if(this.peek()==t)break e}s=!1;var u=this.peek(),a=1;u<" "&&this.trigger("warning",{code:"W113",line:this.line,character:this.char,data:["<non-printable>"]});if(u==="\\"){this.skip(),u=this.peek();switch(u){case"'":this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\'"]},e,function(){return o.jsonMode});break;case"b":u="\\b";break;case"f":u="\\f";break;case"n":u="\\n";break;case"r":u="\\r";break;case"t":u="\\t";break;case"0":u="\\0";var f=parseInt(this.peek(1),10);this.triggerAsync("warning",{code:"W115",line:this.line,character:this.char},e,function(){return f>=0&&f<=7&&o.directive["use strict"]});break;case"u":u=String.fromCharCode(parseInt(this.input.substr(1,4),16)),a=5;break;case"v":this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\v"]},e,function(){return o.jsonMode}),u="";break;case"x":var c=parseInt(this.input.substr(1,2),16);this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\x-"]},e,function(){return o.jsonMode}),u=String.fromCharCode(c),a=3;break;case"\\":u="\\\\";break;case'"':u='\\"';break;case"/":break;case"":s=!0,u="";break;case"!":if(n.slice(n.length-2)==="<")break;default:this.trigger("warning",{code:"W044",line:this.line,character:this.char})}}n+=u,this.skip(a)}return this.skip(),{type:l.StringLiteral,value:n,isUnclosed:!1,quote:t}},scanRegExp:function(){var e=0,t=this.input.length,n=this.peek(),r=n,i="",s=[],o=!1,u=!1,a,f=function(){n<" "&&(o=!0,this.trigger("warning",{code:"W048",line:this.line,character:this.char})),n==="<"&&(o=!0,this.trigger("warning",{code:"W049",line:this.line,character:this.char,data:[n]}))}.bind(this);if(!this.prereg||n!=="/")return null;e+=1,a=!1;while(e<t){n=this.peek(e),r+=n,i+=n;if(u){n==="]"&&(this.peek(e-1)!=="\\"||this.peek(e-2)==="\\")&&(u=!1),n==="\\"&&(e+=1,n=this.peek(e),i+=n,r+=n,f()),e+=1;continue}if(n==="\\"){e+=1,n=this.peek(e),i+=n,r+=n,f();if(n==="/"){e+=1;continue}if(n==="["){e+=1;continue}}if(n==="["){u=!0,e+=1;continue}if(n==="/"){i=i.substr(0,i.length-1),a=!0,e+=1;break}e+=1}if(!a)return this.trigger("error",{code:"E015",line:this.line,character:this.from}),void this.trigger("fatal",{line:this.line,from:this.from});while(e<t){n=this.peek(e);if(!/[gim]/.test(n))break;s.push(n),r+=n,e+=1}try{new RegExp(i,s.join(""))}catch(c){o=!0,this.trigger("error",{code:"E016",line:this.line,character:this.char,data:[c.message]})}return{type:l.RegExp,value:r,flags:s,isMalformed:o}},scanNonBreakingSpaces:function(){return o.option.nonbsp?this.input.search(/(\u00A0)/):-1},scanUnsafeChars:function(){return this.input.search(s.unsafeChars)},next:function(e){this.from=this.char;var t;if(/\s/.test(this.peek())){t=this.char;while(/\s/.test(this.peek()))this.from+=1,this.skip()}var n=this.scanComments()||this.scanStringLiteral(e)||this.scanTemplateLiteral();return n?n:(n=this.scanRegExp()||this.scanPunctuator()||this.scanKeyword()||this.scanIdentifier()||this.scanNumericLiteral(),n?(this.skip(n.value.length),n):null)},nextLine:function(){var e;if(this.line>=this.getLines().length)return!1;this.input=this.getLines()[this.line],this.line+=1,this.char=1,this.from=1;var t=this.input.trim(),n=function(){return r.some(arguments,function(e){return t.indexOf(e)===0})},i=function(){return r.some(arguments,function(e){return t.indexOf(e,t.length-e.length)!==-1})};o.ignoreLinterErrors===!0&&!n("/*","//")&&!i("*/")&&(this.input=""),e=this.scanNonBreakingSpaces(),e>=0&&this.trigger("warning",{code:"W125",line:this.line,character:e+1}),this.input=this.input.replace(/\t/g,o.tab),e=this.scanUnsafeChars(),e>=0&&this.trigger("warning",{code:"W100",line:this.line,character:e});if(o.option.maxlen&&o.option.maxlen<this.input.length){var u=this.inComment||n.call(t,"//")||n.call(t,"/*"),a=!u||!s.maxlenException.test(t);a&&this.trigger("warning",{code:"W101",line:this.line,character:this.input.length})}return!0},start:function(){this.nextLine()},token:function(){function n(e,t){if(!e.reserved)return!1;var n=e.meta;if(n&&n.isFutureReservedWord&&o.option.inES5()){if(!n.es5)return!1;if(n.strictOnly&&!o.option.strict&&!o.directive["use strict"])return!1;if(t)return!1}return!0}var e=c(),t,i=function(t,i,s){var u;t!=="(endline)"&&t!=="(end)"&&(this.prereg=!1);if(t==="(punctuator)"){switch(i){case".":case")":case"~":case"#":case"]":this.prereg=!1;break;default:this.prereg=!0}u=Object.create(o.syntax[i]||o.syntax["(error)"])}if(t==="(identifier)"){if(i==="return"||i==="case"||i==="typeof")this.prereg=!0;r.has(o.syntax,i)&&(u=Object.create(o.syntax[i]||o.syntax["(error)"]),n(u,s&&t==="(identifier)")||(u=null))}return u||(u=Object.create(o.syntax[t])),u.identifier=t==="(identifier)",u.type=u.type||t,u.value=i,u.line=this.line,u.character=this.char,u.from=this.from,s&&u.identifier&&(u.isProperty=s),u.check=e.check,u}.bind(this);for(;;){if(!this.input.length)return i(this.nextLine()?"(endline)":"(end)","");t=this.next(e);if(!t){this.input.length&&(this.trigger("error",{code:"E024",line:this.line,character:this.char,data:[this.peek()]}),this.input="");continue}switch(t.type){case l.StringLiteral:return this.triggerAsync("String",{line:this.line,"char":this.char,from:this.from,value:t.value,quote:t.quote},e,function(){return!0}),i("(string)",t.value);case l.TemplateLiteral:return this.trigger("Template",{line:this.line,"char":this.char,from:this.from,value:t.value}),i("(template)",t.value);case l.Identifier:this.trigger("Identifier",{line:this.line,"char":this.char,from:this.form,name:t.value,isProperty:o.tokens.curr.id==="."});case l.Keyword:case l.NullLiteral:case l.BooleanLiteral:return i("(identifier)",t.value,o.tokens.curr.id===".");case l.NumericLiteral:return t.isMalformed&&this.trigger("warning",{code:"W045",line:this.line,character:this.char,data:[t.value]}),this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["0x-"]},e,function(){return t.base===16&&o.jsonMode}),this.triggerAsync("warning",{code:"W115",line:this.line,character:this.char},e,function(){return o.directive["use strict"]&&t.base===8}),this.trigger("Number",{line:this.line,"char":this.char,from:this.from,value:t.value,base:t.base,isMalformed:t.malformed}),i("(number)",t.value);case l.RegExp:return i("(regexp)",t.value);case l.Comment:o.tokens.curr.comment=!0;if(t.isSpecial)return{id:"(comment)",value:t.value,body:t.body,type:t.commentType,isSpecial:t.isSpecial,line:this.line,character:this.char,from:this.from};break;case"":break;default:return i("(punctuator)",t.value)}}}},n.Lexer=h},{"../data/ascii-identifier-data.js":1,"./reg.js":6,"./state.js":7,events:10,underscore:2}],5:[function(e,t,n){"use strict";var r=e("underscore"),i={E001:"Bad option: '{a}'.",E002:"Bad option value.",E003:"Expected a JSON value.",E004:"Input is neither a string nor an array of strings.",E005:"Input is empty.",E006:"Unexpected early end of program.",E007:'Missing "use strict" statement.',E008:"Strict violation.",E009:"Option 'validthis' can't be used in a global scope.",E010:"'with' is not allowed in strict mode.",E011:"const '{a}' has already been declared.",E012:"const '{a}' is initialized to 'undefined'.",E013:"Attempting to override '{a}' which is a constant.",E014:"A regular expression literal can be confused with '/='.",E015:"Unclosed regular expression.",E016:"Invalid regular expression.",E017:"Unclosed comment.",E018:"Unbegun comment.",E019:"Unmatched '{a}'.",E020:"Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.",E021:"Expected '{a}' and instead saw '{b}'.",E022:"Line breaking error '{a}'.",E023:"Missing '{a}'.",E024:"Unexpected '{a}'.",E025:"Missing ':' on a case clause.",E026:"Missing '}' to match '{' from line {a}.",E027:"Missing ']' to match '[' from line {a}.",E028:"Illegal comma.",E029:"Unclosed string.",E030:"Expected an identifier and instead saw '{a}'.",E031:"Bad assignment.",E032:"Expected a small integer or 'false' and instead saw '{a}'.",E033:"Expected an operator and instead saw '{a}'.",E034:"get/set are ES5 features.",E035:"Missing property name.",E036:"Expected to see a statement and instead saw a block.",E037:null,E038:null,E039:"Function declarations are not invocable. Wrap the whole function invocation in parens.",E040:"Each value should have its own case label.",E041:"Unrecoverable syntax error.",E042:"Stopping.",E043:"Too many errors.",E044:null,E045:"Invalid for each loop.",E046:"A yield statement shall be within a generator function (with syntax: `function*`)",E047:null,E048:"Let declaration not directly within block.",E049:"A {a} cannot be named '{b}'.",E050:"Mozilla requires the yield expression to be parenthesized here.",E051:"Regular parameters cannot come after default parameters.",E052:"Unclosed template literal."},s={W001:"'hasOwnProperty' is a really bad name.",W002:"Value of '{a}' may be overwritten in IE 8 and earlier.",W003:"'{a}' was used before it was defined.",W004:"'{a}' is already defined.",W005:"A dot following a number can be confused with a decimal point.",W006:"Confusing minuses.",W007:"Confusing plusses.",W008:"A leading decimal point can be confused with a dot: '{a}'.",W009:"The array literal notation [] is preferable.",W010:"The object literal notation {} is preferable.",W011:null,W012:null,W013:null,W014:"Bad line breaking before '{a}'.",W015:null,W016:"Unexpected use of '{a}'.",W017:"Bad operand.",W018:"Confusing use of '{a}'.",W019:"Use the isNaN function to compare with NaN.",W020:"Read only.",W021:"'{a}' is a function.",W022:"Do not assign to the exception parameter.",W023:"Expected an identifier in an assignment and instead saw a function invocation.",W024:"Expected an identifier and instead saw '{a}' (a reserved word).",W025:"Missing name in function declaration.",W026:"Inner functions should be listed at the top of the outer function.",W027:"Unreachable '{a}' after '{b}'.",W028:"Label '{a}' on {b} statement.",W030:"Expected an assignment or function call and instead saw an expression.",W031:"Do not use 'new' for side effects.",W032:"Unnecessary semicolon.",W033:"Missing semicolon.",W034:'Unnecessary directive "{a}".',W035:"Empty block.",W036:"Unexpected /*member '{a}'.",W037:"'{a}' is a statement label.",W038:"'{a}' used out of scope.",W039:"'{a}' is not allowed.",W040:"Possible strict violation.",W041:"Use '{a}' to compare with '{b}'.",W042:"Avoid EOL escaping.",W043:"Bad escaping of EOL. Use option multistr if needed.",W044:"Bad or unnecessary escaping.",W045:"Bad number '{a}'.",W046:"Don't use extra leading zeros '{a}'.",W047:"A trailing decimal point can be confused with a dot: '{a}'.",W048:"Unexpected control character in regular expression.",W049:"Unexpected escaped character '{a}' in regular expression.",W050:"JavaScript URL.",W051:"Variables should not be deleted.",W052:"Unexpected '{a}'.",W053:"Do not use {a} as a constructor.",W054:"The Function constructor is a form of eval.",W055:"A constructor name should start with an uppercase letter.",W056:"Bad constructor.",W057:"Weird construction. Is 'new' necessary?",W058:"Missing '()' invoking a constructor.",W059:"Avoid arguments.{a}.",W060:"document.write can be a form of eval.",W061:"eval can be harmful.",W062:"Wrap an immediate function invocation in parens to assist the reader in understanding that the expression is the result of a function, and not the function itself.",W063:"Math is not a function.",W064:"Missing 'new' prefix when invoking a constructor.",W065:"Missing radix parameter.",W066:"Implied eval. Consider passing a function instead of a string.",W067:"Bad invocation.",W068:"Wrapping non-IIFE function literals in parens is unnecessary.",W069:"['{a}'] is better written in dot notation.",W070:"Extra comma. (it breaks older versions of IE)",W071:"This function has too many statements. ({a})",W072:"This function has too many parameters. ({a})",W073:"Blocks are nested too deeply. ({a})",W074:"This function's cyclomatic complexity is too high. ({a})",W075:"Duplicate key '{a}'.",W076:"Unexpected parameter '{a}' in get {b} function.",W077:"Expected a single parameter in set {a} function.",W078:"Setter is defined without getter.",W079:"Redefinition of '{a}'.",W080:"It's not necessary to initialize '{a}' to 'undefined'.",W081:null,W082:"Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.",W083:"Don't make functions within a loop.",W084:"Assignment in conditional expression",W085:"Don't use 'with'.",W086:"Expected a 'break' statement before '{a}'.",W087:"Forgotten 'debugger' statement?",W088:"Creating global 'for' variable. Should be 'for (var {a} ...'.",W089:"The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.",W090:"'{a}' is not a statement label.",W091:"'{a}' is out of scope.",W093:"Did you mean to return a conditional instead of an assignment?",W094:"Unexpected comma.",W095:"Expected a string and instead saw {a}.",W096:"The '{a}' key may produce unexpected results.",W097:'Use the function form of "use strict".',W098:"'{a}' is defined but never used.",W099:null,W100:"This character may get silently deleted by one or more browsers.",W101:"Line is too long.",W102:null,W103:"The '{a}' property is deprecated.",W104:"'{a}' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).",W105:"Unexpected {a} in '{b}'.",W106:"Identifier '{a}' is not in camel case.",W107:"Script URL.",W108:"Strings must use doublequote.",W109:"Strings must use singlequote.",W110:"Mixed double and single quotes.",W112:"Unclosed string.",W113:"Control character in string: {a}.",W114:"Avoid {a}.",W115:"Octal literals are not allowed in strict mode.",W116:"Expected '{a}' and instead saw '{b}'.",W117:"'{a}' is not defined.",W118:"'{a}' is only available in Mozilla JavaScript extensions (use moz option).",W119:"'{a}' is only available in ES6 (use esnext option).",W120:"You might be leaking a variable ({a}) here.",W121:"Extending prototype of native object: '{a}'.",W122:"Invalid typeof value '{a}'",W123:"'{a}' is already defined in outer scope.",W124:"A generator function shall contain a yield statement.",W125:"This line contains non-breaking spaces: http://jshint.com/doc/options/#nonbsp"},o={I001:"Comma warnings can be turned off with 'laxcomma'.",I002:null,I003:"ES5 option is now set per default"};n.errors={},n.warnings={},n.info={},r.each(i,function(e,t){n.errors[t]={code:t,desc:e}}),r.each(s,function(e,t){n.warnings[t]={code:t,desc:e}}),r.each(o,function(e,t){n.info[t]={code:t,desc:e}})},{underscore:2}],6:[function(e,t,n){"use string";n.unsafeString=/@cc|<\/?|script|\]\s*\]|<\s*!|</i,n.unsafeChars=/[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,n.needEsc=/[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,n.needEscGlobal=/[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,n.starSlash=/\*\//,n.identifier=/^([a-zA-Z_$][a-zA-Z0-9_$]*)$/,n.javascriptURL=/^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i,n.fallsThrough=/^\s*\/\*\s*falls?\sthrough\s*\*\/\s*$/,n.maxlenException=/^(?:(?:\/\/|\/\*|\*) ?)?[^ ]+$/},{}],7:[function(e,t,n){"use strict";var r={syntax:{},reset:function(){this.tokens={prev:null,next:null,curr:null},this.option={},this.ignored={},this.directive={},this.jsonMode=!1,this.jsonWarnings=[],this.lines=[],this.tab="",this.cache={},this.ignoredLines={},this.ignoreLinterErrors=!1}};n.state=r},{}],8:[function(e,t,n){"use strict";n.register=function(e){e.on("Identifier",function(n){if(e.getOption("proto"))return;n.name==="__proto__"&&e.warn("W103",{line:n.line,"char":n.char,data:[n.name]})}),e.on("Identifier",function(n){if(e.getOption("iterator"))return;n.name==="__iterator__"&&e.warn("W104",{line:n.line,"char":n.char,data:[n.name]})}),e.on("Identifier",function(n){if(!e.getOption("camelcase"))return;n.name.replace(/^_+|_+$/g,"").indexOf("_")>-1&&!n.name.match(/^[A-Z0-9_]*$/)&&e.warn("W106",{line:n.line,"char":n.from,data:[n.name]})}),e.on("String",function(n){var r=e.getOption("quotmark"),i;if(!r)return;r==="single"&&n.quote!=="'"&&(i="W109"),r==="double"&&n.quote!=='"'&&(i="W108"),r===!0&&(e.getCache("quotmark")||e.setCache("quotmark",n.quote),e.getCache("quotmark")!==n.quote&&(i="W110")),i&&e.warn(i,{line:n.line,"char":n.char})}),e.on("Number",function(n){n.value.charAt(0)==="."&&e.warn("W008",{line:n.line,"char":n.char,data:[n.value]}),n.value.substr(n.value.length-1)==="."&&e.warn("W047",{line:n.line,"char":n.char,data:[n.value]}),/^00+/.test(n.value)&&e.warn("W046",{line:n.line,"char":n.char,data:[n.value]})}),e.on("String",function(n){var r=/^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i;if(e.getOption("scripturl"))return;r.test(n.value)&&e.warn("W107",{line:n.line,"char":n.char})})}},{}],9:[function(e,t,n){"use strict";n.reservedVars={arguments:!1,NaN:!1},n.ecmaIdentifiers={Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,JSON:!1,Math:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1},n.newEcmaIdentifiers={Set:!1,Map:!1,WeakMap:!1,WeakSet:!1,Proxy:!1,Promise:!1},n.browser={Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,CanvasGradient:!1,CanvasPattern:!1,CanvasRenderingContext2D:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,CustomEvent:!1,DOMParser:!1,defaultStatus:!1,document:!1,Element:!1,ElementTimeControl:!1,event:!1,FileReader:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Image:!1,length:!1,localStorage:!1,location:!1,matchMedia:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,MouseEvent:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,NodeList:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,print:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,SVGAElement:!1,SVGAltGlyphDefElement:!1,SVGAltGlyphElement:!1,SVGAltGlyphItemElement:!1,SVGAngle:!1,SVGAnimateColorElement:!1,SVGAnimateElement:!1,SVGAnimateMotionElement:!1,SVGAnimateTransformElement:!1,SVGAnimatedAngle:!1,SVGAnimatedBoolean:!1,SVGAnimatedEnumeration:!1,SVGAnimatedInteger:!1,SVGAnimatedLength:!1,SVGAnimatedLengthList:!1,SVGAnimatedNumber:!1,SVGAnimatedNumberList:!1,SVGAnimatedPathData:!1,SVGAnimatedPoints:!1,SVGAnimatedPreserveAspectRatio:!1,SVGAnimatedRect:!1,SVGAnimatedString:!1,SVGAnimatedTransformList:!1,SVGAnimationElement:!1,SVGCSSRule:!1,SVGCircleElement:!1,SVGClipPathElement:!1,SVGColor:!1,SVGColorProfileElement:!1,SVGColorProfileRule:!1,SVGComponentTransferFunctionElement:!1,SVGCursorElement:!1,SVGDefsElement:!1,SVGDescElement:!1,SVGDocument:!1,SVGElement:!1,SVGElementInstance:!1,SVGElementInstanceList:!1,SVGEllipseElement:!1,SVGExternalResourcesRequired:!1,SVGFEBlendElement:!1,SVGFEColorMatrixElement:!1,SVGFEComponentTransferElement:!1,SVGFECompositeElement:!1,SVGFEConvolveMatrixElement:!1,SVGFEDiffuseLightingElement:!1,SVGFEDisplacementMapElement:!1,SVGFEDistantLightElement:!1,SVGFEFloodElement:!1,SVGFEFuncAElement:!1,SVGFEFuncBElement:!1,SVGFEFuncGElement:!1,SVGFEFuncRElement:!1,SVGFEGaussianBlurElement:!1,SVGFEImageElement:!1,SVGFEMergeElement:!1,SVGFEMergeNodeElement:!1,SVGFEMorphologyElement:!1,SVGFEOffsetElement:!1,SVGFEPointLightElement:!1,SVGFESpecularLightingElement:!1,SVGFESpotLightElement:!1,SVGFETileElement:!1,SVGFETurbulenceElement:!1,SVGFilterElement:!1,SVGFilterPrimitiveStandardAttributes:!1,SVGFitToViewBox:!1,SVGFontElement:!1,SVGFontFaceElement:!1,SVGFontFaceFormatElement:!1,SVGFontFaceNameElement:!1,SVGFontFaceSrcElement:!1,SVGFontFaceUriElement:!1,SVGForeignObjectElement:!1,SVGGElement:!1,SVGGlyphElement:!1,SVGGlyphRefElement:!1,SVGGradientElement:!1,SVGHKernElement:!1,SVGICCColor:!1,SVGImageElement:!1,SVGLangSpace:!1,SVGLength:!1,SVGLengthList:!1,SVGLineElement:!1,SVGLinearGradientElement:!1,SVGLocatable:!1,SVGMPathElement:!1,SVGMarkerElement:!1,SVGMaskElement:!1,SVGMatrix:!1,SVGMetadataElement:!1,SVGMissingGlyphElement:!1,SVGNumber:!1,SVGNumberList:!1,SVGPaint:!1,SVGPathElement:!1,SVGPathSeg:!1,SVGPathSegArcAbs:!1,SVGPathSegArcRel:!1,SVGPathSegClosePath:!1,SVGPathSegCurvetoCubicAbs:!1,SVGPathSegCurvetoCubicRel:!1,SVGPathSegCurvetoCubicSmoothAbs:!1,SVGPathSegCurvetoCubicSmoothRel:!1,SVGPathSegCurvetoQuadraticAbs:!1,SVGPathSegCurvetoQuadraticRel:!1,SVGPathSegCurvetoQuadraticSmoothAbs:!1,SVGPathSegCurvetoQuadraticSmoothRel:!1,SVGPathSegLinetoAbs:!1,SVGPathSegLinetoHorizontalAbs:!1,SVGPathSegLinetoHorizontalRel:!1,SVGPathSegLinetoRel:!1,SVGPathSegLinetoVerticalAbs:!1,SVGPathSegLinetoVerticalRel:!1,SVGPathSegList:!1,SVGPathSegMovetoAbs:!1,SVGPathSegMovetoRel:!1,SVGPatternElement:!1,SVGPoint:!1,SVGPointList:!1,SVGPolygonElement:!1,SVGPolylineElement:!1,SVGPreserveAspectRatio:!1,SVGRadialGradientElement:!1,SVGRect:!1,SVGRectElement:!1,SVGRenderingIntent:!1,SVGSVGElement:!1,SVGScriptElement:!1,SVGSetElement:!1,SVGStopElement:!1,SVGStringList:!1,SVGStylable:!1,SVGStyleElement:!1,SVGSwitchElement:!1,SVGSymbolElement:!1,SVGTRefElement:!1,SVGTSpanElement:!1,SVGTests:!1,SVGTextContentElement:!1,SVGTextElement:!1,SVGTextPathElement:!1,SVGTextPositioningElement:!1,SVGTitleElement:!1,SVGTransform:!1,SVGTransformList:!1,SVGTransformable:!1,SVGURIReference:!1,SVGUnitTypes:!1,SVGUseElement:!1,SVGVKernElement:!1,SVGViewElement:!1,SVGViewSpec:!1,SVGZoomAndPan:!1,TimeEvent:!1,top:!1,URL:!1,WebSocket:!1,window:!1,Worker:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},n.devel={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},n.worker={importScripts:!0,postMessage:!0,self:!0},n.nonstandard={escape:!1,unescape:!1},n.couch={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},n.node={__filename:!1,__dirname:!1,GLOBAL:!1,global:!1,module:!1,require:!1,Buffer:!0,console:!0,exports:!0,process:!0,setTimeout:!0,clearTimeout:!0,setInterval:!0,clearInterval:!0,setImmediate:!0,clearImmediate:!0},n.phantom={phantom:!0,require:!0,WebPage:!0,console:!0,exports:!0},n.qunit={asyncTest:!1,deepEqual:!1,equal:!1,expect:!1,module:!1,notDeepEqual:!1,notEqual:!1,notPropEqual:!1,notStrictEqual:!1,ok:!1,propEqual:!1,QUnit:!1,raises:!1,start:!1,stop:!1,strictEqual:!1,test:!1,"throws":!1},n.rhino={defineClass:!1,deserialize:!1,gc:!1,help:!1,importClass:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,Packages:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},n.shelljs={target:!1,echo:!1,exit:!1,cd:!1,pwd:!1,ls:!1,find:!1,cp:!1,rm:!1,mv:!1,mkdir:!1,test:!1,cat:!1,sed:!1,grep:!1,which:!1,dirs:!1,pushd:!1,popd:!1,env:!1,exec:!1,chmod:!1,config:!1,error:!1,tempdir:!1},n.typed={ArrayBuffer:!1,ArrayBufferView:!1,DataView:!1,Float32Array:!1,Float64Array:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1},n.wsh={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},n.dojo={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},n.jquery={$:!1,jQuery:!1},n.mootools={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,IFrame:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},n.prototypejs={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},n.yui={YUI:!1,Y:!1,YUI_config:!1},n.mocha={describe:!1,it:!1,before:!1,after:!1,beforeEach:!1,afterEach:!1,suite:!1,test:!1,setup:!1,teardown:!1},n.jasmine={jasmine:!1,describe:!1,it:!1,xit:!1,beforeEach:!1,afterEach:!1,setFixtures:!1,loadFixtures:!1,spyOn:!1,expect:!1,runs:!1,waitsFor:!1,waits:!1}},{}],10:[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||undefined}function i(e){return typeof e=="function"}function s(e){return typeof e=="number"}function o(e){return typeof e=="object"&&e!==null}function u(e){return e===void 0}t.exports=r,r.EventEmitter=r,r.prototype._events=undefined,r.prototype._maxListeners=undefined,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!s(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,s,a,f;this._events||(this._events={});if(e==="error")if(!this._events.error||o(this._events.error)&&!this._events.error.length)throw t=arguments[1],t instanceof Error?t:TypeError('Uncaught, unspecified "error" event.');n=this._events[e];if(u(n))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:r=arguments.length,s=new Array(r-1);for(a=1;a<r;a++)s[a-1]=arguments[a];n.apply(this,s)}else if(o(n)){r=arguments.length,s=new Array(r-1);for(a=1;a<r;a++)s[a-1]=arguments[a];f=n.slice(),r=f.length;for(a=0;a<r;a++)f[a].apply(this,s)}return!0},r.prototype.addListener=function(e,t){var n;if(!i(t))throw TypeError("listener must be a function");this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,i(t.listener)?t.listener:t),this._events[e]?o(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t;if(o(this._events[e])&&!this._events[e].warned){var n;u(this._maxListeners)?n=r.defaultMaxListeners:n=this._maxListeners,n&&n>0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),console.trace())}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var n=!1;return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var n,r,s,u;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;n=this._events[e],s=n.length,r=-1;if(n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(u=s;u-->0;)if(n[u]===t||n[u].listener&&n[u].listener===t){r=u;break}if(r<0)return this;n.length===1?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return arguments.length===0?this._events={}:this._events[e]&&delete this._events[e],this;if(arguments.length===0){for(t in this._events){if(t==="removeListener")continue;this.removeAllListeners(t)}return this.removeAllListeners("removeListener"),this._events={},this}n=this._events[e];if(i(n))this.removeListener(e,n);else while(n.length)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return!this._events||!this._events[e]?t=[]:i(this._events[e])?t=[this._events[e]]:t=this._events[e].slice(),t},r.listenerCount=function(e,t){var n;return!e._events||!e._events[t]?n=0:i(e._events[t])?n=1:n=e._events[t].length,n}},{}]},{},[3])(3)}),define("ace/mode/javascript_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/javascript/jshint"],function(require,exports,module){"use strict";function startRegex(e){return RegExp("^("+e.join("|")+")")}var oop=require("../lib/oop"),Mirror=require("../worker/mirror").Mirror,lint=require("./javascript/jshint").JSHINT,disabledWarningsRe=startRegex(["Bad for in variable '(.+)'.",'Missing "use strict"']),errorsRe=startRegex(["Unexpected","Expected ","Confusing (plus|minus)","\\{a\\} unterminated regular expression","Unclosed ","Unmatched ","Unbegun comment","Bad invocation","Missing space after","Missing operator at"]),infoRe=startRegex(["Expected an assignment","Bad escapement of EOL","Unexpected comma","Unexpected space","Missing radix parameter.","A leading decimal point can","\\['{a}'\\] is better written in dot notation.","'{a}' used out of scope"]),JavaScriptWorker=exports.JavaScriptWorker=function(e){Mirror.call(this,e),this.setTimeout(500),this.setOptions()};oop.inherits(JavaScriptWorker,Mirror),function(){this.setOptions=function(e){this.options=e||{esnext:!0,moz:!0,devel:!0,browser:!0,node:!0,laxcomma:!0,laxbreak:!0,lastsemic:!0,onevar:!1,passfail:!1,maxerr:100,expr:!0,multistr:!0,globalstrict:!0},this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.changeOptions=function(e){oop.mixin(this.options,e),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.isValidJS=function(str){try{eval("throw 0;"+str)}catch(e){if(e===0)return!0}return!1},this.onUpdate=function(){var e=this.doc.getValue();e=e.replace(/^#!.*\n/,"\n");if(!e){this.sender.emit("jslint",[]);return}var t=[],n=this.isValidJS(e)?"warning":"error";lint(e,this.options);var r=lint.errors,i=!1;for(var s=0;s<r.length;s++){var o=r[s];if(!o)continue;var u=o.raw,a="warning";if(u=="Missing semicolon."){var f=o.evidence.substr(o.character);f=f.charAt(f.search(/\S/)),n=="error"&&f&&/[\w\d{(['"]/.test(f)?(o.reason='Missing ";" before statement',a="error"):a="info"}else{if(disabledWarningsRe.test(u))continue;infoRe.test(u)?a="info":errorsRe.test(u)?(i=!0,a=n):u=="'{a}' is not defined."?a="warning":u=="'{a}' is defined but never used."&&(a="info")}t.push({row:o.line-1,column:o.character-1,text:o.reason,type:a,raw:u}),i}this.sender.emit("jslint",t)}}.call(JavaScriptWorker.prototype)}),define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _=" \n\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}})
\ No newline at end of file diff --git a/priv/static/metrics-graphics-3.0-alpha3/examples/js/main.js b/priv/static/metrics-graphics-3.0-alpha3/examples/js/main.js new file mode 100644 index 0000000..a123f92 --- /dev/null +++ b/priv/static/metrics-graphics-3.0-alpha3/examples/js/main.js @@ -0,0 +1,125 @@ +var theme = 'light'; + +(function() { + 'use strict'; + + //set the active pill and section on first load + var section = (document.location.hash) ? document.location.hash.slice(1) : 'lines'; + + $('#trunk').load('charts/' + section + '.htm', function() { + $('pre code').each(function(i, block) { + hljs.highlightBlock(block); + }); + }); + + $('.examples li a#goto-' + section).addClass('active'); + + //handle mouse clicks and so on + assignEventListeners(); + + function assignEventListeners() { + $('ul.examples li a.pill').on('click', function(event) { + event.preventDefault(); + $('ul.examples li a.pill').removeClass('active'); + $(this).addClass('active'); + + var section = $(this).attr('id').slice(5); + $('#trunk').load('charts/' + section + '.htm', function() { + $('pre code').each(function(i, block) { + hljs.highlightBlock(block); + }); + }); + + document.location.hash = section; + + return false; + }) + + $('#dark-css').on('click', function () { + theme = 'dark'; + + $('.missing') + .css('background-image', 'url(images/missing-data-dark.png)'); + + $('.wip') + .css('background-color', '#3b3b3b'); + + $('.trunk-section') + .css('border-top-color', '#5e5e5e'); + + $('.mg-missing-background') + .css('stroke', '#ccc'); + + $('.head ul li a.pill').removeClass('active'); + $(this).toggleClass('active'); + $('#dark').attr({href : 'css/metricsgraphics-demo-dark.css'}); + $('#dark-code').attr({href : 'css/railscasts.css'}); + $('#accessible').attr({href : ''}); + + return false; + }); + + $('#light-css').on('click', function () { + theme = 'light'; + + $('.missing') + .css('background-image', 'url(images/missing-data.png)'); + + $('.wip') + .css('background-color', '#f1f1f1'); + + $('.trunk-section') + .css('border-top-color', '#ccc'); + + $('.mg-missing-background') + .css('stroke', 'blue'); + + $('.head ul li a.pill').removeClass('active'); + $(this).toggleClass('active'); + $('#dark').attr({href : ''}); + $('#dark-code').attr({href : ''}); + $('#accessible').attr({href : ''}); + + return false; + }); + + $('#accessible-css').on('click', function () { + $('.head ul li a.pill').removeClass('active'); + $(this).toggleClass('active'); + $('#accessible').attr({href : 'css/metricsgraphics-demo-accessible.css'}); + + return false; + }); + } + + // replace all SVG images with inline SVG + // http://stackoverflow.com/questions/11978995/how-to-change-color-of-svg + // -image-using-css-jquery-svg-image-replacement + $('img.svg').each(function() { + var $img = jQuery(this); + var imgID = $img.attr('id'); + var imgClass = $img.attr('class'); + var imgURL = $img.attr('src'); + + $.get(imgURL, function(data) { + // Get the SVG tag, ignore the rest + var $svg = jQuery(data).find('svg'); + + // Add replaced image's ID to the new SVG + if (typeof imgID !== 'undefined') { + $svg = $svg.attr('id', imgID); + } + // Add replaced image's classes to the new SVG + if (typeof imgClass !== 'undefined') { + $svg = $svg.attr('class', imgClass + ' replaced-svg'); + } + + // Remove any invalid XML tags as per http://validator.w3.org + $svg = $svg.removeAttr('xmlns:a'); + + // Replace image with new SVG + $img.replaceWith($svg); + + }, 'xml'); + }); +})(); |