Вход Регистрация
Файл: CloudBox-main/CloudBox/admin_assets/js/chart/raphael-min.js
Строк: 3120
<?php
// ┌─────────────────────────────────────────────────────────────────────┐ \
// │ Raphaël 2.0.1 - JavaScript Vector Library                           │ \
// ├─────────────────────────────────────────────────────────────────────┤ \
// │ Copyright (c) 2008-2011 Dmitry Baranovskiy (http://raphaeljs.com)   │ \
// │ Copyright (c) 2008-2011 Sencha Labs (http://sencha.com)             │ \
// │ Licensed under the MIT (http://raphaeljs.com/license.html) license. │ \
// └─────────────────────────────────────────────────────────────────────┘ \
(function (a) {
    var 
"0.4.0""hasOwnProperty"= /[./]/, "*"= function () {
    }, 
= function (ab) {
        return 
b
    
}, hi= {n: {}}, = function (ab) {
        var 
ji= Array.prototype.slice.call(arguments2), k.listeners(a), 0= !1n= [], = {}, = [], = [];
        
a0;
        for (var 
0f.lengthts++)"zIndex"in f[s] && (o.push(f[s].zIndex), f[s].zIndex && (p[f[s].zIndex] = f[s]));
        
o.sort(g);
        while (
o[l] < 0) {
            
p[o[l++]], q.push(n.apply(be));
            if (
i) {
                
d;
                return 
q
            
}
        }
        for (
0ts++) {
            
f[s];
            if (
"zIndex"in n)if (n.zIndex == o[l]) {
                
q.push(n.apply(be));
                if (
i) {
                    
d;
                    return 
q
                
}
                do {
                    
l++, p[o[l]], && q.push(n.apply(be));
                    if (
i) {
                        
d;
                        return 
q
                    
}
                } while (
n)
            } else 
p[n.zIndex] = n; else {
                
q.push(n.apply(be));
                if (
i) {
                    
d;
                    return 
q
                
}
            }
        }
        
d;
        return 
q.length null
    
};
    
k.listeners = function (a) {
        var 
a.split(d), jfghiklmn= [c], = [];
        for (
0b.lengthki++) {
            
= [];
            for (
0o.lengthml++) {
                
o[l].n= [c[b[i]], c[e]], 2;
                while (
h--)g[h], && (n.push(f), p.concat(f.|| []))
            }
            
n
        
}
        return 
p
    
}, k.on = function (ab) {
        var 
a.split(d), j;
        for (var 
0c.lengthhg++)e.n, !e[c[g]] && (e[c[g]] = {n: {}}), e[c[g]];
        
e.e.|| [];
        for (
0e.f.lengthhg++)if (e.f[g] == b)return f;
        
e.f.push(b);
        return function (
a) {
            +
== +&& (b.zIndex = +a)
        }
    }, 
k.stop = function () {
        
1
    
}, k.nt = function (a) {
        if (
a)return(new RegExp("(?:\.|\/|^)" "(?:\.|\/|$)")).test(h);
        return 
h
    
}, k.unbind = function (ab) {
        var 
a.split(d), ghiklmn= [j];
        for (
0f.lengthlk++)for (0o.length+= i.length 2) {
            
= [m1], o[m].n;
            if (
f[k] != e)g[f[k]] && i.push(g[f[k]]); else for (h in g)g[c](h) && i.push(g[h]);
            
o.splice.apply(oi)
        }
        for (
0o.lengthlk++) {
            
o[k];
            while (
g.n) {
                if (
b) {
                    if (
g.f) {
                        for (
0g.f.lengthnm++)if (g.f[m] == b) {
                            
g.f.splice(m1);
                            break
                        }
                        !
g.f.length && delete g.f
                    
}
                    for (
h in g.n)if (g.n[c](h) && g.n[h].f) {
                        var 
g.n[h].f;
                        for (
0p.lengthnm++)if (p[m] == b) {
                            
p.splice(m1);
                            break
                        }
                        !
p.length && delete g.n[h].f
                    
}
                } else {
                    
delete g.f;
                    for (
h in g.n)g.n[c](h) && g.n[h].&& delete g.n[h].f
                
}
                
g.n
            
}
        }
    }, 
k.once = function (ab) {
        var 
= function () {
            
b.apply(thisarguments), k.unbind(ac)
        };
        return 
k.on(ac)
    }, 
k.version bk.toString = function () {
        return
"You are running Eve " b
    
}, typeof module != "undefined" && module.exports module.exports a.eve k
})(this), function () {
    function 
cr(bdefhi) {
        
Q(e);
        var 
jkl= [], opqb.ms= {}, = {}, = {};
        if (
f)for (0cl.lengthzy++) {
            var 
cl[y];
            if (
x.el.id == d.id && x.anim == b) {
                
x.percent != ? (cl.splice(y1), 1) : xd.attr(x.totalOrigin);
                break
            }
        } else 
= +v;
        for (var 
0b.percents.lengthzy++) {
            if (
b.percents[y] == || b.percents[y] > b.top) {
                
b.percents[y], b.percents[1] || 0b.top * (p), b.percents[1], b.anim[e];
                break
            }
            
&& d.attr(b.anim[b.percents[y]])
        }
        if (!!
j) {
            if (!
k) {
                for (var 
A in j)if (j[g](A))if (U[g](A) || d.paper.customAttributes[g](A)) {
                    
u[A] = d.attr(A), u[A] == null && (u[A] = T[A]), v[A] = j[A];
                    switch (
U[A]) {
                        case 
C:
                            
w[A] = (v[A] - u[A]) / t;
                            break;
                        case
"colour":
                            
u[A] = a.getRGB(u[A]);
                            var 
a.getRGB(v[A]);
                            
w[A] = {r: (B.u[A].r) / tg: (B.u[A].g) / tb: (B.u[A].b) / t};
                            break;
                        case
"path":
                            var 
bG(u[A], v[A]), D[1];
                            
u[A] = D[0], w[A] = [];
                            for (
0u[A].lengthzy++) {
                                
w[A][y] = [0];
                                for (var 
1u[A][y].lengthGF++)w[A][y][F] = (E[y][F] - u[A][y][F]) / t
                            
}
                            break;
                        case
"transform":
                            var 
d._bP(H[A], v[A]);
                            if (
I) {
                                
u[A] = I.fromv[A] = I.tow[A] = [], w[A].real = !0;
                                for (
0u[A].lengthzy++) {
                                    
w[A][y] = [u[A][y][0]];
                                    for (
1u[A][y].lengthGF++)w[A][y][F] = (v[A][y][F] - u[A][y][F]) / t
                                
}
                            } else {
                                var 
d.matrix || new bQ= {_: {transformH.transform}, getBBox: function () {
                                    return 
d.getBBox(1)
                                }};
                                
u[A] = [J.aJ.bJ.cJ.dJ.eJ.f], bN(Kv[A]), v[A] = K._.transformw[A] = [(K.matrix.J.a) / t, (K.matrix.J.b) / t, (K.matrix.J.c) / t, (K.matrix.J.d) / t, (K.matrix.J.e) / t, (K.matrix.J.f) / t]
                            }
                            break;
                        case
"csv":
                            var 
r(j[A])[s](c), r(u[A])[s](c);
                            if (
== "clip-rect") {
                                
u[A] = Mw[A] = [], M.length;
                                while (
y--)w[A][y] = (L[y] - u[A][y]) / t
                            
}
                            
v[A] = L;
                            break;
                        default:
                            
= [][n](j[A]), = [][n](u[A]), w[A] = [], d.paper.customAttributes[A].length;
                            while (
y--)w[A][y] = ((L[y] || 0) - (M[y] || 0)) / t
                    
}
                }
                var 
j.easinga.easing_formulas[O];
                if (!
P) {
                    
r(O).match(N);
                    if (
&& P.length == 5) {
                        var 
P;
                        
= function (a) {
                            return 
cp(a, +R[1], +R[2], +R[3], +R[4], t)
                        }
                    } else 
be
                
}
                
j.start || b.start || +(new Date), = {animbpercentetimestampqstart+ (b.del || 0), status0initstatus|| 0stop: !1msteasingPfromudiffwtoveldcallbackj.callbackprevpnextorepeat|| b.timesorigind.attr(), totalOriginh}, cl.push(x);
                if (
&& !&& !l) {
                    
x.stop = !0x.start = new Date f;
                    if (
cl.length == 1)return cn()
                }
                
&& (x.start = new Date x.ms f), cl.length == && cm(cn)
            } else 
k.initstatus fk.start = new Date k.ms f;
            
eve("anim.start." d.iddb)
        }
    }

    function 
cq(ab) {
        var 
= [], = {};
        
this.ms bthis.times 1;
        if (
a) {
            for (var 
e in a)a[g](e) && (d[Q(e)] = a[e], c.push(Q(e)));
            
c.sort(bc)
        }
        
this.anim dthis.top c[c.length 1], this.percents c
    
}

    function 
cp(abcdef) {
        function 
o(ab) {
            var 
cdefjk;
            for (
a08k++) {
                
m(e) - a;
                if (
z(f) < b)return e;
                
= (h) * g;
                if (
z(j) < 1e-6)break;
                
j
            
}
            
01a;
            if (
c)return c;
            if (
d)return d;
            while (
d) {
                
m(e);
                if (
z(a) < b)return e;
                
e= (c) / c
            
}
            return 
e
        
}

        function 
n(ab) {
            var 
o(ab);
            return((
k) * j) * c
        
}

        function 
m(a) {
            return((
h) * g) * a
        
}

        var 
b* (b) - ghc* (c) - jk;
        return 
n(a/ (200 f))
    }

    function 
cd() {
        return 
this.this.this.width " × " this.height
    
}

    function 
cc() {
        return 
this.this.y
    
}

    function 
bQ(abcdef) {
        
!= null ? (this.= +athis.= +bthis.= +cthis.= +dthis.= +ethis.= +f) : (this.1this.0this.0this.1this.0this.0)
    }

    function 
bw(a) {
        var 
= [];
        for (var 
0a.lengthc+= 2) {
            var 
= [
                {
x: +a[c], y: +a[1]},
                {
x: +a[c], y: +a[1]},
                {
x: +a[2], y: +a[3]},
                {
x: +a[4], y: +a[5]}
            ];
            
== ? (e[0] = {x: +a[2], y: +a[1]}, e[3] = e[2]) : && (e[0] = {x: +a[2], y: +a[1]}), b.push(["C", (-e[0].e[1].e[2].x) / 6, (-e[0].e[1].e[2].y) / 6, (e[1].e[2].e[3].x) / 6, (e[1].e[2].e[3].y) / 6e[2].xe[2].y])
        }
        return 
b
    
}

    function 
bv() {
        return 
this.hex
    
}

    function 
bt(abc) {
        function 
d() {
            var 
= Array.prototype.slice.call(arguments0), e.join("␀"), d.cache d.cache || {}, d.count d.count || [];
            if (
h[g](f)) {
                
bs(if);
                return 
c(h[f]) : h[f]
            }
            
i.length >= 1e3 && delete h[i.shift()], i.push(f), h[f] = a[m](be);
            return 
c(h[f]) : h[f]
        }

        return 
d
    
}

    function 
bs(ab) {
        for (var 
0a.lengthdc++)if (a[c] === b)return a.push(a.splice(c1)[0])
    }

    function 
a(c) {
        if (
a.is(c"function"))return c() : eve.on("DOMload"c);
        if (
a.is(cE))return a._engine.create[m](ac.splice(0a.is(c[0], C))).add(c);
        var 
= Array.prototype.slice.call(arguments0);
        if (
a.is(d[d.length 1], "function")) {
            var 
d.pop();
            return 
e.call(a._engine.create[m](ad)) : eve.on("DOMload", function () {
                
e.call(a._engine.create[m](ad))
            })
        }
        return 
a._engine.create[m](aarguments)
    }

    
a.version "2.0.1"a.eve eve;
    var 
b= /[, ]+/, = {circle1rect1path1ellipse1text1image1}, = /{(d+)}/g"prototype""hasOwnProperty"= {docdocumentwinwindow}, = {wasObject.prototype[g].call(h.win"Raphael"), ish.win.Raphael}, = function () {
        
this.ca this.customAttributes = {}
    }, 
k"appendChild""apply""concat""createTouch"in h.doc""" "String"split""click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[s](q), = {mousedown"touchstart"mousemove"touchmove"mouseup"touchend"}, r.prototype.toLowerCaseMathw.maxw.minw.absw.poww.PI"number""string""array""toString""fill"Object.prototype.toString= {}, "push"a._ISURL = /^url(['"]?([^)]+?)['"]?)$/i, L = /^s*((#[a-fd]{6})|(#[a-fd]{3})|rgba?(s*([d.]+%?s*,s*[d.]+%?s*,s*[d.]+%?(?:s*,s*[d.]+%?)?)s*)|hsba?(s*([d.]+(?:deg|xb0|%)?s*,s*[d.]+%?s*,s*[d.]+(?:%?s*,s*[d.]+)?)%?s*)|hsla?(s*([d.]+(?:deg|xb0|%)?s*,s*[d.]+%?s*,s*[d.]+(?:%?s*,s*[d.]+)?)%?s*))s*$/i, M = {NaN: 1, Infinity: 1, "-Infinity": 1}, N = /^(?:cubic-)?bezier(([^,]+),([^,]+),([^,]+),([^)]+))/, O = w.round, P = "setAttribute", Q = parseFloat, R = parseInt, S = r.prototype.toUpperCase, T = a._availableAttrs = {"arrow-end": "none", "arrow-start": "none", blur: 0, "clip-rect": "0 0 1e9 1e9", cursor: "default", cx: 0, cy: 0, fill: "#fff", "fill-opacity": 1, font: '10px "Arial"', "font-family": '"Arial"', "font-size": "10", "font-style": "normal", "font-weight": 400, gradient: 0, height: 0, href: "http://raphaeljs.com/", "letter-spacing": 0, opacity: 1, path: "M0,0", r: 0, rx: 0, ry: 0, src: "", stroke: "#000", "stroke-dasharray": "", "stroke-linecap": "butt", "stroke-linejoin": "butt", "stroke-miterlimit": 0, "stroke-opacity": 1, "stroke-width": 1, target: "_blank", "text-anchor": "middle", title: "Raphael", transform: "", width: 0, x: 0, y: 0}, U = a._availableAnimAttrs = {blur: C, "clip-rect": "csv", cx: C, cy: C, fill: "colour", "fill-opacity": C, "font-size": C, height: C, opacity: C, path: "path", r: C, rx: C, ry: C, stroke: "colour", "stroke-opacity": C, "stroke-width": C, transform: "transform", width: C, x: C, y: C}, V = /s*,s*/, W = {hs: 1, rg: 1}, X = /,?([achlmqrstvxz]),?/gi, Y = /([achlmrqstvz])[s,]*((-?d*.?d*(?:e[-+]?d+)?s*,?s*)+)/ig, Z = /([rstm])[s,]*((-?d*.?d*(?:e[-+]?d+)?s*,?s*)+)/ig, $ = /(-?d*.?d*(?:e[-+]?d+)?)s*,?s*/ig, _ = a._radial_gradient = /^r(?:(([^,]+?)s*,s*([^)]+?)))?/, ba = {}, bb = function (a, b) {
        
return a.key b.key
    
}, bc = function (ab) {
        return 
Q(a) - Q(b)
    }, 
bd = function () {
    }, 
be = function (a) {
        return 
a
    
}, bf a._rectPath = function (abcde) {
        if (
e)return[
            [
"M"eb],
            [
"l"20],
            [
"a"ee001ee],
            [
"l"02],
            [
"a"ee001, -ee],
            [
"l"c0],
            [
"a"ee001, -e, -e],
            [
"l"0d],
            [
"a"ee001e, -e],
            [
"z"]
        ];
        return[
            [
"M"ab],
            [
"l"c0],
            [
"l"0d],
            [
"l", -c0],
            [
"z"]
        ]
    }, 
bg = function (abcd) {
        
== null && (c);
        return[
            [
"M"ab],
            [
"m"0, -d],
            [
"a"cd0110d],
            [
"a"cd0110, -d],
            [
"z"]
        ]
    }, 
bh a._getPath = {path: function (a) {
        return 
a.attr("path")
    }, 
circle: function (a) {
        var 
a.attrs;
        return 
bg(b.cxb.cyb.r)
    }, 
ellipse: function (a) {
        var 
a.attrs;
        return 
bg(b.cxb.cyb.rxb.ry)
    }, 
rect: function (a) {
        var 
a.attrs;
        return 
bf(b.xb.yb.widthb.heightb.r)
    }, 
image: function (a) {
        var 
a.attrs;
        return 
bf(b.xb.yb.widthb.height)
    }, 
text: function (a) {
        var 
a._getBBox();
        return 
bf(b.xb.yb.widthb.height)
    }}, 
bi a.mapPath = function (ab) {
        if (!
b)return a;
        var 
cdefghi;
        
bG(a);
        for (
0a.lengthge++) {
            
a[e];
            for (
1i.lengthh+= 2)b.x(i[f], i[1]), b.y(i[f], i[1]), i[f] = ci[1] = d
        
}
        return 
a
    
};
    
a._g ha.type h.win.SVGAngle || h.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure""1.1") ? "SVG" "VML";
    if (
a.type == "VML") {
        var 
bj h.doc.createElement("div"), bk;
        
bj.innerHTML '<v:shape adj="1"/>'bk bj.firstChildbk.style.behavior "url(#default#VML)";
        if (!
bk || typeof bk.adj != "object")return a.type p;
        
bj null
    
}
    
a.svg = !(a.vml a.type == "VML"), a._Paper ja.fn j.prototype a.prototypea._id 0a._oid 0a.is = function (ab) {
        
v.call(b);
        if (
== "finite")return!M[g](+a);
        if (
== "array")return instanceof Array;
        return 
== "null" && === null || == typeof a && !== null || == "object" && === Object(a) || == "array" && Array.isArray && Array.isArray(a) || H.call(a).slice(8, -1).toLowerCase() == b
    
}, a.angle = function (bcdefg) {
        if (
== null) {
            var 
de;
            if (!
&& !i)return 0;
            return(
180 w.atan2(-i, -h) * 180 360) % 360
        
}
        return 
a.angle(bcfg) - a.angle(defg)
    }, 
a.rad = function (a) {
        return 
360 180
    
}, a.deg = function (a) {
        return 
180 360
    
}, a.snapTo = function (bcd) {
        
a.is(d"finite") ? 10;
        if (
a.is(bE)) {
            var 
b.length;
            while (
e--)if (z(b[e] - c) <= d)return b[e]
        } else {
            
= +b;
            var 
b;
            if (
d)return f;
            if (
d)return b
        
}
        return 
c
    
};
    var 
bl a.createUUID = function (ab) {
        return function () {
            return
"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(ab).toUpperCase()
        }
    }(/[
xy]/g, function (a) {
        var 
w.random() * 16 0== "x" 8;
        return 
c.toString(16)
    });
    
a.setWindow = function (b) {
        
eve("setWindow"ah.winb), h.win bh.doc h.win.documenta._engine.initWin && a._engine.initWin(h.win)
    };
    var 
bm = function (b) {
        if (
a.vml) {
            var 
= /^s+|s+$/gd;
            try {
                var 
= new ActiveXObject("htmlfile");
                
e.write("<body>"), e.close(), e.body
            
} catch (f) {
                
createPopup().document.body
            
}
            var 
d.createTextRange();
            
bm bt(function (a) {
                try {
                    
d.style.color r(a).replace(cp);
                    var 
g.queryCommandValue("ForeColor");
                    
= (255) << 16 65280 | (16711680) >>> 16;
                    return
"#" + ("000000" b.toString(16)).slice(-6)
                } catch (
e) {
                    return
"none"
                
}
            })
        } else {
            var 
h.doc.createElement("i");
            
i.title "Raphaël Colour Picker"i.style.display "none"h.doc.body.appendChild(i), bm bt(function (a) {
                
i.style.color a;
                return 
h.doc.defaultView.getComputedStyle(ip).getPropertyValue("color")
            })
        }
        return 
bm(b)
    }, 
bn = function () {
        return
"hsb(" + [this.hthis.sthis.b] + ")"
    
}, bo = function () {
        return
"hsl(" + [this.hthis.sthis.l] + ")"
    
}, bp = function () {
        return 
this.hex
    
}, bq = function (bcd) {
        
== null && a.is(b"object") && "r"in b && "g"in b && "b"in b && (b.bb.gb.r);
        if (
== null && a.is(bD)) {
            var 
a.getRGB(b);
            
e.re.ge.b
        
}
        if (
|| || 1)/= 255/= 255/= 255;
        return[
bcd]
    }, 
br = function (bcde) {
        
*= 255*= 255*= 255;
        var 
= {rbgcbdhexa.rgb(bcd), toStringbp};
        
a.is(e"finite") && (f.opacity e);
        return 
f
    
};
    
a.color = function (b) {
        var 
c;
        
a.is(b"object") && "h"in b && "s"in b && "b"in b ? (a.hsb2rgb(b), b.c.rb.c.gb.c.bb.hex c.hex) : a.is(b"object") && "h"in b && "s"in b && "l"in b ? (a.hsl2rgb(b), b.c.rb.c.gb.c.bb.hex c.hex) : (a.is(b"string") && (a.getRGB(b)), a.is(b"object") && "r"in b && "g"in b && "b"in b ? (a.rgb2hsl(b), b.c.hb.c.sb.c.la.rgb2hsb(b), b.c.b) : (= {hex"none"}, b.b.b.b.b.b.b.= -1)), b.toString bp;
        return 
b
    
}, a.hsb2rgb = function (abcd) {
        
this.is(a"object") && "h"in a && "s"in a && "b"in a && (a.ba.sa.ha.o), *= 360;
        var 
efghi;
        
360 60b* (z(1)), i= ~~a+= [ih00hi][a], += [hiih00][a], += [00hiih][a];
        return 
br(efgd)
    }, 
a.hsl2rgb = function (abcd) {
        
this.is(a"object") && "h"in a && "s"in a && "l"in a && (a.la.sa.h);
        if (
|| || 1)/= 360/= 100/= 100;
        
*= 360;
        var 
efghi;
        
360 60* (.5 c), * (z(1)), 2= ~~a+= [ih00hi][a], += [hiih00][a], += [00hiih][a];
        return 
br(efgd)
    }, 
a.rgb2hsb = function (abc) {
        
bq(abc), c[0], c[1], c[2];
        var 
defg;
        
x(abc), y(abc), == null == ? (c) / == ? (a) / : (b) / 4= (360) % 60 360== f;
        return{
hdsebftoStringbn}
    }, 
a.rgb2hsl = function (abc) {
        
bq(abc), c[0], c[1], c[2];
        var 
defghi;
        
x(abc), y(abc), h== null == ? (c) / == ? (a) / : (b) / 4= (360) % 60 360= (h) / 2== .5 / (f) : / (f);
        return{
hdselftoStringbo}
    }, 
a._path2string = function () {
        return 
this.join(",").replace(X"$1")
    };
    var 
bu a._preload = function (ab) {
        var 
h.doc.createElement("img");
        
c.style.cssText "position:absolute;left:-9999em;top:-9999em"c.onload = function () {
            
b.call(this), this.onload nullh.doc.body.removeChild(this)
        }, 
c.onerror = function () {
            
h.doc.body.removeChild(this)
        }, 
h.doc.body.appendChild(c), c.src a
    
};
    
a.getRGB bt(function (b) {
        if (!
|| !!((r(b)).indexOf("-") + 1))return{r: -1g: -1b: -1hex"none"error1toStringbv};
        if (
== "none")return{r: -1g: -1b: -1hex"none"toStringbv};
        !
W[g](b.toLowerCase().substring(02)) && b.charAt() != "#" && (bm(b));
        var 
cdefhijb.match(L);
        if (
k) {
            
k[2] && (R(k[2].substring(5), 16), R(k[2].substring(35), 16), R(k[2].substring(13), 16)), k[3] && (R((k[3].charAt(3)) + i16), R((k[3].charAt(2)) + i16), R((k[3].charAt(1)) + i16)), k[4] && (k[4][s](V), Q(j[0]), j[0].slice(-1) == "%" && (*= 2.55), Q(j[1]), j[1].slice(-1) == "%" && (*= 2.55), Q(j[2]), j[2].slice(-1) == "%" && (*= 2.55), k[1].toLowerCase().slice(04) == "rgba" && (Q(j[3])), j[3] && j[3].slice(-1) == "%" && (/= 100));
            if (
k[5]) {
                
k[5][s](V), Q(j[0]), j[0].slice(-1) == "%" && (*= 2.55), Q(j[1]), j[1].slice(-1) == "%" && (*= 2.55), Q(j[2]), j[2].slice(-1) == "%" && (*= 2.55), (j[0].slice(-3) == "deg" || j[0].slice(-1) == "°") && (/= 360), k[1].toLowerCase().slice(04) == "hsba" && (Q(j[3])), j[3] && j[3].slice(-1) == "%" && (/= 100);
                return 
a.hsb2rgb(defh)
            }
            if (
k[6]) {
                
k[6][s](V), Q(j[0]), j[0].slice(-1) == "%" && (*= 2.55), Q(j[1]), j[1].slice(-1) == "%" && (*= 2.55), Q(j[2]), j[2].slice(-1) == "%" && (*= 2.55), (j[0].slice(-3) == "deg" || j[0].slice(-1) == "°") && (/= 360), k[1].toLowerCase().slice(04) == "hsla" && (Q(j[3])), j[3] && j[3].slice(-1) == "%" && (/= 100);
                return 
a.hsl2rgb(defh)
            }
            
= {rdgebftoStringbv}, k.hex "#" + (16777216 << << 16).toString(16).slice(1), a.is(h"finite") && (k.opacity h);
            return 
k
        
}
        return{
r: -1g: -1b: -1hex"none"error1toStringbv}
    }, 
a), a.hsb bt(function (bcd) {
        return 
a.hsb2rgb(bcd).hex
    
}), a.hsl bt(function (bcd) {
        return 
a.hsl2rgb(bcd).hex
    
}), a.rgb bt(function (abc) {
        return
"#" + (16777216 << << 16).toString(16).slice(1)
    }), 
a.getColor = function (a) {
        var 
this.getColor.start this.getColor.start || {h0s1b|| .75}, this.hsb2rgb(b.hb.sb.b);
        
b.+= .075b.&& (b.0b.-= .2b.<= && (this.getColor.start = {h0s1bb.b}));
        return 
c.hex
    
}, a.getColor.reset = function () {
        
delete this.start
    
}, a.parsePathString bt(function (b) {
        if (!
b)return null;
        var 
= {a7c6h1l2m2r4q4s4t2v1z0}, = [];
        
a.is(bE) && a.is(b[0], E) && (by(b)), d.length || r(b).replace(Y, function (abe) {
            var 
= [], b.toLowerCase();
            
e.replace($, function (ab) {
                
&& f.push(+b)
            }), 
== "m" && f.length && (d.push([b][n](f.splice(02))), "l"== "m" "l" "L");
            if (
== "r")d.push([b][n](f)); else while (f.length >= c[g]) {
                
d.push([b][n](f.splice(0c[g])));
                if (!
c[g])break
            }
        }), 
d.toString a._path2string;
        return 
d
    
}), a.parseTransformString bt(function (b) {
        if (!
b)return null;
        var 
= {r3s4t2m6}, = [];
        
a.is(bE) && a.is(b[0], E) && (by(b)), d.length || r(b).replace(Z, function (abc) {
            var 
= [], v.call(b);
            
c.replace($, function (ab) {
                
&& e.push(+b)
            }), 
d.push([b][n](e))
        }), 
d.toString a._path2string;
        return 
d
    
}), a.findDotsAtSegment = function (abcdefghi) {
        var 
iA(j3), A(j2), iigh* (a) + * (a), * (b) + * (b), * (c) + * (c), * (d) + * (d), cdgh90 w.atan2(st) * 180 B;
        (
|| t) && (+= 180);
        return{
xoypm: {xqyr}, n: {xsyt}, start: {xuyv}, end: {xxyy}, alphaz}
    }, 
a._removedFactory = function (a) {
        return function () {
            throw new 
Error("Raphaël: you are calling to method “" "” of removed object")
        }
    };
    var 
bx bt(function (a) {
        if (!
a)return{x0y0width0height0};
        
bG(a);
        var 
00= [], = [], f;
        for (var 
0a.lengthhg++) {
            
a[g];
            if (
f[0] == "M")f[1], f[2], d.push(b), e.push(c); else {
                var 
bF(bcf[1], f[2], f[3], f[4], f[5], f[6]);
                
d[n](i.min.xi.max.x), e[n](i.min.yi.max.y), f[5], f[6]
            }
        }
        var 
y[m](0d), y[m](0e);
        return{
xjykwidthx[m](0d) - jheightx[m](0e) - k}
    }, 
null, function (a) {
        return{
xa.xya.ywidtha.widthheighta.height}
    }), 
by = function (b) {
        var 
= [];
        if (!
a.is(bE) || !a.is(&& b[0], E))a.parsePathString(b);
        for (var 
0b.lengthed++) {
            
c[d] = [];
            for (var 
0b[d].lengthgf++)c[d][f] = b[d][f]
        }
        
c.toString a._path2string;
        return 
c
    
}, bz a._pathToRelative bt(function (b) {
        if (!
a.is(bE) || !a.is(&& b[0], E))a.parsePathString(b);
        var 
= [], 00000;
        
b[0][0] == "M" && (b[0][1], b[0][2], deh++, c.push(["M"de]));
        for (var 
hb.lengthji++) {
            var 
c[i] = [], b[i];
            if (
l[0] != v.call(l[0])) {
                
k[0] = v.call(l[0]);
                switch (
k[0]) {
                    case
"a":
                        
k[1] = l[1], k[2] = l[2], k[3] = l[3], k[4] = l[4], k[5] = l[5], k[6] = +(l[6] - d).toFixed(3), k[7] = +(l[7] - e).toFixed(3);
                        break;
                    case
"v":
                        
k[1] = +(l[1] - e).toFixed(3);
                        break;
                    case
"m":
                        
l[1], l[2];
                    default:
                        for (var 
1l.lengthnm++)k[m] = +(l[m] - (e)).toFixed(3)
                }
            } else {
                
c[i] = [], l[0] == "m" && (l[1] + dl[2] + e);
                for (var 
0l.lengthpo++)c[i][o] = l[o]
            }
            var 
c[i].length;
            switch (
c[i][0]) {
                case
"z":
                    
fg;
                    break;
                case
"h":
                    
+= +c[i][1];
                    break;
                case
"v":
                    
+= +c[i][1];
                    break;
                default:
                    
+= +c[i][2], += +c[i][1]
            }
        }
        
c.toString a._path2string;
        return 
c
    
}, 0by), bA a._pathToAbsolute bt(function (b) {
        if (!
a.is(bE) || !a.is(&& b[0], E))a.parsePathString(b);
        if (!
|| !b.length)return[
            [
"M"00]
        ];
        var 
= [], 00000;
        
b[0][0] == "M" && (= +b[0][1], = +b[0][2], deh++, c[0] = ["M"de]);
        for (var 
ijhb.lengthlk++) {
            
c.push(= []), b[k];
            if (
j[0] != S.call(j[0])) {
                
i[0] = S.call(j[0]);
                switch (
i[0]) {
                    case
"A":
                        
i[1] = j[1], i[2] = j[2], i[3] = j[3], i[4] = j[4], i[5] = j[5], i[6] = +(j[6] + d), i[7] = +(j[7] + e);
                        break;
                    case
"V":
                        
i[1] = +j[1] + e;
                        break;
                    case
"H":
                        
i[1] = +j[1] + d;
                        break;
                    case
"R":
                        var 
= [de][n](j.slice(1));
                        for (var 
2m.lengthpo++)m[o] = +m[o] + dm[++o] = +m[o] + e;
                        
c.pop(), c[n](bw(m));
                        break;
                    case
"M":
                        
= +j[1] + d= +j[2] + e;
                    default:
                        for (
1j.lengthpo++)i[o] = +j[o] + (e)
                }
            } else if (
j[0] == "R")= [de][n](j.slice(1)), c.pop(), c[n](bw(m)), = ["R"][n](j.slice(-2)); else for (var 0j.lengthrq++)i[q] = j[q];
            switch (
i[0]) {
                case
"Z":
                    
fg;
                    break;
                case
"H":
                    
i[1];
                    break;
                case
"V":
                    
i[1];
                    break;
                case
"M":
                    
i[i.length 2], i[i.length 1];
                default:
                    
i[i.length 2], i[i.length 1]
            }
        }
        
c.toString a._path2string;
        return 
c
    
}, nullby), bB = function (abcd) {
        return[
abcdcd]
    }, 
bC = function (abcdef) {
        var 
33;
        return[
cdcdef]
    }, 
bD = function (abcdefghij) {
        var 
120 180180 * (+|| 0), = [], obt(function (abc) {
            var 
w.cos(c) - w.sin(c), w.sin(c) + w.cos(c);
            return{
xdye}
        });
        if (!
j) {
            
p(ab, -l), o.xo.yp(hi, -l), o.xo.y;
            var 
w.cos(180 e), w.sin(180 e), = (h) / 2= (i) / 2/ (c) + / (d);
            
&& (w.sqrt(v), cd);
            var 
cd= (== ? -1) * w.sqrt(z((t) / (t))), + (h) / 2* -+ (i) / 2w.asin(((D) / d).toFixed(9)), w.asin(((D) / d).toFixed(9));
            
EF&& (E), && (F), && && (2), !&& && (2)
        } else 
j[0], j[1], j[2], j[3];
        var 
E;
        if (
z(G) > k) {
            var 
Fhi;
            
* (&& : -1), w.cos(F), w.sin(F), bD(hicde0gIJ, [FHCD])
        }
        
E;
        var 
w.cos(E), w.sin(E), w.cos(F), w.sin(F), w.tan(4), OO= [ab], = [LK], = [NM], = [hi];
        
S[0] = R[0] - S[0], S[1] = R[1] - S[1];
        if (
j)return[STU][n](m);
        
= [STU][n](m).join()[s](",");
        var 
= [];
        for (var 
0m.lengthXW++)V[W] = p(m[1], m[W], l).p(m[W], m[1], l).x;
        return 
V
    
}, bE = function (abcdefghi) {
        var 
i;
        return{
xA(j3) * A(j2) * A(i3) * gyA(j3) * A(j2) * A(i3) * h}
    }, 
bF bt(function (abcdefgh) {
        var 
- (c), * (a) - * (c), c= (-w.sqrt(k)) / i= (-w.sqrt(k)) / i= [bh], = [ag], q;
        
z(l) > "1e12" && (.5), z(n) > "1e12" && (.5), && && (bE(abcdefghl), p.push(q.x), o.push(q.y)), && && (bE(abcdefghn), p.push(q.x), o.push(q.y)), - (d), * (b) - * (d), d= (-w.sqrt(k)) / i= (-w.sqrt(k)) / iz(l) > "1e12" && (.5), z(n) > "1e12" && (.5), && && (bE(abcdefghl), p.push(q.x), o.push(q.y)), && && (bE(abcdefghn), p.push(q.x), o.push(q.y));
        return{
min: {xy[m](0p), yy[m](0o)}, max: {xx[m](0p), yx[m](0o)}}
    }), 
bG a._path2curve bt(function (ab) {
        var 
bA(a), && bA(b), = {x0y0bx0by0X0Y0qxnullqynull}, = {x0y0bx0by0X0Y0qxnullqynull}, = function (ab) {
            var 
cd;
            if (!
a)return["C"b.xb.yb.xb.yb.xb.y];
            !(
a[0]in{T1Q1}) && (b.qx b.qy null);
            switch (
a[0]) {
                case
"M":
                    
b.a[1], b.a[2];
                    break;
                case
"A":
                    
= ["C"][n](bD[m](0, [b.xb.y][n](a.slice(1))));
                    break;
                case
"S":
                    
b.+ (b.- (b.bx || b.x)), b.+ (b.- (b.by || b.y)), = ["C"cd][n](a.slice(1));
                    break;
                case
"T":
                    
b.qx b.+ (b.- (b.qx || b.x)), b.qy b.+ (b.- (b.qy || b.y)), = ["C"][n](bC(b.xb.yb.qxb.qya[1], a[2]));
                    break;
                case
"Q":
                    
b.qx a[1], b.qy a[2], = ["C"][n](bC(b.xb.ya[1], a[2], a[3], a[4]));
                    break;
                case
"L":
                    
= ["C"][n](bB(b.xb.ya[1], a[2]));
                    break;
                case
"H":
                    
= ["C"][n](bB(b.xb.ya[1], b.y));
                    break;
                case
"V":
                    
= ["C"][n](bB(b.xb.yb.xa[1]));
                    break;
                case
"Z":
                    
= ["C"][n](bB(b.xb.yb.Xb.Y))
            }
            return 
a
        
}, = function (ab) {
            if (
a[b].length 7) {
                
a[b].shift();
                var 
a[b];
                while (
e.length)a.splice(b++, 0, ["C"][n](e.splice(06)));
                
a.splice(b1), x(c.length&& d.length || 0)
            }
        }, 
= function (abefg) {
            
&& && a[g][0] == "M" && b[g][0] != "M" && (b.splice(g0, ["M"f.xf.y]), e.bx 0e.by 0e.a[g][1], e.a[g][2], x(c.length&& d.length || 0))
        };
        for (var 
0x(c.length&& d.length || 0); kj++) {
            
c[j] = g(c[j], e), h(cj), && (d[j] = g(d[j], f)), && h(dj), i(cdefj), i(dcfej);
            var 
c[j], && d[j], l.length&& o.length;
            
e.l[2], e.l[1], e.bx Q(l[4]) || e.xe.by Q(l[3]) || e.yf.bx && (Q(o[4]) || f.x), f.by && (Q(o[3]) || f.y), f.&& o[2], f.&& o[1]
        }
        return 
? [cd] : c
    
}, nullby), bH a._parseDots bt(function (b) {
        var 
= [];
        for (var 
0b.lengthed++) {
            var 
= {}, b[d].match(/^([^:]*):?([d.]*)/);
            
f.color a.getRGB(g[1]);
            if (
f.color.error)return null;
            
f.color f.color.hexg[2] && (f.offset g[2] + "%"), c.push(f)
        }
        for (
1c.length 1ed++)if (!c[d].offset) {
            var 
Q(c[1].offset || 0), 0;
            for (var 
1ej++)if (c[j].offset) {
                
c[j].offset;
                break
            }
            
|| (100e), Q(i);
            var 
= (h) / (1);
            for (; 
jd++)+= kc[d].offset "%"
        
}
        return 
c
    
}), bI a._tear = function (ab) {
        
== b.top && (b.top a.prev), == b.bottom && (b.bottom a.next), a.next && (a.next.prev a.prev), a.prev && (a.prev.next a.next)
    }, 
bJ a._tofront = function (ab) {
        
b.top !== && (bI(ab), a.next nulla.prev b.topb.top.next ab.top a)
    }, 
bK a._toback = function (ab) {
        
b.bottom !== && (bI(ab), a.next b.bottoma.prev nullb.bottom.prev ab.bottom a)
    }, 
bL a._insertafter = function (abc) {
        
bI(ac), == c.top && (c.top a), b.next && (b.next.prev a), a.next b.nexta.prev bb.next a
    
}, bM a._insertbefore = function (abc) {
        
bI(ac), == c.bottom && (c.bottom a), b.prev && (b.prev.next a), a.prev b.prevb.prev aa.next b
    
}, bN a._extractTransform = function (bc) {
        if (
== null)return b._.transform;
        
r(c).replace(/.{3}|u2026/gb._.transform || p);
        var 
a.parseTransformString(c), 00011b._= new bQ;
        
j.transform || [];
        if (
d)for (var 0d.lengthml++) {
            var 
d[l], n.lengthr(n[0]).toLowerCase(), n[0] != qk.invert() : 0uvwxy;
            
== "t" && == ? (t.x(00), t.y(00), t.x(n[1], n[2]), t.y(n[1], n[2]), k.translate(uv)) : k.translate(n[1], n[2]) : == "r" == ? (|| b.getBBox(1), k.rotate(n[1], y.y.width 2y.y.height 2), += n[1]) : == && (? (t.x(n[2], n[3]), t.y(n[2], n[3]), k.rotate(n[1], wx)) : k.rotate(n[1], n[2], n[3]), += n[1]) : == "s" == || == ? (|| b.getBBox(1), k.scale(n[1], n[1], y.y.width 2y.y.height 2), *= n[1], *= n[1]) : == && (? (t.x(n[3], n[4]), t.y(n[3], n[4]), k.scale(n[1], n[2], wx)) : k.scale(n[1], n[2], n[3], n[4]), *= n[1], *= n[2]) : == "m" && == && k.add(n[1], n[2], n[3], n[4], n[5], n[6]), j.dirtyT 1b.matrix k
        
}
        
b.matrix kj.sx hj.sy ij.deg ej.dx k.ej.dy k.f== && == && !&& j.bbox ? (j.bbox.+= +fj.bbox.+= +g) : j.dirtyT 1
    
}, bO = function (a) {
        var 
a[0];
        switch (
b.toLowerCase()) {
            case
"t":
                return[
b00];
            case
"m":
                return[
b100100];
            case
"r":
                return 
a.length == ? [b0a[2], a[3]] : [b0];
            case
"s":
                return 
a.length == ? [b11a[3], a[4]] : a.length == ? [b11] : [b1]
        }
    }, 
bP a._equaliseTransform = function (bc) {
        
r(c).replace(/.{3}|u2026/gb), a.parseTransformString(b) || [], a.parseTransformString(c) || [];
        var 
x(b.lengthc.length), = [], = [], 0hijk;
        for (; 
dg++) {
            
b[g] || bO(c[g]), c[g] || bO(j);
            if (
j[0] != k[0] || j[0].toLowerCase() == "r" && (j[2] != k[2] || j[3] != k[3]) || j[0].toLowerCase() == "s" && (j[3] != k[3] || j[4] != k[4]))return;
            
e[g] = [], f[g] = [];
            for (
0x(j.lengthk.length); ih++)h in j && (e[g][h] = j[h]), h in k && (f[g][h] = k[h])
        }
        return{
frometof}
    };
    
a._getContainer = function (bcde) {
        var 
f;
        
== null && !a.is(b"object") ? h.doc.getElementById(b) : b;
        if (
!= null) {
            if (
f.tagName)return == null ? {containerfwidthf.style.pixelWidth || f.offsetWidthheightf.style.pixelHeight || f.offsetHeight} : {containerfwidthcheightd};
            return{
container1xbycwidthdheighte}
        }
    }, 
a.pathToRelative bza._engine = {}, a.path2curve bGa.matrix = function (abcdef) {
        return new 
bQ(abcdef)
    }, function (
b) {
        function 
d(a) {
            var 
w.sqrt(c(a));
            
a[0] && (a[0] /= b), a[1] && (a[1] /= b)
        }

        function 
c(a) {
            return 
a[0] * a[0] + a[1] * a[1]
        }

        
b.add = function (abcdef) {
            var 
= [
                [],
                [],
                []
            ], 
= [
                [
this.athis.cthis.e],
                [
this.bthis.dthis.f],
                [
001]
            ], 
= [
                [
ace],
                [
bdf],
                [
001]
            ], 
jklm;
            
&& instanceof bQ && (= [
                [
a.aa.ca.e],
                [
a.ba.da.f],
                [
001]
            ]);
            for (
03j++)for (03k++) {
                
0;
                for (
03l++)+= h[j][l] * i[l][k];
                
g[j][k] = m
            
}
            
this.g[0][0], this.g[1][0], this.g[0][1], this.g[1][1], this.g[0][2], this.g[1][2]
        }, 
b.invert = function () {
            var 
thisa.a.a.a.c;
            return new 
bQ(a.b, -a.b, -a.ba.b, (a.a.a.a.e) / b, (a.a.a.a.f) / b)
        }, 
b.clone = function () {
            return new 
bQ(this.athis.bthis.cthis.dthis.ethis.f)
        }, 
b.translate = function (ab) {
            
this.add(1001ab)
        }, 
b.scale = function (abcd) {
            
== null && (a), (|| d) && this.add(1001cd), this.add(a00b00), (|| d) && this.add(1001, -c, -d)
        }, 
b.rotate = function (bcd) {
            
a.rad(b), || 0|| 0;
            var 
= +w.cos(b).toFixed(9), = +w.sin(b).toFixed(9);
            
this.add(ef, -fecd), this.add(1001, -c, -d)
        }, 
b.= function (ab) {
            return 
this.this.this.e
        
}, b.= function (ab) {
            return 
this.this.this.f
        
}, b.get = function (a) {
            return+
this[r.fromCharCode(97 a)].toFixed(4)
        }, 
b.toString = function () {
            return 
a.svg "matrix(" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() + ")" : [this.get(0), this.get(2), this.get(1), this.get(3), 00].join()
        }, 
b.toFilter = function () {
            return
"progid:DXImageTransform.Microsoft.Matrix(M11=" this.get(0) + ", M12=" this.get(2) + ", M21=" this.get(1) + ", M22=" this.get(3) + ", Dx=" this.get(4) + ", Dy=" this.get(5) + ", sizingmethod='auto expand')"
        
}, b.offset = function () {
            return[
this.e.toFixed(4), this.f.toFixed(4)]
        }, 
b.split = function () {
            var 
= {};
            
b.dx this.eb.dy this.f;
            var 
= [
                [
this.athis.c],
                [
this.bthis.d]
            ];
            
b.scalex w.sqrt(c(e[0])), d(e[0]), b.shear e[0][0] * e[1][0] + e[0][1] * e[1][1], e[1] = [e[1][0] - e[0][0] * b.sheare[1][1] - e[0][1] * b.shear], b.scaley w.sqrt(c(e[1])), d(e[1]), b.shear /= b.scaley;
            var 
= -e[0][1], e[1][1];
            
? (b.rotate a.deg(w.acos(g)), && (b.rotate 360 b.rotate)) : b.rotate a.deg(w.asin(f)), b.isSimple = !+b.shear.toFixed(9) && (b.scalex.toFixed(9) == b.scaley.toFixed(9) || !b.rotate), b.isSuperSimple = !+b.shear.toFixed(9) && b.scalex.toFixed(9) == b.scaley.toFixed(9) && !b.rotateb.noRotation = !+b.shear.toFixed(9) && !b.rotate;
            return 
b
        
}, b.toTransformString = function (a) {
            var 
|| this[s]();
            if (
b.isSimple) {
                
b.scalex = +b.scalex.toFixed(4), b.scaley = +b.scaley.toFixed(4), b.rotate = +b.rotate.toFixed(4);
                return(
b.dx && b.dy "t" + [b.dxb.dy] : p) + (b.scalex != || b.scaley != "s" + [b.scalexb.scaley00] : p) + (b.rotate "r" + [b.rotate00] : p)
            }
            return
"m" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)]
        }
    }(
bQ.prototype);
    var 
bR navigator.userAgent.match(/Version/(.*?)s/) || navigator.userAgent.match(/Chrome/(d+)/);
    
navigator.vendor == "Apple Computer, Inc." && (bR && bR[1] < || navigator.platform.slice(02) == "iP") || navigator.vendor == "Google Inc." && bR && bR[1] < k.safari = function () {
        var 
this.rect(-99, -99this.width 99this.height 99).attr({stroke"none"});
        
setTimeout(function () {
            
a.remove()
        })
    } : 
k.safari bd;
    var 
bS = function () {
        
this.returnValue = !1
    
}, bT = function () {
        return 
this.originalEvent.preventDefault()
    }, 
bU = function () {
        
this.cancelBubble = !0
    
}, bV = function () {
        return 
this.originalEvent.stopPropagation()
    }, 
bW = function () {
        if (
h.doc.addEventListener)return function (abcd) {
            var 
&& u[b] ? u[b] : b= function (e) {
                var 
h.doc.documentElement.scrollTop || h.doc.body.scrollToph.doc.documentElement.scrollLeft || h.doc.body.scrollLefte.clientX ie.clientY f;
                if (
&& u[g](b))for (var 0e.targetTouches && e.targetTouches.lengthml++)if (e.targetTouches[l].target == a) {
                    var 
e;
                    
e.targetTouches[l], e.originalEvent ne.preventDefault bTe.stopPropagation bV;
                    break
                }
                return 
c.call(dejk)
            };
            
a.addEventListener(ef, !1);
            return function () {
                
a.removeEventListener(ef, !1);
                return!
0
            
}
        };
        if (
h.doc.attachEvent)return function (abcd) {
            var 
= function (a) {
                
|| h.win.event;
                var 
h.doc.documentElement.scrollTop || h.doc.body.scrollToph.doc.documentElement.scrollLeft || h.doc.body.scrollLefta.clientX ea.clientY b;
                
a.preventDefault a.preventDefault || bSa.stopPropagation a.stopPropagation || bU;
                return 
c.call(dafg)
            };
            
a.attachEvent("on" be);
            var 
= function () {
                
a.detachEvent("on" be);
                return!
0
            
};
            return 
f
        
}
    }(), 
bX = [], bY = function (a) {
        var 
a.clientXa.clientYh.doc.documentElement.scrollTop || h.doc.body.scrollToph.doc.documentElement.scrollLeft || h.doc.body.scrollLeftfbX.length;
        while (
g--) {
            
bX[g];
            if (
o) {
                var 
a.touches.lengthj;
                while (
i--) {
                    
a.touches[i];
                    if (
j.identifier == f.el._drag.id) {
                        
j.clientXj.clientY, (a.originalEvent a.originalEvent a).preventDefault();
                        break
                    }
                }
            } else 
a.preventDefault();
            var 
f.el.nodelk.nextSiblingk.parentNodek.style.display;
            
h.win.opera && n.removeChild(k), k.style.display "none"f.el.paper.getElementByPoint(bc), k.style.display ph.win.opera && (n.insertBefore(km) : n.appendChild(k)), && eve("drag.over." f.el.idf.ell), += e+= deve("drag.move." f.el.idf.move_scope || f.elf.el._drag.xf.el._drag.ybca)
        }
    }, 
bZ = function (b) {
        
a.unmousemove(bY).unmouseup(bZ);
        var 
bX.lengthd;
        while (
c--)bX[c], d.el._drag = {}, eve("drag.end." d.el.idd.end_scope || d.start_scope || d.move_scope || d.elb);
        
bX = []
    }, 
b$ = a.el = {};
    for (var 
b_ t.lengthb_--;)(function (b) {
        
a[b] = b$[b] = function (cd) {
            
a.is(c"function") && (this.events this.events || [], this.events.push({namebfcunbindbW(this.shape || this.node || h.docbc|| this)}));
            return 
this
        
}, a["un" b] = b$["un" b] = function (a) {
            var 
this.eventsc.length;
            while (
d--)if (c[d].name == && c[d].== a) {
                
c[d].unbind(), c.splice(d1), !c.length && delete this.events;
                return 
this
            
}
            return 
this
        
}
    })(
t[b_]);
    
b$.data = function (bc) {
        var 
ba[this.id] = ba[this.id] || {};
        if (
arguments.length == 1) {
            if (
a.is(b"object")) {
                for (var 
e in b)b[g](e) && this.data(eb[e]);
                return 
this
            
}
            
eve("data.get." this.idthisd[b], b);
            return 
d[b]
        }
        
d[b] = ceve("data.set." this.idthiscb);
        return 
this
    
}, b$.removeData = function (a) {
        
== null ba[this.id] = {} : ba[this.id] && delete ba[this.id][a];
        return 
this
    
}, b$.hover = function (abcd) {
        return 
this.mouseover(ac).mouseout(b|| c)
    }, 
b$.unhover = function (ab) {
        return 
this.unmouseover(a).unmouseout(b)
    };
    var 
ca = [];
    
b$.drag = function (bcdefg) {
        function 
i(i) {
            (
i.originalEvent || i).preventDefault();
            var 
h.doc.documentElement.scrollTop || h.doc.body.scrollToph.doc.documentElement.scrollLeft || h.doc.body.scrollLeft;
            
this._drag.i.clientX kthis._drag.i.clientY jthis._drag.id i.identifier, !bX.length && a.mousemove(bY).mouseup(bZ), bX.push({elthismove_scopeestart_scopefend_scopeg}), && eve.on("drag.start." this.idc), && eve.on("drag.move." this.idb), && eve.on("drag.end." this.idd), eve("drag.start." this.id|| || thisi.clientX ki.clientY ji)
        }

        
this._drag = {}, ca.push({elthisstarti}), this.mousedown(i);
        return 
this
    
}, b$.onDragOver = function (a) {
        
eve.on("drag.over." this.ida) : eve.unbind("drag.over." this.id)
    }, 
b$.undrag = function () {
        var 
ca.length;
        while (
b--)ca[b].el == this && (this.unmousedown(ca[b].start), ca.splice(b1), eve.unbind("drag.*." this.id));
        !
ca.length && a.unmousemove(bY).unmouseup(bZ)
    }, 
k.circle = function (bcd) {
        var 
a._engine.circle(this|| 0|| 0|| 0);
        
this.__set__ && this.__set__.push(e);
        return 
e
    
}, k.rect = function (bcdef) {
        var 
a._engine.rect(this|| 0|| 0|| 0|| 0|| 0);
        
this.__set__ && this.__set__.push(g);
        return 
g
    
}, k.ellipse = function (bcde) {
        var 
a._engine.ellipse(this|| 0|| 0|| 0|| 0);
        
this.__set__ && this.__set__.push(f);
        return 
f
    
}, k.path = function (b) {
        
&& !a.is(bD) && !a.is(b[0], E) && (+= p);
        var 
a._engine.path(a.format[m](aarguments), this);
        
this.__set__ && this.__set__.push(c);
        return 
c
    
}, k.image = function (bcdef) {
        var 
a._engine.image(this|| "about:blank"|| 0|| 0|| 0|| 0);
        
this.__set__ && this.__set__.push(g);
        return 
g
    
}, k.text = function (bcd) {
        var 
a._engine.text(this|| 0|| 0r(d));
        
this.__set__ && this.__set__.push(e);
        return 
e
    
}, k.set = function (b) {
        !
a.is(b"array") && (= Array.prototype.splice.call(arguments0arguments.length));
        var 
= new cs(b);
        
this.__set__ && this.__set__.push(c);
        return 
c
    
}, k.setStart = function (a) {
        
this.__set__ || this.set()
    }, 
k.setFinish = function (a) {
        var 
this.__set__;
        
delete this.__set__;
        return 
b
    
}, k.setSize = function (bc) {
        return 
a._engine.setSize.call(thisbc)
    }, 
k.setViewBox = function (bcdef) {
        return 
a._engine.setViewBox.call(thisbcdef)
    }, 
k.top k.bottom nullk.raphael a;
    var 
cb = function (a) {
        var 
a.getBoundingClientRect(), a.ownerDocumentc.bodyc.documentElemente.clientTop || d.clientTop || 0e.clientLeft || d.clientLeft || 0b.top + (h.win.pageYOffset || e.scrollTop || d.scrollTop) - fb.left + (h.win.pageXOffset || e.scrollLeft || d.scrollLeft) - g;
        return{
yixj}
    };
    
k.getElementByPoint = function (ab) {
        var 
thisc.canvash.doc.elementFromPoint(ab);
        if (
h.win.opera && e.tagName == "svg") {
            var 
cb(d), d.createSVGRect();
            
g.f.xg.f.yg.width g.height 1;
            var 
d.getIntersectionList(gnull);
            
i.length && (i[i.length 1])
        }
        if (!
e)return null;
        while (
e.parentNode && != d.parentNode && !e.raphael)e.parentNode;
        
== c.canvas.parentNode && (d), && e.raphael c.getById(e.raphaelid) : null;
        return 
e
    
}, k.getById = function (a) {
        var 
this.bottom;
        while (
b) {
            if (
b.id == a)return b;
            
b.next
        
}
        return 
null
    
}, k.forEach = function (ab) {
        var 
this.bottom;
        while (
c) {
            if (
a.call(bc) === !1)return this;
            
c.next
        
}
        return 
this
    
}, b$.getBBox = function (a) {
        if (
this.removed)return{};
        var 
this._;
        if (
a) {
            if (
b.dirty || !b.bboxwt)this.realPath bh[this.type](this), b.bboxwt bx(this.realPath), b.bboxwt.toString cdb.dirty 0;
            return 
b.bboxwt
        
}
        if (
b.dirty || b.dirtyT || !b.bbox) {
            if (
b.dirty || !this.realPath)b.bboxwt 0this.realPath bh[this.type](this);
            
b.bbox bx(bi(this.realPaththis.matrix)), b.bbox.toString cdb.dirty b.dirtyT 0
        
}
        return 
b.bbox
    
}, b$.clone = function () {
        if (
this.removed)return null;
        var 
this.paper[this.type]().attr(this.attr());
        
this.__set__ && this.__set__.push(a);
        return 
a
    
}, b$.glow = function (a) {
        if (
this.type == "text")return null;
        
|| {};
        var 
= {width: (a.width || 10) + (+this.attr("stroke-width") || 1), filla.fill || !1opacitya.opacity || .5offsetxa.offsetx || 0offsetya.offsety || 0colora.color || "#000"}, b.width 2this.paperd.set(), this.realPath || bh[this.type](this);
        
this.matrix bi(fthis.matrix) : f;
        for (var 
11g++)e.push(d.path(f).attr({strokeb.colorfillb.fill b.color "none""stroke-linejoin""round""stroke-linecap""round""stroke-width": +(b.width g).toFixed(3), opacity: +(b.opacity c).toFixed(3)}));
        return 
e.insertBefore(this).translate(b.offsetxb.offsety)
    };
    var 
ce = {}, cf = function (bcdefghij) {
        var 
0100= [bcdefghi].join(), ce[m], op;
        !
&& (ce[m] = = {data: []}), n.timer && clearTimeout(n.timer), n.timer setTimeout(function () {
            
delete ce[m]
        }, 
2e3);
        if (
!= null && !n.precision) {
            var 
cf(bcdefghi);
            
n.precision = ~~10n.data = []
        }
        
n.precision || l;
        for (var 
01r++) {
            
n.data[l] ? n.data[l] : (a.findDotsAtSegment(bcdefghil), n.data[l] = p), && (+= A(A(o.p.x2) + A(o.p.y2), .5));
            if (
!= null && >= j)return p;
            
p
        
}
        if (
== null)return k
    
}, cg = function (bc) {
        return function (
def) {
            
bG(d);
            var 
ghij""= {}, m0;
            for (var 
0d.lengthpo++) {
                
d[o];
                if (
i[0] == "M")= +i[1], = +i[2]; else {
                    
cf(ghi[1], i[2], i[3], i[4], i[5], i[6]);
                    if (
e) {
                        if (
&& !l.start) {
                            
cf(ghi[1], i[2], i[3], i[4], i[5], i[6], n), += ["C" m.start.xm.start.ym.m.xm.m.ym.xm.y];
                            if (
f)return k;
                            
l.start k= ["M" m.xm."C" m.n.xm.n.ym.end.xm.end.yi[5], i[6]].join(), += j= +i[5], = +i[6];
                            continue
                        }
                        if (!
&& !c) {
                            
cf(ghi[1], i[2], i[3], i[4], i[5], i[6], n);
                            return{
xm.xym.yalpham.alpha}
                        }
                    }
                    
+= j= +i[5], = +i[6]
                }
                
+= i.shift() + i
            
}
            
l.end ka.findDotsAtSegment(ghi[0], i[1], i[2], i[3], i[4], i[5], 1), m.alpha && (= {xm.xym.yalpham.alpha});
            return 
m
        
}
    }, 
ch cg(1), ci cg(), cj cg(01);
    
a.getTotalLength cha.getPointAtLength cia.getSubpath = function (abc) {
        if (
this.getTotalLength(a) - 1e-6)return cj(ab).end;
        var 
cj(ac1);
        return 
cj(db).end d
    
}, b$.getTotalLength = function () {
        if (
this.type == "path") {
            if (
this.node.getTotalLength)return this.node.getTotalLength();
            return 
ch(this.attrs.path)
        }
    }, 
b$.getPointAtLength = function (a) {
        if (
this.type == "path")return ci(this.attrs.patha)
    }, 
b$.getSubpath = function (bc) {
        if (
this.type == "path")return a.getSubpath(this.attrs.pathbc)
    };
    var 
ck a.easing_formulas = {linear: function (a) {
        return 
a
    
}, "<": function (a) {
        return 
A(a1.7)
    }, 
">": function (a) {
        return 
A(a.48)
    }, 
"<>": function (a) {
        var 
.48 1.04w.sqrt(.1734 b), bA(z(d), 3) * (? -1), = -bA(z(f), 3) * (? -1), .5;
        return(
h) * h
    
}, backIn: function (a) {
        var 
1.70158;
        return 
* ((1) * b)
    }, 
backOut: function (a) {
        
1;
        var 
1.70158;
        return 
* ((1) * b) + 1
    
}, elastic: function (a) {
        if (
== !!a)return a;
        return 
A(2, -10 a) * w.sin((.075) * .3) + 1
    
}, bounce: function (a) {
        var 
7.56252.75d;
        
? (-= 1.5 c.75) : 2.5 ? (-= 2.25 c.9375) : (-= 2.625 c.984375);
        return 
d
    
}};
    
ck.easeIn ck["ease-in"] = ck["<"], ck.easeOut ck["ease-out"] = ck[">"], ck.easeInOut ck["ease-in-out"] = ck["<>"], ck["back-in"] = ck.backInck["back-out"] = ck.backOut;
    var 
cl = [], cm window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (a) {
        
setTimeout(a16)
    }, 
cn = function () {
        var 
= +(new Date), 0;
        for (; 
cl.lengthc++) {
            var 
cl[c];
            if (
d.el.removed || d.paused)continue;
            var 
d.startd.msd.easingd.fromd.diffd.tod.td.el= {}, p= {}, s;
            
d.initstatus ? (= (d.initstatus d.anim.top d.prev) / (d.percent d.prev) * fd.status d.initstatusdelete d.initstatusd.stop && cl.splice(c--, 1)) : d.status = (d.prev + (d.percent d.prev) * (f)) / d.anim.top;
            if (
0)continue;
            if (
f) {
                var 
h(f);
                for (var 
u in i)if (i[g](u)) {
                    switch (
U[u]) {
                        case 
C:
                            
= +i[u] + j[u];
                            break;
                        case
"colour":
                            
"rgb(" + [co(O(i[u].j[u].r)), co(O(i[u].j[u].g)), co(O(i[u].j[u].b))].join(",") + ")";
                            break;
                        case
"path":
                            
= [];
                            for (var 
0i[u].lengthwv++) {
                                
p[v] = [i[u][v][0]];
                                for (var 
1i[u][v].lengthyx++)p[v][x] = +i[u][v][x] + j[u][v][x];
                                
p[v] = p[v].join(q)
                            }
                            
p.join(q);
                            break;
                        case
"transform":
                            if (
j[u].real) {
                                
= [];
                                for (
0i[u].lengthwv++) {
                                    
p[v] = [i[u][v][0]];
                                    for (
1i[u][v].lengthyx++)p[v][x] = i[u][v][x] + j[u][v][x]
                                }
                            } else {
                                var 
= function (a) {
                                    return+
i[u][a] + j[u][a]
                                };
                                
= [
                                    [
"m"z(0), z(1), z(2), z(3), z(4), z(5)]
                                ]
                            }
                            break;
                        case
"csv":
                            if (
== "clip-rect") {
                                
= [], 4;
                                while (
v--)p[v] = +i[u][v] + j[u][v]
                            }
                            break;
                        default:
                            var 
= [][n](i[u]);
                            
= [], m.paper.customAttributes[u].length;
                            while (
v--)p[v] = +A[v] + j[u][v]
                    }
                    
o[u] = p
                
}
                
m.attr(o), function (abc) {
                    
setTimeout(function () {
                        
eve("anim.frame." abc)
                    })
                }(
m.idmd.anim)
            } else {
                (function (
bcd) {
                    
setTimeout(function () {
                        
eve("anim.frame." c.idcd), eve("anim.finish." c.idcd), a.is(b"function") && b.call(c)
                    })
                })(
d.callbackmd.anim), m.attr(k), cl.splice(c--, 1);
                if (
d.repeat && !d.next) {
                    for (
s in k)k[g](s) && (r[s] = d.totalOrigin[s]);
                    
d.el.attr(r), cr(d.animd.eld.anim.percents[0], nulld.totalOrigind.repeat 1)
                }
                
d.next && !d.stop && cr(d.animd.eld.nextnulld.totalOrigind.repeat)
            }
        }
        
a.svg && && m.paper && m.paper.safari(), cl.length && cm(cn)
    }, 
co = function (a) {
        return 
255 255 a
    
};
    
b$.animateWith = function (bcdefg) {
        var 
a.animation(defg) : cb.status(c);
        return 
this.animate(h).status(hc.ms h.ms)
    }, 
b$.onAnimation = function (a) {
        
eve.on("anim.frame." this.ida) : eve.unbind("anim.frame." this.id);
        return 
this
    
}, cq.prototype.delay = function (a) {
        var 
= new cq(this.animthis.ms);
        
b.times this.timesb.del = +|| 0;
        return 
b
    
}, cq.prototype.repeat = function (a) {
        var 
= new cq(this.animthis.ms);
        
b.del this.delb.times w.floor(x(a0)) || 1;
        return 
b
    
}, a.animation = function (bcde) {
        if (
instanceof cq)return b;
        if (
a.is(d"function") || !d)|| || nullnull;
        
Object(b), = +|| 0;
        var 
= {}, hi;
        for (
i in b)b[g](i) && Q(i) != && Q(i) + "%" != && (= !0f[i] = b[i]);
        if (!
h)return new cq(bc);
        
&& (f.easing d), && (f.callback e);
        return new 
cq({100f}, c)
    }, 
b$.animate = function (bcde) {
        var 
this;
        if (
f.removed) {
            
&& e.call(f);
            return 
f
        
}
        var 
instanceof cq a.animation(bcde);
        
cr(gfg.percents[0], nullf.attr());
        return 
f
    
}, b$.setTime = function (ab) {
        
&& != null && this.status(ay(ba.ms) / a.ms);
        return 
this
    
}, b$.status = function (ab) {
        var 
= [], 0ef;
        if (
!= null) {
            
cr(athis, -1y(b1));
            return 
this
        
}
        
cl.length;
        for (; 
ed++) {
            
cl[d];
            if (
f.el.id == this.id && (!|| f.anim == a)) {
                if (
a)return f.status;
                
c.push({animf.animstatusf.status})
            }
        }
        if (
a)return 0;
        return 
c
    
}, b$.pause = function (a) {
        for (var 
0cl.lengthb++)cl[b].el.id == this.id && (!|| cl[b].anim == a) && eve("anim.pause." this.idthiscl[b].anim) !== !&& (cl[b].paused = !0);
        return 
this
    
}, b$.resume = function (a) {
        for (var 
0cl.lengthb++)if (cl[b].el.id == this.id && (!|| cl[b].anim == a)) {
            var 
cl[b];
            
eve("anim.resume." this.idthisc.anim) !== !&& (delete c.pausedthis.status(c.animc.status))
        }
        return 
this
    
}, b$.stop = function (a) {
        for (var 
0cl.lengthb++)cl[b].el.id == this.id && (!|| cl[b].anim == a) && eve("anim.stop." this.idthiscl[b].anim) !== !&& cl.splice(b--, 1);
        return 
this
    
}, b$.toString = function () {
        return
"Raphaël’s object"
    
};
    var 
cs = function (a) {
        
this.items = [], this.length 0this.type "set";
        if (
a)for (var 0a.lengthcb++)a[b] && (a[b].constructor == b$.constructor || a[b].constructor == cs) && (this[this.items.length] = this.items[this.items.length] = a[b], this.length++)
    }, 
ct cs.prototype;
    
ct.push = function () {
        var 
ab;
        for (var 
0arguments.lengthdc++)arguments[c], && (a.constructor == b$.constructor || a.constructor == cs) && (this.items.lengththis[b] = this.items[b] = athis.length++);
        return 
this
    
}, ct.pop = function () {
        
this.length && delete this[this.length--];
        return 
this.items.pop()
    }, 
ct.forEach = function (ab) {
        for (var 
0this.items.lengthdc++)if (a.call(bthis.items[c], c) === !1)return this;
        return 
this
    
};
    for (var 
cu in b$)b$[g](cu) && (ct[cu] = function (a) {
        return function () {
            var 
arguments;
            return 
this.forEach(function (c) {
                
c[a][m](cb)
            })
        }
    }(
cu));
    
ct.attr = function (bc) {
        if (
&& a.is(bE) && a.is(b[0], "object"))for (var 0b.lengthed++)this.items[d].attr(b[d]); else for (var 0this.items.lengthgf++)this.items[f].attr(bc);
        return 
this
    
}, ct.clear = function () {
        while (
this.length)this.pop()
    }, 
ct.splice = function (abc) {
        
x(this.length a0) : ax(0y(this.length ab));
        var 
= [], = [], = [], g;
        for (
2arguments.lengthg++)f.push(arguments[g]);
        for (
0bg++)e.push(this[g]);
        for (; 
this.length ag++)d.push(this[g]);
        var 
f.length;
        for (
0d.lengthg++)this.items[g] = this[g] = f[g] : d[h];
        
this.items.length this.length -= h;
        while (
this[g])delete this[g++];
        return new 
cs(e)
    }, 
ct.exclude = function (a) {
        for (var 
0this.lengthcb++)if (this[b] == a) {
            
this.splice(b1);
            return!
0
        
}
    }, 
ct.animate = function (bcde) {
        (
a.is(d"function") || !d) && (|| null);
        var 
this.items.lengthfhthisj;
        if (!
f)return this;
        
&& (= function () {
            !--
&& e.call(i)
        }), 
a.is(dD) ? j;
        var 
a.animation(bcdj);
        
this.items[--g].animate(k);
        while (
g--)this.items[g] && !this.items[g].removed && this.items[g].animateWith(hk);
        return 
this
    
}, ct.insertAfter = function (a) {
        var 
this.items.length;
        while (
b--)this.items[b].insertAfter(a);
        return 
this
    
}, ct.getBBox = function () {
        var 
= [], = [], = [], = [];
        for (var 
this.items.lengthe--;)if (!this.items[e].removed) {
            var 
this.items[e].getBBox();
            
a.push(f.x), b.push(f.y), c.push(f.f.width), d.push(f.f.height)
        }
        
y[m](0a), y[m](0b);
        return{
xaybwidthx[m](0c) - aheightx[m](0d) - b}
    }, 
ct.clone = function (a) {
        
= new cs;
        for (var 
0this.items.lengthcb++)a.push(this.items[b].clone());
        return 
a
    
}, ct.toString = function () {
        return
"Raphaël‘s set"
    
}, a.registerFont = function (a) {
        if (!
a.face)return a;
        
this.fonts this.fonts || {};
        var 
= {wa.wface: {}, glyphs: {}}, a.face["font-family"];
        for (var 
d in a.face)a.face[g](d) && (b.face[d] = a.face[d]);
        
this.fonts[c] ? this.fonts[c].push(b) : this.fonts[c] = [b];
        if (!
a.svg) {
            
b.face["units-per-em"] = R(a.face["units-per-em"], 10);
            for (var 
e in a.glyphs)if (a.glyphs[g](e)) {
                var 
a.glyphs[e];
                
b.glyphs[e] = {wf.wk: {}, df.&& "M" f.d.replace(/[mlcxtrv]/g, function (a) {
                    return{
l"L"c"C"x"z"t"m"r"l"v"c"}[a] || "M"
                
}) + "z"};
                if (
f.k)for (var h in f.k)f[g](h) && (b.glyphs[e].k[h] = f.k[h])
            }
        }
        return 
a
    
}, k.getFont = function (bcde) {
        
|| "normal"|| "normal"= +|| {normal400bold700lighter300bolder800}[c] || 400;
        if (!!
a.fonts) {
            var 
a.fonts[b];
            if (!
f) {
                var 
= new RegExp("(^|\s)" b.replace(/[^wds+!~.:_-]/gp) + "(\s|$)""i");
                for (var 
i in a.fonts)if (a.fonts[g](i) && h.test(i)) {
                    
a.fonts[i];
                    break
                }
            }
            var 
j;
            if (
f)for (var 0f.lengthlk++) {
                
f[k];
                if (
j.face["font-weight"] == && (j.face["font-style"] == || !j.face["font-style"]) && j.face["font-stretch"] == e)break
            }
            return 
j
        
}
    }, 
k.print = function (bdefghi) {
        
|| "middle"x(y(|| 01), -1);
        var 
this.set(), r(e)[s](p), 0pn;
        
a.is(fe) && (this.getFont(f));
        if (
f) {
            
= (|| 16) / f.face["units-per-em"];
            var 
f.face.bbox[s](c), = +o[0], = +o[1] + (== "baseline" o[3] - o[1] + +f.face.descent : (o[3] - o[1]) / 2);
            for (var 
0k.lengthvu++) {
                var 
&& f.glyphs[k[1]] || {}, f.glyphs[k[u]];
                
+= ? (w.|| f.w) + (w.&& w.k[k[u]] || 0) + f.0&& z.&& j.push(this.path(z.d).attr({fill"#000"stroke"none"transform: [
                    [
"t"n0]
                ]}))
            }
            
j.transform(["...s"nnqt"t", (q) / n, (t) / n])
        }
        return 
j
    
}, k.add = function (b) {
        if (
a.is(b"array")) {
            var 
this.set(), 0b.lengthh;
            for (; 
fe++)b[e] || {}, d[g](h.type) && c.push(this[h.type]().attr(h))
        }
        return 
c
    
}, a.format = function (bc) {
        var 
a.is(cE) ? [0][n](c) : arguments;
        
&& a.is(bD) && d.length && (b.replace(e, function (ab) {
            return 
d[++b] == null d[b]
        }));
        return 
|| p
    
}, a.fullfill = function () {
        var 
= /{([^}]+)}/g= /(?:(?:^|.)(.+?)(?=[|.|$|()|[('|")(.+?)2])(())?/g, c = function (a, c, d) {
            var e = d;
            c.replace(b, function (a, b, c, d, f) {
                b = b || d, e && (b in e && (e = e[b]), typeof e == "function" && f && (e = e()))
            }), e = (e == null || e == d ? a : e) + "";
            return e
        };
        return function (b, d) {
            return String(b).replace(a, function (a, b) {
                return c(a, b, d)
            })
        }
    }(), a.ninja = function () {
        i.was ? h.win.Raphael = i.is : delete Raphael;
        return a
    }, a.st = ct, function (b, c, d) {
        function e() {
            /in/.test(b.readyState) ? setTimeout(e, 9) : a.eve("DOMload")
        }

        b.readyState == null && b.addEventListener && (b.addEventListener(c, d = function () {
            b.removeEventListener(c, d, !1), b.readyState = "complete"
        }, !1), b.readyState = "loading"), e()
    }(document, "DOMContentLoaded"), i.was ? h.win.Raphael = a : Raphael = a, eve.on("DOMload", function () {
        b = !0
    })
}(), window.Raphael.svg && function (a) {
    var b = "hasOwnProperty", c = String, d = parseFloat, e = parseInt, f = Math, g = f.max, h = f.abs, i = f.pow, j = /[, ]+/, k = a.eve, l = "", m = " ", n = "http://www.w3.org/1999/xlink", o = {block: "M5,0 0,2.5 5,5z", classic: "M5,0 0,2.5 5,5 3.5,3 3.5,2z", diamond: "M2.5,0 5,2.5 2.5,5 0,2.5z", open: "M6,1 1,3.5 6,6", oval: "M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"}, p = {};
    a.toString = function () {
        return"Your browser supports SVG.nYou are running Raphaël " + this.version
    };
    var q = function (d, e) {
        if (e) {
            typeof d == "string" && (d = q(d));
            for (var f in e)e[b](f) && (f.substring(0, 6) == "xlink:" ? d.setAttributeNS(n, f.substring(6), c(e[f])) : d.setAttribute(f, c(e[f])))
        } else d = a._g.doc.createElementNS("http://www.w3.org/2000/svg", d), d.style && (d.style.webkitTapHighlightColor = "rgba(0,0,0,0)");
        return d
    }, r = function (b, e) {
        var j = "linear", k = b.id + e, m = .5, n = .5, o = b.node, p = b.paper, r = o.style, s = a._g.doc.getElementById(k);
        if (!s) {
            e = c(e).replace(a._radial_gradient, function (a, b, c) {
                j = "radial";
                if (b && c) {
                    m = d(b), n = d(c);
                    var e = (n > .5) * 2 - 1;
                    i(m - .5, 2) + i(n - .5, 2) > .25 && (n = f.sqrt(.25 - i(m - .5, 2)) * e + .5) && n != .5 && (n = n.toFixed(5) - 1e-5 * e)
                }
                return l
            }), e = e.split(/s*-s*/);
            if (j == "linear") {
                var t = e.shift();
                t = -d(t);
                if (isNaN(t))return null;
                var u = [0, 0, f.cos(a.rad(t)), f.sin(a.rad(t))], v = 1 / (g(h(u[2]), h(u[3])) || 1);
                u[2] *= v, u[3] *= v, u[2] < 0 && (u[0] = -u[2], u[2] = 0), u[3] < 0 && (u[1] = -u[3], u[3] = 0)
            }
            var w = a._parseDots(e);
            if (!w)return null;
            k = k.replace(/[()s,xb0#]/g, "_"), b.gradient && k != b.gradient.id && (p.defs.removeChild(b.gradient), delete b.gradient);
            if (!b.gradient) {
                s = q(j + "Gradient", {id: k}), b.gradient = s, q(s, j == "radial" ? {fx: m, fy: n} : {x1: u[0], y1: u[1], x2: u[2], y2: u[3], gradientTransform: b.matrix.invert()}), p.defs.appendChild(s);
                for (var x = 0, y = w.length; x < y; x++)s.appendChild(q("stop", {offset: w[x].offset ? w[x].offset : x ? "100%" : "0%", "stop-color": w[x].color || "#fff"}))
            }
        }
        q(o, {fill: "url(#" + k + ")", opacity: 1, "fill-opacity": 1}), r.fill = l, r.opacity = 1, r.fillOpacity = 1;
        return 1
    }, s = function (a) {
        var b = a.getBBox(1);
        q(a.pattern, {patternTransform: a.matrix.invert() + " translate(" + b.x + "," + b.y + ")"})
    }, t = function (d, e, f) {
        if (d.type == "path") {
            var g = c(e).toLowerCase().split("-"), h = d.paper, i = f ? "end" : "start", j = d.node, k = d.attrs, l = k["stroke-width"], n = g.length, r = "classic", s, t, u, v, w, x = 3, y = 3, z = 5;
            while (n--)switch (g[n]) {
                case"block":
                case"classic":
                case"oval":
                case"diamond":
                case"open":
                case"none":
                    r = g[n];
                    break;
                case"wide":
                    y = 5;
                    break;
                case"narrow":
                    y = 2;
                    break;
                case"long":
                    x = 5;
                    break;
                case"short":
                    x = 2
            }
            r == "open" ? (x += 2, y += 2, z += 2, u = 1, v = f ? 4 : 1, w = {fill: "none", stroke: k.stroke}) : (v = u = x / 2, w = {fill: k.stroke, stroke: "none"}), d._.arrows ? f ? (d._.arrows.endPath && p[d._.arrows.endPath]--, d._.arrows.endMarker && p[d._.arrows.endMarker]--) : (d._.arrows.startPath && p[d._.arrows.startPath]--, d._.arrows.startMarker && p[d._.arrows.startMarker]--) : d._.arrows = {};
            if (r != "none") {
                var A = "raphael-marker-" + r, B = "raphael-marker-" + i + r + x + y;
                a._g.doc.getElementById(A) ? p[A]++ : (h.defs.appendChild(q(q("path"), {"stroke-linecap": "round", d: o[r], id: A})), p[A] = 1);
                var C = a._g.doc.getElementById(B), D;
                C ? (p[B]++, D = C.getElementsByTagName("use")[0]) : (C = q(q("marker"), {id: B, markerHeight: y, markerWidth: x, orient: "auto", refX: v, refY: y / 2}), D = q(q("use"), {"xlink:href": "#" + A, transform: (f ? " rotate(180 " + x / 2 + " " + y / 2 + ") " : m) + "scale(" + x / z + "," + y / z + ")", "stroke-width": 1 / ((x / z + y / z) / 2)}), C.appendChild(D), h.defs.appendChild(C), p[B] = 1), q(D, w);
                var E = u * (r != "diamond" && r != "oval");
                f ? (s = d._.arrows.startdx * l || 0, t = a.getTotalLength(k.path) - E * l) : (s = E * l, t = a.getTotalLength(k.path) - (d._.arrows.enddx * l || 0)), w = {}, w["marker-" + i] = "url(#" + B + ")";
                if (t || s)w.d = Raphael.getSubpath(k.path, s, t);
                q(j, w), d._.arrows[i + "Path"] = A, d._.arrows[i + "Marker"] = B, d._.arrows[i + "dx"] = E, d._.arrows[i + "Type"] = r, d._.arrows[i + "String"] = e
            } else f ? (s = d._.arrows.startdx * l || 0, t = a.getTotalLength(k.path) - s) : (s = 0, t = a.getTotalLength(k.path) - (d._.arrows.enddx * l || 0)), d._.arrows[i + "Path"] && q(j, {d: Raphael.getSubpath(k.path, s, t)}), delete d._.arrows[i + "Path"], delete d._.arrows[i + "Marker"], delete d._.arrows[i + "dx"], delete d._.arrows[i + "Type"], delete d._.arrows[i + "String"];
            for (w in p)if (p[b](w) && !p[w]) {
                var F = a._g.doc.getElementById(w);
                F && F.parentNode.removeChild(F)
            }
        }
    }, u = {"": [0], none: [0], "-": [3, 1], ".": [1, 1], "-.": [3, 1, 1, 1], "-..": [3, 1, 1, 1, 1, 1], ". ": [1, 3], "- ": [4, 3], "--": [8, 3], "- .": [4, 3, 1, 3], "--.": [8, 3, 1, 3], "--..": [8, 3, 1, 3, 1, 3]}, v = function (a, b, d) {
        b = u[c(b).toLowerCase()];
        if (b) {
            var e = a.attrs["stroke-width"] || "1", f = {round: e, square: e, butt: 0}[a.attrs["stroke-linecap"] || d["stroke-linecap"]] || 0, g = [], h = b.length;
            while (h--)g[h] = b[h] * e + (h % 2 ? 1 : -1) * f;
            q(a.node, {"stroke-dasharray": g.join(",")})
        }
    }, w = function (d, f) {
        var i = d.node, k = d.attrs, m = i.style.visibility;
        i.style.visibility = "hidden";
        for (var o in f)if (f[b](o)) {
            if (!a._availableAttrs[b](o))continue;
            var p = f[o];
            k[o] = p;
            switch (o) {
                case"blur":
                    d.blur(p);
                    break;
                case"href":
                case"title":
                case"target":
                    var u = i.parentNode;
                    if (u.tagName.toLowerCase() != "a") {
                        var w = q("a");
                        u.insertBefore(w, i), w.appendChild(i), u = w
                    }
                    o == "target" && p == "blank" ? u.setAttributeNS(n, "show", "new") : u.setAttributeNS(n, o, p);
                    break;
                case"cursor":
                    i.style.cursor = p;
                    break;
                case"transform":
                    d.transform(p);
                    break;
                case"arrow-start":
                    t(d, p);
                    break;
                case"arrow-end":
                    t(d, p, 1);
                    break;
                case"clip-rect":
                    var x = c(p).split(j);
                    if (x.length == 4) {
                        d.clip && d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);
                        var z = q("clipPath"), A = q("rect");
                        z.id = a.createUUID(), q(A, {x: x[0], y: x[1], width: x[2], height: x[3]}), z.appendChild(A), d.paper.defs.appendChild(z), q(i, {"clip-path": "url(#" + z.id + ")"}), d.clip = A
                    }
                    if (!p) {
                        var B = i.getAttribute("clip-path");
                        if (B) {
                            var C = a._g.doc.getElementById(B.replace(/(^url(#|)$)/g, l));
                            C && C.parentNode.removeChild(C), q(i, {"clip-path": l}), delete d.clip
                        }
                    }
                    break;
                case"path":
                    d.type == "path" && (q(i, {d: p ? k.path = a._pathToAbsolute(p) : "M0,0"}), d._.dirty = 1, d._.arrows && ("startString"in d._.arrows && t(d, d._.arrows.startString), "endString"in d._.arrows && t(d, d._.arrows.endString, 1)));
                    break;
                case"width":
                    i.setAttribute(o, p), d._.dirty = 1;
                    if (k.fx)o = "x", p = k.x; else break;
                case"x":
                    k.fx && (p = -k.x - (k.width || 0));
                case"rx":
                    if (o == "rx" && d.type == "rect")break;
                case"cx":
                    i.setAttribute(o, p), d.pattern && s(d), d._.dirty = 1;
                    break;
                case"height":
                    i.setAttribute(o, p), d._.dirty = 1;
                    if (k.fy)o = "y", p = k.y; else break;
                case"y":
                    k.fy && (p = -k.y - (k.height || 0));
                case"ry":
                    if (o == "ry" && d.type == "rect")break;
                case"cy":
                    i.setAttribute(o, p), d.pattern && s(d), d._.dirty = 1;
                    break;
                case"r":
                    d.type == "rect" ? q(i, {rx: p, ry: p}) : i.setAttribute(o, p), d._.dirty = 1;
                    break;
                case"src":
                    d.type == "image" && i.setAttributeNS(n, "href", p);
                    break;
                case"stroke-width":
                    if (d._.sx != 1 || d._.sy != 1)p /= g(h(d._.sx), h(d._.sy)) || 1;
                    d.paper._vbSize && (p *= d.paper._vbSize), i.setAttribute(o, p), k["stroke-dasharray"] && v(d, k["stroke-dasharray"], f), d._.arrows && ("startString"in d._.arrows && t(d, d._.arrows.startString), "endString"in d._.arrows && t(d, d._.arrows.endString, 1));
                    break;
                case"stroke-dasharray":
                    v(d, p, f);
                    break;
                case"fill":
                    var D = c(p).match(a._ISURL);
                    if (D) {
                        z = q("pattern");
                        var F = q("image");
                        z.id = a.createUUID(), q(z, {x: 0, y: 0, patternUnits: "userSpaceOnUse", height: 1, width: 1}), q(F, {x: 0, y: 0, "xlink:href": D[1]}), z.appendChild(F), function (b) {
                            a._preload(D[1], function () {
                                var a = this.offsetWidth, c = this.offsetHeight;
                                q(b, {width: a, height: c}), q(F, {width: a, height: c}), d.paper.safari()
                            })
                        }(z), d.paper.defs.appendChild(z), i.style.fill = "url(#" + z.id + ")", q(i, {fill: "url(#" + z.id + ")"}), d.pattern = z, d.pattern && s(d);
                        break
                    }
                    var G = a.getRGB(p);
                    if (!G.error)delete f.gradient, delete k.gradient, !a.is(k.opacity, "undefined") && a.is(f.opacity, "undefined") && q(i, {opacity: k.opacity}), !a.is(k["fill-opacity"], "undefined") && a.is(f["fill-opacity"], "undefined") && q(i, {"fill-opacity": k["fill-opacity"]}); else if ((d.type == "circle" || d.type == "ellipse" || c(p).charAt() != "r") && r(d, p)) {
                        if ("opacity"in k || "fill-opacity"in k) {
                            var H = a._g.doc.getElementById(i.getAttribute("fill").replace(/^url(#|)$/g, l));
                            if (H) {
                                var I = H.getElementsByTagName("stop");
                                q(I[I.length - 1], {"stop-opacity": ("opacity"in k ? k.opacity : 1) * ("fill-opacity"in k ? k["fill-opacity"] : 1)})
                            }
                        }
                        k.gradient = p, k.fill = "none";
                        break
                    }
                    G[b]("opacity") && q(i, {"fill-opacity": G.opacity > 1 ? G.opacity / 100 : G.opacity});
                case"stroke":
                    G = a.getRGB(p), i.setAttribute(o, G.hex), o == "stroke" && G[b]("opacity") && q(i, {"stroke-opacity": G.opacity > 1 ? G.opacity / 100 : G.opacity}), o == "stroke" && d._.arrows && ("startString"in d._.arrows && t(d, d._.arrows.startString), "endString"in d._.arrows && t(d, d._.arrows.endString, 1));
                    break;
                case"gradient":
                    (d.type == "circle" || d.type == "ellipse" || c(p).charAt() != "r") && r(d, p);
                    break;
                case"opacity":
                    k.gradient && !k[b]("stroke-opacity") && q(i, {"stroke-opacity": p > 1 ? p / 100 : p});
                case"fill-opacity":
                    if (k.gradient) {
                        H = a._g.doc.getElementById(i.getAttribute("fill").replace(/^url(#|)$/g, l)), H && (I = H.getElementsByTagName("stop"), q(I[I.length - 1], {"stop-opacity": p}));
                        break
                    }
                    ;
                default:
                    o == "font-size" && (p = e(p, 10) + "px");
                    var J = o.replace(/(-.)/g, function (a) {
                        return a.substring(1).toUpperCase()
                    });
                    i.style[J] = p, d._.dirty = 1, i.setAttribute(o, p)
            }
        }
        y(d, f), i.style.visibility = m
    }, x = 1.2, y = function (d, f) {
        if (d.type == "text" && !!(f[b]("text") || f[b]("font") || f[b]("font-size") || f[b]("x") || f[b]("y"))) {
            var g = d.attrs, h = d.node, i = h.firstChild ? e(a._g.doc.defaultView.getComputedStyle(h.firstChild, l).getPropertyValue("font-size"), 10) : 10;
            if (f[b]("text")) {
                g.text = f.text;
                while (h.firstChild)h.removeChild(h.firstChild);
                var j = c(f.text).split("n"), k = [], m;
                for (var n = 0, o = j.length; n < o; n++)m = q("tspan"), n && q(m, {dy: i * x, x: g.x}), m.appendChild(a._g.doc.createTextNode(j[n])), h.appendChild(m), k[n] = m
            } else {
                k = h.getElementsByTagName("tspan");
                for (n = 0, o = k.length; n < o; n++)n ? q(k[n], {dy: i * x, x: g.x}) : q(k[0], {dy: 0})
            }
            q(h, {x: g.x, y: g.y}), d._.dirty = 1;
            var p = d._getBBox(), r = g.y - (p.y + p.height / 2);
            r && a.is(r, "finite") && q(k[0], {dy: r})
        }
    }, z = function (b, c) {
        var d = 0, e = 0;
        this[0] = this.node = b, b.raphael = !0, this.id = a._oid++, b.raphaelid = this.id, this.matrix = a.matrix(), this.realPath = null, this.paper = c, this.attrs = this.attrs || {}, this._ = {transform: [], sx: 1, sy: 1, deg: 0, dx: 0, dy: 0, dirty: 1}, !c.bottom && (c.bottom = this), this.prev = c.top, c.top && (c.top.next = this), c.top = this, this.next = null
    }, A = a.el;
    z.prototype = A, A.constructor = z, a._engine.path = function (a, b) {
        var c = q("path");
        b.canvas && b.canvas.appendChild(c);
        var d = new z(c, b);
        d.type = "path", w(d, {fill: "none", stroke: "#000", path: a});
        return d
    }, A.rotate = function (a, b, e) {
        if (this.removed)return this;
        a = c(a).split(j), a.length - 1 && (b = d(a[1]), e = d(a[2])), a = d(a[0]), e == null && (b = e);
        if (b == null || e == null) {
            var f = this.getBBox(1);
            b = f.x + f.width / 2, e = f.y + f.height / 2
        }
        this.transform(this._.transform.concat([
            ["r", a, b, e]
        ]));
        return this
    }, A.scale = function (a, b, e, f) {
        if (this.removed)return this;
        a = c(a).split(j), a.length - 1 && (b = d(a[1]), e = d(a[2]), f = d(a[3])), a = d(a[0]), b == null && (b = a), f == null && (e = f);
        if (e == null || f == null)var g = this.getBBox(1);
        e = e == null ? g.x + g.width / 2 : e, f = f == null ? g.y + g.height / 2 : f, this.transform(this._.transform.concat([
            ["s", a, b, e, f]
        ]));
        return this
    }, A.translate = function (a, b) {
        if (this.removed)return this;
        a = c(a).split(j), a.length - 1 && (b = d(a[1])), a = d(a[0]) || 0, b = +b || 0, this.transform(this._.transform.concat([
            ["t", a, b]
        ]));
        return this
    }, A.transform = function (c) {
        var d = this._;
        if (c == null)return d.transform;
        a._extractTransform(this, c), this.clip && q(this.clip, {transform: this.matrix.invert()}), this.pattern && s(this), this.node && q(this.node, {transform: this.matrix});
        if (d.sx != 1 || d.sy != 1) {
            var e = this.attrs[b]("stroke-width") ? this.attrs["stroke-width"] : 1;
            this.attr({"stroke-width": e})
        }
        return this
    }, A.hide = function () {
        !this.removed && this.paper.safari(this.node.style.display = "none");
        return this
    }, A.show = function () {
        !this.removed && this.paper.safari(this.node.style.display = "");
        return this
    }, A.remove = function () {
        if (!this.removed) {
            var b = this.paper;
            b.__set__ && b.__set__.exclude(this), k.unbind("*.*." + this.id), this.gradient && b.defs.removeChild(this.gradient), a._tear(this, b), this.node.parentNode.removeChild(this.node);
            for (var c in this)this[c] = typeof this[c] == "function" ? a._removedFactory(c) : null;
            this.removed = !0
        }
    }, A._getBBox = function () {
        if (this.node.style.display == "none") {
            this.show();
            var a = !0
        }
        var b = {};
        try {
            b = this.node.getBBox()
        } catch (c) {
        } finally {
            b = b || {}
        }
        a && this.hide();
        return b
    }, A.attr = function (c, d) {
        if (this.removed)return this;
        if (c == null) {
            var e = {};
            for (var f in this.attrs)this.attrs[b](f) && (e[f] = this.attrs[f]);
            e.gradient && e.fill == "none" && (e.fill = e.gradient) && delete e.gradient, e.transform = this._.transform;
            return e
        }
        if (d == null && a.is(c, "string")) {
            if (c == "fill" && this.attrs.fill == "none" && this.attrs.gradient)return this.attrs.gradient;
            if (c == "transform")return this._.transform;
            var g = c.split(j), h = {};
            for (var i = 0, l = g.length; i < l; i++)c = g[i], c in this.attrs ? h[c] = this.attrs[c] : a.is(this.paper.customAttributes[c], "function") ? h[c] = this.paper.customAttributes[c].def : h[c] = a._availableAttrs[c];
            return l - 1 ? h : h[g[0]]
        }
        if (d == null && a.is(c, "array")) {
            h = {};
            for (i = 0, l = c.length; i < l; i++)h[c[i]] = this.attr(c[i]);
            return h
        }
        if (d != null) {
            var m = {};
            m[c] = d
        } else c != null && a.is(c, "object") && (m = c);
        for (var n in m)k("attr." + n + "." + this.id, this, m[n]);
        for (n in this.paper.customAttributes)if (this.paper.customAttributes[b](n) && m[b](n) && a.is(this.paper.customAttributes[n], "function")) {
            var o = this.paper.customAttributes[n].apply(this, [].concat(m[n]));
            this.attrs[n] = m[n];
            for (var p in o)o[b](p) && (m[p] = o[p])
        }
        w(this, m);
        return this
    }, A.toFront = function () {
        if (this.removed)return this;
        this.node.parentNode.tagName.toLowerCase() == "a" ? this.node.parentNode.parentNode.appendChild(this.node.parentNode) : this.node.parentNode.appendChild(this.node);
        var b = this.paper;
        b.top != this && a._tofront(this, b);
        return this
    }, A.toBack = function () {
        if (this.removed)return this;
        var b = this.node.parentNode;
        b.tagName.toLowerCase() == "a" ? b.parentNode.insertBefore(this.node.parentNode, this.node.parentNode.parentNode.firstChild) : b.firstChild != this.node && b.insertBefore(this.node, this.node.parentNode.firstChild), a._toback(this, this.paper);
        var c = this.paper;
        return this
    }, A.insertAfter = function (b) {
        if (this.removed)return this;
        var c = b.node || b[b.length - 1].node;
        c.nextSibling ? c.parentNode.insertBefore(this.node, c.nextSibling) : c.parentNode.appendChild(this.node), a._insertafter(this, b, this.paper);
        return this
    }, A.insertBefore = function (b) {
        if (this.removed)return this;
        var c = b.node || b[0].node;
        c.parentNode.insertBefore(this.node, c), a._insertbefore(this, b, this.paper);
        return this
    }, A.blur = function (b) {
        var c = this;
        if (+b !== 0) {
            var d = q("filter"), e = q("feGaussianBlur");
            c.attrs.blur = b, d.id = a.createUUID(), q(e, {stdDeviation: +b || 1.5}), d.appendChild(e), c.paper.defs.appendChild(d), c._blur = d, q(c.node, {filter: "url(#" + d.id + ")"})
        } else c._blur && (c._blur.parentNode.removeChild(c._blur), delete c._blur, delete c.attrs.blur), c.node.removeAttribute("filter")
    }, a._engine.circle = function (a, b, c, d) {
        var e = q("circle");
        a.canvas && a.canvas.appendChild(e);
        var f = new z(e, a);
        f.attrs = {cx: b, cy: c, r: d, fill: "none", stroke: "#000"}, f.type = "circle", q(e, f.attrs);
        return f
    }, a._engine.rect = function (a, b, c, d, e, f) {
        var g = q("rect");
        a.canvas && a.canvas.appendChild(g);
        var h = new z(g, a);
        h.attrs = {x: b, y: c, width: d, height: e, r: f || 0, rx: f || 0, ry: f || 0, fill: "none", stroke: "#000"}, h.type = "rect", q(g, h.attrs);
        return h
    }, a._engine.ellipse = function (a, b, c, d, e) {
        var f = q("ellipse");
        a.canvas && a.canvas.appendChild(f);
        var g = new z(f, a);
        g.attrs = {cx: b, cy: c, rx: d, ry: e, fill: "none", stroke: "#000"}, g.type = "ellipse", q(f, g.attrs);
        return g
    }, a._engine.image = function (a, b, c, d, e, f) {
        var g = q("image");
        q(g, {x: c, y: d, width: e, height: f, preserveAspectRatio: "none"}), g.setAttributeNS(n, "href", b), a.canvas && a.canvas.appendChild(g);
        var h = new z(g, a);
        h.attrs = {x: c, y: d, width: e, height: f, src: b}, h.type = "image";
        return h
    }, a._engine.text = function (b, c, d, e) {
        var f = q("text");
        b.canvas && b.canvas.appendChild(f);
        var g = new z(f, b);
        g.attrs = {x: c, y: d, "text-anchor": "middle", text: e, font: a._availableAttrs.font, stroke: "none", fill: "#000"}, g.type = "text", w(g, g.attrs);
        return g
    }, a._engine.setSize = function (a, b) {
        this.width = a || this.width, this.height = b || this.height, this.canvas.setAttribute("width", this.width), this.canvas.setAttribute("height", this.height), this._viewBox && this.setViewBox.apply(this, this._viewBox);
        return this
    }, a._engine.create = function () {
        var b = a._getContainer.apply(0, arguments), c = b && b.container, d = b.x, e = b.y, f = b.width, g = b.height;
        if (!c)throw new Error("SVG container not found.");
        var h = q("svg"), i = "overflow:hidden;", j;
        d = d || 0, e = e || 0, f = f || 512, g = g || 342, q(h, {height: g, version: 1.1, width: f, xmlns: "http://www.w3.org/2000/svg"}), c == 1 ? (h.style.cssText = i + "position:absolute;left:" + d + "px;top:" + e + "px", a._g.doc.body.appendChild(h), j = 1) : (h.style.cssText = i + "position:relative", c.firstChild ? c.insertBefore(h, c.firstChild) : c.appendChild(h)), c = new a._Paper, c.width = f, c.height = g, c.canvas = h, c.clear(), c._left = c._top = 0, j && (c.renderfix = function () {
        }), c.renderfix();
        return c
    }, a._engine.setViewBox = function (a, b, c, d, e) {
        k("setViewBox", this, this._viewBox, [a, b, c, d, e]);
        var f = g(c / this.width, d / this.height), h = this.top, i = e ? "meet" : "xMinYMin", j, l;
        a == null ? (this._vbSize && (f = 1), delete this._vbSize, j = "0 0 " + this.width + m + this.height) : (this._vbSize = f, j = a + m + b + m + c + m + d), q(this.canvas, {viewBox: j, preserveAspectRatio: i});
        while (f && h)l = "stroke-width"in h.attrs ? h.attrs["stroke-width"] : 1, h.attr({"stroke-width": l}), h._.dirty = 1, h._.dirtyT = 1, h = h.prev;
        this._viewBox = [a, b, c, d, !!e];
        return this
    }, a.prototype.renderfix = function () {
        var a = this.canvas, b = a.style, c = a.getScreenCTM() || a.createSVGMatrix(), d = -c.e % 1, e = -c.f % 1;
        if (d || e)d && (this._left = (this._left + d) % 1, b.left = this._left + "px"), e && (this._top = (this._top + e) % 1, b.top = this._top + "px")
    }, a.prototype.clear = function () {
        a.eve("clear", this);
        var b = this.canvas;
        while (b.firstChild)b.removeChild(b.firstChild);
        this.bottom = this.top = null, (this.desc = q("desc")).appendChild(a._g.doc.createTextNode("Created with Raphaël " + a.version)), b.appendChild(this.desc), b.appendChild(this.defs = q("defs"))
    }, a.prototype.remove = function () {
        k("remove", this), this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas);
        for (var b in this)this[b] = typeof this[b] == "function" ? a._removedFactory(b) : null
    };
    var B = a.st;
    for (var C in A)A[b](C) && !B[b](C) && (B[C] = function (a) {
        return function () {
            var b = arguments;
            return this.forEach(function (c) {
                c[a].apply(c, b)
            })
        }
    }(C))
}(window.Raphael), window.Raphael.vml && function (a) {
    var b = "hasOwnProperty", c = String, d = parseFloat, e = Math, f = e.round, g = e.max, h = e.min, i = e.abs, j = "fill", k = /[, ]+/, l = a.eve, m = " progid:DXImageTransform.Microsoft", n = " ", o = "", p = {M: "m", L: "l", C: "c", Z: "x", m: "t", l: "r", c: "v", z: "x"}, q = /([clmz]),?([^clmz]*)/gi, r = / progid:S+Blur([^)]+)/g, s = /-?[^,s-]+/g, t = "position:absolute;left:0;top:0;width:1px;height:1px", u = 21600, v = {path: 1, rect: 1, image: 1}, w = {circle: 1, ellipse: 1}, x = function (b) {
        var d = /[ahqstv]/ig, e = a._pathToAbsolute;
        c(b).match(d) && (e = a._path2curve), d = /[clmz]/g;
        if (e == a._pathToAbsolute && !c(b).match(d)) {
            var g = c(b).replace(q, function (a, b, c) {
                var d = [], e = b.toLowerCase() == "m", g = p[b];
                c.replace(s, function (a) {
                    e && d.length == 2 && (g += d + p[b == "m" ? "l" : "L"], d = []), d.push(f(a * u))
                });
                return g + d
            });
            return g
        }
        var h = e(b), i, j;
        g = [];
        for (var k = 0, l = h.length; k < l; k++) {
            i = h[k], j = h[k][0].toLowerCase(), j == "z" && (j = "x");
            for (var m = 1, r = i.length; m < r; m++)j += f(i[m] * u) + (m != r - 1 ? "," : o);
            g.push(j)
        }
        return g.join(n)
    }, y = function (b, c, d) {
        var e = a.matrix();
        e.rotate(-b, .5, .5);
        return{dx: e.x(c, d), dy: e.y(c, d)}
    }, z = function (a, b, c, d, e, f) {
        var g = a._, h = a.matrix, k = g.fillpos, l = a.node, m = l.style, o = 1, p = "", q, r = u / b, s = u / c;
        m.visibility = "hidden";
        if (!!b && !!c) {
            l.coordsize = i(r) + n + i(s), m.rotation = f * (b * c < 0 ? -1 : 1);
            if (f) {
                var t = y(f, d, e);
                d = t.dx, e = t.dy
            }
            b < 0 && (p += "x"), c < 0 && (p += " y") && (o = -1), m.flip = p, l.coordorigin = d * -r + n + e * -s;
            if (k || g.fillsize) {
                var v = l.getElementsByTagName(j);
                v = v && v[0], l.removeChild(v), k && (t = y(f, h.x(k[0], k[1]), h.y(k[0], k[1])), v.position = t.dx * o + n + t.dy * o), g.fillsize && (v.size = g.fillsize[0] * i(b) + n + g.fillsize[1] * i(c)), l.appendChild(v)
            }
            m.visibility = "visible"
        }
    };
    a.toString = function () {
        return"Your browser doesn’t support SVG. Falling down to VML.nYou are running Raphaël " + this.version
    };
    var A = function (a, b, d) {
        var e = c(b).toLowerCase().split("-"), f = d ? "end" : "start", g = e.length, h = "classic", i = "medium", j = "medium";
        while (g--)switch (e[g]) {
            case"block":
            case"classic":
            case"oval":
            case"diamond":
            case"open":
            case"none":
                h = e[g];
                break;
            case"wide":
            case"narrow":
                j = e[g];
                break;
            case"long":
            case"short":
                i = e[g]
        }
        var k = a.node.getElementsByTagName("stroke")[0];
        k[f + "arrow"] = h, k[f + "arrowlength"] = i, k[f + "arrowwidth"] = j
    }, B = function (e, i) {
        e.attrs = e.attrs || {};
        var l = e.node, m = e.attrs, p = l.style, q, r = v[e.type] && (i.x != m.x || i.y != m.y || i.width != m.width || i.height != m.height || i.cx != m.cx || i.cy != m.cy || i.rx != m.rx || i.ry != m.ry || i.r != m.r), s = w[e.type] && (m.cx != i.cx || m.cy != i.cy || m.r != i.r || m.rx != i.rx || m.ry != i.ry), t = e;
        for (var y in i)i[b](y) && (m[y] = i[y]);
        r && (m.path = a._getPath[e.type](e), e._.dirty = 1), i.href && (l.href = i.href), i.title && (l.title = i.title), i.target && (l.target = i.target), i.cursor && (p.cursor = i.cursor), "blur"in i && e.blur(i.blur);
        if (i.path && e.type == "path" || r)l.path = x(~c(m.path).toLowerCase().indexOf("r") ? a._pathToAbsolute(m.path) : m.path), e.type == "image" && (e._.fillpos = [m.x, m.y], e._.fillsize = [m.width, m.height], z(e, 1, 1, 0, 0, 0));
        "transform"in i && e.transform(i.transform);
        if (s) {
            var B = +m.cx, D = +m.cy, E = +m.rx || +m.r || 0, G = +m.ry || +m.r || 0;
            l.path = a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x", f((B - E) * u), f((D - G) * u), f((B + E) * u), f((D + G) * u), f(B * u))
        }
        if ("clip-rect"in i) {
            var H = c(i["clip-rect"]).split(k);
            if (H.length == 4) {
                H[2] = +H[2] + +H[0], H[3] = +H[3] + +H[1];
                var I = l.clipRect || a._g.doc.createElement("div"), J = I.style;
                J.clip = a.format("rect({1}px {2}px {3}px {0}px)", H), l.clipRect || (J.position = "absolute", J.top = 0, J.left = 0, J.width = e.paper.width + "px", J.height = e.paper.height + "px", l.parentNode.insertBefore(I, l), I.appendChild(l), l.clipRect = I)
            }
            i["clip-rect"] || l.clipRect && (l.clipRect.style.clip = "auto")
        }
        if (e.textpath) {
            var K = e.textpath.style;
            i.font && (K.font = i.font), i["font-family"] && (K.fontFamily = '"' + i["
font-family"].split(",")[0].replace(/^['"]+|['"]+$/g, o) + '"'), i["font-size"] && (K.fontSize = i["font-size"]), i["font-weight"] && (K.fontWeight = i["font-weight"]), i["font-style"] && (K.fontStyle = i["font-style"])
        }
        "
arrow-start"in i && A(t, i["arrow-start"]), "arrow-end"in i && A(t, i["arrow-end"], 1);
        if (i.opacity != null || i["
stroke-width"] != null || i.fill != null || i.src != null || i.stroke != null || i["stroke-width"] != null || i["stroke-opacity"] != null || i["fill-opacity"] != null || i["stroke-dasharray"] != null || i["stroke-miterlimit"] != null || i["stroke-linejoin"] != null || i["stroke-linecap"] != null) {
            var L = l.getElementsByTagName(j), M = !1;
            L = L && L[0], !L && (M = L = F(j)), e.type == "
image" && i.src && (L.src = i.src), i.fill && (L.on = !0);
            if (L.on == null || i.fill == "
none" || i.fill === null)L.on = !1;
            if (L.on && i.fill) {
                var N = c(i.fill).match(a._ISURL);
                if (N) {
                    L.parentNode == l && l.removeChild(L), L.rotate = !0, L.src = N[1], L.type = "
tile";
                    var O = e.getBBox(1);
                    L.position = O.x + n + O.y, e._.fillpos = [O.x, O.y], a._preload(N[1], function () {
                        e._.fillsize = [this.offsetWidth, this.offsetHeight]
                    })
                } else L.color = a.getRGB(i.fill).hex, L.src = o, L.type = "
solid", a.getRGB(i.fill).error && (t.type in{circle: 1, ellipse: 1} || c(i.fill).charAt() != "r") && C(t, i.fill, L) && (m.fill = "none", m.gradient = i.fill, L.rotate = !1)
            }
            if ("
fill-opacity"in i || "opacity"in i) {
                var P = ((+m["
fill-opacity"] + 1 || 2) - 1) * ((+m.opacity + 1 || 2) - 1) * ((+a.getRGB(i.fill).o + 1 || 2) - 1);
                P = h(g(P, 0), 1), L.opacity = P, L.src && (L.color = "
none")
            }
            l.appendChild(L);
            var Q = l.getElementsByTagName("
stroke") && l.getElementsByTagName("stroke")[0], T = !1;
            !Q && (T = Q = F("
stroke"));
            if (i.stroke && i.stroke != "
none" || i["stroke-width"] || i["stroke-opacity"] != null || i["stroke-dasharray"] || i["stroke-miterlimit"] || i["stroke-linejoin"] || i["stroke-linecap"])Q.on = !0;
            (i.stroke == "
none" || i.stroke === null || Q.on == null || i.stroke == 0 || i["stroke-width"] == 0) && (Q.on = !1);
            var U = a.getRGB(i.stroke);
            Q.on && i.stroke && (Q.color = U.hex), P = ((+m["
stroke-opacity"] + 1 || 2) - 1) * ((+m.opacity + 1 || 2) - 1) * ((+U.o + 1 || 2) - 1);
            var V = (d(i["
stroke-width"]) || 1) * .75;
            P = h(g(P, 0), 1), i["
stroke-width"] == null && (V = m["stroke-width"]), i["stroke-width"] && (Q.weight = V), V && V < 1 && (P *= V) && (Q.weight = 1), Q.opacity = P, i["stroke-linejoin"] && (Q.joinstyle = i["stroke-linejoin"] || "miter"), Q.miterlimit = i["stroke-miterlimit"] || 8, i["stroke-linecap"] && (Q.endcap = i["stroke-linecap"] == "butt" ? "flat" : i["stroke-linecap"] == "square" ? "square" : "round");
            if (i["
stroke-dasharray"]) {
                var W = {"
-": "shortdash", ".": "shortdot", "-.": "shortdashdot", "-..": "shortdashdotdot", "": "dot", "": "dash", "--": "longdash", "- .": "dashdot", "--.": "longdashdot", "--..": "longdashdotdot"};
                Q.dashstyle = W[b](i["
stroke-dasharray"]) ? W[i["stroke-dasharray"]] : o
            }
            T && l.appendChild(Q)
        }
        if (t.type == "
text") {
            t.paper.canvas.style.display = o;
            var X = t.paper.span, Y = 100, Z = m.font && m.font.match(/d+(?:.d*)?(?=px)/);
            p = X.style, m.font && (p.font = m.font), m["
font-family"] && (p.fontFamily = m["font-family"]), m["font-weight"] && (p.fontWeight = m["font-weight"]), m["font-style"] && (p.fontStyle = m["font-style"]), Z = d(m["font-size"] || Z && Z[0]) || 10, p.fontSize = Z * Y + "px", t.textpath.string && (X.innerHTML = c(t.textpath.string).replace(/</g, "&#60;").replace(/&/g, "&#38;").replace(/n/g, "<br>"));
            
var $ = X.getBoundingClientRect();
            
t.m.= ($.right - $.left) / Yt.m.= ($.bottom - $.top) / Yt.m.xt.m.t.2, ("x"in i || "y"in i) && (t.path.a.format("m{0},{1}l{2},{1}"f(m.u), f(m.u), f(m.u) + 1));
            var 
= ["x""y""text""font""font-family""font-weight""font-style""font-size"];
            for (var 
ba 0bb _.lengthba bbba++)if (_[ba]in i) {
                
t._.dirty 1;
                break
            }
            switch (
m["text-anchor"]) {
                case
"start":
                    
t.textpath.style["v-text-align"] = "left"t.bbx t.2;
                    break;
                case
"end":
                    
t.textpath.style["v-text-align"] = "right"t.bbx = -t.2;
                    break;
                default:
                    
t.textpath.style["v-text-align"] = "center"t.bbx 0
            
}
            
t.textpath.style["v-text-kern"] = !0
        
}
    }, 
= function (bfg) {
        
b.attrs b.attrs || {};
        var 
b.attrsMath.powjk"linear"".5 .5";
        
b.attrs.gradient fc(f).replace(a._radial_gradient, function (abc) {
            
"radial"&& && (d(b), d(c), i(.52) + i(.52) > .25 && (e.sqrt(.25 i(.52)) * ((.5) * 1) + .5), c);
            return 
o
        
}), f.split(/s*-s*/);
        if (
== "linear") {
            var 
f.shift();
            
= -d(p);
            if (
isNaN(p))return null
        
}
        var 
a._parseDots(f);
        if (!
q)return null;
        
b.shape || b.node;
        if (
q.length) {
            
b.removeChild(g), g.on = !0g.method "none"g.color q[0].colorg.color2 q[q.length 1].color;
            var 
= [];
            for (var 
0q.lengthts++)q[s].offset && r.push(q[s].offset q[s].color);
            
g.colors r.length r.join() : "0% " g.color== "radial" ? (g.type "gradientTitle"g.focus "100%"g.focussize "0 0"g.focusposition mg.angle 0) : (g.type "gradient"g.angle = (270 p) % 360), b.appendChild(g)
        }
        return 
1
    
}, = function (bc) {
        
this[0] = this.node bb.raphael = !0this.id a._oid++, b.raphaelid this.idthis.0this.0this.attrs = {}, this.paper cthis.matrix a.matrix(), this.= {transform: [], sx1sy1dx0dy0deg0dirty1dirtyT1}, !c.bottom && (c.bottom this), this.prev c.topc.top && (c.top.next this), c.top thisthis.next null
    
}, a.el;
    
D.prototype EE.constructor DE.transform = function (b) {
        if (
== null)return this._.transform;
        var 
this.paper._viewBoxShift"s" + [d.scaled.scale] + "-1-1t" + [d.dxd.dy] : of;
        
&& (c(b).replace(/.{3}|u2026/gthis._.transform || o)), a._extractTransform(thisb);
        var 
this.matrix.clone(), this.skewthis.nodej= ~c(this.attrs.fill).indexOf("-"), = !c(this.attrs.fill).indexOf("url(");
        
g.translate(-0.5, -0.5);
        if (
|| || this.type == "image") {
            
h.matrix "1 0 0 1"h.offset "0 0"g.split();
            if (
&& j.noRotation || !j.isSimple) {
                
i.style.filter g.toFilter();
                var 
this.getBBox(), this.getBBox(1), m.p.xm.p.y;
                
i.coordorigin * -* -uz(this11qr0)
            } else 
i.style.filter oz(thisj.scalexj.scaleyj.dxj.dyj.rotate)
        } else 
i.style.filter oh.matrix c(g), h.offset g.offset();
        
&& (this._.transform f);
        return 
this
    
}, E.rotate = function (abe) {
        if (
this.removed)return this;
        if (
!= null) {
            
c(a).split(k), a.length && (d(a[1]), d(a[2])), d(a[0]), == null && (e);
            if (
== null || == null) {
                var 
this.getBBox(1);
                
f.f.width 2f.f.height 2
            
}
            
this._.dirtyT 1this.transform(this._.transform.concat([
                [
"r"abe]
            ]));
            return 
this
        
}
    }, 
E.translate = function (ab) {
        if (
this.removed)return this;
        
c(a).split(k), a.length && (d(a[1])), d(a[0]) || 0= +|| 0this._.bbox && (this._.bbox.+= athis._.bbox.+= b), this.transform(this._.transform.concat([
            [
"t"ab]
        ]));
        return 
this
    
}, E.scale = function (abef) {
        if (
this.removed)return this;
        
c(a).split(k), a.length && (d(a[1]), d(a[2]), d(a[3]), isNaN(e) && (null), isNaN(f) && (null)), d(a[0]), == null && (a), == null && (f);
        if (
== null || == null)var this.getBBox(1);
        
== null g.g.width e== null g.g.height fthis.transform(this._.transform.concat([
            [
"s"abef]
        ])), 
this._.dirtyT 1;
        return 
this
    
}, E.hide = function () {
        !
this.removed && (this.node.style.display "none");
        return 
this
    
}, E.show = function () {
        !
this.removed && (this.node.style.display o);
        return 
this
    
}, E._getBBox = function () {
        if (
this.removed)return{};
        return{
xthis.+ (this.bbx || 0) - this.2ythis.this.Hwidththis.Wheightthis.H}
    }, 
E.remove = function () {
        if (!
this.removed) {
            
this.paper.__set__ && this.paper.__set__.exclude(this), a.eve.unbind("*.*." this.id), a._tear(thisthis.paper), this.node.parentNode.removeChild(this.node), this.shape && this.shape.parentNode.removeChild(this.shape);
            for (var 
b in this)this[b] = typeof this[b] == "function" a._removedFactory(b) : null;
            
this.removed = !0
        
}
    }, 
E.attr = function (cd) {
        if (
this.removed)return this;
        if (
== null) {
            var 
= {};
            for (var 
f in this.attrs)this.attrs[b](f) && (e[f] = this.attrs[f]);
            
e.gradient && e.fill == "none" && (e.fill e.gradient) && delete e.gradiente.transform this._.transform;
            return 
e
        
}
        if (
== null && a.is(c"string")) {
            if (
== && this.attrs.fill == "none" && this.attrs.gradient)return this.attrs.gradient;
            var 
c.split(k), = {};
            for (var 
0g.lengthmi++)g[i], c in this.attrs h[c] = this.attrs[c] : a.is(this.paper.customAttributes[c], "function") ? h[c] = this.paper.customAttributes[c].def h[c] = a._availableAttrs[c];
            return 
h[g[0]]
        }
        if (
this.attrs && == null && a.is(c"array")) {
            
= {};
            for (
0c.lengthmi++)h[c[i]] = this.attr(c[i]);
            return 
h
        
}
        var 
n;
        
!= null && (= {}, n[c] = d), == null && a.is(c"object") && (c);
        for (var 
o in n)l("attr." "." this.idthisn[o]);
        if (
n) {
            for (
o in this.paper.customAttributes)if (this.paper.customAttributes[b](o) && n[b](o) && a.is(this.paper.customAttributes[o], "function")) {
                var 
this.paper.customAttributes[o].apply(this, [].concat(n[o]));
                
this.attrs[o] = n[o];
                for (var 
q in p)p[b](q) && (n[q] = p[q])
            }
            
n.text && this.type == "text" && (this.textpath.string n.text), B(thisn)
        }
        return 
this
    
}, E.toFront = function () {
        !
this.removed && this.node.parentNode.appendChild(this.node), this.paper && this.paper.top != this && a._tofront(thisthis.paper);
        return 
this
    
}, E.toBack = function () {
        if (
this.removed)return this;
        
this.node.parentNode.firstChild != this.node && (this.node.parentNode.insertBefore(this.nodethis.node.parentNode.firstChild), a._toback(thisthis.paper));
        return 
this
    
}, E.insertAfter = function (b) {
        if (
this.removed)return this;
        
b.constructor == a.st.constructor && (b[b.length 1]), b.node.nextSibling b.node.parentNode.insertBefore(this.nodeb.node.nextSibling) : b.node.parentNode.appendChild(this.node), a._insertafter(thisbthis.paper);
        return 
this
    
}, E.insertBefore = function (b) {
        if (
this.removed)return this;
        
b.constructor == a.st.constructor && (b[0]), b.node.parentNode.insertBefore(this.nodeb.node), a._insertbefore(thisbthis.paper);
        return 
this
    
}, E.blur = function (b) {
        var 
this.node.runtimeStylec.filter;
        
d.replace(ro), +!== ? (this.attrs.blur bc.filter ".Blur(pixelradius=" + (+|| 1.5) + ")"c.margin a.format("-{0}px 0 0 -{0}px"f(+|| 1.5))) : (c.filter dc.margin 0delete this.attrs.blur)
    }, 
a._engine.path = function (ab) {
        var 
F("shape");
        
c.style.cssText tc.coordsize uc.coordorigin b.coordorigin;
        var 
= new D(cb), = {fill"none"stroke"#000"};
        
&& (e.path a), d.type "path"d.path = [], d.Path oB(de), b.canvas.appendChild(c);
        var 
F("skew");
        
f.on = !0c.appendChild(f), d.skew fd.transform(o);
        return 
d
    
}, a._engine.rect = function (bcdefg) {
        var 
a._rectPath(cdefg), b.path(h), i.attrs;
        
i.j.ci.j.di.j.width ei.j.height fj.gj.path hi.type "rect";
        return 
i
    
}, a._engine.ellipse = function (abcde) {
        var 
a.path(), f.attrs;
        
f.df.ef.2f.2f.type "ellipse"B(f, {cxbcycrxdrye});
        return 
f
    
}, a._engine.circle = function (abcd) {
        var 
a.path(), e.attrs;
        
e.de.de.e.2e.type "circle"B(e, {cxbcycrd});
        return 
e
    
}, a._engine.image = function (bcdefg) {
        var 
a._rectPath(defg), b.path(h).attr({stroke"none"}), i.attrsi.nodel.getElementsByTagName(j)[0];
        
k.src ci.k.di.k.ei.k.width fi.k.height gk.path hi.type "image"m.parentNode == && l.removeChild(m), m.rotate = !0m.src cm.type "tile"i._.fillpos = [de], i._.fillsize = [fg], l.appendChild(m), z(i11000);
        return 
i
    
}, a._engine.text = function (bdeg) {
        var 
F("shape"), F("path"), F("textpath");
        
|| 0|| 0|| ""i.a.format("m{0},{1}l{2},{1}"f(u), f(u), f(u) + 1), i.textpathok = !0j.string c(g), j.on = !0h.style.cssText th.coordsize uh.coordorigin "0 0";
        var 
= new D(hb), = {fill"#000"stroke"none"fonta._availableAttrs.fonttextg};
        
k.shape hk.path ik.textpath jk.type "text"k.attrs.text c(g), k.attrs.dk.attrs.ek.attrs.1k.attrs.1B(kl), h.appendChild(j), h.appendChild(i), b.canvas.appendChild(h);
        var 
F("skew");
        
m.on = !0h.appendChild(m), k.skew mk.transform(o);
        return 
k
    
}, a._engine.setSize = function (bc) {
        var 
this.canvas.style;
        
this.width bthis.height c== +&& (+= "px"), == +&& (+= "px"), d.width bd.height cd.clip "rect(0 " " " " 0)"this._viewBox && a._engine.setViewBox.apply(thisthis._viewBox);
        return 
this
    
}, a._engine.setViewBox = function (bcdef) {
        
a.eve("setViewBox"thisthis._viewBox, [bcdef]);
        var 
this.widththis.heightg(hi), kl;
        
&& (ed&& (-= (k) / k), && (-= (l) / l)), this._viewBox = [bcde, !!f], this._viewBoxShift = {dx: -bdy: -cscalej}, this.forEach(function (a) {
            
a.transform("...")
        });
        return 
this
    
};
    var 
F;
    
a._engine.initWin = function (a) {
        var 
a.document;
        
b.createStyleSheet().addRule(".rvml""behavior:url(#default#VML)");
        try {
            !
b.namespaces.rvml && b.namespaces.add("rvml""urn:schemas-microsoft-com:vml"), = function (a) {
                return 
b.createElement("<rvml:" ' class="rvml">')
            }
        } catch (
c) {
            
= function (a) {
                return 
b.createElement("<" ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')
            }
        }
    }, 
a._engine.initWin(a._g.win), a._engine.create = function () {
        var 
a._getContainer.apply(0arguments), b.containerb.heighteb.widthb.xb.y;
        if (!
c)throw new Error("VML container not found.");
        var 
= new a._Paperi.canvas a._g.doc.createElement("div"), j.style;
        
|| 0|| 0|| 512|| 342i.width fi.height d== +&& (+= "px"), == +&& (+= "px"), i.coordsize 1e3 1e3i.coordorigin "0 0"i.span a._g.doc.createElement("span"), i.span.style.cssText "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;"j.appendChild(i.span), k.cssText a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden"fd), == ? (a._g.doc.body.appendChild(j), k.left "px"k.top "px"k.position "absolute") : c.firstChild c.insertBefore(jc.firstChild) : c.appendChild(j), i.renderfix = function () {
        };
        return 
i
    
}, a.prototype.clear = function () {
        
a.eve("clear"this), this.canvas.innerHTML othis.span a._g.doc.createElement("span"), this.span.style.cssText "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;"this.canvas.appendChild(this.span), this.bottom this.top null
    
}, a.prototype.remove = function () {
        
a.eve("remove"this), this.canvas.parentNode.removeChild(this.canvas);
        for (var 
b in this)this[b] = typeof this[b] == "function" a._removedFactory(b) : null;
        return!
0
    
};
    var 
a.st;
    for (var 
H in E)E[b](H) && !G[b](H) && (G[H] = function (a) {
        return function () {
            var 
arguments;
            return 
this.forEach(function (c) {
                
c[a].apply(cb)
            })
        }
    }(
H))
}(
window.Raphael)
?>
Онлайн: 4
Реклама