/** * This file is part of Qunee for HTML5. * Copyright (c) 2015 by qunee.com **/ var graphs = { clickAndLoad: { draw: function(g){ g.fillStyle = '#777'; g.translate(100, 20); g.font = 'lighter 18px "Open Sans", "Helvetica Neue", Arial, sans-serif'; g.textAlign = "center"; g.fillText('Click', 0, 0); g.fillText('Load Demo', 0, 20); g.strokeStyle = '#999'; g.moveTo(-8, 30); g.lineTo(0, 35); g.lineTo(8, 30); g.lineWidth = 1; g.stroke(); } }, group_cloud: { draw: function(ctx) { ctx.save(); ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(595.28,0); ctx.lineTo(595.28,841.89); ctx.lineTo(0,841.89); ctx.closePath(); ctx.clip(); ctx.strokeStyle = 'rgba(0,0,0,0)'; ctx.lineCap = 'butt'; ctx.lineJoin = 'miter'; ctx.miterLimit = 4; ctx.save(); ctx.fillStyle = "rgba(255,255,255,0.8)"; ctx.strokeStyle = "#888"; ctx.miterLimit = 10; ctx.beginPath(); ctx.moveTo(19.411,28.528); ctx.bezierCurveTo(19.411,28.528,17.749000000000002,21.104,24.065,16.781999999999996); ctx.bezierCurveTo(30.381,12.459999999999997,37.252,15.229999999999997,37.252,15.229999999999997); ctx.bezierCurveTo(37.252,15.229999999999997,43.125,8.581999999999997,52.987,8.470999999999997); ctx.bezierCurveTo(62.849000000000004,8.359999999999996,69.054,13.900999999999996,70.384,15.894999999999996); ctx.bezierCurveTo(70.384,15.894999999999996,76.733,13.446999999999996,81.609,19.097999999999995); ctx.bezierCurveTo(86.029,24.220999999999997,82.463,28.526999999999994,82.463,28.526999999999994); ctx.bezierCurveTo(82.463,28.526999999999994,88.942,29.144999999999992,89.00099999999999,35.507999999999996); ctx.bezierCurveTo(89.04599999999999,40.382999999999996,84.78999999999999,42.04599999999999,84.78999999999999,42.04599999999999); ctx.bezierCurveTo(84.78999999999999,42.04599999999999,87.728,46.89999999999999,84.62499999999999,52.88399999999999); ctx.bezierCurveTo(82.22799999999998,57.507999999999996,75.70399999999998,60.10799999999999,68.94399999999999,58.888999999999996); ctx.bezierCurveTo(68.94399999999999,58.888999999999996,65.39799999999998,65.87899999999999,51.76799999999999,64.88199999999999); ctx.bezierCurveTo(38.137999999999984,63.88499999999999,35.36799999999999,56.45099999999999,35.36799999999999,56.45099999999999); ctx.bezierCurveTo(35.36799999999999,56.45099999999999,30.270999999999987,59.663999999999994,23.511999999999986,56.45099999999999); ctx.bezierCurveTo(18.722999999999985,54.17399999999999,15.754999999999987,49.57999999999999,16.641999999999985,44.92699999999999); ctx.bezierCurveTo(16.641999999999985,44.92699999999999,9.801999999999985,42.48899999999999,11.987999999999985,34.39999999999999); ctx.bezierCurveTo(13.354,29.342,19.411,28.528,19.411,28.528); ctx.closePath(); ctx.lineWidth = 0.7; ctx.fill(); ctx.stroke(); ctx.restore(); ctx.restore(); } }, skype: { name: "Skype", draw: function(ctx){ ctx.save(); ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(40,0); ctx.lineTo(40,40); ctx.lineTo(0,40); ctx.closePath(); ctx.clip(); ctx.strokeStyle = 'rgba(0,0,0,0)'; ctx.lineCap = 'butt'; ctx.lineJoin = 'miter'; ctx.miterLimit = 4; ctx.save(); ctx.restore(); ctx.save(); ctx.fillStyle = "rgba(0, 0, 0, 0)"; ctx.strokeStyle = "#ffffff"; ctx.lineWidth = 3; ctx.lineJoin = "round"; ctx.transform(1,0,0,1,4,4); ctx.globalAlpha = 0; ctx.beginPath(); ctx.moveTo(28.777,18.438); ctx.bezierCurveTo(28.986,17.49,29.095000000000002,16.503999999999998,29.095000000000002,15.494); ctx.bezierCurveTo(29.095000000000002,7.9159999999999995,22.951,1.7720000000000002,15.371000000000002,1.7720000000000002); ctx.bezierCurveTo(14.572000000000003,1.7720000000000002,13.787000000000003,1.8410000000000002,13.025000000000002,1.9720000000000002); ctx.bezierCurveTo(11.801,1.199,10.35,0.75,8.793,0.75); ctx.bezierCurveTo(4.398,0.75,0.8349999999999991,4.311999999999999,0.8349999999999991,8.708); ctx.bezierCurveTo(0.8349999999999991,10.178,1.233999999999999,11.553,1.9289999999999992,12.732); ctx.bezierCurveTo(1.745999999999999,13.625,1.6519999999999992,14.546,1.6519999999999992,15.491999999999999); ctx.bezierCurveTo(1.6519999999999992,23.072,7.795999999999999,29.215,15.373999999999999,29.215); ctx.bezierCurveTo(16.232999999999997,29.215,17.073,29.137,17.889,28.985); ctx.bezierCurveTo(19.008,29.589,20.288,29.93,21.651,29.93); ctx.bezierCurveTo(26.046,29.93,29.608,26.368,29.608,21.971); ctx.bezierCurveTo(29.605,20.701,29.309,19.502,28.777,18.438); ctx.closePath(); ctx.moveTo(22.412,22.051); ctx.bezierCurveTo(21.776999999999997,22.948999999999998,20.839,23.659999999999997,19.622999999999998,24.165999999999997); ctx.bezierCurveTo(18.419999999999998,24.665999999999997,16.976999999999997,24.919999999999998,15.335999999999999,24.919999999999998); ctx.bezierCurveTo(13.364999999999998,24.919999999999998,11.711999999999998,24.573999999999998,10.421999999999999,23.889); ctx.bezierCurveTo(9.5,23.391,8.74,22.717,8.163,21.885); ctx.bezierCurveTo(7.58,21.043000000000003,7.284000000000001,20.209000000000003,7.284000000000001,19.406000000000002); ctx.bezierCurveTo(7.284000000000001,18.903000000000002,7.476000000000001,18.467000000000002,7.857000000000001,18.110000000000003); ctx.bezierCurveTo(8.232000000000001,17.756000000000004,8.714,17.578000000000003,9.289000000000001,17.578000000000003); ctx.bezierCurveTo(9.760000000000002,17.578000000000003,10.167000000000002,17.719,10.498000000000001,18.000000000000004); ctx.bezierCurveTo(10.813,18.269000000000002,11.084000000000001,18.662000000000003,11.303,19.174000000000003); ctx.bezierCurveTo(11.545000000000002,19.732000000000003,11.811,20.201000000000004,12.091000000000001,20.571); ctx.bezierCurveTo(12.360000000000001,20.926000000000002,12.747000000000002,21.227,13.242,21.461000000000002); ctx.bezierCurveTo(13.739,21.696,14.41,21.815,15.234000000000002,21.815); ctx.bezierCurveTo(16.369000000000003,21.815,17.298000000000002,21.574,17.998,21.094); ctx.bezierCurveTo(18.682000000000002,20.629,19.014000000000003,20.069000000000003,19.014000000000003,19.383000000000003); ctx.bezierCurveTo(19.014000000000003,18.840000000000003,18.841000000000005,18.414,18.485000000000003,18.080000000000002); ctx.bezierCurveTo(18.112000000000002,17.732000000000003,17.620000000000005,17.459000000000003,17.020000000000003,17.273000000000003); ctx.bezierCurveTo(16.397000000000002,17.078000000000003,15.550000000000002,16.869000000000003,14.502000000000002,16.650000000000002); ctx.bezierCurveTo(13.078000000000003,16.344,11.868000000000002,15.982000000000003,10.906000000000002,15.574000000000002); ctx.bezierCurveTo(9.922000000000002,15.155000000000001,9.129000000000003,14.574000000000002,8.549000000000003,13.847000000000001); ctx.bezierCurveTo(7.959000000000003,13.111,7.660000000000003,12.185000000000002,7.660000000000003,11.097000000000001); ctx.bezierCurveTo(7.660000000000003,10.061000000000002,7.974000000000003,9.126000000000001,8.593000000000004,8.321000000000002); ctx.bezierCurveTo(9.206000000000003,7.521000000000002,10.103000000000003,6.8980000000000015,11.256000000000004,6.472000000000001); ctx.bezierCurveTo(12.395000000000003,6.050000000000002,13.750000000000004,5.8370000000000015,15.283000000000005,5.8370000000000015); ctx.bezierCurveTo(16.508000000000006,5.8370000000000015,17.586000000000006,5.9780000000000015,18.484000000000005,6.258000000000002); ctx.bezierCurveTo(19.388000000000005,6.540000000000002,20.152000000000005,6.920000000000002,20.751000000000005,7.388000000000002); ctx.bezierCurveTo(21.355000000000004,7.860000000000001,21.805000000000003,8.365000000000002,22.086000000000006,8.888000000000002); ctx.bezierCurveTo(22.370000000000005,9.417000000000002,22.516000000000005,9.945000000000002,22.516000000000005,10.453000000000001); ctx.bezierCurveTo(22.516000000000005,10.943000000000001,22.327000000000005,11.39,21.953000000000007,11.777000000000001); ctx.bezierCurveTo(21.578000000000007,12.168000000000001,21.102000000000007,12.366000000000001,20.545000000000005,12.366000000000001); ctx.bezierCurveTo(20.036000000000005,12.366000000000001,19.640000000000004,12.242,19.362000000000005,11.997000000000002); ctx.bezierCurveTo(19.104000000000006,11.770000000000001,18.839000000000006,11.417000000000002,18.543000000000006,10.907000000000002); ctx.bezierCurveTo(18.201000000000008,10.257000000000001,17.787000000000006,9.745000000000001,17.314000000000007,9.384000000000002); ctx.bezierCurveTo(16.851000000000006,9.033000000000001,16.082000000000008,8.855000000000002,15.022000000000007,8.855000000000002); ctx.bezierCurveTo(14.038000000000007,8.855000000000002,13.238000000000007,9.052000000000001,12.643000000000008,9.443000000000001); ctx.bezierCurveTo(12.071000000000009,9.818000000000001,11.793000000000008,10.248000000000001,11.793000000000008,10.757000000000001); ctx.bezierCurveTo(11.793000000000008,11.069,11.883000000000008,11.331000000000001,12.066000000000008,11.556000000000001); ctx.bezierCurveTo(12.261000000000008,11.794,12.537000000000008,12.003,12.884000000000007,12.177000000000001); ctx.bezierCurveTo(13.244000000000007,12.359000000000002,13.616000000000007,12.503000000000002,13.988000000000007,12.606000000000002); ctx.bezierCurveTo(14.370000000000006,12.712000000000002,15.009000000000007,12.869000000000002,15.887000000000008,13.072000000000001); ctx.bezierCurveTo(16.997000000000007,13.31,18.018000000000008,13.578000000000001,18.921000000000006,13.865); ctx.bezierCurveTo(19.834000000000007,14.158,20.624000000000006,14.519,21.269000000000005,14.937000000000001); ctx.bezierCurveTo(21.925000000000004,15.366000000000001,22.447000000000006,15.916,22.816000000000006,16.572000000000003); ctx.bezierCurveTo(23.185000000000006,17.230000000000004,23.374000000000006,18.043000000000003,23.374000000000006,18.988000000000003); ctx.bezierCurveTo(23.371,20.119,23.049,21.148,22.412,22.051); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#555555"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.transform(1,0,0,1,4,4); ctx.beginPath(); ctx.moveTo(28.777,18.438); ctx.bezierCurveTo(28.986,17.49,29.095000000000002,16.503999999999998,29.095000000000002,15.494); ctx.bezierCurveTo(29.095000000000002,7.9159999999999995,22.951,1.7720000000000002,15.371000000000002,1.7720000000000002); ctx.bezierCurveTo(14.572000000000003,1.7720000000000002,13.787000000000003,1.8410000000000002,13.025000000000002,1.9720000000000002); ctx.bezierCurveTo(11.801,1.199,10.35,0.75,8.793,0.75); ctx.bezierCurveTo(4.398,0.75,0.8349999999999991,4.311999999999999,0.8349999999999991,8.708); ctx.bezierCurveTo(0.8349999999999991,10.178,1.233999999999999,11.553,1.9289999999999992,12.732); ctx.bezierCurveTo(1.745999999999999,13.625,1.6519999999999992,14.546,1.6519999999999992,15.491999999999999); ctx.bezierCurveTo(1.6519999999999992,23.072,7.795999999999999,29.215,15.373999999999999,29.215); ctx.bezierCurveTo(16.232999999999997,29.215,17.073,29.137,17.889,28.985); ctx.bezierCurveTo(19.008,29.589,20.288,29.93,21.651,29.93); ctx.bezierCurveTo(26.046,29.93,29.608,26.368,29.608,21.971); ctx.bezierCurveTo(29.605,20.701,29.309,19.502,28.777,18.438); ctx.closePath(); ctx.moveTo(22.412,22.051); ctx.bezierCurveTo(21.776999999999997,22.948999999999998,20.839,23.659999999999997,19.622999999999998,24.165999999999997); ctx.bezierCurveTo(18.419999999999998,24.665999999999997,16.976999999999997,24.919999999999998,15.335999999999999,24.919999999999998); ctx.bezierCurveTo(13.364999999999998,24.919999999999998,11.711999999999998,24.573999999999998,10.421999999999999,23.889); ctx.bezierCurveTo(9.5,23.391,8.74,22.717,8.163,21.885); ctx.bezierCurveTo(7.58,21.043000000000003,7.284000000000001,20.209000000000003,7.284000000000001,19.406000000000002); ctx.bezierCurveTo(7.284000000000001,18.903000000000002,7.476000000000001,18.467000000000002,7.857000000000001,18.110000000000003); ctx.bezierCurveTo(8.232000000000001,17.756000000000004,8.714,17.578000000000003,9.289000000000001,17.578000000000003); ctx.bezierCurveTo(9.760000000000002,17.578000000000003,10.167000000000002,17.719,10.498000000000001,18.000000000000004); ctx.bezierCurveTo(10.813,18.269000000000002,11.084000000000001,18.662000000000003,11.303,19.174000000000003); ctx.bezierCurveTo(11.545000000000002,19.732000000000003,11.811,20.201000000000004,12.091000000000001,20.571); ctx.bezierCurveTo(12.360000000000001,20.926000000000002,12.747000000000002,21.227,13.242,21.461000000000002); ctx.bezierCurveTo(13.739,21.696,14.41,21.815,15.234000000000002,21.815); ctx.bezierCurveTo(16.369000000000003,21.815,17.298000000000002,21.574,17.998,21.094); ctx.bezierCurveTo(18.682000000000002,20.629,19.014000000000003,20.069000000000003,19.014000000000003,19.383000000000003); ctx.bezierCurveTo(19.014000000000003,18.840000000000003,18.841000000000005,18.414,18.485000000000003,18.080000000000002); ctx.bezierCurveTo(18.112000000000002,17.732000000000003,17.620000000000005,17.459000000000003,17.020000000000003,17.273000000000003); ctx.bezierCurveTo(16.397000000000002,17.078000000000003,15.550000000000002,16.869000000000003,14.502000000000002,16.650000000000002); ctx.bezierCurveTo(13.078000000000003,16.344,11.868000000000002,15.982000000000003,10.906000000000002,15.574000000000002); ctx.bezierCurveTo(9.922000000000002,15.155000000000001,9.129000000000003,14.574000000000002,8.549000000000003,13.847000000000001); ctx.bezierCurveTo(7.959000000000003,13.111,7.660000000000003,12.185000000000002,7.660000000000003,11.097000000000001); ctx.bezierCurveTo(7.660000000000003,10.061000000000002,7.974000000000003,9.126000000000001,8.593000000000004,8.321000000000002); ctx.bezierCurveTo(9.206000000000003,7.521000000000002,10.103000000000003,6.8980000000000015,11.256000000000004,6.472000000000001); ctx.bezierCurveTo(12.395000000000003,6.050000000000002,13.750000000000004,5.8370000000000015,15.283000000000005,5.8370000000000015); ctx.bezierCurveTo(16.508000000000006,5.8370000000000015,17.586000000000006,5.9780000000000015,18.484000000000005,6.258000000000002); ctx.bezierCurveTo(19.388000000000005,6.540000000000002,20.152000000000005,6.920000000000002,20.751000000000005,7.388000000000002); ctx.bezierCurveTo(21.355000000000004,7.860000000000001,21.805000000000003,8.365000000000002,22.086000000000006,8.888000000000002); ctx.bezierCurveTo(22.370000000000005,9.417000000000002,22.516000000000005,9.945000000000002,22.516000000000005,10.453000000000001); ctx.bezierCurveTo(22.516000000000005,10.943000000000001,22.327000000000005,11.39,21.953000000000007,11.777000000000001); ctx.bezierCurveTo(21.578000000000007,12.168000000000001,21.102000000000007,12.366000000000001,20.545000000000005,12.366000000000001); ctx.bezierCurveTo(20.036000000000005,12.366000000000001,19.640000000000004,12.242,19.362000000000005,11.997000000000002); ctx.bezierCurveTo(19.104000000000006,11.770000000000001,18.839000000000006,11.417000000000002,18.543000000000006,10.907000000000002); ctx.bezierCurveTo(18.201000000000008,10.257000000000001,17.787000000000006,9.745000000000001,17.314000000000007,9.384000000000002); ctx.bezierCurveTo(16.851000000000006,9.033000000000001,16.082000000000008,8.855000000000002,15.022000000000007,8.855000000000002); ctx.bezierCurveTo(14.038000000000007,8.855000000000002,13.238000000000007,9.052000000000001,12.643000000000008,9.443000000000001); ctx.bezierCurveTo(12.071000000000009,9.818000000000001,11.793000000000008,10.248000000000001,11.793000000000008,10.757000000000001); ctx.bezierCurveTo(11.793000000000008,11.069,11.883000000000008,11.331000000000001,12.066000000000008,11.556000000000001); ctx.bezierCurveTo(12.261000000000008,11.794,12.537000000000008,12.003,12.884000000000007,12.177000000000001); ctx.bezierCurveTo(13.244000000000007,12.359000000000002,13.616000000000007,12.503000000000002,13.988000000000007,12.606000000000002); ctx.bezierCurveTo(14.370000000000006,12.712000000000002,15.009000000000007,12.869000000000002,15.887000000000008,13.072000000000001); ctx.bezierCurveTo(16.997000000000007,13.31,18.018000000000008,13.578000000000001,18.921000000000006,13.865); ctx.bezierCurveTo(19.834000000000007,14.158,20.624000000000006,14.519,21.269000000000005,14.937000000000001); ctx.bezierCurveTo(21.925000000000004,15.366000000000001,22.447000000000006,15.916,22.816000000000006,16.572000000000003); ctx.bezierCurveTo(23.185000000000006,17.230000000000004,23.374000000000006,18.043000000000003,23.374000000000006,18.988000000000003); ctx.bezierCurveTo(23.371,20.119,23.049,21.148,22.412,22.051); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#000000"; ctx.strokeStyle = "#000000"; ctx.globalAlpha = 0; ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(32,0); ctx.quadraticCurveTo(32,0,32,0); ctx.lineTo(32,32); ctx.quadraticCurveTo(32,32,32,32); ctx.lineTo(0,32); ctx.quadraticCurveTo(0,32,0,32); ctx.lineTo(0,0); ctx.quadraticCurveTo(0,0,0,0); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.restore(); } }, group: { name: "Group", draw: function(ctx){ ctx.save(); ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(40,0); ctx.lineTo(40,40); ctx.lineTo(0,40); ctx.closePath(); ctx.clip(); ctx.strokeStyle = 'rgba(0,0,0,0)'; ctx.lineCap = 'butt'; ctx.lineJoin = 'miter'; ctx.miterLimit = 4; ctx.save(); ctx.restore(); ctx.save(); ctx.fillStyle = "rgba(0, 0, 0, 0)"; ctx.strokeStyle = "#ffffff"; ctx.lineWidth = 3; ctx.lineJoin = "round"; ctx.transform(1,0,0,1,4,4); ctx.globalAlpha = 0; ctx.beginPath(); ctx.moveTo(21.066,20.667); ctx.bezierCurveTo(22.293,19.985000000000003,22.134,17.356,20.712,14.793000000000003); ctx.bezierCurveTo(20.101,13.689000000000004,19.353,12.795000000000003,18.603,12.170000000000002); ctx.bezierCurveTo(17.728,12.811000000000002,16.662000000000003,13.201000000000002,15.501000000000001,13.201000000000002); ctx.bezierCurveTo(14.337000000000002,13.201000000000002,13.270000000000001,12.810000000000002,12.397000000000002,12.170000000000002); ctx.bezierCurveTo(11.647000000000002,12.795000000000002,10.899000000000003,13.689000000000002,10.286000000000001,14.793000000000003); ctx.bezierCurveTo(8.864,17.356,8.708000000000002,19.985000000000003,9.936000000000002,20.667); ctx.bezierCurveTo(10.485000000000001,20.979000000000003,11.063000000000002,20.745,11.659000000000002,20.171000000000003); ctx.bezierCurveTo(11.554000000000002,20.753000000000004,11.493000000000002,21.384000000000004,11.493000000000002,22.044000000000004); ctx.bezierCurveTo(11.493000000000002,24.982000000000003,12.632000000000001,27.356000000000005,14.036000000000001,27.356000000000005); ctx.bezierCurveTo(14.882000000000001,27.356000000000005,15.301000000000002,26.491000000000007,15.502,25.168000000000006); ctx.bezierCurveTo(15.702,26.482000000000006,16.122,27.356000000000005,16.963,27.356000000000005); ctx.bezierCurveTo(18.359,27.356000000000005,19.508000000000003,24.981000000000005,19.508000000000003,22.044000000000004); ctx.bezierCurveTo(19.508000000000003,21.384000000000004,19.446,20.753000000000004,19.340000000000003,20.171000000000003); ctx.bezierCurveTo(19.939,20.745,20.516,20.983,21.066,20.667); ctx.closePath(); ctx.moveTo(15.5,12.201); ctx.bezierCurveTo(17.861,12.201,19.777,10.285,19.777,7.922000000000001); ctx.bezierCurveTo(19.777,5.559000000000001,17.861,3.644,15.5,3.644); ctx.bezierCurveTo(13.137,3.644,11.219999999999999,5.5600000000000005,11.219999999999999,7.923); ctx.bezierCurveTo(11.219999999999999,10.286,13.137,12.201,15.5,12.201); ctx.closePath(); ctx.moveTo(24.094,14.914); ctx.bezierCurveTo(26.032,14.914,27.606,13.341,27.606,11.401); ctx.bezierCurveTo(27.606,9.462,26.033,7.888,24.094,7.888); ctx.bezierCurveTo(22.154,7.888,20.581000000000003,9.461,20.581000000000003,11.401); ctx.bezierCurveTo(20.581,13.341,22.153,14.914,24.094,14.914); ctx.closePath(); ctx.moveTo(28.374,17.043); ctx.bezierCurveTo(27.872,16.136,27.258,15.402,26.642,14.889); ctx.bezierCurveTo(25.924,15.415,25.048,15.735,24.096,15.735); ctx.bezierCurveTo(23.34,15.735,22.637,15.527999999999999,22.02,15.184999999999999); ctx.bezierCurveTo(22.516,16.278,22.823,17.384999999999998,22.881,18.375); ctx.bezierCurveTo(22.974,19.891,22.5,21.016,21.552,21.54); ctx.bezierCurveTo(21.348,21.657,21.126,21.723,20.899,21.764); ctx.bezierCurveTo(20.843,22.156,20.804000000000002,22.564999999999998,20.804000000000002,22.995); ctx.bezierCurveTo(20.804000000000002,25.407,21.739,27.356,22.892000000000003,27.356); ctx.bezierCurveTo(23.586000000000002,27.356,23.931000000000004,26.646,24.096000000000004,25.560000000000002); ctx.bezierCurveTo(24.259000000000004,26.639000000000003,24.604000000000003,27.356,25.295000000000005,27.356); ctx.bezierCurveTo(26.441000000000006,27.356,27.385000000000005,25.406000000000002,27.385000000000005,22.995); ctx.bezierCurveTo(27.385000000000005,22.453,27.333000000000006,21.935000000000002,27.246000000000006,21.457); ctx.bezierCurveTo(27.738000000000007,21.929000000000002,28.212000000000007,22.124000000000002,28.664000000000005,21.864); ctx.bezierCurveTo(29.671,21.305,29.541,19.146,28.374,17.043); ctx.closePath(); ctx.moveTo(6.906,14.914); ctx.bezierCurveTo(8.844999999999999,14.914,10.418,13.341,10.418,11.401); ctx.bezierCurveTo(10.418,9.462,8.844999999999999,7.888,6.905999999999999,7.888); ctx.bezierCurveTo(4.965999999999999,7.888,3.391999999999999,9.461,3.391999999999999,11.401); ctx.bezierCurveTo(3.392,13.341,4.966,14.914,6.906,14.914); ctx.closePath(); ctx.moveTo(9.441,21.536); ctx.bezierCurveTo(7.848000000000001,20.651,7.702000000000001,18.012,8.984,15.182000000000002); ctx.bezierCurveTo(8.365,15.528000000000002,7.662,15.735000000000003,6.906000000000001,15.735000000000003); ctx.bezierCurveTo(5.950000000000001,15.735000000000003,5.074000000000001,15.414000000000003,4.357000000000001,14.889000000000003); ctx.bezierCurveTo(3.741000000000001,15.402000000000003,3.128000000000001,16.136000000000003,2.624000000000001,17.043000000000003); ctx.bezierCurveTo(1.457000000000001,19.147000000000002,1.329000000000001,21.305000000000003,2.337000000000001,21.864000000000004); ctx.bezierCurveTo(2.788000000000001,22.121000000000006,3.2620000000000013,21.928000000000004,3.7510000000000012,21.457000000000004); ctx.bezierCurveTo(3.6650000000000014,21.936000000000003,3.615000000000001,22.453000000000003,3.615000000000001,22.995000000000005); ctx.bezierCurveTo(3.615000000000001,25.407000000000004,4.550000000000001,27.356000000000005,5.703000000000001,27.356000000000005); ctx.bezierCurveTo(6.397000000000001,27.356000000000005,6.742000000000001,26.646000000000004,6.907000000000001,25.560000000000006); ctx.bezierCurveTo(7.072000000000001,26.639000000000006,7.416000000000001,27.356000000000005,8.108,27.356000000000005); ctx.bezierCurveTo(9.254000000000001,27.356000000000005,10.197000000000001,25.406000000000006,10.197000000000001,22.995000000000005); ctx.bezierCurveTo(10.197000000000001,22.563000000000006,10.157000000000002,22.154000000000003,10.100000000000001,21.762000000000004); ctx.bezierCurveTo(9.874,21.721,9.651,21.656,9.441,21.536); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#555555"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.transform(1,0,0,1,4,4); ctx.beginPath(); ctx.moveTo(21.066,20.667); ctx.bezierCurveTo(22.293,19.985000000000003,22.134,17.356,20.712,14.793000000000003); ctx.bezierCurveTo(20.101,13.689000000000004,19.353,12.795000000000003,18.603,12.170000000000002); ctx.bezierCurveTo(17.728,12.811000000000002,16.662000000000003,13.201000000000002,15.501000000000001,13.201000000000002); ctx.bezierCurveTo(14.337000000000002,13.201000000000002,13.270000000000001,12.810000000000002,12.397000000000002,12.170000000000002); ctx.bezierCurveTo(11.647000000000002,12.795000000000002,10.899000000000003,13.689000000000002,10.286000000000001,14.793000000000003); ctx.bezierCurveTo(8.864,17.356,8.708000000000002,19.985000000000003,9.936000000000002,20.667); ctx.bezierCurveTo(10.485000000000001,20.979000000000003,11.063000000000002,20.745,11.659000000000002,20.171000000000003); ctx.bezierCurveTo(11.554000000000002,20.753000000000004,11.493000000000002,21.384000000000004,11.493000000000002,22.044000000000004); ctx.bezierCurveTo(11.493000000000002,24.982000000000003,12.632000000000001,27.356000000000005,14.036000000000001,27.356000000000005); ctx.bezierCurveTo(14.882000000000001,27.356000000000005,15.301000000000002,26.491000000000007,15.502,25.168000000000006); ctx.bezierCurveTo(15.702,26.482000000000006,16.122,27.356000000000005,16.963,27.356000000000005); ctx.bezierCurveTo(18.359,27.356000000000005,19.508000000000003,24.981000000000005,19.508000000000003,22.044000000000004); ctx.bezierCurveTo(19.508000000000003,21.384000000000004,19.446,20.753000000000004,19.340000000000003,20.171000000000003); ctx.bezierCurveTo(19.939,20.745,20.516,20.983,21.066,20.667); ctx.closePath(); ctx.moveTo(15.5,12.201); ctx.bezierCurveTo(17.861,12.201,19.777,10.285,19.777,7.922000000000001); ctx.bezierCurveTo(19.777,5.559000000000001,17.861,3.644,15.5,3.644); ctx.bezierCurveTo(13.137,3.644,11.219999999999999,5.5600000000000005,11.219999999999999,7.923); ctx.bezierCurveTo(11.219999999999999,10.286,13.137,12.201,15.5,12.201); ctx.closePath(); ctx.moveTo(24.094,14.914); ctx.bezierCurveTo(26.032,14.914,27.606,13.341,27.606,11.401); ctx.bezierCurveTo(27.606,9.462,26.033,7.888,24.094,7.888); ctx.bezierCurveTo(22.154,7.888,20.581000000000003,9.461,20.581000000000003,11.401); ctx.bezierCurveTo(20.581,13.341,22.153,14.914,24.094,14.914); ctx.closePath(); ctx.moveTo(28.374,17.043); ctx.bezierCurveTo(27.872,16.136,27.258,15.402,26.642,14.889); ctx.bezierCurveTo(25.924,15.415,25.048,15.735,24.096,15.735); ctx.bezierCurveTo(23.34,15.735,22.637,15.527999999999999,22.02,15.184999999999999); ctx.bezierCurveTo(22.516,16.278,22.823,17.384999999999998,22.881,18.375); ctx.bezierCurveTo(22.974,19.891,22.5,21.016,21.552,21.54); ctx.bezierCurveTo(21.348,21.657,21.126,21.723,20.899,21.764); ctx.bezierCurveTo(20.843,22.156,20.804000000000002,22.564999999999998,20.804000000000002,22.995); ctx.bezierCurveTo(20.804000000000002,25.407,21.739,27.356,22.892000000000003,27.356); ctx.bezierCurveTo(23.586000000000002,27.356,23.931000000000004,26.646,24.096000000000004,25.560000000000002); ctx.bezierCurveTo(24.259000000000004,26.639000000000003,24.604000000000003,27.356,25.295000000000005,27.356); ctx.bezierCurveTo(26.441000000000006,27.356,27.385000000000005,25.406000000000002,27.385000000000005,22.995); ctx.bezierCurveTo(27.385000000000005,22.453,27.333000000000006,21.935000000000002,27.246000000000006,21.457); ctx.bezierCurveTo(27.738000000000007,21.929000000000002,28.212000000000007,22.124000000000002,28.664000000000005,21.864); ctx.bezierCurveTo(29.671,21.305,29.541,19.146,28.374,17.043); ctx.closePath(); ctx.moveTo(6.906,14.914); ctx.bezierCurveTo(8.844999999999999,14.914,10.418,13.341,10.418,11.401); ctx.bezierCurveTo(10.418,9.462,8.844999999999999,7.888,6.905999999999999,7.888); ctx.bezierCurveTo(4.965999999999999,7.888,3.391999999999999,9.461,3.391999999999999,11.401); ctx.bezierCurveTo(3.392,13.341,4.966,14.914,6.906,14.914); ctx.closePath(); ctx.moveTo(9.441,21.536); ctx.bezierCurveTo(7.848000000000001,20.651,7.702000000000001,18.012,8.984,15.182000000000002); ctx.bezierCurveTo(8.365,15.528000000000002,7.662,15.735000000000003,6.906000000000001,15.735000000000003); ctx.bezierCurveTo(5.950000000000001,15.735000000000003,5.074000000000001,15.414000000000003,4.357000000000001,14.889000000000003); ctx.bezierCurveTo(3.741000000000001,15.402000000000003,3.128000000000001,16.136000000000003,2.624000000000001,17.043000000000003); ctx.bezierCurveTo(1.457000000000001,19.147000000000002,1.329000000000001,21.305000000000003,2.337000000000001,21.864000000000004); ctx.bezierCurveTo(2.788000000000001,22.121000000000006,3.2620000000000013,21.928000000000004,3.7510000000000012,21.457000000000004); ctx.bezierCurveTo(3.6650000000000014,21.936000000000003,3.615000000000001,22.453000000000003,3.615000000000001,22.995000000000005); ctx.bezierCurveTo(3.615000000000001,25.407000000000004,4.550000000000001,27.356000000000005,5.703000000000001,27.356000000000005); ctx.bezierCurveTo(6.397000000000001,27.356000000000005,6.742000000000001,26.646000000000004,6.907000000000001,25.560000000000006); ctx.bezierCurveTo(7.072000000000001,26.639000000000006,7.416000000000001,27.356000000000005,8.108,27.356000000000005); ctx.bezierCurveTo(9.254000000000001,27.356000000000005,10.197000000000001,25.406000000000006,10.197000000000001,22.995000000000005); ctx.bezierCurveTo(10.197000000000001,22.563000000000006,10.157000000000002,22.154000000000003,10.100000000000001,21.762000000000004); ctx.bezierCurveTo(9.874,21.721,9.651,21.656,9.441,21.536); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#000000"; ctx.strokeStyle = "#000000"; ctx.globalAlpha = 0; ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(32,0); ctx.quadraticCurveTo(32,0,32,0); ctx.lineTo(32,32); ctx.quadraticCurveTo(32,32,32,32); ctx.lineTo(0,32); ctx.quadraticCurveTo(0,32,0,32); ctx.lineTo(0,0); ctx.quadraticCurveTo(0,0,0,0); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.restore(); } }, twitter : { name: "Twitter", draw : function(ctx) { ctx.save(); ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(40,0); ctx.lineTo(40,40); ctx.lineTo(0,40); ctx.closePath(); ctx.clip(); ctx.strokeStyle = 'rgba(0,0,0,0)'; ctx.lineCap = 'butt'; ctx.lineJoin = 'miter'; ctx.miterLimit = 4; ctx.save(); ctx.restore(); ctx.save(); ctx.fillStyle = "rgba(0, 0, 0, 0)"; ctx.strokeStyle = "#ffffff"; ctx.lineWidth = 3; ctx.lineJoin = "round"; ctx.transform(1,0,0,1,4,4); ctx.globalAlpha = 0; ctx.beginPath(); ctx.moveTo(26.492,9.493); ctx.bezierCurveTo(25.721,9.836,24.89,10.067,24.019000000000002,10.171000000000001); ctx.bezierCurveTo(24.909000000000002,9.638000000000002,25.581000000000003,8.795000000000002,25.912000000000003,7.7890000000000015); ctx.bezierCurveTo(25.080000000000002,8.282000000000002,24.159000000000002,8.641000000000002,23.178000000000004,8.833000000000002); ctx.bezierCurveTo(22.393000000000004,7.996000000000002,21.276000000000003,7.474000000000002,20.036000000000005,7.474000000000002); ctx.bezierCurveTo(17.659000000000006,7.474000000000002,15.730000000000004,9.402000000000001,15.730000000000004,11.780000000000001); ctx.bezierCurveTo(15.730000000000004,12.117,15.769000000000004,12.446000000000002,15.842000000000004,12.759); ctx.bezierCurveTo(12.264000000000005,12.579,9.092000000000004,10.865,6.9680000000000035,8.260000000000002); ctx.bezierCurveTo(6.597000000000003,8.896,6.385000000000003,9.635000000000002,6.385000000000003,10.425); ctx.bezierCurveTo(6.385000000000003,11.919,7.145000000000003,13.237,8.300000000000004,14.008000000000001); ctx.bezierCurveTo(7.594000000000005,13.986,6.930000000000004,13.792000000000002,6.350000000000004,13.47); ctx.bezierCurveTo(6.350000000000004,13.488000000000001,6.350000000000004,13.506,6.350000000000004,13.523000000000001); ctx.bezierCurveTo(6.350000000000004,15.609000000000002,7.834000000000004,17.352,9.804000000000004,17.745); ctx.bezierCurveTo(9.443000000000003,17.844,9.063000000000004,17.892,8.670000000000003,17.892); ctx.bezierCurveTo(8.392000000000003,17.892,8.123000000000003,17.869,7.860000000000003,17.816); ctx.bezierCurveTo(8.408000000000003,19.526999999999997,9.998000000000003,20.771,11.882000000000003,20.805999999999997); ctx.bezierCurveTo(10.408000000000003,21.951999999999998,8.552000000000003,22.647999999999996,6.535000000000003,22.647999999999996); ctx.bezierCurveTo(6.187000000000003,22.647999999999996,5.845000000000002,22.626999999999995,5.508000000000003,22.585999999999995); ctx.bezierCurveTo(7.413000000000003,23.810999999999996,9.676000000000002,24.523999999999994,12.108000000000002,24.523999999999994); ctx.bezierCurveTo(20.027,24.523999999999994,24.356,17.961999999999993,24.356,12.273999999999994); ctx.bezierCurveTo(24.356,12.086999999999994,24.354000000000003,11.901999999999994,24.346,11.716999999999993); ctx.bezierCurveTo(25.186,11.115,25.915,10.356,26.492,9.493); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#555555"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.transform(1,0,0,1,4,4); ctx.beginPath(); ctx.moveTo(26.492,9.493); ctx.bezierCurveTo(25.721,9.836,24.89,10.067,24.019000000000002,10.171000000000001); ctx.bezierCurveTo(24.909000000000002,9.638000000000002,25.581000000000003,8.795000000000002,25.912000000000003,7.7890000000000015); ctx.bezierCurveTo(25.080000000000002,8.282000000000002,24.159000000000002,8.641000000000002,23.178000000000004,8.833000000000002); ctx.bezierCurveTo(22.393000000000004,7.996000000000002,21.276000000000003,7.474000000000002,20.036000000000005,7.474000000000002); ctx.bezierCurveTo(17.659000000000006,7.474000000000002,15.730000000000004,9.402000000000001,15.730000000000004,11.780000000000001); ctx.bezierCurveTo(15.730000000000004,12.117,15.769000000000004,12.446000000000002,15.842000000000004,12.759); ctx.bezierCurveTo(12.264000000000005,12.579,9.092000000000004,10.865,6.9680000000000035,8.260000000000002); ctx.bezierCurveTo(6.597000000000003,8.896,6.385000000000003,9.635000000000002,6.385000000000003,10.425); ctx.bezierCurveTo(6.385000000000003,11.919,7.145000000000003,13.237,8.300000000000004,14.008000000000001); ctx.bezierCurveTo(7.594000000000005,13.986,6.930000000000004,13.792000000000002,6.350000000000004,13.47); ctx.bezierCurveTo(6.350000000000004,13.488000000000001,6.350000000000004,13.506,6.350000000000004,13.523000000000001); ctx.bezierCurveTo(6.350000000000004,15.609000000000002,7.834000000000004,17.352,9.804000000000004,17.745); ctx.bezierCurveTo(9.443000000000003,17.844,9.063000000000004,17.892,8.670000000000003,17.892); ctx.bezierCurveTo(8.392000000000003,17.892,8.123000000000003,17.869,7.860000000000003,17.816); ctx.bezierCurveTo(8.408000000000003,19.526999999999997,9.998000000000003,20.771,11.882000000000003,20.805999999999997); ctx.bezierCurveTo(10.408000000000003,21.951999999999998,8.552000000000003,22.647999999999996,6.535000000000003,22.647999999999996); ctx.bezierCurveTo(6.187000000000003,22.647999999999996,5.845000000000002,22.626999999999995,5.508000000000003,22.585999999999995); ctx.bezierCurveTo(7.413000000000003,23.810999999999996,9.676000000000002,24.523999999999994,12.108000000000002,24.523999999999994); ctx.bezierCurveTo(20.027,24.523999999999994,24.356,17.961999999999993,24.356,12.273999999999994); ctx.bezierCurveTo(24.356,12.086999999999994,24.354000000000003,11.901999999999994,24.346,11.716999999999993); ctx.bezierCurveTo(25.186,11.115,25.915,10.356,26.492,9.493); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#000000"; ctx.strokeStyle = "#000000"; ctx.globalAlpha = 0; ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(32,0); ctx.quadraticCurveTo(32,0,32,0); ctx.lineTo(32,32); ctx.quadraticCurveTo(32,32,32,32); ctx.lineTo(0,32); ctx.quadraticCurveTo(0,32,0,32); ctx.lineTo(0,0); ctx.quadraticCurveTo(0,0,0,0); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.restore(); } }, windows : { name: "Windows", draw : function(ctx) { ctx.save(); ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(40,0); ctx.lineTo(40,40); ctx.lineTo(0,40); ctx.closePath(); ctx.clip(); ctx.strokeStyle = 'rgba(0,0,0,0)'; ctx.lineCap = 'butt'; ctx.lineJoin = 'miter'; ctx.miterLimit = 4; ctx.save(); ctx.restore(); ctx.save(); ctx.fillStyle = "rgba(0, 0, 0, 0)"; ctx.strokeStyle = "#ffffff"; ctx.lineWidth = 3; ctx.lineJoin = "round"; ctx.transform(1,0,0,1,4,4); ctx.globalAlpha = 0; ctx.beginPath(); ctx.moveTo(20.023,17.484); ctx.bezierCurveTo(18.291,17.279000000000003,17.001,16.576,15.811,15.783000000000001); ctx.lineTo(15.811,15.783000000000001); ctx.lineTo(15.252,16.062); ctx.lineTo(12.674000000000001,24.986); ctx.lineTo(12.674000000000001,24.986); ctx.bezierCurveTo(13.891000000000002,25.791,15.579,26.693,17.356,26.900000000000002); ctx.bezierCurveTo(20.042,27.212000000000003,22.916,26.156000000000002,23.747,25.705000000000002); ctx.lineTo(26.364,16.644000000000002); ctx.lineTo(25.805,16.365000000000002); ctx.bezierCurveTo(25.805,16.365,23.193,17.857,20.023,17.484); ctx.closePath(); ctx.moveTo(14.424,14.825); ctx.bezierCurveTo(13.157,13.955,11.846,13.173,10.049,13.008999999999999); ctx.bezierCurveTo(9.731,12.979999999999999,9.421999999999999,12.966999999999999,9.123999999999999,12.966999999999999); ctx.bezierCurveTo(6.112999999999999,12.966999999999999,4.175999999999998,14.313999999999998,4.175999999999998,14.313999999999998); ctx.lineTo(1.6109999999999984,23.191); ctx.lineTo(1.6109999999999984,23.191); ctx.lineTo(2.1369999999999987,23.471999999999998); ctx.bezierCurveTo(3.1179999999999986,22.996,4.916999999999998,22.326999999999998,7.2269999999999985,22.488); ctx.bezierCurveTo(8.892,22.601,10.146999999999998,23.269,11.343999999999998,24.019); ctx.lineTo(11.850999999999997,23.758999999999997); ctx.lineTo(11.850999999999997,23.758999999999997); ctx.lineTo(14.424,14.825); ctx.closePath(); ctx.moveTo(10.201,12.094); ctx.bezierCurveTo(11.865,12.208,13.122,12.873999999999999,14.318000000000001,13.626999999999999); ctx.lineTo(14.827000000000002,13.366999999999999); ctx.lineTo(14.827000000000002,13.366999999999999); ctx.lineTo(17.4,4.431); ctx.bezierCurveTo(16.13,3.561,14.820999999999998,2.778,13.023,2.615); ctx.bezierCurveTo(12.705,2.5860000000000003,12.397,2.5730000000000004,12.099,2.5730000000000004); ctx.bezierCurveTo(9.088,2.573,7.15,3.92,7.15,3.92); ctx.lineTo(4.5840000000000005,12.798); ctx.lineTo(5.11,13.08); ctx.bezierCurveTo(6.092,12.604,7.891,11.936,10.201,12.094); ctx.closePath(); ctx.moveTo(28.779,5.971); ctx.lineTo(28.779,5.971); ctx.bezierCurveTo(28.779,5.972,26.17,7.463,23,7.09); ctx.bezierCurveTo(21.266,6.886,19.977,6.183,18.787,5.388999999999999); ctx.lineTo(18.227,5.67); ctx.lineTo(15.651,14.593); ctx.lineTo(15.651,14.593); ctx.bezierCurveTo(16.866,15.396,18.557,16.302,20.331,16.508); ctx.bezierCurveTo(23.018,16.82,25.889,15.763,26.723,15.311); ctx.lineTo(29.338,6.252000000000001); ctx.lineTo(28.779,5.971); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#555555"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.transform(1,0,0,1,4,4); ctx.beginPath(); ctx.moveTo(20.023,17.484); ctx.bezierCurveTo(18.291,17.279000000000003,17.001,16.576,15.811,15.783000000000001); ctx.lineTo(15.811,15.783000000000001); ctx.lineTo(15.252,16.062); ctx.lineTo(12.674000000000001,24.986); ctx.lineTo(12.674000000000001,24.986); ctx.bezierCurveTo(13.891000000000002,25.791,15.579,26.693,17.356,26.900000000000002); ctx.bezierCurveTo(20.042,27.212000000000003,22.916,26.156000000000002,23.747,25.705000000000002); ctx.lineTo(26.364,16.644000000000002); ctx.lineTo(25.805,16.365000000000002); ctx.bezierCurveTo(25.805,16.365,23.193,17.857,20.023,17.484); ctx.closePath(); ctx.moveTo(14.424,14.825); ctx.bezierCurveTo(13.157,13.955,11.846,13.173,10.049,13.008999999999999); ctx.bezierCurveTo(9.731,12.979999999999999,9.421999999999999,12.966999999999999,9.123999999999999,12.966999999999999); ctx.bezierCurveTo(6.112999999999999,12.966999999999999,4.175999999999998,14.313999999999998,4.175999999999998,14.313999999999998); ctx.lineTo(1.6109999999999984,23.191); ctx.lineTo(1.6109999999999984,23.191); ctx.lineTo(2.1369999999999987,23.471999999999998); ctx.bezierCurveTo(3.1179999999999986,22.996,4.916999999999998,22.326999999999998,7.2269999999999985,22.488); ctx.bezierCurveTo(8.892,22.601,10.146999999999998,23.269,11.343999999999998,24.019); ctx.lineTo(11.850999999999997,23.758999999999997); ctx.lineTo(11.850999999999997,23.758999999999997); ctx.lineTo(14.424,14.825); ctx.closePath(); ctx.moveTo(10.201,12.094); ctx.bezierCurveTo(11.865,12.208,13.122,12.873999999999999,14.318000000000001,13.626999999999999); ctx.lineTo(14.827000000000002,13.366999999999999); ctx.lineTo(14.827000000000002,13.366999999999999); ctx.lineTo(17.4,4.431); ctx.bezierCurveTo(16.13,3.561,14.820999999999998,2.778,13.023,2.615); ctx.bezierCurveTo(12.705,2.5860000000000003,12.397,2.5730000000000004,12.099,2.5730000000000004); ctx.bezierCurveTo(9.088,2.573,7.15,3.92,7.15,3.92); ctx.lineTo(4.5840000000000005,12.798); ctx.lineTo(5.11,13.08); ctx.bezierCurveTo(6.092,12.604,7.891,11.936,10.201,12.094); ctx.closePath(); ctx.moveTo(28.779,5.971); ctx.lineTo(28.779,5.971); ctx.bezierCurveTo(28.779,5.972,26.17,7.463,23,7.09); ctx.bezierCurveTo(21.266,6.886,19.977,6.183,18.787,5.388999999999999); ctx.lineTo(18.227,5.67); ctx.lineTo(15.651,14.593); ctx.lineTo(15.651,14.593); ctx.bezierCurveTo(16.866,15.396,18.557,16.302,20.331,16.508); ctx.bezierCurveTo(23.018,16.82,25.889,15.763,26.723,15.311); ctx.lineTo(29.338,6.252000000000001); ctx.lineTo(28.779,5.971); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#000000"; ctx.strokeStyle = "#000000"; ctx.globalAlpha = 0; ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(32,0); ctx.quadraticCurveTo(32,0,32,0); ctx.lineTo(32,32); ctx.quadraticCurveTo(32,32,32,32); ctx.lineTo(0,32); ctx.quadraticCurveTo(0,32,0,32); ctx.lineTo(0,0); ctx.quadraticCurveTo(0,0,0,0); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.restore(); } }, apple: { name: "Apple", draw: function(ctx){ ctx.save(); ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(40,0); ctx.lineTo(40,40); ctx.lineTo(0,40); ctx.closePath(); ctx.clip(); ctx.strokeStyle = 'rgba(0,0,0,0)'; ctx.lineCap = 'butt'; ctx.lineJoin = 'miter'; ctx.miterLimit = 4; ctx.save(); ctx.restore(); ctx.save(); ctx.fillStyle = "rgba(0, 0, 0, 0)"; ctx.strokeStyle = "#ffffff"; ctx.lineWidth = 3; ctx.lineJoin = "round"; ctx.transform(1,0,0,1,4,4); ctx.globalAlpha = 0; ctx.beginPath(); ctx.moveTo(24.32,10.85); ctx.bezierCurveTo(22.577,12.083,21.705,13.568999999999999,21.705,15.305); ctx.bezierCurveTo(21.705,17.384,22.782999999999998,18.978,24.936999999999998,20.091); ctx.bezierCurveTo(24.358999999999998,21.768,23.520999999999997,23.225,22.423,24.466); ctx.bezierCurveTo(21.325999999999997,25.707,20.325,26.328000000000003,19.418999999999997,26.328000000000003); ctx.bezierCurveTo(18.991999999999997,26.328000000000003,18.409999999999997,26.185000000000002,17.670999999999996,25.905000000000005); ctx.lineTo(17.316999999999997,25.767000000000003); ctx.bezierCurveTo(16.591999999999995,25.486000000000004,15.953999999999997,25.344000000000005,15.396999999999997,25.344000000000005); ctx.bezierCurveTo(14.871999999999996,25.344000000000005,14.296999999999997,25.454000000000004,13.671999999999997,25.675000000000004); ctx.lineTo(13.226999999999997,25.835000000000004); ctx.lineTo(12.666999999999996,26.064000000000004); ctx.bezierCurveTo(12.225999999999996,26.240000000000002,11.778999999999996,26.328000000000003,11.329999999999997,26.328000000000003); ctx.bezierCurveTo(10.270999999999997,26.328000000000003,9.101999999999997,25.456000000000003,7.822999999999997,23.712000000000003); ctx.bezierCurveTo(5.979999999999997,21.214000000000002,5.0589999999999975,18.491000000000003,5.0589999999999975,15.545000000000003); ctx.bezierCurveTo(5.0589999999999975,13.450000000000003,5.632999999999997,11.764000000000003,6.783999999999997,10.484000000000004); ctx.bezierCurveTo(7.932999999999997,9.205000000000004,9.456999999999997,8.564000000000004,11.351999999999997,8.564000000000004); ctx.bezierCurveTo(12.060999999999996,8.564000000000004,12.722999999999997,8.694000000000004,13.339999999999996,8.953000000000003); ctx.lineTo(13.762999999999996,9.125000000000004); ctx.lineTo(14.207999999999997,9.308000000000003); ctx.bezierCurveTo(14.603999999999997,9.475000000000003,14.923999999999996,9.559000000000003,15.166999999999996,9.559000000000003); ctx.bezierCurveTo(15.478999999999996,9.559000000000003,15.825999999999997,9.487000000000004,16.206999999999997,9.342000000000002); ctx.lineTo(16.788999999999998,9.113000000000003); ctx.lineTo(17.223999999999997,8.953000000000003); ctx.bezierCurveTo(17.916999999999998,8.702000000000004,18.682999999999996,8.576000000000002,19.520999999999997,8.576000000000002); ctx.bezierCurveTo(21.512,8.576,23.109,9.334,24.32,10.85); ctx.closePath(); ctx.moveTo(19.615,3.287); ctx.bezierCurveTo(19.636,3.554,19.648,3.76,19.648,3.904); ctx.bezierCurveTo(19.648,5.221,19.169,6.377,18.21,7.371); ctx.bezierCurveTo(17.251,8.365000000000002,16.135,8.861,14.863000000000001,8.861); ctx.bezierCurveTo(14.825000000000001,8.564,14.805000000000001,8.351,14.805000000000001,8.222000000000001); ctx.bezierCurveTo(14.805000000000001,7.102000000000001,15.250000000000002,6.051000000000002,16.142000000000003,5.069000000000001); ctx.bezierCurveTo(17.033,4.087000000000001,18.064000000000004,3.511000000000001,19.238000000000003,3.3440000000000007); ctx.bezierCurveTo(19.32,3.329,19.447,3.311,19.615,3.287); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#555555"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.transform(1,0,0,1,4,4); ctx.beginPath(); ctx.moveTo(24.32,10.85); ctx.bezierCurveTo(22.577,12.083,21.705,13.568999999999999,21.705,15.305); ctx.bezierCurveTo(21.705,17.384,22.782999999999998,18.978,24.936999999999998,20.091); ctx.bezierCurveTo(24.358999999999998,21.768,23.520999999999997,23.225,22.423,24.466); ctx.bezierCurveTo(21.325999999999997,25.707,20.325,26.328000000000003,19.418999999999997,26.328000000000003); ctx.bezierCurveTo(18.991999999999997,26.328000000000003,18.409999999999997,26.185000000000002,17.670999999999996,25.905000000000005); ctx.lineTo(17.316999999999997,25.767000000000003); ctx.bezierCurveTo(16.591999999999995,25.486000000000004,15.953999999999997,25.344000000000005,15.396999999999997,25.344000000000005); ctx.bezierCurveTo(14.871999999999996,25.344000000000005,14.296999999999997,25.454000000000004,13.671999999999997,25.675000000000004); ctx.lineTo(13.226999999999997,25.835000000000004); ctx.lineTo(12.666999999999996,26.064000000000004); ctx.bezierCurveTo(12.225999999999996,26.240000000000002,11.778999999999996,26.328000000000003,11.329999999999997,26.328000000000003); ctx.bezierCurveTo(10.270999999999997,26.328000000000003,9.101999999999997,25.456000000000003,7.822999999999997,23.712000000000003); ctx.bezierCurveTo(5.979999999999997,21.214000000000002,5.0589999999999975,18.491000000000003,5.0589999999999975,15.545000000000003); ctx.bezierCurveTo(5.0589999999999975,13.450000000000003,5.632999999999997,11.764000000000003,6.783999999999997,10.484000000000004); ctx.bezierCurveTo(7.932999999999997,9.205000000000004,9.456999999999997,8.564000000000004,11.351999999999997,8.564000000000004); ctx.bezierCurveTo(12.060999999999996,8.564000000000004,12.722999999999997,8.694000000000004,13.339999999999996,8.953000000000003); ctx.lineTo(13.762999999999996,9.125000000000004); ctx.lineTo(14.207999999999997,9.308000000000003); ctx.bezierCurveTo(14.603999999999997,9.475000000000003,14.923999999999996,9.559000000000003,15.166999999999996,9.559000000000003); ctx.bezierCurveTo(15.478999999999996,9.559000000000003,15.825999999999997,9.487000000000004,16.206999999999997,9.342000000000002); ctx.lineTo(16.788999999999998,9.113000000000003); ctx.lineTo(17.223999999999997,8.953000000000003); ctx.bezierCurveTo(17.916999999999998,8.702000000000004,18.682999999999996,8.576000000000002,19.520999999999997,8.576000000000002); ctx.bezierCurveTo(21.512,8.576,23.109,9.334,24.32,10.85); ctx.closePath(); ctx.moveTo(19.615,3.287); ctx.bezierCurveTo(19.636,3.554,19.648,3.76,19.648,3.904); ctx.bezierCurveTo(19.648,5.221,19.169,6.377,18.21,7.371); ctx.bezierCurveTo(17.251,8.365000000000002,16.135,8.861,14.863000000000001,8.861); ctx.bezierCurveTo(14.825000000000001,8.564,14.805000000000001,8.351,14.805000000000001,8.222000000000001); ctx.bezierCurveTo(14.805000000000001,7.102000000000001,15.250000000000002,6.051000000000002,16.142000000000003,5.069000000000001); ctx.bezierCurveTo(17.033,4.087000000000001,18.064000000000004,3.511000000000001,19.238000000000003,3.3440000000000007); ctx.bezierCurveTo(19.32,3.329,19.447,3.311,19.615,3.287); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#000000"; ctx.strokeStyle = "#000000"; ctx.globalAlpha = 0; ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(32,0); ctx.quadraticCurveTo(32,0,32,0); ctx.lineTo(32,32); ctx.quadraticCurveTo(32,32,32,32); ctx.lineTo(0,32); ctx.quadraticCurveTo(0,32,0,32); ctx.lineTo(0,0); ctx.quadraticCurveTo(0,0,0,0); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.restore(); } }, iphone : { name: "iPhone", width : 60, height : 80, draw : function(ctx) { ctx.save(); ctx.beginPath(); ctx.moveTo(0, 0); ctx.lineTo(48, 0); ctx.lineTo(48, 48); ctx.lineTo(0, 48); ctx.closePath(); ctx.clip(); ctx.strokeStyle = 'rgba(0,0,0,0)'; ctx.lineCap = 'butt'; ctx.lineJoin = 'miter'; ctx.miterLimit = 4; ctx.save(); ctx.restore(); ctx.save(); ctx.restore(); ctx.save(); ctx.save(); var g = ctx.createRadialGradient(30.428225, 45.153285071108, 0, 30.428225, 45.153285071108, 13.474453); g.addColorStop(0, "rgba(0, 0, 0, 1)"); g.addColorStop(1, "rgba(0, 0, 0, 0)"); ctx.fillStyle = g; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 1.7999999523162842; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.transform(1.001896, 0, 0, 2.0113314, -5.9859152, -48.289433); ctx.globalAlpha = 0.44999992847442627; ctx.beginPath(); ctx.moveTo(43.902678, 45.153286); ctx.translate(30.428225, 45.153286); ctx.rotate(0); ctx.scale(1, 0.20187792409829178); ctx.arc(0, 0, 13.474453, 0, 3.141592653589793, 0); ctx.scale(1, 4.9534886217331655); ctx.rotate(0); ctx.translate(-30.428225, -45.153286); ctx.translate(30.428225, 45.153286); ctx.rotate(0); ctx.scale(1, 0.20187792409829178); ctx.arc(0, 0, 13.474453, 3.141592653589793, 6.283185307179586, 0); ctx.scale(1, 4.9534886217331655); ctx.rotate(0); ctx.translate(-30.428225, -45.153286); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#222222"; ctx.strokeStyle = "#454545"; ctx.lineWidth = 1; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(17.48867, 2.5); ctx.lineTo(31.5, 2.5); ctx.quadraticCurveTo(36.5, 2.5, 36.5, 7.5); ctx.lineTo(36.5, 39.51133); ctx.quadraticCurveTo(36.5, 44.51133, 31.5, 44.51133); ctx.lineTo(17.48867, 44.51133); ctx.quadraticCurveTo(12.48867, 44.51133, 12.48867, 39.51133); ctx.lineTo(12.48867, 7.5); ctx.quadraticCurveTo(12.48867, 2.5, 17.48867, 2.5); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#eaeef9"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.4888661205768585; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(15.46316305, 12); ctx.lineTo(33.53683695, 12); ctx.quadraticCurveTo(34, 12, 34, 12.4886471); ctx.lineTo(34, 33.5113529); ctx.quadraticCurveTo(34, 34, 33.53683695, 34); ctx.lineTo(15.46316305, 34); ctx.quadraticCurveTo(15, 34, 15, 33.5113529); ctx.lineTo(15, 12.4886471); ctx.quadraticCurveTo(15, 12, 15.46316305, 12); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#2e3436"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.4888661205768585; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(14.235984, 31); ctx.lineTo(34.747119, 31); ctx.quadraticCurveTo(34.747119, 31, 34.747119, 31); ctx.lineTo(34.747119, 34.5056648); ctx.quadraticCurveTo(34.747119, 34.5056648, 34.747119, 34.5056648); ctx.lineTo(14.235984, 34.5056648); ctx.quadraticCurveTo(14.235984, 34.5056648, 14.235984, 34.5056648); ctx.lineTo(14.235984, 31); ctx.quadraticCurveTo(14.235984, 31, 14.235984, 31); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#729fcf"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.4888661205768585; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(15, 14); ctx.lineTo(34, 14); ctx.quadraticCurveTo(34, 14, 34, 14); ctx.lineTo(34, 17); ctx.quadraticCurveTo(34, 17, 34, 17); ctx.lineTo(15, 17); ctx.quadraticCurveTo(15, 17, 15, 17); ctx.lineTo(15, 14); ctx.quadraticCurveTo(15, 14, 15, 14); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "rgba(0, 0, 0, 0)"; ctx.strokeStyle = "#000000"; ctx.lineWidth = 1; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(14.500002, 11.5); ctx.lineTo(34.500002, 11.5); ctx.quadraticCurveTo(34.500002, 11.5, 34.500002, 11.5); ctx.lineTo(34.500002, 34.500001999999995); ctx.quadraticCurveTo(34.500002, 34.500001999999995, 34.500002, 34.500001999999995); ctx.lineTo(14.500002, 34.500001999999995); ctx.quadraticCurveTo(14.500002, 34.500001999999995, 14.500002, 34.500001999999995); ctx.lineTo(14.500002, 11.5); ctx.quadraticCurveTo(14.500002, 11.5, 14.500002, 11.5); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "rgba(0, 0, 0, 0)"; g = ctx.createLinearGradient(12.9943351, 3.0056657, 47.3693351, 63.7556647); g.addColorStop(0, "rgba(255, 255, 255, 1)"); g.addColorStop(1, "rgba(255, 255, 255, 0)"); ctx.strokeStyle = "[object CanvasGradient]"; ctx.lineWidth = 0.988142192363739; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(17.488405999999998, 3.4997368); ctx.lineTo(31.500264, 3.4997368); ctx.quadraticCurveTo(35.500264, 3.4997368, 35.500264, 7.4997368); ctx.lineTo(35.500264, 39.5115928); ctx.quadraticCurveTo(35.500264, 43.5115928, 31.500264, 43.5115928); ctx.lineTo(17.488405999999998, 43.5115928); ctx.quadraticCurveTo(13.488406, 43.5115928, 13.488406, 39.5115928); ctx.lineTo(13.488406, 7.4997368); ctx.quadraticCurveTo(13.488406, 3.4997368, 17.488405999999998, 3.4997368); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#cee14b"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(31.49804866, 12); ctx.lineTo(32.50195804, 12); ctx.quadraticCurveTo(33.0000067, 12, 33.0000067, 12); ctx.lineTo(33.0000067, 12.99999988); ctx.quadraticCurveTo(33.0000067, 12.99999988, 32.50195804, 12.99999988); ctx.lineTo(31.49804866, 12.99999988); ctx.quadraticCurveTo(31, 12.99999988, 31, 12.99999988); ctx.lineTo(31, 12); ctx.quadraticCurveTo(31, 12, 31.49804866, 12); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#8d8d8d"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(21, 12); ctx.lineTo(28, 12); ctx.quadraticCurveTo(28, 12, 28, 13.2374361); ctx.lineTo(28, 11.7640681); ctx.quadraticCurveTo(28, 13.0015042, 28, 13.0015042); ctx.lineTo(21, 13.0015042); ctx.quadraticCurveTo(21, 13.0015042, 21, 11.7640681); ctx.lineTo(21, 13.2374361); ctx.quadraticCurveTo(21, 12, 21, 12); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#8d8d8d"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(16, 23.002401); ctx.lineTo(28, 23.002401); ctx.quadraticCurveTo(28, 23.002401, 28, 24.2398371); ctx.lineTo(28, 22.76256283); ctx.quadraticCurveTo(28, 23.99999893, 28, 23.99999893); ctx.lineTo(16, 23.99999893); ctx.quadraticCurveTo(16, 23.99999893, 16, 22.76256283); ctx.lineTo(16, 24.2398371); ctx.quadraticCurveTo(16, 23.002401, 16, 23.002401); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#8d8d8d"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(16, 25.002401); ctx.lineTo(24, 25.002401); ctx.quadraticCurveTo(24, 25.002401, 24, 26.2398371); ctx.lineTo(24, 24.76256283); ctx.quadraticCurveTo(24, 25.99999893, 24, 25.99999893); ctx.lineTo(16, 25.99999893); ctx.quadraticCurveTo(16, 25.99999893, 16, 24.76256283); ctx.lineTo(16, 26.2398371); ctx.quadraticCurveTo(16, 25.002401, 16, 25.002401); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#8d8d8d"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(16, 27.002401); ctx.lineTo(26, 27.002401); ctx.quadraticCurveTo(26, 27.002401, 26, 28.2398371); ctx.lineTo(26, 26.76256283); ctx.quadraticCurveTo(26, 27.99999893, 26, 27.99999893); ctx.lineTo(16, 27.99999893); ctx.quadraticCurveTo(16, 27.99999893, 16, 26.76256283); ctx.lineTo(16, 28.2398371); ctx.quadraticCurveTo(16, 27.002401, 16, 27.002401); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#8d8d8d"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(16, 29.002401); ctx.lineTo(26, 29.002401); ctx.quadraticCurveTo(26, 29.002401, 26, 30.2398371); ctx.lineTo(26, 28.76256283); ctx.quadraticCurveTo(26, 29.99999893, 26, 29.99999893); ctx.lineTo(16, 29.99999893); ctx.quadraticCurveTo(16, 29.99999893, 16, 28.76256283); ctx.lineTo(16, 30.2398371); ctx.quadraticCurveTo(16, 29.002401, 16, 29.002401); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#8d8d8d"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(32, 23.002401); ctx.lineTo(33, 23.002401); ctx.quadraticCurveTo(33, 23.002401, 33, 24.2398371); ctx.lineTo(33, 22.76256283); ctx.quadraticCurveTo(33, 23.99999893, 33, 23.99999893); ctx.lineTo(32, 23.99999893); ctx.quadraticCurveTo(32, 23.99999893, 32, 22.76256283); ctx.lineTo(32, 24.2398371); ctx.quadraticCurveTo(32, 23.002401, 32, 23.002401); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#8d8d8d"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(32, 25.002401); ctx.lineTo(33, 25.002401); ctx.quadraticCurveTo(33, 25.002401, 33, 26.2398371); ctx.lineTo(33, 24.76256283); ctx.quadraticCurveTo(33, 25.99999893, 33, 25.99999893); ctx.lineTo(32, 25.99999893); ctx.quadraticCurveTo(32, 25.99999893, 32, 24.76256283); ctx.lineTo(32, 26.2398371); ctx.quadraticCurveTo(32, 25.002401, 32, 25.002401); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#8d8d8d"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(32, 27.002401); ctx.lineTo(33, 27.002401); ctx.quadraticCurveTo(33, 27.002401, 33, 28.2398371); ctx.lineTo(33, 26.76256283); ctx.quadraticCurveTo(33, 27.99999893, 33, 27.99999893); ctx.lineTo(32, 27.99999893); ctx.quadraticCurveTo(32, 27.99999893, 32, 26.76256283); ctx.lineTo(32, 28.2398371); ctx.quadraticCurveTo(32, 27.002401, 32, 27.002401); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#8d8d8d"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(32, 29.002401); ctx.lineTo(33, 29.002401); ctx.quadraticCurveTo(33, 29.002401, 33, 30.2398371); ctx.lineTo(33, 28.76256283); ctx.quadraticCurveTo(33, 29.99999893, 33, 29.99999893); ctx.lineTo(32, 29.99999893); ctx.quadraticCurveTo(32, 29.99999893, 32, 28.76256283); ctx.lineTo(32, 30.2398371); ctx.quadraticCurveTo(32, 29.002401, 32, 29.002401); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#555753"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(27.625, 31.5); ctx.lineTo(29.625, 31.5); ctx.quadraticCurveTo(29.625, 31.5, 29.625, 31.5); ctx.lineTo(29.625, 33.5); ctx.quadraticCurveTo(29.625, 33.5, 29.625, 33.5); ctx.lineTo(27.625, 33.5); ctx.quadraticCurveTo(27.625, 33.5, 27.625, 33.5); ctx.lineTo(27.625, 31.5); ctx.quadraticCurveTo(27.625, 31.5, 27.625, 31.5); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#555753"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.5; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.transform(0.1721091, 0.1072115, -0.1023985, 0.1801987, 18.708736, 28.85398); ctx.beginPath(); ctx.moveTo(1.4894626, 22.96164); ctx.lineTo(-0.37207557, 25.909981); ctx.lineTo(-1.5799401, 22.639033); ctx.lineTo(-4.9592258, 21.779693); ctx.lineTo(-2.2216198, 19.620167); ctx.lineTo(-2.4485951, 16.140724); ctx.lineTo(0.45120293, 18.077012); ctx.lineTo(3.6902102, 16.785939); ctx.lineTo(2.744778, 20.142156); ctx.lineTo(4.9735699, 22.823672); ctx.lineTo(1.4894626, 22.96164); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#555753"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.5; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.transform(0.627451, 0, 0, 0.627451, -5.5122557, 11.656862); ctx.beginPath(); ctx.moveTo(43.25, 33.21875); ctx.translate(41.65625, 33.21875); ctx.rotate(0); ctx.scale(1, 1); ctx.arc(0, 0, 1.59375, 0, 3.141592653589793, 0); ctx.scale(1, 1); ctx.rotate(0); ctx.translate(-41.65625, -33.21875); ctx.translate(41.65625, 33.21875); ctx.rotate(0); ctx.scale(1, 1); ctx.arc(0, 0, 1.59375, 3.141592653589793, 6.283185307179586, 0); ctx.scale(1, 1); ctx.rotate(0); ctx.translate(-41.65625, -33.21875); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#555753"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.5; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.transform(0.64, 0, 0, 0.64, 5.645, 14.12); ctx.beginPath(); ctx.moveTo(41.375, 28.71875); ctx.translate(40.59375, 28.71875); ctx.rotate(0); ctx.scale(1, 1); ctx.arc(0, 0, 0.78125, 0, 3.141592653589793, 0); ctx.scale(1, 1); ctx.rotate(0); ctx.translate(-40.59375, -28.71875); ctx.translate(40.59375, 28.71875); ctx.rotate(0); ctx.scale(1, 1); ctx.arc(0, 0, 0.78125, 3.141592653589793, 6.283185307179586, 0); ctx.scale(1, 1); ctx.rotate(0); ctx.translate(-40.59375, -28.71875); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#555753"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.5; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.transform(0.64, 0, 0, 0.64, 7.02, 14.12); ctx.beginPath(); ctx.moveTo(41.375, 28.71875); ctx.translate(40.59375, 28.71875); ctx.rotate(0); ctx.scale(1, 1); ctx.arc(0, 0, 0.78125, 0, 3.141592653589793, 0); ctx.scale(1, 1); ctx.rotate(0); ctx.translate(-40.59375, -28.71875); ctx.translate(40.59375, 28.71875); ctx.rotate(0); ctx.scale(1, 1); ctx.arc(0, 0, 0.78125, 3.141592653589793, 6.283185307179586, 0); ctx.scale(1, 1); ctx.rotate(0); ctx.translate(-40.59375, -28.71875); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#729fcf"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.5; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.transform(0.538748, 0, 0, 0.538748, -3.4940494, 13.021049); ctx.beginPath(); ctx.moveTo(53.121399, 35.227882); ctx.translate(52.193321499999996, 35.22839176634375); ctx.rotate(0); ctx.scale(1, 1); ctx.arc(0, 0, 0.92807764, -0.0005492712542802616, 3.142141924844066, 0); ctx.scale(1, 1); ctx.rotate(0); ctx.translate(-52.193321499999996, -35.22839176634375); ctx.translate(52.193321499999996, 35.227372233656254); ctx.rotate(0); ctx.scale(1, 1); ctx.arc(0, 0, 0.92807764, 3.141043382335513, 6.283734578433859, 0); ctx.scale(1, 1); ctx.rotate(0); ctx.translate(-52.193321499999996, -35.227372233656254); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#729fcf"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.5; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(23.84753092, 32.5); ctx.lineTo(25.40246908, 32.5); ctx.quadraticCurveTo(25.625, 32.5, 25.625, 32.72253092); ctx.lineTo(25.625, 33.27746908); ctx.quadraticCurveTo(25.625, 33.5, 25.40246908, 33.5); ctx.lineTo(23.84753092, 33.5); ctx.quadraticCurveTo(23.625, 33.5, 23.625, 33.27746908); ctx.lineTo(23.625, 32.72253092); ctx.quadraticCurveTo(23.625, 32.5, 23.84753092, 32.5); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#729fcf"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(16.49804166, 12); ctx.lineTo(17.50195104, 12); ctx.quadraticCurveTo(17.9999997, 12, 17.9999997, 12); ctx.lineTo(17.9999997, 12.99999988); ctx.quadraticCurveTo(17.9999997, 12.99999988, 17.50195104, 12.99999988); ctx.lineTo(16.49804166, 12.99999988); ctx .quadraticCurveTo(15.999993, 12.99999988, 15.999993, 12.99999988); ctx.lineTo(15.999993, 12); ctx.quadraticCurveTo(15.999993, 12, 16.49804166, 12); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#729fcf"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(15, 21); ctx.lineTo(34, 21); ctx.quadraticCurveTo(34, 21, 34, 22.2404156); ctx.lineTo(34, 20.7595844); ctx.quadraticCurveTo(34, 22, 34, 22); ctx.lineTo(15, 22); ctx.quadraticCurveTo(15, 22, 15, 20.7595844); ctx.lineTo(15, 22.2404156); ctx.quadraticCurveTo(15, 21, 15, 21); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#8d8d8d"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(16, 19.002401); ctx.lineTo(26, 19.002401); ctx.quadraticCurveTo(26, 19.002401, 26, 20.2398371); ctx.lineTo(26, 18.76256283); ctx.quadraticCurveTo(26, 19.99999893, 26, 19.99999893); ctx.lineTo(16, 19.99999893); ctx.quadraticCurveTo(16, 19.99999893, 16, 18.76256283); ctx.lineTo(16, 20.2398371); ctx.quadraticCurveTo(16, 19.002401, 16, 19.002401); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#8d8d8d"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(32, 19.002401); ctx.lineTo(33, 19.002401); ctx.quadraticCurveTo(33, 19.002401, 33, 20.2398371); ctx.lineTo(33, 18.76256283); ctx.quadraticCurveTo(33, 19.99999893, 33, 19.99999893); ctx.lineTo(32, 19.99999893); ctx.quadraticCurveTo(32, 19.99999893, 32, 18.76256283); ctx.lineTo(32, 20.2398371); ctx.quadraticCurveTo(32, 19.002401, 32, 19.002401); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#3465a4"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.25; ctx.lineCap = "round"; ctx.lineJoin = "round"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(30, 15); ctx.lineTo(33, 15); ctx.quadraticCurveTo(33, 15, 33, 16.2404157); ctx.lineTo(33, 14.7595843); ctx.quadraticCurveTo(33, 16, 33, 16); ctx.lineTo(30, 16); ctx.quadraticCurveTo(30, 16, 30, 14.7595843); ctx.lineTo(30, 16.2404157); ctx.quadraticCurveTo(30, 15, 30, 15); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); g = ctx.createLinearGradient(19.119335, 3.0054398033000003, 19.119335, 44.0054400033); g.addColorStop(0, "rgba(255, 255, 255, 1)"); g.addColorStop(1, "rgba(255, 255, 255, 0)"); ctx.fillStyle = g; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 1; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.globalAlpha = 0.25; ctx.beginPath(); ctx.moveTo(17.994339, 3.0054398); ctx.lineTo(30.994339, 3.0054398); ctx.bezierCurveTo(23.836313, 7.1381278, 20.853778, 19.364879, 24.494339, 23.00544); ctx.bezierCurveTo(33.610675, 32.121776, 17.994339, 44.00544, 17.994339, 44.00544); ctx.bezierCurveTo(15.224339, 44.00544, 12.994339, 41.77544, 12.994339, 39.00544); ctx.lineTo(12.994339, 8.0054398); ctx.bezierCurveTo(12.994339, 5.2354398, 15.224339, 3.0054398, 17.994339, 3.0054398); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#000000"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.2625642418861389; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(22.1666667, 7); ctx.lineTo(26.8333333, 7); ctx.quadraticCurveTo(28, 7, 28, 8); ctx.lineTo(28, 8); ctx.quadraticCurveTo(28, 9, 26.8333333, 9); ctx.lineTo(22.1666667, 9); ctx.quadraticCurveTo(21, 9, 21, 8); ctx.lineTo(21, 8); ctx.quadraticCurveTo(21, 7, 22.1666667, 7); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); g = ctx.createLinearGradient(24.499999250000002, 7.9999999, 24.499999250000002, 8.9999999); g.addColorStop(0, "rgba(255, 255, 255, 0)"); g.addColorStop(1, "rgba(255, 255, 255, 1)"); ctx.fillStyle = g; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 0.2625642418861389; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.beginPath(); ctx.moveTo(22.1666667, 7); ctx.lineTo(26.8333333, 7); ctx.quadraticCurveTo(28, 7, 28, 8); ctx.lineTo(28, 8); ctx.quadraticCurveTo(28, 9, 26.8333333, 9); ctx.lineTo(22.1666667, 9); ctx.quadraticCurveTo(21, 9, 21, 8); ctx.lineTo(21, 8); ctx.quadraticCurveTo(21, 7, 22.1666667, 7); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "#000000"; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 1; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.transform(1.2384383, 0, 0, 1.2374368, -51.908369, -9.0844674); ctx.beginPath(); ctx.moveTo(64.523495, 38.45406); ctx.translate(61.695068, 38.45481212061619); ctx.rotate(0); ctx.scale(1, 1); ctx.arc(0, 0, 2.8284271, -0.0002659147991268235, 3.1418585683892366, 0); ctx.scale(1, 1); ctx.rotate(0); ctx.translate(-61.695068, -38.45481212061619); ctx.translate(61.695068, 38.45330787938381); ctx.rotate(0); ctx.scale(1, 1); ctx.arc(0, 0, 2.8284271, 3.1413267387906663, 6.28345122197903, 0); ctx.scale(1, 1); ctx.rotate(0); ctx.translate(-61.695068, -38.45330787938381); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); ctx.fillStyle = "rgba(0, 0, 0, 0)"; ctx.strokeStyle = "#ffffff"; ctx.lineWidth = 1; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.globalAlpha = 0.800000011920929; ctx.beginPath(); ctx.moveTo(23.6125001, 36.5); ctx.lineTo(25.3874999, 36.5); ctx.quadraticCurveTo(26.5, 36.5, 26.5, 37.6125); ctx.lineTo(26.5, 39.3875); ctx.quadraticCurveTo(26.5, 40.5, 25.3874999, 40.5); ctx.lineTo(23.6125001, 40.5); ctx.quadraticCurveTo(22.5, 40.5, 22.5, 39.3875); ctx.lineTo(22.5, 37.6125); ctx.quadraticCurveTo(22.5, 36.5, 23.6125001, 36.5); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.save(); g = ctx.createLinearGradient(24.4943322015625, 42.000000609375, 24.4943322015625, 38.937437259375); g.addColorStop(0, "rgba(255, 255, 255, 1)"); g.addColorStop(1, "rgba(255, 255, 255, 0)"); ctx.fillStyle = g; ctx.strokeStyle = "rgba(0, 0, 0, 0)"; ctx.lineWidth = 1; ctx.lineCap = "butt"; ctx.lineJoin = "miter"; ctx.miterLimit = 4; ctx.globalAlpha = 0.5; ctx.beginPath(); ctx.moveTo(27.953175, 38.937438); ctx.bezierCurveTo(27.028904, 39.748992, 25.833693, 40.249964, 24.508006, 40.249964); ctx.bezierCurveTo(23.189263, 40.249964, 21.957911, 39.768752, 21.035493, 38.964782); ctx.bezierCurveTo(21.263181, 40.677198, 22.733765, 42, 24.508006, 42); ctx.bezierCurveTo(26.291154, 42, 27.736877, 40.662361, 27.953175, 38.937438); ctx.closePath(); ctx.fill(); ctx.stroke(); ctx.restore(); ctx.restore(); ctx.restore(); } } } var icons = []; for (var a in Q.Graphs) { var g = Q.Graphs[a]; if(g instanceof Object){ if(!g.name){ g.name = a; } icons.push(g); } } for (var a in graphs) { var g = graphs[a]; if(!g.name){ g.name = a; } Q.registerImage(g.name, g); icons.push(g); } function randomIcon() { return icons[Q.randomInt(icons.length)]; } if(Q.loadClassPath){ Q.loadClassPath(graphs, "graphs"); }