/*!
 *
 * Spread.Sheets Library 11.1.0
 *
 * Copyright(c) GrapeCity, Inc.  All rights reserved.
 *
 * Licensed under the SpreadJS Commercial License.
 * us.sales@grapecity.com
 * http://www.grapecity.com/en/licensing/grapecity/
 *
 *
 */
var GC = GC || {};
GC.Spread = function(a) {
    var b = {};

    function c(d) {
        if (b[d]) return b[d].exports;
        var e = b[d] = {
            exports: {},
            id: d,
            loaded: !1
        };
        return a[d].call(e.exports, e, e.exports, c), e.loaded = !0, e.exports
    }
    return c.m = a, c.c = b, c.p = "", c(0)
}([function(a, b, c) {
    GC = GC || {}, GC.Spread = GC.Spread || {}, GC.Spread = c(1), GC.Spread.CalcEngine = c(24), GC.Spread.CalcEngine.BasicFunctions = c(31), GC.Spread.CalcEngine.AdvancedFunctions = c(35), GC.Spread.Sheets = c(41), GC.Spread.Sheets.CellTypes = c(85), GC.Spread.Sheets.Bindings = c(91), GC.Spread.Sheets.Search = c(97), GC.Spread.Sheets.Outlines = c(99), GC.Spread.Sheets.Touch = c(103), GC.Spread.Sheets.FloatingObjects = c(106), GC.Spread.Sheets.Sparklines = c(113), GC.Spread.Sheets.Comments = c(117), GC.Spread.Sheets.ConditionalFormatting = c(121), GC.Spread.Sheets.Filter = c(124), GC.Spread.Sheets.Tables = c(132), GC.Spread.Sheets.Slicers = c(137), GC.Spread.Sheets.DataValidation = c(144), GC.Spread.Sheets.Fill = c(147), GC.Spread.Sheets.ContextMenu = c(153), GC.Spread.Sheets.FormulaTextBox = c(158), GC.Spread.Sheets.OutlineColumn = c(165), GC.Spread.Sheets.DragMerge = c(168), a.exports = GC.Spread
}, function(a, b, c) {
    !
        function() {
            "use strict";
            b.Common = c(2), b.Commands = c(14), b.Formatter = c(17), b.Sparklines = c(20), b.Slicers = c(22)
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e = c(3);
            c(11), b = c(4), f(e, b), d = c(12), f(e, d), e.j = c(5), e.k = c(10), e.l = c(9), e.o = c(6), e.q = c(7), e.u = c(8), e.SR = {}, e.SR.en = c(13), a.exports = e;

            function f(a, b) {
                for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c])
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = {},
                d = c(4).CultureManager,
                e = function(a) {
                    return function() {
                        var b, c = d.culture();
                        return a && c ? (b = c.substr(0, 2).toLowerCase(), a.hasOwnProperty(b) ? a[b] : a.en) : {}
                    }
                };

            function f(a, b, c, d) {
                var e, f, g, h, i;
                if (a && 0 <= c && c < b) {
                    for (e = [], g = c; g < b; g++) void 0 !== a[g] && e.push(g);
                    for (f = e.length, g = 0; g < f; g++) h = e[f - g - 1], i = a[h], a[h] = null, a[Math.floor(h) + d] = i
                }
            }
            function g(a, b, c, d) {
                var e, f, g, h, i, j;
                if (a && 0 <= c && c < b) {
                    for (e = [], g = c + d, h = c; h < b; h++) void 0 !== a[h] && (c <= h && h < g ? a[h] = null : h >= g && e.push(h));
                    for (f = e.length, h = 0; h < f; h++) i = e[h], j = a[i], a[i] = null, a[Math.floor(i) - d] = j
                }
            }
            function h(a, b) {
                return a.hasOwnProperty(b)
            }
            function i(a, b) {
                return a instanceof b
            }
            b.A = f, b.B = g, b.C = e, b.D = h, b.F = i, a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k = c(5),
                l = void 0,
                m = null,
                n = k.G,
                o = k.H,
                p = window,
                q = ["MM/dd/yyyy", "MM/d/yyyy", "M/dd/yyyy", "M/d/yyyy", "yy/MM/dd", "yy/MM/d", "yy/M/dd", "yy/M/d", "yyyy/MM/dd", "yyyy/MM/d", "yyyy/M/dd", "yyyy/M/d"],
                r = ["hh:mm:ss", "hh:mm:s", "hh:m:ss", "hh:m:s", "h:mm:ss", "h:mm:s", "h:m:ss", "h:m:s", "hh:mm:ss tt", "hh:mm:s tt", "hh:m:ss tt", "hh:m:s tt", "h:mm:ss tt", "h:mm:s tt", "h:m:ss tt", "h:m:s tt", "hh:mm", "hh:m", "h:mm", "h:m", "hh:mm tt", "hh:m tt", "h:mm tt", "h:m tt"],
                s = ["MM-dd-yyyy", "MM-d-yyyy", "M-dd-yyyy", "M-d-yyyy", "yy-MM-dd", "yy-MM-d", "yy-M-dd", "yy-M-d", "yyyy-MM-dd", "yyyy-MM-d", "yyyy-M-dd", "yyyy-M-d", "dd-MMMM-yy", "dd-MMM-yy"],
                t = q.concat(r);
            o(q, function(a, b) {
                o(r, function(a, c) {
                    a < r.length - 4 && t.push(b + " " + c)
                })
            }), t = t.concat(s), o(s, function(a, b) {
                o(r, function(a, c) {
                    a < r.length - 4 && t.push(b + " " + c)
                })
            }), b = function() {
                function a() {
                    this.NumberFormat = {
                        currencyDecimalDigits: 2,
                        currencyDecimalSeparator: ".",
                        currencyGroupSeparator: ",",
                        currencyGroupSizes: [3],
                        currencyNegativePattern: 0,
                        currencyPositivePattern: 0,
                        currencySymbol: "¤",
                        digitSubstitution: 1,
                        isReadOnly: !0,
                        numberGroupSizes: [3],
                        nanSymbol: "NaN",
                        nativeDigits: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"],
                        numberNegativePattern: 1,
                        negativeInfinitySymbol: "-Infinity",
                        negativeSign: "-",
                        numberDecimalDigits: 2,
                        numberDecimalSeparator: ".",
                        numberGroupSeparator: ",",
                        positiveInfinitySymbol: "Infinity",
                        positiveSign: "+",
                        percentDecimalDigits: 2,
                        percentDecimalSeparator: ".",
                        percentGroupSeparator: ",",
                        percentGroupSizes: [3],
                        percentNegativePattern: 0,
                        percentPositivePattern: 0,
                        percentSymbol: "%",
                        perMilleSymbol: "‰",
                        listSeparator: ",",
                        arrayListSeparator: ",",
                        arrayGroupSeparator: ";",
                        dbNumber: {}
                    }, this.DateTimeFormat = {
                        abbreviatedDayNames: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
                        abbreviatedMonthGenitiveNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ""],
                        abbreviatedMonthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ""],
                        amDesignator: "AM",
                        calendarIsReadOnly: !0,
                        calendarWeekRule: 0,
                        Calendar: {
                            MinSupportedDateTime: "@-62135568000000@",
                            MaxSupportedDateTime: "@253402300799999@",
                            AlgorithmType: 1,
                            CalendarType: 1,
                            Eras: [1],
                            TwoDigitYearMax: 2029,
                            isReadOnly: !0
                        },
                        dateSeparator: "/",
                        dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
                        firstDayOfWeek: 0,
                        fullDateTimePattern: "dddd, dd MMMM yyyy HH:mm:ss",
                        longDatePattern: "dddd, dd MMMM yyyy",
                        longTimePattern: "HH:mm:ss",
                        monthDayPattern: "MMMM dd",
                        monthGenitiveNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ""],
                        monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ""],
                        nativeCalendarName: "Gregorian Calendar",
                        pmDesignator: "PM",
                        rfc1123Pattern: "ddd, dd MMM yyyy HH':'mm':'ss 'GMT'",
                        shortDatePattern: "MM/dd/yyyy",
                        shortestDayNames: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
                        shortTimePattern: "HH:mm",
                        sortableDateTimePattern: "yyyy'-'MM'-'dd'T'HH':'mm':'ss",
                        timeSeparator: ":",
                        universalSortableDateTimePattern: "yyyy'-'MM'-'dd HH':'mm':'ss'Z'",
                        yearMonthPattern: "yyyy MMMM",
                        filterDialogDateFormatter: "yyyy/mmmm/dd"
                    }, this.name = function() {
                        return ""
                    }, this.id = -1
                }
                a.prototype = {
                    constructor: a,
                    ma: function() {
                        var a, b, c;
                        return this.na || (a = this.DateTimeFormat, b = a.shortDatePattern.replace(/m/g, "M"), c = [b, b + " h:mm", b + " h:mm:ss", b + " h:mm:ss.0", "MMMdd", "MMMd", "MMM dd", "MMM d"], this.na = c.concat(t)), this.na
                    },
                    oa: function(a) {
                        var b = this;
                        return b.pa || (b.pa = c(b.DateTimeFormat.monthNames), b.qa = c(b.DateTimeFormat.monthGenitiveNames)), d(a, b.pa, b.qa)
                    },
                    ra: function(a) {
                        var b = this;
                        return b.sa || (b.sa = c(b.DateTimeFormat.abbreviatedMonthNames), b.ta = c(b.DateTimeFormat.abbreviatedMonthGenitiveNames)), d(a, b.sa, b.ta)
                    },
                    ua: function(a) {
                        var d = this;
                        return d.va || (d.va = c(d.DateTimeFormat.dayNames)), d.va.indexOf(b(a))
                    },
                    wa: function(a) {
                        var d = this;
                        return d.xa || (d.xa = c(d.DateTimeFormat.abbreviatedDayNames)), d.xa.indexOf(b(a))
                    }
                };

                function b(a) {
                    return a.split(" ").join(" ").toUpperCase()
                }
                function c(a) {
                    var c, d, e = [];
                    for (c = 0, d = a.length; c < d; c++) e[c] = b(a[c]);
                    return e
                }
                function d(a, c, d) {
                    var e = b(a),
                        f = c.indexOf(e);
                    return f === -1 && (f = d.indexOf(e)), f
                }
                return a
            }(), d = function() {
                function a() {}
                return a.I = function(a) {
                    return a >= this.J() && a <= this.K()
                }, a.L = function() {
                    var a, c, d = b.eras;
                    if (d !== l) {
                        for (a = [], c = 0; c < d.length; c++) a[c] = new Date(d[c].startDate.replace(/-/g, "/"));
                        return a
                    }
                    return this.O
                }, a.P = function(a) {
                    var c, d, e, f, g, h = this;
                    switch (a) {
                        case "g":
                            c = "symbol", d = h.R;
                            break;
                        case "gg":
                            c = "abbreviation", d = h.S;
                            break;
                        case "ggg":
                            c = "name", d = h.U;
                            break;
                        default:
                            return []
                    }
                    if (e = b.eras, f = [], e !== l) {
                        for (g = 0; g < e.length; g++) f[g] = e[g][c];
                        return f
                    }
                    return d
                }, a.K = function() {
                    var a, c = b.eras;
                    return c !== l && c.length > 0 ? (a = new Date(c[c.length - 1].startDate.replace(/-/g, "/")), a.setFullYear(a.getFullYear() + 99), a) : this.W
                }, a.J = function() {
                    var a = b.eras;
                    return a !== l && a.length > 0 ? new Date(a[0].startDate.replace(/-/g, "/")) : this.Z
                }, a.$ = function() {
                    var a = b.eras;
                    return a !== l ? a.length : this._
                }, a.aa = function() {
                    var a, c, d, e, f = b.eras;
                    if (f !== l) {
                        for (a = [], c = 1; c < f.length; c++) d = new Date(f[c - 1].startDate.replace(/-/g, "/")), e = new Date(f[c].startDate.replace(/-/g, "/")), a[c - 1] = e.getFullYear() - d.getFullYear() + 1;
                        return a[c - 1] = 99, a
                    }
                    return this.ba
                }, a.ca = function(a) {
                    var b, c, d, e = {};
                    if (e.da = -1, e.ea = -1, b = this, !b.I(a)) return e;
                    for (c = 0; c < b.$(); c++) if (d = c + 1 !== b.$() ? b.L()[c + 1] : b.fa(b.K(), 1), a < d) {
                        e.da = c, e.ea = a.getFullYear() - b.L()[c].getFullYear() + 1;
                        break
                    }
                    return e
                }, a.fa = function(a, b) {
                    var c = new Date(a.getFullYear(), a.getMonth(), a.getDate(), a.getHours(), a.getMinutes(), a.getSeconds());
                    return c.setMilliseconds(c.getMilliseconds() + b), new Date(c.valueOf())
                }, a.ga = function(b, c) {
                    var d = a.L()[b].getFullYear();
                    return d + c - 1
                }, a.ha = function(b, c) {
                    var d, e;
                    for (c = c.toUpperCase(), d = a.P(b), e = 0; e < d.length; e++) if (d[e] === c) return e;
                    return -1
                }, a.ia = function(b, c) {
                    var d, e, f, g = a,
                        h = g.ca(c),
                        i = h.da;
                    if (i >= 0 && (d = g.P(b), d.length > 0)) return d[i];
                    if (e = h.ea, e >= 0) {
                        if (f = "" + e, "ee" === b) return 1 === f.length && (f = "0" + f), f;
                        if ("e" === b) return f
                    }
                    return ""
                }, a.O = [new Date(1868, 8, 8), new Date(1912, 6, 30), new Date(1926, 11, 25), new Date(1989, 0, 8)], a._ = 4, a.ba = [45, 15, 64, 99], a.W = new Date(2087, 11, 31, 23, 59, 59), a.Z = new Date(1868, 8, 8), a.ja = ["1,m", "2,t", "3,s", "4,h"], a.ka = [0, 1, 2, 3, 0, 1, 2, 3], a.U = ["明治", "大正", "昭和", "平成"], a.R = ["M", "T", "S", "H"], a.S = ["明", "大", "昭", "平"], a.la = 99, a
            }(), e = function(a) {
                n(b, a);

                function b() {
                    a.apply(this, arguments), u.call(this, "NumberFormat", ["currencySymbol", "isReadOnly"], ["$", !1]), u.call(this, "DateTimeFormat", ["fullDateTimePattern", "longDatePattern", "longTimePattern", "shortDatePattern", "shortTimePattern", "yearMonthPattern", "calendarIsReadOnly"], ["dddd, MMMM dd, yyyy h:mm:ss tt", "dddd, MMMM dd, yyyy", "h:mm:ss tt", "M/d/yyyy", "h:mm tt", "MMMM, yyyy", !1]), this.name = function() {
                        return "en-US"
                    }, this.id = 1033
                }
                return b
            }(b), f = function(a) {
                n(b, a);

                function b() {
                    var b, c, e;
                    a.apply(this, arguments), b = {
                        1: {
                            letters: ["兆", "千", "百", "十", "亿", "千", "百", "十", "万", "千", "百", "十", ""],
                            numbers: ["〇", "一", "二", "三", "四", "五", "六", "七", "八", "九"]
                        },
                        2: {
                            letters: ["兆", "阡", "百", "拾", "億", "阡", "百", "拾", "萬", "阡", "百", "拾", ""],
                            numbers: ["〇", "壱", "弐", "参", "四", "伍", "六", "七", "八", "九"]
                        },
                        3: {
                            letters: m,
                            numbers: ["０", "１", "２", "３", "４", "５", "６", "７", "８", "９"]
                        }
                    }, u.call(this, "NumberFormat", ["currencyDecimalDigits", "currencyNegativePattern", "currencySymbol", "isReadOnly", "nanSymbol", "negativeInfinitySymbol", "percentNegativePattern", "percentPositivePattern", "positiveInfinitySymbol", "dbNumber"], [0, 1, "¥", !1, "NaN (非数値)", "-∞", 1, 1, "+∞", b]), c = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", ""], e = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", ""], u.call(this, "DateTimeFormat", ["abbreviatedDayNames", "abbreviatedMonthGenitiveNames", "abbreviatedMonthNames", "amDesignator", "calendarIsReadOnly", "dayNames", "fullDateTimePattern", "longDatePattern", "longTimePattern", "monthDayPattern", "monthGenitiveNames", "monthNames", "nativeCalendarName", "pmDesignator", "shortDatePattern", "shortestDayNames", "shortTimePattern", "yearMonthPattern", "filterDialogDateFormatter", "EraFilterDialogDateFormatter"], [
                        ["日", "月", "火", "水", "木", "金", "土"], c, c, "午前", !1, ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"], "yyyy'年'M'月'd'日' H:mm:ss", "yyyy'年'M'月'd'日'", "H:mm:ss", "M'月'd'日'", e, e, "西暦 (日本語)", "午後", "yyyy/MM/dd", ["日", "月", "火", "水", "木", "金", "土"], "H:mm", "yyyy'年'M'月'", "yyyy年/mmmm/d日", "ggge/mmmm/d日"]), this.DateTimeFormat.eras = d, this.name = function() {
                        return "ja-JP"
                    }, this.id = 1041, this.isJCKCulture = !0
                }
                return b
            }(b), g = function(a) {
                n(b, a);

                function b() {
                    var b, c, d;
                    a.apply(this, arguments), b = {
                        1: {
                            letters: ["兆", "千", "百", "十", "亿", "千", "百", "十", "万", "千", "百", "十", ""],
                            numbers: ["○", "一", "二", "三", "四", "五", "六", "七", "八", "九"]
                        },
                        2: {
                            letters: ["兆", "仟", "佰", "拾", "亿", "仟", "佰", "拾", "万", "仟", "佰", "拾", ""],
                            numbers: ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"]
                        },
                        3: {
                            letters: m,
                            numbers: ["０", "１", "２", "３", "４", "５", "６", "７", "８", "９"]
                        }
                    }, u.call(this, "NumberFormat", ["currencyNegativePattern", "currencySymbol", "isReadOnly", "nanSymbol", "negativeInfinitySymbol", "percentNegativePattern", "percentPositivePattern", "positiveInfinitySymbol", "dbNumber"], [2, "¥", !1, "非数字", "负无穷大", 1, 1, "正无穷大", b]), c = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月", ""], d = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月", ""], u.call(this, "DateTimeFormat", ["abbreviatedDayNames", "abbreviatedMonthGenitiveNames", "abbreviatedMonthNames", "amDesignator", "calendarIsReadOnly", "dayNames", "firstDayOfWeek", "fullDateTimePattern", "longDatePattern", "longTimePattern", "monthDayPattern", "monthGenitiveNames", "monthNames", "nativeCalendarName", "pmDesignator", "shortDatePattern", "shortestDayNames", "shortTimePattern", "yearMonthPattern", "filterDialogDateFormatter"], [
                        ["周日", "周一", "周二", "周三", "周四", "周五", "周六"], c, c, "上午", !1, ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"], 1, "yyyy'年'M'月'd'日' H:mm:ss", "yyyy'年'M'月'd'日'", "H:mm:ss", "M'月'd'日'", d, d, "公历", "下午", "yyyy/M/d", ["日", "一", "二", "三", "四", "五", "六"], "H:mm", "yyyy'年'M'月'", "yyyy年/mmmm/d日"]), this.name = function() {
                        return "zh-cn"
                    }, this.id = 2052, this.isJCKCulture = !0
                }
                return b
            }(b), h = function(a) {
                n(b, a);

                function b() {
                    var b, c, d;
                    a.apply(this, arguments), b = {
                        1: {
                            letters: ["兆", "千", "百", "十", "億", "千", "百", "十", "万", "千", "百", "十", ""],
                            numbers: ["０", "一", "二", "三", "四", "五", "六", "七", "八", "九"]
                        },
                        2: {
                            letters: ["兆", "阡", "百", "拾", "億", "阡", "百", "拾", "萬", "阡", "百", "拾", ""],
                            numbers: ["零", "壹", "貳", "參", "四", "伍", "六", "七", "八", "九"]
                        },
                        3: {
                            letters: ["兆", "千", "百", "十", "億", "千", "百", "十", "万", "千", "百", "十", ""],
                            numbers: ["０", "１", "２", "３", "４", "５", "６", "７", "８", "９"]
                        }
                    }, u.call(this, "NumberFormat", ["currencyDecimalDigits", "currencyNegativePattern", "currencySymbol", "isReadOnly", "dbNumber"], [0, 1, "₩", !1, b]), c = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", ""], d = ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월", ""], u.call(this, "DateTimeFormat", ["abbreviatedDayNames", "abbreviatedMonthGenitiveNames", "abbreviatedMonthNames", "amDesignator", "calendarIsReadOnly", "dayNames", "firstDayOfWeek", "fullDateTimePattern", "longDatePattern", "longTimePattern", "monthDayPattern", "monthGenitiveNames", "monthNames", "nativeCalendarName", "pmDesignator", "shortDatePattern", "shortestDayNames", "shortTimePattern", "yearMonthPattern", "filterDialogDateFormatter"], [
                        ["일", "월", "화", "수", "목", "금", "토"], c, c, "오전", !1, ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"], 1, "yyyy'년' M'월' d'일' dddd h:mm:ss", "yyyy'년' M'월' d'일' dddd", "h:mm:ss", "M'월' d'일'", d, d, "서기", "오후", "yyyy-MM-dd", ["일", "월", "화", "수", "목", "금", "토"], "tt h:mm", "yyyy'년' M'월'", "yyyy년/mmmm/d일"]), this.name = function() {
                        return "ko-kr"
                    }, this.id = 1042, this.isJCKCulture = !0
                }
                return b
            }(b), i = {
                invariant: new b,
                "en-us": new e,
                "ja-jp": new f,
                "zh-cn": new g,
                "ko-kr": new h
            };

            function u(a, b, c) {
                var d, e, f, g = this;
                for (e = 0, f = b.length; e < f; e++) d = b[e], g[a][d] = c[e]
            }
            j = function() {
                if ("object" == typeof a.instance) return a.instance;

                function a() {
                    var e = "en-us";
                    this.culture = function(a) {
                        return 0 === arguments.length ? e : void(a && e !== a && (e = a.toLowerCase(), d(e)))
                    }, this.addCultureInfo = function(a, b) {
                        var d, e = b.NumberFormat.numberDecimalSeparator,
                            f = b.NumberFormat.arrayListSeparator,
                            g = b.NumberFormat.arrayGroupSeparator;
                        if (e === b.NumberFormat.listSeparator || g === f) throw d = c(3), d.C(d.SR)().Exp_Separator;
                        i[a.toLowerCase()] = b
                    }, this.getCultureInfo = function(a) {
                        var b, c, d, f;
                        if (0 === arguments.length) return i[e];
                        b = "string" == typeof a, a = b ? a.toLowerCase() : a, c = i, d = m;
                        for (f in c) if (f === a || c[f].id !== l && c[f].id === a) {
                            d = c[f];
                            break
                        }
                        return d
                    }, this.q4 = function(a) {
                        var c = this.getCultureInfo(a);
                        return c || (c = i[e], c || (c = new b)), c
                    }, this.EZa = function(a, b) {
                        var c = this.getCultureInfo(a) || this.getCultureInfo("en-US"),
                            d = c.DateTimeFormat,
                            e = d.filterDialogDateFormatter;
                        return (b.indexOf("g") >= 0 || b.indexOf("e") >= 0) && (e = d.EraFilterDialogDateFormatter || e), e
                    }, a.instance = this
                }
                function d(a) {
                    var b;
                    "function" != typeof CustomEvent ? (b = document.createEvent("CustomEvent"), b.initCustomEvent("cultureChanged", !1, !1, void 0)) : b = new CustomEvent("cultureChanged", {}), b.cultureInfo = a, p.gcCultureInfo = a, document.dispatchEvent(b)
                }
                return a
            }(), a.exports = {
                CultureInfo: b,
                CultureManager: new j
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = {};
            b.H = function(a, c) {
                var d, e, f, g, h = b.ya(a);
                if (h) for (e = 0, f = a.length; e < f && (d = c.call(a[e], e, a[e]), d !== !1); e++);
                else for (g in a) if (a.hasOwnProperty(g) && (d = c.call(a[g], g, a[g]), d === !1)) break;
                return a
            }, b.za = function(a) {
                return !a || "object" == typeof a && 0 === Object.keys(a).length
            }, b.Aa = function(a) {
                return "function" === b.Ba(a)
            }, b.Ca = function(a) {
                return Array.isArray ? Array.isArray(a) : "array" === b.Ba(a)
            }, b.Da = function(a) {
                return !isNaN(parseFloat(a)) && isFinite(a)
            }, b.Ba = function(a) {
                var c, d, e, f, g, h;
                if (null === a) return "null";
                if (c = b.r4, !c) for (c = b.r4 = {}, d = ["Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Object", "Error"], e = 0, f = d.length; e < f; e++) c["[object " + d[e] + "]"] = d[e].toLowerCase();
                return g = c.toString, h = typeof a, "object" === h || "function" === h ? c[g.call(a)] || "object" : h
            }, b.Ea = function(a, c, d) {
                var e, f;
                if (c) {
                    if (f = [].indexOf) return f.call(c, a, d);
                    for (e = c.length, b.Fa(d) && (d = 0), d = d < 0 ? Math.max(0, e + d) : d; d < e; d++) if (d in c && c[d] === a) return d
                }
                return -1
            }, b.Ga = function(a, b) {
                var c = b.length,
                    d = a.length,
                    e = 0;
                if ("number" == typeof c) for (; e < c; e++) a[d++] = b[e];
                else for (; void 0 !== b[e];) a[d++] = b[e++];
                return a.length = d, a
            }, b.Ha = function(a, c, d) {
                var e, f, g = 0,
                    h = a.length,
                    i = b.ya(a),
                    j = [];
                if (i) for (; g < h; g++) e = c(a[g], g, d), null !== e && (j[j.length] = e);
                else for (g in a) a.hasOwnProperty(g) && (e = c(a[g], g, d), null !== e && (j[j.length] = e));
                return f = [].concat, f.apply([], j)
            }, b.Ia = function() {
                var a, c, d, e, f, g, h, i, j, k, l, m = [];
                for (a = 0; a < arguments.length; a++) m[a] = arguments[a];
                for (i = arguments[0] || {}, j = 1, k = arguments.length, l = !1, "boolean" == typeof i && (l = i, i = arguments[1] || {}, j = 2), "object" == typeof i || b.Aa(i) || (i = {}), k === j && (i = this, --j); j < k; j++) if (g = arguments[j], !b.Fa(g)) for (f in g) c = i[f], e = g[f], i !== e && (d = b.Ca(e), l && e && (b.Ja(e) || d) ? (h = d ? c && b.Ca(c) ? c : [] : c && b.Ja(c) ? c : {}, i[f] = b.Ia(l, h, e)) : void 0 !== e && (i[f] = e));
                return i
            }, b.G = function(a, b) {
                for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c]);

                function d() {
                    this.constructor = a
                }
                d.prototype = b.prototype, a.prototype = new d
            }, b.Ka = function(a) {
                return null !== a && a === a.window
            }, b.Ja = function(a) {
                var c, d;
                if (!a || "object" !== b.Ba(a) || a.nodeType || b.Ka(a)) return !1;
                c = {}.hasOwnProperty;
                try {
                    if (a.constructor && !c.call(a, "constructor") && !c.call(a.constructor.prototype, "isPrototypeOf")) return !1
                } catch (a) {
                    return !1
                }
                for (d in a);
                return void 0 === d || c.call(a, d)
            }, b.ya = function(a) {
                if (b.Fa(a)) return !1;
                var c = a.length,
                    d = b.Ba(a);
                return !b.Ka(a) && (!(1 !== a.nodeType || !c) || ("array" === d || "function" !== d && (0 === c || "number" == typeof c && c > 0 && c - 1 in a)))
            }, b.La = function(a, c) {
                var d = c || [];
                return null !== a && (b.ya(Object(a)) ? b.Ga(d, "string" == typeof a ? [a] : a) : [].push.call(d, a)), d
            }, b.Ma = function(a, c) {
                return b.Fa(a) ? "null" === c : !! c && (c instanceof Function && a instanceof c || (typeof a === c || (!("function" !== c || !/^\s*\bfunction\b/.test("" + a)) || (Object.prototype.toString.call(a).slice(8, -1).toLowerCase() === c.toLowerCase() || ("DateTime" === c || "TimeSpan" === c ? a instanceof Date : ("string" == typeof c && "undefined number boolean string".indexOf(c) > -1, !1))))))
            }, b.Fa = function(a) {
                return void 0 === a || null === a
            }, b.Na = function(a, d) {
                var e = c(6);
                return !!e.Xia(a, d) && (a = e.Oa(a, d), b.Ma(a, "number") || b.Ma(a, "DateTime") || b.Ma(a, "TimeSpan") || a && !b.Ma(a, "boolean") && !isNaN(a) && !isNaN(parseFloat(a)) && !(a.length >= 2 && "0" === a[0] && "x" === a[1]))
            }, b.Pa = function(a) {
                var d = c(9);
                return b.Fa(a) || "" === a ? 0 : b.Ma(a, "number") ? a : b.Ma(a, "string") && !isNaN(a) ? c(6).Qa(a) : b.Ma(a, "boolean") ? a ? 1 : 0 : b.Ma(a, "DateTime") ? d.Ra(a) : b.Ma(a, "TimeSpan") ? Math.floor(d.Ra(a)) : parseFloat(a)
            }, b.C4 = function(a) {
                if (!a) return a;
                if ("number" == typeof a || "string" == typeof a || "boolean" == typeof a || b.Fa(a)) return a;
                if (a.clone) return a.clone();
                if (a instanceof Date) return new Date(a);
                var c, d, e;
                c = a instanceof Object ? new a.constructor : new a.constructor(a.valueOf());
                for (d in a) a.hasOwnProperty(d) && (e = a[d], a.hasOwnProperty(d) && c[d] !== e && ("object" == typeof e ? c[d] = b.C4(e) : c[d] = e));
                return c.toString = a.toString, c.valueOf = a.valueOf, c
            }, a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e = c(3),
                f = c(5).Fa,
                g = c(7),
                h = c(8),
                i = h.Sa,
                j = h.Ta,
                k = c(4).CultureManager,
                l = null,
                m = void 0,
                n = parseInt,
                o = parseFloat,
                p = !1,
                q = !0,
                r = Math.floor,
                s = Math.abs,
                t = Math.pow,
                u = Math.min;

            function v(a, b, c) {
                return a.substr(b, c)
            }
            b = function() {
                return e.C(e.SR)()
            }, d = function() {
                var a, c, d = "##################0",
                    e = "################",
                    g = {
                        1: "+",
                        0: "",
                        "-1": "-"
                    },
                    x = 4294967295,
                    y = ["0", "#", "?"],
                    z = {
                        "¤": "¤",
                        Br: "Br",
                        Fdj: "Fdj",
                        Nfk: "Nfk",
                        R: "R",
                        $: "$",
                        FCFA: "FCFA",
                        "GH₵": "GH₵",
                        "ብር": "ብር",
                        "ر.س.‏": "ر.س.‏",
                        XDR: "XDR",
                        "د.إ.‏": "د.إ.‏",
                        "د.ب.‏": "د.ب.‏",
                        "د.ج.‏": "د.ج.‏",
                        "ج.م.‏": "ج.م.‏",
                        "₪": "₪",
                        "د.ع.‏": "د.ع.‏",
                        "د.ا.‏": "د.ا.‏",
                        "ف.ج.ق.‏": "ف.ج.ق.‏",
                        "د.ك.‏": "د.ك.‏",
                        "ل.ل.‏": "ل.ل.‏",
                        "د.ل.‏": "د.ل.‏",
                        "د.م.‏": "د.م.‏",
                        "أ.م.‏": "أ.م.‏",
                        "ر.ع.‏": "ر.ع.‏",
                        "ر.ق.‏": "ر.ق.‏",
                        "ج.س.": "ج.س.",
                        S: "S",
                        "£": "£",
                        "ل.س.‏": "ل.س.‏",
                        "د.ت.‏": "د.ت.‏",
                        "ر.ي.‏": "ر.ي.‏",
                        "₹": "₹",
                        TSh: "TSh",
                        "€": "€",
                        "₼": "₼",
                        "₽": "₽",
                        K: "K",
                        "лв.": "лв.",
                        "₦": "₦",
                        CFA: "CFA",
                        "৳": "৳",
                        "¥": "¥",
                        KM: "KM",
                        "КМ": "КМ",
                        USh: "USh",
                        "Kč": "Kč",
                        "kr.": "kr.",
                        Ksh: "Ksh",
                        CHF: "CHF",
                        "ރ.": "ރ.",
                        "Nu.": "Nu.",
                        EC$: "EC$",
                        P: "P",
                        US$: "US$",
                        D: "D",
                        Rp: "Rp",
                        Ar: "Ar",
                        MOP$: "MOP$",
                        Rs: "Rs",
                        MK: "MK",
                        RM: "RM",
                        "₱": "₱",
                        RF: "RF",
                        SR: "SR",
                        SDG: "SDG",
                        Le: "Le",
                        "NAf.": "NAf.",
                        E: "E",
                        T$: "T$",
                        VT: "VT",
                        WS$: "WS$",
                        Bs: "Bs",
                        "₡": "₡",
                        Q: "Q",
                        L: "L",
                        C$: "C$",
                        "B/.": "B/.",
                        "S/.": "S/.",
                        "₲": "₲",
                        "Bs.": "Bs.",
                        "ريال": "ريال",
                        FG: "FG",
                        UM: "UM",
                        kr: "kr",
                        FBu: "FBu",
                        FC: "FC",
                        DA: "DA",
                        G: "G",
                        CF: "CF",
                        DH: "DH",
                        FCFP: "FCFP",
                        LS: "LS",
                        DT: "DT",
                        kn: "kn",
                        HUF: "HUF",
                        "֏": "֏",
                        ISK: "ISK",
                        "₾": "₾",
                        "​": "​",
                        "₸": "₸",
                        "៛": "៛",
                        "₩": "₩",
                        "сом": "сом",
                        Kz: "Kz",
                        "₭": "₭",
                        MTn: "MTn",
                        "ден": "ден",
                        "₮": "₮",
                        "रु": "रु",
                        "Afl.": "Afl.",
                        "ߖߕ.": "ߖߕ.",
                        "руб.": "руб.",
                        "zł": "zł",
                        "؋": "؋",
                        R$: "R$",
                        Db: "Db",
                        RON: "RON",
                        "₴": "₴",
                        MAD: "MAD",
                        "රු.": "රු.",
                        "Lekë": "Lekë",
                        den: "den",
                        RSD: "RSD",
                        "дин.": "дин.",
                        "ܠ.ܣ.‏": "ܠ.ܣ.‏",
                        "Rs.": "Rs.",
                        "смн": "смн",
                        "฿": "฿",
                        "m.": "m.",
                        "₺": "₺",
                        "ⴷⵔ": "ⴷⵔ",
                        "soʻm": "soʻm",
                        "сўм": "сўм",
                        "₫": "₫",
                        HK$: "HK$",
                        MOP: "MOP",
                        NT$: "NT$"
                    };

                function A(a, b, c, d) {
                    return b && 0 !== b.length && "i" !== b ? B(a, b, c.NumberFormat, d) : c && c.name.length > 0 ? a.toLocaleString() : "" + a
                }
                function B(a, b, c, d) {
                    var e = E(b, c);
                    return N(a, e, c, d)
                }
                function C(a, b) {
                    for (var c, d, e, f, g, h, i, j, k = r(s(a)), l = {
                        Xa: 1,
                        Ya: 0
                    }; k >= 10;) k /= 10, l.Xa++;
                    return c = "" + a, d = c.search(/e/gi), e = c.indexOf(b), d !== -1 ? (g = v(c, 0, d), h = v(c, d + 1), i = 0, e !== -1 && (i = v(g, e + 1).length), j = o(h), f = i - j, f < 0 && (f = 0), l.Ya = f) : (f = 0, e !== -1 && (f = v(c, e + 1).length), l.Ya = f), l
                }
                function D(a) {
                    var c, d = {
                            Za: a.charAt(0),
                            $a: 0,
                            _a: 0
                        },
                        e = "";
                    for (c = 1; c < a.length; c++) if (e = a.charAt(c), "+" === e) d.$a = 1;
                    else {
                        if ("-" !== e) {
                            if ("0" === e) {
                                d._a = a.length - c;
                                break
                            }
                            throw Error(b().Exp_InvalidExponentFormat)
                        }
                        d.$a = -1
                    }
                    return d
                }
                function E(a, b) {
                    var c, d, e, f, g, h, i = {
                            ab: l,
                            bb: l,
                            cb: p,
                            eb: 0,
                            fb: 0,
                            Rja: 0,
                            hb: l
                        },
                        j = "",
                        k = p,
                        m = p,
                        n = p,
                        o = p,
                        r = p,
                        s = p,
                        t = l,
                        u = [];
                    for (d = 0; d < a.length; d++) {
                        if (c = a.charAt(d), k) j += c, '"' === c && (u.push(j), j = "", k = p);
                        else if (m) {
                            if ("E" === t || "e" === t) {
                                if (!(["+", "-", "0"].indexOf(c) >= 0)) {
                                    m = p, d--;
                                    continue
                                }
                                j += c
                            } else if ("+" === t || "-" === t) {
                                if ("0" !== c) {
                                    m = p, d--;
                                    continue
                                }
                                j += c
                            } else if ("0" === t) {
                                if ("0" !== c) {
                                    m = p, r || (r = q, i.hb = D(j)), d--;
                                    continue
                                }
                                j += c
                            }
                        } else if ("*" !== t && "_" !== t && "\\" !== t || "" === j) if ("*" === c || "_" === c || "\\" === c) s = p, "" !== j && (u.push(j), j = ""), j += c;
                        else if ("'" === c) s = p, "" !== j && (u.push(j), j = ""), u.push(c);
                        else if ('"' === c) s = p, k = q, "" !== j && (u.push(j), j = ""), j += c;
                        else if (y.indexOf(c) >= 0) s = q, y.indexOf(t) < 0 && "" !== j && (u.push(j), j = ""), j += c;
                        else if ("." !== c || n) if (c === b.percentSymbol) s = p, i.fb++, "" !== j && (u.push(j), j = ""), u.push(c);
                        else if (c === b.perMilleSymbol) s = p, i.Rja++, "" !== j && (u.push(j), j = ""), u.push(c);
                        else if (c === b.percentGroupSeparator) if (s) {
                            for ("" !== j && (u.push(j), j = ""), e = q, f = "", g = d + 1; g < a.length; g++) if (h = a.charAt(g), "" === f) if ('"' === h) f = h;
                            else {
                                if (y.indexOf(h) >= 0) {
                                    e = p;
                                    break
                                }
                                if (h === b.numberDecimalSeparator || ";" === h) break
                            } else '"' === h && (f = "");
                            e ? i.eb++ : n || (h = a.charAt(d + 1), h && y.indexOf(h) >= 0 && (o = q))
                        } else j += c;
                        else "E" === c || "e" === c ? (s = p, m = q, "" !== j && (u.push(j), j = ""), j += c) : (s = p, y.indexOf(t) >= 0 && "" !== j && (u.push(j), j = ""), j += c);
                        else "" !== j && (u.push(j), j = ""), i.ab = u, u = [], n = q, s = p;
                        else j += c, u.push(j), j = "";
                        t = c
                    }
                    return "" !== j && (m && !r && (i.hb = D(j)), u.push(j)), o && (i.cb = q), n ? i.bb = u : i.ab = u, i
                }
                function F(a, c, d, e) {
                    var f, g, h, i, j, k = c[0],
                        l = 1,
                        m = 0,
                        n = p,
                        o = a.length;
                    for (f = 0; f < o; f++) if (g = a[f].type, "number" === g) {
                        for (h = "", i = a[f].value, j = i.length - 1; j >= 0;) {
                            if (k < 1 || k > 9) throw Error(b().Exp_InvalidNumberGroupSize);
                            /\d/gi.test(i[j]) ? (n && (h && a.push({
                                type: "number",
                                value: h
                            }), a.push({
                                type: "groupSeparator",
                                value: d
                            }), h = "", n = p), m++) : m = 0, h = i[j] + h, m === k && (n = q, m = 0, l < c.length && (k = c[l], l++)), j--
                        }
                        h && a.push({
                            type: g,
                            value: h
                        })
                    } else "fillingChar" === g && (e.infillIndex = a.length - o), a.push({
                        type: g,
                        value: a[f].value
                    });
                    return a.splice(0, o)
                }
                function G(a, b, c, d, e, f) {
                    var g, h, k, l, m = R(a, -b);
                    return isFinite(m) || (m = a), a = m, g = "" + a, l = g.split(/e/i), g = l[0], k = l.length > 1 ? n(l[1], 10) : 0, l = g.split("."), g = l[0], h = l.length > 1 ? l[1] : "", k > 0 ? (h = j(h, k), g += h.slice(0, k), h = v(h, k)) : k < 0 && (k = -k, g = a < 0 ? f + i(g.replace(f, ""), k + 1) : i(g, k + 1), h = g.slice(-k, g.length) + h, g = g.slice(0, -k)), b > 0 ? (h = h.length > b ? h.slice(0, b) : j(h, b), h = e + h) : h = "", g + h
                }
                function H(a, b, c, d) {
                    var e = a;
                    return b > 0 && (e = a * t(100, b)), c > 0 && (e = a * t(1e3, c)), d > 0 && (e = a / t(1e3, d)), e
                }
                function I(a) {
                    var b, c, d = l;
                    if (a) for (d = "", b = 0; b < a.length; b++) c = a[b], /^(0|#|\?)+/g.test(c) && (d += c);
                    return d
                }
                function J(a, b, c) {
                    var d, e = {
                            value: a,
                            exponentValue: 0
                        },
                        f = C(a, "."),
                        g = f.Xa,
                        h = s(a),
                        i = c ? c.length : 1;
                    if (h >= 1) g > i ? (g -= i, e.value = a / t(10, g), e.exponentValue = g) : e.exponentValue = 0, b.$a === -1 && (b.$a = 0);
                    else if (h < 1 && h > 0) {
                        for (b.$a = -1, d = t(10, i); 10 * h < d;) h *= 10, e.exponentValue++;
                        e.value *= t(10, e.exponentValue)
                    }
                    return e
                }
                function K(a, b, c, d, e, f, h, j) {
                    var k, l, m, n, o, p, r, s, t, u, w, x, y = j.numberGroupSizes,
                        A = j.numberGroupSeparator,
                        B = j.negativeSign,
                        C = j.percentSymbol,
                        D = j.perMilleSymbol,
                        E = d.hb,
                        G = v(b, 0, 1);
                    for (G === B && (b = v(b, 1)), k = 1 === b.length && "0" === b ? 0 : b.length, b = 0 === k ? "" : b, l = 0, m = "", n = a.length - 1; n >= 0; n--) if (o = "", p = a[n], /^(0|#|\?)+/g.test(p)) {
                        if (m !== c) {
                            for (r = p.length, s = k - l - 1; s >= 0 && r > 0; s--) t = b.charAt(s), o = t + o, r--, l++;
                            for (u = r - 1; u >= 0; u--) w = p[u], l++, "0" === w ? o = w + o : "?" === w && ("" !== o && (f.push({
                                type: "number",
                                value: o
                            }), o = ""), f.push({
                                type: "numberPlaceholder",
                                value: w
                            }));
                            m = p + m, m === c && l < k && (o = b.substr(0, k - l) + o), "" !== o && f.push({
                                type: "number",
                                value: o
                            })
                        }
                    } else d.hb && !h.replaceExponent && /^((E(\+|-)?|e(\+|-)?)\d+)/g.test(p) ? (h.replaceExponent = q, x = "", x += E.Za, x += g[E.$a], x += i("" + e, E._a), f.push({
                        type: "exponent",
                        value: x
                    })) : "_" === p[0] ? f.push({
                        type: "placeholder",
                        value: p[1]
                    }) : "*" === p[0] ? h.hasInfilling || (f.push({
                        type: "fillingChar",
                        value: p[1]
                    }), h.hasInfilling = !0, h.infillIndex = f.length - 1) : "\\" === p[0] ? 2 === p.length && f.push({
                        type: "text",
                        value: p[1]
                    }) : '"' === p[0] && '"' === p[p.length - 1] ? p.length > 2 && f.push({
                        type: "text",
                        value: p.substr(1, p.length - 2)
                    }) : p === C ? f.push({
                        type: "percent",
                        value: p
                    }) : p === D ? f.push({
                        type: "permille",
                        value: p
                    }) : z[p] ? f.push({
                        type: "currency",
                        value: p
                    }) : f.push({
                        type: "text",
                        value: p
                    });
                    G === B && c && f.push({
                        type: "text",
                        value: G
                    }), d.cb === q && F(f, y, A, h), f = f.reverse(), h.infillIndex = f.length - 1 - h.infillIndex
                }
                function L(a, b, c, f, h, j, k, l, m) {
                    var n, o, p, r, s, t, u, v, w, x, y, A, B, C = m.numberDecimalSeparator,
                        D = m.percentSymbol,
                        E = m.perMilleSymbol,
                        F = b.indexOf(C),
                        G = h.hb;
                    for ((F > 0 || f !== d || c !== e) && k.push({
                        type: "decimalSeparator",
                        value: C
                    }), n = F !== -1 ? b.substring(F + 1) : "", o = 0, p = "", r = 0; r < a.length; r++) if (s = a[r], /^(0|#|\?)+/g.test(s)) {
                        if (t = "", p !== c) {
                            for (u = s.length, v = 0, w = o; u > 0 && n.length - o > 0;) x = n.charAt(w), t += x, u--, o++, v++, w++;
                            for (y = v; u > 0;) A = s[y], y++, o++, u--, "0" === A ? t += A : "?" === A && ("" !== t && (k.push({
                                type: "number",
                                value: t
                            }), t = ""), k.push({
                                type: "numberPlaceholder",
                                value: A
                            }));
                            "" !== t && k.push({
                                type: "number",
                                value: t
                            }), p += s
                        }
                    } else G && !l.replaceExponent && /^((E(\+|-)?|e(\+|-)?)\d+)/g.test(s) ? (l.replaceExponent = q, B = "", B += G.Za, B += g[G.$a], B += i("" + j, G._a), k.push({
                        type: "exponent",
                        value: B
                    })) : "_" === s[0] ? k.push({
                        type: "placeholder",
                        value: s[1]
                    }) : "*" === s[0] ? (k.push({
                        type: "fillingChar",
                        value: s[1]
                    }), l.hasInfilling && k.splice(l.infillIndex, 1), l.hasInfilling = !0, l.infillIndex = k.length - 1) : "\\" === s[0] ? 2 === s.length && k.push({
                        type: "text",
                        value: s[1]
                    }) : '"' === s[0] && '"' === s[s.length - 1] ? s.length > 2 && k.push({
                        type: "text",
                        value: s.substr(1, s.length - 2)
                    }) : s === D ? k.push({
                        type: "percent",
                        value: s
                    }) : s === E ? k.push({
                        type: "permille",
                        value: s
                    }) : z[s] ? k.push({
                        type: "currency",
                        value: s
                    }) : k.push({
                        type: "text",
                        value: s
                    })
                }
                function M(a, b) {
                    var c = a,
                        d = a.indexOf(b);
                    return d !== -1 && (c = a.replace(/0+$/, "")), c
                }
                function N(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, q, r, s, t, v = [];
                    return a = H(a, b.fb, b.Rja, b.eb), e = b.ab, f = b.bb, e || f ? (g = I(e), h = I(f), h || (h = ""), b.hb && (j = J(a, b.hb, g), a = j.value, i = j.exponentValue), k = C(a, "."), l = c.numberGroupSizes, m = c.numberGroupSeparator, n = c.numberDecimalSeparator, o = c.negativeSign, q = u(k.Ya, h.length), r = G(a, q, l, m, n, o), d || (r = M(r, n)), "" === r ? (v.push({
                        type: "text",
                        value: (e ? e.join("") : "") + (f ? f.join("") : "")
                    }), v) : (s = {
                        hasInfilling: p,
                        infillIndex: -1,
                        replaceExponent: p
                    }, t = r.split(n)[0], e && K(e, t, g, b, i, v, s, c), "0" !== t && "" === g && f && v.push({
                        type: "number",
                        value: t
                    }), f && L(f, r, h, g, b, i, v, s, c), v)) : v
                }
                function O(a, b) {
                    var c, d, e, g, i, j, k, m, p, q, r, s, t, u, w, x, y;
                    return a = f(a) ? "" : h.ib(a, ""), a.match(/^[+-]?infinity$/i) ? o(a) : a.match(/^0x[a-f0-9]+$/i) ? n(a, 10) : (c = b.NumberFormat, d = c.numberNegativePattern, e = P(a, c, d), g = e[0], i = e[1], "" === g && 1 !== d && (e = P(a, c, 1), g = e[0], i = e[1]), "" === g && (g = "+"), i[0] === c.currencySymbol && (i = v(i, 1)), m = i.indexOf("e"), m < 0 && (m = i.indexOf("E")), m < 0 ? (k = i, j = l) : (k = v(i, 0, m), j = v(i, m + 1)), r = k.indexOf("."), r < 0 ? (p = k, q = l) : (p = v(k, 0, r), q = v(k, r + 1)), p = p.split(",").join(""), s = ",".replace(/ /g, " "), "," !== s && (p = p.split(s).join("")), t = g + p, q !== l && (t += "." + q), u = t[t.length - 1], u === c.percentSymbol && (t = v(t, 0, t.length - 1), t = h.ib(t, ""), w = t.indexOf("."), w === -1 && (w = t.length), x = "", x += v(t, 0, w - 2), x += ".", x += v(t, w - 2, 2), x += v(t, w + 1), t = x), j !== l && (y = P(j, c, 1), "" === y[0] && (y[0] = "+"), t += "e" + y[0] + y[1]), t.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/) ? o(t) : NaN)
                }
                function P(a, b, c) {
                    var d = b.negativeSign,
                        e = b.positiveSign,
                        f = h;
                    if (4 !== c && 2 !== c || (d = " " + d, e = " " + e), 4 === c || 3 === c) {
                        if (f.jb(a, d)) return ["-", v(a, 0, a.length - d.length)];
                        if (f.jb(a, e)) return ["+", v(a, 0, a.length - e.length)]
                    } else if (2 === c || 1 === c) {
                        if (f.kb(a, d)) return ["-", v(a, d.length)];
                        if (f.kb(a, e)) return ["+", v(a, e.length)]
                    } else {
                        if (0 !== c) throw Error("");
                        if (f.kb(a, "(") && f.jb(a, ")")) return ["-", v(a, 1, a.length - 2)]
                    }
                    return ["", a]
                }
                function Q(a, c, d) {
                    if (0 !== s(r(a) - a)) throw Error(b().Exp_BadFormatSpecifier);
                    var e = a >= 0 ? a.toString(16) : (x + a + 1).toString(16);
                    return e = c ? e.toLowerCase() : e.toUpperCase(), !f(d) && e.length < d ? i(e, d) : e
                }
                function R(a, b) {
                    if (typeof b === m || 0 === +b) return Math.round(a);
                    if (a = +a, b = +b, isNaN(a) || b % 1 !== 0) return NaN;
                    var c = a < 0;
                    return a = c ? -a : a, a = ("" + a).split("e"), a = Math.round(+(a[0] + "e" + (a[1] ? +a[1] - b : -b))), a = c ? -a : a, a = ("" + a).split("e"), +(a[0] + "e" + (a[1] ? +a[1] + b : b))
                }
                a = "#dot#", c = "#group#";

                function S(a) {
                    var b = k.q4().NumberFormat;
                    return "string" == typeof a && (b = k.q4(a).NumberFormat), b
                }
                function T(a) {
                    var b, c, d, e = "";
                    if (Array.isArray(a) && a.length > 0) for (b = 0; b < a.length; b++) if (c = a[b].type, d = a[b].value, "placeholder" === c) e += " ";
                    else {
                        if ("fillingChar" === c) continue;
                        e += "numberPlaceholder" === c ? " " : d
                    }
                    return e
                }
                function U(a, b) {
                    return "number" == typeof a && ("" + a).length >= b && (a = a < 1 && a > -1 ? +a.toFixed(b) : +a.toPrecision(b)), a
                }
                return {
                    Qa: function(a) {
                        return O(a, k.q4())
                    },
                    lb: function(a) {
                        return O(a, k.q4("invariant"))
                    },
                    mb: function(a, b, c, d) {
                        return c || (c = k.q4()), A(a, b, c, d)
                    },
                    nb: function(b, d) {
                        var e, f, g;
                        return "string" != typeof b ? b : (e = S(d), f = e.numberDecimalSeparator, g = e.numberGroupSeparator, "." !== f && (b = b.replace(w("[.]"), a)), "," !== g && (b = b.replace(w("[,]"), c)), "." !== f && (b = b.replace(w(a), f)), "," !== g && (b = b.replace(w(c), g)), b)
                    },
                    Oa: function(b, d) {
                        var e, f, g;
                        return "string" != typeof b ? b : (e = S(d), f = e.numberDecimalSeparator, g = e.numberGroupSeparator, "." !== f && (b = b.replace(w("[" + f + "]"), a)), "," !== g && (b = b.replace(w("[" + g + "]"), c)), "." !== f && (b = b.replace(w(a), ".")), "," !== g && (b = b.replace(w(c), ",")), b)
                    },
                    Xia: function(a, b) {
                        var c, d, e;
                        return !("string" == typeof a && (c = S(b), d = c.numberDecimalSeparator, e = c.numberGroupSeparator, "." !== d && "." !== e && a.indexOf(".") >= 0 || "," !== d && "," !== e && a.indexOf(",") >= 0))
                    },
                    ob: function(a, b) {
                        return o(this.Oa(a, b))
                    },
                    pb: Q,
                    Hja: E,
                    Ija: N,
                    Jja: T,
                    eka: d,
                    fka: e,
                    Lma: U
                }
            }();

            function w(a) {
                return g.qb(a)
            }
            a.exports = d
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(8),
                d = function() {
                    function a() {}
                    return a.qb = function(b) {
                        var c = a.rb[b];
                        return c || (c = a.rb[b] = RegExp(b, "g")), c.lastIndex = 0, c
                    }, a.sb = function(b) {
                        var c = a.tb[b];
                        return c || (c = a.tb[b] = RegExp(b, "gi")), c.lastIndex = 0, c
                    }, a.ub = function(b, c, d) {
                        var e, f, g, h, i, j;
                        if (a.vb[b]) return a.wb[b];
                        if (e = "[~?*]+", a.qb(e).test(b)) {
                            for (f = [], g = b.split(""), i = {
                                ".": !0,
                                "+": !0,
                                $: !0,
                                "^": !0,
                                "[": !0,
                                "]": !0,
                                "(": !0,
                                ")": !0,
                                "{": !0,
                                "}": !0,
                                "|": !0,
                                "/": !0
                            }, j = 0; j < g.length; j++) h = g[j], "~" === h && j < g.length - 1 ? (j++, h = g[j], "*" === h || "?" === h ? f.push("\\") : c && f.push("~"), f.push(h)) : "?" === h ? f.push(".") : "*" === h ? (f.push("."), d ? f.push("+") : f.push("*")) : i[h] ? (f.push("\\"), f.push(h)) : f.push(h);
                            return f.join("")
                        }
                        return null
                    }, a.zb = function(b, c, d) {
                        var e = a.ub(b, c, d);
                        return e && (e = "^" + e + "$"), e
                    }, a.xb = function(a, c) {
                        for (var d = "#" + a + "0#", e = 1; c.indexOf(d) > 0;) d = b.yb(d, "#" + a + (e - 1) + "#", "#" + a + e + "#"), e++;
                        return d
                    }, a.rb = {}, a.tb = {}, a.vb = {}, a.wb = {}, a.Ab = function(a) {
                        return a.replace(/([\~\!\@\#\$\%\^\&\*\(\)\-\_\+\=\[\]\{\}\|\\\;\:\'\"\,\.\/\<\>\?])/, "\\$1")
                    }, a
                }();
            a.exports = d
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d = c(5).Fa;

            function e(a, b, c) {
                return a.substr(b, c)
            }
            b = {
                Bb: function(a, b, c) {
                    return c && (a = a.toLowerCase(), b = b.toLowerCase()), "" === b || a.indexOf(b) >= 0
                },
                Cb: function(a, b, c) {
                    var d, e;
                    return c ? (d = a.toLowerCase(), e = b.toLowerCase(), d.indexOf(e)) : a.indexOf(b)
                },
                Db: function(a, b) {
                    if (!b) return a;
                    for (var c = a; e(c, 0, b.length) === b;) c = e(c, b.length);
                    return c
                },
                ib: function(a, b) {
                    if (!b) return a;
                    for (var c = a; e(c, c.length - b.length, b.length) === b;) c = e(c, 0, c.length - b.length);
                    return c
                },
                Eb: function(a, b, c) {
                    var f, g;
                    if (b < 0 || b > a.length || d(c)) throw Error();
                    return f = e(a, 0, b), g = e(a, b, a.length - b), f + c + g
                },
                Fb: function(a, b, c) {
                    var f, g;
                    if (d(c) && (c = a.length - b), b < 0 || c < 0 || b + c > a.length) throw Error();
                    return f = e(a, 0, b), g = e(a, b + c, a.length - b - c), f + g
                },
                kb: function(a, b, c) {
                    return f(a, b, c, function(a, b) {
                        return a.slice(0, b.length) === b
                    })
                },
                jb: function(a, b, c) {
                    return f(a, b, c, function(a, b) {
                        return a.slice(-b.length) === b
                    })
                },
                Gb: function(a, b, c, d) {
                    if (!b) throw Error();
                    return c = ("" + c).replace(/\$/g, "$$$$"), a.replace(RegExp(b, "g" + (d ? "i" : "")), c)
                },
                Hb: function(a, b, d, e) {
                    return b = c(7).Ab(b), this.Gb(a, b, d, e)
                },
                Ib: function(a, b) {
                    var c = a.indexOf(b);
                    return c < 0 || c >= a.length ? a : e(a, 0, c)
                },
                Jb: function(a, b) {
                    for (var c = 0, d = a.indexOf(b); d >= 0;) c += 1, d = a.indexOf(b, d + 1);
                    return c
                },
                yb: function(a, b, c) {
                    return a.split(b).join(c)
                },
                Kb: function(a, b) {
                    var c, d, e = a;
                    for (c = 0; c < b.length; c++) d = RegExp("\\{" + c + "\\}", "g"), e = e.replace(d, b[c]);
                    return e
                },
                Lb: function(a, b, c) {
                    var d, e = "" + a;
                    for (d = e.length; d < b; d++) e = c ? "0" + e : e + "0";
                    return e
                },
                Sa: function(a, c) {
                    return b.Lb(a, c, !0)
                },
                Ta: function(a, c) {
                    return b.Lb(a, c, !1)
                },
                Mb: function(a, b) {
                    return a === b || !a && !b || a && b && a.toLowerCase() === b.toLowerCase()
                },
                Nb: function(a) {
                    return a.toUpperCase()
                },
                Ob: function(a) {
                    var b = {
                            "&": "&amp;",
                            "<": "&lt;",
                            ">": "&gt;",
                            '"': "&quot;",
                            "'": "&#x27;",
                            "`": "&#x60;"
                        },
                        d = c(7).qb("(?:&|<|>|\"|'|`)");
                    return d.test(a) ? a.replace(d, function(a) {
                        return b[a]
                    }) : a
                },
                Pb: function(a) {
                    var b = {
                            "&amp;": "&",
                            "&lt;": "<",
                            "&gt;": ">",
                            "&quot;": '"',
                            "&#x27;": "'",
                            "&#x60;": "`"
                        },
                        d = c(7).qb("(?:&amp;|&lt;|&gt;|&quot;|&#x27;|&#x60;)");
                    return d.test(a) ? a.replace(d, function(a) {
                        return b[a]
                    }) : a
                }
            };

            function f(a, b, c, e) {
                var f, g;
                if (d(b)) throw Error();
                return "" === b || !(b.length > a.length) && (f = a, g = b, c && (f = f.toLowerCase(), g = g.toLowerCase()), e(f, g))
            }
            a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(3),
                d = c(8),
                e = c(10),
                f = c(4).CultureManager,
                g = c(5).Fa,
                h = d.Sa,
                i = null,
                j = parseInt,
                k = !1,
                l = !0,
                m = Math.floor,
                n = Math.abs,
                o = function() {
                    return b.C(b.SR)()
                },
                p = {},
                q = function() {
                    function a(a, b, c) {
                        var d, e, f, g, h, j = k;
                        for (h = c, h.slice(1).forEach(function(a) {
                            a && (j = !0)
                        }), j || (h = h.concat(b.ma())), d = 1, e = h.length; d < e; d++) if (g = h[d], g && (j = l, f = u(a, g, b))) return f;
                        return i
                    }
                    function b(a, d, e) {
                        var f, g, i, j, k, p, q, r, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J = e.DateTimeFormat,
                            K = J.Calendar.convert;
                        if (!d || !d.length) return e && e.name.length ? K ? b(a, J.fullDateTimePattern, e) : a.toLocaleString() : "" + a;
                        f = J.eras, g = "s" === d, i = "", q = /([^d]|^)(d|dd)([^d]|$)/g;

                        function L() {
                            return k || p ? k : (k = q.test(d), p = l, k)
                        }
                        r = 0, t = s(), !g && K && (u = K.fromGregorian(a));

                        function M(a, b) {
                            if (u) return u[b];
                            switch (b) {
                                case 0:
                                    return a.getFullYear();
                                case 1:
                                    return a.getMonth();
                                case 2:
                                    return a.getDate();
                                default:
                                    return
                            }
                        }
                        for (v = -2, w = -2, x = {
                            Qb: ""
                        }, y = 0; z = t.lastIndex, A = t.exec(d), B = d.slice(z, A ? A.index : d.length), x.Qb = "", r += c(B, x), i += x.Qb, A; y++) if (r % 2 !== 1) switch (C = a.getFullYear(), D = a.getDay(), E = a.getHours(), F = a.getMinutes(), G = a.getSeconds(), H = a.getMilliseconds(), I = a.getTimezoneOffset(), A[0]) {
                            case "dddd":
                                i += J.dayNames[D];
                                break;
                            case "ddd":
                                i += J.abbreviatedDayNames[D];
                                break;
                            case "dd":
                                k = l, i += h(M(a, 2), 2);
                                break;
                            case "d":
                                k = l, i += M(a, 2);
                                break;
                            case "MMMM":
                                i += J.monthGenitiveNames && L() ? J.monthGenitiveNames[M(a, 1)] : J.monthNames[M(a, 1)];
                                break;
                            case "MMM":
                                i += J.abbreviatedMonthGenitiveNames && L() ? J.abbreviatedMonthGenitiveNames[M(a, 1)] : J.abbreviatedMonthNames[M(a, 1)];
                                break;
                            case "MM":
                                i += h(M(a, 1) + 1, 2);
                                break;
                            case "M":
                                i += M(a, 1) + 1;
                                break;
                            case "yyyy":
                            case "yyy":
                                i += v >= 0 ? f.ia("ee", a) : h(u ? u[0] : C, 4);
                                break;
                            case "yy":
                                i += v >= 0 ? f.ia("ee", a) : h((u ? u[0] : C) % 100, 2);
                                break;
                            case "y":
                                i += v >= 0 ? f.ia("e", a) : "" + (u ? u[0] : C) % 100;
                                break;
                            case "hh":
                                j = E % 12, 0 === j && (j = 12), i += h(j, 2);
                                break;
                            case "h":
                                j = E % 12, 0 === j && (j = 12), i += j;
                                break;
                            case "HH":
                                i += h(E, 2);
                                break;
                            case "H":
                                i += "" + E;
                                break;
                            case "mm":
                                i += h(F, 2);
                                break;
                            case "m":
                                i += "" + F;
                                break;
                            case "ss":
                                i += h(G, 2);
                                break;
                            case "s":
                                i += "" + G;
                                break;
                            case "tt":
                                i += E < 12 ? J.amDesignator : J.pmDesignator;
                                break;
                            case "t":
                                i += (E < 12 ? J.amDesignator : J.pmDesignator).charAt(0);
                                break;
                            case "f":
                            case "0":
                                i += h(H, 3).charAt(0);
                                break;
                            case "ff":
                            case "00":
                                i += h(H, 3).substr(0, 2);
                                break;
                            case "fff":
                            case "000":
                                i += h(H, 3);
                                break;
                            case "z":
                                j = I / 60, i += (j <= 0 ? "+" : "-") + m(n(j));
                                break;
                            case "zz":
                                j = I / 60, i += (j <= 0 ? "+" : "-") + h(m(n(j)), 2);
                                break;
                            case "zzz":
                                j = I / 60, i += (j <= 0 ? "+" : "-") + h(m(n(j)), 2) + ":" + h(n(I % 60), 2);
                                break;
                            case "g":
                            case "gg":
                            case "ggg":
                                if (!f) break;
                                if (v === y - 1) {
                                    v = y;
                                    break
                                }
                                i += f.ia(A[0], a), v = y;
                                break;
                            case "e":
                            case "ee":
                                if (!f) {
                                    i += h(u ? u[0] : C, 4);
                                    break
                                }
                                if (w === y - 1) {
                                    w = y;
                                    break
                                }
                                i += f.ia(A[0], a), w = y;
                                break;
                            case "/":
                                i += J.dateSeparator;
                                break;
                            case "[h]":
                            case "[hh]":
                            case "[H]":
                            case "[HH]":
                            case "[mm]":
                            case "[ss]":
                                i += A[0];
                                break;
                            default:
                                throw Error(o().Exp_InvalidDateFormat)
                        } else i += A[0];
                        return "" + i
                    }
                    function c(a, b) {
                        var c, d, e, f = 0,
                            g = k;
                        for (c = 0, d = a.length; c < d; c++) switch (e = a.charAt(c)) {
                            case '"':
                                g ? b.Qb += "'" : f++, g = k;
                                break;
                            case "\\":
                                g && (b.Qb += "\\"), g = !g;
                                break;
                            default:
                                b.Qb += e, g = k
                        }
                        return f
                    }
                    function r(a, b) {
                        var c, d = new Date,
                            e = a.DateTimeFormat.eras;
                        return e && b < 100 && (c = e.ca(d).ea, b += c - c % 100, b > a.DateTimeFormat.Calendar.TwoDigitYearMax && (b -= 100)), b
                    }
                    function s() {
                        return /\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|000|00|0|zzz|zz|z|ggg|gg|g|ee|e|\[H\]|\[HH\]|\[h\]|\[hh\]|\[mm\]|\[ss\]/g
                    }
                    function t(a, b) {
                        var d, f, g, h, j, k, l, m, n, p, q;
                        if (a.Rb) {
                            if (a.Rb[b]) return a.Rb[b]
                        } else a.Rb = {};
                        for (d = b, d = d.replace("%M", "M"), d = d.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, "\\\\$1"), f = "^", g = {
                            Qb: ""
                        }, h = [], j = 0, k = 0, l = s();
                             (m = l.exec(d)) !== i;) if (g.Qb = "", n = d.slice(j, m.index), j = l.lastIndex, k += c(n, g), f += g.Qb, k % 2 !== 1) {
                            switch (m[0]) {
                                case "dddd":
                                case "ddd":
                                case "MMMM":
                                case "MMM":
                                case "gggg":
                                case "ggg":
                                case "gg":
                                case "g":
                                    f += "(\\D+)";
                                    break;
                                case "tt":
                                case "t":
                                    f += "(\\D*)";
                                    break;
                                case "dd":
                                case "d":
                                case "MM":
                                case "M":
                                case "yy":
                                case "y":
                                case "eee":
                                case "ee":
                                case "e":
                                case "HH":
                                case "H":
                                case "hh":
                                case "h":
                                case "mm":
                                case "m":
                                case "ss":
                                case "s":
                                    f += "(\\d\\d?)";
                                    break;
                                case "yyy":
                                case "yyyy":
                                    f += "(\\d{2}|\\d{4})";
                                    break;
                                case "fff":
                                case "000":
                                    f += "(\\d{3})";
                                    break;
                                case "ff":
                                case "00":
                                    f += "(\\d{2})";
                                    break;
                                case "f":
                                case "0":
                                    f += "(\\d)";
                                    break;
                                case "zzz":
                                    f += "([+-]?\\d\\d?:\\d{2})";
                                    break;
                                case "zz":
                                case "z":
                                    f += "([+-]?\\d\\d?)";
                                    break;
                                case "/":
                                    f += "(\\" + a.dateSeparator + ")";
                                    break;
                                default:
                                    throw Error(o().Exp_InvalidDateFormat)
                            }
                            e.Sb(h, m[0])
                        } else f += m[0];
                        return g.Qb = "", c(d.slice(j), g), f += g.Qb, f += "$", p = ("" + f).replace(/\s+/g, "\\s+"), q = {
                            Tb: p,
                            Ub: h,
                            _a: RegExp(p)
                        }, a.Rb[b] = q, q
                    }
                    function u(a, b, c) {
                        var e, f, g, h, l, m, n, o, p, q, s, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K;
                        if (a = a.trim(), e = c.DateTimeFormat, f = t(e, b), g = f._a.exec(a), g === i) return i;
                        for (h = f.Ub, l = i, m = i, n = i, o = i, p = i, q = 0, u = 0, v = 0, w = 0, x = i, y = k, z = 0, A = h.length; z < A; z++) if (B = g[z + 1]) switch (h[z]) {
                            case "dd":
                            case "d":
                                if (o = j(B, 10), o < 1 || o > 31) return i;
                                break;
                            case "MMMM":
                                if (n = c.oa(B), n < 0 || n > 11) return i;
                                break;
                            case "MMM":
                                if (n = c.ra(B), n < 0 || n > 11) return i;
                                break;
                            case "M":
                            case "MM":
                            case "%M":
                                if (n = j(B, 10) - 1, n < 0 || n > 11) return i;
                                break;
                            case "e":
                            case "ee":
                                if (m = r(c, j(B, 10)), m < 0 || m > 9999) return i;
                                break;
                            case "y":
                            case "yy":
                            case "yyy":
                            case "yyyy":
                                if (m = j(B, 10), m < 0 || m > 9999) return i;
                                break;
                            case "h":
                            case "hh":
                            case "H":
                            case "HH":
                                if (q = j(B, 10), q < 0) return i;
                                break;
                            case "m":
                            case "mm":
                                if (u = j(B, 10), u < 0 || u > 59) return i;
                                break;
                            case "s":
                            case "ss":
                                if (v = j(B, 10), v < 0 || v > 59) return i;
                                break;
                            case "tt":
                            case "t":
                                if (C = B.toUpperCase(), y = C === e.pmDesignator.toUpperCase(), !y && C !== e.amDesignator.toUpperCase()) return i;
                                break;
                            case "f":
                            case "0":
                                if (w = 100 * j(B, 10), w < 0 || w > 999) return i;
                                break;
                            case "ff":
                            case "00":
                                if (w = 10 * j(B, 10), w < 0 || w > 999) return i;
                                break;
                            case "fff":
                            case "000":
                                if (w = j(B, 10), w < 0 || w > 999) return i;
                                break;
                            case "dddd":
                                if (p = c.ua(B), p < 0 || p > 6) return i;
                                break;
                            case "ddd":
                                if (p = c.wa(B), p < 0 || p > 6) return i;
                                break;
                            case "zzz":
                                if (D = B.split(/:/), 2 !== D.length) return i;
                                if (s = j(D[0], 10), s < -12 || s > 13) return i;
                                if (E = j(D[1], 10), E < 0 || E > 59) return i;
                                x = 60 * s + (d.kb(B, "-") ? -E : E);
                                break;
                            case "z":
                            case "zz":
                                if (s = j(B, 10), s < -12 || s > 13) return i;
                                x = 60 * s;
                                break;
                            case "g":
                            case "gg":
                            case "ggg":
                                if (F = B, !F || !e.eras) return i;
                                if (l = e.eras.ha(h[z], F), l < 0) return i
                        }
                        if (G = /^(\d|\d\d):/.test(a), H = G ? new Date(1899, 11, 30) : new Date, J = e.Calendar.convert, J && (I = J.fromGregorian(H)), J || (I = [H.getFullYear(), H.getMonth(), H.getDate()]), m === i ? m = I[0] : m < 100 && (e.eras && l !== i ? m = e.eras.ga(l || 0, m) : m += m >= 30 ? 1900 : 2e3), n === i && (n = I[1]), o === i && (o = I[2]), J) {
                            if (H = J.toGregorian(m, n, o), H === i) return i
                        } else {
                            if (H.setFullYear(m, n, o), H.getDate() !== o) return i;
                            if (p !== i && H.getDay() !== p) return i
                        }
                        return y && q < 12 && (q += 12), H.setHours(q, u, v, w), x !== i && (K = H.getMinutes() - (x + H.getTimezoneOffset()), H.setHours(H.getHours() + K / 60, K % 60)), H
                    }
                    return {
                        mb: function(a, c, d) {
                            return d || (d = f.q4()), b(a, c, d)
                        },
                        Vb: function(a, c, d) {
                            return b(a, c, d || f.q4())
                        },
                        Qa: function(b, c, d) {
                            var e, g;
                            return c || d || (g = p[b], void 0 === g) ? (e = c ? [b, c] : [b], g = a(b, d || f.q4(), e), c || d || (p[b] = g), g ? new Date(g) : g) : g ? new Date(g) : g
                        },
                        lb: function(b, c) {
                            return a(b, f.q4("invariant"), [b, c])
                        },
                        Wb: u,
                        Xb: function(a) {
                            var b, c = a - 25569,
                                d = new Date(864e5 * c),
                                e = c >= 0 ? 1 : -1,
                                f = d.getTimezoneOffset(),
                                g = (864e5 * a * 1440 + e - 3181192704e6 + 864e5 * f) / 1440,
                                h = new Date(g),
                                i = f >= 0 ? 1 : -1,
                                j = new Date(g + 36e5 * i),
                                k = j.getTimezoneOffset();
                            if (f !== k) if (b = new Date(g + 60 * (k - f) * 1e3), f > k) {
                                if (i === -1 || k === h.getTimezoneOffset()) return b = 999 === b.getMilliseconds() ? new Date(b.valueOf() + 1) : b
                            } else if (f < k && (1 === i || k === h.getTimezoneOffset())) return b = 999 === b.getMilliseconds() ? new Date(b.valueOf() + 1) : b;
                            return h = 999 === h.getMilliseconds() ? new Date(h.valueOf() + 1) : h
                        },
                        Rka: function(a) {
                            if ("/OADate(" === a.substr(0, 8)) {
                                var b = parseFloat(a.substr(8, a.length - 10));
                                return this.Xb(b)
                            }
                        },
                        Daa: function(a) {
                            return "/OADate(" + this.Ra(a) + ")/"
                        },
                        Ra: function(a) {
                            return g(a) ? 0 : ("number" == typeof a && (a = new Date(a)), (1440 * a.getTime() + 3181192704e6 - 864e5 * a.getTimezoneOffset()) / 124416e6)
                        },
                        Yb: function(a) {
                            var b, c, d, e = i,
                                f = l;
                            if (g(a) ? e = this.Xb(0) : a instanceof Date ? e = new Date(a) : "string" == typeof a ? (b = this.Qa(a), b || (isNaN(a) ? (b = new Date(a), isNaN(b.valueOf()) && (f = k), c = /^[-+=\s]*(\d+)\W+(\d+)\W+(\d+)$/, d = c.exec(a.replace(/ |\n/g, "").trim()), d && 4 === d.length && (d.indexOf("" + b.getFullYear()) !== -1 && d.indexOf("" + (b.getMonth() + 1)) !== -1 && d.indexOf("" + b.getDate()) !== -1 || (f = k))) : (b = q.Xb(parseFloat(a)), b || (f = k))), e = b) : "number" == typeof a ? e = this.Xb(a) : f = k, f) return e;
                            throw o().Exp_InvalidCast
                        },
                        Ska: function(a) {
                            return a && (a.constructor === Date || a.getUTCDate && a.setFullYear)
                        }
                    }
                }();
            a.exports = q
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            var b = null,
                c = void 0,
                d = function() {
                    function a() {}
                    a.Eb = function(a, b, c) {
                        a.splice(b, 0, c)
                    }, a.Sb = function(a, b) {
                        a.push(b)
                    }, a.Bb = function(a, b) {
                        return a.indexOf(b) > -1
                    }, a.Fb = function(a, b) {
                        var c = a.indexOf(b);
                        c > -1 && a.splice(c, 1)
                    }, a.Zb = function(a, b) {
                        return a.slice(0, b).concat(a.slice(b + 1))
                    }, a.Cb = function(a, b, c) {
                        return a.indexOf(b, c)
                    }, a.$b = function(a, c, d) {
                        if (!(c < 0)) for (var e = 0; e < d && c + e < a.length; e++) a[c + e] = b
                    }, a._b = function(a, d) {
                        var e, f;
                        for (d < 0 && (d = -1), e = d + 1, f = e; f < a.length; f++) if (a[f] !== c && a[f] !== b) return f;
                        return -1
                    }, a.ac = function(a) {
                        return a && a.length
                    };

                    function d(a, b) {
                        var c, e;
                        for (c in b) b.hasOwnProperty(c) && (e = b[c], Array.isArray(e) ? (a[c] = [], d(a[c], b[c])) : "object" == typeof e ? (a[c] = {}, d(a[c], b[c])) : a[c] = b[c])
                    }
                    return a.Uo = function(a) {
                        var b = [];
                        return d(b, a), b
                    }, a
                }();
            a.exports = d
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(3),
                d = c(6).pb,
                e = Math.min,
                f = Math.max,
                g = Math.abs,
                h = parseInt,
                i = function() {
                    function a() {}
                    a.bc = function(a) {
                        var b = a.a,
                            c = a.r,
                            e = a.g,
                            f = a.b;
                        return 3 === arguments.length && (b = 255, c = arguments[0], e = arguments[1], f = arguments[2]), 4 === arguments.length && (b = arguments[0], c = arguments[1], e = arguments[2], f = arguments[3]), 255 === b ? "#" + d(c, !0, 2) + d(e, !0, 2) + d(f, !0, 2) : "rgba(" + c + "," + e + "," + f + "," + b + ")"
                    }, a.Pka = function(a, b) {
                        return a.a === b.a && a.r === b.r && a.g === b.g && a.b === b.b
                    }, a.dc = function(a) {
                        return (299 * a.r + 587 * a.g + 114 * a.b) / 1e3
                    }, a.fc = function(a, b, c) {
                        return c < 0 && (c += 240), c > 240 && (c -= 240), c < 40 ? a + ((b - a) * c + 20) / 40 : c < 120 ? b : c < 160 ? a + ((b - a) * (160 - c) + 20) / 40 : a
                    };

                    function b(b, c, d) {
                        return (255 * a.fc(b, c, d) + 120) / 240 & 255
                    }
                    a.gc = function(a, c, d) {
                        var e, f, g, i, j;
                        return 0 === d ? e = f = g = h(255 * c / 240, 10) : (j = c <= 120 ? h((c * (240 + d) + 120) / 240) : c + d - h((c * d + 120) / 240), i = 2 * c - j, e = b(i, j, a + 80), f = b(i, j, a), g = b(i, j, a - 80)), {
                            a: 255,
                            r: e,
                            g: f,
                            b: g
                        }
                    }, a.hc = function(a, b) {
                        var c, d = 255 - g(a.r - b.r),
                            e = 255 - g(a.g - b.g),
                            f = 255 - g(a.b - b.b),
                            h = g(a.a - b.a);
                        return d /= 255, e /= 255, f /= 255, c = (d + e + f) / 3, !! (c >= .9 && h <= .05)
                    }, a.ic = function(b) {
                        var c = 255 ^ b.r,
                            d = 255 ^ b.g,
                            e = 255 ^ b.b;
                        return a.bc(b.a, c, d, e)
                    };

                    function c(b) {
                        var c, d, e = a.Yn;
                        return e || (c = document.createElement("canvas"), c && c.getContext && (e = a.Yn = c.getContext("2d"))), e ? (e.clearRect(1, 1, 1, 1), e.fillStyle = b, e.fillRect(1, 1, 1, 1), d = e.getImageData(1, 1, 1, 1), d ? d.data : null) : b
                    }
                    return a.ec = function(b) {
                        var d, e, f, g, h;
                        return b instanceof a ? b : (d = 0, e = 0, f = 0, g = 0, b && (h = c(b), h && (e = h[0], f = h[1], g = h[2], d = h[3])), {
                            a: d,
                            r: e,
                            g: f,
                            b: g
                        })
                    }, a.jc = function(b, c) {
                        var d, e;
                        return 0 === c ? b : (d = new j(b), e = h(c > 0 ? (240 - d.kc) * c : d.kc * c, 10), a.gc(d.lc, d.kc + e, d.mc))
                    }, a.nc = function(b, c) {
                        var d = a.ec(b),
                            e = new j(d),
                            f = e.nc(c);
                        return a.bc(f)
                    }, a
                }(),
                j = function() {
                    function a(a) {
                        var b, c, d, g, i = this,
                            j = a.r,
                            k = a.g,
                            l = a.b,
                            m = f(f(j, k), l),
                            n = e(e(j, k), l),
                            o = m + n;
                        i.kc = h((240 * o + 255) / 510, 10), b = m - n, 0 === b ? (i.mc = 0, i.lc = 160) : (i.kc <= 120 ? i.mc = h((240 * b + o / 2) / o, 10) : i.mc = h((240 * b + (510 - o) / 2) / (510 - o), 10), c = (40 * (m - j) + b / 2) / b, d = (40 * (m - k) + b / 2) / b, g = (40 * (m - l) + b / 2) / b, j === m ? i.lc = h(g - d, 10) : k === m ? i.lc = h(80 + c - g, 10) : i.lc = h(160 + d - c, 10), i.lc < 0 && (i.lc += 240), i.lc > 240 && (i.lc -= 240))
                    }
                    return a.prototype = {
                        constructor: a,
                        nc: function(a) {
                            var b = this,
                                c = b.kc,
                                d = b.oc(b.kc, 500, !0);
                            return i.gc(b.lc, c + (d - c) * a, b.mc)
                        },
                        oc: function(a, b, c) {
                            return 0 === b ? a : c ? b > 0 ? (a * (1e3 - b) + 241 * b) / 1e3 : a * (b + 1e3) / 1e3 : (a += 240 * b / 1e3, a < 0 && (a = 0), a > 240 && (a = 240), a)
                        }
                    }, a
                }();
            b.pc = i, a.exports = b
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            var b = isNaN,
                c = {},
                d = "rowCount",
                e = "colCount";

            function f(a) {
                return a
            }
            function g(a, c, f, g, h, i, j, k, l, m, n) {
                var o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L = f[d],
                    M = f[e],
                    N = c[d],
                    O = c[e],
                    P = g[d],
                    Q = g[e],
                    R = 1 === M,
                    S = 1 === O;
                if (N === L && O === M) {
                    for (E = 0, F = 0, G = 0, H = 0, u = L * M, o = 0; o < L; o++) for (p = 0; p < M; p++) {
                        if (r = i(f[o][p]), s = i(c[o][p]), a && (b(r) || b(s))) return l;
                        s = m(s), E += r, F += r * r, G += s, H += r * s
                    }
                    for (I = u * H - E * G, t = h ? I / (u * F - E * E) : H / F, v = h ? (G * F - E * H) / (u * F - E * E) : 0, w = [], o = 0; o < P; o++) for (w[o] = [], p = 0; p < Q; p++) {
                        if (r = i(g[o][p]), a && b(r)) return l;
                        w[o][p] = 0 === I ? c[0][0] : n(t * r + v)
                    }
                    return j ? new j(w) : w
                }
                if (S && N === L || 1 === N && O === M) {
                    for (r = [], s = [], C = M + 1, D = M + 2, o = 0; o < L; o++) {
                        if (y = S ? c[o][0] : c[0][o], v = i(y), a && b(v)) return l;
                        s[o] = R ? m(v) : v
                    }
                    for (o = 0; o < L; o++) for (r[o] = [], p = 0; p < M; p++) {
                        if (v = i(f[o][p]), a && b(v)) return l;
                        r[o][p] = v
                    }
                    for (J = [], t = 0; t < C; t++) for (J[t] = [], u = 0; u < D; u++) J[t][u] = 0;
                    for (q = 0; q < L; q++) for (J[0][C] += s[q], o = 0; o < M; o++) for (y = o + 1, J[0][y] += r[q][o], J[y][0] = J[0][y], J[y][C] += r[q][o] * s[q], p = o; p < M; p++) A = p + 1, J[A][y] += r[q][o] * r[q][p], J[y][A] = J[A][y];
                    for (J[0][0] = L, K = h ? 0 : 1, x = K; x < C; x++) {
                        if (a) {
                            if (0 === J[x][x]) {
                                for (B = !1, p = x + 1; !B && p < C; p++) if (0 !== J[p][x]) {
                                    for (q = 0; q < D; q++) A = J[x][q], J[x][q] = J[p][q], J[p][q] = A;
                                    B = !0
                                }
                                if (!B) return k
                            }
                        } else {
                            for (o = x; o < C && 0 === J[o][x];) o++;
                            if (o >= C) return k;
                            for (z = K; z < D; z++) y = J[x][z], J[x][z] = J[o][z], J[o][z] = y
                        }
                        for (y = 1 / J[x][x], z = K; z < D; z++) J[x][z] *= y;
                        for (o = K; o < C; o++) if (o !== x) for (y = -J[o][x], z = 0; z < D; z++) J[o][z] += y * J[x][z];
                        h || (J[0][C] = 0)
                    }
                    for (w = [], S || (w[0] = []), o = 0; o < P; o++) {
                        for (S && (w[o] = []), y = J[0][C], p = 0; p < M; p++) {
                            if (v = i(S ? g[o][p] : g[p][o]), a && b(v)) return l;
                            y += J[p + 1][C] * v
                        }
                        S ? w[o][0] = n(y) : w[0][o] = n(y)
                    }
                    return j ? new j(w) : w
                }
                return k
            }
            function h(a, b, c, d, e, h, i, j) {
                return g(!0, a, b, c, d, e, h, j, i, f, f)
            }
            function i(a, b, c, h, i, j, k) {
                var l, m;
                for (l = 0; l < a[d]; l++) for (m = 0; m < a[e]; m++) if (a[l][m] <= 0) return j;
                return g(!1, a, b, c, h, f, i, k, null, Math.log, Math.exp)
            }
            c.qc = h, c.sc = i, a.exports = c
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {
                Exp_InvalidDateFormat: "Invalid date format pattern",
                Exp_InvalidExponentFormat: "invalid exponent format",
                Exp_InvalidSemicolons: "invalid format: too many semicolons",
                Exp_InvalidNumberGroupSize: "NumberGroupSize must be between 1 and 9.",
                Exp_BadFormatSpecifier: "Bad Format Specifier",
                Exp_InvalidNumberFormat: "Invalid number format pattern",
                Exp_InvalidCast: "InvalidCastException",
                Exp_Separator: "numberDecimalSeparator, listSeparator and arrayListSeparator should be different in cluture info."
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = {};
            d(b, c(15)), d(b, c(16)), a.exports = b;

            function d(a, b) {
                for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c])
            }
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            var b = {};
            b.Key = {
                left: 37,
                right: 39,
                up: 38,
                down: 40,
                tab: 9,
                enter: 13,
                shift: 16,
                ctrl: 17,
                space: 32,
                altkey: 18,
                home: 36,
                end: 35,
                pup: 33,
                pdn: 34,
                backspace: 8,
                del: 46,
                esc: 27,
                a: 65,
                c: 67,
                v: 86,
                x: 88,
                z: 90,
                y: 89
            };

            function c(a, b, c) {
                var d = this;
                d.tc = a, d.j4 = b, d.Cj = c, Object.defineProperty(d, "shortcutKey", {
                    get: function() {
                        return d.vc
                    },
                    set: function(a) {
                        var b, c, e, f = d.vc;
                        f !== a && (b = d.tc.wc, c = b[f], c && (e = c.indexOf(d), e >= 0 && c.splice(e, 1)), d.vc = a, a && (c = b[a], c || (b[a] = c = []), c.splice(0, 0, d)))
                    }
                })
            }
            c.prototype = {
                canUndo: function() {
                    var a = this.j4;
                    return a.canUndo
                },
                execute: function(a, b, c) {
                    var d, e, f = this,
                        g = !0;
                    try {
                        d = f.j4.execute || f.j4, e = d(a, b, 1 === c), g = e !== !1
                    } catch (a) {
                        g = !1
                    }
                    return b && g && f.tc.g4({
                        command: b,
                        result: e,
                        s4: c
                    }), e
                }
            };

            function d(a) {
                var b = this;
                b.xc = a, b.Ze = {}, b.wc = {}
            }
            d.prototype = {
                register: function(a, b, d, e, f, g, h) {
                    var i = this,
                        j = new c(i, b, a);
                    i[a] = j, d && (j.shortcutKey = i.getShortcutKey(d, e, f, g, h))
                },
                getCommand: function(a) {
                    return this[a]
                },
                execute: function(a) {
                    var b = this[a.cmd];
                    if (b) return b.execute(this.xc, a, 0)
                },
                setShortcutKey: function(a, b, c, d, e, f) {
                    var g, h, i, j, k = this;
                    if (a) g = k[a], g && (g.shortcutKey = k.getShortcutKey(b, c, d, e, f));
                    else if (h = k.getShortcutKey(b, c, d, e, f), i = k.getCommands(h)) for (j = i.length - 1; j >= 0; j--) i[j].shortcutKey = void 0
                },
                getShortcutKey: function(a, c, d, e, f) {
                    if (a) {
                        var g = "A".charCodeAt(0) <= a && a <= "Z".charCodeAt(0) ? String.fromCharCode(a) : b.Key[a];
                        return g || (g = a), "" + g + (c ? "+ctrl" : "") + (d ? "+shift" : "") + (e ? "+alt" : "") + (f ? "+window" : "")
                    }
                },
                getCommands: function(a) {
                    return this.wc[a]
                },
                addListener: function(a, b) {
                    this.Ze[a] = b
                },
                removeListener: function(a) {
                    delete this.Ze[a]
                },
                g4: function(a) {
                    var b, c = this.Ze;
                    for (b in c) c.hasOwnProperty(b) && c[b](a)
                }
            }, b.CommandManager = d, a.exports = b
        }()
}, function(a, b) {
    !
        function() {
            "use strict";

            function b(a, b, c) {
                var d = this;
                d.xc = a, b < 0 && (b = 2147483647), d.yc = b, d.zc = c, d.Ac = [], d.Bc = []
            }
            b.prototype = {
                Cc: function(a, b) {
                    var c, d, e, f = this;
                    if (a) if (1 === b) f.Bc.push(a);
                    else {
                        if (c = f.yc, d = f.Ac.length, c > 0 && d >= c) for (e = 0; e < d - c + 1; e++) f.Ac.shift();
                        f.Ac.push(a), 0 === b && (f.Bc = [])
                    }
                },
                canUndo: function() {
                    return this.Ac.length > 0
                },
                undo: function() {
                    var a, b, c = this,
                        d = c.Ac,
                        e = !0;
                    if (c.zc && c.canUndo()) {
                        a = d[d.length - 1];
                        try {
                            b = c.xc.commandManager()[a.cmd], b && (a.yTa = !0, e = b.execute(c.xc, a, 1))
                        } catch (a) {
                            e = !1
                        }
                        delete a.yTa, e !== !1 && (d.pop(), c.Bc.push(a))
                    }
                    return e
                },
                canRedo: function() {
                    return this.Bc.length > 0
                },
                redo: function() {
                    var a, b, c, d = this,
                        e = d.Bc,
                        f = !0;
                    if (d.zc && d.canRedo()) {
                        a = e[e.length - 1];
                        try {
                            b = d.xc.commandManager()[a.cmd], b && (c = a.zTa, a.yTa = !0, f = b.execute(d.xc, a, 2), c && a.zTa && !a.zTa.calc && (a.zTa = c))
                        } catch (a) {
                            f = !1
                        }
                        delete a.yTa, f !== !1 && (e.pop(), d.Ac.push(a))
                    }
                    return f
                },
                clear: function() {
                    this.Ac = [], this.Bc = []
                }
            }, a.exports.UndoManager = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = {};
            d(b, c(18)), b.SR = {}, b.SR.en = c(19), a.exports = b;

            function d(a, b) {
                for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c])
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m = null,
                n = void 0,
                o = Math.abs,
                p = {},
                q = c(2),
                r = q.u,
                s = q.l,
                t = q.j,
                u = t.Ma,
                v = t.Ca,
                w = q.o,
                x = w.eka + "." + w.fka,
                y = w.Jja,
                z = w.mb,
                A = t.Fa,
                B = q.CultureManager,
                C = "一十",
                D = "十",
                E = function() {
                    return q.C(p.SR)()
                },
                F = function(a) {
                    return B.q4(a)
                },
                G = function(a) {
                    return F(a).DateTimeFormat
                },
                H = function(a) {
                    return F(a).NumberFormat
                },
                I = function(a) {
                    return a && a.toLowerCase()
                },
                J = function() {
                    throw Error(E().Exp_FormatIllegal)
                },
                K = {
                    Dc: "",
                    Kb: function() {
                        var a, b, c, d, e = [];
                        for (a = 0; a < arguments.length; a++) e[a] = arguments[a];
                        if (0 === arguments.length) return m;
                        for (b = e[0], c = 1; c < arguments.length; c++) d = RegExp("\\{" + (c - 1) + "\\}", "gm"), b = b.replace(d, arguments[c]);
                        return b
                    },
                    Ec: function(a) {
                        return !a || a === K.Dc
                    }
                },
                L = {
                    Fc: function(a) {
                        var b = a.charCodeAt(0);
                        return b >= 48 && b <= 57
                    },
                    Gc: function(a) {
                        var b = a.charCodeAt(0);
                        return b >= 9 && b <= 13 || 32 === b || 133 === b || 160 === b
                    }
                },
                M = function() {
                    function a(a, b) {
                        var c, d, e, f;
                        if (fa.call(this, b), c = this, c.Uc = a, d = c.Uc, e = aa(d[0], "$", !1), f = d.indexOf("-"), !(e && f > -1)) throw Error(E().Exp_TokenIllegal);
                        c.Vc = U(d, 1, f - 1), d = r.Fb(d, 0, f + 1), d.length > 0 && (c.Wc = parseInt(d, 16))
                    }
                    return a.Name = "LocaleIDFormatPart", a.prototype = {
                        cultureInfo: function() {
                            var a = this;
                            return a.Xc || (a.Xc = F(a.Wc), a.Vc && a.Vc !== K.Dc && !a.Xc.NumberFormat.isReadOnly && (a.Xc.NumberFormat.currencySymbol = a.Vc)), a.Xc
                        },
                        currencySymbol: function() {
                            return this.Vc ? r.Gb(this.Vc, "\\.", '"."') : K.Dc
                        },
                        allowScience: function() {
                            if (this.Xc) return !(0 === this.Xc.name().indexOf("ja") || 0 === this.Xc.name().indexOf("zh"))
                        },
                        toString: function() {
                            return this.Uc ? X(this.Uc) : K.Dc
                        }
                    }, a
                }(),
                N = function() {
                    function a(a, b) {
                        this.formatCached = a, this.cultureName = b, this.typeName = ""
                    }
                    return a.prototype = {
                        format: function(a, b) {
                            return m
                        },
                        parse: function(a) {
                            return m
                        },
                        formatString: function() {
                            return this.formatCached
                        },
                        toJSON: function() {
                            var a, b = {};
                            for (a in this) this.hasOwnProperty(a) && (b[a] = this[a]);
                            return b
                        },
                        fromJSON: function(a) {
                            if (a) for (var b in a) a[b] !== n && (this[b] = a[b])
                        }
                    }, a
                }(),
                O = {
                    Rc: "yy",
                    vd: "y",
                    Qc: "yyyy",
                    jd: "m",
                    hd: "mm",
                    gd: "mmm",
                    fd: "mmmm",
                    dd: "mmmmm",
                    ud: "d",
                    wd: "dd",
                    kd: "aaa",
                    ld: "aaaa",
                    md: "h",
                    nd: "hh",
                    xd: "m",
                    yd: "mm",
                    td: "s",
                    zd: "ss",
                    ea: "e",
                    rd: "AM/PM",
                    sd: "A/P",
                    ed: "@mmmmm",
                    qd: new Date(1899, 11, 30, 0, 0, 0, 0)
                },
                P = [O.vd, O.Rc, O.Qc, O.jd, O.hd, O.gd, O.fd, O.dd, O.ud, O.wd, O.kd, O.ld, O.md, O.nd, O.xd, O.yd, O.td, O.zd, "ggg", "gg", "g", "ee", "e"],
                Q = function() {
                    function a(a, c) {
                        var d, e, f, g, h, i, j, k;
                        for (fa.call(this, c), d = this, h = ["<=", "<>", ">=", ">", "<", "="], i = 0, j = h.length; i < j; i++) if (e = h[i], r.kb(a, e, !0)) {
                            f = r.Fb(a, 0, e.length), k = parseFloat(f), isNaN(k) || (g = k);
                            break
                        }
                        if (g === m && g === n) throw Error(E().Exp_TokenIllegal);
                        d.value = g, d.Sc = e, d.isMeetCondition = b(d)
                    }
                    a.Name = "ConditionalFormatPart", a.prototype = {
                        toString: function() {
                            return X(this.Sc + ("" + this.value))
                        }
                    };

                    function b(a) {
                        var b = "var self = this;",
                            c = a.Sc;
                        return c = "<>" === c ? "!=" : c, c = "=" === c ? "===" : c, b += "return value " + c + " self.value;", Function(["value"], b)
                    }
                    return a
                }(),
                R = function() {
                    function a(a, b) {
                        fa.call(this, b);
                        var c = this;
                        if (c.token = a, c.type = parseInt(r.Fb(a, 0, 5), 10), c.type < 0 || c.type > 3) throw Error(E().Exp_TokenIllegal)
                    }
                    a.Name = "DBNumberFormatPart", a.prototype = {
                        Pc: function(a, c, d) {
                            var e, f, g, h, i, j, k, l, m, n;
                            if (!a || a === K.Dc) return a;
                            for (e = a, f = a, g = -1, h = -1, i = !1, m = a.length - 1; m >= 0; m--) n = f[m], !isNaN(n) && !aa(n, " ", !1) || aa(n, ".", !1) && !i ? (aa(n, ".", !1) && (i = !0), g === -1 && (g = m), h = m) : h > -1 && g > -1 && (j = U(f, h, g - h + 1), k = parseFloat(j), isNaN(k) || (l = b(j, c, d), e = r.Fb(e, h, g - h + 1), e = r.Eb(e, h, l)), g = -1, h = -1, i = !1);
                            return h > -1 && g > -1 && (j = U(f, h, g - h + 1), k = parseFloat(j), isNaN(k) || (l = b(j, c, d), e = r.Fb(e, h, g - h + 1), e = r.Eb(e, h, l))), e
                        },
                        toString: function() {
                            if (this.type > -1) return X("DBNum" + this.type);
                            throw Error()
                        }
                    };

                    function b(a, b, d) {
                        var e, f, g = a.split(".");
                        if (g) {
                            if (1 === g.length) return c(g[0], b.numbers, d ? b.letters : m);
                            if (2 === g.length) return e = c(g[0], b.numbers, d ? b.letters : m), f = c(g[1], b.numbers), e + "." + f
                        }
                        throw Error(E().Exp_ValueIllegal)
                    }
                    function c(a, b, d) {
                        var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t = a,
                            u = 0,
                            v = 0;
                        if (2 === arguments.length) {
                            for (f = "", u = 0; u < t.length; u++) e = U(t, u, 1), v = parseInt(e, 10), f += b[v];
                            return f
                        }
                        if (3 === arguments.length) {
                            if (!d) return c(a, b);
                            for (g = 0, h = "", i = t.length, j = !1, k = [], u = 0; u < i; u++) l = d.length - 1 - u, l > -1 ? k.push("" + d[l]) : k.push(K.Dc);
                            for (m = [], n = k.length - 1; n >= 0; n--) m[k.length - n - 1] = k[n];
                            for (k = m, o = !1, n = 0; n < i; n++) e = U(t, n, 1), v = parseInt(e, 10), q = K.Dc, i - n - 16 > 0 ? (p = b[v], q = "", o = !0) : n !== i - 1 && n !== i - 5 && n !== i - 9 && n !== i - 13 ? "0" === e ? (p = "", q = "", g += 1) : "0" !== e && 0 !== g ? (p = b[0] + b[v], q = k[n], g = 0) : (p = b[v], q = k[n], g = 0) : "0" !== e && 0 !== g ? (p = b[0] + b[v], q = k[n], g = 0) : "0" !== e && 0 === g || o ? (p = b[v], q = k[n], g = 0, o = !1) : "0" === e && g >= 3 ? (p = "", q = "", g += 1) : i >= 11 ? (p = "", g += 1) : (p = "", q = k[n], g += 1), r = p + q === K.Dc, r || (j = !1), n !== i - 13 || j || (q = k[n], j = !0), n !== i - 9 || j || (q = k[n], j = !0), n === i - 1 && (q = k[n], j = !0), h = h + p + q;
                            return s = parseInt(a, 10), 0 === s ? b[0] : h
                        }
                    }
                    return a
                }(),
                S = function() {
                    function a(a, b, c, d, e) {
                        ea.call(this, b, c, d);
                        var f = this;
                        f.Yc = f.Zc(ba(a)), f.$c = e, f._c = 2, f.ad()
                    }
                    a.prototype = {
                        ad: function() {
                            var b, c, d, e = this,
                                f = {
                                    Qb: e.Yc
                                },
                                g = a;
                            if (g.Lc(f.Qb)) {
                                if (b = e.bd(f), e.hasJD = e.Gb(f.Qb, O.dd, '"' + O.ed + '"', !0, !1, f, !1), e.Gb(f.Qb, O.fd, "MMMM", !0, !1, f, !1), e.Gb(f.Qb, O.gd, "MMM", !0, !1, f, !1), e.Gb(f.Qb, O.hd, "MM", !0, !1, f, !1), e.Gb(f.Qb, O.jd, "M", !0, !1, f, !1), e.Gb(f.Qb, O.kd, "ddd", !0, !0, f, !0), e.Gb(f.Qb, O.ld, "dddd", !0, !0, f, !0), b || (e.Gb(f.Qb, O.md, "H", !0, !0, f, !1), e.Gb(f.Qb, O.nd, "HH", !0, !0, f, !1)), e.Jc && e.Ic && (e.od = e.od || e.Gb(f.Qb, O.Qc, '"@' + O.Qc + '"', !0, !1, f, !0), e.od = e.od || e.Gb(f.Qb, O.Rc, '"@' + O.Rc + '"', !0, !1, f, !0)), e.$c) for (c = 0; c < e.$c.length; c++) d = e.$c[c], e.Gb(f.Qb, d.Kc, "@" + d.Kc, !0, !0, f, !0);
                                e.pd = f.Qb
                            } else J()
                        },
                        formatString: function() {
                            return this.Yc
                        },
                        format: function(a) {
                            var b, c, d, e, f, g, h = this,
                                i = K.Dc,
                                j = m;
                            try {
                                if (j = s.Yb(a), j ? a = j : i = "" + a, j && (i = s.mb(j, h.pd, h.Ic && h.Ic.cultureInfo() || F(h.cultureName)), h.hasJD && (b = F(h.cultureName).DateTimeFormat.monthNames[j.getMonth()], i = r.Gb(i, O.ed, U(b, 0, 1))), h.$c)) for (c = 24 * (s.Ra(j) - s.Ra(O.qd)) * 60 * 60 * 1e3, d = 0; d < h.$c.length; d++) e = h.$c[d], f = e.Tc(c), A(f) || (g = e.Kc.replace("[", "\\[").replace("]", "\\]"), i = r.Gb(i, "@" + g, f))
                            } catch (b) {
                                i = V(a)
                            }
                            return ka(i, a, h.Ic, h.Jc, h.cultureName)
                        },
                        parse: function(a) {
                            var b, c, d, e, f;
                            if (!a || a === K.Dc) return m;
                            if (b = this, c = a, d = I(c), "true" === d) return !0;
                            if ("false" === d) return !1;
                            if (b.pd && (e = s.Wb(c, b.pd, F(b.cultureName)))) return e;
                            try {
                                return f = s.Yb(c), f && !isNaN(f) ? f : (f = new Date(c), isNaN(f.valueOf()) ? c : f)
                            } catch (a) {
                                return c
                            }
                        },
                        Zc: function(a) {
                            var b, c, d, e = a,
                                f = "",
                                g = !1;
                            for (b = 0; b < e.length; b++) c = e[b], '"' === c ? g = !g : g || ("Y" === c || "D" === c || "S" === c || "E" === c || "G" === c ? c = I(c) : "M" === c && (d = e[b - 1], aa("A", d, !0) || aa("P", d, !0) || (c = I(c)))), f += c;
                            return f
                        },
                        bd: function(a) {
                            var b, c = [O.rd, G(this.cultureName).amDesignator + "/" + G(this.cultureName).pmDesignator, O.sd],
                                d = ["tt", "tt", "t"];
                            for (b = 0; b < 3; b++) if (r.Bb(a.Qb, c[b], 1)) return a.Qb = r.Gb(a.Qb, c[b], d[b], !0), !0;
                            return !1
                        },
                        Gb: function(a, d, e, f, g, h, i) {
                            var j, k, l, m, n, o, p, q, s, t, u;
                            if (f || g) {
                                for (j = [], k = !0, !c(a) && b(a) && (k = !1), l = !1, m = 0; m < a.length; m++) {
                                    if (n = a[m], b(n) ? k = !1 : c(n) && (k = !0), f && aa(n, d[0], i) && k || g && aa(n, d[0], i) && !k) {
                                        for (o = !0, p = 0; p < d.length; p++) if (p + m >= a.length || !aa(d[p], a[p + m], i)) {
                                            o = !1;
                                            break
                                        }
                                        if (q = m + d.length - 1, o && q + 1 < a.length) {
                                            for (s = a[q], t = -1, t = q + 1; t < a.length && aa(s, a[t], i); t++);
                                            t > q + 1 && (m = t, o = !1)
                                        }
                                        o && !l && j.splice(0, 0, m)
                                    }
                                    '"' === n && (l = !l)
                                }
                                if (h.Qb = a, j.length > 0) {
                                    for (m = 0; m < j.length; m++) u = j[m], h.Qb = r.Fb(h.Qb, u, d.length), h.Qb = r.Eb(h.Qb, u, e);
                                    return !0
                                }
                                return !1
                            }
                            return !1
                        }
                    };

                    function b(a) {
                        return r.Cb(a, O.md[0], !0) > -1 || r.Cb(a, O.td[0], !0) > -1
                    }
                    function c(a) {
                        return r.Cb(a, O.Rc[0], !0) > -1 || r.Cb(a, O.ud[0], !0) > -1
                    }
                    return a.Lc = function(a) {
                        return da(a, P)
                    }, a
                }(),
                T = function(a, b) {
                    var c, d, e;
                    if (fa.call(this, b), c = this, d = I(a)[0], "h" === d) e = 3600;
                    else if ("m" === d) e = 60;
                    else {
                        if ("s" !== d) throw Error(E().Exp_TokenIllegal);
                        e = 1
                    }
                    c.Tc = function(a) {
                        var b = a / 1e3 / e;
                        return Math.abs(b - Math.round(b)) < 1e-6 ? Math.round(b) : Math.floor(b)
                    }
                };
            T.Name = "ABSTimeFormatPart", b = function() {
                function a(a, b) {
                    fa.call(this, b), this.foreColor = a
                }
                return a.Name = "ColorFormatPart", a.prototype.toString = function() {
                    return X(this.foreColor)
                }, a
            }(), d = function() {
                function a(a, b, c, d) {
                    var e, f, g, h, i, j;

                    function k(a, b) {
                        var c, d, e, f, g, h = [],
                            i = '"';
                        if (a === m || "" === a) return h;
                        for (c = !1, d = [], e = !1, f = 0; f < a.length; f++) g = a[f], g !== i || c || (e = !e), c || e || g !== b ? d.push(g) : (h.push(d.join("")), d = []), c = "\\" === g && !c;
                        return h.push(d.join("")), h
                    }
                    ea.call(this, b, c, d), e = this, e.Ad = !1, e._c = 1, e.Bd = Y(a), f = ba(a), b && (f = $(f, e.Ic.Kc, e.Ic.currencySymbol())), f = Y(f), g = f.indexOf("/"), g > -1 && (h = k(f, "/"), h && 2 === h.length && (e.Cd = h[1], i = h[0], i && (j = i.lastIndexOf(" "), j > -1 ? (e.Dd = U(i, 0, j), e.Ed = U(i, j + 1, i.length - j - 1)) : e.Ed = i))), e.Fd = f
                }
                a.prototype = {
                    formatString: function() {
                        return this.Bd
                    },
                    format: function(a) {
                        var e, f, g, h, i, j, k, l, n, o, p, q, r, s, v, w, x, A, B, C, D, E;
                        return u(a, "boolean") ? ("" + a).toUpperCase() : (e = this, f = t.Pa(a), isNaN(f) || !isFinite(f) || isNaN(a) ? "string" == typeof a ? a : m : (g = F(e.cultureName), e.Ed && e.Cd ? (o = {
                            value: 0
                        }, p = {
                            value: 0
                        }, q = {
                            value: 0
                        }, r = e.bPa(), c(f, r, o, p, q) ? (s = b(p.value, q.value), s > 1 && (p.value /= s, q.value /= s), e.Dd ? (n = "", 1 === q.value && (o.value += p.value, p.value = 0, q.value = 0), v = y(z(o.value, e.Dd, g)), v && "0" !== v && (n += v, n += " "), 0 === o.value && f < 0 && (n += g.NumberFormat.negativeSign), 0 === f && (n += "0"), i = e.Cd, j = parseFloat(i), !isNaN(j) && j > 0 && (0 !== p.value && 0 !== q.value && (p.value *= j / q.value), q.value = j, i = i.replace(/^\d+/, d(j)), k = Math.ceil(p.value), l = k - p.value, l <= .5 && l >= 0 ? p.value = parseFloat("" + k) : p.value = parseFloat("" + (k - 1))), w = e.Ed, x = parseFloat(w), isNaN(x) || 0 !== x || (A = w.length, B = "" + p.value, C = B.length, A > C ? w = w.substr(0, A - (A - C)) : A < C && (B = B.substr(0, C - (C - A)), p.value = parseInt(B, 10))), D = e.Mja(p.value, q.value, w, i, g), 0 === p.value && (D = D.replace(/./g, " "), "" === v) ? "0 " + D : (n += D, "" === n ? "0" : n)) : (n = "", E = o.value * q.value + p.value, i = e.Cd, j = parseFloat(i), j > 0 ? (E *= j / q.value, q.value = j, k = Math.ceil(E), l = k - E, E = l <= .5 && l >= 0 ? parseFloat("" + k) : parseFloat("" + (k - 1)), n += E + "/" + q.value) : n += e.Mja(E, q.value, e.Ed, e.Cd, g), 0 === E ? "0" : n)) : "" + f) : (h = z(f, e.Fd, g), h = la(h, e.Ad, e.Ic, e.Jc, e.cultureName))))
                    },
                    parse: function(a) {
                        var b, c, d, e, f, g = this;
                        return a && a !== K.Dc ? (b = I(a), "true" === b || "false" !== b && (a = g.Hd(a), a = g.Id(a), c = g.Jd(a), d = c.Kd, e = c.Ld, g.Md(e) && (e = r.Hb(e, H(g.cultureName).numberGroupSeparator, ""), f = w.ob(e, g.cultureName), !isNaN(f) && isFinite(f)) ? (d && (f /= 100), f) : m)) : m
                    },
                    bPa: function() {
                        var a, b, c = this,
                            d = c.Cd,
                            e = 0;
                        if (d) for (a = d.length, b = 0; b < a && d[b].match(/[#?0\d]/); b++) e++;
                        return e
                    },
                    Md: function(a) {
                        var b, c = "",
                            d = 0,
                            e = 0,
                            f = 0,
                            g = !0,
                            h = H(this.cultureName);
                        for (b = a.length - 1; b > -1; b--) {
                            if (a[b] === h.numberDecimalSeparator) d++, f > 0 && (g = !1), c = "";
                            else if ("e" === I(a[b])) e++, c = "";
                            else if (a[b] === h.numberGroupSeparator) g = 3 === c.length, f++, c = "";
                            else if ("-" === a[b] || "+" === a[b]) {
                                if (b > 0 && "e" !== I(a[b - 1])) return !1
                            } else {
                                if (!L.Fc(a[b])) return !1;
                                c += a[b]
                            }
                            if (d > 1 || e > 1 || !g) return !1
                        }
                        return !0
                    },
                    Hd: function(a) {
                        var b, c, d, e, f, g, h, i = a,
                            j = [];
                        for (b = 0; b < i.length; b++) L.Fc(i[b]) && j.push(b);
                        for (c = H(this.cultureName), d = [c.currencyDecimalSeparator, c.currencyGroupSeparator, c.currencySymbol, c.nanSymbol, c.negativeInfinitySymbol, c.negativeSign, c.numberDecimalSeparator, c.numberGroupSeparator, c.percentDecimalSeparator, c.percentGroupSeparator, c.percentSymbol, c.perMilleSymbol, c.positiveInfinitySymbol, c.positiveSign], e = i.length - 1; e > -1; e--) if (f = i[e], !L.Gc(f) || d.indexOf("" + f) > -1) {
                            if (("-" === f || "+" === f) && (g = e > 0 ? "" + i[e - 1] : m, h = ["e", "E", "(", H(this.cultureName).currencySymbol], h.indexOf(g) < 0)) break
                        } else(e < j[0] || j[j.length - 1] < e) && (i = r.Fb(i, e, 1));
                        return i
                    },
                    Id: function(a) {
                        var b = H(this.cultureName).currencySymbol,
                            c = r.kb(a, b) ? r.Fb(a, 0, b.length) : a;
                        return c.indexOf(b) < 0 ? c : a
                    },
                    Jd: function(a) {
                        var b = H(this.cultureName).percentSymbol,
                            c = !0,
                            d = a;
                        return r.kb(a, b) ? d = r.Fb(a, 0, b.length) : r.jb(a, b) ? d = r.Fb(a, a.length - b.length, b.length) : c = !1, r.Bb(d, b) && (c = !1), {
                            Ld: d,
                            Kd: c
                        }
                    },
                    Mja: function(a, b, c, d, e) {
                        var f = y(z(a, c, e)),
                            g = "0." + b,
                            h = "#." + d,
                            i = y(z(g, h, e, !0)),
                            j = f + "/" + i.substr(i.indexOf(".") + 1);
                        return "" === c && (j = a + j), "" === d && (j += b), j
                    }
                };

                function b(a, b) {
                    var c, d, e;
                    if (0 === a) return o(b);
                    if (0 === b) return o(a);
                    for (c = Math.max(a, b), d = Math.min(a, b), e = c % d; 0 !== e;) c = d, d = e, e = c % d;
                    return o(d)
                }
                function c(a, b, c, d, e) {
                    var f, g, h, i, j, k, l, m, n, p = 0,
                        q = 0,
                        r = 0,
                        s = 0,
                        t = Math.ceil;
                    for (a > 0 ? (s = a - t(a) + 1, 1 === s ? (s = 0, p = a) : p = t(a) - 1) : a < 0 && (p = t(a), s = t(a) - a), f = Math.pow(10, b - 1), g = Math.pow(10, b) - 1, f < 2 && (f = 2), g < 2 && (g = 2), h = !1, i = 0, j = f; j <= g && (k = j * s, l = Math.round(k), m = l / j, n = o(m - s), !((!h || n < o(i - s)) && (h = !0, i = m, q = l, r = j, n < 1e-5))); j++);
                    return c.value = p, d.value = q, e.value = r, h
                }
                function d(a) {
                    return ("" + a).replace(/\d/g, "?")
                }
                return a
            }(), e = function() {
                function a(a, b, c, d) {
                    ea.call(this, b, c, d), arguments.length > 0 ? ((a.indexOf("0") >= 0 || a.indexOf("#") >= 0 || a.indexOf(".") >= 0 || a.indexOf("@") >= 0) && J(), this.Bd = a) : this.Bd = "General", this._c = 0
                }
                return a.prototype = {
                    Nd: function() {
                        var a, b = this;
                        return b.Od || (a = b.Bd, a = $(a, "General", x), b.Od = new d(a, b.Ic, b.Jc, b.cultureName), b.Od.Ad = !0), b.Od
                    },
                    Pd: function() {
                        var a = this;
                        return a.Qd || (a.Qd = new d("0.#####E+00", a.Ic, a.Jc, a.cultureName), a.Qd.Ad = !0), a.Qd
                    },
                    formatString: function() {
                        return r.Gb(this.Bd, "@NumberFormat", "General")
                    },
                    format: function(a) {
                        var b, c, d, e = this;
                        if (t.Na(a, e.cultureName)) {
                            if (b = !e.Ic || e.Ic.allowScience(), c = t.Pa(a), c !== n && c !== m) return o(c) > 99999999999 && b || o(c) < 1e-11 && 0 !== c ? e.Pd().format(a) : e.Nd().format(a)
                        } else {
                            if (u(a, "string")) return d = r.Gb(e.formatString(), '"', ""), d = _(d), d ? r.Gb(d, "General", a) : a;
                            if (u(a, "boolean")) return ("" + a).toUpperCase()
                        }
                        return ""
                    },
                    parse: function(a) {
                        var b, c, d, e, f, g, h;
                        return K.Ec(a) ? m : "number" == typeof a ? a : (b = !1, c = r.Cb(a, "-"), c > 0 && !aa(a.charAt(c - 1), "E", !0) && (b = !0), (r.Bb(a, "/") || b || r.Bb(a, ":") || r.Bb(a, "-")) && (d = s.Qa(a)) ? d : (f = "-" === a.charAt(0), g = f ? r.Fb(a, 0, 1) : a, h = "(" === g.charAt(0) && ")" === a.charAt(a.length - 1), e = this.Nd().parse(g), e !== m && e !== n ? (h || f) && u(e, "number") ? -1 * o(e) : e : a))
                    }
                }, a
            }(), f = function() {
                function a(a, b, c, d) {
                    var e, f = this;
                    ea.call(f, b, c, d), e = ba(a, !1), b && (e = $(e, f.Ic.Kc, f.Ic.currencySymbol())), e = Y(e), e = _(e), f.Yc = e, f._c = 3
                }
                return a.prototype = {
                    format: function(a) {
                        var b, c, d, e = this;
                        try {
                            return c = a instanceof Date ? "" + s.Ra(a) : V(a), d = e.Kja(e.Yc), b = e.Lja(c, d)
                        } catch (a) {
                            return ""
                        }
                    },
                    parse: function(a) {
                        return a ? a : ""
                    },
                    formatString: function() {
                        return this.Yc
                    },
                    Kja: function(a) {
                        var b, c, d = "",
                            e = !1,
                            f = m,
                            g = [];
                        for (c = 0; c < a.length; c++) b = a.charAt(c), e ? ('"' !== b ? d += b : (d += b, g.push(d), d = "", e = !1), f = b) : "*" !== f && "_" !== f && "\\" !== f || "" === d ? "*" !== b && "_" !== b && "\\" !== b ? "@" !== b ? '"' !== b ? (d += b, f = b) : (f = b, "" !== d && g.push(d), d = b, e = !0) : (f = b, "" !== d && (g.push(d), d = ""), g.push(b)) : (f = b, "" !== d && (g.push(d), d = ""), d += b) : (d += b, g.push(d), d = "");
                        return "" !== d && g.push(d), g
                    },
                    Lja: function(a, b) {
                        var c, d, e = [],
                            f = !1;
                        for (c = b.length - 1; c >= 0; c--) d = b[c], "*" === d[0] ? f || (f = !0, e.push({
                            type: "fillingChar",
                            value: d[1]
                        })) : "_" === d[0] ? e.push({
                            type: "placeholder",
                            value: d[1]
                        }) : '"' === d[0] && '"' === d[d.length - 1] ? d.length > 2 && e.push({
                            type: "text",
                            value: d.substr(1, d.length - 2)
                        }) : "@" === d[0] ? e.push({
                            type: "text",
                            value: a
                        }) : e.push({
                            type: "text",
                            value: d
                        });
                        return e.reverse()
                    }
                }, a
            }();

            function U(a, b, c) {
                return a.substr(b, c)
            }
            function V(a) {
                return t.Fa(a) ? "" : "boolean" == typeof a ? a ? "TRUE" : "FALSE" : "string" == typeof a ? a : "" + a
            }
            g = {
                Hc: 0,
                Va: 1,
                Ua: 2,
                _text: 3
            }, h = RegExp("([.+?*$^\\[\\](){}|/])", "g");

            function W(a, b) {
                if ("\\" === a[b]) throw Error(E().Exp_InvalidBackslash);
                if (b - 1 > 0 && b - 1 < a.length && "\\" === a[b - 1]) {
                    if (b - 2 < 0) return !0;
                    if (b - 2 > 0 && b - 2 < a.length) return "\\" !== a[b - 2]
                }
                return !1
            }
            function X(a) {
                if (!a) throw Error(E().Exp_TokenIsNull);
                return "[" + a + "]"
            }
            function Y(a) {
                var b, c, d, e;
                if (a === n || a === m || "" === a) return a;
                for (b = "", c = 0, d = 0; d < a.length; d++) e = a[d], "[" === e ? c++ : "]" === e ? (c--, c < 0 && (c = 0)) : 0 === c && (b += e);
                return "" + b
            }
            function Z(a) {
                return a = $(a, "[", ""), $(a, "]", "")
            }
            function $(a, b, c) {
                return !a || a === K.Dc || aa(b, c, !0) ? a : (b = b.replace(h, "\\$1"), a.replace(RegExp(b, "g"), c))
            }
            function _(a) {
                var b, c, d = a.length,
                    e = !1,
                    f = "";
                for (b = 0; b < d; b++) c = a.charAt(b), "\\" === c ? (e = !e, e || (f += c)) : (e = !1, f += c);
                return f
            }
            function aa(a, b, c) {
                return c ? I(a) === I(b) : a === b
            }
            function ba(a, b) {
                var c, d, e, f;
                for (1 === arguments.length && (b = !0), c = !1, d = "", e = 0; e < a.length; e++) {
                    if (f = a[e], '"' === f) c = !c;
                    else if (!c && !b && "/" === f && !W(a, e)) {
                        "_" === f && e++;
                        continue
                    }
                    d += f
                }
                return d
            }
            function ca(a) {
                var b, c, d, e = "",
                    f = !1;
                for (b = 0, c = a.length; b < c; b++) d = a[b], '"' === d && (f = !f), "E" === d || f || (e += I(d));
                return e
            }
            function da(a, b) {
                var c, d, e, f;
                if (!a || a === K.Dc) return !1;
                for (c = ba(a), d = ca(c), e = 0; e < b.length; e++) {
                    if (f = d.indexOf(b[e]), 0 === f) return !0;
                    if (f > 0 && "_" !== d[f - 1] && "*" !== d[f - 1]) return !0
                }
                return !1
            }
            i = [
                ["M/d", "MMM/d", "MMMM/d", "d/M", "d/MMM", "d/MMMM", "M-d", "MMM-d", "MMMM-d", "d-M", "d-MMM", "d-MMMM"],
                ["M/y", "MMM/y", "M/yyyy", "MMM/yyyy", "M-y", "MMM-y", "M-yyyy", "MMM-yyyy"],
                ["M/d/y", "MMM/d/y", "MMMM/d/y", "M/d/yyyy", "MMM/d/yyyy", "MMMM/d/yyyy", "d/M/y", "d/MMM/y", "d/MMMM/y", "d/M/yyyy", "d/MMM/yyyy", "d/MMMM/yyyy", "yyyy/M/d", "M-d-y", "MMM-d-y", "MMMM-d-y", "M-d-yyyy", "MMM-d-yyyy", "MMMM-d-yyyy", "d-M-y", "d-MMM-y", "d-MMMM-y", "d-M-yyyy", "d-MMM-yyyy", "d-MMMM-yyyy", "yyyy-M-d"],
                ["H:m", "h:m tt"],
                ["H:m:s", "h:m:s tt", "H:m:s", "h:mm:ss tt"],
                ["H:m:s.FFF", "h:m:s.FFF tt"],
                ["M/d H:m", "MMM/d H:m", "MMMM/d H:m", "d/M H:m", "d/MMM H:m", "d/MMMM H:m", "M/y H:m", "MMM/y H:m", "M/yyyy H:m", "MMM/yyyy H:m", "M/d/y H:m", "MMM/d/y H:m", "MMMM/d/y H:m", "M/d/yyyy H:m", "MMM/d/yyyy H:m", "MMMM/d/yyyy H:m", "M-d H:m", "MMM-d H:m", "MMMM-d H:m", "d-M H:m", "d-MMM H:m", "d-MMMM H:m", "M-y H:m", "MMM-y H:m", "M-yyyy H:m", "MMM-yyyy H:m", "M-d-y H:m", "MMM-d-y H:m", "MMMM-d-y H:m", "M-d-yyyy H:m", "MMM-d-yyyy H:m", "MMMM-d-yyyy H:m", "M/d h:m tt", "MMM/d h:m tt", "MMMM/d h:m tt", "d/M h:m tt", "d/MMM h:m tt", "d/MMMM h:m tt", "M/y h:m tt", "MMM/y h:m tt", "M/yyyy h:m tt", "MMM/yyyy h:m tt", "M/d/y h:m tt", "MMM/d/y h:m tt", "MMMM/d/y h:m tt", "M/d/yyyy h:m tt", "MMM/d/yyyy h:m tt", "MMMM/d/yyyy h:m tt", "M-d h:m tt", "MMM-d h:m tt", "MMMM-d h:m tt", "d-M h:m tt", "d-MMM h:m tt", "d-MMMM h:m tt", "M-y h:m tt", "MMM-y h:m tt", "M-yyyy h:m tt", "MMM-yyyy h:m tt", "M-d-y h:m tt", "MMM-d-y h:m tt", "MMMM-d-y h:m tt", "M-d-yyyy h:m tt", "MMM-d-yyyy h:m tt", "MMMM-d-yyyy h:m tt"],
                ["M/d H:m:s", "MMM/d H:m:s", "MMMM/d H:m:s", "d/M H:m:s", "d/MMM H:m:s", "d/MMMM H:m:s", "M/y H:m:s", "MMM/y H:m:s", "M/yyyy H:m:s", "MMM/yyyy H:m:s", "M/d/y H:m:s", "MMM/d/y H:m:s", "MMMM/d/y H:m:s", "M/d/yyyy H:m:s", "MMM/d/yyyy H:m:s", "MMMM/d/yyyy H:m:s", "d/M/y H:m:s", "d/MMM/y H:m:s", "d/MMMM/y H:m:s", "d/M/yyyy H:m:s", "d/MMM/yyyy H:m:s", "d/MMMM/yyyy H:m:s", "yyyy/M/d H:m:s", "M-d H:m:s", "MMM-d H:m:s", "MMMM-d H:m:s", "d-M H:m:s", "d-MMM H:m:s", "d-MMMM H:m:s", "M-y H:m:s", "MMM-y H:m:s", "M-yyyy H:m:s", "MMM-yyyy H:m:s", "M-d-y H:m:s", "MMM-d-y H:m:s", "MMMM-d-y H:m:s", "M-d-yyyy H:m:s", "MMM-d-yyyy H:m:s", "MMMM-d-yyyy H:m:s", "d-M-y H:m:s", "d-MMM-y H:m:s", "d-MMMM-y H:m:s", "d-M-yyyy H:m:s", "d-MMM-yyyy H:m:s", "d-MMMM-yyyy H:m:s", "yyyy-M-d H:m:s", "M/d h:m:s tt", "MMM/d h:m:s tt", "MMMM/d h:m:s tt", "d/M h:m:s tt", "d/MMM h:m:s tt", "d/MMMM h:m:s tt", "M/y h:m:s tt", "MMM/y h:m:s tt", "M/yyyy h:m:s tt", "MMM/yyyy h:m:s tt", "M/d/y h:m:s tt", "MMM/d/y h:m:s tt", "MMMM/d/y h:m:s tt", "M/d/yyyy h:m:s tt", "MMM/d/yyyy h:m:s tt", "MMMM/d/yyyy h:m:s tt", "d/M/y h:m:s tt", "d/MMM/y h:m:s tt", "d/MMMM/y h:m:s tt", "d/M/yyyy h:m:s tt", "d/MMM/yyyy h:m:s tt", "d/MMMM/yyyy h:m:s tt", "yyyy/M/d h:m:s tt", "M/d/yyyy h:mm:ss tt", "M-d h:m:s tt", "MMM-d h:m:s tt", "MMMM-d h:m:s tt", "d-M h:m:s tt", "d-MMM h:m:s tt", "d-MMMM h:m:s tt", "M-y h:m:s tt", "MMM-y h:m:s tt", "M-yyyy h:m:s tt", "MMM-yyyy h:m:s tt", "M-d-y h:m:s tt", "MMM-d-y h:m:s tt", "MMMM-d-y h:m:s tt", "M-d-yyyy h:m:s tt", "MMM-d-yyyy h:m:s tt", "MMMM-d-yyyy h:m:s tt", "d-M-y h:m:s tt", "d-MMM-y h:m:s tt", "d-MMMM-y h:m:s tt", "d-M-yyyy h:m:s tt", "d-MMM-yyyy h:m:s tt", "d-MMMM-yyyy h:m:s tt", "yyyy-M-d h:m:s tt"],
                ["M/d H:m:s.FFF", "MMM/d H:m:s.FFF", "MMMM/d H:m:s.FFF", "d/M H:m:s.FFF", "d/MMM H:m:s.FFF", "d/MMMM H:m:s.FFF", "M/y H:m:s.FFF", "MMM/y H:m:s.FFF", "M/yyyy H:m:s.FFF", "MMM/yyyy H:m:s.FFF", "d/M/y H:m", "d/MMM/y H:m", "d/MMMM/y H:m", "d/M/yyyy H:m", "d/mmm/yyyy H:m", "d/MMMM/yyyy H:m", "yyyy/M/d H:m", "M/d/y H:m:s.FFF", "MMM/d/y H:m:s.FFF", "MMMM/d/y H:m:s.FFF", "M/d/yyyy H:m:s", "MMM/d/yyyy H:m:s.FFF", "MMMM/d/yyyy H:m:s.FFF", "d/M/y H:m:s.FFF", "d/MMM/y H:m:s.FFF", "d/MMMM/y H:m:s.FFF", "d/M/yyyy H:m:s.FFF", "d/MMM/yyyy H:m:s.FFF", "d/MMMM/yyyy H:m:s.FFF", "yyyy/M/d H:m:s.FFF", "M-d H:m:s.FFF", "MMM-d H:m:s.FFF", "MMMM-d H:m:s.FFF", "d-M H:m:s.FFF", "d-MMM H:m:s.FFF", "d-MMMM H:m:s.FFF", "M-y H:m:s.FFF", "MMM-y H:m:s.FFF", "M-yyyy H:m:s.FFF", "MMM-Yyyy H:m:s.FFF", "d-M-y H:m", "d-MMM-y H:m", "d-MMMM-y H:m", "d-M-yyyy H:m", "d-MMM-yyyy H:m", "d-MMMM-yyyy H:m", "yyyy-M-d H:m", "M-d-y H:m:s.FFF", "MMM-d-y H:m:s.FFF", "MMMM-d-y H:m:s.FFF", "M-d-yyyy H:m:s", "MMM-d-yyyy H:m:s.FFF", "MMMM-d-yyyy H:m:s.FFF", "D-M-y H:m:s.FFF", "d-MMM-y H:m:s.FFF", "d-MMMM-y H:m:s.FFF", "D-M-yyyy H:m:s.FFF", "d-MMM-yyyy H:m:s.FFF", "d-MMMM-yyyy H:m:s.FFF", "yyyy-M-d H:m:s.FFF", "M/d h:m:s.FFF tt", "MMM/d h:m:s.FFF tt", "MMMM/d h:m:s.FFF tt", "d/M h:m:s.FFF tt", "d/MMM h:m:s.FFF tt", "d/MMMM h:m:s.FFF tt", "M/y h:m:s.FFF tt", "MMM/y h:m:s.FFF tt", "M/yyyy h:m:s.FFF tt", "MMM/yyyy h:m:s.FFF tt", "d/M/y h:m tt", "d/MMM/y h:m tt", "d/MMMM/y h:m tt", "d/M/yyyy h:m tt", "d/mmm/yyyy h:m tt", "d/MMMM/yyyy h:m tt", "yyyy/M/d h:m tt", "M/d/y h:m:s.FFF tt", "MMM/d/y h:m:s.FFF tt", "MMMM/d/y h:m:s.FFF tt", "M/d/yyyy h:m:s tt", "MMM/d/yyyy h:m:s.FFF tt", "MMMM/d/yyyy h:m:s.FFF tt", "d/M/y h:m:s.FFF tt", "d/MMM/y h:m:s.FFF tt", "d/MMMM/y h:m:s.FFF tt", "d/M/yyyy h:m:s.FFF tt", "d/MMM/yyyy h:m:s.FFF tt", "d/MMMM/yyyy h:m:s.FFF tt", "yyyy/M/d h:m:s.FFF tt", "M-d h:m:s.FFF tt", "MMM-d h:m:s.FFF tt", "MMMM-d h:m:s.FFF tt", "d-M h:m:s.FFF tt", "d-MMM h:m:s.FFF tt", "d-MMMM h:m:s.FFF tt", "M-y h:m:s.FFF tt", "MMM-y h:m:s.FFF tt", "M-yyyy h:m:s.FFF tt", "MMM-Yyyy h:m:s.FFF tt", "d-M-y h:m tt", "d-MMM-y h:m tt", "d-MMMM-y h:m tt", "d-M-yyyy h:m tt", "d-MMM-yyyy h:m tt", "d-MMMM-yyyy h:m tt", "yyyy-M-d h:m tt", "M-d-y h:m:s.FFF tt", "MMM-d-y h:m:s.FFF tt", "MMMM-d-y h:m:s.FFF tt", "M-d-yyyy H:m:s tt", "MMM-d-yyyy H:m:s.FFF tt", "MMMM-d-yyyy h:m:s.FFF tt", "d-M-y h:m:s.FFF tt", "d-MMM-y h:m:s.FFF tt", "d-MMMM-y h:m:s.FFF tt", "d-M-yyyy h:m:s.FFF tt", "d-MMM-yyyy h:m:s.FFF tt", "d-MMMM-yyyy h:m:s.FFF tt", "yyyy-M-d h:m:s.FFF tt"]
            ], j = function() {
                return {
                    pattern: i,
                    formatter: ["d-mmm", "mmm-yy", G().shortDatePattern, "h:mm", "h:mm:ss", "h:mm:ss.0", G().shortDatePattern + " h:mm", G().shortDatePattern + " h:mm:ss", G().shortDatePattern + " h:mm:ss.0"]
                }
            };

            function ea(a, b, c) {
                this.Ic = a, this.Jc = b, this.cultureName = c
            }
            function fa(a) {
                this.Kc = a
            }
            function ga(a) {
                var c, d, e = Z(a);
                return e && e !== K.Dc ? (d = e[0], ["<", ">", "="].indexOf(d) > -1 ? (c = Q, c.Name = "ConditionalFormatPart") : r.kb(e, "DBNum", !0) ? (c = R, c.Name = "DBNumberFormatPart") : aa(e[0], "$", !1) && e.indexOf("-") > -1 ? (c = M, c.Name = "LocaleIDFormatPart") : ia(e) ? (c = T, c.Name = "ABSTimeFormatPart") : e.indexOf("$") < 0 && e.length >= 3 && (c = b, c.Name = "ColorFormatPart"), c) : c
            }
            function ha(a, b) {
                var c, g = !1;
                return a = a ? "" + a : K.Dc, da(a, ["general"]) ? c = e : S.Lc(a) ? c = S : da(a, ["E+", "E-", "#", ".", ",", "%", "0", "/", "?"]) || b ? (g = !0, c = d) : (g = !0, c = f), {
                    Mc: g,
                    Nc: c
                }
            }
            function ia(a) {
                var b, c = I(a),
                    d = c[0];
                if ("h" !== d && "m" !== d && "s" !== d) return !1;
                for (b = 1; b < c.length; b++) if (d !== c[b]) return !1;
                return !0
            }
            function ja(a, b, c) {
                var d, e;
                return d = a ? a.cultureInfo() : F(c), e = d.NumberFormat.dbNumber, e ? e[b] : m
            }
            function ka(a, b, c, d, e) {
                var f, g = a;
                return !A(d) && b instanceof Date && (f = ja(c, d.type, e), g = d.Pc(g, f, !0), 1 === d.type && (g = g.replace(RegExp(C, "g"), D)), g = g.replace("@" + O.Qc, s.Vb(b, O.Qc)), g = g.replace("@" + O.Rc, s.Vb(b, O.Rc)), g = d.Pc(g, f, !1)), g
            }
            function la(a, b, c, d, e) {
                var f, g, h, i, j, k, l;
                if (!A(d) && (f = ja(c, d.type, e), !A(f))) {
                    for (g = !1, i = F(e), k = 0, l = a.length; k < l; k++)"decimalSeparator" === a[k].type && (g = !0, a[k].value = d.Pc(a[k].value, f, b), h = a[k].value), "number" === a[k].type && (g ? a[k].value = d.Pc(h + a[k].value, f, b).slice(1) : a[k].value = d.Pc(a[k].value, f, b), "ja-JP" === i.name() && a[k].value.length > 1 && ("一千" === (j = a[k].value.substr(0, 2)) || "一百" === j || "一十" === j) && (a[k].value = a[k].value.substr(1)));
                    return a
                }
                return a
            }
            k = function() {
                function a(a, b) {
                    var c = this;
                    0 === arguments.length ? (c.formatCached = "General", c.Rd = new e) : c.ad(a, b)
                }
                var b = ["colorFormatPart", "conditionalFormatPart", "dbNumberFormatPart", "localeIDFormatPart"];

                function c(a) {
                    if (!a || a === K.Dc) throw Error(E().Exp_TokenIllegal)
                }
                function d(a) {
                    c(a);
                    var b = Z(a);
                    return c(b), b
                }
                function f(a) {
                    var b = d(a);
                    return "$" === b[0] && (b = b.slice(1)), '"' + b + '"'
                }
                return a.prototype = {
                    ad: function(a, b) {
                        var c, e, g, h, i, j, k, l, o, p, q, r, s, t, u;
                        for (a !== m && a !== n || J(), c = a, e = this, e.formatCached = a, g = "", h = "", i = !1, j = [], k = 0; k < a.length; k++) l = a[k], "[" === l ? (i && J(), h && (g || (g = ""), g += h), h = "" + l, i = !0) : "]" === l ? (i || J(), h ? (h += l, o = "" + h, p = ga("" + h), p ? "ABSTimeFormatPart" === p.Name ? (j.push(new p(d(o), o)), g += h) : e.addPart(p, o) : (q = f(o), g += q, c = $(a, o, q)), h = "") : J(), i = !1) : h += l;
                        h ? i ? J() : g += h : g || (g = e.q$a()), e.localeIDFormatPart && (b = e.localeIDFormatPart.cultureInfo().name()), r = e.conditionalFormatPart, s = ha(g, r), t = s.Nc, u = s.Mc ? c : g, t ? e.Rd = new t(u, e.localeIDFormatPart, e.dbNumberFormatPart, b, j.length > 0 ? j : m) : J()
                    },
                    q$a: function() {
                        var a, c = this,
                            d = "";
                        return c.dbNumberFormatPart && (a = b.some(function(a) {
                            return "dbNumberFormatPart" !== a && c[a]
                        }), a || (d = "General")), d
                    },
                    formatString: function() {
                        var a, c, d, e = this,
                            f = "";
                        for (a = 0, c = b.length; a < c; a++) d = b[a], e[d] && (f += "" + e[d]);
                        return f += e.Rd.formatString()
                    },
                    addPart: function(a, c) {
                        var e, f, g, h = this,
                            i = d(c);
                        for (e = 0, f = b.length; e < f; e++) if (g = b[e], aa(g, a.Name, !0)) {
                            if (h[g]) throw Error(E().Exp_DuplicatedDescriptor);
                            h[g] = new a(i, c)
                        }
                    },
                    format: function(a) {
                        return this.Rd.format(a)
                    },
                    parse: function(a) {
                        return this.Rd.parse(a)
                    }
                }, a
            }(), l = function(a) {
                t.G(b, a);

                function b(a, b) {
                    var c = this;
                    c.Sd = !0, c.PropertyChanged = [], K.Ec(a) && (a = "General"), c.formatCached = a, c.cultureName = b, c.init()
                }
                function c(a) {
                    var c = b[a];
                    return c || (c = new b(a), b[a] = c), c
                }
                return b.prototype = {
                    toJSON: function() {
                        var a = this,
                            b = {
                                formatCached: a.formatCached
                            };
                        return a.cultureName && (b.customerCultureName = a.cultureName), "general" === I(a.formatCached) && delete b.formatCached, b
                    },
                    hasFormatedColor: function() {
                        var a, b, c = this;
                        for (a in g) if (g.hasOwnProperty(a) && (b = c.getFormatter(g[a]), b && b.colorFormatPart)) return !0;
                        return !1
                    },
                    formatString: function(a) {
                        var b, c, d, e, f = this;
                        if (0 === arguments.length) {
                            for (b = K.Dc, c = 0, d = f.formatters.length; c < d; c++) e = f.formatters[c], b += e.formatString(), c !== d - 1 && (b += ";");
                            return b
                        }
                        if (!a) throw Error(E().Exp_ValueIsNull);
                        return f.formatters = m, f.formatCached = a, f.init(), f.Td("formatString"), f
                    },
                    getFormatter: function(a) {
                        var b = this;
                        return b.formatters && b.formatters[a]
                    },
                    getPreferredEditingFormatter: function(a) {
                        var b, d, e = G(this.cultureName);
                        return u(a, "DateTime") ? (b = 0 === a.getHours() && 0 === a.getMinutes() && 0 === a.getSeconds() && 0 === a.getMilliseconds() ? "" : " h:mm:ss", c(e.shortDatePattern + b)) : u(a, "TimeSpan") ? c(e.longTimePattern) : t.Na(a, this.cultureName) ? (d = t.Pa(a), c(d >= 1e20 || d <= 1e-17 && d > 0 || d <= -1e20 || d < 0 && d >= -1e-17 ? "0.##E+00" : x)) : c("General")
                    },
                    getPreferredDisplayFormatter: function(a, d) {
                        var e, f, g, h, i, k, l, n, o, p, q, v, w, x, y, z, A, B, C, D = this;
                        if (d || (d = {
                                value: m
                            }), d.value = m, K.Ec(a)) return new b;
                        if (e = a, f = d.value = D.parse(e), u(f, "DateTime") || u(f, "TimeSpan")) {
                            for (g = j(), h = g.pattern, i = g.formatter, k = 0; k < h.length; k++) for (l = h[k], n = 0; n < l.length; n++) if (o = l[n], p = s.Qa(a, o), p && p - f === 0) return new b(i[k])
                        } else if (t.Na(f, D.cultureName)) {
                            if (q = H(D.cultureName), v = q.currencySymbol, w = q.numberDecimalSeparator, x = q.percentSymbol, y = q.numberGroupSeparator, z = "E", A = r.Bb, B = A(e, w), C = B ? ".00" : "", e[0] === v) return c(K.Kb("{0}#,##0{1};[Red]({0}#,##0{1})", v, C));
                            if (A(e, z, 1)) return c("0.00E+00");
                            if ("" + e[0] === x || "" + e[e.length - 1] === x) return c(K.Kb("0{0}%", C));
                            if (A(e, y)) return c(K.Kb("#,##0{0}", C))
                        }
                        return c("General")
                    },
                    format: function(a, b) {
                        var c, d, e, f, h;
                        if (u(a, "boolean")) return ("" + a).toUpperCase();
                        if (c = this.Ud(a)) {
                            d = c.colorFormatPart, b && d && (b.conditionalForeColor = b.value = d.foreColor), e = 0, f = t.Na(a, self.cultureName), f && (e = t.Pa(a)), h = K.Dc;
                            try {
                                h = f && c === this.getFormatter(g.Va) ? c.format(o(e)) : c.format(a), b && (b.content = v(h) ? h : [{
                                    type: "text",
                                    value: h
                                }]), v(h) && (h = w.Jja(h))
                            } catch (b) {
                                u(a, "string") && (h = "" + a)
                            }
                            return h
                        }
                        return f && e < 0 ? "-" : u(a, "string") ? "" + a : a === n || a === m ? K.Dc : "" + a
                    },
                    parse: function(a) {
                        var b = this;
                        return b.formatters && b.formatters.length > 0 ? b.formatters[0].parse(a) : m
                    },
                    init: function() {
                        var a, b, c, d = this,
                            e = d.formatCached;
                        for (K.Ec(e) && J(), d.formatters = [], a = e.split(";"), d.Sd = 1 === a.length, (!a || a.length < 1 || a.length > 4) && J(), b = 0; b < a.length; b++) c = new k(a[b], d.cultureName), d.formatters.push(c);
                        d.getFormatter(g.Hc) || J()
                    },
                    Ud: function(a) {
                        var b, c, d, e, f, h, i, j, k = this,
                            l = k.getFormatter(g.Hc),
                            n = k.getFormatter(g._text);
                        return "string" == typeof a && isNaN(a) ? n ? n : l : t.Na(a, k.cultureName) || u(a, "boolean") ? (b = k.getFormatter(g.Va), c = k.getFormatter(g.Ua), d = t.Pa(a), e = l && l.conditionalFormatPart, f = e && l.conditionalFormatPart.isMeetCondition(d), h = b && b.conditionalFormatPart, i = h && b.conditionalFormatPart.isMeetCondition(d), k.Sd || (e ? f : d > 0 || 0 === d && !c) ? j = l : (h ? i : d < 0) ? j = b : c ? j = c : b && (j = b), j) : m
                    },
                    Td: function(a) {
                        var b, c, d = this;
                        if (d.PropertyChanged) for (b = 0; b < d.PropertyChanged.length; b++) c = d.PropertyChanged[b], "function" == typeof c && c(d, a)
                    }
                }, b
            }(N), p.GeneralFormatter = l, p.FormatterBase = N, a.exports = p
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {
                Exp_TokenIsNull: "token is null",
                Exp_InvalidBackslash: "the '\\' cannot be evaluated",
                Exp_FormatIllegal: "format is illegal.",
                Exp_ValueIsNull: "value is null",
                Exp_DuplicatedDescriptor: "The type of descriptor was added.",
                Exp_TokenIllegal: "token is illegal.",
                Exp_ValueIllegal: "value is illegal.",
                Exp_InvalidCast: "InvalidCastException"
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            a.exports = c(21)
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i = c(2),
                j = i.j.Fa,
                k = i.pc,
                l = k.nc,
                m = k.ec,
                n = i.k,
                o = n.Cb,
                p = {},
                q = p.Vd = {},
                r = null,
                s = void 0,
                t = Math.floor,
                u = Math.PI,
                v = Math.sin,
                w = Math.cos,
                x = Math.min,
                y = Math.max,
                z = Math.round,
                A = Math.pow,
                B = Math.sqrt,
                C = Math.abs,
                D = Math.ceil,
                E = "undefined",
                F = "string",
                G = isNaN,
                H = parseFloat,
                I = Number.MAX_VALUE,
                J = "#969696",
                K = "#CB0000",
                L = "#646464",
                M = "#DCDCDC",
                N = "white",
                O = "black",
                P = "blue",
                Q = "green",
                R = "red",
                S = "left",
                T = "right",
                U = "center",
                V = "top",
                W = "bottom",
                X = "middle",
                Y = "px Arial";

            function Z(a, b) {
                this.x = a, this.y = b
            }
            function $(a, b, c, d) {
                var e = this;
                e.x = a, e.y = b, e.width = c, e.height = d
            }
            function _(a, b) {
                var c, d, e, f = a[0],
                    g = f && f.value ? f.value : f;
                for (d = 1, e = a.length; d < e; d++) f = a[d], c = f && f.value ? f.value : f, (b && g > c || !b && g < c) && (g = c);
                return g
            }
            function aa(a, b, c, d, e, f, g) {
                f && (a.strokeStyle = f), g && (a.lineWidth = g), a.beginPath(), a.moveTo(b, c), a.lineTo(d, e), a.stroke()
            }
            function ba(a, b, c, d, e, f, g, h, i, j, k, l) {
                b ? aa(a, c, d, e, f, k, l) : aa(a, g, h, i, j, k, l)
            }
            function ca(a) {
                return k.dc(k.ec(a)) < 127.5 ? N : O
            }
            function da(a, b, c, d, e, f, g) {
                var h = {};
                return g ? (h.left = b + e + f, h.width = d - 2 * e, h.top = a + e, h.height = c - 2 * e) : (h.left = a + e, h.width = c - 2 * e, h.top = b + e, h.height = d - 2 * e), h
            }
            function ea(a, b) {
                var c, d, e = 0;
                for (c = 0, d = a.length; c < d; c++) e += b && !b(a[c]) ? 0 : a[c];
                return e
            }
            function fa(a, b, c, d) {
                var e, f, g, h, i = [];
                for (f = 0, g = 0, h = a.length; f < h; f++) b ? b(a[f]) ? i[g++] = c ? c(a[f]) : a[f] : i[g++] = 0 : (e = H(a[f]), !G(e) && isFinite(e) && (i[g++] = e));
                return d && d(i), i
            }
            function ga(a, b, c, d, e, f) {
                var g = z(b + d),
                    h = z(c + e);
                b = z(b), c = z(c), d = z(g - b), e = z(h - c), a.beginPath(), a.fillStyle = f, a.fillRect(b, c, d, e), a.fill()
            }
            function ha(a, b, c) {
                return a = x(a, b), a = y(a, c)
            }
            function ia(a, b, c, d, e) {
                a.save(), a.rect(b, c, d, e), a.clip()
            }
            function ja(a, b, c, d, e, f) {
                var g, h, i, k, l, m, n = c + e / 2,
                    o = d + f / 2,
                    p = 5,
                    q = x(e, f) / 2 - p,
                    r = -.5 * u,
                    s = n + q * w(r),
                    t = o + q * v(r),
                    y = [],
                    z = [];
                if (!(q <= 0)) {
                    for (h = fa(b.values, function(a) {
                        return !j(a) && !G(a) && isFinite(a)
                    }, function(a) {
                        return C(a)
                    }, function(a) {
                        1 === a.length && (a[1] = 1 - a[0])
                    }), i = h.length, k = ka(i, b.colors), l = ea(h), a.save(), m = 0; m < i; m++) g = r + h[m] / l * 2 * u, a.beginPath(), a.moveTo(n, o), a.lineTo(s, t), a.arc(n, o, q, r, g, !1), a.lineTo(n, o), a.fillStyle = k[m], a.fill(), y.push(s), z.push(t), r = g, s = n + q * w(r), t = o + q * v(r);
                    for (m = 0; m < i; m++) aa(a, n, o, y[m], z[m], N);
                    a.restore()
                }
            }
            function ka(a, b) {
                var c, d, e, f, g, h, i = [],
                    j = b.length;
                if (a <= j) i = b.slice(0, a);
                else {
                    for (0 === j ? (i.push("darkgray"), j = 1) : i = b.slice(0), c = [], e = a - j + 1, f = 0; f < j; f++) c[f] = m(i[f]);
                    for (f = j; f < a; f++) {
                        d = c[f % j];
                        for (g in d) d.hasOwnProperty(g) && (h = d[g], d[g] = t(h - h / e * (f / j)));
                        d.a = 255, i[f] = k.bc(d)
                    }
                }
                return i
            }
            function la(a, b, c) {
                this.x = a, this.y = b, this.value = c
            }
            function ma(a, b, c, d, e, f) {
                var g, h, i, k, l, m, n, o, p, q, s, t, u, v, w, A, B, C, D, F, H, I, J, L, M, N, O, Q, R, S, T, U;
                for (a.save(), g = b.points, h = b.mini, i = b.maxi, k = b.line1, l = b.line2, m = b.colorPositive, n = b.colorNegative, o = 5, g = fa(g, function(a) {
                    return !j(a) && !G(a) && isFinite(a)
                }), m = j(m) ? "#787878" : m, n = j(n) ? K : n, D = _(g, !1), i = j(i) ? D : i, q = y(i, D), F = _(g, !0), h = j(h) ? F : h, p = x(h, F), p = p > 0 ? 0 : p, q = q < 0 ? 0 : q, s = 0, s = s > q ? q : s, s = s < p ? p - 1 : s, t = g.length, H = da(c, d, e, f, o), u = H.left, v = H.top, w = H.width, A = H.height, B = w / (t - 1), C = (q - p) / A, I = [], O = v + (q - s) / C, S = 0; S < t; S++) J = g[S], Q = u + B * S, R = v + (q - J) / C, 0 === S && I.push(new la(Q, O, s)), S > 0 && J * g[S - 1] < 0 && (M = I[I.length - 1], M && (N = na(M.x, M.y, Q, R, O), I.push(new la(N, O, s)))), I.push(new la(Q, R, J)), S === t - 1 && I.push(new la(Q, O, s));
                for (a.beginPath(), T = 0, U = I.length; T < U; T++) L = I[T], L && (0 === T ? a.moveTo(L.x, L.y) : a.lineTo(L.x, L.y), M = I[T - 1], L.value === s && M && (a.fillStyle = M.value > s ? m : n, a.fill(), T !== U - 1 && (a.beginPath(), a.moveTo(L.x, L.y))));
                V(k), V(l), a.restore();

                function V(b) {
                    var c, d, e;
                    b === r && typeof b !== E || (c = ha(b, q, p), d = 0 !== C ? (q - c) / C : A / 2, e = z(v + d) - .5, aa(a, u, e, u + w, e, P))
                }
            }
            function na(a, b, c, d, e) {
                return ((b - e) * c + (e - d) * a) / (b - d)
            }
            function oa(a, b, c, d, e, f) {
                var g, h, i, k, l, m, n, o, p, q, r, s, t, v, w, A, B, C, D, E, F, G, H, L, N, O, P = b.points1,
                    Q = b.points2,
                    R = b.minX,
                    S = b.maxX,
                    T = b.minY,
                    U = b.maxY,
                    V = b.hLine,
                    W = b.vLine,
                    X = b.xMinZone,
                    Y = b.xMaxZone,
                    Z = b.yMinZone,
                    $ = b.yMaxZone,
                    _ = b.tags,
                    aa = b.drawSymbol,
                    ba = b.drawLines,
                    ca = b.color1,
                    ea = b.color2,
                    fa = b.dash,
                    ha = 4,
                    ja = da(c, d, e, f, 5),
                    ka = ja.left,
                    la = ja.top,
                    ma = ja.width,
                    na = ja.height;

                function oa(b, c, d, e) {
                    o = b[c], q = o.x, r = o.y, o = b[c + 1], s = o.x, t = o.y, v = ka + (q - l) * ma / (m - l), A = ka + (s - l) * ma / (m - l), w = la + (k - r) * na / (k - i), B = la + (k - t) * na / (k - i), ba && ra(a, v, w, A, B, d, fa), aa && (0 === c && e(v, w), e(A, B))
                }
                function qa(a, b, c, d, e) {
                    var f = pa(a, !0),
                        g = pa(a, !1);
                    i = j(T) ? f.y : b, k = j(U) ? g.y : c, l = j(R) ? f.x : d, m = j(S) ? g.x : e, m = l >= m ? l + 1 : m, k = i >= k ? i + 1 : k
                }
                function ta(b, c, d) {
                    a.beginPath(), a.arc(b - ha / 2, c - ha / 2, ha / 2, 0, 2 * u, !1), a.fillStyle = d, a.fill()
                }
                function ua(b, c) {
                    a.beginPath(), a.strokeStyle = ca, a.arc(b - ha / 2, c - ha / 2, ha / 2, 0, 2 * u, !1), a.stroke()
                }
                function va(b, c) {
                    a.beginPath(), a.strokeStyle = ea, a.strokeRect(b - ha / 2, c - ha / 2, ha, ha)
                }
                if (P && !(P.length <= 0) && (g = sa(P), !(g.length <= 0 || Q && Q.length > 0 && (h = sa(Q), h.length <= 0)))) {
                    for (ia(a, c, d, e, f), a.beginPath(), aa = !! j(aa) || aa, ca = j(ca) ? J : ca, ea = j(ea) ? K : ea, qa(g, T, U, R, S), !j(X) && !j(Y) && !j(Z) && !j($) && l <= X && X <= m && l <= Y && Y <= m && i <= Z && Z <= k && i <= $ && $ <= k && (H = y(l, X), L = x(m, Y), N = y(i, Z), O = x(k, $), H >= L && (L = H + 1), N >= O && (O = N + 1), ga(a, ka + (H - l) * ma / (m - l), la + (k - O) * na / (k - i), (L - H) * ma / (m - l), (O - N) * na / (k - i), M)), C = -I, D = -I, E = I, F = I, n = 0, p = g.length; n < p - 1; n++) oa(g, n, ca, ua), _ && (0 === n && (w > D && (C = v, D = w), w < F && (E = v, F = w)), B > D && (C = A, D = B), B < F && (E = A, F = B));
                    if (h && h.length > 0) for (qa(h, i, k, l, m), n = 0, p = h.length; n < p - 1; n++) oa(h, n, ea, va);
                    _ && (ta(C, D, K), ta(E, F, "#0000FF")), !j(V) && i <= V && V <= k && (G = z(la + (k - V) * na / (k - i)) - .5, ra(a, ka, G, ka + ma, G, K)), !j(W) && l <= W && W <= m && (G = z(ka + (W - l) * ma / (m - l)) - .5, ra(a, G, la, G, la + na, K)), a.restore()
                }
            }
            function pa(a, b) {
                var c, d, e = b ? 1 : -1,
                    f = b ? x : y,
                    g = new Z(e * I, e * I),
                    h = a.length;
                for (d = 0; d < h; d++) c = a[d], g.x = f(g.x, c.x), g.y = f(g.y, c.y);
                return g
            }
            function qa(a, b, c, d) {
                return c / d * (b - a) + a
            }
            function ra(a, b, c, d, e, f, g) {
                var h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x;
                if (g) {
                    for (h = B(A(d - b, 2) + A(e - c, 2)), i = 0, j = 6, k = 2, l = 4, m = [], b <= d ? (n = b, o = d, p = b, q = c) : (n = d, o = b, p = d, q = e), r = (e - c) / (d - b), s = c - r * b, m.push(new Z(p, q)), t = [j, l, k, l]; i < h;) for (u = 0, v = t.length; u < v; u++) i += t[u], i <= h && (p = qa(n, o, i, h), q = r * p + s, m.push(new Z(p, q)));
                    for (w = 0, x = m.length; w < x - 1; w += 2) aa(a, m[w].x, m[w].y, m[w + 1].x, m[w + 1].y, f)
                } else aa(a, b, c, d, e, f)
            }
            function sa(a) {
                var b, c, d, e = [],
                    f = a.length;
                if (f > 0) if (b = a[0].length, f < b) {
                    if (f >= 2) for (c = 0; c < b; c++) e.push(new Z(a[0][c], a[1][c]))
                } else if (b >= 2) for (d = 0; d < f; d++) e.push(new Z(a[d][0], a[d][1]));
                return e
            }
            function ta(a, b, c, d, e, f) {
                var g, h, i, k, m, n, o, p, q, r, s = b.measure,
                    u = b.target,
                    v = b.maxi,
                    w = b.good,
                    x = b.bad,
                    y = b.forecast,
                    A = b.tickUnit,
                    B = b.colorScheme,
                    C = b.vertical,
                    D = 5;

                function E(b, g, h, j, l) {
                    var m, n, o;
                    a.fillStyle = b, m = i, n = k * (g / h), n > k && (n = k), o = C ? new $(c + e * j, m - n, e * l, n) : new $(m, d + f * j, n, f * l), a.fillRect(o.x, o.y, o.width, o.height)
                }
                if (!(j(v) || v < 0)) {
                    if (s = j(s) || s < 0 ? 0 : s, w = j(w) || w < 0 ? 0 : w, x = j(x) || x < 0 ? 0 : x, u = j(u) ? 0 : u, y = j(y) ? 0 : y, A = j(A) ? 0 : A, B = j(B) ? "#A0A0A0" : B, g = "#252525", s > v && (s = v, g = K), w > v && (w = v, g = K), x > v && (x = v, g = K), u > v && (u = 0, g = K), y > v && (y = v, g = K), h = da(c, d, e, f, D, f - 2 * D, C), i = h.left, k = h.width, a.save(), E(l(B, 1.66), 1, 1, .2, .6), E(l(B, 1.33), w, v, .2, .6), E(B, x, v, .2, .6), E(g, s, v, .375, .25), y > 0 && (m = i, n = k * (y / v), n > k && (n = k), ba(a, C, c + .5 * e, m, c + .5 * e, m - n, m, d + .5 * f, m + n, d + .5 * f, "#3690BF", 3)), u > 0 && (o = z(i - (C ? 1 : -1) * k * (u / v)) - .5, ba(a, C, c + .2 * e, o, c + .8 * e, o, o, d + .2 * f, o, d + .8 * f, K, 1)), A > 0) for (p = t(v / A), r = 0; r <= p; r++) q = z(i - (C ? 1 : -1) * (k / v * A) * r) - .5, ba(a, C, c, q, c + .05 * e, q, q, d + f, q, d + .95 * f, L, 1);
                    a.restore()
                }
            }
            function ua(a, b, c, d, e, f) {
                var g, h, i, k, l, m, n, o, p, q, r, s, t, u, v, w, A, B, C, D, E, F, G = b.spreadData,
                    H = b.showAverage,
                    I = b.scaleStart,
                    J = b.scaleEnd,
                    M = b.style,
                    N = b.colorScheme,
                    O = b.vertical,
                    P = 5,
                    Q = G.length;
                if (!(Q <= 0)) {
                    for (g = G[0].key, h = G[Q - 1].key, I = j(I) ? g : I, J = j(J) ? h : J, M = j(M) ? 4 : M, N = j(N) ? L : N, i = da(c, d, e, f, P, f - 2 * P, O), k = i.left, l = i.width, m = i.top, n = i.height, ia(a, c, d, e, f), a.beginPath(), a.strokeStyle = N, a.fillStyle = N, a.lineWidth = 2, q = _(G, !1), s = 0, t = G.length; s < t; s++) if (u = G[s], v = u.key, w = u.value, o = k + (O ? -1 : 1) * l * (v - I) / (J - I), O ? (o = x(o, k), o = y(o, k - l)) : (o = y(o, k), o = x(o, k + l)), o = z(o), 1 === M) r = w / 2 * n / q, r = r < .5 ? .5 : r, A = m + n / 2 - r, B = m + n / 2 + r, ba(a, O, A, o, B, o, o, A, o, B);
                    else if (4 === M) r = w * n / q, r = r < 1 ? 1 : r, ba(a, O, m, o, m + r, o, o, m + n, o, m + n - r);
                    else if (6 === M) ba(a, O, m, o, m + n, o, o, m, o, m + n);
                    else for (C = 2, D = 1; D <= w; D++) {
                            switch (M) {
                                case 2:
                                    p = m + n / 2 - P - (w / 2 - D) * n / q;
                                    break;
                                case 3:
                                    E = va(w, n, C + 1, u.randomNumbers), p = m + n - P - E[D - 1];
                                    break;
                                case 5:
                                default:
                                    p = m + n - D * n / q
                            }
                            p = z(p), a.beginPath(), a.fillRect(O ? p : o, O ? o : p, C, C)
                        }
                    H && (F = wa(G), o = k - (O ? 1 : -1) * l * (F - I) / (J - I), ba(a, O, m - P, o, m + n + P, o, o, m - P, o, m + n + P, K)), a.restore()
                }
            }
            function va(a, b, c, d) {
                for (var e, f = [], g = y(100, 10 * a), h = 0, i = [], j = 0; f.length < a;) e = t(d[j++] * b), (h > g || xa(e, i)) && (f.push(e), i.push([e - c, e + c])), h++;
                return f
            }
            function wa(a) {
                var b, c, d, e = 0,
                    f = 0;
                for (b = 0, c = a.length; b < c; b++) d = a[b], f += d.value, e += d.key * d.value;
                return 0 === f ? 0 : e / f
            }
            function xa(a, b) {
                var c, d, e;
                for (c = 0, d = b.length; c < d; c++) if (e = b[c], e[0] <= a && a <= e[1]) return !1;
                return !0
            }
            function ya(a, b, c, d, e, f, g) {
                var h, i, k, m, n, o, p, q, t, u, v, w, x, y, A, B, C, D, E, F = b.points,
                    H = b.colorRange,
                    I = b.labelRange,
                    J = b.maximum,
                    M = b.targetRed,
                    N = b.targetGreen,
                    O = b.targetBlue,
                    S = b.targetYellow,
                    T = b.color,
                    V = b.highlightPosition,
                    W = b.vertical,
                    Z = b.textOrientation,
                    $ = b.textSize,
                    _ = 5;

                function ba(b, c, d) {
                    var e, f;
                    c !== r && c !== s && (c = c > J ? J : c, d && !d(c) || (c = c < 0 ? 0 : c, f = c / J * o, W ? (e = z(n - f) - .5, aa(a, p, e, p + q, e, b)) : (e = z(n + f) - .5, aa(a, e, p, e, p + q, b))))
                }
                if (!(j(F) || (h = F.length) <= 0)) {
                    if (T = j(T) ? L : T, j(H) || H.length !== h || za(H)) for (H = [], i = 0; i < h; i++) H.push(l(T, 1 + i / h));
                    for (k = ea(F, function(a) {
                        return a > 0
                    }), J = j(J) || J < k ? k : J, Z = j(Z) ? 0 : Z, $ = j($) || $ <= 0 ? 10 : $, $ = G($) ? $ : $ * g.zoomFactor, m = da(c, d, e, f, _, f - 2 * _, W), n = m.left, o = m.width, p = m.top, q = m.height, a.save(), t = n, B = 0, C = h; B < C; B++) A = F[B], A <= 0 || (u = A / J * o, W ? (v = c + .15 * e, x = .7 * e, w = t - u, y = u) : (v = t, x = u, w = d + .15 * f, y = .7 * f), D = B + 1 === V ? K : H[B], a.save(), a.fillStyle = D, a.fillRect(v, w, x, y), E = I && I[B], E && (a.save(), a.fillStyle = ca(D), a.textBaseline = X, a.textAlign = U, a.font = $ + Y, a.rect(v, w, x, y), a.clip(), 1 === Z ? (a.translate(v + x / 2, w), a.rotate(Math.PI / 2), a.fillText(E, y / 2, 0)) : a.fillText(E, v + x / 2, w + y / 2), a.restore()), t += (W ? -1 : 1) * u, a.restore());
                    ba(R, M, function(a) {
                        return a > 0
                    }), ba(Q, N), ba(P, O), ba("yellow", S), a.restore()
                }
            }
            function za(a) {
                for (var b = 0, c = a.length; b < c; b++) if (j(a[b])) return !0;
                return !1
            }
            function Aa(a, b, c, d, e, f) {
                aa(a, Da(b), Da(c), Da(d), Da(e), j(f) ? O : f, 1)
            }
            function Ba(a, b, c, d, e) {
                var f, g, h, i, j, k = .4 * d;
                switch (b = Da(b), c = Da(c), a.beginPath(), a.moveTo(b, c), f = k / 2, g = B(3) * k / 2, h = k / B(3), e) {
                    case 0:
                        i = [-f, 0, f], j = [g, h, g];
                        break;
                    case 2:
                        i = [-f, 0, f], j = [-g, -h, -g];
                        break;
                    case 3:
                        i = [g, h, g], j = [-f, 0, f];
                        break;
                    case 1:
                        i = [-g, -h, -g], j = [-f, 0, f];
                        break;
                    default:
                        i = [], j = []
                }
                i.forEach(function(d, e) {
                    a.lineTo(Da(b + d), Da(c + j[e]))
                }), a.lineTo(b, c), a.closePath(), a.fillStyle = N, a.fill()
            }
            function Ca(a, b, c, d, e, f, g) {
                var h, i, k, l, m, n, o, p, q, r, s, t, u = c.value,
                    v = c.colorScheme,
                    w = 5,
                    x = 5,
                    y = .7,
                    z = !1;
                u = H(u), G(u) || (u > 1 ? (u = 1, z = !0) : u < -1 && (u = -1, z = !0), v = j(v) ? "grey" : v, b.save(), 0 === a ? (o = f - 2 * w, p = g * y, u >= 0 ? (z && (h = new Z(d + w + o - x, e + g / 2)), i = new $(d + w, e + g * (1 - y) / 2, o * u, p), k = new Z(d + w, e + 1), l = new Z(d + w, e + g), m = 1) : (q = C(o * u), z && (h = new Z(d + w + x, e + g / 2)), i = new $(d + f - w - q, e + g * (1 - y) / 2, q, p), k = new Z(d + f - w, e + 1), l = new Z(d + f - w, e + g), m = 3), n = g) : 1 === a && (r = g - 2 * w, s = f * y, u >= 0 ? (t = r * u, i = new $(d + (1 - y) / 2 * f, e + g - w - t, s, t), z && (h = new Z(d + f / 2, e + g - w - t + x), m = 0), k = new Z(d + 1, e + g - w), l = new Z(d + f, e + g - w)) : (u = C(u), i = new $(d + (1 - y) / 2 * f, e + w, s, r * u), z && (h = new Z(d + f / 2, e + w + r - x), m = 2), k = new Z(d + 1, e + w), l = new Z(d + f, e + w)), n = f), b.beginPath(), i && (ga(b, i.x, i.y, i.width, i.height, v), ia(b, i.x, i.y, i.width, i.height)), h && Ba(b, h.x, h.y, n, m), b.restore(), k && Aa(b, k.x, k.y, l.x, l.y), b.restore())
            }
            function Da(a) {
                return z(a) - .5
            }
            function Ea(a, b, c, d, e, f) {
                Ca(0, a, b, c, d, e, f)
            }
            function Fa(a, b, c, d, e, f) {
                Ca(1, a, b, c, d, e, f)
            }
            function Ga(a, b, c, d, e, f, g) {
                var h, i, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, D, E, F = b.variance,
                    I = b.reference,
                    L = b.mini,
                    M = b.maxi,
                    N = b.mark,
                    P = b.tickUnit,
                    Z = b.legend,
                    $ = b.colorPositive,
                    _ = b.colorNegative,
                    aa = b.vertical,
                    ba = .5,
                    da = .5 - ba / 2,
                    ea = 5,
                    fa = K,
                    ja = J,
                    ka = 13 * g.zoomFactor;
                F = H(F);

                function la(b, g, i, j, k, l, o, q, r, s, t, u, x, y) {
                    var z, A, C, D, E, F;
                    aa ? (z = c + da * e, A = 0 === g ? v - w : v, C = e * ba, D = w, ga(a, z, A, C, D, b)) : (z = 0 === g ? v : v - w, A = d + da * f, C = w, D = f * ba, ga(a, z, A, C, D, b)), p && (ia(a, z, A, C, D), aa ? Ba(a, c + e / 2, h + i, n, k) : Ba(a, h + j, d + f / 2, n, l), a.restore()), Z && (F = 0, p && (F = .4 * n * B(3) / 2 + ea + 2), a.save(), a.beginPath(), a.font = ka + Y, a.fillStyle = O, aa ? (a.textAlign = U, E = ka + w + o, ma(E, y, b, q, r, z, A, C, D, aa), a.fillText(m, c + e / 2, v + x * (w - F))) : (a.textBaseline = X, E = a.measureText(m).width + w + s, ma(E, y, b, t, u, z, A, C, D, aa), a.fillText(m, v + x * (F - w), d + f / 2)), a.restore())
                }
                function ma(b, c, d, e, f, g, h, i, j, k) {
                    k ? a.textBaseline = e : a.textAlign = e, b > 0 && c < w && (a.rect(g, h, i, j), a.clip(), k ? a.textBaseline = f : a.textAlign = f, a.fillStyle = ca(d))
                }
                function na(b, c, d, e, f, g, h, i, j, k) {
                    aa ? Aa(a, b, c, d, e, j) : Aa(a, f, g, h, i, k)
                }
                if (!(G(F) || (_ = j(_) ? R : _, $ = j($) ? Q : $, P = j(P) ? 0 : P, M = j(M) ? 1 : M, L = j(L) ? -1 : L, o = !j(I), o || (I = 0), aa ? (h = d + f - ea, i = f - 2 * ea, k = e - 4 * ea, l = -1) : (h = c + ea, i = e - 2 * ea, k = f - 4 * ea, l = 1), Z && (q = H(b.variance), G(q) || (r = "" + q, s = r.substr(r.indexOf(".") + 1).length, m = s >= 2 ? (100 * q).toFixed(s - 2) + "%" : (100 * q).toFixed(0) + "%")), F > M && (F = M, p = !0), F < L && (F = L, p = !0), I = ha(I, M, L), p && (n = ha(k, 60, 15)), t = C(M - L), u = i / t, v = h + l * C(L - I) * u, w = C(F - I) * u, w > C(t) * u && (w = C(t + L) * u), x = h + l * i, aa && v < x || !aa && v > x))) {
                    if (ia(a, c, d, e, f), F > I ? la($, 0, ea - i, i - ea, 0, 1, d - v, W, V, v - c - e, S, T, -1, C(M - F) * u) : (w > C(t) * u && (w = C(t + L) * u, v = h), la(_, 1, -ea, ea, 2, 3, v - d - f, V, W, c - v, T, S, 1, C(L - F) * u)), o && (y = h + l * (Math.abs(L - I) * u), na(c, y, c + e, y, y, d, y, d + f)), P > 0) for (a.beginPath(), z = t / P, A = 0; A <= z; A++) D = h + i / z * A * l, na(c, D, c + .1 * e, D, D, d + .9 * f, D, d + f, ja, ja);
                    !j(N) && L <= N && N <= M && (a.beginPath(), E = h - (aa ? 1 : -1) * C(L - N) * u, na(c, E, c + .33 * e, E, E, d + .66 * f, E, d + f, fa, fa), a.fill()), a.restore()
                }
            }
            b = "7ns", d = "5ns", e = "tukey", f = "bowley", g = "sigma3";

            function Ha(a, c, h, i, k, l) {
                var m, n, o, p, q, s, t, u, v, w, z, A, B, D, E, I, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, aa, ca, ha, ja, ka, la, ma, na, oa, pa, qa, ra, sa, ta, ua, va, wa, xa, ya, za, Aa = c.points,
                    Ba = c.boxPlotClass,
                    Ca = c.showAverage,
                    Da = c.scaleStart,
                    Ea = c.scaleEnd,
                    Fa = c.acceptableStart,
                    Ga = c.acceptableEnd,
                    Ha = c.style,
                    Ia = c.colorScheme,
                    Ja = c.vertical,
                    Ka = 5,
                    La = _(Aa, !1),
                    Ma = _(Aa, !0);

                function Na(b, c, d, e, f, g, h, i, j) {
                    Ja ? ga(a, c, d, e, f, b) : ga(a, g, h, i, j, b)
                }
                function Oa(b, c, d, e) {
                    ba(a, Ja, U + V * b, d, U + V * c, d, d, U + V * b, d, U + V * c, e)
                }
                if (!(j(Aa) || (Aa = fa(Aa), Aa.length <= 0))) {
                    for (Ba = Ba === r || typeof Ba !== F ? d : Ba.toLocaleLowerCase(), Ba !== d && Ba !== b && Ba !== e && Ba !== f && Ba !== g && (Ba = d), Da = H(Da), Da = G(Da) ? Ma : Da, Ea = H(Ea), Ea = G(Ea) ? La : Ea, Fa = H(Fa), Ga = H(Ga), Ia !== r && typeof Ia === F || (Ia = "#D2D2D2"), (Ha === r || 0 !== Ha && 1 !== Ha) && (Ha = 0), m = K, Da > Ma && (Ia = m, Da = Ma), Ea < La && (Ia = m, Ea = La), ia(a, h, i, k, l), a.lineWidth = 2, n = da(h, i, k, l, Ka, l - 2 * Ka, Ja), o = n.left, p = n.width, q = n.top, s = n.height, t = Ja ? -1 : 1, u = c.perc02, v = c.perc09, w = c.perc10, z = c.perc90, A = c.perc91, B = c.perc98, D = c.q1, E = c.q3, I = E - D, M = Ma, N = La, O = 1.5 * I, P = 1.5 * I, Q = c.stDev, R = ea(Aa) / y(1, Aa.length), S = 0, T = 0, U = q + .1 * s, V = .7 * s, W = C(Ea - Da), X = 0, Y = Aa.length; X < Y; X++) Z = Aa[X], Z < D && Z >= D - 1.5 * I && Z - (D - 1.5 * I) < O && (O = Z - (D - 1.5 * I), M = Z), Z > E && Z <= E + 1.5 * I && E + 1.5 * I - Z < P && (P = E + 1.5 * I - Z, N = Z), $ = !1, S = o + t * (p * ((Z - Da) / W)), Ba === e && (Z <= D - 1.5 * I || Z >= E + 1.5 * I) && ($ = !0, T = Z <= D - 3 * I || Z >= E + 3 * I ? 0 : 1), Ba === b && (Z <= u || Z >= B) && ($ = !0, T = 1), Ba === g && (Z <= R - 2 * Q || Z >= R + 2 * Q) && ($ = !0, T = Z <= R - 3 * Q || Z >= R + 3 * Q ? 0 : 1), aa = J, $ && (1 === Ha ? 1 === T ? Oa(.2, .8, S, aa) : Oa(.3, .7, S, aa) : (ca = .1 * s, ca < 2 && (ca = 2), a.beginPath(), a.strokeStyle = aa, ha = q + .45 * s, ja = S, a.arc(Ja ? ha : ja, Ja ? ja : ha, ca / 2, 0, 2 * Math.PI), a.stroke()));
                    switch ((Da > Fa || Ea < Ga) && (Ia = "#C0FF00"), Fa = y(Da, Fa), Ga = x(Ea, Ga), Fa > Ga ? Ia = m : Fa < Ga && (ka = o + t * (p * ((Fa - Da) / W)), la = o + t * (p * ((Ga - Da) / W)), ma = q + .9 * s, ba(a, Ja, ma, ka, ma, la, ka, ma, la, ma, L)), na = o + t * (p * ((D - Da) / W)), oa = C(o + t * (p * ((E - Da) / W)) - na), pa = c.median, qa = o + t * (p * ((pa - Da) / W)), Ba) {
                        case b:
                            ta = u, ua = B;
                            break;
                        case e:
                            ta = M, ua = N;
                            break;
                        case g:
                            na = o + t * (p * ((R - Q - Da) / W)), oa = C(o + t * (p * ((R + Q - Da) / W)) - na), qa = o + t * (p * ((R - Da) / W)), va = R - 2 * Q, ta = va > Da ? va : Ma, va = R + 2 * Q, ua = va < Ea ? va : La, Ca = !1;
                            break;
                        case d:
                        case f:
                        default:
                            ta = Ma, ua = La
                    }
                    ra = o + t * (p * ((ta - Da) / W)), sa = o + t * (p * ((ua - Da) / W)), wa = J, 1 === Ha ? Na("#F2F2F2", U, sa, V, ra - sa, ra, U, sa - ra, V) : (xa = q + .45 * s, ba(a, Ja, xa, ra, xa, sa, ra, xa, sa, xa, wa)), Na(Ia, U, na - oa, V, oa, na, U, oa, V), ba(a, Ja, U, qa, U + V, qa, qa, U, qa, U + V, wa), 0 === Ha && (ba(a, Ja, U + .3 * V, sa, U + .7 * V, sa, sa, U + .3 * V, sa, U + .7 * V, wa), ba(a, Ja, U + .3 * V, ra, U + .7 * V, ra, ra, U + .3 * V, ra, U + .7 * V, wa)), Ba !== b && Ba !== f || (Ba === b ? (ta = v, ua = A) : (ta = w, ua = z), ya = o + t * (p * ((ta - Da) / W)), za = o + t * (p * ((ua - Da) / W)), Oa(.3, .7, za, wa), Oa(.3, .7, ya, wa)), Ca && (S = o + t * (p * ((R - Da) / W)), Oa(.2, .8, S, m)), a.restore()
                }
            }
            function Ia(a, b, c, d, e) {
                b = z(b), c = z(c), d = z(d), e = z(e), b === d && (d -= .5, b = d), c === e && (e -= .5, c = e), a.moveTo(b, c), a.lineTo(d, e)
            }
            function Ja(a, b, c, d, e, f, g, h, i, j, k) {
                a.beginPath(), a.strokeStyle = c, b ? Ia(a, d, e, f, g) : Ia(a, h, i, j, k), a.stroke()
            }
            function Ka(a, b, c, d, e) {
                a.rect(b, c, d, e), a.clip()
            }
            function La(a, b, c, d, e, f) {
                var g, h, i, j, k, l, m, n, o = f.labelText,
                    p = f.fontSize,
                    q = f.startBox,
                    r = f.endBox,
                    s = f.boxColor,
                    t = f.isInRightOrTopOfBox;
                a.save(), a.beginPath(), a.font = p + Y, j = 1, m = O, f.vertical ? (k = U, t ? (g = p + r - (q - c), g > 0 && q - r - c < r ? (l = V, m = ca(s), i = q - r + j, Ka(a, b, q - r, d, r)) : (l = W, i = q - r - j)) : (g = p - (c + e - q), g > 0 && c + e - q < r ? (Ka(a, b, q - r, d, r), l = W, m = ca(s), i = q - j) : (l = V, i = q + j)), a.textAlign = k, a.textBaseline = l, a.fillStyle = m, a.fillText(o, b + d / 2, i)) : (l = X, n = a.measureText(o), t ? (g = n.width + r - (b + d - q), g > 0 && b + d - (q + r) < r ? (Ka(a, q, c, r, e), k = T, m = ca(s), h = q + r - j) : (k = S, h = q + r + j)) : (g = n.width - (q - b), g > 0 && q - b < r ? (Ka(a, q, c, r, e), h = q + j, k = S, m = ca(s)) : (k = T, h = q - j)), a.textAlign = k, a.textBaseline = l, a.fillStyle = m, a.fillText(o, h, c + e / 2)), a.restore()
            }
            function Ma(a, b, c, d, e, f, g) {
                var h, i, k, m, n, o, p, q, s, t, u, v, w, z, A, B, D, E, I, J, K, L, N, P, Q, R, S, T, U, V, W, X, Y, Z, $ = b.points,
                    _ = b.labels,
                    aa = b.pointIndex,
                    ba = b.minimum,
                    ca = b.maximum,
                    ea = b.colorPositive,
                    fa = b.colorNegative,
                    ha = b.vertical,
                    ja = 5,
                    ka = 13 * g.zoomFactor;
                if (!(j($) || (h = $.length, h <= 0 || (aa = parseInt(aa), G(aa) || aa <= 0 || aa > h)))) {
                    for (_ = j(_) ? [] : _, ea !== r && typeof ea === F || (ea = "#8CBF64"), fa !== r && typeof fa === F || (fa = "#D6604D"), i = ea, k = l(ea, 1.3), m = fa, n = l(fa, 1.3), o = 1, p = 0, q = 0, s = 0, t = 0, u = [], v = 0, w = 0, z = $.length; w < z; w++) A = $[w], u[o] = [], B = u[o], G(A) ? (B[0] = 0, B[1] = p, B[2] = 0) : (B[0] = C(A), p = A + p, B[1] = A > 0 ? q : p, B[2] = A), B[3] = o, s = x(q, s), t = y(q, t), o === h && (v = s < 0 ? -s : 0, B[1] = A > 0 ? 0 : A), q = A + q, o++;
                    p -= A, ba = H(ba), G(ba) || ba > 0 || ba > s ? (D = s, ba = s) : (D = ba, v = -ba), ca = H(ca), G(ca) || ca < 0 || ca < t ? E = t : (E = ca, v = -ba), I = da(c, d, e, f, ja, f - 2 * ja, ha), J = I.left, K = I.width, L = I.top, N = I.height, P = ha ? -1 : 1, Q = E - D, R = K / Q, ia(a, c, d, e, f), a.beginPath(), a.lineWidth = 1, S = u[aa], T = S[2], U = J + P * (S[1] + v) * R, V = S[0] * R, W = 1 === aa || aa === h ? T >= 0 ? i : m : T >= 0 ? k : n, ha ? ga(a, L, U - V, N, V, W) : ga(a, U, L, V, N, W), ha ? (1 !== aa && (aa !== h ? Ja(a, T > 0, M, c, U, L + N, U, c, U - V, L + N, U - V) : (X = J - (p + v) * R, Ja(a, !0, M, c, X, L + N, X))), aa !== h && Ja(a, T > 0, M, L, U - V, c + e, U - V, L, U, c + e, U)) : (1 !== aa && (aa !== h ? Ja(a, T > 0, M, U, d, U, L + N, U + V, d, U + V, L + N) : (Y = J + (p + v) * R, Ja(a, !0, M, Y, d, Y, L + N))), aa !== h && Ja(a, T > 0, M, U + V, L, U + V, d + f, U, L, U, d + f)), Z = _[aa - 1], _.length > 0 && !j(Z) && "" !== Z && La(a, c, d, e, f, {
                        labelText: Z,
                        vertical: ha,
                        isInRightOrTopOfBox: T > 0,
                        fontSize: ka,
                        startBox: U,
                        endBox: V,
                        boxColor: W
                    }), Ja(a, ha, O, c, J - v * R, c + e, J - v * R, J + v * R, d, J + v * R, d + f), a.restore()
                }
            }
            function Na(a, b, c, d, e, f, g) {
                var h, i, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, A, B, C, E, I, L, M = b.points,
                    N = b.pointIndex,
                    O = b.colorRange,
                    P = b.target,
                    Q = b.target2,
                    R = b.highlightPosition,
                    S = b.label,
                    T = b.vertical,
                    U = 5,
                    V = 13 * g.zoomFactor;

                function W(a) {
                    return a = H(a), a = G(a) ? 0 : a, a = a < 0 ? 0 : a, a = a > 1 ? 1 : a
                }
                if (!(j(M) || (h = M.length, h <= 0 || (N = parseInt(N), G(N) || N <= 0 || N > h)))) {
                    for (O = j(O) ? [] : O, P = W(P), Q = W(Q), S = parseInt(S), S = G(S) ? 0 : S, i = 1, k = 0, l = [], m = 0, n = M.length; m < n; m++) o = M[m], l[i] = [], p = l[i], o < 0 || G(o) || j(o) ? (p[0] = 1 === i ? 0 : k, p[1] = 0) : (k += o, p[0] = 1 === i ? 0 : k - o, p[1] = o), i++;
                    q = da(c, d, e, f, U, f - 2 * U, T), r = q.left, s = q.width, t = q.top, u = q.height, v = T ? -1 : 1, w = s / k, ia(a, c, d, e, f), a.beginPath(), a.lineWidth = 1, x = l[N], y = x[1], A = r + v * x[0] * w, B = x[1] * w, C = N === R ? K : 0 === O.length || typeof O[N - 1] !== F ? J : O[N - 1], T ? ga(a, t, A - B, u, B, C) : ga(a, A, t, B, u, C), 1 === S ? E = (x[0] + y) / k * 1e3 : 2 === S && (E = y / k * 1e3), I = z(E) / 10 + "%", 1 !== S && 2 !== S || "" === I || La(a, c, d, e, f, {
                        labelText: I,
                        vertical: T,
                        isInRightOrTopOfBox: (x[0] + x[1]) * w < s / 2,
                        fontSize: V,
                        startBox: A,
                        endBox: B,
                        boxColor: C
                    }), L = ["#8CBF64", "#EE5D5D"], [P, Q].forEach(function(b, g) {
                        var h = D(r + v * s * b);
                        Ja(a, T, L[g], c, h, c + e, h, h, d, h, d + f)
                    }), a.restore()
                }
            }
            function Oa(a, b) {
                switch (b) {
                    case 2:
                        var c = a % 4 === 0 && a % 100 !== 0 || a % 400 === 0;
                        return c ? 29 : 28;
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        return 30;
                    default:
                        return 31
                }
            }
            function Pa(a, b, c) {
                var d, e, f, g, h, i;
                return a < 0 && (a = 0), a > 1 && (a = 1), d = m(b), e = m(c), f = d.a * (1 - a) + e.a * a, g = d.r * (1 - a) + e.r * a, h = d.g * (1 - a) + e.g * a, i = d.b * (1 - a) + e.b * a, "rgba(" + parseInt(g, 10) + "," + parseInt(h, 10) + "," + parseInt(i, 10) + "," + H(f / 255) + ")"
            }
            function Qa(a, b, c) {
                return a === b && a === c ? 1 : a <= b ? 0 : a >= c ? 1 : (a - b) / (c - b)
            }
            function Ra(a, b, c, d, e, f) {
                var g = (f + e) / 2;
                return e <= d && d <= g ? Pa(Qa(d, e, g), a, b) : Pa(Qa(d, g, f), b, c)
            }
            function Sa(a) {
                var b = I,
                    c = -I;
                return a.forEach(function(a) {
                    a !== r && a !== s && (b > a && (b = a), c < a && (c = a))
                }), {
                    min: b,
                    max: c
                }
            }
            function Ta(a, b, c, d, e, f, g) {
                var h, i, j;
                d ? a.forEach(function(a, e) {
                    0 !== a && a !== r && a !== s && (b[c + e] = d[e] || b[c + e])
                }) : (h = Sa(a), i = h.min, j = h.max, a.forEach(function(a, d) {
                    0 !== a && a !== r && a !== s && (b[c + d] = Ra(e, f, g, a, i, j))
                }))
            }
            function Ua(a, b, c, d, e, f) {
                var g, h, i, j, k = b.year,
                    l = b.month,
                    m = b.values,
                    n = b.emptyColor || "lightgray",
                    o = b.startColor,
                    p = b.middleColor,
                    q = b.endColor,
                    r = "white",
                    s = 6,
                    t = 7,
                    u = 2,
                    v = (e - (s + 1) * u) / s,
                    w = (f - (t + 1) * u) / t,
                    x = [],
                    y = new Date(k, l - 1, 1).getDay();
                for (g = 0; g < s * t; g++) g < y ? x[g] = r : g < y + Oa(k, l) ? x[g] = n : x[g] = r;
                for (Ta(m, x, y, b.colors, o, p, q), a.save(), a.rect(c, d, e, f), a.clip(), a.beginPath(), h = 0, i = 0; i < s; i++) for (j = 0; j < t; j++) a.fillStyle = x[h++], a.fillRect(c + i * v + (i + 1) * u, d + j * w + (j + 1) * u, v, w);
                a.restore()
            }
            function Va(a) {
                var b, c = a.getFullYear(),
                    d = a.getMonth(),
                    e = a.getDate();
                for (b = 1; b < d + 1; b++) e += Oa(c, b);
                return e
            }
            function Wa(a, b, c, d, e, f, g) {
                var h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F = b.year,
                    G = b.values,
                    H = b.emptyColor || "lightgray",
                    I = b.startColor,
                    J = b.middleColor,
                    K = b.endColor,
                    L = "white",
                    M = 7,
                    N = parseInt(366 / M) + 2,
                    O = [],
                    P = new Date(F, 0, 1).getDay(),
                    Q = Va(new Date(F, 11, 31));
                for (h = 0; h < N * M; h++) h < P ? O[h] = L : h < P + Q ? O[h] = H : O[h] = L;
                for (Ta(G, O, P, b.colors, I, J, K), a.save(), a.rect(c, d, e, f), a.clip(), i = g.zoomFactor, j = 15 * i, k = c + j, l = d, m = e - j, n = f, a.save(), a.translate(c + j / 2, l + n), a.rotate(-Math.PI / 2), a.font = 13 * i + Y, a.fillStyle = "black", a.textBaseline = "middle", a.textAlign = "center", a.fillText(F, n / 2, 0), a.restore(), o = 2, p = (m - (N + 1) * o) / N, q = (n - (M + 1) * o) / M, r = 0, v = [], t = 0; t < N; t++) for (s = 0; s < M; s++) u = {
                    x: k + t * p + (t + 1) * o,
                    y: l + s * q + (s + 1) * o,
                    w: p,
                    h: q
                }, v[r] = u, a.fillStyle = O[r++], a.fillRect(u.x, u.y, u.w, u.h);
                for (w = [], x = {}, y = 0; y < 12; y++) x[y] = Va(new Date(F, y, 1)) - 1 + P;
                for (z = x[11] + Oa(F, 12) - 1, r = 0, t = 0; t < N; t++) for (s = 0; s < M; s++) P <= r && r < P + Q && (A = new Date(F, 0, r - P + 1), B = A.getMonth(), C = x[B], u = v[r], C <= r && r < 7 + C && w.push({
                    x1: u.x,
                    y1: u.y - o / 2,
                    x2: u.x,
                    y2: u.y + u.h + o / 2
                }), r !== C && 0 !== A.getDay() || w.push({
                    x1: u.x - o / 2,
                    y1: u.y,
                    x2: u.x + u.w + o / 2 + (r === C ? o : 0),
                    y2: u.y
                }), z - 7 < r && r <= z && w.push({
                    x1: u.x + u.w,
                    y1: u.y - o / 2,
                    x2: u.x + u.w,
                    y2: u.y + u.h + o / 2
                }), r !== z && 6 !== A.getDay() || w.push({
                    x1: u.x - o / 2 - (r === z ? o : 0),
                    y1: u.y + u.h,
                    x2: u.x + u.w + o / 2,
                    y2: u.y + u.h
                })), r++;
                for (a.strokeStyle = "black", a.lineWidth = 2, D = 0; D < w.length; D++) E = w[D], a.beginPath(), a.moveTo(E.x1, E.y1), a.lineTo(E.x2, E.y2), a.stroke();
                a.restore()
            }
            h = function() {
                function a() {
                    var a = this;
                    a.Wd = 2, a.Xd = I, a.Yd = -I, a.Zd = I, a.$d = -I
                }
                a.prototype = {
                    constructor: a,
                    paint: function(a, b, c, d, e, f) {
                        var g, h, i, j = this;
                        j.options = b, j.setting = b.settings, g = b.values, h = b.dateValues, i = b.zoomFactor, a.save(), a.rect(c, d, e, f), a.clip(), a.beginPath(), 0 === b.sparklineType && j._d(a, c, d, e, f, g, h, i), j.ae(a, c, d, e, f, g, h, i), j.be(a, c, d, e, f, g, h, i), a.restore()
                    },
                    ce: function(a) {
                        return 0 === this.options.sparklineType ? 3 + this.de(a) + 1 : 3
                    },
                    ee: function(a, b) {
                        var c, d, e, f, g, h, i, j, k, l = this.fe;
                        if (l) return l;
                        if (l = this.fe = [], c = a.length, this.options.displayDateAxis) {
                            for (f = b.length, g = x(c, f), h = [], g > 0 && (h = b.slice(0, g)), h.sort(function(a, b) {
                                return a === b ? 0 : (a === q && (a = 0), b === q && (b = 0), a - b)
                            }), i = h.length, d = 0; d < i; d++) if (j = h[d], typeof j !== E && j !== r) {
                                for (k = o(b, j); n.Bb(l, k);) k = o(b, j, k + 1);
                                isNaN(j) || (e = a[k], e !== s && e !== r && isNaN(e) && e !== q || l.push(k))
                            }
                        } else for (d = 0; d < c; d++) e = a[d], typeof e !== E && e !== r && isNaN(e) && e !== q || l.push(d);
                        return l
                    },
                    ge: function(a, b) {
                        var c = b[a];
                        return typeof c === E || c === r ? 1 === this.setting.options.displayEmptyCellsAs && (c = 0) : c === q && (c = 0), c
                    },
                    _d: function(a, b, c, d, e, f, g, h) {
                        var i, j, k, l, m, n, o, p, q, s, t, u, v, w, x, y = this,
                            z = y.ee(f, g),
                            A = z.length - 1;
                        for (A < 0 && (A = 0), l = y.setting.options, m = y.linePos = [], t = l.displayEmptyCellsAs, i = 0; i < A; i++) if (n = y.ge(z[i], f), typeof n !== E && n !== r) {
                            if (p = i + 1, o = y.ge(z[p], f), typeof o === E || o === r) if (1 === t) o = 0;
                            else if (2 === t) for (p = i + 2; p <= A; p++) if (u = f[z[p]], typeof u !== E && u !== r) {
                                o = u;
                                break
                            }
                            typeof o !== E && o !== r ? (q = y.he(z[i], {
                                Width: d,
                                Height: e
                            }, f, g, h), s = y.he(z[p], {
                                Width: d,
                                Height: e
                            }, f, g, h), v = q.Width / 2, j = {
                                X: q.X + v,
                                Y: q.Y + v
                            }, k = {
                                X: s.X + v,
                                Y: s.Y + v
                            }, m[i] = {
                                P1: j,
                                P2: k
                            }) : i++
                        }
                        if (w = m.length, w > 0) for (a.strokeStyle = y.options.getColor(l.seriesColor), a.lineCap = "round", a.lineWidth = y.de(h), i = 0; i < w; i++) x = m[i], x && (a.beginPath(), j = x.P1, k = x.P2, a.moveTo(b + j.X, c + j.Y), a.lineTo(b + k.X, c + k.Y), a.stroke(), a.closePath())
                    },
                    ie: function(a, b, c) {
                        var d, e, f, g = this,
                            h = g.options,
                            i = g.setting.options,
                            j = r,
                            k = g.ge(a, b),
                            l = g.ee(b, c),
                            m = l.length,
                            n = h.getColor.bind(g);
                        return typeof k !== E && k !== r && (g.Zd !== I && g.$d !== -I || g.je(b), k === g.Zd && i.showLow && (j = n(i.lowMarkerColor)), k !== g.$d || !i.showHigh || typeof j !== E && j !== r || (j = n(i.highMarkerColor)), typeof j !== E && j !== r || (h.displayDateAxis ? (d = o(l, a), 0 === d && i.showFirst && (j = n(i.firstMarkerColor))) : 0 === a && i.showFirst && (j = n(i.firstMarkerColor))), typeof j !== E && j !== r || (h.displayDateAxis ? (e = o(l, a), e === m - 1 && i.showLast && (j = n(i.lastMarkerColor))) : a === m - 1 && i.showLast && (j = n(i.lastMarkerColor))), k < 0 && i.showNegative && (typeof j === E || j === r) && (j = n(i.negativeColor)), typeof j !== E && j !== r || (f = h.sparklineType, 0 === f ? i.showMarkers && (j = n(i.markersColor)) : 1 === f ? j = n(i.seriesColor) : 2 === f && (j = n(i.seriesColor)))), j === s || j === r ? "Transparent" : j
                    },
                    ae: function(a, b, c, d, e, f, g, h) {
                        var i, j, k, l, m, n, o, p, q, r, s = this,
                            v = {
                                Width: d,
                                Height: e
                            },
                            w = s.ee(f, g),
                            x = w.length,
                            y = s.options.sparklineType;
                        for (r = 0; r < x; r++) i = w[r], j = s.ie(i, f, g), k = s.he(i, v, f, g, h), a.fillStyle !== j && (a.fillStyle = j), 0 === y ? (a.save(), l = b + k.X + k.Width / 2, m = c + k.Y + k.Height / 2, a.translate(l, m), a.rotate(45 * u / 180), a.fillRect(0 - k.Width / 2, 0 - k.Height / 2, k.Width, k.Height), a.restore()) : (n = b + k.X + k.Width / 4, n = t(n), o = c + k.Y, p = k.Width / 2, q = k.Height, a.fillRect(n, o, p, q))
                    },
                    be: function(a, b, c, d, e, f, g, h) {
                        var i, j, k, l, m, n, o, p = this,
                            q = p.setting && p.setting.options;
                        q && q.displayXAxis && p.ke(f, g) && (i = {
                            Width: d,
                            Height: e
                        }, j = p.ce(h), k = i.Width - p.ce(h), l = t(p.le(i, f, h)) + .5, m = l, n = p.options.getColor(q.axisColor), o = h, o < 1 && (o = 1), a.strokeStyle !== n && (a.strokeStyle = n), a.lineWidth !== o && (a.lineWidth = o), a.beginPath(), a.moveTo(b + j, c + l), a.lineTo(b + k, c + m), a.stroke())
                    },
                    me: function(a) {
                        var b, c = this.ne(a);
                        return c === -I || (b = this.oe(a), b === I) || (c === b || c * b <= 0)
                    },
                    ke: function(a, b) {
                        var c, d, e, f, g, h = this.me(a);
                        if (2 !== this.options.sparklineType) return h;
                        if (c = this.ee(a, b), d = c.length, !h && d > 0) for (g = 0; g < d; g++) if (e = c[g], f = a[e], typeof f !== E && f !== r) return !0;
                        return h
                    },
                    pe: function(a, b) {
                        var c = this.Xd;
                        return (isNaN(c) || c === I) && this.qe(a, b), this.Xd
                    },
                    re: function(a, b) {
                        var c = this.Yd;
                        return (isNaN(c) || c === -I) && this.qe(a, b), this.Yd
                    },
                    qe: function(a, b) {
                        var c, d, e, f, g = this,
                            h = new Date(0, 0, 0),
                            i = I,
                            j = g.ee(a, b),
                            k = j.length;
                        for (f = 0; f < k; f++) c = j[f], d = b[c], isNaN(d) || (e = g.ge(c, a), e !== r && typeof e === E || isNaN(e) || typeof d !== E && d !== r && (d > h && (h = d), d < i && (i = d)));
                        g.Yd = h, g.Xd = i
                    },
                    se: function(a, b, c, d) {
                        var e, f, g, h, i, j, k, l, m = this,
                            n = m.pe(b, c),
                            o = m.re(b, c),
                            p = [],
                            q = m.ee(b, c),
                            r = q.length;
                        for (e = 0; e < r; e++) g = q[e], f = c[g], f && !isNaN(f) && p.push(f);
                        if (p.sort(function(a, b) {
                                return a - b
                            }), h = p.length, h > 1 && n !== o) {
                            for (i = I, j = 0, e = 1; e < h; e++) k = p[e], f = k - p[e - 1], f < i && f > 0 && (i = f), j += f;
                            return l = (a.Width - m.ce(d) - m.ce(d)) * i / j / 2, l < 2 && (l = 2), l
                        }
                        return (a.Width - m.ce(d) - m.ce(d)) / 2
                    },
                    te: function(a, b, c, d) {
                        var e, f = this;
                        return f.options.displayDateAxis ? f.se(a, b, c, d) : (e = f.ee(b, c).length, (a.Width - f.ce(d) - f.ce(d)) / e)
                    },
                    ue: function(a, b, c, d, e) {
                        var f, g, h, i, j, k, l, m, n = this,
                            p = n.ce(e);
                        return n.options.displayDateAxis ? (f = n.te(a, c, d, e), g = n.re(c, d), h = n.pe(c, d), g === h ? p + f / 2 : (i = d[b]) ? (j = a.Width - p - n.ce(e), j -= f, k = g - h, p + t((i - h) / k * j)) : 0) : (f = n.te(a, c, d, e), l = o(n.ee(c, d), b), m = p + f * l, t(m))
                    },
                    ve: function(a, b) {
                        var c, d = this,
                            e = a.Width - d.ce(b) - d.ce(b);
                        return e = y(e, 0), c = a.Height - d.ce(b) - d.ce(b), c = y(c, 0), {
                            Width: e,
                            Height: c
                        }
                    },
                    je: function(a) {
                        var b, c, d = this,
                            e = a.length;
                        for (c = 0; c < e; c++) b = a[c], typeof b !== E && b !== r && ("number" != typeof b && (b = 0), b < d.Zd && (d.Zd = b), b > d.$d && (d.$d = b))
                    },
                    ne: function(a) {
                        var b, c, d = this;
                        return d.$d !== -I && d.$d || d.je(a), b = d.setting.options, c = b.maxAxisType, 0 === c ? d.$d : 1 === c ? b.groupMaxValue : 2 === c ? b.manualMax : d.$d
                    },
                    oe: function(a) {
                        var b, c, d = this;
                        return d.Zd !== I && d.Zd || d.je(a), b = d.setting.options, c = b.minAxisType, 0 === c ? d.Zd : 1 === c ? b.groupMinValue : 2 === c ? b.manualMin : void 0
                    },
                    we: function(a, b, c, d) {
                        var e = this.ve(a, d),
                            f = this.ne(c),
                            g = this.oe(c),
                            h = f - g,
                            i, j;
                        if (f === g) {
                            if (0 === f) return 0;
                            h = C(f)
                        }
                        return i = c[b], i || (i = 0), j = e.Height / h, i * j
                    },
                    xe: function(a, b, c, d) {
                        var e, f, g, h = this,
                            i = h.options.sparklineType;
                        if (0 === i) return h.we(a, b, c, d);
                        if (1 === i) {
                            if (e = c[b], 1 === h.setting.options.displayEmptyCellsAs && (typeof e === E || e === r)) return 0;
                            if (f = h.we(a, b, c, d), f > -h.Wd && f < h.Wd) {
                                if (e > 0) return f + h.Wd;
                                if (e < 0) return f - h.Wd
                            }
                            return f
                        }
                        return 2 === i ? (e = c[b], typeof e === E || e === r || 0 === e || isNaN(e) ? 0 : (g = h.ve(a, d), e >= 0 ? g.Height / 2 : -g.Height / 2)) : void 0
                    },
                    ye: function(a, b, c) {
                        var d, e, f = this,
                            g = f.ve(a, c),
                            h = f.ne(b),
                            i = f.oe(b);
                        if (h === -I || i === I) return a.Height / 2;
                        if (d = h - i, h === i) {
                            if (0 === h) return a.Height / 2;
                            d = h, h < 0 && (h = 0)
                        }
                        return e = g.Height / d, f.ce(c) + h * e
                    },
                    le: function(a, b, c) {
                        return 2 === this.options.sparklineType ? a.Height / 2 : this.ye(a, b, c)
                    },
                    ze: function(a, b, c, d) {
                        var e, f, g, h = this,
                            i = h.ve(a, d),
                            j = h.ne(c),
                            k = h.oe(c),
                            l = j - k;
                        if (j === k) {
                            if (0 === j) return 0;
                            l = j
                        }
                        return e = i.Height / l, f = h.ge(b, c), typeof f !== E && f !== r || (f = 0), j !== k && j * k > 0 ? (g = 0, g = f >= 0 ? (f - k) * e : (f - j) * e) : f * e
                    },
                    Ae: function(a, b, c, d) {
                        var e, f, g, h = this,
                            i = h.options.sparklineType;
                        return 0 === i ? h.ze(a, b, c, d) : 1 === i ? (e = h.ze(a, b, c, d), f = h.Wd, e > -f && e < f && (g = h.ge(b, c), typeof g !== E && g !== r || (g = 0), 0 !== g) ? g > 0 ? e + f : e - f : e) : 2 === i ? h.xe(a, b, c, d) : void 0
                    },
                    Be: function(a, c, d, e, f) {
                        var g, h, i, j, k, l, m, n, o, p = this,
                            q = p.te(c, d, e, f),
                            r = p.ue(c, a, d, e, f);
                        return q < 0 && (q = 0), q = t(q), q % 2 === 1 && (q += 1), g = p.xe(c, a, d, f), h = p.le(c, d, f), i = p.ne(d), j = p.oe(d), k = 0, i < 0 && j < 0 ? k = y(p.ce(f), h) : (k = h, g >= 0 && (k = h - g)), l = p.Ae(c, a, d, f), m = new b(r, k, q, C(l)), 0 !== g && (n = p.ce(f), m.Y < n && m.Bottom < n + 1 ? m.Height = t(m.Height + 1) : (o = c.Height - p.ce(f), m.Bottom > o && m.Y > o - 1 && (m.Y = o - l, m.Height = l))), m
                    },
                    de: function(a) {
                        var b = this.setting.options.lineWeight * a;
                        return b < 1 && (b = 1), b
                    },
                    he: function(a, c, d, e, f) {
                        var g, h, i, j, k, l = this,
                            m = l.de(f);
                        return m++, m < 2 && (m = 2), g = l.Be(a, c, d, e, f), 0 === l.options.sparklineType && (g.X = g.X + (g.Width - m) / 2, h = l.ge(a, d), typeof h !== E && h !== r ? (h >= 0 ? g.Y -= m / 2 : g.Y = g.Bottom - m / 2, g.Width = m, g.Height = m) : (g.Width = 0, g.Height = 0)), l.setting.options.rightToLeft && (i = g.X, j = c.Width - i, k = j - g.Width, g = new b(k, g.Y, g.Width, g.Height)), g
                    }
                };

                function b(a, b, c, d) {
                    var e = this;
                    e.X = a, e.Y = b, e.Width = c, e.Height = d, e.Left = e.X, e.Right = e.Left + e.Width, e.Top = e.Y, e.Bottom = e.Y + e.Height
                }
                return a
            }(), p.SparklineRender = h, p.SparklineExRenders = {
                PIESPARKLINE: ja,
                AREASPARKLINE: ma,
                SCATTERSPARKLINE: oa,
                BULLETSPARKLINE: ta,
                SPREADSPARKLINE: ua,
                STACKEDSPARKLINE: ya,
                HBARSPARKLINE: Ea,
                VBARSPARKLINE: Fa,
                VARISPARKLINE: Ga,
                BOXPLOTSPARKLINE: Ha,
                CASCADESPARKLINE: Ma,
                PARETOSPARKLINE: Na,
                MONTHSPARKLINE: Ua,
                YEARSPARKLINE: Wa
            }, a.exports = p
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            a.exports = c(23)
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e = void 0,
                f = null,
                g = "number",
                h = "string",
                i = "boolean",
                j = c(2),
                k = j.l,
                l = k.Ra,
                m = {
                    all: 0,
                    byCurrentColumn: 1,
                    byOtherColumns: 2
                },
                n = {
                    average: 1,
                    count: 2,
                    counta: 3,
                    max: 4,
                    min: 5,
                    product: 6,
                    stdev: 7,
                    stdevp: 8,
                    sum: 9,
                    vars: 10,
                    varp: 11
                };

            function o(a) {
                return a && a.text !== e
            }
            b = function() {
                function a() {}
                return a.quickSort = function(a) {
                    var b, c = C(a),
                        d = [];
                    for (b = 0; b < c; b++) d[b] = {
                        index: b,
                        value: a[b]
                    };
                    return this.quickSortImp(d)
                }, a.quickSortImp = function(a) {
                    var b, c, d, e, f, g, h, i;
                    if (C(a) <= 1) return a;
                    for (b = this, c = Math.floor(C(a) / 2), d = a[c], e = [], f = [], g = [], h = 0; h < C(a); h++) i = b.sortCompare(a[h].value, d.value), i < 0 ? e.push(a[h]) : i > 0 ? f.push(a[h]) : g.push(a[h]);
                    return b.quickSortImp(e).concat(g, b.quickSortImp(f))
                }, a.isEquals = function(a, b) {
                    return !(!A(a) && "" !== a || !A(b) && "" !== b) || (a instanceof Date && b instanceof Date ? a.valueOf() === b.valueOf() : B(a) === h && B(b) === h ? a.toLowerCase() === b.toLowerCase() : a === b)
                }, a.Ra = l, a.isGreaterThan = function(a, b) {
                    var c = B(a),
                        d = B(b);
                    return c === i ? a = a ? 1 : 0 : a instanceof Date && (a = this.Ra(a)), d === i ? b = b ? 1 : 0 : b instanceof Date && (b = this.Ra(b)), c === d || c !== g && d !== g ? c === h && d === h ? a.toLowerCase() > b.toLowerCase() : a > b : B(b) === g
                }, a.sortCompare = function(a, b) {
                    var c = this,
                        d = 0,
                        e = A(a) || "" === a || B(a) === g && isNaN(a),
                        f = A(b) || "" === b || B(b) === g && isNaN(b);
                    return d = e && f ? 0 : e ? 1 : f ? -1 : c.isEquals(a, b) ? 0 : c.isGreaterThan(a, b) ? 1 : -1
                }, a
            }();

            function p(a, c) {
                var d, j;
                if (a === f || a === e) return !1;
                if (B(a) === g) c.value = a;
                else if (B(a) === i) c.value = a ? 1 : 0;
                else if (a instanceof Date) c.value = b.Ra(a);
                else {
                    if (B(a) !== h) return !1;
                    if (a = a.trim(), 0 === C(a)) return !1;
                    if (d = !1, "%" === a.charAt(C(a) - 1) && (d = !0, a = a.substr(0, C(a) - 1)), C(a) >= 2 && "0" === a[0] && "x" === a[1]) return !1;
                    if (j = (+a).valueOf(), isNaN(j) || !isFinite(j)) {
                        if (j = new Date(a), isNaN(j)) return !1;
                        j = b.Ra(j)
                    }
                    d && (j /= 100), c.value = j
                }
                return !0
            }
            function q(a) {
                var b, c, d, e, f, g, h, i, j, k, l, m, n, o = a.Ce;
                for (o || (a.Ee = [], a.Ie = []), b = o ? a.De : a.Ee, c = a.Fe, d = a.Ge, e = o ? a.He : a.Ie, f = a.Je, g = a.Ke, h = a.Le, i = C(a.data), k = 0; k < i; k++) {
                    for (l = !1, m = 0; m < C(f) && (n = f[m], o && n === a.Me || (d[n] ? (j = a.getExclusiveRowIndex(a.columnNames[n], k), l = !d[n][j]) : c[n] && (l = !c[n][k]), !l)); m++);
                    !l && o && (g ? (j = a.getExclusiveRowIndex(a.columnNames[n], k), l = !g[j]) : h && (l = !h[k])), l || (b[k] = !0)
                }
                for (m = 0; m < C(b); m++) b[m] && e.push(m)
            }
            function r(a) {
                var b, c, d = a.Ne = {};
                for (a.Oe = [], a.Pe = [], a.Qe = [], a.Re = [], b = a.columnNames, c = 0; c < C(b); c++) d[(b[c] + "").toUpperCase()] = c
            }
            function s(a, c) {
                var d, e, f, g, h, i, j, k, l = a.Oe,
                    m = a.Pe,
                    n = a.Se,
                    p = a.Qe,
                    q = a.Re,
                    r = a.data,
                    s = q[c] = [];
                for (a._e = [], l[c] = [], m[c] = [], n[c] = {}, p[c] = [], d = 0; d < C(r); d++) if (e = r[d][c], f = o(e) ? e.text.trim() : e, l[c].push(f), void 0 === s[d]) for (g = [d], m[c].push(f), p[c].push(g), h = C(p[c]) - 1, n[c][f] = h, s[d] = h, i = d + 1; i < C(r); i++) j = r[i][c], k = o(j) ? j.text.trim() : j, void 0 === s[i] && b.isEquals(k, f) && (g.push(i), s[i] = h)
            }
            function t(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n, p, q = a.Te,
                    r = a.getColumnIndex(b),
                    s = [];
                if (!r) return s;
                if (d = a.Ce ? a.Ue : a.Ve[r], e = a.Ee, !d) return s;
                for (q[r] || a.We(r), f = [], g = q[r], h = 0; h < C(g); h++) i = a.data[h][r], j = o(i) ? i.value : i, f[g[h]] = j;
                for (k = a.af[r], h = 0; h < C(d); h++) {
                    for (l = d[h], m = !1, n = a.Xe(f, l), p = n.start; p <= n.end; p++) if (e[k[p]]) {
                        m = !0;
                        break
                    }
                    m !== c && s.push(l)
                }
                return s
            }
            function u(a, b) {
                var c, d, e, f, g = [],
                    h = a.getColumnIndex(b);
                if (h >= 0) {
                    for (c = C(a.getData(b)), d = a.Ce ? a.De : a.Ee, e = 0; e < c; e++) d[e] || (f = a.getExclusiveRowIndex(b, e), g.indexOf(f) === -1 && g.push(f));
                    return g
                }
            }
            function v(a, b) {
                var c, d, e, f, g, h, i, j = [],
                    k = a.getColumnIndex(b);
                if (k >= 0) for (c = a.Ke || a.Le, d = a.Ge[k] || a.Fe[k], e = a.Ce && k === a.Me ? c : d, f = !! a.Fe[k], g = C(f ? a.getData(b) : a.getExclusiveData(b)), h = 0; h < g; h++) e && !e[h] && (i = f ? a.getExclusiveRowIndex(b, h) : h, j.indexOf(i) === -1 && j.push(i));
                return j
            }
            function w(a, b) {
                var c, d, e, f, g, h, i, j, k, l = [],
                    m = a.columnNames;
                for (c = 0, d = C(m); c < d; c++) if (m[c] !== b) for (e = v(a, m[c]), f = 0; f < C(e); f++) for (g = a.getRowIndexes(m[c], e[f]), h = 0; h < C(g); h++) l.indexOf(g[h]) === -1 && l.push(g[h]);
                for (c = 0, d = C(a.data); c < d; c++) l.indexOf(c) !== -1 ? l.splice(l.indexOf(c), 1) : l.push(c);
                for (i = C(a.getExclusiveData(b)), j = [], c = 0; c < i; c++) j.push(c);
                for (c = 0, d = C(l); c < d; c++) k = a.getExclusiveRowIndex(b, l[c]), j.indexOf(k) !== -1 && j.splice(j.indexOf(k), 1);
                return j
            }
            function x(a, b, c, d) {
                var e, f, g, h, i, j, k, l, m = a.getColumnIndex(b),
                    n = a.Te;
                for (n[m] || a.We(m), e = [], f = n[m], g = 0; g < C(f); g++) h = a.data[g][m], i = o(h) ? h.value : h, e[f[g]] = i;
                for (j = {}, g = 0; g < C(c); g++) for (k = a.Xe(e, c[g]), l = 0; l < C(f); l++) f[l] >= k.start && f[l] <= k.end && (j[l] = !0);
                d ? (a.Le = j, a.Ue = c) : (a.Ve[m] = c, a.Fe[m] = j, delete a.Ge[m], delete a.Ye[m]), q(a)
            }
            function y(a, b, c, d) {
                var e, f = a.getColumnIndex(b),
                    g = {};
                for (e = 0; e < C(c); e++) g[c[e]] = !0;
                d ? a.Ke = g : (a.Ge[f] = g, a.Ye[f] = c, delete a.Ve[f], delete a.Fe[f]), q(a)
            }
            function z(a, b) {
                a.Ce = !1, a.Ke = {}, a.He = [], a.De = [], a.Le = [], b && a.onFiltered()
            }
            d = function() {
                function a(a, b) {
                    var c, d = this;
                    for (d.Ne = {}, d.Oe = [], d.Pe = [], d.Se = [], d.Qe = [], d.Re = [], d.Ge = [], d.Ye = [], d.Fe = [], d.Ve = [], d.Ee = [], d.Ie = [], d.Je = [], d.He = [], d.De = [], d.Ce = !1, d.Ze = [], d.$e = 0, d._e = [], d.af = [], d.Te = [], d.bf(a, b), c = 0; c < C(d.data); c++) d.Ee[c] = !0, d.Ie.push(c)
                }
                return a.prototype = {
                    constructor: a,
                    inPreview: function() {
                        return this.Ce
                    },
                    bf: function(a, b) {
                        var c = this;
                        c.data = a, c.columnNames = b, r(c)
                    },
                    onDataChanged: function(a) {
                        var b, c, d, e, f, g, h, i, j, k, l = this,
                            m = Array(C(l.columnNames)),
                            n = l.Ye,
                            p = l.Pe,
                            r = l.Ge,
                            t = l.Oe;
                        for (b = 0; b < C(a); b++) c = a[b], d = c.data, e = c.row, f = l.getColumnIndex(c.columnName), l.data[e][f] = d, g = o(d) ? d.text : d, t[f] && (t[f][e] = g), m[f] = !0;
                        for (h = 0; h < C(m); h++) if (m[h]) {
                            for (i = n[h], n[h] = i ? [] : void 0, r[h] = i ? {} : void 0, j = [], b = 0; i && b < C(i); b++) j.push(p[h][i[b]]);
                            for (s(l, h), b = 0; b < C(j); b++) k = l.Se[h][j[b]], n[h].push(k), r[h][k] = !0
                        }
                        q(l), l.cf(a, "onDataChanged")
                    },
                    cf: function() {
                        var a, b, c, d = arguments,
                            e = d[C(d) - 1];
                        for (d.length -= 1, a = this.Ze || [], b = 0; b < C(a); b++) c = a[b], c[e] && c[e].apply(c, d)
                    },
                    onColumnNameChanged: function(a, b) {
                        var c = this,
                            d = c.Ne,
                            e = c.getColumnIndex(a);
                        e < 0 || (c.columnNames[e] = b, delete d[a.toUpperCase()], d[b.toUpperCase()] = e, c.cf(a, b, "onColumnNameChanged"))
                    },
                    onRowsAdded: function(a, c, d) {
                        var g, h, i, j, k, l, m, n, o, p, q, r, s, t = this,
                            u = C(t.columnNames),
                            v = t.data,
                            w = t.Oe,
                            x = t.Pe,
                            y = t.Qe,
                            z = t.Re,
                            A = t.Ge,
                            B = t.Ye,
                            D = t.Ee,
                            E = t.Ie,
                            F = t.Je;
                        for (t._e = [], g = 0; g < c; g++) v.splice(a, 0, Array(u));
                        for (h = 0; h < u; h++) {
                            for (g = 0; g < c; g++) w[h] && w[h].splice(a, 0, e);
                            if (i = x[h]) {
                                for (k = f, l = 0; l < C(i); l++) {
                                    for (m = y[h][l], n = 0; n < C(m); n++) m[n] >= a && (m[n] += c);
                                    b.isEquals(i[l], f) && (k = m, j = l)
                                }
                                for (k || (k = [], i.push(f), j = C(i) - 1, t.Se[h][f] = j, y[h].push(k), A[h] && F.indexOf(h) === -1 && (A[h][j] = !0, B[h].push(j))), o = a; o < a + c; o++) k.push(o);
                                for (p = a; p < a + c; p++) z[h].splice(p, 0, j)
                            }
                        }
                        for (q = !0, g = 0; g < C(F); g++) h = F[g], r = z[h][a], A[h][r] !== !0 && (q = !1);
                        for (g = 0; g < C(E); g++) E[g] >= a && (E[g] += c);
                        for (p = C(v) - 1; p >= a + c; p--) D[p] = D[p - c];
                        for (s = C(F) > 0, p = a; p < a + c; p++) q && E.push(p), D[p] = !s;
                        d || t.cf(a, c, !0, "onRowsChanged")
                    },
                    onRowsRemoved: function(a, b) {
                        this.df(a, b, !0)
                    },
                    df: function(a, b, c) {
                        var d, e, f, g, h, i, j, k, l = this,
                            m = l.Ye,
                            n = l.Pe,
                            o = l.Ge,
                            p = l.data,
                            r = C(l.columnNames),
                            t = l.Oe;
                        for (p.splice(a, b), d = 0; d < r; d++) {
                            if (t[d] && t[d].splice(a, b), e = m[d], f = [], e && c) {
                                for (g = 0; g < C(e); g++) {
                                    for (h = l.getRowIndexes(l.columnNames[d], e[g]), i = !0, j = 0; j < C(h); j++) if (h[j] < a || h[j] >= a + b) {
                                        i = !1;
                                        break
                                    }
                                    i || f.push(n[d][e[g]])
                                }
                                m[d] = [], o[d] = {}
                            }
                            if (s(l, d), e && c) for (g = 0; g < C(f); g++) k = l.Se[d][f[g]], m[d].push(k), o[d][k] = !0
                        }
                        c && q(l), l.cf(a, b, !1, "onRowsChanged")
                    },
                    onColumnsRemoved: function(a, b) {
                        var c, d, e, f, g, h, i, j, k = this,
                            l = k.data,
                            m = [],
                            n = k.Je,
                            o = a + b;
                        for (c = a; c < o; c++) d = k.columnNames[c], e = c, m.push(d), n.indexOf(e) !== -1 && k.doUnfilter(d);
                        for (f = k.Ge || k.Fe, g = k.Ye || k.Ve, h = k.Ne, c = 0; c < C(l); c++) l[c].splice(a, b);
                        k._e = [], k.columnNames.splice(a, b), k.Oe.splice(a, b), k.Pe.splice(a, b), k.Se.splice(a, b), k.Qe.splice(a, b), k.Re.splice(a, b), f.splice(a, b), g.splice(a, b);
                        for (i in h) h[i] >= a + b && (h[i] -= b);
                        for (c = 0; c < C(m); c++) d = m[c], delete h[d.toUpperCase()], a = k.getColumnIndex(d), j = n.indexOf(a), j !== -1 && n.splice(j, 1), k.cf(m[c], "onColumnRemoved")
                    },
                    ef: function() {
                        return this._e
                    },
                    ff: function() {
                        return this.af
                    },
                    We: function(a) {
                        var c, d, e, f, g, h, i, j, k, l, m, n = this,
                            p = n.data;
                        for (n.Oe[a] || s(n, a), c = C(p), d = [], e = 0; e < c; e++) f = p[e][a], g = o(f) ? f.value : f, d.push(g);
                        for (h = b.quickSort(d), i = n._e[a] = [], j = n.af[a] = [], k = n.Te[a] = [], l = 0; l < C(h); l++) m = h[l], i.push(m.value), j.push(m.index), k[m.index] = l
                    },
                    getColumnIndex: function(a) {
                        var b = this.Ne[a.toUpperCase()];
                        return void 0 === b ? -1 : b
                    },
                    getFilteredRowIndexes: function() {
                        var a = this;
                        return a.Ce ? a.He : a.Ie
                    },
                    getFilteredOutRowIndexes: function() {
                        var a, b = this,
                            c = C(b.data),
                            d = b.Ce ? b.De : b.Ee,
                            e = [];
                        for (a = 0; a < c; a++) d[a] || e.push(a);
                        return e
                    },
                    getData: function(a, b) {
                        var c, d, e, f, g, h, i, j = this,
                            k = j.Oe,
                            l = j.getColumnIndex(a);
                        if (l >= 0) {
                            if (b) {
                                for (j._e[l] || j.We(l), c = k[l], d = j._e[l], e = j.Xe(d, b), f = e.start, g = e.end, h = [], i = f; i <= g; i++) h.push(c[j.af[l][i]]);
                                return h
                            }
                            return k[l] || s(j, l), k[l]
                        }
                        return []
                    },
                    aggregateData: function(a, b, c) {
                        var d, f, g, h, i, j, k, l, m, n = this,
                            o = n.getColumnIndex(a);
                        return o < 0 ? e : (n._e[o] || n.We(o), g = n._e[o], h = C(g), i = n.Xe(g, c), d = i.start, f = i.end, 5 === b ? d >= h ? e : g[d] : 4 === b ? f < 0 ? e : g[f] : 3 === b ? f < d ? 0 : f - d + 1 : (j = n.Qka(g, b, d, f), k = j.data1, l = j.data2, m = j.data3, 1 === b ? k /= l : 7 === b || 10 === b ? (k = (m * l - k * k) / (m * (m - 1)), k = 7 === b ? Math.sqrt(k) : k) : 8 !== b && 11 !== b || (k = (m * l - k * k) / (m * m), k = 8 === b ? Math.sqrt(k) : k), k))
                    },
                    Qka: function(a, b, c, d) {
                        var g, h, i, j = 6 === b ? 1 : 0,
                            k = 0,
                            l = 0;
                        for (g = c; g <= d; g++) h = a[g], h === f && h === e || (i = {
                            value: f
                        }, p(h, i) && (h = i.value, 1 === b ? (j += h, k++) : 2 === b ? j++ : 9 === b ? j += h : 6 === b ? j *= h : 7 !== b && 8 !== b && 10 !== b && 11 !== b || (j += h, k += h * h, l++)));
                        return {
                            data1: j,
                            data2: k,
                            data3: l
                        }
                    },
                    Xe: function(a, c) {
                        var d, f, g, h, i = C(a);
                        if (c) {
                            if (c.min === -(1 / 0)) d = 0;
                            else for (g = 0; g < i; g++) if (h = a[g], b.isEquals(c.min, h) || b.isGreaterThan(h, c.min)) {
                                d = g;
                                break
                            }
                            if (d === e && (d = i), f === 1 / 0) f = i - 1;
                            else {
                                for (g = i - 1; g >= 0; g--) if (h = a[g], b.isEquals(h, c.max) || b.isGreaterThan(c.max, h)) {
                                    f = g;
                                    break
                                }
                                f === e && (f = -1)
                            }
                        } else d = 0, f = i - 1;
                        return {
                            start: d,
                            end: f
                        }
                    },
                    getExclusiveData: function(a) {
                        var b = this,
                            c = b.Pe,
                            d = b.getColumnIndex(a);
                        return d >= 0 ? (c[d] || s(b, d), c[d]) : []
                    },
                    getRowIndexes: function(a, b) {
                        var c = this,
                            d = c.getColumnIndex(a);
                        return d >= 0 ? (c.Re[d] || s(c, d), c.Qe[d][b]) : []
                    },
                    getExclusiveRowIndex: function(a, b) {
                        var c = this,
                            d = c.Re,
                            e = c.getColumnIndex(a);
                        return e >= 0 ? (d[e] || s(c, e), d[e][b]) : -1
                    },
                    getFilteredIndexes: function(a) {
                        var b = [],
                            c = {};
                        return this.gf(a, b, c), b
                    },
                    gf: function(a, b, c) {
                        var d, e, f, g = this,
                            h = g.Ce ? g.He : g.Ie;
                        for (d = 0; d < C(h); d++) e = h[d], f = g.getExclusiveRowIndex(a, e), c[f] ? c[f]++ : (c[f] = 1, b.push(f))
                    },
                    getFilteredRanges: function(a) {
                        return t(this, a, !1)
                    },
                    getFilteredOutRanges: function(a) {
                        return t(this, a, !0)
                    },
                    getFilteredOutIndexes: function(a, b) {
                        var c = this;
                        return 0 === b ? u(c, a) : 1 === b ? v(c, a) : w(c, a)
                    },
                    attachListener: function(a) {
                        this.Ze.push(a)
                    },
                    detachListener: function(a) {
                        var b, c = this.Ze || [];
                        for (b = 0; b < C(c); b++) if (c[b] === a) {
                            c.splice(b, 1);
                            break
                        }
                    },
                    suspendFilteredEvents: function() {
                        this.$e++
                    },
                    resumeFilteredEvents: function() {
                        var a = this;
                        a.$e--, 0 === a.$e && a.onFiltered()
                    },
                    doFilter: function(a, b, c) {
                        this.hf(a, b, c), this.onFiltered()
                    },
                    hf: function(a, b, c) {
                        var d = this,
                            e = d.Je,
                            f = d.getColumnIndex(a);
                        f < 0 || (c ? (d.Ce = !0, d.Me = f) : d.Ce && z(d, !1), e.indexOf(f) < 0 && e.push(f), b.ranges ? x(d, a, b.ranges, c) : y(d, a, b.exclusiveRowIndexes, c))
                    },
                    clearPreview: function() {
                        z(this, !0)
                    },
                    doUnfilter: function(a) {
                        this.
                            if (a), this.onFiltered()
                    },
                    if :function(a) {
                        var b, c, d = this;
                        d.Ce && z(d, !1), b = d.getColumnIndex(a), b < 0 || (delete d.Ve[b], delete d.Fe[b], delete d.Ge[b], delete d.Ye[b], q(d), c = d.Je.indexOf(b), c >= 0 && d.Je.splice(c, 1))
                    },
                    onFiltered: function() {
                        var a = this;
                        0 === a.$e && a.cf({
                            rowIndexes: a.getFilteredRowIndexes(),
                            isPreview: a.Ce
                        }, "onFiltered")
                    },
                    getListener: function() {
                        return this.Ze
                    }
                }, a
            }();

            function A(a) {
                return a === f || a === e
            }
            function B(a) {
                return typeof a
            }
            function C(a) {
                return a ? a.length : 0
            }
            a.exports = {
                FilteredOutDataType: m,
                SlicerAggregateType: n,
                GeneralSlicerData: d,
                jf: b
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(25);
            c(27), c(28), c(29), b.SR = {}, b.SR.en = c(30), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, aa, ba, ca, da, ea, fa, ga, ha, ia = c(26),
                ja = {},
                ka = ja.Functions = {},
                la = "number",
                ma = "string",
                na = "boolean",
                oa = "TRUE",
                pa = "FALSE",
                qa = "#NULL!",
                ra = "#DIV/0!",
                sa = "#VALUE!",
                ta = "#REF!",
                ua = "#NAME?",
                va = "#N/A",
                wa = "#NUM!",
                xa = [qa, ra, sa, ta, ua, va, wa],
                ya = [0, 7, 15, 23, 29, 42, 36];
            ja.ErrorList = xa, b = ia.j, d = b.Ca, e = b.Ia, f = ja.BAND_INDEX_CONST = -2147483648, g = ja.MAX_ROW_COUNT = 1048576, h = ja.MAX_COLUMN_COUNT = 16384, i = ia.j.G, j = ia.l, k = ia.u, l = b.Fa;

            function za(a) {
                return a && a.toUpperCase()
            }
            m = function() {
                return ia.C(ja.SR)()
            }, n = ["o", "n", "s", "b", "d"], o = ja.kf = function(a, b, c, d) {
                return {
                    row: a,
                    col: b,
                    rowCount: c,
                    colCount: d
                }
            }, p = null, q = void 0, r = Math.abs, s = Math.min, ja.BangSource = {}, ja.RefErrorSource = {}, ja.supportRowColumnFormula = !1, t = ia.A, u = ia.B, v = function() {
                function a(b) {
                    var c = a.nf(b);
                    if (!c) throw m().Exp_NotSupported;
                    this._error = c.error, this._code = c.code
                }
                return a.prototype.toString = function() {
                    return this._error
                }, a.prototype.clone = function() {
                    return new a(this._error)
                }, a.prototype.toJSON = function() {
                    return {
                        _calcError: this._error,
                        _code: this._code
                    }
                }, a.parse = function(b) {
                    try {
                        return new a(b)
                    } catch (a) {
                        return q
                    }
                }, a.nf = function(a) {
                    var b, c;
                    if (a) for (b = 0; b < xa.length; b++) if (c = xa[b], c === a || c === za(a)) return {
                        error: c,
                        code: ya[b]
                    };
                    return q
                }, a
            }(), ja.CalcError = v, w = ja.Errors = {}, w.Null = new v(qa, 0), w.DivideByZero = new v(ra, 7), x = w.Value = new v(sa, 15), y = w.Reference = new v(ta, 23), z = w.Name = new v(ua, 29), A = w.NotAvailable = new v(va, 42), B = w.Number = new v(wa, 36), C = ja.pf = function(a, b) {
                return {
                    row: a,
                    col: b
                }
            }, D = ja.qf = function(a, b, c, d) {
                return {
                    row: a,
                    col: b,
                    rowCount: c,
                    colCount: d
                }
            }, E = ja.rf = function(a, b, c, d, e, f) {
                var g = new I(1);
                return g.row = c, g.column = d, g.rowRelative = e, g.columnRelative = f, a && (g.source = a), b && (g.endSource = b), g
            }, F = ja.uf = function(a, b, c, d, e, g, h, i, j, k) {
                var l = new I(1),
                    m;
                return l.isFullRow = d === f, l.isFullRow && 0 === c && e === ja.MAX_ROW_COUNT - 1 && (c = e = f), l.isFullColumn = c === f, c > e && (m = c, c = e, e = m, m = h, h = j, j = m), d > g && (m = d, d = g, g = m, m = i, i = k, k = m), l.row = c, l.column = d, l.endRow = e, l.endColumn = g, l.rowRelative = h, l.columnRelative = i, l.endRowRelative = j, l.endColumnRelative = k, a && (l.source = a), b && (l.endSource = b), l
            };

            function Aa(a, b, c, d) {
                return a === -1 && d > 127 || b === -1 && c > 127 || c * d > 127
            }
            G = ja.CalcArray = function(a) {
                this.array = a
            }, G.prototype = {
                getRowCount: function() {
                    return this.array.length
                },
                getColumnCount: function() {
                    return this.array[0].length
                },
                getValue: function(a, b) {
                    var c = this.array;
                    return a.row !== q && (a = a.row, b = a.column), a < 0 || b < 0 || a >= c.length || b >= c[0].length ? x : this.array[a][b]
                },
                getValueByIndex: function(a) {
                    var b = this.getColumnCount(),
                        c = Math.floor(a / b),
                        d = a % b;
                    return this.getValue(c, d)
                },
                toArray: function(a, b, c, d, e) {
                    var f, g, h, i, j = this,
                        k = 1,
                        l = 1,
                        m = [],
                        n = Ha.CalcConvertedError;
                    for (b = b === q || b, k = j.getRowCount(), l = j.getColumnCount(), h = 0; h < k; h++) for (b || (g = [], m.push(g)), i = 0; i < l; i++) {
                        if (f = j.getValue(h, i), c && Ha.vf(f)) return m = [f], m.isError = !0, m;
                        if (f = Ha.wf(f, a, !1, e), d && f === n) return m = [f], m.isError = !0, m;
                        b ? m.push(f) : g.push(f)
                    }
                    return m.rowCount = k, m.colCount = l, m.rangeCount = 1, m
                },
                slice: function(a, b, c, d) {
                    var e, f, g, h = this,
                        i = h.array,
                        j = [];
                    for (a = a < 0 ? 0 : a, b = b < 0 ? 0 : b, c = a + c > h.getRowCount() ? h.getRowCount() - a : c, d = b + d > h.getColumnCount() ? h.getColumnCount() - b : d, f = 0; f < c; f++) for (e = [], j.push(e), g = 0; g < d; g++) e.push(i[f + a][g + b]);
                    return new G(j)
                }
            }, H = ja.CalcReference = function(a, b) {
                var c = this;
                c.xf = a, b ? (c.yf = b, c.zf = b.length) : c.zf = 1
            }, H.prototype = {
                getRangeCount: function() {
                    return this.zf
                },
                getRow: function(a) {
                    return this.yf ? this.yf[a || 0].row : 0
                },
                getColumn: function(a) {
                    return this.yf ? this.yf[a || 0].col : 0
                },
                getRowCount: function(a) {
                    return this.yf ? this.yf[a || 0].rowCount : this.xf.getRowCount()
                },
                getColumnCount: function(a) {
                    return this.yf ? this.yf[a || 0].colCount : this.xf.getColumnCount()
                },
                getValue: function(a, b) {
                    var c, d, e;
                    if (a.row !== q ? (c = a.row, d = a.col) : (c = arguments[1], d = arguments[2], b = arguments[0]), b = b || 0, c >= 0 || d >= 0) {
                        if (e = this.yf, !e) return this.xf.getValue(c, d);
                        if (b < e.length) return this.xf.getValue(c + e[b].row, d + e[b].col)
                    }
                    return y
                },
                getValueByIndex: function(a) {
                    var b = this.getColumnCount(),
                        c = Math.floor(a / b),
                        d = a % b;
                    return this.getValue(c, d)
                },
                isHiddenRow: function(a, b, c) {
                    return this.xf.isHiddenRow(b + this.getRow(a), c)
                },
                isSubtotal: function(a, b, c) {
                    var d, e = this.xf;
                    return 0 === a && b < e.getRowCount() && c < e.getColumnCount() && (d = e.getCalcSourceModel().ATa(b, c), d && 7 === d.type && ("SUBTOTAL" === d.functionName || "AGGREGATE" === d.functionName))
                },
                getSource: function() {
                    return this.xf
                },
                create: function(a) {
                    return new H(this.xf, a)
                },
                toArray: function(a, b, c, d, e, f) {
                    return this.xf.referenceToArray(this, a, b, c, d, e, f)
                }
            }, ja.ExpressionType = {
                unknow: 0,
                reference: 1,
                number: 2,
                string: 3,
                boolean: 4,
                error: 5,
                array: 6,


                function :7,
                name: 8,
                operator: 9,
                parentheses: 10,
                missingArgument: 11,
                expand: 12,
                structReference: 13
            }, I = ja.Expression = function() {
                function a(a) {
                    var b = this;
                    b.type = a, 1 === a && (b.sf = function() {
                        return void 0 === b.endRow || void 0 === b.endColumn
                    }, b.tf = function() {
                        return b.isFullRow && b.isFullColumn ? 3 : b.isFullRow ? 1 : b.isFullColumn ? 2 : 0
                    }, b.getRange = function(a, c) {
                        return J(b, a, c)
                    }, b.offset = function(a, c, d) {
                        if (b.sf()) return E(b.source, b.endSource, b.row + (b.rowRelative || d ? a : 0), b.column + (b.columnRelative || d ? c : 0), b.rowRelative, b.columnRelative);
                        var e = F(b.source, b.endSource, b.row + (b.rowRelative || d ? a : 0), b.column + (b.columnRelative || d ? c : 0), b.endRow + (b.isFullColumn || !b.endRowRelative && !d ? 0 : a), b.endColumn + (b.isFullRow || !b.endColumnRelative && !d ? 0 : c), b.rowRelative, b.columnRelative, b.endRowRelative, b.endColumnRelative);
                        return e.isFullRow = b.isFullRow, e.isFullColumn = b.isFullColumn, e
                    }, b.offset2 = function(a, c, d, e) {
                        var f = F(b.source, b.endSource, b.row + (b.isFullColumn ? 0 : a), b.column + (b.isFullRow ? 0 : c), b.endRow + (b.isFullColumn ? 0 : d), b.endColumn + (b.isFullRow ? 0 : e), b.rowRelative, b.columnRelative, b.endRowRelative, b.endColumnRelative);
                        return f.isFullRow = b.isFullRow, f.isFullColumn = b.isFullColumn, f
                    })
                }
                return a.prototype.offset = function(a, b, c) {
                    var d, e, f, g = this,
                        h = g.type;
                    if (10 === h) return ba(g.value.offset(a, b, c));
                    if (7 === h) {
                        for (d = g.arguments, e = [], f = 0; f < d.length; f++) e.push(d[f].offset(a, b, c));
                        return _(g.
                            function, e)
                    }
                    return 9 === h ? aa(g.operatorType, g.value.offset(a, b, c), g.value2 && g.value2.offset(a, b, c)) : this
                }, a
            }(), J = ja.getRangeForReference = function(a, b, c) {
                var d = {
                        row: -1,
                        col: -1,
                        rowCount: -1,
                        colCount: -1
                    },
                    e, f, i, j;
                return a.isFullRow ? (d.col = -1, d.colCount = -1) : (a.columnRelative ? (i = a.column + c, i = i >= h ? i % h : i) : i = a.column, a.sf() ? (d.col = i, d.colCount = 1) : (a.endColumnRelative ? (j = a.endColumn + c, j = j >= h ? j % h : j) : j = a.endColumn, d.col = i <= j ? i : j, d.colCount = r(j - i) + 1)), a.isFullColumn ? (d.row = -1, d.rowCount = -1) : (a.rowRelative ? (e = a.row + b, e = e >= g ? e % g : e) : e = a.row, a.sf() ? (d.row = e, d.rowCount = 1) : (a.endRowRelative ? (f = a.endRow + b, f = f >= g ? f % g : f) : f = a.endRow, d.row = e <= f ? e : f, d.rowCount = r(f - e) + 1)), d
            }, K = ja.CalcSource = function() {
                function a(b) {
                    this.id = a.sourceId++, this.Af = b, this.Bf = null
                }
                return a.sourceId = 1, a
            }(), K.prototype = {
                getCalcService: function() {
                    return this.Af
                },
                Cf: function() {
                    return this.Af
                },
                setCalcService: function(a) {
                    this.Af = a
                },
                getCalcSourceModel: function() {
                    return this.Bf
                },
                setCalcSourceModel: function(a) {
                    this.Bf = a
                },
                getValue: function(a, b) {
                    return p
                },
                getName: function() {
                    return ""
                },
                setValue: function(a, b) {},
                getReference: function(a) {
                    return new H(this, a)
                },
                getSources: function(a) {
                    return [this]
                },
                referenceToArray: function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l, m, n, o, r, s, t, u = this,
                        v = 1,
                        w = 1,
                        y = [],
                        z = a.getRangeCount();
                    if (0 === z) return y.isError = !0, [];
                    for (m = u.getRowCount(), n = u.getColumnCount(), c = c === q || c, o = 0; o < z; o++) {
                        if (c || (l = [], y.push(l)), v = a.getRowCount(o), 0 === v) return y.isError = !0, [];
                        if (w = a.getColumnCount(o), 0 === w) return y.isError = !0, [];
                        if (i = a.getRow(o), j = a.getColumn(o), i >= m || j >= n) return y = [p], y.rowCount = 1, y.colCount = 1, y.rangeCount = 1, y;
                        for (i + v > m && (v = m - i), j + w > n && (w = n - j), s = 0; s < v; s++) for (g = i + s, c || (r = [], l.push(r)), t = 0; t < w; t++) {
                            if (h = j + t, k = u.getValue(g, h), d && Ha.vf(k)) return y = [k], y.isError = !0, y;
                            if (k = Ha.wf(k, b, !0, f), e && k === Ha.CalcConvertedError) return y = [x], y.isError = !0, y;
                            k === p && f || (c ? y.push(k) : r.push(k))
                        }
                    }
                    return c || 1 !== z || (y = y[0]), y.rowCount = v, y.colCount = w, y.rangeCount = z, y
                },
                getSheetReference: function() {
                    var a = this;
                    return a.Df = a.Df || new H(a), a.Df
                },
                setFormula: function(a, b) {},
                setArrayFormula: function(a, b) {},
                getRowCount: function() {
                    return 1e3
                },
                getColumnCount: function() {
                    return 100
                },
                isHiddenRow: function(a, b) {
                    return !1
                },
                getParserContext: function(a, b, c) {
                    return new ja.ParserContext(this, a, b, c)
                },
                startCalculation: function() {},
                endCalculation: function() {},
                getEvaluatorContext: function(a, b, c) {
                    return new ja.EvaluateContext(this, a, b, c)
                },
                getCustomFunction: function(a) {
                    return p
                },
                getCustomName: function(a) {
                    return p
                },
                refresh: function() {},
                toJSON: function(a, b) {}
            }, L = ja.CalcSourceModel = function() {
                function a(a, b) {
                    var c = this;
                    c.Ef = 0, c.Ff = 0, c.Gf = [], c.dataTable = {}, c.dataTableByName = {}, c.Hf = [], c.If = [], c.Jf = p, c.xf = b, c.Af = a, c.B5 = 0
                }
                return a
            }(), L.prototype = {
                getNode: function(a, b, c) {
                    var d, e = this,
                        f = p;
                    return a >= 0 && b >= 0 ? (d = e.dataTable[a], c && !d && (d = e.dataTable[a] = {}, a > e.Ef && (e.Ef = a)), d && (f = d[b], c && !f && (f = d[b] = {}, b > e.Ff && (e.Ff = b)))) : a === -1 && b >= 0 ? (f = e.If[b], c && !f && (f = e.If[b] = {}, b > e.Ff && (e.Ff = b))) : a >= 0 && b === -1 ? (f = e.Hf[a], c && !f && (f = e.Hf[a] = {}, b > e.Ff && (e.Ff = b))) : a === -1 && b === -1 && (f = e.Jf, c && !f && (f = e.Jf = {})), f
                },
                getNodeByName: function(a, b) {
                    var c = this,
                        d = c.dataTableByName[a];
                    return b && !d && (d = c.dataTableByName[a] = {}), d
                },
                Kf: function(a, b) {
                    var c = this.getNode(a, b);
                    return c && c.Lf
                },
                Mf: function(a, b) {
                    var c = this.getNode(a, b);
                    return c && c.Nf
                },
                Qf: function(a, b) {
                    return this.getWorkingNodeInfo(a, b, 2)
                },
                BTa: function(a, b) {
                    return this.getWorkingNodeInfo(a, b, 1)
                },
                ATa: function(a, b) {
                    return this.getWorkingNodeInfo(a, b, 0)
                },
                CTa: function(a) {
                    var b = this.getNodeByName(a);
                    return b && b.Nf
                },
                DTa: function(a) {
                    var b = this.getNodeByName(a);
                    return b && b.Lf
                },
                clearAll: function() {
                    var a = this;
                    a.clear(-1, -1, -1, -1), a.dataTable = {}, a.dataTableByName = {}, a.Hf = [], a.If = [], a.Jf = p
                },
                clear: function(a, b, c, d, e) {
                    this.$b(a, b, c, d, e)
                },
                addRows: function(a, b) {
                    var c, d = this,
                        e = d.rC();
                    if (!(a < 0 || a > e || b < 0)) for (t(d.dataTable, e, a, b), t(d.Hf, e, a, b), c = 0; c < b; c++) d.dataTable[a + c] && (d.dataTable[a + c] = {
                        rs: "n"
                    })
                },
                deleteRows: function(a, b) {
                    var c = this,
                        d = c.rC();
                    a < 0 || a >= d || b <= 0 || (a + b > d && (b = d - a), u(c.dataTable, d, a, b), u(c.Hf, d, a, b))
                },
                addColumns: function(a, b) {
                    var c, d, e = this,
                        f = e.rC(),
                        g = e.cC();
                    if (!(a < 0 || a > g || b < 0)) {
                        for (c = 0; c < f; c++) d = e.dataTable[c], d && a < g && t(d, g, a, b);
                        t(this.If, g, a, b)
                    }
                },
                deleteColumns: function(a, b) {
                    var c, d, e = this,
                        f = e.rC(),
                        g = e.cC();
                    if (!(a < 0 || a >= g || b < 0)) {
                        for (c = 0; c < f; c++) d = this.dataTable[c], d && u(d, g, a, b);
                        u(this.If, g, a, b)
                    }
                },
                ETa: function(a, b) {
                    var c = [a, b],
                        d = this.getNode(a, b);
                    return d && c.push(d.Lf, d.Nf, d.Pf), c
                },
                FTa: function(a, b, c) {
                    a && a.push(this.ETa(b, c))
                },
                dUa: function() {
                    return this.getSource().getSheet().ITa.dUa()
                },
                $Va: function(a, b, c, d, e) {
                    var f = this;
                    a === -1 ? f.kg(b, c, d) : b === -1 ? f.jg(a, c, d) : f.ig(a, b, c, d, e)
                },
                Rf: function(a, b, c, d) {
                    var e = this.getNode(a, b, !! c);
                    e && (d && d.push([a, b, e.Lf]), e.Lf = c)
                },
                GTa: function(a, b, c, d, e, f, g) {
                    var h = this.getNode(a, b, !! c);
                    h && (this.FTa(g, a, b), h.Lf = c, (h.Nf || d) && (h.Nf = d), (h.Pf || e) && (h.Pf = e), h.isVolatile && !c ? this.Tf(h) : (f || h.isVolatile) && (h.isVolatile = f))
                },
                Sf: function(a, b, c) {
                    this.GTa(a, b, q, q, q, !1, c)
                },
                Uf: function(a, b, c, d, e, f) {
                    var g = this.getNode(b, c);
                    g && g.Lf && a.GTa(d, e, g.Lf, g.Nf, g.Pf, g.isVolatile, f)
                },
                ega: function(a, b) {
                    var c = this.dataTable[a];
                    return c && c[b]
                },
                Wf: function(a, b, c) {
                    var d = this.getNode(a, b, !! c);
                    d && (d.Nf = c)
                },
                Xf: function(a, b, c) {
                    var d = this.getNode(a, b, !! c);
                    d && (d.Pf = c)
                },
                Yf: function(a, b) {
                    var c = this.getNode(a, b);
                    return c && c.calc
                },
                Zf: function(a, b, c) {
                    var d = this.getNode(a, b, !0);
                    d && (d.calc && d.calc.isVolatile && this.Tf(d), d.calc = c, c && (c.node = d))
                },
                Q3: function(a, b, c) {
                    var d = this.getNode(a, b, !0);
                    d && d.calc && (d.calc.isVolatile && this.Tf(d), this.Af.Bh(d.calc, c), d.calc = q)
                },
                $f: function(a, b, c, d, e) {
                    var f, g = this;
                    c >= 0 && d >= 0 ? (f = g.dataTable[c], f || (f = g.dataTable[c] = {}), f[d] = e, e && e.calc && delete e.calc) : c >= 0 && d === -1 && a >= 0 && b === -1 ? g.Hf[c] = e : d >= 0 && c === -1 && b >= 0 && a === -1 && (g.If[d] = e)
                },
                _f: function(a, b, c, d) {
                    var e = this,
                        f = e.getNode(a, b),
                        g = e.getNode(c, d);
                    f && f.Lf ? e.$f(a, b, c, d, f) : g && g.Lf && e.$f(a, b, c, d, p), g && g.Lf ? e.$f(c, d, a, b, g) : f && f.Lf && e.$f(c, d, a, b, p)
                },
                ag: function() {
                    return this.Gf
                },
                bg: function(a) {
                    a.isVolatile || (a.isVolatile = !0, this.Gf.push(a))
                },
                Tf: function(a) {
                    var b, c, d, e, f;
                    if (a.isVolatile = q, b = this, b.B5++, b.B5 > 100) {
                        for (b.B5 = 0, c = [], d = b.Gf, e = b.Gf.length, f = 0; f < e; f++) d[f].isVolatile && c.push(d[f]);
                        b.Gf = c
                    }
                },
                getCalcService: function() {
                    return this.Af
                },
                setCalcService: function(a) {
                    this.Af = a
                },
                Cf: function() {
                    return this.Af
                },
                getSource: function() {
                    return this.xf
                },
                hasFormula: function(a, b) {
                    return a = a !== q ? a : -1, b = b !== q ? b : -1, !! this.ATa(a, b)
                },
                setFormula: function(a, b, c, d, e, f, g) {
                    var h, i, j, k, l, m = this;
                    if (c && 0 === c.length && (c = p), !e && m.dg(a, b, 1, 1) && m.eg(), h = m.getFormula(a, b), f || h !== c && ("" !== h || c) && (h || "" !== c)) {
                        if (i = m.Cf(), j = p, i) try {
                            k = a >= 0 ? a : 0, l = b >= 0 ? b : 0, j = d || (c ? i.parse(m.xf, c, k, l, !1, e, e) : p), m.fg(a, b, j, q, !1, g)
                        } catch (a) {
                            if (!e) throw a
                        }
                        a >= 0 && b >= 0 && m.xf.setFormula(a, b, c)
                    }
                },
                getFormula: function(a, b, c) {
                    var d, e, f = this.Cf();
                    return f && (d = this.ATa(a, b)) ? (e = this.Qf(a, b), a = e ? e.row : a, b = e ? e.col : b, f.unparse(this.xf, d, a, b, c)) : p
                },
                setFormulaByName: function(a, b, c, d) {
                    var e, f, g, h;
                    if (a && (a = za(a), e = this, b && 0 === b.length && (b = p), f = e.getFormulaByName(a), f !== b && ("" !== f || b) && (f || "" !== b))) {
                        if (g = e.Cf(), h = p, g) try {
                            h = b ? g.parse(e.xf, b, 0, 0, !1, c) : p, e.gg(a, h, q, !1, d)
                        } catch (a) {
                            if (!c) throw a
                        }
                        e.xf.setFormula({
                            name: a
                        }, b)
                    }
                },
                getFormulaByName: function(a) {
                    var b, c = this.Cf();
                    return c && a && (b = this.DTa(za(a))) ? c.unparse(this.xf, b, 0, 0) : p
                },
                eg: function() {
                    throw m().Exp_ArrayFromulaPart
                },
                rC: function() {
                    return s(this.xf.getRowCount())
                },
                cC: function() {
                    return s(this.xf.getColumnCount())
                },
                setArrayFormula: function(a, b, c, d, e, f, g) {
                    var h, i, j, k, l = this;
                    if (e && 0 === e.length && (e = p), l.dg(a, b, c, d) && l.eg(), a = a < 0 ? 0 : a, b = b < 0 ? 0 : b, i = l.Cf(), i && (l.$b(a, b, c, d, g), e)) {
                        try {
                            h = e ? i.parse(l.xf, e, a, b, !1, f, f) : p
                        } catch (a) {
                            if (!f) throw a;
                            return
                        }
                        for (j = a; j < a + c; j++) for (k = b; k < b + d; k++) l.fg(j, k, h, o(a, b, c, d), !1, g);
                        a >= 0 && b >= 0 && l.xf.setArrayFormula(a, b, c, d, i.unparse(l.xf, h, a, b))
                    }
                },
                getWorkingNodeInfo: function(a, b, c) {
                    var d, e = this,
                        f = e.xf;
                    return a >= f.getRowCount() || b >= f.getColumnCount() ? d : (a >= 0 && b >= 0 ? (d = e.getNode(a, b), (!d || 0 === c && !d.Lf || 1 === c && !d.Nf || 2 === c && !d.Pf) && (d = e.getNode(a, -1)), (!d || 0 === c && !d.Lf || 1 === c && !d.Nf || 2 === c && !d.Pf) && (d = e.getNode(-1, b))) : d = a >= 0 && b === -1 ? e.getNode(a, -1) : a === -1 && b >= 0 ? e.getNode(-1, b) : e.getNode(-1, -1), d && (0 === c && d.Lf || 1 === c && d.Nf || 2 === c && d.Pf))
                },
                fg: function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l, m, n = this,
                        o = n.Cf();
                    o.nia && o.lh.asyncManager.endCalcCell(), g = d !== q && null !== d, h = new ja.EvaluateContext(n.xf, C(g ? d.row : a, g ? d.col : b), g), i = ca(h, c, g, g ? a - d.row : 0, g ? b - d.col : 0), i = i === c ? q : i, d !== q && (j = d), a >= 0 && b >= 0 ? ((e === q || e) && (k = a >= 0 ? a : 0, l = b >= 0 ? b : 0, m = c ? o.unparse(n.xf, c, k, l) : q, n.xf.setFormula(a, b, m)), n.ig(a, b, c, i, j, f)) : a >= 0 && b === -1 ? n.jg(a, c, i, f) : a === -1 && b >= 0 && n.kg(b, c, i, f), o.autoCalculation && !o.IsSuspended() && o.recalculateAll(!1)
                },
                gg: function(a, b, c, d, e) {
                    var f, g = this,
                        h = g.Cf(),
                        i = new ja.EvaluateContext(g.xf, C(0, 0), (!1)),
                        j = ca(i, b, !1, 0, 0);
                    j = j === b ? q : j, d !== q && !d || e || (f = b ? h.unparse(g.xf, b, 0, 0) : q, g.xf.setFormulaByName(a, f)), g.lg(a, b, j), h.autoCalculation && !h.IsSuspended() && !e && h.recalculateAll(!1)
                },
                getRowExpression: function(a) {
                    return this.Kf(a, -1)
                },
                getColumnExpression: function(a) {
                    return this.Kf(-1, a)
                },
                lg: function(a, b, c, d) {
                    var e, f = this,
                        g = f.mg(a, !0);
                    g && (g.ng(), e = this.getNodeByName(a, !0), e.Lf = b, d && (d[0].push("dataTable", a), d[1] = e.Lf), c = b && c ? c : void 0, e.Nf = c, g.og(), f.Af.pg(g, 3))
                },
                ig: function(a, b, c, d, e, f) {
                    var g = this,
                        h = g.qg(a, b, !0);
                    h && (g.FTa(f, a, b), g.Af.onClearExpr(g.xf, C(a, b)), h.ng(), g.Rf(a, b, c), c ? ((d || g.Mf(a, b)) && g.Wf(a, b, d), (e || g.Qf(a, b)) && g.Xf(a, b, e)) : (g.Wf(a, b, q), g.Xf(a, b, q)), h.og(), g.Af.pg(h, 0))
                },
                jg: function(a, b, c, d) {
                    var e = this,
                        f = e.rg(a, !0);
                    f && (e.FTa(d, a, -1), f.ng(), e.Rf(a, -1, b), (c || e.Mf(a, -1)) && e.Wf(a, -1, c), f.og(), e.Af.pg(f, 1))
                },
                kg: function(a, b, c, d) {
                    var e = this,
                        f = e.sg(a, !0);
                    f && (e.FTa(d, -1, a), f.ng(), e.Rf(-1, a, b), (c || e.Mf(-1, a)) && e.Wf(-1, a, c), f.og(), e.Af.pg(f, 2))
                },
                $b: function(a, b, c, d, e) {
                    var f, g, h, i, j, k = this,
                        l = a < 0 ? 0 : a,
                        m = b < 0 ? 0 : b,
                        n = a < 0 ? k.rC() : c,
                        r = b < 0 ? k.cC() : d,
                        s = l + n - 1,
                        t = m + r - 1,
                        u = function(a, b) {
                            if (f = k.Mf(a, b), g = k.Kf(a, b), f || g) {
                                h = k.Qf(a, b);
                                var c = h ? o(h.row, h.col, h.rowCount, h.colCount) : q;
                                k.fg(a, b, p, c, !0, e)
                            }
                        };
                    for (i = l; i <= s && i >= 0; i++) for (b < 0 && u(i, -1), j = m; j <= t && j >= 0; j++) i === l && a < 0 && u(-1, j), u(i, j);
                    a < 0 && b < 0 && u(a, b)
                },
                dg: function(a, b, c, d) {
                    return this.tg(a, b, c, d, !0, !0)
                },
                tg: function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l, m = this,
                        n = a < 0 ? 0 : a,
                        p = b < 0 ? 0 : b,
                        q = a < 0 ? m.rC() : c,
                        r = b < 0 ? m.cC() : d,
                        s = n + (0 === q ? 1 : q) - 1,
                        t = p + (0 === r ? 1 : r) - 1,
                        u = !1,
                        v = [],
                        w = [],
                        x = m.dataTable;
                    for (i = n; i <= s && i >= 0 && !(i > m.Ef); i++) if (h = x[i]) for (j = p; j <= t && j >= 0 && !(j > m.Ff); j++) if (g = h[j]) if (k = g.Pf) {
                        if (k.row < n || k.row + k.rowCount - 1 > s || k.col < p || k.col + k.colCount - 1 > t) {
                            if (e) return !0;
                            u = !0
                        }
                        if (i !== k.row && i !== n) continue;
                        v.push(o(k.row, k.col, k.rowCount, k.colCount)), l = g.Lf, w.push(l), j = k.col + k.colCount - 1
                    } else f || (l = g.Lf, l && (v.push({
                        row: i,
                        col: j
                    }), w.push(l)));
                    return !e && {
                            hasPart: u,
                            ranges: v,
                            formulas: w
                        }
                },
                mg: function(a, b) {
                    var c = this,
                        d = p,
                        e = c.getNodeByName(a, b);
                    return e && (d = e.calc, !d && b && (d = new X(c, a), e.calc = d, d.node = e)), d
                },
                qg: function(a, b, c) {
                    var d, e, f, g = this,
                        h = p;
                    if (a >= 0 && b >= 0) {
                        if (d = g.dataTable, e = d[a], !e) {
                            if (!c) return h;
                            e = d[a] = {}, a > g.Ef && (g.Ef = a)
                        }
                        if (f = e[b], !f) return c && (f = e[b] = {}, h = new T(g, a, b), f.calc = h, h.node = f, b > g.Ff && (g.Ff = b)), h;
                        h = f.calc, !h && c && (h = new T(g, a, b), f.calc = h, h.node = f, a > g.Ef && (g.Ef = a), b > g.Ff && (g.Ff = b))
                    }
                    return h
                },
                rg: function(a, b) {
                    var c = this,
                        d = p;
                    return a >= 0 && (d = c.Yf(a, -1), !d && b && (d = new U(c, a), c.Zf(a, -1, d), a > c.Ef && (c.Ef = a))), d
                },
                sg: function(a, b) {
                    var c = this,
                        d = p;
                    return a >= 0 && (d = c.Yf(-1, a), !d && b && (d = new V(c, a), c.Zf(-1, a, d), a > c.Ff && (c.Ff = a))), d
                },
                ug: function(a) {
                    var b = this;
                    return !b.vg && a && (b.vg = new Y(b)), b.vg
                },
                wg: function(a, b) {
                    var c, d = this;
                    return d.xg || (d.xg = {}), c = d.xg[a], !c && b && (c = d.xg[a] = new W(d, a)), c
                },
                updateNameCalc: function(a, b) {
                    var c = this.wg(za(a));
                    c && (c.updateListening(!0, b), c.fh())
                },
                yg: function(a, b) {
                    var c, d, e = this,
                        f = s(e.Ff, a + b - 1);
                    for (c = a; c !== -1 && c <= f; c++) e.isDirty(-1, c) && (d = e.sg(c, !0), e.Af.pg(d, 2))
                },
                zg: function(a, b) {
                    var c, d, e = this,
                        f = s(e.Ef, a + b - 1);
                    for (c = a; c !== -1 && c <= f; c++) e.isDirty(c, -1) && (d = e.rg(c, !0), e.Af.pg(d, 1))
                },
                Ag: function(a, b, c, d) {
                    var e, f, g, h, i = this,
                        j = s(i.Ef, a + c - 1),
                        k = s(i.Ff, b + d - 1);
                    for (e = a; e <= j; e++) for (f = b; f <= k; f++) i.ega(e, f) && (g = i.qg(e, f, !0), i.Af.pg(g, 0));
                    i.zg(a, c), i.yg(b, d), h = i.ug(!1), h && h.Bg(a, b, c, d)
                },
                Cg: function() {
                    var a, b, c, d, e, f = this,
                        g = f.ag();
                    for (c = 0; c < g.length; c++) d = g[c], d && d.isVolatile && d instanceof T && !f.Af.Dg(d) && (e = f.qg(d.row, d.column, !0), f.Af.pg(e, 0), a = f.rg(d.row, !1), a && !f.Af.Eg(a) && f.zg(d.row, 1), b = f.sg(d.column, !1), b && !f.Af.Eg(b) && f.yg(d.column, 1))
                },
                Fg: function() {
                    var a, b, c, d, e, f, g, h, i = this,
                        j = i.ag(),
                        k = !0,
                        l = 5,
                        m = i.Af,
                        n = i.xf;
                    for (n.r$a = !0; k && l;) {
                        for (k = !1, l--, c = 0, d = j.length; c < d; c++) e = j[c], e && e.isVolatile && e instanceof T && !i.Af.Dg(e) && (f = e.row, g = e.column, i.recalculateCell(f, g) && (k = !0, h = i.qg(f, g, !0), m.pg(h, 0), a = i.rg(f, !1), a && !m.Eg(a) && i.zg(f, 1), b = i.sg(g, !1), b && !i.Af.Eg(b) && i.yg(g, 1)));
                        k && m.Gg(!0)
                    }
                    delete n.r$a
                },
                isDirty: function(a, b) {
                    return !(!this.Yf(a, b) && !this.Kf(a, b))
                },
                recalculateCell: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l = this,
                        m = l.xf,
                        n = l.BTa(a, b) || l.ATa(a, b);
                    return !!n && (c = C(a, b), d = m.getValue(a, b), e = !1, j = l.Qf(a, b), j && (e = !0, f = j.row, g = j.col, h = j.rowCount, i = j.colCount), l.Af.nia && l.Af.lh.asyncManager.startCalcCell(l.xf, c), k = l.Af.Hg(l.xf, n, c, e, !0, j && D(f, g, h, i)), d !== k && (!(d instanceof Date && k instanceof Date && d.valueOf() === k.valueOf()) && (m.setValue(a, b, k, d), l.Af.nia && l.Af.lh.asyncManager.endCalcCell(l.xf, c), !0)))
                },
                recalculateNameID: function(a) {
                    var b, c, d = this,
                        e = d.xf,
                        f = d.CTa(a) || d.DTa(a);
                    if (f) {
                        if (b = e.getValueByName ? e.getValueByName(a) : e.getValue({
                                name: a
                            }), c = d.Af.Hg(d.xf, f, {
                                name: a
                            }, !1, !0), b === c) return;
                        if (b instanceof Date && c instanceof Date && b.valueOf() === c.valueOf()) return;
                        e.setValueByName ? e.setValueByName(a, c) : e.setValue({
                            name: a
                        }, c)
                    }
                },
                Ig: function(a, b, c, d, e, f, g) {
                    for (var h, i, j, k, l, m, n, o, r, s, t, u, v, w, x, y, z, A, B, C, D, G, H, I, K, L, M, N, O, P, Q, R, S, T = this; 12 === d.type;) d = d.value;
                    for (; 10 === d.type;) d = d.value;
                    for (; 12 === d.type;) d = d.value;
                    if (e) {
                        for (; 12 === e.type;) e = e.value;
                        for (; 10 === e.type;) e = e.value;
                        for (; 12 === e.type;) e = e.value
                    }
                    if (13 === d.type) {
                        if (m = d.getRange(b, c, !0), m === p) return;
                        d = 1 === m.rowCount && 1 === m.colCount ? E(p, p, m.row, m.col, !1, !1) : F(p, p, m.row, m.col, m.row + m.rowCount - 1, m.col + m.colCount - 1, !1, !1, !1, !1)
                    }
                    if (e && e !== d && 8 === e.type) {
                        if (e.source instanceof ja.ErrorSource) return;
                        i = za(e.value), C = e.source || g || T.xf, j = C.getCustomName(i), j ? D = C.getCalcSourceModel() : (D = T.Af.getGlobalSourceModel() || C.getCalcSourceModel(), j = D.getSource().getCustomName(i), j || (k = C.getCalcSourceModel().wg(i, !0), k.Jg(a, f))), l = D.wg(i, !0), l.Jg(a, f), e = null, j && T.Ig(a, b, c, j, p, f, D.getSource())
                    }
                    if (1 === d.type && d.endSource) for (G = d, H = G.source.getSources(G.endSource), h = 0; h < H.length; h++) I = F(H[h], p, G.row, G.column, G.endRow, G.endColumn, G.rowRelative, G.columnRelative, G.endRowRelative, G.endColumnRelative), I.isFullRow = G.isFullRow, I.isFullColumn = G.isFullColumn, T.Ig(a, b, c, I, p, f);
                    else if (1 === d.type) {
                        if (C = d.source !== ja.BangSource && d.source || T.xf, D = C.getCalcSourceModel(), !D) return;
                        if (K = d, L = a.row === q || a.column === q, M = K.tf(), N = J(d, b, c), r = N.row, t = N.col, v = N.rowCount, w = N.colCount, s = r + v - 1, u = t + w - 1, 0 === M) {
                            if (0 <= b && 0 <= c) if (Aa(n, o, v, w)) O = D.ug(!0), L ? O.Xoa(r, t, v, w, a, f) : O.Jg(r, t, v, w, a, f);
                            else for (A = r; A <= s; A++) for (B = t; B <= u; B++) x = D.qg(A, B, !0), L ? x && x.Xoa(a, f) : x && x.Jg(a, f);
                            else if (0 <= b && c === -1) for (A = r; A <= s; A++) for (B = t; B <= u; B++) K.columnRelative || K.endColumnRelative ? (y = D.rg(A, !0), y && y.Kg(a, -B, f)) : (x = D.qg(A, B, !0), x && x.Lg(a, f));
                            else if (0 <= c && b === -1) for (A = r; A <= s; A++) for (B = t; B <= u; B++) K.rowRelative || K.endRowRelative ? (z = D.sg(B, !0), z && z.Mg(a, -A, f)) : (x = D.qg(A, B, !0), x && x.Ng(a, f))
                        } else if (1 === M) {
                            if (0 <= b && 0 <= c) for (A = r; A <= s; A++) y = D.rg(A, !0), L ? y.Xoa(a, f) : y.Jg(a, f);
                            else if (0 <= b && c === -1);
                            else if (b === -1 && 0 <= c) if (K.rowRelative || K.endRowRelative);
                            else for (r = K.row, s = K.endRow, A = r; A <= s; A++) y = D.rg(A, !0), y.Ng(a, f)
                        } else if (2 === M) if (0 <= b && 0 <= c) for (B = t; B <= u; B++) z = D.sg(B, !0), L ? z && z.Xoa(a, f) : z && z.Jg(a, f);
                        else if (0 <= b && c === -1);
                        else if (b === -1 && 0 <= c) for (B = t; B <= u; B++) z = D.sg(B, !0), z && z.Ng(a, f)
                    } else if (9 === d.type) T.Ig(a, b, c, d.value, e && 9 === e.type && e.value, f), d.value2 && T.Ig(a, b, c, d.value2, e && 9 === e.type && e.value2, f);
                    else if (8 === d.type) {
                        if (C = d.source || g || T.xf, i = za(d.value), j = C.getCustomName(i), j ? D = C.getCalcSourceModel() : (D = T.Af.getGlobalSourceModel() || C.getCalcSourceModel(), j = D.getSource().getCustomName(i), j || (k = C.getCalcSourceModel().wg(i, !0), k.Jg(a, f))), l = D.wg(i, !0), !l) return;
                        l.Jg(a, f), j && T.Ig(a, b, c, j, p, f, D.getSource())
                    } else if (7 === d.type) {
                        if (P = d.
                                function) {
                            if (P.isVolatile() && (f ? T.bg(a) : T.Tf(a)), !P.precedentReference()) return;
                            P instanceof ka.AsyncFunction && (T.Af.nia = !0)
                        }
                        for (Q = d.arguments.length, h = 0; h < Q; h++) T.Ig(a, b, c, d.arguments[h], e && 7 === e.type && e.arguments[h], f)
                    } else if (25 === d.type || 26 === d.type) {
                        if (R = d, C = d.source || T.xf, D = C.getCalcSourceModel(), S = D.mg(R.value, !0), !S) return;
                        S.Jg(a, f)
                    }
                },
                Og: function(a, b) {
                    var c = this.getNodeByName(a);
                    c && (c.Nf || c.Lf) && this.Ig(this.mg(a), 0, 0, c.Nf || c.Lf, c.Lf, b)
                },
                Pg: function(a, b, c, d, e) {
                    var f, g, h, i, j, k = this,
                        l = a + c,
                        m = b + d;
                    for (i = a; i < l; i++) for (j = b; j < m; j++) f = k.Mf(i, j), g = k.Kf(i, j), (f || g) && (h = k.Qf(i, j), h ? k.Ig(k.qg(i, j), h.row, h.col, f || g, g, e) : k.Ig(k.qg(i, j), i, j, f || g, g, e))
                },
                Qg: function(a, b, c) {
                    var d, e, f = a + b;
                    for (d = a; d !== -1 && d < f; d++) e = this.getColumnExpression(d), e && this.Ig(this.sg(d, !1), -1, d, e, e, c)
                },
                Rg: function(a, b, c, d) {
                    this.Pg(a, b, c, d, !0)
                },
                Sg: function(a, b, c, d) {
                    this.Pg(a, b, c, d, !1)
                },
                Tg: function(a, b) {},
                Ug: function(a, b) {},
                Vg: function(a, b) {
                    this.Qg(a, b, !0)
                },
                Wg: function(a, b) {
                    this.Qg(a, b, !1)
                },
                Xg: function(a, b, c, d, e, f, g) {
                    var h, i, j, k = a + c,
                        l = b + d,
                        m = this;
                    for (h = a; h < k; h++) for (i = b; i < l; i++) j = this.qg(h, i, !1), j && (m.FTa(g, h, i), e && j.Yg(), f && j.Bg())
                },
                Zg: function(a, b, c, d, e) {
                    var f, g, h, i, j = this,
                        k = j.Hf;
                    if (a !== -1 && k) for (f = s(a + b, k.length), g = a; g < f; g++) h = k[g], h && h.calc && (j.FTa(e, g, -1), i = h.calc, c && i.Yg(), d && i.Bg())
                },
                $g: function(a, b, c, d, e) {
                    var f, g, h, i, j = this,
                        k = j.If;
                    if (a !== -1 && k) for (f = s(a + b, k.length), g = a; g < f; g++) h = k[g], h && h.calc && (j.FTa(e, -1, g), i = h.calc, c && i.Yg(), d && i.Bg())
                },
                _g: function(a, b, c, d, e, f, g) {
                    var h, i, j, k;
                    (e || f) && (h = this, g && (i = h.dUa()), 0 <= a && 0 <= b ? (h.Xg(a, b, c, d, e, f, i), h.Zg(a, c, e, f, i), h.$g(b, d, e, f, i), h.vg && (e && h.vg.Yg(a, b, c, d), f && h.vg.Bg(a, b, c, d))) : 0 <= a && b === -1 ? (h.Xg(a, 0, c, h.cC(), e, f, i), h.Zg(a, c, e, f, i), h.vg && (e && h.vg.Yg(a, b, c, d), f && h.vg.Bg(a, b, c, d))) : a === -1 && 0 <= b ? (h.Xg(0, b, h.rC(), d, e, f, i), h.$g(b, d, e, f, i), h.vg && (e && h.vg.Yg(a, b, c, d), f && h.vg.Bg(a, b, c, d))) : a === -1 && b === -1 && (j = h.rC(), k = h.cC(), h.Xg(0, 0, j, k, e, f, i), h.Zg(0, j, e, f, i), h.$g(0, k, e, f, i), h.vg && (e && h.vg.Yg(a, b, c, d), f && h.vg.Bg(a, b, c, d))))
                },
                getAllNodes: function() {
                    var a, b, c, d, e = [],
                        f = this.dataTable,
                        g = this.Hf,
                        h = this.If,
                        i = this.Jf;
                    i && e.push(i);
                    for (b in g) a = g[b], a && e.push(a);
                    for (b in h) a = h[b], a && e.push(a);
                    for (c in f) if (d = f[c]) for (b in d) a = d[b], a && e.push(a);
                    return e
                },
                toJSON: function(a) {
                    this.xf.toJSON(a, this.dataTable, this.Ef, this.Ff)
                }
            }, M = "cellListeners", N = "rowListeners", O = "columnListeners", P = "rowSliceListeners", Q = "columnSliceListeners", R = "nameIDListeners", S = ja.BaseCalc = function() {
                function a(a) {
                    this.cellListeners = {}, this.rowListeners = {}, this.columnListeners = {}, this.nameIDListeners = {}, this.ah = a
                }
                return a
            }(), S.prototype = {
                hasListeners: function() {
                    var a, b, c, d = this,
                        e = d.Ze;
                    for (a = 0; a < e.length; a++) if (b = d[e[a]]) for (c in b) if (b[c]) return !0;
                    return !1
                },
                Jg: function(a, b) {
                    var c = this.cellListeners,
                        d = a.ah,
                        e = null === d ? "" : d.xf.id + ",",
                        f = e + a.row + "," + a.column;
                    b ? c[f] = a : c[f] = q
                },
                Lg: function(a, b) {
                    var c = this.rowListeners,
                        d = a.ah,
                        e = null === d ? "" : d.xf.id + ",",
                        f = e + a.row + ",-1";
                    b ? c[f] = a : c[f] = q
                },
                Ng: function(a, b) {
                    var c = this.columnListeners,
                        d = a.ah,
                        e = null === d ? "" : d.xf.id + ",",
                        f = e + "-1," + a.column;
                    b ? c[f] = a : c[f] = q
                },
                Xoa: function(a, b) {
                    var c, d, e, f;
                    a instanceof X && (c = this.nameIDListeners, d = a.ah, e = null === d ? "" : d.xf.id + ",", f = e + a.name, b ? c[f] = a : c[f] = q)
                },
                Yg: function() {
                    var a, b, c, d, e = this.Ze;
                    for (b = 0; b < e.length; b++) if (c = this[e[b]]) for (d in c) a = c[d], a && a.bh()
                },
                Bg: function() {
                    var a, b, c, d, e = this.Ze;
                    for (b = 0; b < e.length; b++) if (c = this[e[b]]) for (d in c) a = c[d], !a || a.dh || a.eh || a.fh()
                },
                gh: function(a) {
                    var b, c, d, e, f = this.Ze,
                        g = a ? 1 : -1;
                    for (c = 0; c < f.length; c++) if (d = this[f[c]]) for (e in d) b = d[e], b && (b.delay += g, a && b instanceof T && b.s$a())
                },
                bh: function() {},
                fh: function() {},
                ng: function() {},
                og: function() {}
            }, T = ja.CellCalc = function(a) {
                i(b, a);

                function b(b, c, d) {
                    a.call(this, b);
                    var e = this;
                    e.row = c, e.column = d, e.delay = 0, e.Ze = [M, N, O, R]
                }
                return b
            }(S), e(T.prototype, {
                og: function() {
                    var a = this;
                    a.ah.Rg(a.row, a.column, 1, 1)
                },
                ng: function() {
                    var a = this;
                    a.ah.Sg(a.row, a.column, 1, 1)
                },
                bh: function() {
                    this.ah.Cf().ih().hh(this, 0)
                },
                fh: function() {
                    this.ah.Cf().pg(this, 0)
                },
                s$a: function() {
                    var a, b, c, d, e, f, g, h, i = this,
                        j = i.ah,
                        k = j.getCalcService();
                    k && k.nia && (a = i.nia, b = a && i.t$a, !b && l(a) && (c = j.getSource(), c && (d = c.getName(), e = k.lh.asyncManager, f = e.y5[d], f && (g = f[i.row], g && (h = g[i.column], h && (b = h[0], b ? (i.nia = !0, i.t$a = b, b.$$a = i) : i.nia = !1))))), b && 0 === b.evaluateMode && (b.v5 = !1))
                }
            });

            function Ba(a, b, c) {
                a[b] || (a[b] = []), a[b].push(c)
            }
            function Ca(a, b, c) {
                var d, e = a[b];
                if (e) for (d = 0; d < e.length; d++) if (e[d] === c) return void e.splice(d, 1)
            }
            U = ja.RowCalc = function(a) {
                i(b, a);

                function b(b, c) {
                    a.call(this, b);
                    var d = this;
                    d.row = c, d.Ze = [M, N, P, O, R]
                }
                return b
            }(S), e(U.prototype, {
                incrementDelay2: function(a, b) {},
                decrementDelay2: function(a, b) {},
                og: function() {
                    this.ah.Tg(this.row, 1)
                },
                ng: function() {
                    this.ah.Ug(this.row, 1)
                },
                Kg: function(a, b, c) {
                    c ? Ba(this, P, {
                        row: a,
                        columnOffset: b,
                        columnCount: 1
                    }) : Ca(this, P, {
                        row: a,
                        columnOffset: b,
                        columnCount: 1
                    })
                },
                bh: function() {
                    this.ah.Cf().ih().hh(this, 1)
                },
                fh: function() {
                    this.ah.Cf().pg(this, 1)
                }
            }), V = ja.ColumnCalc = function(a) {
                i(b, a);

                function b(b, c) {
                    a.call(this, b);
                    var d = this;
                    d.column = c, d.Ze = [M, N, O, Q, R]
                }
                return b
            }(S), e(V.prototype, {
                incrementDelay2: function(a, b) {},
                decrementDelay2: function(a, b) {},
                og: function() {
                    this.ah.Vg(this.column, 1)
                },
                ng: function() {
                    this.ah.Wg(this.column, 1)
                },
                Mg: function(a, b, c) {
                    this.Ng(a, c)
                },
                bh: function() {
                    this.ah.Cf().ih().hh(this, 2)
                },
                fh: function() {
                    this.ah.Cf().pg(this, 2)
                }
            }), W = ja.NameCalc = function(a) {
                i(b, a);

                function b(b, c) {
                    a.call(this, b), this.name = c, this.Ze = [M, N, O]
                }
                return b
            }(S), e(W.prototype, {
                updateListening: function(a, b) {
                    var c, d, e, f, g, h, i, j, k = this,
                        l = k.Ze;
                    for (e = 0; e < l.length; e++) if (f = k[l[e]]) {
                        g = [];
                        for (h in f) c = f[h], c && g.push(c);
                        for (i = g.length, j = 0; j < i; j++) c = g[j], d = c.node, c.ng(), d && (!d.Pf || d.Pf.row === c.row && d.Pf.col === c.column) && c.ah.fg(c.row, c.column, d.Lf, d.Pf, !0)
                    }
                },
                updateListeningOnRemoved: function() {
                    var a, b, c, d, e, f, g, h, i, j, k = this,
                        l = k.Ze,
                        m = k.ah,
                        n = m.Cf();
                    for (f = 0; f < l.length; f++) if (g = k[l[f]]) for (h in g) a = g[h], a && (b = a.ah, c = a.row, d = a.col, c = c === q ? -1 : c, d = d === q ? -1 : d, e = b.Kf(c, d), i = b.Qf(c, d), e && (j = n.ih().adjustFormulaOnRemoveName(m, e, k.name), j !== e && b.fg(c, d, j, i, !0)))
                },
                fh: function() {
                    var a, b, c, d, e = this.Ze;
                    for (b = 0; b < e.length; b++) if (c = this[e[b]]) for (d in c) a = c[d], a && a.fh()
                }
            }), X = ja.NameIDCalc = function(a) {
                i(b, a);

                function b(b, c) {
                    a.call(this, b);
                    var d = this;
                    d.name = c, d.delay = 0, d.Ze = [M, N, O, R]
                }
                return b
            }(S), e(X.prototype, {
                og: function() {
                    var a = this;
                    a.ah.Og(a.name, !0)
                },
                ng: function() {
                    var a = this;
                    a.ah.Og(a.name, !1)
                },
                bh: function() {
                    this.ah.Cf().ih().hh(this, 3)
                },
                fh: function() {
                    this.ah.Cf().pg(this, 3)
                }
            }), Y = ja.RangeCalc = function() {
                function a(a) {
                    this.ah = a, this.Ze = [M, N, O, R]
                }
                return a
            }(), e(Y.prototype, {
                processListener: function(a, b, c, d, e, f, g) {
                    var h = this,
                        i = h[a],
                        j = b + "," + c + "," + d + "," + e,
                        k, l;
                    if (a !== R || f instanceof X) {
                        if (i || (h[a] = i = {}), k = i[j], !k) {
                            if (!g) return;
                            k = i[j] = [], k.row = b, k.col = c, k.rowCount = d, k.colCount = e
                        }
                        if (g) {
                            for (l = 0; l < k.length; l++) if (k[l] === f) return;
                            k.push(f)
                        } else for (l = 0; l < k.length; l++) k[l] === f && k.splice(l, 1)
                    }
                },
                Jg: function(a, b, c, d, e, f) {
                    this.processListener(M, a, b, c, d, e, f)
                },
                Lg: function(a, b, c, d, e, f, g, h, i) {
                    this.processListener(N, a, b, c, d, e, i)
                },
                Ng: function(a, b, c, d, e, f, g, h, i) {
                    this.processListener(O, a, b, c, d, e, i)
                },
                Xoa: function(a, b, c, d, e, f) {
                    this.processListener(R, a, b, c, d, e, f)
                },
                Yg: function(a, b, c, d) {
                    this.visit(0, a, b, c, d)
                },
                visit: function(a, b, c, d, e) {
                    var f, g, h, i, j, k, l, m, n, o, p, q = this.Ze;
                    for (h = 0; h < q.length; h++) if (i = this[q[h]]) for (g in i) if (j = i[g], j && (k = j.row, l = j.col, m = j.rowCount, n = j.colCount, (k === -1 || b === -1 || k < b + d && b < k + m) && (l === -1 || c === -1 || l < c + e && c < l + n))) for (o = j.length, p = 0; p < o; p++) f = j[p], 0 === a ? f.bh() : f.fh()
                },
                Bg: function(a, b, c, d) {
                    this.visit(1, a, b, c, d)
                },
                gh: function(a, b, c) {
                    var d, e, f, g, h, i, j, k = this.Ze,
                        l = c ? 1 : -1;
                    for (e = 0; e < k.length; e++) if (f = this[k[e]]) for (g in f) if (h = f[g], d = h, d && (d.row === -1 || d.row <= a && a < d.row + d.rowCount) && (d.col === -1 || d.col <= b && b < d.col + d.colCount)) for (i = h.length, j = 0; j < i; j++) h[j].delay += l
                },
                og: function() {},
                ng: function() {}
            }), Z = ja.CalcService = function() {
                function a() {
                    var a = this;
                    a.jh = {}, a.autoCalculation = !0, a.maximumIterations = 1e3, a.maximumChange = .01, a.kh = new ja.Parser, a.lh = new ja.Evaluator(a), a.useR1C1 = !1, a.mh = 0, a.Bka = 0, a.nh = ja.CalcOperatorAdjustor && new ja.CalcOperatorAdjustor
                }
                return a
            }(), Z.prototype = {
                dispose: function() {
                    var a = this;
                    a.jh = {}, a.oh = p
                },
                cloneFrom: function(a) {
                    var b = this;
                    b.useR1C1 = a.useR1C1, b.mh = a.mh, b.qh = a.qh
                },
                ih: function() {
                    return this.nh
                },
                getSourceModel: function(a) {
                    var b = this.jh[a.id];
                    return b || (b = this.jh[a.id] = new L(this, a), a.setCalcSourceModel(b), a.setCalcService(this)), b
                },
                getGlobalSourceModel: function(a) {
                    return this.oh || (a = a || new K, this.oh = new L(this, a), a.setCalcSourceModel(this.oh)), this.oh
                },
                setSourceModel: function(a, b) {
                    this.jh[a.id] = b, b.setCalcService(this)
                },
                getAllSouceModels: function() {
                    var a, b = [],
                        c = this.jh;
                    for (a in c) b.push(c[a]);
                    return b
                },
                removeSource: function(a) {
                    var b = this.jh[a.id];
                    b && (this.nh.ph(a), delete this.jh[a.id])
                },
                clearSource: function() {
                    this.jh = {}, this.clearDirties()
                },
                ignoreDirty: function() {
                    return this.qh
                },
                suspend: function(a) {
                    this.mh++, this.qh = !! a || a
                },
                resume: function(a) {
                    var b = this;
                    b.mh--, b.mh < 0 && (b.mh = 0), b.IsSuspended() || (b.rh = p, b.qh = !1, b.recalculateAll(a))
                },
                suspendAdjust: function() {
                    this.Bka++
                },
                resumeAdjust: function() {
                    var a = this;
                    a.Bka--, a.Bka < 0 && (a.Bka = 0)
                },
                isAdjustSuspended: function() {
                    return this.Bka > 0
                },
                clearDirties: function() {
                    var a, b, c, d = this,
                        e = [d.sh, d.th, d.uh, d.vh];
                    for (c = 0; c < e.length; c++) for (a = e[c]; a;) b = a.eh, b ? (a.eh = b.dh = q, a = b) : a = p;
                    d.sh = d.wh = d.th = d.xh = d.uh = d.yh = d.vh = d.zh = p
                },
                resumeWithoutCalc: function() {
                    this.mh = 0, this.clearDirties()
                },
                IsSuspended: function() {
                    return this.mh > 0
                },
                recalculate: function(a, b, c, d) {
                    var e = this.getSourceModel(a);
                    c === -1 ? e.Ag(b, 0, 1, e.cC()) : b === -1 ? e.Ag(0, c, e.rC(), 1) : e.Ag(b, c, 1, 1), this.IsSuspended() || this.recalculateAll(!1, d)
                },
                recalculateByName: function(a, b) {
                    var c, d;
                    b && (c = this.getSourceModel(a), d = c.mg(za(b), !0), this.pg(d, 3), this.IsSuspended() || this.recalculateAll(!1))
                },
                recalcRange: function(a, b, c, d, e) {
                    var f = this.getSourceModel(a);
                    c === -1 ? f.Ag(b, 0, d, f.cC()) : b === -1 ? f.Ag(0, c, f.rC(), e) : f.Ag(b, c, d, e), this.IsSuspended() || this.recalculateAll(!1)
                },
                recalculateAll: function(a, b) {
                    var c, d, e, f, g, h = this;
                    if (!h.IsSuspended()) {
                        b || h.lh.startCache(), d = h.jh;
                        for (e in d) c = d[e], c.getSource().startCalculation(), a !== !1 ? (f = c.cC(), g = c.rC(), c.yg(0, f), c.zg(0, g), c.Ag(0, 0, g, f)) : b || c.Cg();
                        if (h.Gg(), !b) for (e in d) c = d[e], c.Fg();
                        for (e in d) c = d[e], c.getSource().endCalculation();
                        b || h.lh.endCache()
                    }
                },
                Ah: function(a, b) {
                    for (var c = a.length, d = b; d;) a[c] = d, c++, d = d.eh
                },
                Gg: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, r, s, t, u, v, w, x, y, z, A, B, C;
                    if (void 0 === a && (a = !0), b = this, d = !1, a) {
                        for (s = [], b.uh && b.Ah(s, b.uh); b.th;) {
                            for (e = b.th.ah, k = e.cC(), g = 0; g < k; g++) b.pg(e.qg(b.th.row, g, !0), 0);
                            b.Bh(b.th, 1)
                        }
                        for (; b.uh;) {
                            if (e = b.uh.ah, j = e.rC(), j > 0) for (f = 0; f < j; f++) b.pg(e.qg(f, b.uh.column, !0), 0);
                            else b.uh.Bg();
                            b.Bh(b.uh, 2)
                        }
                        for (l = b.sh; l; l = l.eh) {
                            for (e = l.ah, h = l.row, i = l.column, m = e.rg(h, !1), n = e.sg(i, !1), o = e.ug(!1), l.Bg(), m && m.Bg(), n && n.Bg(), o && o.Bg(h, i, 1, 1); b.th;) {
                                for (e = b.th.ah, k = e.cC(), g = 0; g < k; g++) b.pg(e.qg(b.th.row, g, !0), 0);
                                b.Bh(b.th, 1)
                            }
                            for (; b.uh;) {
                                for (t = !1, r = 0; r < s.length; r++) if (s[r] === b.uh) {
                                    t = !0;
                                    break
                                }
                                if (t) b.Bh(b.uh, 2);
                                else {
                                    for (s[s.length] = b.uh, e = b.uh.ah, j = e.rC(), f = 0; f < j; f++) b.pg(e.qg(f, b.uh.column, !0), 0);
                                    b.Bh(b.uh, 2)
                                }
                            }
                        }
                        for (p = b.vh; p; p = p.eh) p.Bg()
                    }
                    for (l = b.sh; l; l = c) e = l.ah, u = e.rC(), v = e.cC(), c = l.eh, l.row < u && l.column < v ? (ja.supportRowColumnFormula && (n = e.sg(l.column, !1), n && (n.delay = 0)), l.delay = 0) : b.Bh(l, 0);
                    for (p = b.vh; p; p = p.eh) p.delay = 0;
                    for (l = b.sh; l; l = l.eh) e = l.ah, f = l.row, g = l.column, m = e.rg(f, !1), n = e.sg(g, !1), o = e.ug(!1), l.gh(!0), m && m.gh(!0), n && n.gh(!0), o && o.gh(f, g, !0);
                    for (p = b.vh; p; p = p.eh) p.gh(!0);
                    do {
                        for (d = !1, l = b.sh; l; l = c) if (c = l.eh, 0 === l.delay) {
                            if (e = l.ah, f = l.row, g = l.column, m = e.rg(f, !1), n = e.sg(g, !1), n && n.delay) continue;
                            o = e.ug(!1), e.recalculateCell(f, g), b.Bh(l, 0), l.gh(!1), m && m.gh(!1), n && n.gh(!1), o && o.gh(f, g, !1), d = !0
                        }
                        for (p = b.vh; p; p = p.eh) 0 === p.delay && (e = p.ah, e.recalculateNameID(p.name), b.Bh(p, 3), p.gh(!1), d = !0)
                    } while (d);
                    if (b.sh) {
                        w = !0;
                        for (x in b.jh) y = b.jh[x], z = y.getSource(), z.clearValueCache && z.clearValueCache();
                        for (r = 0; w && r < b.maximumIterations; r++) for (w = !1, l = b.sh; l; l = c) c = l.eh, A = l.ah, f = l.row, g = l.column, B = A.getSource().getValue(f, g), A.recalculateCell(f, g), C = A.getSource().getValue(f, g), b.Ch(B, C) >= b.maximumChange && (w = !0);
                        for (l = b.sh; l; l = c) c = l.eh, l.eh = q, c && (c.dh = q);
                        b.sh = b.wh = q
                    }
                },
                Ch: function(a, b) {
                    var c, d;
                    return a = a || 0, b = b || 0, c = parseFloat(a), d = parseFloat(b), r(d - c)
                },
                initParserContext: function(a) {
                    var b = this.Dh;
                    b || (this.Dh = a.getParserContext(this.useR1C1))
                },
                getParserContext: function(a) {
                    var b = this,
                        c = b.Dh;
                    return c || (a ? b.Dh = c = a.getParserContext(b.useR1C1) : c = new ja.ParserContext(p, b.useR1C1, C(0, 0), p)), c.setSource(a), c
                },
                parse: function(a, b, c, d, e, f, g) {
                    var h, i, j = this,
                        k = j.rh,
                        l = j.getParserContext(a);
                    return l.useR1C1 = !g && j.useR1C1, l.ignoreError = f, l.row = c, l.column = d, l.culture = e, k ? (l.useR1C1 || (l.useR1C1 = !0, b = j.kh.a1ToR1C1(l, b)), (h = k[b]) ? h : (i = j.kh.parse(l, b), k[b] = i, i)) : j.kh.parse(l, b)
                },
                unparse: function(a, b, c, d, e, f) {
                    var g, h = this.getParserContext(a);
                    return h.useR1C1 = this.useR1C1, h.row = c, h.column = d, h.culture = e, f && (h.Eh = !0, h.useR1C1 = !1), g = this.kh.unparse(h, b), h.Eh = !1, g
                },
                Dg: function(a) {
                    return !!a.dh || a === this.sh
                },
                pg: function(a, b) {
                    var c = this,
                        d, e;
                    if (0 === b) d = c.sh, e = c.wh;
                    else if (1 === b) d = c.th, e = c.xh;
                    else if (2 === b) d = c.uh, e = c.yh;
                    else {
                        if (3 !== b) return;
                        d = c.vh, e = c.zh
                    }
                    a && !a.dh && a !== d && (d ? e.eh = a : 0 === b ? c.sh = a : 1 === b ? c.th = a : 2 === b ? c.uh = a : c.vh = a, a.dh = e, a.eh = p, 0 === b ? c.wh = a : 1 === b ? c.xh = a : 2 === b ? c.yh = a : c.zh = a)
                },
                Bh: function(a, b) {
                    var c, d, e, f = this;
                    if (0 === b) c = f.sh;
                    else if (1 === b) c = f.th;
                    else if (2 === b) c = f.uh;
                    else {
                        if (3 !== b) return;
                        c = f.vh
                    }
                    a && (a.dh || a === c) && (d = a.dh, e = a.eh, d ? d.eh = e : 0 === b ? f.sh = e : 1 === b ? f.th = e : 2 === b ? f.uh = e : f.vh = e, e ? e.dh = d : 0 === b ? f.wh = d : 1 === b ? f.xh = d : 2 === b ? f.yh = d : f.zh = d, a.dh = p, a.eh = p)
                },
                Eg: function(a) {
                    return a.dh || a === this.th
                },
                isDirtyColumn: function(a) {
                    return a.dh || a === this.uh
                },
                Hg: function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l, m, n, o = c.row || 0,
                        r = c.col || 0,
                        s = f ? f.row : o,
                        t = f ? f.col : r,
                        u = a.getEvaluatorContext(c, d, f),
                        v = 4 === arguments.length && d,
                        w = this.lh.evaluateExpression(b, u, e, v, v);
                    if (d && arguments.length <= 5) return w;
                    if (Ha.Fh(w)) {
                        if (g = w.getRowCount(0), h = w.getColumnCount(0), 1 !== w.getRangeCount()) return x;
                        try {
                            if (i = d ? o - s : o - w.getRow(0), j = d ? r - t : r - w.getColumn(0), k = C(0, 0), 1 === g && 1 === h);
                            else if (1 === g && h > 1 && j >= 0 && j < h) k.col = j;
                            else if (g > 1 && 1 === h && i >= 0 && i < g) k.row = i;
                            else {
                                if (!(d && i < g && j < h)) return d ? A : x;
                                k.row = i, k.col = j
                            }
                            w = w.getValue(k, 0)
                        } catch (a) {
                            return x
                        }
                    } else if (Ha.Ca(w)) if (d) {
                        if (l = w, m = l.getRowCount(), n = l.getColumnCount(), 1 !== m && o - s >= m || 1 !== n && r - t >= n) return A;
                        w = w.getValue(1 === m ? 0 : o - s, 1 === n ? 0 : r - t)
                    } else w = w.getValueByIndex(0);
                    return w === q || w === p ? e === !1 ? w : 0 : w
                },
                Gh: function(a, b, c) {
                    var d = this,
                        e = d.Dh;
                    return e || (d.Dh = e = a.getParserContext(d.useR1C1)), e.useR1C1 = d.useR1C1, e.row = b, e.column = c, e
                },
                evaluate: function(a, b, c, d) {
                    var e = this,
                        f = b instanceof I ? b : e.parse(a, b, c, d);
                    return e.lh.evaluateExpression(f, a.getEvaluatorContext(C(c, d), !1), !1)
                },
                onClearExpr: function(a, b) {
                    this.lh && this.lh.asyncManager.clearCell(a, b)
                }
            }, $ = ja.Hh = function(a, b, c) {
                var d = new I(5);
                return b && (d.source = b), c && (d.endSource = c), d.value = a, d
            }, ja.Ih = $(y), _ = ja.Jh = function(a, b) {
                var c = new I(7);
                return c.arguments = b, a instanceof I ? (c.
                    function = a.
                    function, c.functionName = a.functionName) : (c.
                    function = a.name && a, c.functionName = a.name || a), c
            };

            function Da(a, b) {
                var c = new I(12);
                return c.value = a, c.needExpendIndexs = b, c
            }
            aa = ja.Kh = function(a, b, c) {
                var d = new I(9);
                return d.operatorType = a, d.value = b, d.value2 = c, d
            }, ba = ja.Lh = function(a) {
                var b = new I(10);
                return b.value = a, b
            };

            function Ea(a) {
                var b = new I(3);
                return b.value = a, b
            }
            function Fa(a) {
                var b = new I(2);
                return b.value = a, b
            }
            function Ga(a, b, c, d, e) {
                return {
                    expr: a,
                    acceptsArray: b,
                    acceptsRef: c,
                    index: d,
                    context: e
                }
            }
            ca = ja.Mh = function(a, b, c, d, e, i, j) {
                var k, l, m, n, o, q, r, s, t, u, v, w, y, B, D, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, ca, da, ea, fa, ga, ha = a.row,
                    ia = a.column,
                    ka = [],
                    la = 0,
                    ma = a.arrayIdentity ? a.arrayIdentity.row : ha,
                    na = a.arrayIdentity ? a.arrayIdentity.col : ia;
                for (ka[la] = {
                    expr: b,
                    acceptsArray: i || !1,
                    acceptsRef: j || !1,
                    index: -1
                }, k = 0, l = 0, m = !1, n = d, o = e, q = !1; la >= 0;) {
                    if (r = ka[la--], s = r.acceptsArray, t = r.acceptsRef, b = r.expr, u = p, b) {
                        if (7 === b.type) {
                            if (J = b, L = J.arguments.length, !J.
                                    function) {
                                if (!a) {
                                    u = $(z);
                                    continue
                                }
                                J.
                                    function = a.getFunction(J.functionName)
                            }
                            if (K = J.
                                    function, M = r.index, I = r.neeedExpendindexs, M < 0 ? (r.arrayArgumentEvaluateMode = q, r.arrayFormulaCatchValue = c, K && K.arrayArgumentEvaluateMode && (q = K.arrayArgumentEvaluateMode), r.args = []) : (K && K.acceptsArray(M) ? k-- : m && (I || (I = [], r.neeedExpendindexs = I), J.arguments[M] !== v, I.push(M)), r.args.push(v)), M === L - 1) {
                                if (q = r.arrayArgumentEvaluateMode, c = r.arrayFormulaCatchValue, N = r.args, O = !1, N && N.length > 0) for (P = 0; P < N.length; P++) if (N[P] !== J.arguments[P]) {
                                    O = !0;
                                    break
                                }
                                u = O ? _(J, N) : b, I && I.length > 0 && (u = Da(u, I), m = !0), t && s || !K || !K.returnReference || !K.returnReference() || (m = !0)
                            } else 0 === M && K && 3 === K.arrayArgumentEvaluateMode && 3 === q && (q = 0), m = !1, M++, r.index = M, K && K.acceptsArray(M) && k++, ka[++la] = r, ka[++la] = {
                                expr: J.arguments[M],
                                acceptsArray: !! K && K.acceptsArray(M),
                                acceptsRef: !! K && K.acceptsReference(M),
                                index: -1
                            }
                        } else if (1 === b.type && b.sf()) l && (y = b.source !== ja.BangSource && b.source || a.source, B = y.getRowCount(), D = y.getColumnCount(), G = b.rowRelative ? (b.row + ma) % g % B : b.row, H = b.columnRelative ? (b.column + na) % h % D : b.column, G = G < 0 ? G + B : G, H = H < 0 ? H + D : H, b = E(b.source && y, p, G, H, !1, !1));
                        else if (1 === b.type || 13 === b.type) {
                            if (13 === b.type) {
                                if (Q = b, w = Q.getRange(ha, ia), !w) {
                                    u = b, v = b;
                                    continue
                                }
                                b = F(Q.source() === a.source ? p : Q.source(), p, w.row, w.col, w.row + w.rowCount - 1, w.col + w.colCount - 1)
                            }
                            R = b.source !== ja.BangSource && b.source, S = b, l && (y = R || a.source, B = g, D = h, T = S.rowRelative ? (S.row + ma) % B : S.row, U = S.columnRelative ? (S.column + na) % D : S.column, V = S.endRowRelative ? (S.endRow + ma) % B : S.endRow, W = S.endColumnRelative ? (S.endColumn + na) % D : S.endColumn, T = T < 0 ? T + B : T, U = U < 0 ? U + D : U, V = V < 0 ? V + B : V, W = W < 0 ? W + D : W, T > V && (X = T, T = V, V = X), U > W && (X = U, U = W, W = X), B = y.getRowCount(), D = y.getColumnCount(), T >= B ? (T %= B, V %= B) : V >= B && (V = B - 1), U >= D ? (U %= D, W %= D) : W >= D && (W = D - 1), b.row === f && (T = V = f), b.column === f && (U = W = f), b = F(R, b.endSource, T, U, V, W, !1, !1, !1, !1)), t && (s || !c && 1 !== q && 3 !== q) || ha < 0 || ia < 0 || (k > 0 && !c && 1 !== q && 3 !== q || 0 === k || 2 === q ? (w = S.getRange(ha, ia), c || (t || s) && 1 === q ? !S.isFullColumn && 1 !== w.rowCount && n >= w.rowCount || !S.isFullRow && 1 !== w.colCount && o >= w.colCount ? u = $(A) : (G = (S.isFullColumn ? 0 : w.row) + (1 === w.rowCount ? 0 : n), H = (S.isFullRow ? 0 : w.col) + (1 === w.colCount ? 0 : o), u = E(R, b.endSource, G, H, !1, !1)) : w.rowCount > 1 && w.colCount > 1 || w.rowCount > 1 && !S.isFullColumn && (ha < w.row || ha >= w.row + w.rowCount) || w.colCount > 1 && !S.isFullRow && (ia < w.col || ia >= w.col + w.colCount) ? u = $(x) : (G = S.isFullColumn || w.rowCount > 1 ? ha : w.row, H = S.isFullRow || w.colCount > 1 ? ia : w.col, u = E(R, b.endSource, G, H, !1, !1))) : m = !0)
                        } else if (9 === b.type) Y = b.operatorType >= 15, r.index === -1 ? (r.index = b.value2 ? 0 : 1, ka[++la] = r, ka[++la] = Ga(b.value, Y, Y, -1)) : 0 === r.index ? (v !== b.value && (u = aa(b.operatorType, v, b.value2), r.expr = u), m && (I = [], I.push(0), r.neeedExpendindexs = I, m = !1), r.index = 1, ka[++la] = r, ka[++la] = Ga(b.value2, Y, Y, -1)) : (u = b.value2 && v !== b.value2 ? aa(b.operatorType, b.value, v) : b, I = r.neeedExpendindexs, m && (I || (I = []), I.push(1)), I && (u = Da(u, I), m = !0));
                        else if (10 === b.type) r.index === -1 ? (r.index = 0, ka[++la] = r, ka[++la] = Ga(b.value, s, t, -1)) : b.value !== v && (u = ba(v));
                        else if (8 === b.type) 1 === r.index ? (l--, u = v, r.context && (a = r.context)) : (l++, ka[++la] = Ga(b, s, t, 1, a), ca = a, b.source ? (da = b.source === ja.BangSource ? a.source : b.source, ca = new ja.EvaluateContext(da), ca.cloneFrom(a), Z = da.getCustomName(b.value)) : (Z = a.getName(b.value), a.source.getCustomName(b.value) || (ca = new ja.GloableEvaluateContext(a.source), ca.cloneFrom(a))), Z || (Z = $(z)), a = ca || a, ka[++la] = Ga(Z, s, t, -1, a));
                        else if (6 === b.type) if (ea = b, !s && (k > 0 || c || 1 === q || 3 === q)) m = !0;
                        else if (!s && 0 === k) if (n >= ea.value.RowCount && ea.value.RowCount > 1 || o >= ea.value.colCount && ea.value.colCount > 1) u = $(A);
                        else try {
                                1 === ea.value.RowCount && (n = 0), 1 === ea.value.colCount && (o = 0), fa = ea.value.getValue(n, o), "string" == typeof fa ? u = Ea(fa) : "number" == typeof fa && (u = Fa(fa)), ga = new ja.Parser, u = ga.parse(a.source.getParserContext(a.useR1C1, C(0, 0)), "" + ea.value.getValue(n, o))
                            } catch (a) {
                                u = $(A)
                            }
                    } else;
                    u === p && (u = b), v = u
                }
                return u
            };

            function Ha() {}
            function Ia(a, b) {
                return typeof a === la || a instanceof Date || !b && (typeof a === na || !isNaN(a) && !isNaN(parseFloat(a)))
            }
            Ha.Na = Ia;

            function Ja(a) {
                return a instanceof v
            }
            Ha.vf = Ja;

            function Ka(a) {
                return Ja(a) && a._code === ya[5]
            }
            Ha.jja = Ka;

            function La(a) {
                return a instanceof G
            }
            Ha.Ca = La;

            function Ma(a) {
                return a instanceof H
            }
            Ha.Fh = Ma;

            function Na(a) {
                return isNaN(a) || !isFinite(a) ? B : a
            }
            Ha.Nh = Na;

            function Oa(a, b, c, e, f, g, h) {
                var i, j, k;
                if (a && a.length && a.rowCount && a.colCount) return a;
                if (La(a)) i = a.toArray(b, c, e, f, g), i.isArray = !0;
                else if (Ma(a)) i = a.toArray(b, c, e, f, g, h), i.isReference = !0;
                else if (d(a) && a.length > 0) {
                    if (i = [], d(a[0])) return Ha.Oh(a, b, !0);
                    for (j = 0; j < a.length; j++) k = Pa(a[j], b, !1), k === Ha.CalcConvertedError && (i.isConvertError = !0), i.push(k);
                    i.rowCount = 1, i.colCount = a.length, i.rangeCount = 1
                } else a = Pa(a, b, !0), e && Ja(a) ? (i = [x], i.isError = !0) : a === Ha.CalcConvertedError ? (i = [Ha.CalcConvertedError], i.isConvertError = !0) : c ? (i = [], i.push(a)) : (i = [
                    []
                ], i[0].push(a)), i.rowCount = 1, i.colCount = 1, i.rangeCount = 1;
                return i
            }
            Ha.Ph = Oa;

            function Pa(a, b, c, d) {
                var e, f, g;
                if (Ja(a)) return a;
                if (e = {
                        value: p
                    }, f = Ha.CalcConvertedError, 0 !== b && Qa(a, d)) return f;
                switch (b) {
                    case 1:
                    case 5:
                        c && 5 !== b ? a = Wa(a, e) ? e.value : f : typeof a === la || (a = a instanceof Date ? j.Ra(a) : f);
                        break;
                    case 4:
                        typeof a === ma ? (g = ia.l.Qa(a), a = g !== q && g !== p ? j.Ra(g) : f) : c ? a = Wa(a, e) ? e.value : f : typeof a === la || a instanceof Date || (a = f);
                        break;
                    case 3:
                        c ? a = Wa(a, e) ? e.value : f : typeof a !== na && (a = f);
                        break;
                    case 2:
                        a = a === p || a === q ? "" : "" + a
                }
                return a
            }
            Ha.wf = Pa;

            function Qa(a, b) {
                return b && (a === p || a === q || typeof a === ma && "" === a.trim())
            }
            Ha.u$a = Qa;

            function Ra(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, o, r, s;
                if (!a || !a.length || !a[0].length) return d = [], d.isError = !0, [
                    [x]
                ];
                if (0 === b) return a;
                if (e = n[b], f = a.length, g = a[0].length, k = {
                        value: p
                    }, l = !1, m = !1, o = Ha.CalcConvertedError, d = a[e], !d) for (d = [], a[e] = d, r = 0; r < f; r++) for (h = a[r], i = d[r] = [], s = 0; s < g; s++) if (j = h[s], Ja(j)) l || (d.isError = !0, l = !0), i.push(j);
                else {
                    switch (b) {
                        case 1:
                        case 5:
                            c && 5 !== b ? Wa(j, k) ? j = k.value : (m || (m = !0, d.isConvertError = !0), j = 0) : typeof j === la || j instanceof Date || (m || (m = !0, d.isConvertError = !0), j = o);
                            break;
                        case 3:
                            c ? Xa(j, k) ? j = k.value : (m || (m = !0, d.isConvertError = !0), j = !1) : typeof j !== na && (m || (m = !0, d.isConvertError = !0), j = o);
                            break;
                        case 2:
                            j = j === p || j === q ? "" : "" + j
                    }
                    i.push(j)
                }
                return d
            }
            Ha.Oh = Ra;

            function Sa(a) {
                return isNaN(a) || !isFinite(a)
            }
            Ha.Qh = Sa;

            function Ta(a) {
                var b = Va(a);
                if (r(b) < 1e21) return parseInt(b, 10);
                throw m().Exp_InvalidCast
            }
            Ha.Rh = Ta;

            function Ua(a, b) {
                var c = Wa(a, b);
                return !!c && (r(b.value) < 1e21 && (b.value = parseInt(b.value, 10), !0))
            }
            Ha.Sh = Ua;

            function Va(a) {
                var b = {
                    value: 0
                };
                if (Wa(a, b)) return b.value;
                throw m().Exp_InvalidCast
            }
            Ha.Pa = Va, da = {
                JAN: 1,
                FEB: 2,
                MAR: 3,
                APR: 4,
                MAY: 5,
                JUN: 6,
                JUL: 7,
                AUG: 8,
                SEP: 9,
                OCT: 10,
                NOV: 11,
                DEC: 12
            };

            function Wa(a, b) {
                var c, d, e, f, g, h, i = p;
                if (!a) return b.value = 0, !0;
                c = typeof a;
                try {
                    if (c === la) i = a;
                    else if (c === ma) {
                        if (a = a.trim(), 0 === a.length) return b.value = 0, !0;
                        if (d = ja.Parser.numberDecimalSeparator, e = ja.Parser.numberGroupSeparator, "." !== d && "." !== e && a.indexOf(".") >= 0 || "," !== d && "," !== e && a.indexOf(",") >= 0) return !1;
                        if (f = !1, "%" === a.charAt(a.length - 1) && (f = !0, a = a.substr(0, a.length - 1)), "$" === a[0]) return !1;
                        if (a.indexOf(d) !== a.lastIndexOf(d)) return !1;
                        if (a.length >= 2 && "0" === a[0] && "x" === a[1]) return !1;
                        if (i = (+a).valueOf(), Ha.Qh(i)) {
                            if (g = a.charCodeAt(0), g |= 32, a.length > 4 && g >= 96 && g <= 122 && (h = a[0] + a[1] + a[2], h = h.toUpperCase(), !da[h])) return !1;
                            if ("/" === a[0] || "/" === a[a.length - 1]) return !1;
                            if (i = new Date(a), Ha.Qh(i.valueOf())) return !1;
                            i = j.Ra(i)
                        }
                        f && (i /= 100)
                    } else if (c === na) i = a ? 1 : 0;
                    else {
                        if (!(a instanceof Date)) return !1;
                        i = j.Ra(a)
                    }
                } catch (a) {
                    return !1
                }
                return b.value = i, !0
            }
            Ha.Th = Wa;

            function Xa(a, b) {
                try {
                    if (a) if (typeof a === na);
                    else if (a instanceof Date) a = 0 !== j.Ra(a);
                    else {
                        if (!Ia(a)) return !1;
                        a = 0 !== a
                    } else a = !1
                } catch (a) {
                    return !1
                }
                return b.value = a, !0
            }
            Ha.Uh = Xa;

            function Ya(a) {
                if (!a) return !1;
                if (typeof a === na) return a;
                if (a instanceof Date) return 0 !== j.Ra(a);
                if (Ia(a)) return 0 !== a;
                if (Ja(a)) return !1;
                throw m().Exp_InvalidCast
            }
            Ha.Vh = Ya;

            function Za(a) {
                try {
                    if (a === q || a === p) return "";
                    if (typeof a === na) return a ? oa : pa;
                    if (typeof a === ma) return a;
                    if (a instanceof Date) return "" + j.Ra(a);
                    if (La(a)) throw m().Exp_InvalidCast;
                    return "" + a
                } catch (a) {
                    throw m().Exp_InvalidCast
                }
            }
            Ha.bc = Za;

            function $a(a) {
                var b = {
                    value: p
                };
                if (_a(a, b)) return b.value;
                throw m().Exp_InvalidCast
            }
            Ha.Wh = $a;

            function _a(a, b) {
                var c, d, e, f;
                if (a) if (a instanceof Date) b.value = new Date(a);
                else if (typeof a === ma) {
                    if (c = ia.l.Qa(a), !c) if (isNaN(a)) {
                        if (c = new Date(a), isNaN(c.valueOf())) return !1;
                        try {
                            if (d = /^[-+=\s]*(\d+)\W+(\d+)\W+(\d+)$/, e = k.ib(k.Db(a.replace(/ |\n/g, ""), " "), " "), f = d.exec(e), f && 4 === f.length && (f.indexOf("" + c.getYear()) === -1 || f.indexOf("" + c.getMonth()) === -1 || f.indexOf("" + c.getDate()) === -1)) return !1
                        } catch (a) {
                            return !1
                        }
                    } else if (c = ia.l.Xb(parseFloat(a)), !c) return !1;
                    b.value = c
                } else {
                    if (typeof a !== la) return !1;
                    b.value = ia.l.Xb(a)
                } else b.value = ia.l.Xb(0);
                return !0
            }
            Ha.Xh = _a, Ha.CalcConvertedError = {}, ja.Convert = Ha, ea = function() {
                function a() {}
                return a.Yh = function(a, b) {
                    var c = 16777216;
                    return a === b || r(a - b) < r(a) / (c * c)
                }, a.getArrayValue = function(a, b, c) {
                    return a ? b < a.getRowCount() && c < a.getColumnCount() ? a.getValue(b, c) : c >= a.getColumnCount() && 1 === a.getColumnCount() && b < a.getRowCount() ? a.getValue(b, 0) : b >= a.getRowCount() && 1 === a.getColumnCount() && c < a.getColumnCount() ? a.getValue(0, c) : x : x
                }, a.tryExtractToSingleValue = function(a) {
                    var b, c = !0;
                    return (Ma(a) || La(a)) && (b = Oa(a, 0, !1, !0), b.isError ? a = b[0] : 1 === b.rowCount && 1 === b.colCount ? a = b[0][0] : (a = b, c = !1)), {
                        value: a,
                        success: c
                    }
                }, a
            }(), ja.Zh = ea, fa = function() {
                function a() {}
                return a.getLength = function(a, b) {
                    return La(a) ? a.getRowCount() * a.getColumnCount() : Ma(a) ? (b = b ? b : 0, a.getRowCount(b) * a.getColumnCount(b)) : void 0
                }, a.getRowCount = function(a, b) {
                    return La(a) ? a.getRowCount() : Ma(a) ? (b = b ? b : 0, a.getRowCount(b)) : void 0
                }, a.getColumnCount = function(a, b) {
                    return La(a) ? a.getColumnCount() : Ma(a) ? (b = b ? b : 0, a.getColumnCount(b)) : void 0
                }, a.getValueByIndex = function(a, b, c) {
                    if (La(a)) return a.getValueByIndex(b);
                    if (Ma(a)) {
                        c = c ? c : 0;
                        var d = a.getColumnCount(c);
                        return a.getValue(c, parseInt(b / d, 10), b % d)
                    }
                }, a.getValue = function(a, b, c, d) {
                    return La(a) ? a.getValue(b, c) : Ma(a) ? (d = d ? d : 0, a.getValue(d, b, c)) : void 0
                }, a
            }(), ja.CalcArrayHelper = fa, function(a) {
                a[a.normal = 0] = "normal", a[a.allwaysExpand = 1] = "allwaysExpand", a[a.neverExpand = 2] = "neverExpand"
            }(ka.ArrayArgumentEvaluateMode || (ka.ArrayArgumentEvaluateMode = {})), ga = function() {
                function a(a, b, c, d) {
                    var e = this,
                        f = arguments.length;
                    e.name = a, e.minArgs = f < 2 ? 0 : b, e.maxArgs = f < 3 ? 0 : c, e.$h = d, e.typeName = ""
                }
                return a.prototype = {
                    description: function() {
                        var a = this,
                            b = m()._h;
                        return a.$h ? a.$h : b && b[a.name]
                    },
                    acceptsArray: function(a) {
                        return !1
                    },
                    acceptsReference: function(a) {
                        return !1
                    },
                    acceptsError: function(a) {
                        return !1
                    },
                    acceptsMissingArgument: function(a) {
                        return !1
                    },
                    isVolatile: function() {
                        return !1
                    },
                    isContextSensitive: function() {
                        return !1
                    },
                    isBranch: function() {
                        return !1
                    },
                    findTestArgument: function() {
                        return -1
                    },
                    findBranchArgument: function(a) {
                        return -1
                    },
                    expandRows: function() {
                        return !0
                    },
                    expandColumns: function() {
                        return !0
                    },
                    precedentReference: function() {
                        return !0
                    },
                    returnReference: function() {
                        return !1
                    },
                    evaluate: function(a) {},
                    evaluateWithContext: function(a, b) {
                        var c = this,
                            d = b;
                        return c.isContextSensitive() && (d = b.slice(), d.unshift(a)), c.evaluate.apply(c, d)
                    },
                    toJSON: function() {
                        var a, b = {};
                        for (a in this) this.hasOwnProperty(a) && (b[a] = this[a]);
                        return b
                    },
                    fromJSON: function(a) {
                        if (a) for (var b in a) a[b] !== q && (this[b] = a[b])
                    }
                }, a.ai = function(a, b, c) {
                    var d, e = new ka.Function(a, 0, 255);
                    if (b && "function" == typeof b && (e.evaluate = b), c) for (d in c) c.hasOwnProperty(d) && "override" !== d && (e[d] = c[d]);
                    return e
                }, a
            }(), ka.Function = ga, ha = function(a) {
                i(b, a);

                function b(b, c, d, e) {
                    a.call(this, b, c, d, e)
                }
                return b
            }(ga), e(ha.prototype, {
                isContextSensitive: function() {
                    return !0
                },
                evaluate: function(a, b) {
                    return this.evaluateAsync.apply(this, arguments)
                },
                evaluateAsync: function(a, b) {
                    this.evaluate.apply(this, arguments)
                },
                defaultValue: function() {
                    return 0
                },
                evaluateMode: function() {
                    return 0
                },
                evaluateWhenArgumentsIsSame: function() {
                    return !0
                },
                interval: function() {
                    return 1e4
                }
            }), ka.AsyncFunction = ha, ka.AsyncFunctionEvaluateMode = {
                onRecalculation: 0,
                calculateOnce: 1,
                onInterval: 2
            }, ka.bi = {}, ka.ci = {};

            function ab(a, b) {
                return ka.ci[za(a)] = b, b
            }
            ka.defineGlobalCustomFunction = ab;

            function bb(a) {
                if (!a) return db();
                a = za(a);
                var b = ka.bi,
                    c = ka.ci;
                return b && b[a] || c && c[a]
            }
            ka.findGlobalFunction = bb;

            function cb(a) {
                if (!a) return ka.bi = {}, void(ka.ci = {});
                a = za(a);
                var b = ka.bi,
                    c = ka.ci;
                b[a] ? delete b[a] : c[a] && delete c[a]
            }
            ka.removeGlobalFunction = cb;

            function db() {
                var a, b = ka.bi,
                    c = ka.ci,
                    d = [];
                for (a in b) d.push(b[a]);
                for (a in c) d.push(c[a]);
                return d
            }
            a.exports = ja
        }()
}, function(a, b) {
    a.exports = GC.Spread.Common
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a, b, d, e, f, g, h, i, j, k, l, m, n, o, p, q = c(26),
                r = c(25),
                s = q.j.G,
                t = q.j.Ia,
                u = void 0,
                v = null,
                w = "string",
                x = "boolean",
                y = "TRUE",
                z = "FALSE",
                A = "ARRAY",
                B = r.ErrorList,
                C = r.Expression,
                D = q.u,
                E = function() {
                    return q.C(r.SR)()
                },
                F = "Exp_FormulaInvalidChar",
                G = "Exp_FormulaInvalid",
                H = "Exp_NoSyntax";

            function I() {
                throw E()[G]
            }
            function J(a, b, c) {
                throw D.Kb(E()[c || F], [a, b])
            }
            r.OperatorType = {
                Plus: 0,
                Negate: 1,
                Percent: 2,
                Add: 3,
                Sub: 4,
                Mul: 5,
                Div: 6,
                Exp: 7,
                Concat: 8,
                EqualTo: 9,
                NotEqualTo: 10,
                LessThan: 11,
                LessThanOrEqualTo: 12,
                GreaterThan: 13,
                GreaterThanOrEqualTo: 14,
                Range: 15,
                Union: 16,
                Intersect: 17
            }, a = r.di = ["+", "-", "%", "+", "-", "*", "/", "^", "&", "=", "<>", "<", "<=", ">", ">=", ":", ",", " "], b = {
                ":": 1,
                "^": 2,
                " ": 3,
                "*": 4,
                "/": 4,
                ",": 5,
                "+": 6,
                "-": 6,
                "&": 7,
                "<": 8,
                "=": 8,
                ">": 8,
                ">=": 8,
                "<=": 8,
                "<>": 8
            }, r.FormulaTokenType = {
                Operand: 0,
                Function: 1,
                Subexpression: 2,
                Argument: 3,
                OperatorPrefix: 4,
                OperatorInfix: 5,
                OperatorPostfix: 6,
                Whitespace: 7
            }, r.FormulaTokenSubtype = {
                Nothing: 0,
                Start: 1,
                Stop: 2,
                Text: 3,
                Number: 4,
                Logical: 5,
                Error: 6,
                RangeOrName: 7
            }, d = ".", e = ",", f = ";", g = ",", h = [14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 11, 24, 24, 24, 26, 24, 24, 24, 20, 21, 24, 25, 24, 19, 24, 24, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 25, 25, 25, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 24, 21, 27, 18, 27, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 25, 21, 25, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 11, 24, 26, 26, 26, 26, 28, 28, 27, 28, 1, 22, 25, 19, 28, 27, 28, 25, 10, 10, 27, 1, 28, 24, 27, 10, 1, 23, 10, 10, 10, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 1, 1, 1, 1, 1, 1, 1, 1];

            function K(a) {
                return a <= 255
            }
            function L(a) {
                return a <= 127
            }
            i = r.isDigit = function(a) {
                return a >= 48 && a <= 57
            }, r.ei = function(a) {
                var b = a.charCodeAt(0);
                return !K(b) || (L(b) ? (b |= 32, b >= 96 && b <= 122) : 0 === h[b] || 1 === h[b])
            }, j = r.fi = function(a) {
                var b = a.charCodeAt(0);
                return !K(b) || (L(b) ? b <= 57 ? b >= 48 : (b |= 32, b >= 96 && b <= 122) : 0 === h[b] || 1 === h[b])
            }, r.isNumber = function(a) {
                var b = a.charCodeAt(0);
                return L(b) ? b >= 48 && b <= 57 : 8 === h[b] || 10 === h[b]
            };

            function M(a, b, c, d, e, f) {
                var g, h, i = a.length,
                    j = c === d ? 0 : 1,
                    k = [],
                    l = 0;
                for (g = b + 1; g < i; g++) if (h = a[g], h === e && (k.push(h), g++, l++, h = a[g]), h === c && j++, h === d) if (j--, c === d && g + 2 < i && a[g + 1] === c) k.push(c), g++, l++;
                else {
                    if (0 === j) return {
                        result: k,
                        endIndex: g,
                        skipCount: l
                    };
                    k.push(h)
                } else k.push(h);
                f && J(d, c, H)
            }
            function N(a, b, c) {
                var d, e, f, g, h = a.length,
                    i = h - b;
                for (d = 0; d < B.length; d++) if (e = B[d], f = e.length, b + f <= h && (g = a.slice(b, b + f), f <= i && e === g.join("").toUpperCase())) return {
                    result: g,
                    endIndex: b + f - 1
                };
                c && J([a[b], b])
            }
            function O(a, b, c) {
                var d, e, f = a.length,
                    g = 0,
                    h = [];
                for (d = b; d < f; d++) if (e = a[d], i(e.charCodeAt(0))) 0 === g ? g = 2 : 3 === g ? g = 4 : 1 === g ? g = 2 : 5 !== g && 6 !== g || (g = 7), h.push(e);
                else if (e === c) {
                    if (2 === g) g = 4;
                    else {
                        if (0 !== g && 1 !== g) return {};
                        g = 3
                    }
                    h.push(".")
                } else if ("+" === e || "-" === e) {
                    if (0 === g) g = 1;
                    else {
                        if (5 !== g) return {
                            num: h,
                            endIndex: d - 1
                        };
                        g = 6
                    }
                    h.push(e)
                } else if ("E" === e || "e" === e) {
                    if (2 !== g && 4 !== g) return {};
                    g = 5, h.push(e)
                } else if (2 === g || 4 === g || 7 === g) return {
                    num: h,
                    endIndex: d - 1
                };
                return 2 === g || 4 === g || 7 === g ? {
                    num: h,
                    endIndex: f - 1
                } : {}
            }
            k = function(a, b) {
                return a.push.apply(a, b), a
            }, l = r.FormulaToken = function() {
                function a(a, b, c, d, e) {
                    var f, g, h;
                    e = e || 0, f = this, f.Qb = a, g = Array.isArray(a) ? a.join("") : a, f.Nc = b, f.mi = c, f.li = d || c + a.length - 1, 0 === b && 0 === e && a ? (h = g.toUpperCase(), h !== y && h !== z || (e = 5, g = h)) : 1 === b && g !== A && (g = g.toUpperCase()), f.ni = g, f.hi = e, f.oi = []
                }
                return a
            }(), m = r.TokenResolver = function() {
                function a(a) {
                    this.priority = a || 5e3
                }
                return a.prototype.resolveToken = function(a, b, c, d) {}, a.prototype.unparse = function(a, b, c, d) {}, a
            }(), n = {
                "+": 0,
                "-": 1
            }, o = r.operaterTypesMap = {
                ":": 15,
                ",": 16,
                "+": 3,
                "-": 4,
                "*": 5,
                "/": 6,
                "^": 7,
                "%": 2,
                "&": 8,
                "=": 9,
                "<": 11,
                "<>": 10,
                "<=": 12,
                ">": 13,
                ">=": 14
            }, r.Parser = function() {
                function a() {}
                return a.prototype = {
                    setParserOption: function(b) {
                        var c, h;
                        b !== u && q.CultureManager.q4() ? (h = b.NumberFormat ? b.NumberFormat : q.CultureManager.q4().NumberFormat, c = b ? h : {}) : (c = {}, h = c), e = a.listSeparator = c.listSeparator || ",", d = c.numberDecimalSeparator || ".", !b && a.numberDecimalSeparator || (a.numberGroupSeparator = h.numberGroupSeparator || ",", a.numberDecimalSeparator = h.numberDecimalSeparator || "."), f = a.arrayGroupSeparator = c.arrayGroupSeparator || ";", g = a.arrayListSeparator = c.arrayListSeparator || ","
                    },
                    parse: function(a, b) {
                        var c, d;
                        return this.setParserOption(a.culture), c = b.split(""), this.gi = c, d = this.parseToTokens(a, c, !a.ignoreError), this.buildExpressionTree(a, d, !a.ignoreError)
                    },
                    unparse: function(a, b, c) {
                        return c = c || [], this.Cma(a, b, c), c.join("")
                    },
                    Cma: function(a, b, c) {
                        var d, e;
                        for (this.setParserOption(a.culture), d = a.getResolvers(), e = 0; e < d.length && !d[e].unparse(a, this, b, c); e++);
                    },
                    parseToTokens: function(a, b, c) {
                        var h, j, m, n, p, q, r, s, t, u, v, w, x, y, z, B, C, D, E, F, G, H, I;
                        for (void 0 === c && (c = !0), h = this, j = function(a, b, c) {
                            return b.length > 0 ? (a.push(new l(b, 0, c)), []) : b
                        }, m = b.length, n = [], p = [], q = -1, r = [], u = 0; u < m && " " === b[u];) u++;
                        for ("=" === b[u] && u++, t = u, w = u; w < m; w++) if (x = b[w], y = x.charCodeAt(), y >= 97 && y <= 122 || y >= 65 && y <= 90) r.push(x);
                        else if (34 === y) z = M(b, w, '"', '"', "", c), z ? (B = new l(z.result, 0, w, w + z.result.length + 2, 3), z.skipCount && (B.HTa = b.slice(w, z.endIndex + 1).join(""), B.li += z.skipCount), n.push(B), w = z.endIndex, t = w + 1) : (k(r, b.slice(w, m)), w = m - 1);
                        else if (39 === y) z = M(b, w, "'", "'", "", c), z ? (r.push("'"), k(r, z.result), r.push("'"), w = z.endIndex) : (r.push("'"), w = m - 1);
                        else if (91 === y) if (z = M(b, w, "[", "]", "'", c)) r.push("["), k(r, z.result), r.push("]"), w = z.endIndex;
                        else {
                            if (h.lda && 0 === r.length && ("R" === r[0] || "r" === r[0] || "C" === r[0] || "c" === r[0])) continue;
                            k(r, b.slice(w, m)), w = m - 1
                        } else {
                            if (13 === y || 10 === x) continue;
                            if (35 === y) C = N(b, w), C ? (n.push(new l(C.result, 0, w, w + C.result.length - 1, 6)), t = w + 1, w = C.endIndex) : r.push(x);
                            else if (33 === y) 0 === r.length, D = n.length, D > 0 && 0 === n[D - 1].Nc ? (E = n[D - 1], E.Qb.push.apply(E.Qb, r), n[D - 1] = new l(E.Qb, 0, E.mi, w, 12)) : n.push(new l(r, 0, t, w, 12)), r = [], t = w + 1;
                            else if (43 === y || 45 === y) F = 0 === n.length ? null : n[n.length - 1], 0 !== r.length ? (n.push(new l(r, 0, t)), n.push(new l(x, 5, w)), r = [], t = w + 1) : (F && 7 === F.Nc && n.pop(), !F || 2 !== F.hi && 6 !== F.Nc && 0 !== F.Nc ? (n.push(new l(x, 4, w)), t = w + 1) : (n.push(new l(x, 5, w)), t = w + 1));
                            else if (x === d || i(y)) r.length > 0 ? r.push(x) : (G = O(b, w, d), G.num ? (H = G.endIndex, I = G.num, H <= m - 2 && "!" === b[H + 1] ? (k(r, I), t = H) : (n.push(new l(I, 0, w, H, 4)), t = H + 1), w = H) : r.push(x));
                            else if (123 === y) r.length > 0 && c && J(x, w), s = new l(A, 1, w, w, 1), n.push(s), p[++q] = s, t = w + 1;
                            else if (x === f && q >= 0 && p[q].value === A) r = j(n, r, t), q < 0 && c && J(x, w), n.push(new l(f, 3, w, w)), t = w + 1;
                            else if (125 === y) r = j(n, r, t), H < 0 && c && J(x, w), v = p[q--], v = new l(x, v.Nc, w, w, 2), n.push(v), t = w + 1;
                            else if (32 === y) r = j(n, r, t), t = w + 1;
                            else if (x === e || x === g || x === f) r = j(n, r, t), q < 0 || 1 !== p[q].Nc ? n.push(new l(e, 5, w, w, 10)) : n.push(new l(x, 3, w, w)), t = w + 1;
                            else if (37 === y) r = j(n, r, t), n.push(new l(b[w], 6, w, w)), t = w + 1;
                            else if (w + 2 <= m && o[x + b[w + 1]]) r = j(n, r, t), n.push(new l(b.slice(w, w + 2), 5, w, w + 1, 5)), w++, t = w + 1;
                            else if (o[x]) r = j(n, r, t), n.push(new l(x, 5, w, w)), t = w + 1;
                            else if ("(" === x) r.length > 0 ? (s = new l(r, 1, t, w, 1), r = []) : s = new l(x, 2, w, w, 1), n.push(s), p[++q] = s, t = w + 1;
                            else if (")" === x) {
                                if (r = j(n, r, t), q < 0) {
                                    c && J(x, w);
                                    continue
                                }
                                v = p[q--], v = new l(x, v.Nc, w, w, 2), n.push(v), t = w + 1
                            } else ":" === x ? (r = j(n, r, t), n.push(new l(x, 5, w, w, 11)), t = w + 1) : "\r" === x || "\n" === x || r.push(x)
                        }
                        return j(n, r, t), n
                    },
                    buildExpressionTree: function(a, b, c) {
                        var d = this.ii(a, b, c),
                            e = this.ji(a, d, c);
                        return c && this.rSa(e), e
                    },
                    rSa: function(a) {
                        for (var b, c, d; 10 === a.type;) a = a.value;
                        if (b = this, 9 === a.type) a.value || I(), b.rSa(a.value), a.value2 && b.rSa(a.value2);
                        else if (7 === a.type) for (c = 0; c < a.arguments.length; c++) d = a.arguments[c], d || I(), b.rSa(d)
                    },
                    ji: function(a, c, d) {
                        var e, f, g, h, i, j, k = this.ki(a, c, d);
                        for (h = 3; h < k.length;) if (i = k[h], j = k[h - 2], 9 !== j.type && I(), i && 9 === i.type) {
                            for (; h >= 3 && b[i.value] >= b[j.value];) f = k[h - 3], g = k[h - 1], e = r.Kh(j.operatorType, f, g), k.splice(h - 3, 3, e), h -= 2, h >= 3 && (j = k[h - 2]);
                            h += 2
                        } else h++;
                        if (1 === k.length) return k[0];
                        for (h = k.length - 2; h > 0; h -= 2) f = k[h - 1], g = k[h + 1], 9 !== k[h].type && I(), e = r.Kh(k[h].operatorType, f, g), k.splice(h - 1, 3, e);
                        return e
                    },
                    ki: function(a, b, c) {
                        var d, f, g, h, i, j, k, l, m, n, o, p, q, s;
                        for (b = Array.isArray(b) ? b : [b], d = [], f = b.length, g = 0; g < f; g++) {
                            if (h = b[g], i = h, 9 === h.type) {
                                if (0 === h.operatorType || 1 === h.operatorType) if (g === f - 1) c && I();
                                else {
                                    for (j = g; 9 === b[j].type && b[j].operatorType <= 1;) j++;
                                    for (k = this.ji(a, b[j]), l = j - 1; l >= g; l--) i = r.Kh(b[l].operatorType, k), k = i;
                                    i = k, g = j
                                } else if (2 === h.operatorType) {
                                    if (0 !== g) {
                                        i = r.Kh(h.operatorType, this.ji(a, d[d.length - 1])), d[d.length - 1] = i;
                                        continue
                                    }
                                    c && I()
                                }
                            } else if (10 === h.type) h.value = this.ji(a, h.value), i = h;
                            else if (7 === h.type) {
                                if (m = 0, n = h.arguments, o = [], p = [], n.length > 0) {
                                    for (q = 0; q <= n.length; q++) s = n[q], q === n.length || 0 === s.type && s.value === e ? (m === q ? o.push(new C(11)) : o.push(this.ji(a, p)), m = q + 1, p = []) : p.push(s);
                                    h.arguments = o
                                }
                                i = h
                            }
                            d.push(i)
                        }
                        return d
                    },
                    ii: function(a, b, c) {
                        var d, e, f = [];
                        for (d = 0, e = b.length; d < e;) d = this.resolveToken(a, b, f, d, c);
                        return f
                    },
                    resolveToken: function(a, b, c, d, e) {
                        var f, g, h, i, j, k, l = b[d],
                            m = a.getResolvers();
                        for (f = 0; f < m.length; f++) if (g = m[f].resolveToken(a, this, b, d)) {
                            h = g.expr, i = d - 1, h && g.index !== u ? d = g.index - 1 : h = g, j = c.length > 0 ? c[c.length - 1] : v, j && 0 !== h.type && 7 !== h.type && h.type < 9 && 0 !== j.type && 7 !== j.type && j.type < 9 && (k = b[i].li, k < l.mi - 1 && c.push(r.Kh(17, " "))), c.push(h);
                            break
                        }
                        return d + 1
                    },
                    resolveSubTokens: function(a, b, c, d) {
                        for (var e = []; c < b.length && 2 !== b[c].hi;) c = this.resolveToken(a, b, e, c, d);
                        return {
                            exprs: e,
                            index: c + 1
                        }
                    }
                }, a
            }(), r.ParserContext = function() {
                function a(a, b, c, d) {
                    var e = this;
                    e.Eh = !1, e.ignoreError = !1, e.source = v, e.useR1C1 = b, e.row = c && c.row || 0, e.column = c && c.col || 0, e.baseIdentity = c, e.option = d, e.source = a, e.pi = [], e.addResolver(new p)
                }
                return a.prototype = {
                    getExternalSource: function(a, b) {
                        var c, d = this.source.Cf(),
                            e = d.getAllSouceModels();
                        for (c = 0; c < e.length; c++) if (D.Mb(e[c].getSource().getName(), b)) return e[c].getSource();
                        return v
                    },
                    getExternalSourceToken: function(a) {
                        return a.getName()
                    },
                    getTableByName: function(a) {
                        return v
                    },
                    getTableByIndex: function(a, b) {
                        return v
                    },
                    setSource: function(a) {
                        this.source = a
                    },
                    getResolvers: function() {
                        return this.pi
                    },
                    addResolver: function(a) {
                        var b, c = this.pi;
                        for (b = 0;; b++) if (!c[b] || a.priority > c[b].priority) {
                            c.splice(b, 0, a);
                            break
                        }
                    },
                    getFunction: function(a) {
                        return this.source && this.source.getCustomFunction(a) || r.Functions.findGlobalFunction(a)
                    }
                }, a
            }(), p = r.DefaultTokenResolver = function() {
                m.call(this)
            }, s(p, m), t(p.prototype, {
                resolveToken: function(a, b, c, d) {
                    var e, g, h, i, j, k, l, m = c[d],
                        p = m.ni,
                        q = m.Qb,
                        s = m.Nc;
                    if (0 === s) 0 === m.hi ? (h = p.toUpperCase(), h === y || h === z ? (m.hi = 5, m.ni = h, e = new C(4), e.value = h === y) : (e = new C(8), e.value = p)) : 4 === m.hi ? (e = new C(2), e.value = parseFloat(p), e.originalValue = p) : 3 === m.hi ? (e = new C(3), e.value = p) : 5 === m.hi ? (e = new C(4), e.value = p === y) : 6 === m.hi ? (e = new C(5), e.value = r.CalcError.parse(p)) : 7 === m.hi && (e = new C(8), e.value = p);
                    else if (1 === s) {
                        if (p === A) {
                            for (e = new C(6), d++, h = [
                                []
                            ], g = 0, i = 0, j = 0; d < c.length && 2 !== c[d].hi;) {
                                if (m = c[d], d < c.length - 1 && 4 === m.Nc && "-" === m.ni && 4 === c[d + 1].hi && (d++, m = c[d], q.unshift("-"), m.ni = "-" + m.ni), 3 === m.Nc) {
                                    if (m.ni === f) {
                                        if (i !== j) throw D.Kb(E().Exp_InvalidArrayColumns, [m.mi]);
                                        h.push([]), g++, j = 0
                                    }
                                } else {
                                    if (0 !== m.Nc || 4 !== m.hi && 3 !== m.hi && 5 !== m.hi && 6 !== m.hi) throw E().Exp_InvalidArray;
                                    k = m.ni, 4 === m.hi ? k = parseFloat(k) : 5 === m.hi ? k = "TRUE" === k.toUpperCase() : 6 === m.hi && (k = r.CalcError.parse(k)), h[g].push(k), 0 === g && i++, j++
                                }
                                d++
                            }
                            if (i !== j) throw D.Kb(E().Exp_InvalidArrayColumns, [m.mi]);
                            return d++, e.value = new r.CalcArray(h), {
                                expr: e,
                                index: d
                            }
                        }
                        if (q.length > 0) return "@" === q[0] && (m.ni = q.slice(1).join(""), p = m.ni), e = new C(7), e.functionName = p, e.
                            function = a.getFunction(e.functionName) || r.Functions.findGlobalFunction(e.functionName), (l = b.resolveSubTokens(a, c, d + 1)) ? (e.arguments = l.exprs, {
                            expr: e,
                            index: l.index
                        }) : (e.arguments = [], e)
                    } else if (4 === s || 6 === s || 5 === s) e = r.Kh(4 === s ? n[p] : o[p], p);
                    else if (2 === s) {
                        if (e = new C(10), l = b.resolveSubTokens(a, c, d + 1)) return e.value = l.exprs, {
                            expr: e,
                            index: l.index
                        };
                        I()
                    } else 3 === s && (e = new C(0), e.value = p);
                    return e
                },
                unparse: function(a, b, c, d) {
                    var f, g = this;
                    if (6 === c.type || 4 === c.type || 2 === c.type || 5 === c.type || 3 === c.type) g.qi(a, c, d);
                    else if (9 === c.type) g.ri(a, b, c, d);
                    else if (10 === c.type) d.push("("), b.Cma(a, c.value, d), d.push(")");
                    else {
                        if (7 !== c.type) return !1;
                        for (k(d, (c.
                            function &&c.
                            function.name || c.functionName).split("")), d.push("("), f = 0; f < c.arguments.length; f++) 0 !== f && d.push(e), b.Cma(a, c.arguments[f], d);
                        d.push(")")
                    }
                    return !0
                },
                ri: function(b, c, d, e) {
                    var f = d.operatorType;
                    2 === f ? (c.Cma(b, d.value, e), e.push("%")) : 0 === f || 1 === f ? (e.push(a[f]), c.Cma(b, d.value, e)) : (c.Cma(b, d.value, e), e.push(a[f]), c.Cma(b, d.value2, e))
                },
                qi: function(a, b, c) {
                    var e, h, i, j, k, l, m, n, o = E().Exp_InvalidArray;
                    if (3 === b.type) c.push('"'), c.push(D.Gb(b.value, '"', '""')), c.push('"');
                    else if (2 === b.type) e = b.originalValue || "" + b.value, "." !== d && (e = e.replace(".", d)), c.push(e);
                    else if (4 === b.type) c.push(b.value ? y : z);
                    else if (6 === b.type) {
                        if (c.push("{"), h = b.value, h.getRowCount() <= 0) throw o;
                        for (i = 0, j = h.getRowCount(); i < j; i++) for (i >= 1 && c.push(f), k = 0, l = h.getColumnCount(); k < l; k++) {
                            if (0 !== k && c.push(g), m = h.getValue(i, k), m === u || m === v) throw o;
                            n = typeof m, n === w ? (c.push('"'), c.push(m), c.push('"')) : n === x ? c.push(m ? y : z) : "number" === n && "." !== d ? c.push(("" + m).replace(".", d)) : c.push("" + m)
                        }
                        c.push("}")
                    } else 5 === b.type ? c.push("" + b.value) : 11 === b.type
                }
            })
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a, b, d, e, f, g, h, i, j, k, l, m, n, o = c(25),
                p = o.Errors,
                q = c(26),
                r = q.j.G,
                s = null,
                t = void 0,
                u = Math.pow,
                v = Math.min,
                w = Math.max,
                x = "string",
                y = "boolean",
                z = function() {
                    return q.C(o.SR)()
                },
                A = z().Exp_Format,
                B = o.Convert,
                C = B.Th,
                D = B.vf,
                E = B.Ph,
                F = p.Reference,
                G = p.Value,
                H = o.CalcArray,
                I = p.Name,
                J = p.NotAvailable,
                K = p.DivideByZero;

            function L(a, b, c, d) {
                return {
                    row: a,
                    col: b,
                    rowCount: c,
                    colCount: d
                }
            }
            a = function() {
                function a(a, b, c, d) {
                    var e = this;
                    e.si = 0, e.ti = 0, e.ui = 0, e.source = a, e.arrayFormulaMode = !! c, e.identity = b || o.pf(0, 0), e.arrayIdentity = d, e.row = d ? d.row : e.identity.row || 0, e.column = d ? d.col : e.identity.col || 0, e.rowOffset = d ? e.identity.row - d.row : e.row, e.columnOffset = d ? e.identity.col - d.col : e.column
                }
                return a
            }(), a.prototype = {
                fga: function(a) {
                    return a === o.BangSource ? this.source : a
                },
                getValue: function(a, b) {
                    return a ? this.fga(a).getValue(b) : F
                },
                getReference: function(a, b) {
                    return a ? this.fga(a).getReference(b) : F
                },
                getSheetRangeReference: function(a) {
                    return a && a.source && a.endSource ? this.fga(a.source).getSheetRangeReference(a) : F
                },
                getFunction: function(a) {
                    var b = this;
                    return b.source ? b.source.getCustomFunction(a) : s
                },
                getName: function(a) {
                    var b, c = this,
                        d = c.source ? c.source.getCustomName(a) : s;
                    return !d && c.source && (b = c.source.Cf().getGlobalSourceModel(), d = b && b.getSource().getCustomName(a)), d
                },
                vi: function() {
                    return this.ui > 0
                },
                wi: function() {
                    this.ui++
                },
                xi: function() {
                    this.ui--
                },
                SetAsyncResult: function(a, b) {
                    this.source.Cf().lh.SetAsyncResult(a, b)
                },
                cloneFrom: function(a) {
                    var b = this;
                    b.acceptsReference = a.acceptsReference, b.arrayFormulaMode = a.arrayFormulaMode
                }
            }, o.EvaluateContext = a, b = function() {
                function a(a, b) {
                    this.id = a.si++, this.ctx = a, this.row = a.row + (a.arrayFormulaMode && a.rowOffset || 0), this.col = a.column + (a.arrayFormulaMode && a.columnOffset || 0), this.node = b
                }
                return a.prototype.setAsyncResult = function(a) {
                    this.node.Fi = a, this.node.v5 = !0, this.ctx.SetAsyncResult(this, a), this.ctx.source.refresh()
                }, a.prototype.getFormula = function() {
                    return this.ctx.source.getCalcService().unparse(this.ctx.source, this.expression, this.row, this.col)
                }, a
            }(), o.AsyncEvaluateContext = b, d = function(a) {
                r(b, a);

                function b(b, c, d, e, f, g, h, i) {
                    a.call(this, b, c, d, e, f, g, h, i), this.yi = b.Cf().getGlobalSourceModel().getSource()
                }
                return b.prototype.getName = function(a) {
                    var b = this;
                    return b.yi ? b.yi.getCustomName(a) : s
                }, b
            }(a), o.GloableEvaluateContext = d, o.Evaluator = function() {
                function a(a) {
                    this.zi = {}, this.Ai = {}, this.asyncManager = new f(this), this.service = a
                }
                return a
            }(), o.Evaluator.prototype = {
                evaluateExpression: function(a, b, c, d, e) {
                    var f = this.evaluate(a, b, !! d, !! e);
                    return f === t || f === s ? c === !1 ? f : 0 : ((o.Convert.Ca(f) && !d || B.Fh(f) && !e) && (f = this.getOneValue(b, f)), q.o.Lma(f, 15))
                },
                evaluate: function(a, b, c, d) {
                    var e, f, g;
                    if (!a) throw z().Exp_ExprIsNull;
                    for (; 10 === a.type;) a = a.value;
                    if (e = this, g = s, 12 === a.type && (g = a.needExpendIndexs, a = a.value), a.type >= 2 && a.type <= 6) f = e.evaluateConst(a, b, c);
                    else if (1 === a.type || 13 === a.type) f = e.evaluateReference(a, b, d, c);
                    else if (8 === a.type) f = e.evaluateName(a, b, c, d);
                    else if (9 !== a.type || a.value2) {
                        if (9 === a.type) f = e.evaluateBinaryOperation(a, b, c, d, g);
                        else if (7 === a.type) f = e.evaluateFunction(a, b, c, d, g);
                        else if (11 === a.type) f = t;
                        else if (b.evaluate) return b.evaluate(a, c, d)
                    } else f = e.evaluateUnaryOperation(a, b, c, d, g);
                    return f
                },
                evaluateConst: function(a, b, c) {
                    var d = a.value;
                    return B.Ca(d) ? c || b && (b.arrayFormulaMode || b.vi()) ? d : d.getValue(0, 0) : d
                },
                evaluateReference: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, p, q;
                    if (!b) return G;
                    if (e = (13 === a.type ? a.source() : a.source) || b.source, f = b.row, g = b.column, h = a.getRange && a.getRange(f, g), !h) return 13 === a.type ? G : F;
                    if (i = h.row < 0 ? 0 : h.row, j = h.col < 0 ? 0 : h.col, k = h.rowCount, l = h.colCount, c || b.arrayFormulaMode) return a.endSource ? b.getSheetRangeReference({
                        source: a.source,
                        endSource: a.endSource,
                        row: i,
                        col: j,
                        rowCount: k,
                        colCount: l
                    }) : b.getReference(e, h);
                    if (d && (k > 1 || l > 1)) {
                        for (m = [], n = 0; n < k; n++) for (m[n] = [], o = 0; o < l; o++) m[n][o] = e.getValue(n + i, o + j);
                        return new H(m)
                    }
                    if (k > 1 || l > 1) if (p = f >= h.row && f < h.row + k, q = g >= h.col && g < h.col + l, p && q) i = f, j = g;
                    else {
                        if (!p && !q) return G;
                        if (p && 1 === l) i = f;
                        else {
                            if (!q || 1 !== k) return G;
                            j = g
                        }
                    } else if (h.row === -1 && k === -1) {
                        if (1 !== l) return G;
                        i = f
                    } else if (h.col === -1 && l === -1) {
                        if (1 !== k) return G;
                        j = g
                    }
                    return e.getValue(i, j)
                },
                evaluateName: function(a, b, c, d) {
                    var e, f;
                    return b ? (a.source && (e = a.source, b = e.getEvaluatorContext(b.identity, b.arrayFormulaMode, b.arrayIdentity)), f = b.getName(a.value), f ? this.evaluate(f, b, c, d) : I) : I
                },
                evaluateUnaryOperation: function(a, b, c, d, e) {
                    var f, g = !1;
                    return e && e.length > 0 && (c = !0, g = !0), f = this.evaluate(a.value, b, c, g), B.vf(f) ? f : f === o.missingArgument ? J : this.evaluateWithArgs(a, function(b) {
                        return h(a.operatorType, b[0])
                    }, b, e, [f], c, d)
                },
                evaluateBinaryOperation: function(a, b, c, d, e) {
                    var f, g, i, j, k = [c, c],
                        l = a.operatorType >= 15,
                        m = [l, l];
                    if (e && e.length > 0) for (f = 0; f < e.length; f++) k[e[f]] = !0, m[e[f]] = !0;
                    for (g = [a.value, a.value2], i = [], f = 0; f < 2; f++) {
                        if (j = this.evaluate(g[f], b, k[f], m[f]), B.vf(j)) return j;
                        if (j === o.missingArgument) return J;
                        i[f] = j
                    }
                    return this.evaluateWithArgs(a, function(b) {
                        return h(a.operatorType, b[0], b[1])
                    }, b, e, i, c, d)
                },
                startCache: function() {
                    this.Bi = {}, this.service.nia && this.asyncManager.startCalc()
                },
                endCache: function() {
                    this.Bi = s
                },
                evaluateFunction: function(a, b, c, d, e) {
                    var f, g, h, i, j, k, l, m, p, q, r, t, u, v, w, x, y, z, A;
                    if (!a || !a.
                            function ||"string" == typeof a.
                            function) return I;
                    if (f = a.arguments.length, g = this, h = b.ti, i = a.
                            function, l = s, i instanceof n.AsyncFunction && this.asyncManager.startCalcFunction(i, a.arguments, b), 0 === f) j = [];
                    else {
                        for (j = [], m = [], p = [], q = 0; q < f; q++) m[q] = i.acceptsArray(q), p[q] = i.acceptsReference(q);
                        if (e && e.length > 0) {
                            for (l = [], q = 0; q < f; q++) l[q] = !0;
                            for (q = 0; q < e.length; q++) r = e[q], m[r] = !0, p[r] = !0, l[r] = !(i.acceptsReference(r) && !i.acceptsArray(r))
                        }
                        for (i.isBranch() && (b.arrayFormulaMode || b.vi()) && (m[i.findTestArgument()] = !0, p[i.findTestArgument()] = !0), u = -1, v = -1, i.isBranch() && (u = i.findTestArgument(), i.acceptsArray(u) && b.wi(), t = g.evaluate(a.arguments[u], b, m[u], p[u]), i.acceptsArray(u) && b.xi(), B.Fh(t) || B.Ca(t) || (v = i.findBranchArgument(t))), q = 0; q < f; q++) {
                            if (u === q) k = t;
                            else {
                                if (v >= 0 && q !== v) {
                                    j[q] = null;
                                    continue
                                }
                                i.acceptsArray(q) && b.wi(), k = g.evaluate(a.arguments[q], b, m[q], p[q]), i.acceptsArray(q) && b.xi()
                            }
                            if (!i.acceptsArray(q) && B.Ca(k) || !i.acceptsReference(q) && B.Fh(k)) if (w = B.Ca(k) ? k : s, x = B.Fh(k) ? k : s, w && 1 === w.getRowCount() && 1 === w.getColumnCount()) k = w.getValue(0, 0);
                            else if (x && 1 === x.getRowCount(0) && 1 === x.getColumnCount(0)) k = x.getValue(0, 0, 0);
                            else {
                                if (y = [], z = !1, e) for (A = 0; A < e.length; A++) y.push(e[A]), e[A] === q && (z = !0);
                                z || (y.push(q), e = y)
                            }
                            if (B.vf(k) && !i.acceptsError(q)) return k;
                            k !== o.missingArgument || i.acceptsMissingArgument(q) || (k = s), j[q] = k
                        }
                    }
                    return g.evaluateWithArgs(a, function(a, c) {
                        var e, f, j = Z(a, i.Ci);
                        return a = j.Di, i.isContextSensitive() ? (b.acceptsReference = d || b.vi(), i instanceof n.AsyncFunction ? (g.T4 = g.T4 || {}, i.evaluateWhenArgumentsIsSame() ? g.evaluateAsyncFunction(b, c, i, h, a) : g.evaluateWithCache(i, a, function() {
                            return g.evaluateAsyncFunction(b, c, i, h, a)
                        }, g.T4)) : i.evaluateWithContext(b, a)) : (f = function() {
                            return j.Ei ? i.evaluate.apply(i, a) : j.Fi
                        }, e = b.arrayFormulaMode ? g.evaluateWithCache(i, a, f, g.Bi) : f())
                    }, b, e, j, c, d, l)
                },
                evaluateAsyncFunction: function(a, c, d, e, f) {
                    var g, h, i = this.asyncManager.getNode();
                    if (i.v5) g = i.Fi;
                    else if (i.canEvaluate()) {
                        if (h = new b(a, i), g = d.evaluateWithContext(h, f), h.notAsync) return g;
                        g === t ? g = i.Fi !== t ? i.Fi : d.defaultValue() : 1 === i.evaluateMode && (i.v5 = !0)
                    } else g = i.Fi !== t ? i.Fi : d.defaultValue();
                    return i.Fi = g, this.asyncManager.endCalcFunction(), g
                },
                evaluateWithCache: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, p, q;
                    if (d) if (e = !1, f = d[a.name + b.length]) for (g = 0; g < f.length; g++) {
                        if (h = f[g], e = !1, h.args.length === b.length) for (e = !0, i = 0; i < b.length; i++) if (j = h.args[i], k = b[i], j !== k) {
                            if (!(j instanceof o.CalcReference && k instanceof o.CalcReference)) {
                                e = !1;
                                break
                            }
                            if (l = j.zf, j.xf !== k.xf || l !== k.zf) {
                                e = !1;
                                break
                            }
                            for (m = 0; m < l; m++) if (j.getRow(m) !== k.getRow(m) || j.getColumn(m) !== k.getColumn(m) || j.getRowCount(m) !== k.getRowCount(m) || j.getColumnCount(m) !== k.getColumnCount(m)) {
                                e = !1;
                                break
                            }
                        }
                        if (e) return h.flag++, h.value
                    } else f = d[a.name + b.length] = [];
                    if (n = c(), d && n !== t) {
                        if (p = f.length, p >= 100) {
                            for (q = [], g = 0; g < p; g++) f[g].flag > 0 && q.push(f[g]);
                            q.sort(function(a, b) {
                                return b.flag - a.flag
                            }), p = Math.min(50, q.length), f = q.slice(0, p), d[a.name + b.length] = f
                        }
                        f.push({
                            args: b,
                            value: n,
                            flag: 0
                        })
                    }
                    return n
                },
                SetAsyncResult: function(a) {
                    var b = a.ctx;
                    b.source.Cf().recalculate(b.source, a.row, a.col, !0)
                },
                evaluateWithArgs: function(a, b, c, d, e, f, g, h) {
                    var i, j, k, l, m, n, p, q, r, s, t, u, v, w;
                    if (d && d.length > 0) {
                        if (i = this.Gi(c, a, e, d, h), !i) return J;
                        for (j = [], l = i[0].length, m = i[0][0].length, n = 0; n < l; n++) for (j[n] = [], p = 0; p < m; p++) try {
                            for (q = [], r = 0; r < e.length; r++) q[r] = i[r][n][p];
                            if (k = b(q, a), B.Fh(k)) {
                                if (7 === a.type && (s = a.
                                        function, s.returnReference && s.returnReference())) return k;
                                k = this.getOneValue(c, k)
                            }
                            j[n][p] = k
                        } catch (a) {
                            j[n][p] = G
                        }
                        return new o.CalcArray(j)
                    }
                    try {
                        if (k = b(e, a), c.arrayFormulaMode && c.vi()) return k;
                        if (B.Ca(k) && !f) return this.getOneValue(c, k);
                        if (B.Fh(k) && !g) {
                            if (t = k, f && 1 === t.getRangeCount()) {
                                for (u = [], v = 0; v < t.getRowCount(0); v++) for (u[v] = [], w = 0; w < t.getColumnCount(0); w++) u[v][w] = t.getValue(0, v, w);
                                return new o.CalcArray(u, t.getColumnCount(0))
                            }
                            return this.getOneValue(c, k)
                        }
                        return k
                    } catch (a) {
                        return G
                    }
                },
                getOneValue: function(a, b) {
                    var c, d, e, f, g, h;
                    return B.Fh(b) ? (e = b, f = e.getRowCount(0), g = e.getColumnCount(0), e.getRangeCount() > 1 || !a.arrayFormulaMode && f > 1 && g > 1 ? b = G : (a.rowOffset !== -1 || a.columnOffset !== -1 ? (c = 1 === f ? 0 : a.arrayFormulaMode ? a.rowOffset : a.rowOffset - e.getRow(0), d = 1 === g ? 0 : a.arrayFormulaMode ? a.columnOffset : a.columnOffset - e.getColumn(0)) : (c = 1 === f ? 0 : a.row - e.getRow(0), d = 1 === g ? 0 : a.column - e.getColumn(0)), b = c >= f || d >= g ? J : e.getValue(0, c, d))) : B.Ca(b) && (h = b, !a.arrayFormulaMode || a.rowOffset === -1 && a.columnOffset === -1 ? b = h.getValue(0, 0) : (c = 1 === h.getRowCount() ? 0 : a.rowOffset, d = 1 === h.getColumnCount() ? 0 : a.columnOffset, b = c >= h.getRowCount() || d >= h.getColumnCount() ? J : h.getValue(c, d))), B.Fh(b) || B.Ca(b) ? this.getOneValue(a, b) : b
                },
                Gi: function(a, b, c, d, e) {
                    var f, g, h, i, j, k, l, m, n, o, p, r, u, v, w, x = 1,
                        y = 1,
                        z = -1,
                        A = !0,
                        C = !0,
                        D = null,
                        E = null,
                        F = 1,
                        G = 1,
                        H = 7 === b.type ? b : s;
                    if (H && !H.
                            function.expandRows() && (A = !1), H && !H.
                            function.expandColumns() && (C = !1), H && H.
                            function.isBranch() && (a.arrayFormulaMode || a.vi())) {
                        if (z = H.
                                function.findTestArgument(), f = [], g = !1, d) for (h = 0; h < d.length; h++) f.push(d[h]), d[h] === z && (g = !0);
                        if (g || B.Ca(c[z]) || B.Fh(c[z])) {
                            for (i = 0; i < H.arguments.length; i++) i !== z && q.k.Cb(f, i) < 0 && (B.Ca(c[i]) || B.Fh(c[i])) && f.push(i);
                            d = f
                        }
                    }
                    for (j = 0; j < d.length; j++) {
                        if (k = c[d[j]], D = B.Ca(k) ? k : null, E = B.Fh(k) ? k : null, F = 0, G = 0, D) F = D.getRowCount(), G = D.getColumnCount();
                        else if (E) {
                            if (E.getRangeCount() > 1) return s;
                            F = A ? E.getRowCount(0) : 1, G = C ? E.getColumnCount(0) : 1
                        }
                        x = F > x ? F : x, y = G > y ? G : y
                    }
                    for (l = [], m = 0, n = d[m], o = 0; o < c.length; o++) {
                        if (l[o] = [], p = c[o], D = s, E = s, F = G = 1, o === n) {
                            if (D = B.Ca(p) ? p : s, E = B.Fh(p) ? p : s, (D || E) && (F = D && D.getRowCount() || (A ? E.getRowCount(0) : 1), G = D && D.getColumnCount() || (C ? E.getColumnCount(0) : 1), (1 !== F && F !== x || 1 !== G && G !== y) && (z === -1 || o === z) && !a.arrayFormulaMode)) return s;
                            m++, n = m < d.length ? d[m] : -1
                        } else if (e === t && (D = B.Ca(p) ? p : s, E = B.Fh(p) ? p : s, (D || E) && (F = D && D.getRowCount() || (A ? E.getRowCount(0) : 1), G = D && D.getColumnCount() || (C ? E.getColumnCount(0) : 1), (1 !== F && F !== x || 1 !== G && G !== y) && (z === -1 || o === z) && !a.arrayFormulaMode))) return s;
                        for (E && (r = E.getRow(0), u = E.getColumn(0), x = r + x - r, y = u + y - u), v = 0; v < x; v++) for (l[o][v] = [], w = 0; w < y; w++) 1 !== F && v >= F || 1 !== G && w >= G ? l[o][v][w] = J : D ? l[o][v][w] = D.getValue(1 === F ? 0 : v, 1 === G ? 0 : w) : E ? !e || e[o] ? l[o][v][w] = E.getValue(0, 1 === F ? 0 : v, 1 === G ? 0 : w) : l[o][v][w] = E.create([L(E.getRow(0) + (1 === F ? 0 : v), E.getColumn(0) + (1 === G ? 0 : w), 1, 1)]) : l[o][v][w] = p
                    }
                    return l
                }
            }, e = function() {
                function a(a, b) {
                    this.id = a, this.Fi = t, this.v5 = !1, this.oi = [], b !== t && (this.evaluateMode = b)
                }
                return a
            }(), e.prototype = {
                canEvaluate: function() {
                    var a, b = this.oi;
                    for (a = 0; a < b.length; a++) if (!b[a].v5) return !1;
                    return !0
                }
            }, f = function() {
                function a(a) {
                    var b = this;
                    b.w5 = [], b.x5 = -1, b.y5 = {}, b.z5 = -1, b.lh = a, b.vQa = 0
                }
                return a
            }(), f.prototype = {
                startCalc: function() {
                    var a, b, c, d, e, f, g, h, i;
                    if (this.vQa) for (b in this.y5) if (c = this.y5[b]) for (d in c) if (e = c[d]) for (f in e) if (g = e[f], g && (a = g.length, a > 0)) for (h = 0; h < a; h++) i = g[h], 0 === i.evaluateMode && (i.v5 = !1)
                },
                startCalcCell: function(a, b) {
                    var c, d, f, g, h = this,
                        i = a.getName(),
                        j = b.row,
                        k = b.col;
                    return h.z5 = -1, h.source = a, c = h.y5[i], c || (c = h.y5[i] = {}), d = c[j], d || (d = c[j] = {}), (f = d[k]) ? void(h.cellNodes = f) : (g = new e((-1)), f = d[k] = [], h.vQa++, h.x5 = -1, h.cellNodes = f, h.row = j, h.col = k, f.root = g, h.w5[++h.x5] = g, void(h.evaluateMode = -1))
                },
                startCalcFunction: function(a, b, c) {
                    var d, f, g, h, i, j, k, l, m, n, o = this;
                    if (o.z5++, o.isNewNode = !1, d = o.cellNodes[o.z5]) return o.currentNode = d, d;
                    if (o.isNewNode = !0, f = o.evaluateMode, g = a.evaluateMode(), "REFRESH" === a.name ? (g = b[1] ? o.lh.evaluate(b[1], c, !1, !1) : 0, o.evaluateMode = g) : f !== -1 && (g = f), d = new e(o.z5, g), o.cellNodes[o.z5] = d, o.w5[o.x5].oi.push(d), d.parent = o.w5[o.x5], o.w5.push(d), o.x5++, o.currentNode = d, 2 === g && f === -1) {
                        for (h = 6e4, i = o.intervals, j = a.interval() || h, "REFRESH" === a.name && (d.isRefresh = !0, j = b[2] ? o.lh.evaluate(b[2], c, !1, !1) : h), i || (o.intervals = i = {}), k = i[j], k || (k = i[j] = [], k.intervalObj = window.setInterval(function() {
                            var a, b, c = o.intervals[j];
                            for (l = 0; l < c.length; l++) a = c[l], b = a.node, b.v5 = !1, b.isRefresh && M(b), o.lh.service.recalculate(a.source, a.row, a.col, !0), o.source.refresh()
                        }, j)), m = !1, l = 0; l < k.length; l++) if (n = k[l], n.source === o.source && n.node === d && n.row === o.row && n.col === o.col) {
                            m = !0;
                            break
                        }
                        m || k.push({
                            source: o.source,
                            node: d,
                            row: o.row,
                            col: o.col
                        })
                    }
                    return d
                },
                getNode: function() {
                    return this.currentNode
                },
                endCalcFunction: function() {
                    this.isNewNode && (this.w5.pop(), this.x5--), this.currentNode = this.currentNode.parent
                },
                endCalcCell: function() {},
                clearCell: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m, n, o, p, q = this;
                    if (q.vQa) {
                        c = a.getName(), d = b.row, e = b.col, q.z5 = -1, q.source = a, f = q.y5[c], f && (g = f[d], g && (h = g[e], h && (i = h[0], j = i && i.$$a, j && (delete j.nia, delete j.t$a), g[e] = t, q.vQa--))), k = q.intervals;
                        for (l in k) if (m = k[l]) {
                            for (n = [], o = 0; o < m.length; o++) p = m[o], p.source === a && p.row === b.row && p.col === b.col || n.push(p);
                            n.length ? n.length !== m.length && (n.intervalObj = m.intervalObj, k[l] = n) : (k[l] = t, window.clearInterval(m.intervalObj))
                        }
                    }
                },
                setAsyncResult: function(a, b) {
                    a.Fi = b
                },
                addRows: function(a, b, c) {
                    this.GQa(a, b, c, !0)
                },
                deleteRows: function(a, b, c) {
                    this.GQa(a, b, c, !1)
                },
                GQa: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, p, q, r = this;
                    if (r.vQa) {
                        if (e = a.getName(), f = r.y5[e]) {
                            g = {};
                            for (h in f) i = f[h], i && (j = parseInt(h), d ? (k = j >= b ? j + c : j, g[k] = i) : j < b ? g[j] = i : j >= b + c && (g[j - c] = i));
                            r.y5[e] = g
                        }
                        l = r.intervals;
                        for (m in l) if (n = l[m]) {
                            for (o = [], p = 0; p < n.length; p++) q = n[p], q.source === a && d && q.row >= b ? q.row += c : q.source === a && !d && (q.row < b || q.row >= b + c) && (q.row = q.row < b ? q.row : q.row - c, o.push(q));
                            d || o.length === n.length || (o.intervalObj = n.intervalObj, l[m] = o)
                        }
                    }
                },
                addColumns: function(a, b, c) {
                    this.HQa(a, b, c, !0)
                },
                deleteColumns: function(a, b, c) {
                    this.HQa(a, b, c, !1)
                },
                HQa: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t = this;
                    if (t.vQa) {
                        if (e = a.getName(), f = t.y5[e]) for (g in f) if (h = f[g]) {
                            i = {};
                            for (j in h) k = h[j], k && k.length && (l = parseInt(j), d ? (m = l >= b ? l + c : l, i[m] = k) : l < b ? i[l] = k : l >= b + c && (i[l - c] = k));
                            f[g] = i
                        }
                        n = t.intervals;
                        for (o in n) if (p = n[o]) {
                            for (q = [], r = 0; r < p.length; r++) s = p[r], s.source === a && d && s.col >= b ? s.col += c : s.source === a && !d && (s.col < b || s.col >= b + c) && (s.col = s.col < b ? s.col : s.col - c, q.push(s));
                            d || q.length === p.length || (q.intervalObj = p.intervalObj, n[o] = q)
                        }
                    }
                },
                changeSourceName: function(a, b) {
                    var c, d = this;
                    d.vQa && (c = d.y5[a], c && (d.y5[b] = c, delete d.y5[a]))
                }
            };

            function M(a) {
                var b, c;
                for (c = 0; c < a.oi.length; c++) b = a.oi[c], b.v5 = !1, b.oi.length > 0 && M(b)
            }
            g = function(a) {
                var b, c = !0;
                return a && a.getValue && (b = E(a, 0, !1, !0), b.isError ? a = b[0] : 1 === b.rowCount && 1 === b.colCount ? a = b[0][0] : (a = b, c = !1)), {
                    value: a,
                    success: c
                }
            }, h = o.evaluateOperator = function(a, b, c) {
                return D(b) ? b : D(c) ? c : a <= 2 ? N(a, b) : a <= 14 ? O(a, b, c) : S(a, b, c)
            };

            function N(a, b) {
                if (!b) return 0;
                var c = g(b);
                return c.success ? P(a, c.value) : void 0
            }
            function O(a, b, c) {
                var d, e, f, h, i, j, k, l, m, n, p, q, r, s, t, u;
                if (d = a <= 7 ? P : 8 === a ? Q : R, e = g(b), f = g(c), e.success && f.success) return d(a, e.value, f.value);
                if (b = e.value, c = f.value, h = e.success ? -1 : b.rowCount, i = e.success ? -1 : b.colCount, j = f.success ? -1 : c.rowCount, k = f.success ? -1 : c.colCount, l = -1, m = -1, e.success || f.success) e.success ? (l = j, m = k) : (l = h, m = i);
                else {
                    if (1 !== h && 1 !== j && h !== j || 1 !== i && 1 !== k && i !== k) return J;
                    l = 1 === h ? j : h, m = 1 === i ? k : i
                }
                for (n = [], p = 0; p < l; p++) for (n[p] = [], q = 0; q < m; q++)!e.success && (1 !== h && h < l || 1 !== i && i < m) || !f.success && (1 !== j && j < l || 1 !== k && k < m) ? n[p][q] = J : (r = 1 === h ? 0 : p, s = 1 === i ? 0 : q, t = 1 === j ? 0 : p, u = 1 === k ? 0 : q, n[p][q] = d(a, e.success ? b : b[r][s], f.success ? c : c[t][u]));
                return new o.CalcArray(n)
            }
            function P(a, b, c) {
                var d, e, f;
                if ("" === b || "" === c) return G;
                if (d = {
                        value: 0
                    }, !C(b, d)) return 0 === a && "string" == typeof b ? b : G;
                if (e = d.value, c !== t) {
                    if (!C(c, d)) return G;
                    f = d.value
                } else f = 0;
                return 0 === a ? e : 1 === a ? -e : 2 === a ? e / 100 : 3 === a ? e + f : 4 === a ? e - f : 5 === a ? e * f : 6 === a ? f ? e / f : K : 7 === a ? !e && f < 0 ? K : u(e, f) : void 0
            }
            function Q(a, b, c) {
                if (8 === a) return D(b) ? b : D(c) ? c : B.bc(b) + B.bc(c)
            }
            function R(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m;
                if (D(b)) return b;
                if (D(c)) return c;
                if (e = typeof b === y, f = typeof c === y, e || f) d = e && f ? b === c ? 0 : b > c ? 1 : -1 : e ? 1 : -1;
                else {
                    if (g = typeof b === x, h = typeof c === x, i = g || h, j = i ? "" : 0, b = b === s || b === t ? j : b, c = c === s || c === t ? j : c, k = function() {
                            return b === c ? 0 : g && h ? b.toUpperCase().localeCompare(c.toUpperCase()) : g ? 1 : h ? -1 : o.Zh.Yh(b, c) ? 0 : b - c
                        }, !i) {
                        if (l = {
                                value: 0
                            }, m = {
                                value: 0
                            }, !C(b, l) || !C(c, m)) return G;
                        b = l.value, c = m.value
                    }
                    d = k()
                }
                return 9 === a && 0 === d || 10 === a && 0 !== d || 11 === a && d < 0 || 12 === a && d <= 0 || 13 === a && d > 0 || 14 === a && d >= 0
            }
            function S(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n, q;
                if (!b || !c || (1 !== b.getRangeCount() || 1 !== c.getRangeCount()) && 16 !== a || b.endSource || c.endSource) return G;
                if (d = b.getSource(), !d || d !== c.getSource()) return G;
                if (16 === a) e = b.yf.concat(c.yf);
                else {
                    if (f = 15 === a ? v : w, g = 15 === a ? w : v, h = b.getRow(0), i = b.getColumn(0), j = c.getRow(0), k = c.getColumn(0), l = f(h, j), m = f(i, k), n = g(h + b.getRowCount(0), j + c.getRowCount(0)) - l, q = g(i + b.getColumnCount(0), k + c.getColumnCount(0)) - m, n < 1 || q < 1) return p.Null;
                    e = [L(l, m, n, q)]
                }
                return new o.CalcReference(d, e)
            }
            i = B.Pa, j = B.Rh, k = B.bc, l = B.Xh, m = B.Vh;

            function T(a, b) {
                var c, d, e, f = !0;
                switch (b.Hi) {
                    case 0:
                        c = i(a), d = !0;
                        break;
                    case 1:
                        c = parseFloat(a), d = !0;
                        break;
                    case 2:
                        c = j(a), d = !0;
                        break;
                    case 3:
                        c = parseInt(a), d = !0;
                        break;
                    case 4:
                        c = E(a, b.Ii, b.Ji || !1, b.Ki || !1, b.Li || !1, b.Mi, b.xTa), c.isError && (c = c[0], f = !1), c.isConvertError && (c = G, f = !1);
                        break;
                    case 5:
                        c = k(a), b.Ni && "" === c && (c = G, f = !1);
                        break;
                    case 6:
                        e = {
                            value: s
                        }, l(a, e) ? c = e.value : (c = G, f = !1);
                        break;
                    case 7:
                        c = m(a);
                        break;
                    case 8:
                        c = X(a), !c || b.Oi && 0 === c.Pi() && 0 === c.Qi() ? (c = o.Errors.Number, f = !1) : c = {
                            Ri: c.Pi(),
                            Si: c.Qi()
                        };
                        break;
                    default:
                        c = a
                }
                return d && isNaN(c) && (c = G, f = !1), {
                    Ti: c,
                    Ei: f
                }
            }
            n = o.Functions;

            function U(a, b, c) {
                this.Ri = a, this.Si = b, this.kja = c || "i"
            }
            U.prototype = {
                Pi: function() {
                    return this.Ri
                },
                Qi: function() {
                    return this.Si
                },
                lja: function() {
                    return this.kja
                },
                bc: function(a) {
                    a = a || "i";
                    var b = this,
                        c = b.Ri,
                        d = b.Si,
                        e = "";
                    return 0 === c && 0 !== d || (e += "" + c), d === -1 ? e += "-" : 0 !== c && d > 0 && (e += "+"), d !== -1 && 0 !== d && 1 !== d && (e += "" + d), 0 !== d && (e += a), e
                }
            }, n.Ui = U;

            function V(a, b) {
                return a.charAt(b)
            }
            function W(a, b) {
                for (var c = a.length, d = !1; b < c && !isNaN(V(a, b));) b++, d = !0;
                for (b < c && "." === V(a, b) && b++; b < c && !isNaN(V(a, b));) b++, d = !0;
                if (b < c && ("E" === V(a, b) || "e" === V(a, b))) for (b++, d = !1, b < c && ("+" === V(a, b) || "-" === V(a, b)) && b++; b < c && !isNaN(V(a, b));) b++, d = !0;
                return {
                    Vi: d,
                    mi: b
                }
            }
            function X(a) {
                function b(a) {
                    var b, c, d, e, f = 0,
                        g = 0,
                        h = !1,
                        i = 0,
                        j = 0,
                        k = 0,
                        l = a.length;
                    if (!a) throw z().Exp_ArgumentNull;
                    if (0 === l) throw A;
                    if (k < l && ("+" === V(a, k) || "-" === V(a, k)) && k++, e = W(a, k), k = e.mi, b = e.Vi, k < l && ("+" === V(a, k) || "-" === V(a, k)) ? (i = k, k++, e = W(a, k), k = e.mi, c = e.Vi, k < l && ("i" === V(a, k) || "j" === V(a, k)) && (d = V(a, k), k++, h = !0), j = k - i) : k < l && ("i" === V(a, k) || "j" === V(a, k)) ? (d = V(a, k), k++, j = k, c = b, h = !0, b = !1) : i = k, k < l) throw A;
                    if (i > 0) {
                        if (!b) throw A;
                        f = parseInt(a.substr(0, i), 10)
                    }
                    if (j > 0) {
                        if (!h) throw A;
                        if (1 === j || 2 === j && "+" === V(a, i)) g = 1;
                        else if (2 === j && "-" === V(a, i)) g = -1;
                        else {
                            if (!c) throw A;
                            g = parseInt(a.substr(i, j - 1), 10)
                        }
                    }
                    return new U(f, g, d)
                }
                try {
                    return a ? "number" == typeof a ? new U(parseFloat(a), 0) : "string" == typeof a ? b(a) : null : new U(0, 0)
                } catch (a) {
                    return null
                }
            }
            n.Wi = X;

            function Y(a, b, c) {
                var d, e, f, g, h;
                for (Array.isArray(b) || (b = [b]), d = a.Ti, e = 0; e < b.length; e++) if (f = b[e].split(" "), g = f[0], h = parseInt(f[1]), "<" === g && d < h || ">" === g && d > h || "<=" === g && d <= h || ">=" === g && d >= h || "=" === g && d === h || "!=" === g && d !== h || "checkLength" === g && d.length > h) return a.Ti = c === t ? o.Errors.Number : c, void(a.Ei = !1)
            }
            function Z(a, b) {
                var c, d, e, f, g, h = [];
                if (!b) return {
                    Di: a,
                    Ei: !0
                };
                if (b.Xi) for (e = 0; e < a.length; e++) h.push(b);
                else h = Array.isArray(b) ? b : [b];
                for (d = 0; d < h.length; d++) {
                    if (f = h[d], f.Yi && !a[d]) throw z().Exp_ArgumentNull;
                    if (g = a[d] !== t) {
                        if (c = T(a[d], f), f.aj && Y(c, f.aj, f.bj), !c.Ei) break;
                        a[d] = f.Zi ? {
                            $i: g,
                            Qb: c.Ti
                        } : c.Ti
                    } else a[d] = f.Zi ? {
                        $i: g,
                        Qb: f._i
                    } : f._i
                }
                return c ? {
                    Di: a,
                    Ei: c.Ei,
                    Fi: c.Ti
                } : void 0
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e = c(26),
                f = c(25),
                g = e.l.Ra,
                h = e.k.ac,
                i = e.q,
                j = e.j,
                k = j.Ea,
                l = j.Fa,
                m = void 0,
                n = isNaN,
                o = Math.abs,
                p = Math.exp,
                q = Math.log,
                r = Math.pow,
                s = f.Errors,
                t = s.Value,
                u = s.Number,
                v = s.DivideByZero,
                w = s.NotAvailable,
                x = s.Null,
                y = f.Convert,
                z = y.CalcConvertedError,
                A = y.Th,
                B = y.Rh,
                C = y.Pa,
                D = y.Na,
                E = y.Ph,
                F = y.Nh,
                G = y.vf,
                H = f.Functions,
                I = f.Zh,
                J = I.Yh,
                K = parseInt,
                L = null,
                M = Math.floor,
                N = function() {
                    return e.C(f.SR)()
                };

            function O(a) {
                this.Di = a
            }
            O.prototype = {
                $j: function(a) {
                    var b, c, d, e, f = this.Di;
                    if (j.Ca(f) || (f = [f]), f[0] === -1) return !0;
                    for (b = 0; b < f.length; b++) if (c = f[b], R(c)) {
                        if (c = c.split(" "), d = c[0], e = parseInt(c[1]), "!=" === d && a !== e || ">" === d && a > e || ">=" === d && a >= e || "%=" === d && a % 2 === e) return !0
                    } else if (a === c) return !0;
                    return !1
                },
                _j: function() {
                    return this.Di
                }
            };

            function P(a, b, c) {
                if (l(a)) throw N().Exp_InvalidFunctionName;
                if (a = a.toUpperCase(), H.bi[a]) throw N().Exp_InvalidOverrideFunction;
                var d = H.bi[a];
                if (d) {
                    if (!c || !c.override) throw N().Exp_OverrideNotAllowed
                } else H.bi[a] = d = new H.Function(a, 0, 255);
                return b && "function" == typeof b && (d.evaluate = b), j.H(c, function(a, b) {
                    var e;
                    k(a, ["acceptsReference", "acceptsArray", "acceptsError", "acceptsMissingArgument", "precedentReference", "expandColumns", "expandRows"]) >= 0 ? (e = new O(b), d[a] = function(a) {
                        return e.$j(a)
                    }) : k(a, ["isVolatile", "isBranch", "findTestArgument", "returnReference", "isContextSensitive"]) >= 0 ? (e = new O(b), d[a] = function() {
                        return e._j()
                    }) : c.hasOwnProperty(a) && "override" !== a && (d[a] = b)
                }), d
            }
            H.ak = function(a, b, c, d, e, f, g, h) {
                return h || (h = {}), c !== m && (h.minArgs = c), d !== m && (h.maxArgs = d), f !== m && (h.acceptsReference = f), g !== m && (h.acceptsArray = g), e !== m && (h.Ci = e), h.bk !== m && (h.acceptsMissingArgument = h.bk), h.ck !== m && (h.isVolatile = h.ck), h.dk !== m && (h.isContextSensitive = h.dk), h.ek !== m && (h.precedentReference = h.ek), h.fk !== m && (h.arrayArgumentEvaluateMode = h.fk), h.gk !== m && (h.acceptsError = h.gk), P(a, b, h)
            }, H.hk = 1.79769e308;

            function Q(a) {
                return "boolean" == typeof a
            }
            H.ik = Q;

            function R(a) {
                return "string" == typeof a
            }
            H.jk = R;

            function S(a) {
                return "number" == typeof a
            }
            H.Na = S;

            function T(a) {
                return a % 400 === 0 || a % 4 === 0 && a % 100 !== 0 || 1900 === a
            }
            H.kk = T;

            function U(a, b) {
                switch (b) {
                    case 0:
                    case 2:
                    case 4:
                        return 360;
                    case 1:
                        return T(a.getFullYear()) ? 366 : 365;
                    case 3:
                        return 365;
                    default:
                        return -1
                }
            }
            H.lk = U;

            function V(a, b) {
                return a - b
            }
            H.mk = V;

            function W(a, b) {
                return k(b, [0, 2, 4, 6, 7, 9, 11]) >= 0 ? 31 : k(b, [3, 5, 8, 10]) >= 0 ? 30 : 1 === b ? T(a) ? 29 : 28 : void 0
            }
            H.nk = W;

            function X(a, b, c, d) {
                var e, f, g = c.getFullYear(),
                    h = c.getMonth(),
                    i = c.getDate(),
                    j = d.getFullYear(),
                    k = d.getMonth(),
                    l = d.getDate();
                return a ? (e = 2 === h && W(g, h) === i, f = 2 === k && W(j, k) === l, b ? (e && (i = 30), f && (l = 30)) : e && f && (i = 30, l = 30), 31 === l && i >= 30 && (l = 30)) : 31 === l && (l = 1, b && k++), 31 === i && (i = 30), 360 * (j - g) + 30 * (k - h) + l - i
            }
            function Y(a, b, c) {
                var d, e, f = 1;
                return V(a, b) > 0 && (e = a, a = b, b = e, f = -1), d = k(c, [1, 2, 3]) >= 0 ? f * B(g(b) - g(a)) : k(c, [4, 5]) >= 0 ? f * X(!1, 5 === c, a, b) : f * X(!0, 6 === c, a, b)
            }
            H.pk = Y;

            function Z(a) {
                var b, c, d;
                return 0 === a ? c = 0 : (d = .5 * o(a), d >= 3 ? c = 1 : d < 1 ? (b = d * d, c = ((((((((.000124818987 * b - .001075204047) * b + .005198775019) * b - .019198292004) * b + .059054035642) * b - .151968751364) * b + .319152932694) * b - .5319230073) * b + .797884560593) * d * 2) : (d -= 2, c = (((((((((((((-45255659e-12 * d + .00015252929) * d - 19538132e-12) * d - .000676904986) * d + .001390604284) * d - .00079462082) * d - .002034254874) * d + .006549791214) * d - .010557625006) * d + .011630447319) * d - .009279453341) * d + .005353579108) * d - .002141268741) * d + .000535310849) * d + .999936657524)), a > 0 ? .5 * (c + 1) : .5 * (1 - c)
            }
            H.qk = Z;

            function $(a, b, c, d, e) {
                var f, g, i, j, k, m, n, o, p, q, r, s, u, w = c < 100,
                    x = 2 === c || 102 === c,
                    y = x || 3 === c || 103 === c,
                    A = 5 === c || 105 === c,
                    B = 4 === c || 104 === c || A,
                    C = 9 === c || 109 === c,
                    G = 1 === c || 101 === c || C || d,
                    H = 6 === c || 106 === c,
                    I = H ? 1 : 0,
                    J = !1,
                    K = 0;
                for (f = 0; f < h(a); f++) {
                    if (q = a[f], y ? r = E(q, 0, !1, !1, !1, x) : B ? r = E(q, 5, !1, !0, !1, !0) : G ? r = E(q, 5, !1, C, !1, !0) : H && (r = E(q, 5, !1, !1, !1, !0)), r.isError) return r[0];
                    if (r.isConvertError) return t;
                    for (s = r.rangeCount, u = r.isReference, g = 0; g < s; g++) for (i = s > 1 ? r[g] : r, u && (j = q.getRow(g), k = q.getColumn(g)), m = 0; m < h(i); m++) if (b || !u || !q.isHiddenRow(g, m, w)) for (o = i[m], n = 0; n < h(o); n++)!b && u && q.isSubtotal(g, m + j, n + k) || (p = o[n], p !== z && (y && !l(p) && (!x || "" !== p && D(p, !0)) ? I++ : B && (!J || A && p < I || !A && p > I) ? I = p : G ? d ? (e.sumx += p, e.sumx2 += p * p, e.n++) : (I += p, K++) : H && (I *= p, K++), J = !0))
                }
                return G ? C ? I : d ? void 0 : 0 === K ? v : F(I / K) : H ? F(K > 0 ? I : 0) : I
            }
            H.rk = $;

            function _(a, b, c) {
                var d, e = c % 100,
                    f = 7 === e || 8 === e,
                    g = 7 === e || 10 === e ? 1 : 0,
                    h = {
                        sumx: 0,
                        sumx2: 0,
                        n: 0
                    };
                return $(a, b, c, !0, h), h.n <= g ? v : (d = Math.max(0, (h.n * h.sumx2 - h.sumx * h.sumx) / (h.n * (h.n - g))), F(f ? Math.sqrt(d) : d))
            }
            H.sk = _;

            function aa(a, b, c) {
                var d, e, f, g, i, j, k, l, m, n, o, p, q, r = 1 === b || 3 === b || 5 === b || 7 === b,
                    s = 1 === b || 2 === b || 3 === b || 4 === b || 0 === b,
                    u = 2 === b || 3 === b || 6 === b || 7 === b,
                    v = 2 === c,
                    w = v || 3 === c,
                    x = 12 === c,
                    y = 13 === c,
                    z = 14 === c,
                    A = 15 === c,
                    B = 16 === c,
                    C = 17 === c,
                    D = 18 === c,
                    F = 19 === c,
                    H = z || A || B || C || D || F,
                    I = [];
                if (H && 2 !== h(a)) return t;
                for (d = 0; d < h(a); d++) {
                    if (n = a[d], o = w ? E(n, 0, !1, !1, !1, v) : E(n, 5, !1, !1, !1, !0), o.isConvertError) return t;
                    for (p = o.rangeCount, q = o.isReference, e = 0; e < p; e++) for (f = p > 1 ? o[e] : o, q && (g = n.getRow(e), i = n.getColumn(e)), j = 0; j < h(f); j++) if (!q || !n.isHiddenRow(e, j, !r)) for (l = f[j], k = 0; k < h(l); k++) if (!(q && s && n.isSubtotal(e, j + g, k + i) || (m = l[k], u && G(m)))) {
                        if (!u && G(m)) return m;
                        "object" == typeof m && 0 === Object.keys(m).length || I.push(m)
                    }
                }
                return x || y || H ? na(I, c) : $(I, !0, c)
            }
            H.mja = aa;

            function ba(a) {
                var b = [],
                    c;
                for (c = 0; c < h(a); c++) da(a[c], b);
                return b
            }
            function ca(a) {
                a.sort(function(a, b) {
                    return a - b
                })
            }
            function da(a, b) {
                var c, d;
                for (c = 0; c < h(a); c++) d = a[c], d !== z && b.push(d);
                ca(b)
            }
            function ea() {
                var a = ba(arguments[0]),
                    b = h(a);
                return 0 === b ? u : b % 2 === 0 ? (C(a[b / 2 - 1]) + C(a[b / 2])) / 2 : a[K("" + b / 2)]
            }
            function fa() {
                var a, b, c, d = L,
                    e = 0,
                    f = ba(arguments[0]),
                    g = h(f);
                for (a = 0; a < g; a++) {
                    for (c = 0, b = 0; b < g; b++) b !== a && f[b] === f[a] && c++;
                    c > e && (e = c, d = f[a])
                }
                return 0 === e ? w : d
            }
            function ga(a, b) {
                return ia(!0, a, b)
            }
            function ha(a, b) {
                return ia(!1, a, b)
            }
            function ia(a, b, c) {
                var d, e = [];
                return da(b, e), d = h(e), c <= 0 || d < c ? u : a ? e[d - c] : e[c - 1]
            }
            function ja(a, b) {
                var c, d, e;
                return a = E(a, 1, !0, !0, !1, !0), b = C(b), a.isError ? a[0] : a.isConvertError || n(b) ? t : (c = [], da(a, c), !h(c) || b < 0 || b > 1 ? u : (d = b * (h(c) - 1), e = d % 1, d = K("" + d), 0 === e ? c[d] : C(c[d]) + e * (C(c[d + 1]) - C(c[d]))))
            }
            function ka(a, b) {
                var c = k(b, [0, 1, 2, 3, 4]);
                return c < 0 ? u : ja(a, .25 * c)
            }
            function la(a, b) {
                var c, d, e, f, g = h(a);
                return ca(a), g ? (c = b * (g + 1) - 1, d = c % 1, c < 0 || g - 1 < c ? u : (e = M(c), f = a[e], 0 === d ? f : f + d * (a[e + 1] - f))) : u
            }
            function ma(a, b) {
                var c = k(b, [1, 2, 3]);
                return c < 0 ? u : la(a, .25 * (c + 1))
            }
            function na(a, b) {
                var c = 12 === b,
                    d = 13 === b,
                    e = 14 === b,
                    f = 15 === b,
                    g = 16 === b,
                    h = 17 === b,
                    i = 18 === b,
                    j = 19 === b;
                return c ? ea(a) : d ? fa(a) : e ? ga(a[0], a[1]) : f ? ha(a[0], a[1]) : g ? ja(a[0], a[1]) : h ? ka(a[0], a[1]) : i ? la(a[0], a[1]) : j ? ma(a[0], a[1]) : x
            }
            H.sja = na;

            function oa(a) {
                var b = 1,
                    c;
                for (c = a; c > 1; c--) b *= c;
                return b
            }
            H.tk = oa;

            function pa(a, b, c) {
                var d = a.getDate(),
                    e = b.getDate(),
                    f = a.getMonth(),
                    g = b.getMonth(),
                    h = a.getFullYear(),
                    i = b.getFullYear();
                return d = 31 === d ? 30 : d, c ? e = 31 === e ? 30 : e : 31 === e && (d < 30 ? (e = 1, g++, g > 12 && (g = 1, i++)) : e = 30), 30 * (12 * (i - h) + g - f) + e - d
            }
            H.uk = pa;

            function qa(a, b, c) {
                var d, e, f, h, i, j, k, l, m, n = Y(a, b, c);
                return n < 0 && (n = -n, e = a, a = b, b = e), 1 === c ? (f = a.getFullYear(), h = b.getFullYear(), i = new Date(a), i.setFullYear(i.getFullYear() + 1), V(b, i) > 0 ? (l = h + 1 - f, i = new Date(f, 0, 1), j = new Date(h + 1, 0, 1), k = B(g(j) - g(i)) - 365 * (h + 1 - f)) : (l = 1, k = T(f) && a.getMonth() < 3 || T(h) && 256 * b.getMonth() + b.getDate() >= 541 ? 1 : 0), m = C(k) / C(l), d = 365 + m) : d = U(new Date, c), n / d
            }
            function ra(a, b, c) {
                return c < 0 || c > 4 ? u : qa(a, b, c)
            }
            H.vk = ra;

            function sa(a, b, c) {
                var d;
                return 0 === a ? d = b <= c : 1 === a ? d = b >= c : 2 === a ? d = b !== c : 3 === a ? d = b < c : 4 === a ? d = b === c : 5 === a && (d = b > c), d
            }
            function ta(a, b) {
                var c, d = -1,
                    e = !0,
                    g = {
                        value: 0
                    },
                    h = i.zb(b);
                return 4 === a && h && (c = function(a) {
                    var b = i.sb(h);
                    return b.lastIndex = 0, b.test(a)
                }), l(b) ? d = 0 : h ? e = !1 : A("" + b, g) ? d = g.value : e = !1, function(g) {
                    var i, j;
                    return !(g instanceof f.CalcError) && (l(g) && (g = ""), i = {
                            value: 0
                        }, e && A(g, i) ? "" !== g && sa(a, i.value, d) : (!h || !D(g, !0)) && (j = l(b) ? "" : ("" + b).toUpperCase(), h && c ? c("" + g) : sa(a, ("" + g).toUpperCase(), j)))
                }
            }
            b = {}, d = {
                wk: function(a) {
                    var b = Math.floor(a);
                    return J(a, b + 1) ? b + 1 : b
                },
                xk: function(a) {
                    var c, d, e, f, g, i, j = a,
                        k = b;
                    if (k || (b = k = {}), c = k[j]) return c;
                    if (D(a)) return c = k[j] = ta(4, a);
                    for (d = "=><", e = l(a) ? "" : ("" + a).toUpperCase(), f = "\0", g = 0; g < 2 && g < h(e); g++) {
                        if (i = e[g], d.indexOf(i) === -1) {
                            if ("<" === f) return k[j] = c = ta(3, e.substring(1)), c;
                            if (">" === f) return k[j] = c = ta(5, e.substring(1)), c;
                            break
                        }
                        if ("=" === i) return c = "<" === f ? ta(0, e.substring(2)) : ">" === f ? ta(1, e.substring(2)) : ta(4, "\0" === f ? e.substring(1) : a), k[j] = c, c;
                        if ("\0" === f) f = i;
                        else {
                            if ("<" === f) return c = ">" === i ? ta(2, e.substring(2)) : ta(3, e.substring(1)), k[j] = c, c;
                            if (">" === f) return k[j] = c = ta(5, e.substring(1)), c
                        }
                    }
                    return k[j] = c = ta(4, a), c
                },
                yk: function(a) {
                    var b = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16][a];
                    return l(b) ? r(10, parseFloat(a)) : b
                },
                zk: function(a) {
                    var b = Math.ceil(a);
                    return J(a, b - 1) ? b - 1 : b
                },
                Ak: function(a, b) {
                    var c = d.yk(o(b));
                    return a = b < 0 ? a / c : a * c, a = a < 0 ? d.zk(a - .5) : d.wk(a + .5), a = b < 0 ? a * c : a / c, F(a)
                },
                Bk: function(a, b) {
                    if (a < 0 || b < 0 || a < b) return u;
                    var c = 1,
                        d;
                    for (b = Math.min(a - b, b), d = 1; d <= b; d++) c *= a - d + 1, c /= d;
                    return F(c)
                },
                Ck: function(a, b) {
                    var c = o(a) > .5 ? r(1 + a, b) : p(b * q(1 + a));
                    return isFinite(c) ? n(c) && (c = 5e-324) : c === Number.POSITIVE_INFINITY ? c = H.hk : c === Number.NEGATIVE_INFINITY && (c = -H.hk), c
                },
                Dk: function(a, b) {
                    return (p(a) + (b ? -1 : 1) * p(-a)) / 2
                },
                Ek: function(a, b) {
                    return n(a) ? a : n(b) ? b : 1 !== b && 1 === a || 0 !== b && b !== Number.POSITIVE_INFINITY ? q(a) / q(b) : NaN
                }
            }, H.Fk = d, a.exports = H
        }()
}, function(a, b) {
    !
        function() {
            "use strict";

            function b(a, b) {
                return {
                    description: a,
                    parameters: b
                }
            }
            function c(a, b) {
                return {
                    name: a,
                    repeatable: b
                }
            }
            a.exports = {
                Exp_InvalidCast: "Invalid Cast Exception",
                Exp_FormulaInvalidChar: "The formula contains an invalid character: '{0}' at index on {1}",
                Exp_FormulaInvalid: "Invalid Formula",
                Exp_InvalidFunctionName: "Invalid function name",
                Exp_InvalidOverrideFunction: "Cannot override built-in function",
                Exp_InvalidArray: "Invalid array",
                Exp_OverrideNotAllowed: "Attempt to override function while override is not allowed",
                Exp_NoSyntax: "No syntax '{0}' to match the syntax '{1}'.",
                Exp_IsValid: "'{0}' is invalid.",
                Exp_InvalidParameters: "Invalid function parameter at {0}.",
                Exp_InvalidArrayColumns: "The length of array columns are not equal at {0}.",
                Exp_ExprIsNull: "The argument 'expr' is null",
                Exp_InvalidOperation: "Invalid Operation Exception",
                Exp_ArgumentNull: "Argument Null Exception",
                Exp_CriteriaIsNull: "Criteria is null",
                Exp_Format: "Format",
                Exp_ArrayFromulaPart: "Cannot change part of an array.",
                Exp_NotSupported: "Not Supported Exception",
                _h: {
                    ABS: b("This function calculates the absolute value of the specified value.", [c("value")]),
                    ACCRINT: b("This function calculates the accrued interest for a security that pays periodic interest.", [c("issue"), c("first"), c("settle"), c("rate"), c("par"), c("frequency"), c("basis")]),
                    ACCRINTM: b("This function calculates the accrued interest at maturity for a security that pays periodic interest.", [c("issue"), c("maturity"), c("rate"), c("par"), c("basis")]),
                    ACOS: b("This function calculates the arccosine, that is, the angle whose cosine is the specified value.", [c("value")]),
                    ACOSH: b("This function calculates the inverse hyperbolic cosine of the specified value.", [c("value")]),
                    ADDRESS: b("This function uses the row and column numbers to create a cell address in text.", [c("row"), c("column"), c("absnum"), c("a1style"), c("sheettext")]),
                    AMORDEGRC: b("This function returns the depreciation for an accounting period, taking into consideration prorated depreciation, and applies a depreciation coefficient in the calculation based on the life of the assets.", [c("cost"), c("datepurchased"), c("firstperiod"), c("salvage"), c("period"), c("drate"), c("basis")]),
                    AMORLINC: b("This function calculates the depreciation for an accounting period, taking into account prorated depreciation.", [c("cost"), c("datepurchased"), c("firstperiod"), c("salvage"), c("period"), c("drate"), c("basis")]),
                    AND: b("Check whether all arguments are True, and returns True if all arguments are True.", [c("logical1"), c("logical2")]),
                    ASIN: b("This function calculates the arcsine, that is, the angle whose sine is the specified value.", [c("value")]),
                    ASINH: b("This function calculates the inverse hyperbolic sine of a number.", [c("value")]),
                    ATAN: b("This function calculates the arctangent, that is, the angle whose tangent is the specified value.", [c("value")]),
                    ATAN2: b("This function calculates the arctangent of the specified x- and y-coordinates.", [c("x"), c("y")]),
                    ATANH: b("This function calculates the inverse hyperbolic tangent of a number.", [c("value")]),
                    AVEDEV: b("This function calculates the average of the absolute deviations of the specified values from their mean.", [c("value1"), c("value2", !0)]),
                    AVERAGE: b("This function calculates the average of the specified numeric values.", [c("value1"), c("value2", !0)]),
                    AVERAGEA: b("This function calculates the average of the specified values, including text or logical values as well as numeric values.", [c("value1"), c("value2", !0)]),
                    AVERAGEIF: b("This function calculates the average of the specified numeric values provided that they meet the specified criteria.", [c("value1"), c("value2", !0), c("condition")]),
                    AVERAGEIFS: b("This function calculates the average of all cells that meet multiple specified criteria.", [c("value1"), c("condition1"), c("value2", !0), c("condition2...")]),
                    BESSELI: b("This function calculates the modified Bessel function of the first kind evaluated for purely imaginary arguments.", [c("value"), c("order")]),
                    BESSELJ: b("This function calculates the Bessel function of the first kind.", [c("value"), c("order")]),
                    BESSELK: b("This function calculates the modified Bessel function of the second kind evaluated for purely imaginary arguments.", [c("value"), c("order")]),
                    BESSELY: b("This function calculates the Bessel function of the second kind.", [c("value"), c("order")]),
                    BETADIST: b("This function calculates the cumulative beta distribution function.", [c("x"), c("alpha"), c("beta"), c("lower"), c("upper")]),
                    BETAINV: b("This function calculates the inverse of the cumulative beta distribution function.", [c("prob"), c("alpha"), c("beta"), c("lower"), c("upper")]),
                    BIN2DEC: b("This function converts a binary number to a decimal number", [c("number")]),
                    BIN2HEX: b("This function converts a binary number to a hexadecimal number.", [c("number"), c("places")]),
                    BIN2OCT: b("This function converts a binary number to an octal number.", [c("number"), c("places")]),
                    BINOMDIST: b("This function calculates the individual term binomial distribution probability.", [c("x"), c("n"), c("p"), c("cumulative")]),
                    CEILING: b("This function rounds a number up to the nearest multiple of a specified value.", [c("value"), c("signif")]),
                    CHAR: b("This function returns the character specified by a number.", [c("value")]),
                    CHIDIST: b("This function calculates the one-tailed probability of the chi-squared distribution.", [c("value"), c("deg")]),
                    CHIINV: b("This function calculates the inverse of the one-tailed probability of the chi-squared distribution", [c("prob"), c("deg")]),
                    CHITEST: b("This function calculates the test for independence from the chi-squared distribution.", [c("obs_array"), c("exp_array")]),
                    CHOOSE: b("This function returns a value from a list of values.", [c("index"), c("value1"), c("value2", !0)]),
                    CLEAN: b("This function removes all non-printable characters from text.", [c("text")]),
                    CODE: b("This function returns a numeric code to represent the first character in a text string. The returned code corresponds to the Windows character set (ANSI).", [c("text")]),
                    COLUMN: b("This function returns the column number of a reference.", [c("reference")]),
                    COLUMNS: b("This function returns the number of columns in an array.", [c("array")]),
                    COMBIN: b("This function calculates the number of possible combinations for a specified number of items.", [c("k"), c("n")]),
                    COMPLEX: b("This function converts real and imaginary coefficients into a complex number.", [c("realcoeff"), c("imagcoeff"), c("suffix")]),
                    CONCATENATE: b("This function combines multiple text strings or numbers into one text string.", [c("text1"), c("text2"), c("....")]),
                    CONFIDENCE: b("This function returns confidence interval for a population mean.", [c("alpha"), c("stdev"), c("size")]),
                    CONVERT: b("This function converts a number from one measurement system to its equivalent in another measurement system.", [c("number"), c("from-unit"), c("to-unit")]),
                    CORREL: b("This function returns the correlation coefficient of the two sets of data.", [c("array1"), c("array2")]),
                    COS: b("This function returns the cosine of the specified angle.", [c("angle")]),
                    COSH: b("This function returns the hyperbolic cosine of the specified value.", [c("value")]),
                    COUNT: b("This function returns the number of cells that contain numbers.", [c("value1"), c("value2", !0)]),
                    COUNTA: b("This function returns the number of number of cells that contain numbers, text, or logical values.", [c("value1"), c("value2", !0)]),
                    COUNTBLANK: b("This function returns the number of empty (or blank) cells in a range of cells on a sheet.", [c("cellrange")]),
                    COUNTIF: b("This function returns the number of cells that meet a certain condition", [c("cellrange"), c("condition")]),
                    COUNTIFS: b("This function returns the number of cells that meet multiple conditions.", [c("cellrange"), c("condition")]),
                    COUPDAYBS: b("This function calculates the number of days from the beginning of the coupon period to the settlement date.", [c("settlement"), c("maturity"), c("frequency"), c("basis")]),
                    COUPDAYS: b("This function returns the number of days in the coupon period that contains the settlement date.", [c("settlement"), c("maturity"), c("frequency"), c("basis")]),
                    COUPDAYSNC: b("This function calculates the number of days from the settlement date to the next coupon date.", [c("settlement"), c("maturity"), c("frequency"), c("basis")]),
                    COUPNCD: b("This function returns a date number of the next coupon date after the settlement date.", [c("settlement"), c("maturity"), c("frequency"), c("basi")]),
                    COUPNUM: b("This function returns the number of coupons due between the settlement date and maturity date.", [c("settlement"), c("maturity"), c("frequency"), c("basis")]),
                    COUPPCD: b("This function returns a date number of the previous coupon date before the settlement date.", [c("settlement"), c("maturity"), c("frequency"), c("basis")]),
                    COVAR: b("This function returns the covariance, which is the average of the products of deviations for each data point pair in two sets of numbers.", [c("array1"), c("array2")]),
                    CRITBINOM: b("This function returns the criterion binomial, the smallest value for which the cumulative binomial distribution is greater than or equal to a criterion value.", [c("n"), c("p"), c("alpha")]),
                    CUMIPMT: b("This function returns the cumulative interest paid on a loan between the starting and ending periods.", [c("rate"), c("nper"), c("pval"), c("startperiod"), c("endperiod"), c("paytype")]),
                    CUMPRINC: b("This function returns the cumulative principal paid on a loan between the start and end periods.", [c("rate"), c("nper"), c("pval"), c("startperiod"), c("endperiod"), c("paytype")]),
                    DATE: b("This function returns the DateTime object for a particular date, specified by the year, month, and day.", [c("year"), c("month"), c("day")]),
                    DATEDIF: b("This function returns the number of days, months, or years between two dates.", [c("date1"), c("date2"), c("outputcode")]),
                    DATEVALUE: b("This function returns a DateTime object of the specified date.", [c("date_string")]),
                    DAVERAGE: b("This function calculates the average of values in a column of a list or database that match the specified conditions.", [c("database"), c(" field"), c(" criteria")]),
                    DAY: b("This function returns the day number of the month (integer 1 to 31) that corresponds to the specified date.", [c("date")]),
                    DAYS360: b("This function returns the number of days between two dates based on a 360-day year.", [c("startdate"), c("enddate"), c("method")]),
                    DB: b("This function calculates the depreciation of an asset for a specified period using the fixed‑declining balance method", [c("cost"), c("salvage"), c("life"), c("period"), c("month")]),
                    DCOUNT: b("This function counts the cells that contain numbers in a column of a list or database that match the specified conditions", [c("database"), c(" field"), c(" criteria")]),
                    DCOUNTA: b("This function counts the non-blank cells in a column of a list or database that match the specified conditions", [c("database"), c(" field"), c(" criteria")]),
                    DDB: b("This function calculates the depreciation of an asset for a specified period using the double-declining balance method or another method you specify.", [c("cost"), c("salvage"), c("life"), c("period"), c("factor")]),
                    DEC2BIN: b("This function converts a decimal number to a binary number.", [c("number"), c("places")]),
                    DEC2HEX: b("This function converts a decimal number to a hexadecimal number", [c("number"), c("places")]),
                    DEC2OCT: b("This function converts a decimal number to an octal number", [c("number"), c("places")]),
                    DEGREES: b("This function converts the specified value from radians to degrees", [c("angle")]),
                    DELTA: b("This function identifies whether two values are equal. Returns 1 if they are equal; returns 0 otherwise.", [c("value1"), c("value2")]),
                    DEVSQ: b("This function calculates the sum of the squares of deviations of data points (or of an array of data points) from their sample mean.", [c("value1"), c("value2", !0)]),
                    DGET: b("This function extracts a single value from a column of a list or database that matches the specified conditions.", [c("database"), c(" field"), c(" criteria")]),
                    DISC: b("This function calculates the discount rate for a security.", [c("settle"), c("mature"), c("pricep"), c("redeem"), c("basis")]),
                    DMAX: b("This function returns the largest number in a column of a list or database that matches the specified conditions.", [c("database"), c(" field"), c(" criteria")]),
                    DMIN: b("This function returns the smallest number in a column of a list or database that matches the specified conditions.", [c("database"), c(" field"), c(" criteria")]),
                    DOLLAR: b("This function converts a number to text using currency format, with the decimals rounded to the specified place.", [c("value"), c("digits")]),
                    DOLLARDE: b("This function converts a fraction dollar price to a decimal dollar price.", [c("fractionaldollar"), c("fraction")]),
                    DOLLARFR: b("This function converts a decimal number dollar price to a fraction dollar price.", [c("decimaldollar"), c("fraction")]),
                    DPRODUCT: b("This function multiplies the values in a column of a list or database that match the specified conditions.", [c("database"), c(" field"), c(" criteria")]),
                    DSTDEV: b("This function estimates the standard deviation of a population based on a sample by using the numbers in a column of a list or database that match the specified conditions.", [c("database"), c(" field"), c(" criteria")]),
                    DSTDEVP: b("This function calculates the standard deviation of a population based on the entire population using the numbers in a column of a list or database that match the specified conditions.", [c("database"), c(" field"), c(" criteria")]),
                    DSUM: b("This function adds the numbers in a column of a list or database that match the specified conditions.", [c("database"), c(" field"), c(" criteria")]),
                    DURATION: b("This function returns the Macaulay duration for an assumed par value of $100.", [c("settlement"), c("maturity"), c("coupon"), c("yield"), c("frequency"), c("basis")]),
                    DVAR: b("This function estimates the variance of a population based on a sample by using the numbers in a column of a list or database that match the specified conditions.", [c("database"), c(" field"), c(" criteria")]),
                    DVARP: b("This function calculates the variance of a population based on the entire population by using the numbers in a column of a list or database that match the specified conditions.", [c("database"), c(" field"), c(" criteria")]),
                    EDATE: b("This function calculates the date that is the indicated number of months before or after a specified date.", [c("startdate"), c("months")]),
                    EFFECT: b("This function calculates the effective annual interest rate for a given nominal annual interest rate and the number of compounding periods per year.", [c("nomrate"), c("comper")]),
                    EOMONTH: b("This function calculates the date for the last day of the month (end of month) that is the indicated number of months before or after the starting date.", [c("startdate"), c("months")]),
                    ERF: b("This function calculates the error function integrated between a lower and an upper limit.", [c("limit"), c("upperlimit")]),
                    ERFC: b("This function calculates the complementary error function integrated between a lower limit and infinity.", [c("lowerlimit")]),
                    "ERROR.TYPE": b("This function returns a number corresponding to one of the error values.", [c("errorvalue")]),
                    EURO: b("This function returns the equivalent of one Euro based on the ISO currency code.", [c("code")]),
                    EUROCONVERT: b("This function converts currency from a Euro member currency (including Euros) to another Euro member currency (including Euros).", [c("currency"), c("source"), c("target"), c("fullprecision"), c("triangulation")]),
                    EVEN: b("This function rounds the specified value up to the nearest even integer.", [c("value")]),
                    EXACT: b("This function returns true if two strings are the same; otherwise, false.", [c("text1"), c("text2")]),
                    EXP: b("This function returns e raised to the power of the specified value.", [c("value")]),
                    EXPONDIST: b("This function returns the exponential distribution or the probability density.", [c("value"), c("lambda"), c("cumulative")]),
                    FACT: b("This function calculates the factorial of the specified number.", [c("number")]),
                    FACTDOUBLE: b("This function calculates the double factorial of the specified number.", [c("number")]),
                    FALSE: b("This function returns the value for logical FALSE.", []),
                    FDIST: b("This function calculates the F probability distribution, to see degrees of diversity between two sets of data.", [c("value"), c("degnum"), c("degden")]),
                    FIND: b("This function finds one text value within another and returns the text value’s position in the text you searched.", [c("findtext"), c("intext"), c("start")]),
                    FINV: b("This function returns the inverse of the F probability distribution.", [c("p"), c("degnum"), c("degden")]),
                    FISHER: b("This function returns the Fisher transformation for a specified value.", [c("value")]),
                    FISHERINV: b("This function returns the inverse of the Fisher transformation for a specified value.", [c("value")]),
                    FIXED: b("This function rounds a number to the specified number of decimal places, formats the number in decimal format using a period and commas (if so specified), and returns the result as text.", [c("num"), c("digits"), c("notcomma")]),
                    FLOOR: b("This function rounds a number down to the nearest multiple of a specified value.", [c("value"), c("signif")]),
                    FORECAST: b("This function calculates a future value using existing values.", [c("value"), c("Yarray"), c("Xarray")]),
                    FREQUENCY: b("This function calculates how often values occur within a range of values. This function returns a vertical array of numbers.", [c("dataarray"), c("binarray")]),
                    FTEST: b("This function returns the result of an F-test, which returns the one-tailed probability that the variances in two arrays are not significantly different.", [c("array1"), c("array2")]),
                    FV: b("This function returns the future value of an investment based on a present value, periodic payments, and a specified interest rate.", [c("rate"), c("numper"), c("paymt"), c("pval"), c("type")]),
                    FVSCHEDULE: b("This function returns the future value of an initial principal after applying a series of compound interest rates. Calculate future value of an investment with a variable or adjustable rate.", [c("principal"), c("schedule")]),
                    GAMMADIST: b("This function returns the gamma distribution.", [c("x"), c("alpha"), c("beta"), c("cumulative")]),
                    GAMMAINV: b("This function returns the inverse of the gamma cumulative distribution.", [c("p"), c("alpha"), c("beta")]),
                    GAMMALN: b("This function returns the natural logarithm of the Gamma function, G(x).", [c("value")]),
                    GCD: b("This function returns the greatest common divisor of two numbers.", [c("number1"), c("number2")]),
                    GEOMEAN: b("This function returns the geometric mean of a set of positive data.", [c("value1"), c("value2", !0)]),
                    GESTEP: b("This function, greater than or equal to step, returns an indication of whether a number is equal to a threshold.", [c("number"), c("step")]),
                    GROWTH: b("This function calculates predicted exponential growth. This function returns the y values for a series of new x values that are specified by using existing x and y values.", [c("y"), c("x"), c("newx"), c("constant")]),
                    HARMEAN: b("This function returns the harmonic mean of a data set.", [c("value1"), c("value2", !0)]),
                    HEX2BIN: b("This function converts a hexadecimal number to a binary number.", [c("number"), c(" places")]),
                    HEX2DEC: b("This function converts a hexadecimal number to a decimal number.", [c("number")]),
                    HEX2OCT: b("This function converts a hexadecimal number to an octal number.", [c("number"), c(" places")]),
                    HLOOKUP: b("This function searches for a value in the top row and then returns a value in the same column from a specified row.", [c("value"), c("array"), c("row"), c("approx")]),
                    HOUR: b("This function returns the hour that corresponds to a specified time.", [c("time")]),
                    HYPGEOMDIST: b("This function returns the hypergeometric distribution.", [c("x"), c("n"), c("M"), c("N")]),
                    IF: b("This function performs a comparison and returns one of two provided values based on that comparison.", [c("valueTest"), c("valueTrue"), c("valueFalse")]),
                    IFERROR: b("This function evaluates a formula and returns a value you provide if there is an error or the formula result.", [c("value"), c("error")]),
                    IMABS: b("This function returns the absolute value or modulus of a complex number.", [c("complexnum")]),
                    IMAGINARY: b("This function returns the imaginary coefficient of a complex number.", [c("complexnum")]),
                    IMARGUMENT: b("This function returns the argument theta, which is an angle expressed in radians.", [c("complexnum")]),
                    IMCONJUGATE: b("This function returns the complex conjugate of a complex number.", [c("complexnum")]),
                    IMCOS: b("This function returns the cosine of a complex number.", [c("complexnum")]),
                    IMDIV: b("This function returns the quotient of two complex numbers.", [c("complexnum"), c("complexdenom")]),
                    IMEXP: b("This function returns the exponential of a complex number.", [c("complexnum")]),
                    IMLN: b("This function returns the natural logarithm of a complex number.", [c("complexnum")]),
                    IMLOG2: b("This function returns the base-2 logarithm of a complex number.", [c("complexnum")]),
                    IMLOG10: b("This function returns the common logarithm of a complex number.", [c("complexnum")]),
                    IMPOWER: b("This function returns a complex number raised to a power.", [c("complexnum"), c("powernum")]),
                    IMPRODUCT: b("This function returns the product of up to 29 complex numbers in the x+yi or x+yj text format.", [c("complexnum1"), c("complexnum2", !0)]),
                    IMREAL: b("This function returns the real coefficient of a complex number in the x+yi or x+yj text format.", [c("complexnum")]),
                    IMSIN: b("This function returns the sine of a complex number in the x+yi or x+yj text format.", [c("complexnum")]),
                    IMSQRT: b("This function returns the square root of a complex number in the x+yi or x+yj text format.", [c("complexnum")]),
                    IMSUB: b("This function returns the difference of two complex numbers in the x+yi or x+yj text format.", [c("complexnum1"), c("complexnum2")]),
                    IMSUM: b("This function returns the sum of two or more complex numbers in the x+yi or x+yj text format.", [c("complexnum1"), c("complexnum2", !0)]),
                    INDEX: b("This function returns a value or the reference to a value from within an array or range.", [c("return"), c("row"), c("col"), c("area")]),
                    INDIRECT: b("This function returns the reference specified by a text string. References are immediately evaluated to display their contents.", [c("ref_text"), c("a1_style")]),
                    INT: b("This function rounds a specified number down to the nearest integer.", [c("value")]),
                    INTERCEPT: b("This function returns the coordinates of a point at which a line intersects the y-axis, by using existing x values and y values.", [c("dependent"), c("independent")]),
                    INTRATE: b("This function calculates the interest rate for a fully invested security.", [c("settle"), c("mature"), c("invest"), c("redeem"), c("basis")]),
                    IPMT: b("This function calculates the payment of interest on a loan.", [c("rate"), c("per"), c("nper"), c("pval"), c("fval"), c("type")]),
                    IRR: b("This function returns the internal rate of return for a series of cash flows represented by the numbers in an array.", [c("arrayvals"), c("estimate")]),
                    ISBLANK: b("This function tests whether a value, an expression, or contents of a referenced cell is empty.", [c("cellreference")]),
                    ISERR: b("This function, Is Error Other Than Not Available, tests whether a value, an expression, or contents of a referenced cell has an error other than not available (#N/A).", [c("cellreference")]),
                    ISERROR: b("This function, Is Error of Any Kind, tests whether a value, an expression, or contents of a referenced cell has an error of any kind.", [c("cellreference")]),
                    ISEVEN: b("This function, Is Number Even, tests whether a value, an expression, or contents of a referenced cell is even.", [c("cellreference")]),
                    ISLOGICAL: b("This function tests whether a value, an expression, or contents of a referenced cell is a logical (Boolean) value.", [c("cellreference")]),
                    ISNA: b("This function, Is Not Available, tests whether a value, an expression, or contents of a referenced cell has the not available (#N/A) error value.", [c("cellreference")]),
                    ISNONTEXT: b("This function tests whether a value, an expression, or contents of a referenced cell has any data type other than text.", [c("cellreference")]),
                    ISNUMBER: b("This function tests whether a value, an expression, or contents of a referenced cell has numeric data.", [c("cellreference")]),
                    ISODD: b("This function, Is Number Odd, tests whether a value, an expression, or contents of a referenced cell has numeric data.", [c("cellreference")]),
                    ISPMT: b("This function calculates the interest paid during a specific period of an investment.", [c("rate"), c("per"), c("nper"), c("pv")]),
                    ISREF: b("This function, Is Reference, tests whether a value, an expression, or contents of a referenced cell is a reference to another cell.", [c("cellreference")]),
                    ISTEXT: b("This function tests whether a value, an expression, or contents of a referenced cell has text data.", [c("cellreference")]),
                    KURT: b("This function returns the kurtosis of a data set.", [c("value1"), c("value2"), c("value3"), c("value4", !0)]),
                    LARGE: b("This function returns the nth largest value in a data set, where n is specified.", [c("array"), c("n")]),
                    LCM: b("This function returns the least common multiple of two numbers.", [c("number1"), c("number2")]),
                    LEFT: b("This function returns the specified leftmost characters from a text value, and based on the number of characters you specify.", [c("mytext"), c("num_chars")]),
                    LEN: b("This function returns the length of the number of characters in a text string.", [c("value")]),
                    LINEST: b("This function calculates the statistics for a line.", [c("y"), c("x"), c("constant"), c("stats")]),
                    LN: b("This function returns the natural logarithm of the specified number.", [c("value")]),
                    LOG: b("This function returns the logarithm base Y of a number X.", [c("number"), c("base")]),
                    LOG10: b("This function returns the logarithm base 10 of the number given.", [c("value")]),
                    LOGEST: b("This function calculates an exponential curve that fits the data and returns an array of values that describes the curve.", [c("y"), c("x"), c("constant"), c("stats")]),
                    LOGINV: b("This function returns the inverse of the lognormal cumulative distribution function of x, where LN(x) is normally distributed with the specified mean and standard deviation.", [c("prob"), c("mean"), c("stdev")]),
                    LOGNORMDIST: b("This function returns the cumulative natural log normal distribution of x, where LN(x) is normally distributed with the specified mean and standard deviation. Analyze data that has been logarithmically transformed with this function.", [c("x"), c("mean"), c("stdev")]),
                    LOOKUP: b("This function searches for a value and returns a value from the same location in a second area.", [c("lookupvalue"), c("lookupvector"), c("resultvector")]),
                    LOWER: b("This function converts text to lower case letters.", [c("string")]),
                    MATCH: b("This function returns the relative position of a specified item in a range.", [c("value1"), c("array"), c("type")]),
                    MAX: b("This function returns the maximum value, the greatest value, of all the values in the arguments.", [c("value1"), c("value2", !0)]),
                    MAXA: b("This function returns the largest value in a list of arguments, including text and logical values.", [c("value1"), c("value2", !0)]),
                    MDETERM: b("This function returns the matrix determinant of an array.", [c("array")]),
                    MDURATION: b("This function calculates the modified Macaulay duration of a security with an assumed par value of $100.", [c("settlement"), c("maturity"), c("coupon"), c("yield"), c("frequency"), c("basis")]),
                    MEDIAN: b("This function returns the median, the number in the middle of the provided set of numbers; that is, half the numbers have values that are greater than the median, and half have values that are less than the median.", [c("value1"), c("value2", !0)]),
                    MID: b("This function returns the requested number of characters from a text string starting at the position you specify, and based on the number of characters you specify.", [c("text"), c("start_num"), c("num_chars")]),
                    MIN: b("This function returns the minimum value, the least value, of all the values in the arguments.", [c("value1"), c("value2", !0)]),
                    MINA: b("This function returns the minimum value in a list of arguments, including text and logical values.", [c("value1"), c("value2", !0)]),
                    MINUTE: b("This function returns the minute corresponding to a specified time.", [c("time")]),
                    MINVERSE: b("This function returns the inverse matrix for the matrix stored in an array.", [c("array")]),
                    MIRR: b("This function returns the modified internal rate of return for a series of periodic cash flows.", [c("arrayvals"), c("payment_int"), c("income_int")]),
                    MMULT: b("This function returns the matrix product for two arrays.", [c("array1"), c("array2")]),
                    MOD: b("This function returns the remainder of a division operation.", [c("dividend"), c("divisor")]),
                    MODE: b("This function returns the most frequently occurring value in a set of data.", [c("value1"), c("value2", !0)]),
                    MONTH: b("This function returns the month corresponding to the specified date value.", [c("date")]),
                    MROUND: b("This function returns a number rounded to the desired multiple.", [c("number"), c("multiple")]),
                    MULTINOMIAL: b("This function calculates the ratio of the factorial of a sum of values to the product of factorials.", [c("value1"), c("value2", !0)]),
                    N: b("This function returns a value converted to a number.", [c("value")]),
                    NA: b("This function returns the error value #N/A that means not available.", []),
                    NEGBINOMDIST: b("This function returns the negative binomial distribution.", [c("x"), c("r"), c("p")]),
                    NETWORKDAYS: b("This function returns the total number of complete working days between the start and end dates.", [c("startdate"), c("enddate"), c("holidays")]),
                    NOMINAL: b("This function returns the nominal annual interest rate for a given effective rate and number of compounding periods per year.", [c("effrate"), c("comper")]),
                    NORMDIST: b("This function returns the normal cumulative distribution for the specified mean and standard deviation.", [c("x"), c("mean"), c("stdev"), c("cumulative")]),
                    NORMINV: b("This function returns the inverse of the normal cumulative distribution for the given mean and standard deviation.", [c("prob"), c("mean"), c("stdev")]),
                    NORMSDIST: b("This function returns the standard normal cumulative distribution function.", [c("value")]),
                    NORMSINV: b("This function returns the inverse of the standard normal cumulative distribution. The distribution has a mean of zero and a standard deviation of one.", [c("prob")]),
                    NOT: b("This function reverses the logical value of its argument.", [c("value")]),
                    NOW: b("This function returns the current date and time.", []),
                    NPER: b("This function returns the number of periods for an investment based on a present value, future value, periodic payments, and a specified interest rate.", [c("rate"), c("paymt"), c("pval"), c("fval"), c("type")]),
                    NPV: b("This function calculates the net present value of an investment by using a discount rate and a series of future payments and income.", [c("discount"), c("value1"), c("value2", !0)]),
                    OCT2BIN: b("This function converts an octal number to a binary number.", [c("number"), c("places")]),
                    OCT2DEC: b("This function converts an octal number to a decimal number.", [c("number")]),
                    OCT2HEX: b("This function converts an octal number to a hexadecimal number.", [c("number"), c("places")]),
                    ODD: b("This function rounds the specified value up to the nearest odd integer.", [c("value")]),
                    ODDFPRICE: b("This function calculates the price per $100 face value of a security with an odd first period.", [c("settle"), c("maturity"), c("issue"), c("first"), c("rate"), c("yield"), c("redeem"), c("freq"), c("basis")]),
                    ODDFYIELD: b("This function calculates the yield of a security with an odd first period.", [c("settle"), c("maturity"), c("issue"), c("first"), c("rate"), c("price"), c("redeem"), c("freq"), c("basis")]),
                    ODDLPRICE: b("This function calculates the price per $100 face value of a security with an odd last coupon period.", [c("settle"), c("maturity"), c("last"), c("rate"), c("yield"), c("redeem"), c("freq"), c("basis")]),
                    ODDLYIELD: b("This function calculates the yield of a security with an odd last period.", [c("settle"), c("maturity"), c("last"), c("rate"), c("price"), c("redeem"), c("freq"), c("basis")]),
                    OFFSET: b("This function returns a reference to a range. The range is a specified number of rows and columns from a cell or range of cells. The function returns a single cell or a range of cells.", [c("reference"), c("rows"), c("cols"), c("height"), c("width")]),
                    OR: b("This function calculates logical OR. It returns TRUE if any of its arguments are true; otherwise, returns FALSE if all arguments are false.", [c("argument1"), c("argument2...")]),
                    PEARSON: b("This function returns the Pearson product moment correlation coefficient, a dimensionless index between -1.0 to 1.0 inclusive indicative of the linear relationship of two data sets.", [c("array_ind"), c("array_dep")]),
                    PERCENTILE: b("This function returns the nth percentile of values in a range.", [c("array"), c("n")]),
                    PERCENTRANK: b("This function returns the rank of a value in a data set as a percentage of the data set.", [c("array"), c("n"), c("sigdig")]),
                    PERMUT: b("This function returns the number of possible permutations for a specified number of items.", [c("k"), c("n")]),
                    PI: b("This function returns PI as 3.1415926536.", []),
                    PMT: b("This function returns the payment amount for a loan given the present value, specified interest rate, and number of terms.", [c("rate"), c("nper"), c("pval"), c("fval"), c("type")]),
                    POISSON: b("This function returns the Poisson distribution.", [c("nevents"), c("mean"), c("cumulative")]),
                    POWER: b("This function raises the specified number to the specified power.", [c("number"), c("power")]),
                    PPMT: b("This function returns the amount of payment of principal for a loan given the present value, specified interest rate, and number of terms.", [c("rate"), c("per"), c("nper"), c("pval"), c("fval"), c("type")]),
                    PRICE: b("This function calculates the price per $100 face value of a periodic interest security", [c("settlement"), c("maturity"), c("rate"), c("yield"), c("redeem"), c("frequency"), c("basis")]),
                    PRICEDISC: b("This function returns the price per $100 face value of a discounted security.", [c("settle"), c("mature"), c("discount"), c("redeem"), c("basis")]),
                    PRICEMAT: b("This function returns the price at maturity per $100 face value of a security that pays interest.", [c("settle"), c("mature"), c("issue"), c("rate"), c("yield"), c("basis")]),
                    PROB: b("This function returns the probability that values in a range are between two limits.", [c("array"), c("probs"), c("lower"), c("upper")]),
                    PRODUCT: b("This function multiplies all the arguments and returns the product.", [c("value1"), c("value2", !0)]),
                    PROPER: b("This function capitalizes the first letter in each word of a text string.", [c("text")]),
                    PV: b("This function returns the present value of an investment based on the interest rate, number and amount of periodic payments, and future value. The present value is the total amount that a series of future payments is worth now.", [c("rate"), c("numper"), c("paymt"), c("fval"), c("type")]),
                    QUARTILE: b("This function returns which quartile (which quarter or 25 percent) of a data set a value is.", [c("array"), c("quart")]),
                    QUOTIENT: b("This function returns the integer portion of a division. Use this to ignore the remainder of a division.", [c("numerator"), c("denominator")]),
                    RADIANS: b("This function converts the specified number from degrees to radians.", [c("value")]),
                    RAND: b("This function returns an evenly distributed random number between 0 and 1.", []),
                    RANDBETWEEN: b("This function returns a random number between the numbers you specify.", [c("lower"), c("upper")]),
                    RANK: b("This function returns the rank of a number in a set of numbers. If you were to sort the set, the rank of the number would be its position in the list.", [c("number"), c("array"), c("order")]),
                    RATE: b("This function returns the interest rate per period of an annuity.", [c("nper"), c("pmt"), c("pval"), c("fval"), c("type"), c("guess")]),
                    RECEIVED: b("This function returns the amount received at maturity for a fully invested security.", [c("settle"), c("mature"), c("invest"), c("discount"), c("basis")]),
                    REPLACE: b("This function replaces part of a text string with a different text string, based on the number of characters you specify.", [c("old_text"), c("start_char"), c("num_chars"), c("new_text")]),
                    REPT: b("This function repeats text a specified number of times.", [c("text"), c("number")]),
                    RIGHT: b("This function returns the specified rightmost characters from a text value, and based on the number of characters you specify.", [c("text"), c("num_chars")]),
                    ROMAN: b("This function converts an Arabic numeral to a Roman numeral text equivalent.", [c("number"), c("style")]),
                    ROUND: b("This function rounds the specified value to the nearest number, using the specified number of decimal places.", [c("value"), c("places")]),
                    ROUNDDOWN: b("This function rounds the specified number down to the nearest number, using the specified number of decimal places.", [c("value"), c("places")]),
                    ROUNDUP: b("This function rounds the specified number up to the nearest number, using the specified number of decimal places.", [c("value"), c("places")]),
                    ROW: b("This function returns the number of a row from a reference.", [c("reference")]),
                    ROWS: b("This function returns the number of rows in an array.", [c("array")]),
                    RSQ: b("This function returns the square of the Pearson product moment correlation coefficient (R-squared) through data points in known y�s and known x�s.", [c("array_dep"), c("array_ind")]),
                    SEARCH: b("This function finds one text string in another text string and returns the index of the starting position of the found text.", [c("string1"), c("string2")]),
                    SECOND: b("This function returns the seconds (0 to 59) value for a specified time.", [c("time")]),
                    SERIESSUM: b("This function returns the sum of a power series.", [c("x"), c("n"), c("m"), c("coeff")]),
                    SIGN: b("This function returns the sign of a number or expression.", [c("cellreference")]),
                    SIN: b("This function returns the sine of the specified angle.", [c("angle")]),
                    SINH: b("This function returns the hyperbolic sine of the specified number.", [c("value")]),
                    SKEW: b("This function returns the skewness of a distribution.", [c("number1"), c("number2", !0)]),
                    SLN: b("This function returns the straight-line depreciation of an asset for one period.", [c("cost"), c("salvage"), c("life")]),
                    SLOPE: b("This function calculates the slope of a linear regression.", [c("array_dep"), c("array_ind")]),
                    SMALL: b("This function returns the nth smallest value in a data set, where n is specified.", [c("array"), c("n")]),
                    SQRT: b("This function returns the positive square root of the specified number.", [c("value")]),
                    SQRTPI: b("This function returns the positive square root of a multiple of pi (p).", [c("multiple")]),
                    STANDARDIZE: b("This function returns a normalized value from a distribution characterized by mean and standard deviation.", [c("x"), c("mean"), c("stdev")]),
                    STDEVA: b("This function returns the standard deviation for a set of numbers, text, or logical values.", [c("value1"), c("value2", !0)]),
                    STDEVP: b("This function returns the standard deviation for an entire specified population (of numeric values).", [c("value1"), c("value2", !0)]),
                    STDEVPA: b("This function returns the standard deviation for an entire specified population, including text or logical values as well as numeric values.", [c("value1"), c("value2", !0)]),
                    STEYX: b("This function returns the standard error of the predicted y value for each x. The standard error is a measure of the amount of error in the prediction of y for a value of x.", [c("array_dep"), c("array_ind")]),
                    SUBSTITUTE: b("This function substitutes a new string for specified characters in an existing string.", [c("text"), c("old_piece"), c("new_piece"), c("instance")]),
                    SUBTOTAL: b("This function calculates a subtotal of a list of numbers using a specified built-in function.", [c("functioncode"), c("value1"), c("value2", !0)]),
                    SUM: b("This function returns the sum of cells or range of cells.", [c("value1"), c("value2", !0)]),
                    SUMIF: b("This function adds the cells using a given criteria.", [c("array"), c("condition"), c("sumrange")]),
                    SUMIFS: b("This function adds the cells in a range using multiple criteria.", [c("array"), c("conditionarray"), c("condition", !0)]),
                    SUMPRODUCT: b("This function returns the sum of products of cells. Multiplies corresponding components in the given arrays, and returns the sum of those products.", [c("array1"), c("array2", !0)]),
                    SUMSQ: b("This function returns the sum of the squares of the arguments.", [c("value1"), c("value2", !0)]),
                    SUMX2MY2: b("This function returns the sum of the difference of the squares of corresponding values in two arrays.", [c("array_x"), c("array_y")]),
                    SUMX2PY2: b("This function returns the sum of the sum of squares of corresponding values in two arrays.", [c("array_x"), c("array_y")]),
                    SUMXMY2: b("This function returns the sum of the square of the differences of corresponding values in two arrays.", [c("array_x"), c("array_y")]),
                    SYD: b("This function returns the sum-of-years� digits depreciation of an asset for a specified period.", [c("cost"), c("salvage"), c("life"), c("period")]),
                    T: b("This function returns the text in a specified cell.", [c("value")]),
                    TAN: b("This function returns the tangent of the specified angle.", [c("angle")]),
                    TANH: b("This function returns the hyperbolic tangent of the specified number.", [c("value")]),
                    TBILLEQ: b("This function returns the equivalent yield for a Treasury bill (or T-bill)", [c("settle"), c("mature"), c("discount")]),
                    TBILLPRICE: b("This function returns the price per $100 face value for a Treasury bill (or T-bill).", [c("settle"), c("mature"), c("discount")]),
                    TBILLYIELD: b("This function returns the yield for a Treasury bill (or T-bill).", [c("settle"), c("mature"), c("priceper")]),
                    TDIST: b("This function returns the probability for the t-distribution.", [c("x"), c("deg"), c("tails")]),
                    TEXT: b("This function formats a number and converts it to text.", [c("value"), c("text")]),
                    TIME: b("This function returns the TimeSpan object for a specified time.", [c("hour"), c("minutes"), c("seconds")]),
                    TIMEVALUE: b("This function returns the TimeSpan object of the time represented by a text string.", [c("time_string")]),
                    TINV: b("This function returns the t-value of the student's t-distribution as a function of the probability and the degrees of freedom.", [c("prog"), c("deg")]),
                    TODAY: b("This function returns the date and time of the current date.", []),
                    TRANSPOSE: b("This function returns a vertical range of cells as a horizontal range or a horizontal range of cells as a vertical range.", [c("array")]),
                    TREND: b("This function returns values along a linear trend. This function fits a straight line to the arrays known x and y values. Trend returns the y values along that line for the array of specified new x values.", [c("y"), c("x"), c("newx"), c("constant")]),
                    TRIM: b("This function removes extra spaces from a string and leaves single spaces between words.", [c("text")]),
                    TRIMMEAN: b("This function returns the mean of a subset of data excluding the top and bottom data.", [c("array"), c("percent")]),
                    TRUE: b("This function returns the value for logical TRUE.", []),
                    TRUNC: b("This function removes the specified fractional part of the specified number.", [c("value"), c("precision")]),
                    TTEST: b("This function returns the probability associated with a t-test.", [c("array1"), c("array2"), c("tails"), c("type")]),
                    TYPE: b("This function returns the type of value.", [c("value")]),
                    UPPER: b("This function converts text to uppercase letters.", [c("string")]),
                    VALUE: b("This function converts a text string that is a number to a numeric value.", [c("text")]),
                    VAR: b("This function returns the variance based on a sample of a population, which uses only numeric values.", [c("value1"), c("value2", !0)]),
                    VARA: b("This function returns the variance based on a sample of a population, which includes numeric, logical, or text values.", [c("value1"), c("value2", !0)]),
                    VARP: b("This function returns variance based on the entire population, which uses only numeric values.", [c("value1"), c("value2", !0)]),
                    VARPA: b("This function returns variance based on the entire population, which includes numeric, logical, or text values.", [c("value1"), c("value2", !0)]),
                    VDB: b("This function returns the depreciation of an asset for any period you specify using the variable declining balance method.", [c("cost"), c("salvage"), c("life"), c("start"), c("end"), c("factor"), c("switchnot")]),
                    VLOOKUP: b("This function searches for a value in the leftmost column and returns a value in the same row from a column you specify.", [c("value"), c("array"), c("colindex"), c("approx")]),
                    WEEKDAY: b("This function returns the number corresponding to the day of the week for a specified date.", [c("date"), c("type")]),
                    WEEKNUM: b("This function returns a number that indicates the week of the year numerically.", [c("date"), c("weektype")]),
                    WEIBULL: b("This function returns the two-parameter Weibull distribution, often used in reliability analysis.", [c("x"), c("alpha"), c("beta"), c("cumulative")]),
                    WORKDAY: b("This function returns the number of working days before or after the starting date.", [c("startdate"), c("numdays"), c("holidays")]),
                    XIRR: b("This function calculates the internal rate of return for a schedule of cash flows that may not be periodic.", [c("values"), c("dates"), c("guess")]),
                    XNPV: b("This function calculates the net present value for a schedule of cash flows that may not be periodic.", [c("rate"), c("values"), c("dates")]),
                    YEAR: b("This function returns the year as an integer for a specified date.", [c("date")]),
                    YEARFRAC: b("This function returns the fraction of the year represented by the number of whole days between the start and end dates.", [c("startdate"), c("enddate"), c("basis")]),
                    YIELD: b("This function calculates the yield on a security that pays periodic interest.", [c("settle"), c("maturity"), c("rate"), c("price"), c("redeem"), c("frequency"), c("basis")]),
                    YIELDDISC: b("This function calculates the annual yield for a discounted security.", [c("settle"), c("maturity"), c("price"), c("redeem"), c("basis")]),
                    YIELDMAT: b("This function calculates the annual yield of a security that pays interest at maturity.", [c("settle"), c("maturity"), c("issue"), c("issrate"), c("price"), c("basis")]),
                    ZTEST: b("This function returns the significance value of a z-test. The z-test generates a standard score for x with respect to the set of data and returns the two-tailed probability for the normal distribution.", [c("array"), c("x"), c("sigma")]),
                    HBARSPARKLINE: b("This function returns a data set used for representing a Hbar sparkline", [c("value"), c("colorScheme")]),
                    VBARSPARKLINE: b("This function returns a data set used for representing a Vbar sparkline", [c("value"), c("colorScheme")]),
                    VARISPARKLINE: b("This function returns a data set used for representing a variance sparkline", [c("variance"), c("reference"), c("mini"), c("maxi"), c("mark"), c("tickunit"), c("legend"), c("colorPositive"), c("colorNegative"), c("vertical")]),
                    PIESPARKLINE: b("This function returns a data set used for representing a pie sparkline", [c("range|percentage"), c("color", !0)]),
                    AREASPARKLINE: b("This function returns a data set used for representing a area sparkline", [c("points"), c("mini"), c("maxi"), c("line1"), c("line2"), c("colorPositive"), c("colorNegative")]),
                    SCATTERSPARKLINE: b("This function returns a data set used for representing a scatter sparkline", [c("points1"), c("points2"), c("minX"), c("maxX"), c("minY"), c("maxY"), c("hLine"), c("vLine"), c("xMinZone"), c("xMaxZone"), c("yMinZone"), c("yMaxZone"), c("tags"), c("drawSymbol"), c("drawLines"), c("color1"), c("color2"), c("dash")]),
                    LINESPARKLINE: b("This function returns a data set used for representing a line sparkline", [c("data"), c("dataOrientation"), c("dateAxisData"), c("dateAxisOrientation"), c("setting")]),
                    COLUMNSPARKLINE: b("This function returns a data set used for representing a column sparkline", [c("data"), c("dataOrientation"), c("dateAxisData"), c("dateAxisOrientation"), c("setting")]),
                    WINLOSSSPARKLINE: b("This function returns a data set used for representing a win/loss sparkline", [c("data"), c("dataOrientation"), c("dateAxisData"), c("dateAxisOrientation"), c("setting")]),
                    BULLETSPARKLINE: b("This function returns a data set used for representing a bullet sparkline", [c("measure"), c("target"), c("maxi"), c("good"), c("bad"), c("forecast"), c("tickunit"), c("colorScheme"), c("vertical")]),
                    SPREADSPARKLINE: b("This function returns a data set used for representing a spread sparkline", [c("points"), c("showAverage"), c("scaleStart"), c("scaleEnd"), c("style"), c("colorScheme"), c("vertical")]),
                    STACKEDSPARKLINE: b("This function returns a data set used for representing a stacked sparkline", [c("points"), c("colorRange"), c("labelRange"), c("maximum"), c("targetRed"), c("targetGreen"), c("targetBlue"), c("tragetYellow"), c("color"), c("highlightPosition"), c("vertical"), c("textOrientation"), c("textSize")]),
                    BOXPLOTSPARKLINE: b("This function returns a data set used for representing a boxplot sparkline", [c("points"), c("boxPlotClass"), c("showAverage"), c("scaleStart"), c("scaleEnd"), c("acceptableStart"), c("acceptableEnd"), c("colorScheme"), c("style"), c("vertical")]),
                    CASCADESPARKLINE: b("This function returns a data set used for representing a cascade sparkline", [c("pointsRange"), c("pointIndex"), c("labelsRange"), c("minimum"), c("maximum"), c("colorPositive"), c("colorNegative"), c("vertical")]),
                    PARETOSPARKLINE: b("This function returns a data set used for representing a pareto sparkline", [c("points"), c("pointIndex"), c("colorRange"), c("target"), c("target2"), c("highlightPosition"), c("label"), c("vertical")]),
                    MONTHSPARKLINE: b("This function returns a data set used for representing a month sparkline", [c("year"), c("month"), c("dataRange"), c("emptyColor"), c("startColor"), c("middleColor"), c("endColor")]),
                    YEARSPARKLINE: b("This function returns a data set used for representing a year sparkline", [c("year"), c("dataRange"), c("emptyColor"), c("startColor"), c("middleColor"), c("endColor")]),
                    "CEILING.PRECISE": b("This function rounds a number up to the nearest integer or to the nearest multiple of a specified value.", [c("number"), c("signif")]),
                    "COVARIANCE.S": b("This function returns the sample covariance, which is the average of the products of deviations for each data point pair in two sets of numbers.", [c("array1"), c("array2")]),
                    "FLOOR.PRECISE": b("This function rounds a number down to the nearest integer or to the nearest multiple of a specified value.", [c("number"), c("signif")]),
                    "PERCENTILE.EXC": b("This function returns the nth percentile of values in a range.", [c("array"), c("n")]),
                    "QUARTILE.EXC": b("This function returns which quartile (which quarter or 25 percent) of a data set a value is.", [c("array"), c("quart")]),
                    "RANK.AVG": b("This function returns the rank of a number in a set of numbers. If some values have the same rank, it will return the average rank.", [c("number"), c("array"), c("order")]),
                    "MODE.MULT": b("This function returns the most frequently occurring vertical array or the most frequently occurring value in a set of data.", [c("number1"), c("number2", !0)]),
                    "STDEV.P": b("This function returns the standard deviation for an entire specified population (of numeric values).", [c("value1"), c("value2", !0)]),
                    "VAR.P": b("This function returns variance based on the entire population, which uses only numeric values.", [c("value1"), c("value2", !0)]),
                    "COVARIANCE.P": b("This function returns the covariance, which is the average of the products of deviations for each data point pair in two sets of numbers.", [c("array1"), c("array2")]),
                    "MODE.SNGL": b("This function returns the most frequently occurring value in a set of data.", [c("value1"), c("value2", !0)]),
                    "PERCENTILE.INC": b("This function returns the nth percentile of values in a range.", [c("array"), c("n")]),
                    "QUARTILE.INC": b("This function returns which quartile (which quarter or 25 percent) of a data set a value is.", [c("array"), c("quart")]),
                    "RANK.EQ": b("This function returns the rank of a number in a set of numbers. If you were to sort the set, the rank of the number would be its position in the list.", [c("number"), c("array"), c("order")]),
                    STDEV: b("This function returns standard deviation is estimated based on a sample.", [c("number1"), c("number2", !0)]),
                    "STDEV.S": b("This function returns standard deviation is estimated based on a sample.", [c("number1"), c("number2", !0)]),
                    "VAR.S": b("This function returns the variance based on a sample of a population, which uses only numeric values.", [c("value1"), c("value2", !0)]),
                    "BETA.INV": b("This function calculates the inverse of the cumulative beta distribution function.", [c("prob"), c("alpha"), c("beta"), c("lower"), c("upper")]),
                    "BINOM.DIST": b("This function calculates the individual term binomial distribution probability.", [c("x"), c("n"), c("p"), c("cumulative")]),
                    "BINOM.INV": b("This function returns the criterion binomial, the smallest value for which the cumulative binomial distribution is greater than or equal to a criterion value.", [c("n"), c("p"), c("alpha")]),
                    "CHISQ.DIST.RT": b("This function calculates the one-tailed probability of the chi-squared distribution.", [c("value"), c("deg")]),
                    "CHISQ.INV.RT": b("This function calculates the inverse of the one-tailed probability of the chi-squared distribution.", [c("prob"), c("deg")]),
                    "CHISQ.TEST": b("This function calculates the test for independence from the chi-squared distribution.", [c("obs_array"), c("exp_array")]),
                    "CONFIDENCE.NORM": b("This function returns confidence interval for a population mean.", [c("alpha"), c("stdev"), c("size")]),
                    "EXPON.DIST": b("This function returns the exponential distribution or the probability density.", [c("value"), c("lambda"), c("cumulative")]),
                    "F.DIST.RT": b("This function calculates the F probability distribution, to see degrees of diversity between two sets of data.", [c("value"), c("degnum"), c("degden")]),
                    "F.INV.RT": b("This function returns the inverse of the F probability distribution.", [c("p"), c("degnum"), c("degden")]),
                    "F.TEST": b("This function returns the result of an F-test, which returns the one-tailed probability that the variances in two arrays are not significantly different.", [c("array1"), c("array2")]),
                    "GAMMA.DIST": b("This function returns the gamma distribution.", [c("x"), c("alpha"), c("beta"), c("cumulative")]),
                    "GAMMA.INV": b("This function returns the inverse of the gamma cumulative distribution.", [c("p"), c("alpha"), c("beta")]),
                    "LOGNORM.INV": b("This function returns the inverse of the lognormal cumulative distribution function of x, where LN(x) is normally distributed with the specified mean and standard deviation.", [c("prob"), c("mean"), c("stdev")]),
                    "NORM.DIST": b("This function returns the normal cumulative distribution for the specified mean and standard deviation.", [c("x"), c("mean"), c("stdev"), c("cumulative")]),
                    "NORM.INV": b("This function returns the inverse of the normal cumulative distribution for the given mean and standard deviation.", [c("prob"), c("mean"), c("stdev")]),
                    "NORM.S.INV": b("This function returns the inverse of the standard normal cumulative distribution. The distribution has a mean of zero and a standard deviation of one.", [c("prob")]),
                    "PERCENTRANK.INC": b("This function returns the rank of a value in a data set as a percentage of the data set.", [c("array"), c("n"), c("signif")]),
                    "POISSON.DIST": b("This function returns the Poisson distribution.", [c("nevents"), c("mean"), c("cumulative")]),
                    "T.INV.2T": b("This function returns the t-value of the student's t-distribution as a function of the probability and the degrees of freedom.", [c("prog"), c("deg")]),
                    "T.TEST": b("This function returns the probability associated with a t-test.", [c("array1"), c("array2"), c("tails"), c("type")]),
                    "WEIBULL.DIST": b("This function returns the two-parameter Weibull distribution, often used in reliability analysis.", [c("x"), c("alpha"), c("beta"), c("cumulative")]),
                    "Z.TEST": b("This function returns the significance value of a z-test. The z-test generates a standard score for x with respect to the set of data and returns the two-tailed probability for the normal distribution.", [c("array"), c("x"), c("sigma")]),
                    "T.DIST.RT": b("This function returns the right-tailed t-distribution.", [c("x"), c("deg")]),
                    "T.DIST.2T": b("This function returns the two-tailed t-distribution.", [c("x"), c("deg")]),
                    "ISO.CEILING": b("This function returns a number up to the nearest integer or to the nearest multiple of significance, regardless of sign of significance.", [c("number"), c("signif")]),
                    "BETA.DIST": b("This function returns the beta distribution.", [c("x"), c("alpha"), c("beta"), c("cumulative"), c("lower"), c("upper")]),
                    "GAMMALN.PRECISE": b("This function returns the natural logarithm of the gamma function.", [c("value")]),
                    "ERF.PRECISE": b("This function returns the error function.", [c("lowerlimit")]),
                    "ERFC.PRECISE": b("This function returns the complementary ERF function.", [c("lowerlimit")]),
                    "PERCENTRANK.EXC": b("This function returns the percentage rank(0..1, exclusive) of a value in a data set.", [c("array"), c("n"), c("signif")]),
                    "HYPGEOM.DIST": b("This function returns the hypergeometric distribution.", [c("x"), c("n"), c("M"), c("N"), c("cumulative")]),
                    "LOGNORM.DIST": b("This function returns the log normal distribution of x.", [c("x"), c("mean"), c("stdev"), c("cumulative")]),
                    "NEGBINOM.DIST": b("This function returns the negative binomial distribution.", [c("x"), c("r"), c("p"), c("cumulative")]),
                    "NORM.S.DIST": b("This function returns the standard normal distribution.", [c("z"), c("cumulative")]),
                    "T.DIST": b("This function returns the t-distribution.", [c("x"), c("deg"), c("cumulative")]),
                    "F.DIST": b("This function returns the F probability distribution.", [c("x"), c("degnum"), c("degden"), c("cumulative")]),
                    "CHISQ.DIST": b("This function returns the chi-squared distribution.", [c("x"), c("deg"), c("cumulative")]),
                    "F.INV": b("This function returns the inverse of the F probability distribution.", [c("probability"), c("degnum"), c("degden")]),
                    "T.INV": b("This function returns the left-tailed inverse of the t-distribution.", [c("probability"), c("deg")]),
                    "CHISQ.INV": b("This function returns the inverse of left-tailed probability of the chi-squared distribution.", [c("probability"), c("deg")]),
                    "CONFIDENCE.T": b("This function returns the confidence interval for a Student's t distribution.", [c("alpha"), c("stdev"), c("size")]),
                    "NETWORKDAYS.INTL": b("This function returns the number of workdays between two dates using arguments to indicate holidays and weekend days.", [c("startdate"), c("enddate"), c("weekend"), c("holidays")]),
                    "WORKDAY.INTL": b("This function returns the serial number of the date before or after a number of workdays with custom weekend parameters. These parameters indicate weekend days and holidays.", [c("startdate"), c("numdays"), c("weekend"), c("holidays")]),
                    REFRESH: b("This function decides how to re-calculate the formula. Can use the evaluateMode argument to specific the formula re-calculate on the reference value changed, evaluate once , re-calculate or interval.", [c("formula"), c("evaluateMode"), c("interval")]),
                    DAYS: b("This function returns the number of days between two dates.", [c("startdate"), c("enddate")]),
                    ISOWEEKNUM: b("This function returns the number of the ISO week number of the year for a given date.", [c("date")]),
                    BITAND: b('This function returns a bitwise "AND" of two numbers.', [c("number1"), c("number2")]),
                    BITLSHIFT: b('This function returns a bitwise "OR" of two numbers.', [c("number1"), c("number2")]),
                    BITOR: b('This function returns a bitwise "OR" of two numbers.', [c("number1"), c("number2")]),
                    BITRSHIFT: b('This function returns a bitwise "OR" of two numbers.', [c("number1"), c("number2")]),
                    BITXOR: b('This function returns a bitwise "XOR" of two numbers.', [c("number1"), c("number2")]),
                    IMCOSH: b("This function returns the hyperbolic cosine of a complex number in x+yi or x+yj text format.", [c("complexnum")]),
                    IMCOT: b("This function returns the cotangent of a complex number in x+yi or x+yj text format.", [c("complexnum")]),
                    IMCSC: b("This function returns the cosecant of a complex number in x+yi or x+yj text format.", [c("complexnum")]),
                    IMCSCH: b("This function returns the hyperbolic cosecant of a complex number in x+yi or x+yj text format.", [c("complexnum")]),
                    IMSEC: b("This function returns the secant of a complex number in x+yi of x+yj text format.", [c("complexnum")]),
                    IMSECH: b("This function returns the hyperbolic secant of a complex number in x+yi or x+yj text format.", [c("complexnum")]),
                    IMSINH: b("This function returns the hyperbolic sine of a complex number in x+yi of x+yj text format.", [c("complexnum")]),
                    IMTAN: b("This function returns the tangent of a complex number in x+yi or x+yj text format.", [c("complexnum")]),
                    PDURATION: b("This function returns the number of periods required by an investment to reach a specified value.", [c("rate"), c("pval"), c("fval")]),
                    RRI: b("This function returns an equivalent interest rate for the growth of an investment.", [c("nper"), c("pval"), c("fval")]),
                    ISFORMULA: b("This function tests whether contains a formula of a referenced cell.", [c("cellreference")]),
                    IFNA: b("This function returns the value you specify if the formula returns the #N/A error value, otherwise returns the result of the formula.", [c("value"), c("value_if_na")]),
                    IFS: b("This function checks whether one or more conditions are met and returns a value that corresponds to the first TRUE condition.", [c("valueTest"), c("valueTrue"), c("....")]),
                    SWITCH: b("This function evaluates one value for a list of values, and returns the result corresponding to the first matching value, otherwise returns the default value", [c("convertvalue"), c("matchvalue"), c("matchtrue"), c("matchfalse")]),
                    XOR: b("This function returns a logical exclusive or of all arguments.", [c("logical"), c("....")]),
                    AREAS: b("This function returns the number of areas in a reference.", [c("reference")]),
                    FORMULATEXT: b("This function returns a formula as a string.", [c("reference")]),
                    HYPERLINK: b("This function creates a shortcut or jump that opens a document stored on a network server, an intranet, or the Internet.", [c("link_location"), c("friendly_name")]),
                    ACOT: b("This function calculates the inverse arccotangent of a number.", [c("value")]),
                    ACOTH: b("This function calculates the inverse hyperbolic arccotangent of a number.", [c("value")]),
                    ARABIC: b("This function converts a Roman numeral text to an Arabic numeral equivalent.", [c("text")]),
                    BASE: b("This function converts a number into a text representation with the given radix (base).", [c("number"), c("radix"), c("minLength")]),
                    "CEILING.MATH": b("This function round  a number up to the nearest integer or to the nearest multiple of significance.", [c("value"), c("signif"), c("mode")]),
                    COMBINA: b("This function calculates the number of possible combinations with repetitions for a specified number of items.", [c("number"), c("number_choosen")]),
                    COT: b("This function returns the cotangent of the specified angle.", [c("angle")]),
                    COTH: b("This function returns the hyperbolic cotangent of the specified number.", [c("value")]),
                    CSC: b("This function returns the cosecant of the specified angle.", [c("angle")]),
                    CSCH: b("This function returns the hyperbolic cosecant of the specified number.", [c("value")]),
                    DECIMAL: b("This function converts a text representation of a number in a given base into a decimal number.", [c("text"), c("radix")]),
                    "FLOOR.MATH": b("This function round a number down to the nearest integer or to the nearest multiple of significance.", [c("value"), c("signif"), c("mode")]),
                    SEC: b("This function returns the secant of the specified angle.", [c("angle")]),
                    SECH: b("This function returns the hyperbolic secant of the specified value.", [c("value")]),
                    "BINOM.DIST.RANGE": b("This function calculates the probability of a trial result using a binomial distribution.", [c("x"), c("n"), c("p"), c("cumulative")]),
                    GAMMA: b("This function returns the gamma function value.", [c("number")]),
                    MAXIFS: b("This function returns the maximum value among cells specified by a given set of conditions or criteria.", [c("array"), c("conditionarray"), c("condition", !0)]),
                    GAUSS: b("This function calculates the probability that a member of a standard normal population will fall between the mean and z standard deviations from the mean.", [c("number")]),
                    MINIFS: b("This function returns the minimum value among cells specified by a given set of conditions or criteria.", [c("array"), c("conditionarray"), c("condition", !0)]),
                    PERMUTATIONA: b("This function returns the number of permutations for a given number of object that can be selected from the total objects.", [c("k"), c("n")]),
                    PHI: b("This function returns the value of the density function for a standard normal distribution.", [c("value")]),
                    "SKEW.P": b("This function returns the skewness of a distribution base on a poopulation: a characterization of the degree of asymmetry of a distribution around its mean.", [c("number1"), c("number2", !0)]),
                    BAHTTEXT: b('This function converts a number to Thai text and adds a suffix of "Baht"', [c("number")]),
                    CONCAT: b('This function combines multiple text strings or numbers into one text string, the function will stay available for compatibility with "CONCATENATE" function.', [c("text1"), c("text2"), c("....")]),
                    FINDB: b("This function finds one text value within another and returns the text value�s position in the text you searched, and counts each double-byte characte as 2 when set DBCS as the default language.", [c("findtext"), c("intext"), c("start")]),
                    LEFTB: b("This function returns the specified leftmost characters from a text value, and based on the number of bytes you specify.", [c("mytext"), c("num_bytes")]),
                    LENB: b("This function returns the length of the number of bytes in a text string.", [c("value")]),
                    MIDB: b("This function returns the requested number of characters from a text string starting at the position you specify, and based on the number of bytes you specify.", [c("text"), c("start_num"), c("num_bytes")]),
                    REPLACEB: b("This function replaces part of a text string with a different text string, based on the number of bytes you specify.", [c("old_text"), c("start_byte"), c("num_bytes"), c("new_text")]),
                    RIGHTB: b("This function returns the specified rightmost characters from a text value, and based on the number of bytes you specify.", [c("text"), c("num_bytes")]),
                    SEARCHB: b("This function finds one text string in another text string and returns the index of the starting position of the found text, and counts each double-byte characte as 2 when set DBCS as the default language.", [c("string1"), c("string2")]),
                    TEXTJOIN: b("This function combines multiple ranges and/or strings into one text, and the text includes a delimiter you specify between each text value.", [c("delimiter"), c("ignore_empty"), c("text1"), c("text2"), c("....")]),
                    UNICHAR: b("This function returns the Unicode character of a given numeric reference.", [c("number")]),
                    UNICODE: b("This function returns the number corresponding to the first character of the text.", [c("text")]),
                    ENCODEURL: b("This function returns a URL-encoded string.", [c("text")])
                }
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            a.exports = c(32)
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v = c(26),
                w = c(33),
                x = v.q,
                y = v.u,
                z = v.l,
                A = z.Ra,
                B = z.Qa,
                C = v.k.ac,
                D = v.j,
                E = D.Ea,
                F = D.Fa,
                G = void 0,
                H = isNaN,
                I = parseFloat,
                J = parseInt,
                K = Math.abs,
                L = Math.sqrt,
                M = Math.max,
                N = Math.min,
                O = Math.floor,
                P = Math.exp,
                Q = Math.log,
                R = Math.PI,
                S = Math.random,
                T = Math.pow,
                U = w.Errors,
                V = U.Null,
                W = U.DivideByZero,
                X = U.Value,
                Y = U.Reference,
                Z = U.Name,
                $ = U.NotAvailable,
                _ = U.Number,
                aa = w.Convert,
                ba = aa.CalcConvertedError,
                ca = aa.vf,
                da = aa.Fh,
                ea = aa.Ca,
                fa = aa.Uh,
                ga = aa.Rh,
                ha = aa.Pa,
                ia = aa.bc,
                ja = aa.Na,
                ka = aa.Ph,
                la = aa.Nh,
                ma = w.Zh,
                na = ma.tryExtractToSingleValue,
                oa = w.CalcReference,
                pa = w.Functions,
                qa = pa.ik,
                ra = pa.jk,
                sa = pa.kk,
                ta = pa.nk,
                ua = pa.tk,
                va = pa.rk,
                wa = pa.sk,
                xa = pa.Fk,
                ya = xa.zk,
                za = xa.wk,
                Aa = pa.ak,
                Ba = aa.Th,
                Ca = aa.Uh,
                Da = aa.jja,
                Ea = function() {
                    return v.C(w.SR)()
                };

            function Fa(a, b) {
                for (; 0 !== b;) {
                    var c = a % b;
                    a = b, b = c
                }
                return a
            }
            function Ga(a, b, c, d) {
                return 0 === b || 0 === a ? 0 : 0 !== c && a < 0 ? d === !0 ? za(a / Math.abs(b)) * Math.abs(b) : ya(a / Math.abs(b)) * Math.abs(b) : d === !0 ? ya(a / Math.abs(b)) * Math.abs(b) : za(a / Math.abs(b)) * Math.abs(b)
            }
            function Ha(a, b) {
                var c, d, e, f, g, h, i = a[0],
                    j = C(i),
                    k = i.rowCount,
                    l = i.colCount,
                    m = [],
                    n = [],
                    o = [];
                for (f = 1; f < C(a); f += 2) {
                    if (h = ka(a[f], 0, !0, !1, !1), h.rowCount !== k || h.colCount !== l) return X;
                    g = xa.xk(a[f + 1]), m.push(h), n.push(g)
                }
                for (e = 0; e < j; e++) {
                    for (d = !0, f = 0; f < C(m) && (g = n[f], c = m[f][e], d = g && g(c), d); f++);
                    d && (c = i[e], c !== ba && o.push(c))
                }
                return b(o)
            }
            function Ia(a, b) {
                return b = b < 0 ? O(b) : Math.ceil(b), (a && b % 2 === 0 || !a && b % 2 !== 0) && (b += b < 0 ? -1 : 1), b
            }
            function Ja(a, b, c) {
                return b > 0 && c < 0 ? _ : b < 0 && c > 0 ? (c = -c, a ? za(b / c) * c : ya(b / c) * c) : a ? ya(b / c) * c : za(b / c) * c
            }
            function Ka(a, b, c) {
                var d, e, f, g = xa.yk(K(c));
                return b = c < 0 ? b / g : b * g, d = ya(b), e = za(b), a && (f = d, d = e, e = f), b = b < 0 ? d : e, b = c < 0 ? b * g : b / g, la(b)
            }
            function La(a, b, c, d) {
                var e = b ? -1 : 1,
                    f = 0,
                    g, h, i;
                if (C(c) !== C(d)) return $;
                for (i = 0; i < C(c); i++) g = c[i], h = d[i], g !== ba && h !== ba && (f += a ? (g - h) * (g - h) : g * g + e * h * h);
                return la(f)
            }
            function Ma(a) {
                return la(K(a))
            }
            function Na(a) {
                return za(a)
            }
            function Oa(a, b) {
                var c = 1,
                    d;
                if (a < b) return _;
                for (b = N(a - b, b), d = 1; d <= b; d++) c *= a - d + 1, c /= d;
                return la(c)
            }
            function Pa(a, b) {
                var c = 1,
                    d;
                for (d = 1; d <= b; d++) c *= a + d - 1;
                for (d = 2; d <= b; d++) c /= d;
                return la(c)
            }
            function Qa(a, b) {
                var c, d, e, f, g, h, i;
                if (!a || a.length > 255) return 0;
                if (c = a.length, 0 === c) return 0;
                if ("-" === a[0]) return _;
                for (d = 0; d < c && " " === a[d];) d++;
                if (e = 0, d === c) return 0;
                for (f = 1, g = c - 1; g >= d; g--) {
                    if (h = a.charCodeAt(g) | " ".charCodeAt(0), i = h - "a".charCodeAt(0) >= 0 ? h - 87 : h - 48, i < 0 || i >= b) return _;
                    e += i * f, f *= b
                }
                return e
            }
            function Ra(a) {
                return 180 * a / R
            }
            function Sa(a) {
                return Ia(!0, a)
            }
            function Ta(a) {
                return Ia(!1, a)
            }
            function Ua(a) {
                return ua(a)
            }
            function Va(a) {
                var b = 1,
                    c;
                for (c = a; c > 1; c -= 2) b *= c;
                return b
            }
            function Wa(a) {
                return la(Q(a))
            }
            function Xa(a, b) {
                return a - b * O(a / b)
            }
            function Ya() {
                return R
            }
            function Za(a, b) {
                return T(a, b)
            }
            function $a() {
                var a, b, c, d, e = arguments,
                    f = 0;
                for (a = 0; a < C(e); a++) {
                    if (b = e[a], ca(b)) return b;
                    if (da(b) || ea(b)) {
                        if (c = ka(b, 1, !0, !0, !1), c.isError) return c[0]
                    } else c = ka(b, 1, !0, !0, !0);
                    for (d = 0; d < C(c); d++) c[d] !== ba && (f += c[d])
                }
                return f
            }
            function _a(a) {
                return 0 === a ? 0 : -1
            }
            function ab() {
                var a, b, c, d, e = arguments,
                    f = 0;
                for (a = 0; a < C(e); a++) for (c = e[a], b = 0; b < C(c); b++) if (d = c[b], d !== ba) {
                    if (d < 0) return _;
                    f = Fa(f, ga(d))
                }
                return f
            }
            function bb() {
                var a, b, c, d, e = arguments,
                    f = 1,
                    g = [];
                for (a = 0; a < C(e); a++) {
                    for (c = e[a], b = 0; b < C(c); b++) if (d = c[b], d !== ba) {
                        if (d < 0) return _;
                        if (0 === d) return 0;
                        g.push(ga(d))
                    }
                    for (b = 0; b < C(g); b++) d = g[b], f /= Fa(f, d), f *= d
                }
                return f
            }
            function cb() {
                return va(arguments, !0, 6)
            }
            function db(a) {
                return L(a)
            }
            function eb(a, b) {
                return J("" + a / b)
            }
            function fb(a) {
                var b, c = arguments,
                    d = [],
                    e = X;
                for (b = 1; b < C(c); b++) d[b - 1] = c[b];
                return E(a, [1, 101, 2, 102, 3, 103, 4, 104, 5, 105, 6, 106, 9, 109]) >= 0 ? e = va(d, !1, a) : E(a, [7, 107, 8, 108, 10, 110, 11, 111]) >= 0 && (e = wa(d, !1, a)), e
            }
            function gb(a, b) {
                return Ja(!0, a, b)
            }
            function hb(a, b) {
                return Ja(!1, a, b)
            }
            function ib(a, b, c) {
                return Ga(a, b, c, !0)
            }
            function jb(a, b, c) {
                return Ga(a, b, c, !1)
            }
            function kb(a, b, c) {
                var d = "" + a.toString(b);
                return c && d.length < c ? Array.apply(null, {
                    length: c - d.length + 1
                }).join(0) + d : d
            }
            function lb(a, b) {
                return a < 0 && b > 0 || b < 0 && a > 0 ? _ : za(a / b + .5) * b
            }
            function mb(a, b) {
                return xa.Ak(a, b)
            }
            function nb(a, b) {
                return Ka(!1, a, b)
            }
            function ob(a, b) {
                return Ka(!0, a, b)
            }
            function pb(a) {
                return la(P(a))
            }
            function qb(a, b) {
                return ya(a / K(b)) * K(b)
            }
            function rb(a, b) {
                return za(a / K(b)) * K(b)
            }
            function sb(a, b) {
                return 1 === b ? W : la(xa.Ek(a, b))
            }
            function tb(a) {
                return la(xa.Ek(a, 10))
            }
            function ub(a, b, c) {
                var d, e, f, g, h, i, j;
                if (c = c !== G ? c : a, F(b) && (b = 0), d = 0, f = xa.xk(b), g = ea(a), h = ea(c), i = a.toArray(0, !0, !1), j = c.toArray(1, !0, !1), (g ? 1 : a.getRangeCount()) !== (h ? 1 : c.getRangeCount()) || (g ? a.getRowCount() : a.getRowCount(0)) > (h ? c.getRowCount() : c.getRowCount(0)) || (g ? a.getColumnCount() : a.getColumnCount(0)) > (h ? c.getColumnCount() : c.getColumnCount(0))) return X;
                if (i.isError) return i[0];
                if (j.isError) return j[0];
                for (e = 0; e < C(i); e++) f && f(i[e]) && j[e] !== ba && (d += j[e]);
                return la(d)
            }
            function vb() {
                return Ha(arguments, function(a) {
                    var b, c = 0;
                    for (b = 0; b < a.length; b++) c += a[b];
                    return c
                })
            }
            function wb() {
                return Ha(arguments, function(a) {
                    var b = null;
                    return a.length > 0 && (b = Math.max.apply(null, a)), b
                })
            }
            function xb() {
                return Ha(arguments, function(a) {
                    var b = null;
                    return a.length > 0 && (b = Math.min.apply(null, a)), b
                })
            }
            function yb(a) {
                for (var b = [], c = 0, d = []; c < a; c++) d[c] = 0;
                for (c = 0; c < a; c++) b[c] = d.slice(0), b[c][c] = 1;
                return new w.CalcArray(b)
            }
            function zb() {
                var a, b, c, d, e, f, g, h = arguments,
                    i = 0,
                    j = [],
                    k = 0;
                for (a = 0; a < C(h); a++) {
                    if (d = ka(h[a], 1, !0, !0, !1, !0), d.isError) return d[0];
                    if (d.isConvertError) return X;
                    if (0 === a) b = d.rowCount, c = d.colCount, k = C(d);
                    else if (d.rowCount !== b || d.colCount !== c) return X;
                    j.push(d)
                }
                for (a = 0; a < k; a++) {
                    for (e = 1, f = 0; f < C(h); f++) {
                        if (g = j[f][a], g === ba) {
                            e = 0;
                            break
                        }
                        e *= g
                    }
                    i += e
                }
                return la(i)
            }
            function Ab() {
                var a, b, c, d, e = arguments,
                    f = 0;
                for (b = 0; b < C(e); b++) for (d = e[b], c = 0; c < C(d); c++) a = d[c], a !== ba && (f += a * a);
                return la(f)
            }
            function Bb(a, b) {
                return La(!1, !0, a, b)
            }
            function Cb(a, b) {
                return La(!1, !1, a, b)
            }
            function Db(a, b) {
                return La(!0, !1, a, b)
            }
            function Eb(a, b, c, d) {
                var e, f, g = 0;
                for (e = 0; e < C(d); e++) {
                    if (f = ha(d[e]), H(f)) return X;
                    g += f * T(a, b + e * c)
                }
                return la(g)
            }
            function Fb(a) {
                return la(L(a * R))
            }
            function Gb(a) {
                return R * a / 180
            }
            function Hb(a) {
                return la(Math.sin(a))
            }
            function Ib(a) {
                var b = Hb(a);
                return 0 === b ? W : 1 / b
            }
            function Jb(a) {
                return la(Math.cos(a))
            }
            function Kb(a) {
                var b = Jb(a);
                return 0 === b ? W : 1 / b
            }
            function Lb(a) {
                return la(Math.tan(a))
            }
            function Mb(a) {
                return 0 === a ? W : la(1 / Math.tan(a))
            }
            function Nb(a) {
                return la(Math.asin(a))
            }
            function Ob(a) {
                return la(Math.acos(a))
            }
            function Pb(a) {
                return la(xa.Dk(a, !0))
            }
            function Qb(a) {
                if (a > 709 || a < -709) return 0;
                var b = Pb(a);
                return 0 === b ? W : 1 / b
            }
            function Rb(a) {
                return la(xa.Dk(a, !1))
            }
            function Sb(a) {
                if (a > 709 || a < -709) return 0;
                var b = Rb(a);
                return 0 === b ? W : 1 / b
            }
            function Tb(a) {
                return la(Q(a + L(a * a + 1)))
            }
            function Ub(a) {
                return la(Q(a + L(a * a - 1)))
            }
            function Vb(a) {
                return la(Math.atan(a))
            }
            function Wb(a) {
                return la(a < 0 ? Math.PI + Math.atan(1 / a) : Math.atan(1 / a))
            }
            function Xb(a, b) {
                return 0 === a && 0 === b ? W : la(Math.atan2(b, a))
            }
            function Yb(a) {
                var b = P(a),
                    c = P(-a);
                return la(b - c) / (b + c)
            }
            function Zb(a) {
                if (0 === a) return W;
                if (a > 10) return 1;
                if (a < -10) return -1;
                var b = Yb(a);
                return 1 / b
            }
            function $b(a) {
                return la(Q((1 + a) / (1 - a)) / 2)
            }
            function _b(a) {
                return $b(1 / a)
            }
            function ac(a) {
                var b = a.rowCount,
                    c = 1,
                    d, e, f, g, h, i, j, k;
                if (a.rangeCount > 1 || b !== a.colCount) return X;
                for (d = 0; d < b - 1; d++) {
                    if (0 === a[d][d]) {
                        for (i = !1, e = d + 1; !i && e < b; e++) if (0 !== a[e][d]) {
                            for (g = d; g < b; g++) j = a[d][g], a[d][g] = a[e][g], a[e][g] = j;
                            c *= -1, i = !0
                        }
                        if (!i) return 0
                    }
                    for (f = d + 1; f < b; f++) if (0 !== a[f][d]) for (k = a[f][d] / a[d][d], h = d; h < b; h++) a[f][h] -= k * a[d][h]
                }
                for (d = 0; d < b; d++) c *= a[d][d];
                return c
            }
            function bc(a) {
                var b = a.rowCount,
                    c = [],
                    d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s;
                if (a.rangeCount > 1 || b !== a.colCount) return X;
                for (d = 0; d < b; d++) for (c[d] = [b], g = 0; g < b; g++) c[d][g] = d === g ? 1 : 0;
                for (e = 0; e < b; e++) {
                    if (0 === a[e][e]) {
                        for (s = !1, h = e + 1; !s && h < b; h++) if (0 !== a[h][e]) {
                            for (j = e; j < b; j++) q = a[e][j], a[e][j] = a[h][j], a[h][j] = q;
                            for (k = 1; k < b; k++) r = c[e][k], c[e][k] = c[h][k], c[h][k] = r;
                            s = !0
                        }
                        if (!s) return _
                    }
                    for (i = 0; i < b; i++) if (i !== e && 0 !== a[i][e]) {
                        for (o = a[i][e] / a[e][e], l = e; l < b; l++) a[i][l] -= o * a[e][l];
                        for (m = 0; m < b; m++) c[i][m] -= o * c[e][m]
                    }
                }
                for (f = 0; f < b; f++) for (p = a[f][f], n = 0; n < b; n++) c[f][n] /= p;
                return new w.CalcArray(c)
            }
            function cc(a, b) {
                var c, d, e, f, g, h, i = a.rowCount,
                    j = a.colCount,
                    k = b.rowCount,
                    l = b.colCount,
                    m = [];
                if (j !== k) return X;
                for (e = 0; e < i; e++) for (m[e] = c = [], d = a[e], f = 0; f < l; f++) {
                    for (h = 0, g = 0; g < k; g++) h += d[g] * b[g][f];
                    c[f] = h
                }
                return new w.CalcArray(m)
            }
            function dc() {
                var a, b, c, d, e = arguments,
                    f = 0,
                    g = 1;
                for (b = 0; b < C(e); b++) for (a = e[b], c = 0; c < C(a); c++) {
                    if (d = ga(a[c]), d < 0 || 170 < d) return _;
                    f += d, g *= ua(d)
                }
                return f < 0 || 170 < f ? _ : ua(f) / g
            }
            function ec() {
                return K(2 * S() - 1)
            }
            function fc(a, b) {
                return b < a ? _ : ga(a + S() * (b - a + 1))
            }
            function gc(a, b) {
                var c, d, e, f, g, h, i, j, k = ["M", "D", "C", "L", "X", "V", "I"],
                    l = [1e3, 500, 100, 50, 10, 5, 1],
                    m = 7,
                    n = [];
                for (c = qa(b) ? b ? 0 : 4 : b, d = 0; d < m; d += 2) {
                    if (2 <= d && l[d - 2] - l[d] <= a) {
                        for (e = d, f = d - 2, g = 0; g < c && e + 1 < m && l[f] - l[e + 1] <= a; g++) e++;
                        n.push(k[e]), n.push(k[f]), a += l[e], a -= l[f]
                    }
                    if (1 <= d && l[d - 1] <= a && (n.push(k[d - 1]), a -= l[d - 1]), 1 <= d && l[d - 1] - l[d] <= a) {
                        for (h = d, i = d - 1, j = 0; j < c && h + 1 < m && l[i] - l[h + 1] <= a; j++) h++;
                        n.push(k[h]), n.push(k[i]), a += l[h], a -= l[i]
                    }
                    for (; l[d] <= a;) n.push(k[d]), a -= l[d]
                }
                return n.join("")
            }
            function hc(a) {
                var b, c, d, e, f, g, h, i, j, k;
                if (!a.length) return 0;
                if (a.length > 255) return X;
                for (a = a.toLowerCase(), b = 0, c = a.length - 1, e = 0, h = -1; c >= 0 && " " === a[c];) c--;
                for (i = 0; i <= c && " " === a[i];) i++;
                j = !1, i <= c && "-" === a[i] && (j = !0, i++);
                do {
                    for (d = c, k = a[d], --c; c >= i && (a[c].charCodeAt(0) | " ".charCodeAt(0)) === k.charCodeAt(0);)--c;
                    switch (k) {
                        case "i":
                            f = d - c, g = 1;
                            break;
                        case "v":
                            f = 5 * (d - c), g = 5;
                            break;
                        case "x":
                            f = 10 * (d - c), g = 10;
                            break;
                        case "l":
                            f = 50 * (d - c), g = 50;
                            break;
                        case "c":
                            f = 100 * (d - c), g = 100;
                            break;
                        case "d":
                            f = 500 * (d - c), g = 500;
                            break;
                        case "m":
                            f = 1e3 * (d - c), g = 1e3;
                            break;
                        default:
                            return X
                    }
                    g >= h ? (b += f - e, h = g, e = 0) : e += f
                } while (c >= i);
                return 0 !== e && (b -= e), j && (b = -b), b
            }
            function ic(a, b) {
                var c, d, e;
                for (c = 0; c < C(b); c++) for (e = b[c], d = 0; d < C(e); d++) if (a) {
                    if (!e[d]) return !1
                } else if (e[d] && e[d] !== ba) return !0;
                return !!a
            }
            function jc() {
                return ic(!0, arguments)
            }
            function kc() {
                return ic(!1, arguments)
            }
            function lc(a) {
                var b = {};
                return aa.Uh(a, b), !b.value
            }
            function mc(a, b, c) {
                var d, e, f = a,
                    g = b,
                    h = na(f);
                return d = c !== G ? c : 2 !== C(arguments) && 0, e = {}, fa(h.value, e), e.value ? g : d
            }
            function nc(a, b) {
                return ca(a) ? F(b) ? 0 : b : F(a) ? 0 : a
            }
            function oc(a, b) {
                if (!ca(a) && da(a)) {
                    if (a.getRangeCount() > 1) return X;
                    a = a.getValue(0, 0, 0)
                }
                return nc(a, b)
            }
            function pc() {
                return !0
            }
            function qc() {
                return !1
            }
            function rc(a, b) {
                return Da(a) ? b : a
            }
            function sc() {
                var a, b, c;
                for (a = 0, b = arguments.length; a < b; a++) {
                    if (c = {
                            value: !1
                        }, ca(arguments[a])) return arguments[a];
                    if (!fa(arguments[a++], c)) return X;
                    if (c.value) return arguments[a]
                }
                return $
            }
            function tc() {
                var a, b, c;
                if (arguments.length < 3) return X;
                if (ca(arguments[0])) return arguments[0];
                for (a = 1, b = arguments.length - 1; a < b; a++) {
                    if (c = arguments[a++], ca(c)) return c;
                    if ("string" == typeof arguments[0] && "string" == typeof c) {
                        if (arguments[0].toUpperCase() === c.toUpperCase()) return arguments[a]
                    } else if (arguments[0] === c) return arguments[a]
                }
                return arguments.length % 2 === 0 ? arguments[arguments.length - 1] : $
            }
            function uc() {
                var a, b, c, d = 0;
                for (a = 0; a < C(arguments); a++) for (c = arguments[a], b = 0; b < C(c); b++) c[b] && d++;
                return !!(d % 2)
            }
            function vc(a) {
                var b, c = a.getFullYear(),
                    d = a.getMonth(),
                    e = a.getDate(),
                    f = e;
                for (b = 0; b < d; b++) f += ta(c, b);
                return f
            }
            function wc(a) {
                if (ra(a)) {
                    if (7 !== C(a) || H(J(a))) return X
                } else if (!H(a)) {
                    if (O(a) < 1 || O(a) > 17) return _;
                    a = "" + a
                }
                var b = ["1", "2", "3", "4", "5", "6", "7"],
                    c = [0, 0, 0, 0, 0, 0, 0],
                    d;
                switch (C(a)) {
                    case 1:
                        if (E(a, b) >= 0) {
                            d = J(a), c[(d + 4) % 7] = 1, c[(d + 5) % 7] = 1;
                            break
                        }
                        return _;
                    case 2:
                        if ("1" === a[0] && E(a[1], b) >= 0) {
                            d = J(a[1]), c[(d + 5) % 7] = 1;
                            break
                        }
                        return _;
                    case 7:
                        for (d = 0; d < 7; d++) c[d] = J(a[d]);
                        break;
                    default:
                        return X
                }
                return c
            }
            function xc(a, b, c, d, e) {
                var f, g = Oc(b, 3);
                if (ca(g)) return g;
                for (f = ga(g); c < 0; ++c) b.setDate(b.getDate() - 1), f = 0 === f ? 6 : --f, (a && (5 === f || 6 === f) || !a && e[f] || d.indexOf(A(b)) >= 0) && c--;
                for (; c > 0; --c) b.setDate(b.getDate() + 1), f = 6 === f ? 0 : ++f, (a && (5 === f || 6 === f) || !a && e[f] || d.indexOf(A(b)) >= 0) && c++;
                return A(b)
            }
            function yc(a, b, c, d, e, f) {
                var g, h, i, j, k, l, m, n, o;
                if (f && (a = a !== G ? a : "0000011", h = wc(a), ca(h))) return h;
                if (b !== G && (g = ka(b, 4, !0, !0, !1)), !g) return e;
                if (g.isError) return g[0];
                for (i = C(g), j = [], k = 0; k < i; k++) l = g[k], m = z.Xb(l), n = m.getDay(), o = C(h) ? h[Oc(m, 3)] : 6 === n || 0 === n, j.indexOf(l) === -1 && !o && l >= c && l <= d && j.push(l);
                return e -= C(j)
            }
            function zc(a, b, c, d, e, f) {
                var g, h, i, j = ga(A(b)),
                    k = ga(A(c)),
                    l = !1;
                return j > k && (g = b, b = c, c = g, h = j, j = k, k = h, l = !0), i = k - j + 1, i = f(b, c, i, d), a && ca(i) ? i : i <= 0 ? 0 : (i = yc(d, e, j, k, i, a), i = l ? -i : i)
            }
            function Ac(a, b, c) {
                var d, e;
                return b = aa.Wh(b), d = new Date(b.getFullYear(), b.getMonth(), 1), d.setMonth(d.getMonth() + c), e = ta(d.getFullYear(), d.getMonth()), d.setDate(a ? e : N(b.getDate(), e)), d
            }
            function Bc(a, b, c) {
                a <= 1899 && (a += 1900);
                var d = new Date(a, b - 1, c);
                return d < new Date(1899, 11, 30) ? _ : d
            }
            function Cc(a, b, c) {
                var d = z.Xb(0);
                return d.setHours(a), d.setMinutes(b), d.setSeconds(c), d.setMilliseconds(0), d.getHours() < 0 && d.getMinutes() < 0 && d.getSeconds() < 0 ? _ : d
            }
            function Dc(a) {
                var b, c, d, e;
                if (ra(a) && (b = B(a), b || (b = new Date(a), b && !H(b.valueOf()) || (b = null))), !b) return X;
                if (d = b.getFullYear(), e = vc(b), d < 1900) return X;
                for (c = 1900; c < d; c++) e += 365, sa(c) && e++;
                return e
            }
            function Ec(a) {
                var b;
                return ra(a) && (b = B(a)), b ? (60 * (60 * b.getHours() + b.getMinutes()) + b.getSeconds()) / 86400 : X
            }
            function Fc() {
                return new Date
            }
            function Gc() {
                var a = new Date;
                return a.setHours(0), a.setMinutes(0), a.setSeconds(0), a.setMilliseconds(0), a
            }
            function Hc(a) {
                return a.getHours()
            }
            function Ic(a) {
                return a.getMinutes()
            }
            function Jc(a) {
                return a.getSeconds()
            }
            function Kc(a) {
                return a.getDate()
            }
            function Lc(a) {
                return a.getMonth() + 1
            }
            function Mc(a) {
                return a.getFullYear()
            }
            function Nc(a, b) {
                var c, d, e;
                return 1 === b || 2 === b ? (c = vc(a), d = new Date(a.getFullYear(), 0, 1).getDay(), 2 === b && (d -= 1, d < 0 && (d = 6)), e = c - 1 - (6 - d), e < 0 && (e = 0), 1 + ga(e / 7) + (e % 7 !== 0 ? 1 : 0)) : _
            }
            function Oc(a, b) {
                var c = a.getDay();
                switch (b) {
                    case 1:
                        return c + 1;
                    case 2:
                        return 0 === c ? 7 : c;
                    case 3:
                        return 0 === c ? 6 : c - 1;
                    default:
                        return _
                }
            }
            function Pc(a, b) {
                return Ac(!1, a, b)
            }
            function Qc(a, b) {
                return Ac(!0, a, b)
            }
            function Rc(a, b, c) {
                return xc(!0, a, b, c)
            }
            function Sc(a, b, c, d) {
                var e = wc(c);
                return ca(e) ? e : "1111111" === e.join("") ? X : xc(!1, a, b, d, e)
            }
            function Tc(a, b, c) {
                function d(a, b, c) {
                    var d = ga(A(b) - A(a)) % 7,
                        e = ga(Oc(a, 2) + d),
                        f = 0 === a.getDay() ? 1 : 2;
                    return d = e > 5 ? e - 5 : 0, d = d > f ? f : d, c -= d, c -= 2 * O(c / 7)
                }
                return zc(!1, a, b, G, c, d)
            }
            function Uc(a, b, c, d) {
                var e, f, g, h, i, j, k;
                if (d = d !== G ? d : "0000011", e = wc(d), f = 0, g = 0, ca(e)) return e;
                for (h = 0; h < C(e); h++) 1 === e[h] && f++;
                if (c < 30) {
                    for (h = 0; h < c; h++) e[(ga(Oc(a, 3)) + h) % 7] && g++;
                    return c -= g
                }
                for (i = c, j = 0, k = 0, h = 0; h < i && ga(Oc(a, 3) + h) % 7 !== 0; h++) j++;
                for (h = 0; h < j; h++) e[(ga(Oc(a, 3)) + h) % 7] && g++;
                for (h = 0; h < i && (ga(Oc(b, 3)) + 7 - h) % 7 !== 6; h++) k++;
                for (h = 0; h < k; h++) e[(ga(Oc(b, 3)) + 7 - h) % 7] && g++;
                return i = i - j - k, c -= ga(i / 7) * f, c -= g
            }
            function Vc(a, b, c, d) {
                return zc(!0, a, b, c, d, Uc)
            }
            function Wc(a, b, c) {
                var d, e, f;

                function g() {
                    var a = [];
                    return a[0] = function(a, b) {
                        return b.getFullYear() - a.getFullYear() + (b.getMonth() < a.getMonth() || b.getMonth() === a.getMonth() && b.getDate() < a.getDate() ? -1 : 0)
                    }, a[1] = function(a, b) {
                        return 12 * (b.getFullYear() - a.getFullYear()) + (b.getMonth() - a.getMonth()) + (b.getDate() < a.getDate() ? -1 : 0)
                    }, a[2] = function(a, b) {
                        return (b.getTime() - a.getTime()) / 864e5
                    }, a[3] = function(a, b) {
                        var c = new Date(b.getFullYear(), b.getMonth() + (b.getDate() < a.getDate() ? -1 : 0), a.getDate());
                        return (b.getTime() - c.getTime()) / 864e5
                    }, a[4] = function(a, b) {
                        return b.getMonth() - a.getMonth() + (b.getMonth() < a.getMonth() || b.getMonth() === a.getMonth() && b.getDate() < a.getDate() ? 12 : 0) + (b.getDate() < a.getDate() ? -1 : 0)
                    }, a[5] = function(a, b) {
                        var c = new Date(b.getFullYear() + (b.getMonth() < a.getMonth() || b.getMonth() === a.getMonth() && b.getDate() < a.getDate() ? -1 : 0), a.getMonth(), a.getDate());
                        return (b - c) / 864e5
                    }, a
                }
                if (a.setHours(0, 0, 0, 0), b.setHours(0, 0, 0, 0), c = c.toLocaleUpperCase(), d = g(), e = E(c, ["Y", "M", "D", "MD", "YM", "YD"]), b < a) return _;
                if (e < 0) throw Ea().Exp_NotSupported;
                return (f = d[e])(a, b)
            }
            function Xc(a, b) {
                var c, d, e = {
                    value: 0
                };
                if (!Ba(a, e)) return X;
                if (c = {
                        value: 0
                    }, !Ba(b, c)) return X;
                d = 2958465;

                function f(a) {
                    return a >= 0 && a < d + 1
                }
                return f(e.value) && f(c.value) ? e.value - c.value : _
            }
            function Yc(a) {
                var b, c, d;
                if (isNaN(a)) return _;

                function e(a) {
                    var b = new Date(a, 0, 4),
                        c = b.getDay();
                    return 0 === c && (c = 7), b.setDate(b.getDate() + 1 - c), b
                }
                return b = new Date(1900, 1, 28), a.getTime() <= b.getTime() && a.setDate(a.getDate() - 1), 1900 === (c = a.getFullYear()) ? c += 400 : 9999 === c && (c -= 400), a.setYear(c), a.getTime() < new Date(c, 11, 29).getTime() && c--, d = e(c + 1), a.getTime() < d.getTime() && (d = e(c)), parseInt((a.getTime() - d.getTime()) / 864e5 / 7) + 1
            }
            function Zc(a) {
                var b, c, d, e = "" + a,
                    f = "",
                    g = [];
                if (a < 0 && (e = e.substr(1), f = "-"), c = e.split("."), d = C(c), d < 1 || d > 2) return X;
                for (2 === d && (g.push(c[1]), g.push(".")), e = c[0], b = C(e) - 3; b >= 0; b -= 3) g.push(e.substr(b, 3)), b > 0 && g.push(",");
                return g.push(e.substring(0, b + 3)), g.reverse(), f + g.join("")
            }
            function $c(a, b) {
                var c, d, e, f, g = [],
                    h = C(a);
                for (c = 0; c < h; c++) {
                    if (e = a[c], f = C(e), 0 === f && "concat" === b) return V;
                    for (d = 0; d < f; d++) F(e[d]) || g.push(ia(e[d]))
                }
                return g.join("")
            }
            function _c(a) {
                var b = a.charCodeAt(0);
                return b >= 0 && b < 129 || 63728 === b || b >= 65377 && b < 65440 || b >= 63729 && b < 63732 ? "singleByte" : b >= 55296 && b <= 57343 ? "fourByte" : "doubleByte"
            }
            function ad(a, b, c) {
                var d, e, f = [],
                    g = 0;
                for (d = 0; d < b.length; d++) if (e = _c(b[d]), "fourByte" === e) {
                    if (0 === g) {
                        g++;
                        continue
                    }
                    g = 0, f.push(b[d - 1] + b[d])
                } else f.push(b[d]);
                return c >= f.length ? b : f.splice(a ? 0 : f.length - c, c).join("")
            }
            function bd(a) {
                var b = [],
                    c, d;
                for (c = 0; c < C(a); c++) d = a.charCodeAt(c), 0 <= d && d <= 31 || 127 === d || 128 <= d && d <= 159 || b.push(a[c]);
                return b.join("")
            }
            function cd(a) {
                var b, c, d, e, f;
                for (a = a.trim(), b = [], c = !0, d = 0; d < C(a); d++) e = a.charAt(d), f = " " === e || "\t" === e || "\n" === e, f && !c || b.push(e), c = !f;
                return b.join("")
            }
            function dd(a, b) {
                function c(a) {
                    var b = Zc(a),
                        c = [];
                    return a < 0 && (b = b.substr(1)), c.push("$"), c.push(b), a < 0 && (c.push(")"), c.unshift("(")), c.join("")
                }
                return a = ha(mb(a, b)), c(a)
            }
            function ed(a, b, c) {
                var d = 0;
                return b < 0 && (d = ga(T(10, K(b))), a /= d), a = ha(mb(a, M(0, b))), b < 0 && (a *= d), c ? "" + a : Zc(a)
            }
            function fd(a, b) {
                var d, e, f;
                if ("" === b) return ia(a);
                F(a) && (a = 0);
                try {
                    return d = c(34), e = d && d.GeneralFormatter, e ? (f = new e(b), f.format(a)) : "" + a
                } catch (a) {
                    return X
                }
            }
            function gd(a) {
                if (!a) return 0;
                var b = B(a),
                    c;
                return F(b) ? hd(a) : (c = A(b), ca(c) ? Ec(b) : c)
            }
            function hd(a) {
                var b, c, d, e, f, g, h, i, j, k, l = v.CultureManager.q4().NumberFormat,
                    m = w.isDigit;
                if ("$" !== a[0] && a[0] !== l.currencySymbol || (a = a.substring(1)), b = I(a), c = m(a[0].charCodeAt(0)), d = 45 === a[0].charCodeAt(0) && m(a[1].charCodeAt(0)), e = !a || H(b) || !c && "." !== a[0], f = !a || H(b) || !d && "-" !== a[0] && "." !== a[1], e && f) return X;
                for (("." === a[0] || "-" === a[0] && "." === a[1]) && ("-" === a[0] ? a.replace(a[1], "0.") : a = "0" + a), g = a.length, h = 0, j = 0, k = 0; h < g; h++) {
                    for (i = a[h]; h < g && m(i.charCodeAt(0));) h++, i = a[h];
                    if (h === g) {
                        if (j && h - j <= 3) return X;
                        break
                    }
                    if (i === l.numberGroupSeparator) {
                        if (k || j && h - j <= 3) return X;
                        j = h
                    } else if (i === l.numberDecimalSeparator) {
                        if (k || j && h - j <= 3) return X;
                        k = h
                    }
                }
                return a = y.Gb(a, ",", ""), I(a)
            }
            function id(a) {
                return a.toLowerCase()
            }
            function jd(a) {
                return a.toUpperCase()
            }
            function kd(a) {
                var b, c, d, e = C(a),
                    f = [];
                if (e > 0) for (b = a.toUpperCase(), c = a.toLowerCase(), d = 1, f[0] = b[0]; d < e;) f[d] = w.ei(a[d - 1]) ? c[d] : b[d], d++;
                return f.join("")
            }
            function ld(a) {
                return String.fromCharCode(a)
            }
            function md(a) {
                return a[0].charCodeAt(0)
            }
            function nd(a, b, c, d) {
                var e, f, g = C(a);
                return b = N(b, g + 1), c = N(c || 0, g - b + 1), e = a.substring(0, b - 1), f = a.substr(b - 1 + c), e.concat(d).concat(f)
            }
            function od(a, b, c, d) {
                var e, f, g, h, i, j, k, l;
                if (Gd() || w.usedbcs) {
                    for (e = [], g = 0, h = 0; h < a.length; h++) f = a[h], i = _c(a[h]), "doubleByte" === i && (g++, f = a[h]), e[h + g] = f;
                    return j = e.length, b = N(b, j + 1), c = N(c || 0, j - b + 1), F(e[b - 1]) ? (e[b - 1] = " ", e[b] = " ") : F(e[b - 2]) && b >= 2 && (e[b - 2] = " ", e[b - 1] = " "), k = e.slice(0, b - 1).join(""), l = e.slice(b - 1 + c).join(""), k.concat(d).concat(l)
                }
                return nd(a, b, c, d)
            }
            function pd(a, b, c, d) {
                var e, f, g, h, i, j, k = C(b);
                if (C(arguments) > 3) {
                    if (f = ga(d), g = 0, f < 1) return X;
                    for (h = 0; h < f; h++) {
                        if (g = a.indexOf(b, g), g === -1) return a;
                        g += k
                    }
                    i = a.substring(0, g - k), j = a.substr(g), e = i.concat(c).concat(j)
                } else e = y.yb(a, b, c);
                return e
            }
            function qd() {
                return $c(arguments, "concatenate")
            }
            function rd() {
                return $c(arguments, "concat")
            }
            function sd(a, b) {
                var c, d, e, f, g, h, i;
                if (a.isReference && 0 === a.length) return V;
                if (c = {
                        value: !1
                    }, d = !! F(b[0]) || b[0], !Ca(d, c)) return X;
                for (d = c.value, e = arguments, f = [], g = [], h = C(e), i = 2; i < h; i++) td(f, e[i], d);
                return td(g, e[0], !1), ud(f, g)
            }
            function td(a, b, c) {
                var d, e = C(b);
                if (0 === e) return V;
                for (d = 0; d < e; d++) F(b[d]) || "" === b[d] ? c || a.push("") : a.push(ia(b[d]))
            }
            function ud(a, b) {
                if (0 === a.length) return "";
                if (1 === b.length) return a.join(b[0]);
                var c = a[0],
                    d, e;
                for (d = 1, e = 0; d < a.length; d++, e++) e === b.length && (e = 0), c += b[e] + a[d];
                return c
            }
            function vd(a, b) {
                return ad(!0, a, b)
            }
            function wd(a, b) {
                return ad(!1, a, b)
            }
            function xd(a, b, c) {
                var d, e, f, g, h, i, j, k, l;
                if (Gd() || w.usedbcs) {
                    for (d = [], f = 0, h = 0, g = 0; g < b.length; g++) if (e = b[g], i = _c(b[g]), "fourByte" === i) {
                        if (f % 2 === 0) {
                            f++;
                            continue
                        }
                        f++, e = b[g - 1] + b[g], d[d.length] = e
                    } else "doubleByte" === i && (h++, e = b[g]), j = f > 0 ? f / 2 : 0, d[g - j + h] = e;
                    return a || (d = Bd(d)), k = d.length, c >= k ? b : (a ? (l = d.slice(0, c - 1 < 0 ? 0 : c), l.length > 0 && F(l[l.length - 1]) && (l[l.length - 1] = "​")) : (l = d.slice(k - c), l.length > 0 && F(l[0]) && (l[0] = "​")), l.join(""))
                }
                return ad(a, b, c)
            }
            function yd(a, b) {
                return xd(!0, a, b)
            }
            function zd(a, b) {
                return xd(!1, a, b)
            }
            function Ad(a, b, c) {
                b--;
                var d = C(a);
                return b >= d ? "" : d < b + c ? a.substr(b) : a.substr(b, c)
            }
            function Bd(a) {
                var b, c = [];
                for (b = 0; b < a.length; b++) F(a[b]) ? (c[b] = a[b + 1], b++) : c[b] = a[b];
                return c.length === a.length - 1 && (c[c.length] = G), c
            }
            function Cd(a) {
                var b, c, d, e, f = [],
                    g = 0,
                    h = 0;
                for (c = 0; c < a.length; c++) {
                    if (b = a[c], d = _c(a[c]), "doubleByte" === d || "fourByte" === d) if ("fourByte" === d) {
                        if (g % 2 === 0) {
                            g++;
                            continue
                        }
                        h++, g++, b = a[c - 1] + a[c]
                    } else h++, b = a[c];
                    e = g > 0 ? g / 2 : 0, f[c - e + h] = b
                }
                return Bd(f)
            }
            function Dd(a, b, c) {
                var d, e, f;
                return Gd() || w.usedbcs ? (d = Cd(a), e = d.length, b--, b < 0 ? X : b >= e ? "" : e < b + c ? d.slice(b).join("") : (f = d.slice(b, b + c), "singleByte" !== _c(f[f.length - 1]) && (f[f.length - 1] = "​", F(f[0]) && (f[f.length] = "​")), f.join(""))) : Ad(a, b, c)
            }
            function Ed(a, b) {
                var c = [],
                    d;
                if (b < 0 || b * C(a) > 32767) return X;
                for (d = 0; d < b; d++) c.push(a);
                return c.join("")
            }
            function Fd(a) {
                return a ? a.length : 0
            }
            function Gd() {
                var a = v.CultureManager.q4();
                return !!a.isJCKCulture
            }
            function Hd(a) {
                var b, c, d, e;
                if (!a) return 0;
                if (Gd() || w.usedbcs) {
                    for (b = 0, c = 0; c < a.length; c++) if (8203 !== a[c].charCodeAt(0) && (d = _c(a[c]), e = v.CultureManager.q4(), "doubleByte" === d && 9390 !== a[c].charCodeAt(0))) {
                        if ("ja-jp" === (e && e.name().toLocaleLowerCase()) && (711 === a[c].charCodeAt(0) || 9356 === a[c].charCodeAt(0) || 8212 === a[c].charCodeAt(0))) continue;
                        b++
                    }
                    return a.length + b
                }
                return a.length
            }
            function Id(a, b, c) {
                if (c < 1 || C(b) < c) return X;
                var d = b.indexOf(a, c - 1);
                return d === -1 ? X : d + 1
            }
            function Jd(a, b, c) {
                var d, e, f, g, h, i;
                return Gd() || w.usedbcs ? (d = Cd(b), e = Cd(a), f = d.length, c < 1 || f < c ? X : (g = Ld(d), h = Ld(e), i = g.indexOf(h, c - 1), i === -1 ? X : i + 1)) : Id(a, b, c)
            }
            function Kd(a, b, c) {
                var d = -1,
                    e, f;
                return e = x.ub(a), e ? (f = x.sb(e).exec(b), d = F(f) ? -1 : f.index) : d = b.toLowerCase().indexOf(a.toLowerCase(), --c), d === -1 ? X : d + 1
            }
            function Ld(a, b) {
                var c;
                if (b) {
                    for (c = 0; c < a.length; c++) F(a[c]) && (a[c] = "​");
                    return a
                }
                for (c = 0; c < a.length; c++) F(a[c]) && a[c - 1] && 2 !== a[c - 1].length && (a[c] = "​");
                return a.join("")
            }
            function Md(a, b, c) {
                var d, e, f, g;
                return Gd() || w.usedbcs ? (d = Cd(b), e = Cd(a), f = d.length, c < 1 || f < c ? X : (g = Kd(Ld(e), Ld(d), c), g === X ? X : g)) : Kd(a, b, c)
            }
            function Nd(a, b) {
                return a === b
            }
            function Od(a) {
                return ra(a) ? a : ""
            }
            function Pd(a) {
                if (a) {
                    var b = a;
                    return b <= 0 || b > 1114111 ? X : b >= 55296 && b <= 57343 ? $ : b < 1048576 ? String.fromCharCode(b) : (b -= 1048576, String.fromCharCode((b >> 10) + 55296, (1023 & b) + 56320))
                }
                return X
            }
            function Qd(a) {
                var b, c, d = ia(a);
                return "" === d || null === d ? X : (b = d.charCodeAt(0)) >= 55296 && b <= 56319 ? 1 === d.length ? X : (c = d.charCodeAt(1)) >= 56320 && c <= 57343 ? b | c << 8 : 1 : b >= 56320 && b <= 57343 ? b - 53248 + 53248 : b
            }
            function Rd(a) {
                var b, c;

                function d(a) {
                    var b, c, d, e, f = ["ล้าน", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", ""],
                        g = ["ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า"],
                        h = ["ลบ", "บาท", "ถ้วน", "สตางค์", "ยี่", "เอ็ด", ",", " ", "฿"],
                        i = "",
                        j = a + "",
                        k = j.length;
                    for (b = k; b > 0; --b) {
                        if (c = parseInt(j[k - b]), d = g[c], e = 1 < b ? (b - 1) % 6 : 6, 1 === e && 2 === c && (d = h[4]), 1 === c) switch (e) {
                            case 0:
                            case 6:
                                i += b < k ? h[5] : d;
                                break;
                            case 1:
                                break;
                            default:
                                i += d
                        } else {
                            if (0 === c) {
                                0 === e && (i += f[e]);
                                continue
                            }
                            i += d
                        }
                        i += f[e]
                    }
                    return i
                }
                return a ? (b = Math.abs(parseInt(a)), c = parseFloat((Math.abs(a) - b).toFixed(2)), 0 !== b ? 0 === c ? (a < 0 ? "ลบ" : "") + d(b) + "บาทถ้วน" : (a < 0 ? "ลบ" : "") + d(b) + "บาท" + d(100 * c) + "สตางค์" : 0 !== c ? (a < 0 ? "ลบ" : "") + d(100 * c) + "สตางค์" : "ศูนย์บาทถ้วน") : X
            }
            function Sd(a) {
                return ca(a)
            }
            function Td(a) {
                return !!ca(a) && a._code !== $._code
            }
            function Ud(a) {
                return !!ca(a) && a._code === $._code
            }
            function Vd(a) {
                if (!F(a) && ca(a)) {
                    var b = E(a._code, [V._code, W._code, X._code, Y._code, Z._code, _._code, $._code]);
                    if (b >= 0) return b + 1
                }
                return $
            }
            function Wd(a) {
                return ja(a)
            }
            function Xd(a) {
                return za(K(a)) % 2 === 0
            }
            function Yd(a) {
                return za(K(a)) % 2 !== 0
            }
            function Zd(a) {
                return ja(a) ? ha(a) : qa(a) ? a ? 1 : 0 : ca(a) ? a : 0
            }
            function $d(a) {
                return F(a)
            }
            function _d(a) {
                return qa(a)
            }
            function ae(a) {
                return ra(a)
            }
            function be(a) {
                return !ra(a)
            }
            function ce(a) {
                return da(a)
            }
            function de(a) {
                return qa(a) ? 4 : ja(a) ? 1 : ra(a) ? 2 : ca(a) ? 16 : ea(a) ? 64 : X
            }
            function ee() {
                return $
            }
            function fe(a, b) {
                var c, d = 0,
                    e = a.source.kj;
                if (ea(b)) return $;
                if (c = b && (b.xf || b.references[0].xf) || a.source, b instanceof oa || F(b)) return e.parent.getSheetIndex(c.kj.name()) + 1;
                if (ja(b) || ra(b)) for (d; d < e.parent.sheets.length; d++) if (b.toUpperCase() === e.parent.sheets[d].name().toUpperCase()) return d + 1;
                return $
            }
            function ge(a, b) {
                var c, d = a.source.kj;
                return ea(b) || ja(b) ? $ : ra(b) ? X : F(b) ? d.parent.sheets.length : (c = b && (b.xf || b.references) || a.source, b instanceof oa ? c.length || d.parent.getSheetIndex(c.kj.name()) + 1 : $)
            }
            function he() {
                var a = new w.Functions.AsyncFunction("REFRESH", 1, 3, G);
                a.evaluate = ie, w.Functions.bi.REFRESH = a
            }
            function ie(a, b) {
                return b
            }
            function je(a) {
                return a >= 55296 && a <= 57343
            }
            function ke(a, b) {
                return !(a < 55296 || a > 56319) && (b >= 56320 && b <= 57343)
            }
            function le(a) {
                var b, c, d, e, f, g = "";
                if ((b = a.length - 1) < 0) return "";
                for (c = 0; c <= b; c++) if (d = a.charCodeAt(c), d >= "A".charCodeAt(0) && d <= "Z".charCodeAt(0) || d >= "0".charCodeAt(0) && d <= "9".charCodeAt(0) || d >= "a".charCodeAt(0) && d <= "z".charCodeAt(0) || d === "-".charCodeAt(0) || d === "_".charCodeAt(0) || d === ".".charCodeAt(0)) g += a[c];
                else {
                    if (je(d)) {
                        if (b === c || !ke(d, a.charCodeAt(c + 1))) return null;
                        e = [d, a.charCodeAt(c + 1)], c++
                    } else e = [d];
                    for (f = 0; f < e.length; f++) g += "%", g += e[f].toString(16).toUpperCase()
                }
                return g
            }
            b = {
                Hi: 0
            }, d = {
                Hi: 0,
                aj: "= 0",
                bj: W
            }, e = {
                Hi: 0,
                aj: "= 0",
                bj: 0
            }, f = {
                _i: 1,
                Hi: 0,
                aj: "= 0",
                bj: 0
            }, g = {
                Hi: 2,
                aj: "< 0"
            }, h = {
                Hi: 0,
                aj: ["> 134217728", "< -134217728"]
            }, i = {
                Hi: 1
            }, j = {
                Hi: 1,
                aj: "< 0"
            }, k = {
                Hi: 2
            }, l = {
                _i: 1,
                Hi: 2
            }, m = {
                _i: 1,
                Hi: 2,
                aj: "< 0",
                bj: X
            }, n = {
                Hi: 5
            }, o = {
                Hi: 6
            }, p = {
                Hi: 2,
                aj: "< 0",
                bj: X
            }, q = {
                _i: [],
                Hi: 4,
                Ii: 4,
                Ji: !0,
                Ki: !0,
                Li: !0
            }, r = {
                Hi: 4,
                Ii: 1,
                Ji: !0,
                Ki: !0
            }, s = {
                Hi: 4,
                Ii: 1,
                Ki: !0,
                Li: !0
            }, t = {
                Hi: 4,
                Ii: 1,
                Ji: !0,
                Ki: !0,
                Xi: !0
            }, u = {
                Hi: 4,
                Ii: 3,
                Ji: !0,
                Ki: !0,
                Xi: !0
            }, Aa("ABS", Ma, 1, 1, b), Aa("ACOS", Ob, 1, 1, {
                Hi: 0,
                aj: ["> 1", "< -1"]
            }), Aa("ACOT", Wb, 1, 1, b), Aa("ASIN", Nb, 1, 1, {
                Hi: 0,
                aj: ["> 1", "< -1"]
            }), Aa("ATAN", Vb, 1, 1, b), Aa("ATAN2", Xb, 2, 2, [b, b]), Aa("COS", Jb, 1, 1, b), Aa("SEC", Kb, 1, 1, h), Aa("CEILING", gb, 2, 2, [e, e]), Aa("ODD", Sa, 1, 1, i), Aa("EVEN", Ta, 1, 1, i), Aa("FLOOR", hb, 2, 2, [e, e]), Aa("LN", Wa, 1, 1, {
                Hi: 1,
                aj: "<= 0"
            }), Aa("SQRT", db, 1, 1, {
                Hi: 1,
                aj: "< 0"
            }), Aa("SIN", Hb, 1, 1, b), Aa("CSC", Ib, 1, 1, h), Aa("TAN", Lb, 1, 1, b), Aa("COT", Mb, 1, 1, h), Aa("SIGN", _a, 1, 1, {
                Hi: 1,
                aj: "> 0",
                bj: 1
            }), Aa("GCD", ab, 1, G, t, -1, -1), Aa("LCM", bb, 1, G, t, -1, -1), Aa("PRODUCT", cb, 1, G, G, -1, -1), Aa("POWER", Za, 2, 2, [i, i]), Aa("MOD", Xa, 2, 2, [i,
                {
                    Hi: 1,
                    aj: "= 0",
                    bj: W
                }]), Aa("QUOTIENT", eb, 2, 2, [b, d], G, G), Aa("SUBTOTAL", fb, 2, G, k, "!= 0", "!= 0"), Aa("INT", Na, 1, 1, i), Aa("MROUND", lb, 2, 2, [e, e]), Aa("ROUND", mb, 2, 2, [b, k]), Aa("ROUNDDOWN", nb, 2, 2, [b, k]), Aa("ROUNDUP", ob, 2, 2, [b, k]), Aa("TRUNC", nb, 1, 2, [b,
                {
                    _i: 0,
                    Hi: 2
                }], G, G, {
                bk: 1
            }), Aa("EXP", pb, 1, 1, b), Aa("LOG", sb, 1, 2, [{
                Hi: 0,
                aj: "<= 0"
            }, {
                _i: 10,
                Hi: 0,
                aj: "<= 0"
            }], G, G, {
                bk: 1
            }), Aa("LOG10", tb, 1, 1, {
                Hi: 0,
                aj: "<= 0"
            }), Aa("SUM", $a, 1, G, G, -1, -1), Aa("SUMIF", ub, 2, 3, G, [0, 2], [0, 2], {
                bk: 2
            }), Aa("SUMIFS", vb, 3, G, r, [0, "%= 1"], [0, "%= 1"]), Aa("SUMPRODUCT", zb, 1, G, G, -1, -1, {
                fk: 1
            }), Aa("SUMSQ", Ab, 1, G, t, -1, -1), Aa("SUMX2MY2", Bb, 2, 2, t, -1, -1), Aa("SUMX2PY2", Cb, 2, 2, t, -1, -1), Aa("SUMXMY2", Db, 2, 2, t, -1, -1), Aa("SERIESSUM", Eb, 4, 4, [b, k, k,
                {
                    Hi: 4,
                    Ii: 1,
                    Ji: !0,
                    Ki: !0,
                    Li: !0
                }], 3, 3), Aa("PI", Ya, 0, 0), Aa("SQRTPI", Fb, 1, 1, {
                Hi: 0,
                aj: "< 0"
            }), Aa("DEGREES", Ra, 1, 1, i), Aa("RADIANS", Gb, 1, 1, b), Aa("COSH", Rb, 1, 1, b), Aa("SECH", Sb, 1, 1, b), Aa("ACOSH", Ub, 1, 1, {
                Hi: 0,
                aj: "< 0"
            }), Aa("SINH", Pb, 1, 1, b), Aa("CSCH", Qb, 1, 1, b), Aa("ASINH", Tb, 1, 1, b), Aa("TANH", Yb, 1, 1, b), Aa("COTH", Zb, 1, 1, {
                Hi: 0
            }), Aa("ATANH", $b, 1, 1, {
                Hi: 0,
                aj: ["<= -1", ">= 1"]
            }), Aa("ACOTH", _b, 1, 1, {
                Hi: 0
            }), Aa("MDETERM", ac, 1, 1, s, -1, -1), Aa("MINVERSE", bc, 1, 1, s, -1, -1), Aa("MMULT", cc, 2, 2, [s, s], -1, -1), Aa("FACT", Ua, 1, 1, {
                Hi: 3,
                aj: ["< 0", "> 170"]
            }), Aa("FACTDOUBLE", Va, 1, 1, {
                Hi: 3,
                aj: ["< 0", "> 300"]
            }), Aa("MULTINOMIAL", dc, 1, G, {
                Hi: 4,
                Ii: 0,
                Ji: !0,
                Ki: !0,
                Xi: !0
            }, -1, -1), Aa("RAND", ec, 0, 0, G, G, G, {
                ck: !0
            }), Aa("RANDBETWEEN", fc, 2, 2, [k, k], G, G, {
                ck: !0
            }), Aa("COMBIN", Oa, 2, 2, [j, j]), Aa("COMBINA", Pa, 2, 2, [g, g]), Aa("DECIMAL", Qa, 2, 2, [{
                _i: "0",
                Hi: 5
            }, {
                Hi: 0,
                aj: ["> 36", "< 2"]
            }]), Aa("CEILING.MATH", ib, 1, 3, [b,
                {
                    Hi: 0,
                    _i: 1
                }, {
                    Hi: 0,
                    _i: 0
                }]), Aa("FLOOR.MATH", jb, 1, 3, [b,
                {
                    Hi: 0,
                    _i: 1
                }, {
                    Hi: 0,
                    _i: 0
                }]), Aa("BASE", kb, 2, 3, [{
                Hi: 0,
                aj: ["< 0", ">= 9007199254740992"]
            }, {
                Hi: 3,
                aj: ["> 36", "< 2"]
            }, {
                Hi: 3,
                _i: 0,
                aj: ["< 0", ">= 256"]
            }]), Aa("ROMAN", gc, 1, 2, [{
                Hi: 2,
                aj: ["< 0", "> 3999"],
                bj: X
            }, {
                _i: 0,
                Hi: 2,
                aj: ["< 0", "> 4"],
                bj: X
            }], G, G, {
                bk: 1
            }), Aa("ARABIC", hc, 1, 1, n), Aa("CEILING.PRECISE", qb, 1, 2, [e, f]), Aa("ISO.CEILING", qb, 1, 2, [e, f]), Aa("FLOOR.PRECISE", rb, 1, 2, [e, f]), Aa("MAXIFS", wb, 3, G, r, [0, "%= 1"], [0, "%= 1"]), Aa("MINIFS", xb, 3, G, r, [0, "%= 1"], [0, "%= 1"]), Aa("MUNIT", yb, 1, 1, b), Aa("AND", jc, 1, G, u, -1, -1), Aa("OR", kc, 1, G, u, -1, -1), Aa("NOT", lc, 1, 1), Aa("IF", mc, 2, 3, G, [1, 2], [1, 2], {
                gk: [1, 2],
                bk: 2,
                isBranch: !0,
                findTestArgument: 0,
                findBranchArgument: function(a) {
                    if (aa.vf(a)) return -1;
                    var b = {
                        value: !1
                    };
                    return fa(a, b), b.value ? 1 : 2
                }
            }), Aa("IFERROR", oc, 2, 2, G, 0, G, {
                gk: -1
            }), Aa("TRUE", pc, 0, 0), Aa("FALSE", qc, 0, 0), Aa("IFNA", rc, 2, 2, G, 0, G, {
                gk: -1
            }), Aa("IFS", sc, 2, 254, G, 0, G, {
                gk: -1
            }), Aa("SWITCH", tc, 3, 253, G, 1, G, {
                gk: -1
            }), Aa("XOR", uc, 1, G, u, -1, -1), Aa("DATE", Bc, 3, 3, [{
                Hi: 2,
                aj: ["< 0", "> 9999"]
            },
                k, k]), Aa("TIME", Cc, 3, 3, [k, k, k]), Aa("DATEVALUE", Dc, 1, 1, {
                Ni: !0
            }), Aa("TIMEVALUE", Ec, 1, 1, {
                Ni: !0
            }), Aa("NOW", Fc, 0, 0, G, G, G, {
                ck: !0
            }), Aa("TODAY", Gc, 0, 0, G, G, G, {
                ck: !0
            }), Aa("HOUR", Hc, 1, 1, o), Aa("MINUTE", Ic, 1, 1, o), Aa("SECOND", Jc, 1, 1, o), Aa("DAY", Kc, 1, 1, o), Aa("MONTH", Lc, 1, 1, o), Aa("YEAR", Mc, 1, 1, o), Aa("WEEKNUM", Nc, 1, 2, [o, l], G, G, {
                bk: 1
            }), Aa("WEEKDAY", Oc, 1, 2, [o, l], G, G, {
                bk: 1
            }), Aa("EDATE", Pc, 2, 2, [o, k]), Aa("EOMONTH", Qc, 2, 2, [o, k]), Aa("WORKDAY", Rc, 2, 3, [o, k, q], 2, 2, {
                bk: 2
            }), Aa("WORKDAY.INTL", Sc, 2, 4, [o, k,
                {
                    _i: "0000011"
                },
                q], [2, 3], [2, 3], {
                bk: [2, 3]
            }), Aa("DAYS360", pa.uk, 2, 3, [o, o,
                {
                    _i: !1,
                    Hi: 7
                }], {
                bk: 2
            }), Aa("NETWORKDAYS", Tc, 2, 3, [o, o], 2, 2, {
                bk: 2
            }), Aa("NETWORKDAYS.INTL", Vc, 2, 4, [o, o], [2, 3], [2, 3], {
                bk: [2, 3]
            }), Aa("YEARFRAC", pa.vk, 2, 3, [o, o,
                {
                    _i: 0,
                    Hi: 2
                }], {
                bk: 2
            }), Aa("DATEDIF", Wc, 3, 3, [o, o, n]), Aa("DAYS", Xc, 2, 2), Aa("ISOWEEKNUM", Yc, 1, 1, o), Aa("CLEAN", bd, 1, 1, n), Aa("TRIM", cd, 1, 1, n), Aa("DOLLAR", dd, 1, 2, [b,
                {
                    _i: 2,
                    Hi: 2,
                    aj: "> 99",
                    bj: X
                }], G, G, {
                bk: 1
            }), Aa("FIXED", ed, 1, 3, [b,
                {
                    _i: 2,
                    Hi: 2
                }, {
                    _i: !1,
                    Hi: 7
                }], G, G, {
                bk: [1, 2]
            }), Aa("TEXT", fd, 2, 2, [{},
                n]), Aa("VALUE", gd, 1, 1, n), Aa("LOWER", id, 1, 1, n), Aa("UPPER", jd, 1, 1, n), Aa("PROPER", kd, 1, 1, n), Aa("CHAR", ld, 1, 1, {
                Hi: 2,
                aj: ["> 255", "< 1"],
                bj: X
            }), Aa("CODE", md, 1, 1, {
                Hi: 5,
                Ni: !0
            }), Aa("REPLACE", nd, 4, 4, [n,
                {
                    Hi: 2,
                    aj: "< 1",
                    bj: X
                },
                p, n], G, G, {
                bk: 2
            }), Aa("SUBSTITUTE", pd, 3, 4, [n,
                {
                    Hi: 5,
                    Ni: !0
                },
                n], G, G, {
                bk: 3
            }), Aa("CONCATENATE", qd, 2, G, {
                Hi: 4,
                Ii: 0,
                Ji: !0,
                Xi: !0
            }, G, -1), Aa("LEFT", vd, 1, 2, [n, m], G, G, {
                bk: 1
            }), Aa("MID", Ad, 3, 3, [n,
                {
                    Hi: 2,
                    aj: "<= 0",
                    bj: X
                },
                p]), Aa("RIGHT", wd, 1, 2, [n, m], G, G, {
                bk: 1
            }), Aa("REPT", Ed, 2, 2, [n, k]), Aa("LEN", Fd, 1, 1, n), Aa("FIND", Id, 2, 3, [n, n, l], G, G, {
                bk: 2
            }), Aa("SEARCH", Kd, 2, 3, [n, n, m], G, G, {
                bk: 2
            }), Aa("EXACT", Nd, 2, 2, [n, n]), Aa("T", Od, 1, 1), Aa("UNICHAR", Pd, 1, 1, [{
                Hi: 2,
                bj: X
            }]), Aa("UNICODE", Qd, 1, 1), Aa("BAHTTEXT", Rd, 1, 1, [{
                Hi: 0,
                bj: X
            }]), Aa("CONCAT", rd, 1, G, {
                Hi: 4,
                Ji: !0,
                Ki: !0,
                Xi: !0
            }, -1, -1), Aa("TEXTJOIN", sd, 3, G, {
                Hi: 4,
                Ji: !0,
                Ki: !0,
                Xi: !0
            }, -1, -1), Aa("FINDB", Jd, 2, 3, [n, n, l], G, G, {
                bk: 2
            }), Aa("LEFTB", yd, 1, 2, [n, m], G, G, {
                bk: 1
            }), Aa("RIGHTB", zd, 1, 2, [n, m], G, G, {
                bk: 1
            }), Aa("MIDB", Dd, 3, 3, [n, p, p]), Aa("LENB", Hd, 1, 1, n), Aa("REPLACEB", od, 4, 4, [n,
                {
                    Hi: 2,
                    aj: "< 1",
                    bj: X
                },
                p, n], G, G, {
                bk: 2
            }), Aa("SEARCHB", Md, 2, 3, [n, n, m], G, G, {
                bk: 2
            }), Aa("ENCODEURL", le, 0, 1, n), Aa("ISERROR", Sd, 1, 1, G, G, G, {
                gk: -1
            }), Aa("ISERR", Td, 1, 1, G, G, G, {
                gk: -1
            }), Aa("ISNA", Ud, 1, 1, G, G, G, {
                gk: -1
            }), Aa("ERROR.TYPE", Vd, 1, 1, G, G, G, {
                gk: -1
            }), Aa("ISNUMBER", Wd, 1, 1, G, G, G, {
                gk: -1
            }), Aa("ISEVEN", Xd, 1, 1, b, G, G), Aa("ISODD", Yd, 1, 1, b, G, G), Aa("N", Zd, 1, 1, G, G, G), Aa("ISBLANK", $d, 1, 1, G, G, G, {
                gk: -1
            }), Aa("ISLOGICAL", _d, 1, 1, G, G, G, {
                gk: -1
            }), Aa("ISTEXT", ae, 1, 1, G, G, G, {
                gk: -1
            }), Aa("ISNONTEXT", be, 1, 1, G, G, G, {
                gk: -1
            }), Aa("ISREF", ce, 1, 1, G, -1, G, {
                gk: -1
            }), Aa("TYPE", de, 1, 1, G, G, -1, {
                gk: -1
            }), Aa("NA", ee, 0, 0), Aa("SHEET", fe, 0, 0, G, -1, G, {
                dk: !0
            }), Aa("SHEETS", ge, 0, 0, G, -1, G, {
                dk: !0
            }), he(), a.exports = pa
        }()
}, function(a, b) {
    a.exports = GC.Spread.CalcEngine
}, function(a, b) {
    a.exports = GC.Spread.Formatter
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(33).Functions;
            c(36), c(37), c(38), c(39), c(40), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g = c(26),
                h = c(33),
                i = g.q,
                j = null,
                k = h.Convert,
                l = k.Pa,
                m = k.Na,
                n = k.vf,
                o = k.Nh,
                p = h.Errors,
                q = p.DivideByZero,
                r = p.Value,
                s = h.Functions,
                t = s.ak,
                u = s.jk,
                v = isNaN,
                w = function() {
                    return g.C(h.SR)()
                },
                x = w().Exp_InvalidCast;

            function y(a, b) {
                this.Gk = a, this.Hk = b
            }
            y.prototype.Ik = function(a) {
                var b = {
                        "=": 9,
                        "<>": 10,
                        "<": 11,
                        "<=": 12,
                        ">": 13,
                        ">=": 14
                    },
                    c = h.evaluateOperator(b[this.Gk], a, this.Hk);
                return !!s.ik(c) && k.Vh(c)
            };

            function z(a, b, c) {
                var d = this;
                if (d.cj = 0, d.Jk = a, d.Kk = c, 3 === arguments.length) {
                    if (d.Lk = d.Mk(a, b), a.rowCount < 2 || a.colCount < 1 || c.rowCount < 2 || c.colCount < 1 || d.Lk < 0 || d.Jk.colCount <= d.Lk) throw x
                } else if (2 === arguments.length && (d.Lk = -1, a.rowCount < 2 || a.colCount < 1 || c.rowCount < 2 || c.colCount < 1)) throw x
            }
            z.prototype = {
                Mk: function(a, b) {
                    var c, d;
                    if (u(b)) {
                        for (c = 0; c < a.colCount; c++) if (d = k.bc(a[0][c]), d && this.Nk(d, b)) return c;
                        return -1
                    }
                    return k.Rh(b) - 1
                },
                Ok: function() {
                    var a = this;
                    if (a.cj <= 0 || a.Jk.rowCount <= a.cj) throw w().Exp_InvalidOperation;
                    return a.Jk[a.cj][a.Lk]
                },
                Pk: function() {
                    for (var a = this, b = !1, c = a.Jk.rowCount; !b && a.cj < c;) a.cj++, a.cj < c && (b = a.Qk());
                    return b
                },
                Rk: function(a) {
                    var b, c, d, e;
                    if (u(a)) {
                        for (b = ["=", "<>", "<=", ">=", "<", ">"], c = k.bc(a), d = 0; d < b.length; d++) if (g.u.kb(c, b[d])) return c = c.substring(b[d].length), e = g.o.lb(c), a = v(e) ? !! this.Nk("true", c) || !this.Nk("false", c) && c : e, new y(b[d], a);
                        return new y("=", a)
                    }
                    return a ? new y("=", a) : j
                },
                Qk: function() {
                    var a, b, c, d, e, f, g = this,
                        h = !1,
                        j = g.Kk;
                    for (a = 1; !h && a < j.rowCount; a++) for (h = !0, b = 0; h && b < j.colCount; b++) if (c = g.Rk(j[a][b])) {
                        if (d = g.Mk(g.Jk, j[0][b]), d < 0) return !1;
                        e = g.Jk[g.cj][d], f = i.zb(c.Hk, !0), h = "=" === c.Gk && u(c.Hk) && u(e) && f ? i.sb(f).test(e) : c.Ik(e)
                    }
                    return h
                },
                Nk: function(a, b) {
                    return a.toLowerCase() === b.toLowerCase()
                }
            };

            function A(a, b, c, d) {
                for (var e, f = 0, g = new z(a, b, c); g.Pk();) e = g.Ok(), e = d ? m(e) : e, e && f++;
                return o(f)
            }
            function B(a, b, c, d, e, f, g) {
                for (var h, i, j, k, p = g ? 1 : 0, s = 0, t = 0, u = new z(a, b, c); u.Pk();) if (h = u.Ok(), m(h)) {
                    if (i = l(h), v(i)) return r;
                    p = g ? p * i : p + i, s += i * i, t++
                } else if (n(h)) return h;
                return f || g ? o(p) : (j = Math.max(0, (t * s - p * p) / (t * (t - e))), k = d ? Math.sqrt(j) : j, t <= 1 ? q : o(k))
            }
            function C(a, b, c) {
                for (var d, e, f = 0, g = 0, h = new z(a, b, c); h.Pk();) {
                    if (d = h.Ok(), n(d)) return d;
                    if (m(d)) {
                        if (e = {
                                value: 0
                            }, !k.Th(d, e)) return r;
                        f += e.value, g++
                    }
                }
                return 0 === g ? q : o(f / g)
            }
            function D(a, b, c) {
                return A(a, b, c, !0)
            }
            function E(a, b, c) {
                return A(a, b, c, !1)
            }
            function F(a, b, c) {
                var d, e = new z(a, b, c);
                return e.Pk() ? (d = e.Ok(), e.Pk() ? p.Number : d) : r
            }
            function G(a, b, c) {
                for (var d, e, f = !1, g = -s.hk, h = new z(a, b, c); h.Pk();) {
                    if (d = h.Ok(), n(d)) return d;
                    if (m(d)) {
                        if (e = l(d), v(e)) return r;
                        (!f || e > g) && (g = e), f = !0
                    }
                }
                return f ? o(g) : 0
            }
            function H(a, b, c) {
                for (var d, e, f = !1, g = s.hk, h = new z(a, b, c); h.Pk();) {
                    if (d = h.Ok(), n(d)) return d;
                    if (m(d)) {
                        if (e = l(d), v(e)) return r;
                        (!f || d < g) && (g = d), f = !0
                    }
                }
                return f ? o(g) : 0
            }
            function I(a, b, c) {
                return B(a, b, c, !1, 0, !1, !0)
            }
            function J(a, b, c) {
                return B(a, b, c, !0, 1)
            }
            function K(a, b, c) {
                return B(a, b, c, !0, 0)
            }
            function L(a, b, c) {
                return B(a, b, c, !1, 0, !0)
            }
            function M(a, b, c) {
                return B(a, b, c, !1, 1)
            }
            function N(a, b, c) {
                return B(a, b, c, !1, 0)
            }
            b = "!= 1", d = {
                Yi: !0,
                Hi: 4,
                Ii: 0
            }, e = {
                Yi: !0
            }, f = [d, e, d], t("DAVERAGE", C, 3, 3, f, b, b), t("DCOUNT", D, 3, 3, f, b, b), t("DCOUNTA", E, 3, 3, f, b, b), t("DGET", F, 3, 3, f, b, b), t("DMAX", G, 3, 3, f, b, b), t("DMIN", H, 3, 3, f, b, b), t("DPRODUCT", I, 3, 3, f, b, b), t("DSTDEV", J, 3, 3, f, b, b), t("DSTDEVP", K, 3, 3, f, b, b), t("DSUM", L, 3, 3, f, b, b), t("DVAR", M, 3, 3, f, b, b), t("DVARP", N, 3, 3, f, b, b), a.exports = s
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N = c(26),
                O = c(33),
                P = N.k.ac,
                Q = void 0,
                R = Math.abs,
                S = Math.sin,
                T = Math.cos,
                U = Math.sqrt,
                V = Math.log,
                W = Math.pow,
                X = Math.exp,
                Y = Math.E,
                Z = Math.atan2,
                $ = parseFloat,
                _ = isNaN,
                aa = O.Errors,
                ba = aa.NotAvailable,
                ca = aa.Number,
                da = aa.Value,
                ea = O.Functions,
                fa = ea.ak,
                ga = ea.qk,
                ha = O.Convert,
                ia = ha.Nh,
                ja = ea.Fk,
                ka = ja.Dk,
                la = ea.Ui,
                ma = ea.Wi,
                na = 0xffffffffffff,
                oa = new la(1, 0),
                pa = ha.Th;

            function qa(a, b) {
                return {
                    Ld: a,
                    Sk: b
                }
            }
            function ra(a, b) {
                var c = [],
                    d;
                for (d = 0; d < P(a); d++) c.push(new qa(a[d], b[d]));
                return c.push(new qa(null, 0)), c
            }
            b = ra(["g", "sg", "lbm", "u", "ozm"], [1, 6852205001e-14, .002204622915, 6.02217e23, .035273972]), d = 1e4 / 254, e = d / 12, f = e / 3, g = f / 1760, h = ra(["m", "mi", "Nmi", "in", "ft", "yd", "ang", "Pica", "km"], [1, g, 1 / 1852, d, e, f, 1e10, 2834.645669, .001]), i = 365.25, j = 24 * i, k = 60 * j, l = 60 * k, m = ra(["yr", "day", "hr", "mn", "sec"], [1, i, j, k, l]), n = .00750061708, o = ra(["Pa", "atm", "mmHg", "p", "at"], [1, 9869233e-12, n, 1, n]), p = 1e5, q = ra(["N", "dyn", "lbf", "dy"], [1, p, .224808924, p]), r = 745.701, s = ra(["HP", "W", "h", "w"], [1, r, 1, r]), t = 62146e14, u = 1 / (3600 * r), v = 1 / 3600, w = 947815e-9, x = ra(["J", "e", "c", "cal", "eV", "HPh", "Wh", "flb", "BTU", "ev", "hh", "wh", "btu"], [1, 9999995.193, .239006249, .238846191, t, u, v, 23.73042222, w, t, u, v, w]), y = ra(["T", "gs"], [1, 1e4]), z = .0049289216, A = ra(["tsp", "tbs", "oz", "cup", "pt", "qt", "gal", "l", "uk_pt", "us_pt", "lt"], [1, 1 / 3, 1 / 6, 1 / 48, 1 / 96, 1 / 192, 1 / 768, z, .008675585, 1 / 96, z]), B = ra(["Y", "Z", "E", "P", "T", "G", "M", "k", "h", "e", "d", "c", "m", "u", "n", "p", "f", "a", "z", "y"], [1e24, 1e21, 1e18, 1e15, 1e12, 1e9, 1e6, 1e3, 100, 10, .1, .01, .001, 1e-6, 1e-9, 1e-12, 1e-15, 1e-18, 1e-21, 1e-24]);

            function sa(a, b, c) {
                var d, e, f, g, h, i, j, k = 100,
                    l = .5 * a,
                    m = l * l;
                for (l = W(l, $(b)), d = ea.tk(b), e = 1, f = 0, g = $(b), h = l / d, i = .9 * h, j = !1; h !== i && 0 !== k;) l *= m, d *= ++f, e *= ++g, i = h, h = c || j ? h + l / d / e : h - l / d / e, k--, j = !j;
                return h
            }
            function ta(a, b) {
                var c = W(b, 10),
                    d = parseInt(a, b);
                return _(d) ? ca : c / 2 <= d ? d - c : d
            }
            function ua(a, b, c) {
                a < 0 && (a += W(b, 10));
                var d = a.toString(b),
                    e = c - P(d),
                    f;
                for (f = 0; f < e; f++) d = "0" + d;
                return d.toUpperCase()
            }
            function va(a, b) {
                var c = ta(a, b);
                return P(c) < P(a) ? ca : c
            }
            function wa(a, b, c) {
                var d = ua(a, c, b.Qb);
                return 0 <= d && b.Qb < P(d) && b.$i ? ca : d
            }
            function xa(a, b, c, d, e) {
                var f, g = ta(a, c);
                return P(g) < P(a) ? ca : e && (g < -e || e - 1 < g) ? ca : (f = ua(g, d, b.Qb), 0 <= g && b.Qb < P(f) && b.$i ? ca : f)
            }
            function ya(a, b) {
                var c = Number.POSITIVE_INFINITY,
                    d = a.Pi(),
                    e = a.Qi();
                return _(d) || d === c || _(e) || e === c ? ca : a.bc(b)
            }
            function za(a, b, c, d) {
                var e = a,
                    f = b,
                    g = c.Pi(),
                    h = c.Qi();
                return a = d ? e * g - f * h : e + g, b = d ? e * h + f * g : f + h, {
                    Ri: a,
                    Si: b
                }
            }
            function Aa(a, b) {
                var c, d, e, f, g, h, i, j, k = b ? 1 : 0,
                    l = 0;
                for (d = 0; d < P(a); d++) if (ha.Ca(a[d])) for (i = a[d], e = 0; e < i.rowCount; e++) for (f = 0; f < i.columnCount; f++) {
                    if (c = ma(i.getValue(e, f)), !c) return ca;
                    h = za(k, l, c, b), k = h.Ri, l = h.Si
                } else if (ha.Fh(a[d])) for (j = a[d], g = 0; g < j.getRangeCount(); g++) for (e = 0; e < j.getRowCount(g); e++) for (f = 0; f < j.getColumnCount(g); f++) {
                    if (c = ma(j.getValue(g, e, f)), !c) return ca;
                    h = za(k, l, c, b), k = h.Ri, l = h.Si
                } else {
                    if (c = ma(a[d]), !c) return ca;
                    h = za(k, l, c, b), k = h.Ri, l = h.Si
                }
                return ya(new la(k, l))
            }
            function Ba(a, b) {
                return ia(sa(a, b, !0))
            }
            function Ca(a, b) {
                return ia(sa(a, b, !1))
            }
            function Da(a, b) {
                var c, d, e, f, g, h, i, j, k, l = 1.7976931348623157e308,
                    m = .5772156649015329,
                    n = 0,
                    o = .25 * a * a,
                    p = 1,
                    q = 0,
                    r = 1,
                    s = 2 / a;
                if (b > 0) {
                    for (q = -m, f = 1; f < b; f++) q += 1 / f, p *= f + 1;
                    if (r = s, 1 === b) n = 1 / a;
                    else {
                        for (g = p / b, h = 1, i = 1, c = g, f = 1; f < b; f++) {
                            if (g /= b - f, h *= f, i *= -o, d = g * i / h, c += d, l - R(d) < R(c) || s > 1 && l / s < r) return l;
                            r *= s
                        }
                        if (c *= .5, d = R(c), r > 1 && l / r < d || d > 1 && l / d < r) return l;
                        n = c * r
                    }
                }
                j = 2 * V(a / 2), k = -m, 0 === b ? (q = k, d = 1) : (q += 1 / b, d = 1 / p), c = (k + q - j) * d, e = 1;
                do d *= o / (e * (e + b)), k += 1 / e, q += 1 / (e + b), c += (k + q - j) * d, e++;
                while (R(d / c) > 1.1102230246251565e-16);
                return c = .5 * c / r, b & !0 && (c = -c), n += c, ia(n)
            }
            function Ea(a, b) {
                var c = [.0007969367292973471, .08283523921074408, 1.239533716464143, 5.447250030587687, 8.74716500199817, 5.303240382353949, 1],
                    d = [.0007621256162081731, .07313970569409176, 1.1271960812968493, 5.112079511468076, 8.424045901417724, 5.214515986823615, 1],
                    e = [.0009244088105588637, .08562884743544745, 1.2535274390105895, 5.470977403304171, 8.761908832370695, 5.306052882353947, 1],
                    f = [.0005713231280725487, .06884559087544954, 1.105142326340617, 5.073863861286015, 8.399855543276042, 5.209828486823619, 1],
                    g = [-.011366383889846916, -1.2825271867050931, -19.553954425773597, -93.20601521237683, -177.68116798048806, -147.07750515495118, -51.41053267665993, -6.050143506007285],
                    h = [.05108625947501766, 4.982138729512334, 75.82382841325453, 366.7796093601508, 710.8563049989261, 597.4896124006136, 211.68875710057213, 25.207020585802372],
                    i = [64.3178256118178, 856.4300259769806, 3882.4018360540163, 7240.467741956525, 5930.727011873169, 2062.0933166032783, 242.0057402402914],
                    j = [74.23732770356752, 1056.4488603826283, 4986.410583376536, 9562.318924047562, 7997.041604473507, 2826.1927851763908, 336.0936078106983],
                    k = [15592.436785523574, -14663929.59039716, 5435264770.518765, -982136065717.9115, 87590639439536.7, -0xc5090e8ec6601, 0x9d4a5b305a0018, -0x41b52d6418d9ec],
                    l = [1263204747.9017804, -647355876379.1603, 114509511541823.73, -8127702555013251, 0x2cf35a16e6cd620, -0xacf20aeef158b80],
                    m = [1041.2835366425984, 626107.330137135, 268919633.39381415, 86400248710.3935, 20297961275010.555, 3171577528429750.5, 0x37a4bf79f36ba00],
                    n = [594.3015923461282, 235564.09294306856, 73481194.44597217, 18760131610.870617, 3882312774962.3857, 620557727146953.8, 0xf41f1e2a3d2440, 0x3721e321ece8fe00],
                    o = [-4794432209.782018, 1956174919465.5657, -249248344360967.72, 9708622510473064],
                    p = [-899971225.7055594, 452228297998.19403, -72749424522181.83, 0xd15a1534be241],
                    q = [499.563147152651, 173785.4016763747, 48440965.83399621, 11185553704.535683, 2112775201154.892, 310518229857422.56, 0x710505f9ecba70, 0x17be34c7b662cc00],
                    r = [620.8364781180543, 256987.25675774884, 83514679.14319493, 22151159547.97925, 4749141220799.914, 784369607876235.9, 89522233618462740, 0x49de55d9c0a4e400],
                    s = .7978845608028654,
                    t = 2.356194490192345,
                    u = .7853981633974483;

                function v(a, b, c, d) {
                    var e = 0,
                        f = $(b[e++]),
                        g = c;
                    d && (f += a, g--);
                    do f = f * a + $(b[e++]);
                    while (0 !== --g);
                    return f
                }
                function w(a, b) {
                    var k, l, m, n, w, x = b ? c : d,
                        y = b ? e : f,
                        z = b ? g : h,
                        A = b ? i : j,
                        B = b ? o : p,
                        C = b ? q : r,
                        D = b ? 5.783185962946784 : 14.681970642123893,
                        E = b ? 30.471262343662087 : 49.2184563216946;
                    return a <= 5 ? (l = a * a, b && a < 1e-5 ? 1 - l / 4 : (k = v(l, B, 3) / v(l, C, 8, !0), m = (l - D) * (l - E), m *= k, b ? m : m * a)) : (k = 5 / a, l = b ? 25 / (a * a) : k * k, m = v(l, x, 6) / v(l, y, 6), n = v(l, z, 7) / v(l, A, 7, !0), w = a - (b ? u : t), m = m * T(w) - k * n * S(w), m * s / U(a))
                }
                function x(a, b) {
                    var o, p, q, r, x, y = b ? c : d,
                        z = b ? e : f,
                        A = b ? g : h,
                        B = b ? i : j,
                        C = b ? k : l,
                        D = b ? m : n,
                        E = b ? 1 : a,
                        F = b ? 7 : 5,
                        G = b ? 7 : 8;
                    return a <= 5 ? (p = a * a, o = E * v(p, C, F) / v(p, D, G, !0), o += .6366197723675814 * (b ? V(a) * w(a, !0) : w(a, !1) * V(a) - 1 / a)) : (o = 5 / a, p = b ? 25 / (a * a) : o * o, q = v(p, y, 6) / v(p, z, 6), r = v(p, A, 7) / v(p, B, 7, !0), x = a - (b ? u : t), q = q * S(x) + o * r * T(x), q * s / U(a))
                }
                function y(a, b) {
                    var c = x(a, !0),
                        d = x(a, !1),
                        e = 1,
                        f = 2 * e,
                        g;
                    if (0 === b) return c;
                    if (1 === b) return d;
                    do g = f * d / a - c, c = d, d = g, f += 2, ++e;
                    while (e < b);
                    return g
                }
                return ia(y(a, b))
            }
            function Fa(a) {
                return va(a, 2)
            }
            function Ga(a) {
                return va(a, 16)
            }
            function Ha(a) {
                return va(a, 8)
            }
            function Ia(a, b) {
                return xa(a, b, 2, 16)
            }
            function Ja(a, b) {
                return xa(a, b, 2, 8)
            }
            function Ka(a, b) {
                return wa(a, b, 2)
            }
            function La(a, b) {
                return wa(a, b, 16)
            }
            function Ma(a, b) {
                return wa(a, b, 8)
            }
            function Na(a, b) {
                return xa(a, b, 16, 2, 512)
            }
            function Oa(a, b) {
                return xa(a, b, 8, 2, 512)
            }
            function Pa(a, b) {
                return xa(a, b, 16, 8, 536870912)
            }
            function Qa(a, b) {
                return xa(a, b, 8, 16, 549755813888)
            }
            function Ra(a, b) {
                var c, d = ga(a * U(2)),
                    e = 2 * $(d) - 1;
                return b.$i && (d = ga(b.Qb * U(2)), c = 2 * $(d) - 1, e = c - e), e
            }
            function Sa(a) {
                return Ra(a, {
                    $i: !1
                })
            }
            function Ta(a) {
                return 1 - Ra(a, {
                        $i: !1
                    })
            }
            function Ua(a, b) {
                return O.Zh.Yh(a, b) ? 1 : 0
            }
            function Va(a, b) {
                return a >= b ? 1 : 0
            }
            function Wa(a, b, c) {
                return "i" !== c && "j" !== c ? aa.Value : ya(new la(a, b), c)
            }
            function Xa(a) {
                return ia(U(a.Ri * a.Ri + a.Si * a.Si))
            }
            function Ya(a) {
                return ia(a.Si)
            }
            function Za(a) {
                return 0 === a.Ri && 0 === a.Si ? aa.DivideByZero : ia(Z(a.Si, a.Ri))
            }
            function $a(a) {
                return ya(new la(a.Ri, (-a.Si)))
            }
            function _a(a) {
                return ya(new la(T(a.Ri) * ka(a.Si, !1), -S(a.Ri) * ka(a.Si, !0)))
            }
            function ab(a, b) {
                var c = a.Ri,
                    d = a.Si,
                    e = b.Ri,
                    f = b.Si;
                return ya(new la((c * e + d * f) / (e * e + f * f), (d * e - c * f) / (e * e + f * f)))
            }
            function bb(a) {
                return ya(new la(X(a.Ri) * T(a.Si), X(a.Ri) * S(a.Si)))
            }
            function cb(a) {
                var b = a.Ri,
                    c = a.Si;
                return ya(new la(V(U(b * b + c * c)), Z(c, b)))
            }
            function db(a) {
                var b = a.Ri,
                    c = a.Si,
                    d = ja.Ek(Y, 10);
                return ya(new la(d * V(U(b * b + c * c)), d * Z(c, b)))
            }
            function eb(a) {
                var b = a.Ri,
                    c = a.Si,
                    d = ja.Ek(Y, 2);
                return ya(new la(d * V(U(b * b + c * c)), d * Z(c, b)))
            }
            function fb(a, b) {
                var c, d, e = a.Ri,
                    f = a.Si;
                return 0 === e && 0 === f ? b > 0 ? "0" : ca : (c = U(e * e + f * f), d = Z(f, e), ya(new la(W(c, b) * T(b * d), W(c, b) * S(b * d))))
            }
            function gb(a) {
                return ia(a.Ri)
            }
            function hb(a) {
                return ya(new la(S(a.Ri) * ka(a.Si, !1), T(a.Ri) * ka(a.Si, !0)))
            }
            function ib(a) {
                var b, c, d = a.Ri,
                    e = a.Si;
                return 0 === d && 0 === e ? "0" : (b = U(d * d + e * e), c = Z(e, d), ya(new la(U(b) * T(c / 2), U(b) * S(c / 2))))
            }
            function jb(a, b) {
                return ya(new la(a.Ri - b.Ri, a.Si - b.Si))
            }
            function kb() {
                return Aa(arguments, !0)
            }
            function lb() {
                return Aa(arguments, !1)
            }
            function mb(a) {
                var b, c = ["cup", "mmHg", "J", "sec", "cel", "kel", "hh", "Wh", "wh", "flb", "BTU"];
                for (b = 0; c[b].Ld; b++) if (0 === a.localeCompare(c[b].Ld)) return !1;
                return !0
            }
            function nb(a, b, c) {
                var d, e, f, g, h, i, j = 0,
                    k = 1;
                for (d = 0; a[d].Ld; d++) if (0 === c.localeCompare(a[d].Ld)) return j = a[d].Sk, {
                    Tk: !0,
                    Uk: k,
                    Vk: j
                };
                if (b) for (d = 0; b[d].Ld; d++) e = c.substr(0, 1).toLowerCase(), f = b[d].Ld.substr(0, 1).toLowerCase(), e === f && mb(c) && (k = b[d].Sk);
                for (d = 0; a[d].Ld; d++) if (g = P(a[d].Ld), h = c.substr(1, g), i = a[d].Ld.substr(0, g), h === i && mb(c)) return j = a[d].Sk, {
                    Tk: !0,
                    Uk: k,
                    Vk: j
                };
                return {
                    Tk: !1,
                    Uk: k,
                    Vk: j
                }
            }
            function ob(a, c, d) {
                var e, f, g, i, j, k, l, n, p, r, t, u, v, w, z, C, D;

                function E(a, b) {
                    return a === b
                }
                if (e = 273.15, !c || !d) return ba;
                if (f = E(c, "C") || E(c, "cel"), g = E(d, "C") || E(d, "cel"), i = E(c, "F") || E(c, "fah"), j = E(d, "F") || E(d, "fah"), k = E(c, "K") || E(c, "kel"), l = E(d, "K") || E(d, "kel"), f && g || i && j || k && l) return a;
                if (f && j) return 9 * a / 5 + 32;
                if (i && g) return 5 * (a - 32) / 9;
                if (i && l) return 5 * (a - 32) / 9 + e;
                if (k && j) return 9 * (a - e) / 5 + 32;
                if (f && l) return a + e;
                if (k && g) return a - e;
                for (n = [b, h, m, o, q, x, s, y, A, y], p = 0; p < P(n); p++) if (r = n[p], t = nb(r, B, c), u = t.Tk, v = t.Vk, w = t.Uk, t = nb(r, B, d), z = t.Tk, C = t.Uk, D = t.Vk, u && z && 0 !== v && 0 !== C) return a * w / v * D / C;
                return ba
            }
            function pb(a, b, c, d) {
                var e, f;
                if ("" === a && "" === b) return da;
                if (e = {
                        value: 0
                    }, f = {
                        value: 0
                    }, pa(a, e) === !0 && pa(b, f) === !0) {
                    if (a = e.value, b = f.value, a < 0 || a > na || a % 1 !== 0) return ca;
                    if ("bitOperator" === c) {
                        if (b < 0 || b > na || b % 1 !== 0) return ca
                    } else if ("shiftOperator" === c && 0 === a) return 0;
                    return d(a, b)
                }
                return da
            }
            function qb(a, b) {
                return pb(a, b, "bitOperator", function(a, b) {
                    return a & b
                })
            }
            function rb(a, b) {
                return pb(a, b, "bitOperator", function(a, b) {
                    return a | b
                })
            }
            function sb(a, b) {
                return pb(a, b, "bitOperator", function(a, b) {
                    return a ^ b
                })
            }
            function tb(a, b) {
                return pb(a, b, "shiftOperator", function(a, b) {
                    if (b >= 48) return ca;
                    if (b < 0 && a < 1 << -b) return 0;
                    var c = a << b;
                    return c > na ? ca : c
                })
            }
            function ub(a, b) {
                return pb(a, b, "shiftOperator", function(c, d) {
                    return d > 53 ? ca : b >= 0 ? a >> b : a << -b
                })
            }
            function vb(a, b) {
                if ("" === a) return ca;
                if (a === !0 || a === !1) return da;
                var c = ma(a);
                return c ? b(c) : ca
            }
            function wb(a) {
                return vb(a, function(a) {
                    return ya(Hb(a), a.lja())
                })
            }
            function xb(a) {
                return vb(a, function(a) {
                    return Ob(Eb(a), new la(0, 0)) ? ca : ya(Nb(Fb(a), Eb(a)), a.lja())
                })
            }
            function yb(a) {
                return vb(a, function(a) {
                    return Ob(a, new la(0, 0)) ? ca : ya(Jb(a), a.lja())
                })
            }
            function zb(a) {
                return vb(a, function(a) {
                    return Ob(Gb(a), new la(0, 0)) ? ca : ya(Kb(a), a.lja())
                })
            }
            function Ab(a) {
                return vb(a, function(a) {
                    return Ob(Fb(a), new la(0, 0)) ? ca : ya(Lb(a), a.lja())
                })
            }
            function Bb(a) {
                return vb(a, function(a) {
                    return Ob(Hb(a), new la(0, 0)) ? ca : ya(Mb(a), a.lja())
                })
            }
            function Cb(a) {
                return vb(a, function(a) {
                    return ya(Gb(a), a.lja())
                })
            }
            function Db(a) {
                return vb(a, function(a) {
                    return ya(Ib(a), a.lja())
                })
            }
            function Eb(a) {
                var b = a.Pi(),
                    c = a.Qi();
                return new la(S(b) * ka(c, !1), T(b) * ka(c, !0))
            }
            function Fb(a) {
                var b = a.Pi(),
                    c = a.Qi();
                return new la(T(b) * ka(c, !1), (-(S(b) * ka(c, !0))))
            }
            function Gb(a) {
                var b = a.Pi(),
                    c = a.Qi();
                return new la(ka(b, !0) * T(c), ka(b, !1) * S(c))
            }
            function Hb(a) {
                var b = a.Pi(),
                    c = a.Qi();
                return new la(ka(b, !1) * T(c), ka(b, !0) * S(c))
            }
            function Ib(a) {
                return Nb(Eb(a), Fb(a))
            }
            function Jb(a) {
                return Nb(oa, Eb(a))
            }
            function Kb(a) {
                return Nb(oa, Gb(a))
            }
            function Lb(a) {
                return Nb(oa, Fb(a))
            }
            function Mb(a) {
                return Nb(oa, Hb(a))
            }
            function Nb(a, b) {
                var c, d, e = a.Pi(),
                    f = a.Qi(),
                    g = b.Pi(),
                    h = b.Qi();
                return Math.abs(h) < Math.abs(g) ? (c = h / g, new la((e + f * c) / (g + h * c), (f - e * c) / (g + h * c))) : (d = g / h, new la((f + e * d) / (h + g * d), (-e + f * d) / (h + g * d)))
            }
            function Ob(a, b) {
                return a.Pi() === b.Pi() && a.Qi() === b.Qi()
            }
            C = {
                Hi: 0
            }, D = {
                Hi: 5
            }, E = {
                Hi: 5,
                aj: ["checkLength 10"]
            }, F = {
                Zi: !0,
                Hi: 2,
                _i: 1,
                aj: ["< 1", "> 10"]
            }, G = {
                Hi: 2,
                aj: "< 0"
            }, H = {
                Hi: 8
            }, I = {
                Hi: 8,
                Oi: !0
            }, J = [C, G], K = [{
                Hi: 0,
                aj: "<= 0"
            },
                G], L = [C,
                {
                    Hi: 0,
                    _i: 0
                }], M = [E, F], fa("BESSELI", Ba, 2, 2, J), fa("BESSELJ", Ca, 2, 2, J), fa("BESSELK", Da, 2, 2, K), fa("BESSELY", Ea, 2, 2, K), fa("BIN2DEC", Fa, 1, 1, E), fa("BIN2HEX", Ia, 1, 2, M, Q, Q, {
                bk: 1
            }), fa("BIN2OCT", Ja, 1, 2, M, Q, Q, {
                bk: 1
            }), fa("DEC2BIN", Ka, 1, 2, [{
                Hi: 0,
                aj: ["< -512", "> 511"]
            },
                F], Q, Q, {
                bk: 1
            }), fa("DEC2HEX", La, 1, 2, [{
                Hi: 0,
                aj: ["< -549755813888", "> 549755813887"]
            },
                F], Q, Q, {
                bk: 1
            }), fa("DEC2OCT", Ma, 1, 2, [{
                Hi: 0,
                aj: ["< -536870912", "> 536870911"]
            },
                F], Q, Q, {
                bk: 1
            }), fa("HEX2BIN", Na, 1, 2, M, Q, Q, {
                bk: 1
            }), fa("HEX2DEC", Ga, 1, 1, E), fa("HEX2OCT", Pa, 1, 2, M, Q, Q, {
                bk: 1
            }), fa("OCT2BIN", Oa, 1, 2, M, Q, Q, {
                bk: 1
            }), fa("OCT2DEC", Ha, 1, 1, E), fa("OCT2HEX", Qa, 1, 2, M, Q, Q, {
                bk: 1
            }), fa("ERF", Ra, 1, 2, [C,
                {
                    Zi: !0,
                    Hi: 0
                }], Q, Q, {
                bk: 1
            }), fa("ERF.PRECISE", Sa, 1, 1, C), fa("ERFC", Ta, 1, 1, C), fa("ERFC.PRECISE", Ta, 1, 1, C), fa("DELTA", Ua, 1, 2, L, Q, Q, {
                bk: 1
            }), fa("GESTEP", Va, 1, 2, L, Q, Q, {
                bk: 1
            }), fa("COMPLEX", Wa, 2, 3, [C, C,
                {
                    Hi: 5,
                    _i: "i"
                }], Q, Q, {
                bk: 2
            }), fa("IMABS", Xa, 1, 1, H), fa("IMAGINARY", Ya, 1, 1, H), fa("IMARGUMENT", Za, 1, 1, H), fa("IMCONJUGATE", $a, 1, 1, H), fa("IMCOS", _a, 1, 1, H), fa("IMDIV", ab, 2, 2, [H, I]), fa("IMEXP", bb, 1, 1, H), fa("IMLN", cb, 1, 1, I), fa("IMLOG10", db, 1, 1, I), fa("IMLOG2", eb, 1, 1, I), fa("IMREAL", gb, 1, 1, H), fa("IMSIN", hb, 1, 1, H), fa("IMSQRT", ib, 1, 1, H), fa("IMSUB", jb, 2, 2, [H, H]), fa("IMPOWER", fb, 2, 2, [H,
                {
                    Hi: 2
                }]), fa("IMPRODUCT", kb, 1, 255, Q, -1, -1), fa("IMSUM", lb, 1, 255, Q, -1, -1), fa("CONVERT", ob, 3, 3, [{
                Hi: 1
            },
                D, D]), fa("BITAND", qb, 0, 2), fa("BITLSHIFT", tb, 0, 2), fa("BITOR", rb, 0, 2), fa("BITRSHIFT", ub, 0, 2), fa("BITXOR", sb, 0, 2), fa("IMCOSH", wb, 1, 1), fa("IMCOT", xb, 1, 1), fa("IMCSC", yb, 1, 1), fa("IMCSCH", zb, 1, 1), fa("IMSEC", Ab, 1, 1), fa("IMSECH", Bb, 1, 1), fa("IMSINH", Cb, 1, 1), fa("IMTAN", Db, 1, 1), a.exports = ea
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H = c(26),
                I = c(33),
                J = isFinite,
                K = H.j,
                L = K.Ea,
                M = K.Ca,
                N = K.Fa,
                O = H.k.ac,
                P = I.Convert,
                Q = P.Rh,
                R = P.vf,
                S = P.Nh,
                T = P.Ph,
                U = P.Pa,
                V = P.CalcConvertedError,
                W = null,
                X = void 0,
                Y = Math.pow,
                Z = Math.abs,
                $ = Math.ceil,
                _ = Math.log,
                aa = Math.sqrt,
                ba = Math.floor,
                ca = Math.max,
                da = Math.min,
                ea = I.Errors,
                fa = ea.DivideByZero,
                ga = ea.Value,
                ha = ea.Number,
                ia = I.Functions,
                ja = ia.ak,
                ka = ia.Fk,
                la = ka.Ak,
                ma = ia.hk,
                na = ia.lk,
                oa = ia.nk,
                pa = ia.mk,
                qa = ia.pk,
                ra = ia.vk,
                sa = P.Th;

            function ta(a) {
                return a.getMonth()
            }
            function ua(a) {
                return a.getDate()
            }
            function va(a) {
                return a.getFullYear()
            }
            function wa(a) {
                return a instanceof Date ? H.l.Ra(a) : a
            }
            function xa(a, b, c) {
                var d = va(b) - va(a),
                    e = ta(b) - ta(a) + 12 * d,
                    f = ua(b) - ua(a),
                    g = -1;
                return 0 === c ? g = ia.uk(a, b) : L(c, [1, 2, 3]) >= 0 ? g = wa(b) - wa(a) : 4 === c && (g = 30 * e + f), g
            }
            function ya(a, b, c, d, e) {
                var f, g = Y(1 + a, b),
                    h = J(g) ? g : ha;
                return 0 === a ? b : (g = (g - 1) / a, f = J(g) ? g : ha, g = (-c * h - d) / ((1 + a * e) * f), J(g) ? g : ha)
            }
            function za(a, b, c, d) {
                var e = va(b),
                    f = ta(b),
                    g = ua(b),
                    h = new Date(1, 0, 1),
                    i = 0,
                    j = g === oa(e, f),
                    k = 12 / c,
                    l = e - va(a);
                h.setFullYear(1), l > 0 && (l = (l - 1) * c);
                do h = new Date(e, f, g), l++, h.setMonth(f - l * k), j && (i = oa(va(h), ta(h)), h = new Date(va(h), ta(h), i));
                while (pa(a, h) < 0);
                return d && (h = new Date(e, f, g), l--, h.setMonth(f - l * k), j && (i = oa(va(h), ta(h)), h = new Date(va(h), ta(h), i))), h
            }
            function Aa(a, b, c, d) {
                return qa(za(a, b, c, !1), a, d)
            }
            function Ba(a, b, c, d) {
                var e;
                return e = L(d, [0, 2, 4, 5]) >= 0 ? 360 / c : 3 === d ? 365 / c : qa(za(a, b, c, !1), za(a, b, c, !0), 1)
            }
            function Ca(a, b, c, d) {
                return qa(a, za(a, b, c, !0), d)
            }
            function Da(a, b, c) {
                var d = va(b),
                    e = ta(b),
                    f = ua(b),
                    g = new Date(d, e, f),
                    h = e - ta(a) + 12 * (d - va(a));
                if (g.setMonth(ta(g) - h), f === oa(d, e)) for (; ua(g) !== oa(va(g), ta(g));) g.setDate(ua(g) + 1);
                return ua(a) >= ua(g) && h--, parseInt("" + (1 + h / (12 / c)))
            }
            function Ea(a, b, c) {
                return b > 0 ? (c.Wk ? c.Xk ? Z(a - c.Yk) < Z(c.Zk - c.Yk) && (c.Zk = a, c.$k = b) : b < c.$k && (c.Zk = a, c.$k = b) : (c.Zk = a, c.$k = b, c.Wk = !0), [!1, c]) : b < 0 ? (c.Xk ? c.Wk ? Z(a - c.Zk) < Z(c.Zk - c.Yk) && (c.Yk = a, c._k = b) : -b < -c._k && (c.Yk = a, c._k = b) : (c.Yk = a, c._k = b, c.Xk = !0), [!1, c]) : (c.al = a, [!0, c])
            }
            function Fa(a, b, c, d, e) {
                var f, g = za(a, c, d, !0),
                    h = za(a, c, d, !1);
                if (pa(g, b) >= 0) return qa(a, b, e) / Ba(h, g, d, e);
                for (f = qa(a, g, e) / Ba(h, g, d, e);;) {
                    if (h = new Date(va(g), ta(g), ua(g)), g.setMonth(ta(g) + 12 / d), pa(g, b) >= 0) return f += qa(h, b, e) / Ba(h, g, d, e);
                    f += 1
                }
            }
            function Ga(a, b, c, d, e, f, g) {
                var h, i, j, k = Aa(a, b, f, g),
                    l = Ca(a, b, f, g),
                    m = Ba(a, b, f, g),
                    n = parseInt("" + Da(a, b, f)),
                    o = 0,
                    p = 100 * c / f,
                    q = 1 + d / f,
                    r = l / m;
                for (h = 0; h < n; h++) o += p / Y(q, r + h);
                return i = e / Y(q, n - 1 + l / m), j = k / m * p, i + o - j
            }
            function Ha(a, b, c, d, e, f, g, h, i) {
                var j, k, l, m, n, o, p = qa(h, a, g),
                    q = qa(a, i, g),
                    r = qa(h, i, g),
                    s = Ba(a, b, f, g),
                    t = parseInt("" + Da(a, b, f)),
                    u = 100 * c / f,
                    v = 1 + d / f;
                if (q > s) switch (g) {
                    case 0:
                    case 4:
                        j = qa(i, b, g), t = 1 + parseInt("" + $(j / s));
                        break;
                    default:
                        for (k = new Date(va(i), ta(i), ua(i)), t = 0; t < 32767; t++) if (l = new Date(va(k), ta(k), ua(k)), k.setMonth(ta(k) + 12 / f), pa(k, b) >= 0) {
                            t += parseInt("" + $(qa(l, b, g)) / Ba(l, k, f, g)) + 1;
                            break
                        }
                        p = s * Fa(h, a, i, f, g), q = s * Fa(a, i, i, f, g), r = s * Fa(h, i, i, f, g)
                }
                return m = e / Y(v, t - 1 + q / s), n = r / s / Y(v, q / s), o = Y(v, -q / s) * (Y(v, -t) - 1 / v) / (1 / v - 1), m + u * (n + o - p / s)
            }
            function Ia(a, b) {
                var c = a.substr(0, 3),
                    d = {
                        ATS: 13.7603,
                        BEF: 40.3399,
                        DEM: 1.95583,
                        ESP: 166.386,
                        EUR: 1,
                        FIM: 5.94573,
                        FRF: 6.55957,
                        GRD: 340.75,
                        IEP: .787564,
                        ITL: 1936.27,
                        LUX: 40.3399,
                        LUF: 40.3399,
                        NLG: 2.20371,
                        PTE: 200.482,
                        SIT: 245.18
                    };
                return d[c] ? la(d[c], b) : -1
            }
            function Ja(a, b, c, d, e) {
                var f, g = Y(1 + a, b);
                return 0 === a ? f = (c + d) / b : (f = d * a / (g - 1) + c * a / (1 - 1 / g), e > 0 && (f /= 1 + a)), -f
            }
            function Ka(a, b, c, d, e) {
                var f = Y(1 + a, b),
                    g = e > 0 ? 1 + a : 1;
                return -(0 === a ? d + c * b : d * f + c * g * (f - 1) / a)
            }
            function La(a, b, c, d, e, f, g) {
                if (f < e || f > c || 0 !== g && 1 !== g) return ha;
                var h = Ja(b, c, d, 0, g),
                    i = 0,
                    j, k;
                for (1 === e && (a && (i = h), g <= 0 && (i += a ? d * b : -d), e++), j = e; j <= f; j++) k = g > 0 ? Ka(b, j - 2, h, d, 1) - h : Ka(b, j - 1, h, d, 0), i += a ? h - k * b : k;
                return a ? i : i * b
            }
            function Ma(a, b, c, d) {
                var e = Y(1 + c, d),
                    f = -(a * e * c + b * (e - 1));
                return J(f) ? f : ha
            }
            function Na(a, b, c, d, e) {
                return L(d, [1, 2, 4]) < 0 || pa(b, c) >= 0 ? ha : a(b, c, d, e)
            }
            function Oa(a, b, c, d, e, f) {
                function g(a, b, c, d) {
                    var e = 0,
                        f, g = 0,
                        h = 100;
                    for (a *= h / U(c), b /= c, b++, f = 1; f < d; f++) e += f * a / Y(b, f);
                    for (e += d * (a + h) / Y(b, d), f = 1; f < d; f++) g += a / Y(b, f);
                    return g += (a + h) / Y(b, d), e /= g, e /= U(c)
                }
                if (L(f, [1, 2, 4]) < 0 || pa(b, c) > 0) return ha;
                var h = g(d, e, f, Da(b, c, f));
                return a ? h / (1 + e / f) : h
            }
            function Pa(a, b, c, d, e, f, g, h, i) {
                var j, k, l, m;
                if (L(g, [1, 2, 4]) < 0 || pa(b, c) > 0 || pa(d, b) > 0) return ha;
                j = new Date(va(d), ta(d), ua(d));
                do j.setMonth(ta(j) + 12 / g);
                while (pa(j, c) < 0);
                return k = Fa(d, b, j, g, h), l = Fa(d, c, j, g, h), m = Fa(b, c, j, g, h), a ? (f * g + 100 * e * (l - k * (1 + i * m / g))) / (i * m + g) : (g * (f - i) + 100 * e * (l - k)) / (m * i + 100 * e * k * m / g)
            }
            function Qa(a, b, c) {
                var d, e, f, g;
                return 0 === c ? fa : (d = b < 0 ? $(b) : ba(b), e = Y(10, $(ka.Ek(c, 10))), f = b - d, g = a ? f * e / c : f * c / e, S(d + g))
            }
            function Ra(a, b, c) {
                var d, e = O(b),
                    f = 0,
                    g = 1,
                    h = 1 / (a + 1);
                for (d = 0; d < e; d++) f += b[d] * g * (c ? -d : 1), g *= h;
                return f
            }
            function Sa(a, b, c, d) {
                var e, f, g = 0,
                    h = O(b);
                for (e = 0; e < h; e++) {
                    if (f = wa(d[e]) - wa(d[0]), f < 0) return [!1, c];
                    g += b[e] / ka.Ck(a, f / 365)
                }
                return J(g) ? c = isNaN(g) ? 5e-324 : g : g === Number.POSITIVE_INFINITY ? c = ma : g === Number.NEGATIVE_INFINITY && (c = -ma), [!0, c]
            }
            function Ta(a, b, c, d) {
                var e, f, g;
                return a > -1 && 0 !== a ? (e = c, f = Y(1 + a, e.bl - (d ? 1 : 0)), g = (Y(1 + a, e.bl) - 1) / a, b = d ? -e.cl * g / a + f * e.bl * (e.dl + e.cl * (e.Nc + 1 / a)) : e.dl * f + e.cl * (1 + a * e.Nc) * g + e.el, [!0, b, c]) : [!1, b, c]
            }
            function Ua(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) {
                var p, q, r, s, t = 0,
                    u = 0,
                    v = c - e,
                    w = c + e,
                    x = 2 === a;
                if (v < f.fl && (v = c), w > f.gl && (w = c), v === w) return x ? [!1, d, f, g] : [!1, d, f];
                if (0 === a ? (p = b(g, h, i, v, k, l, m, n, o) - j, q = b(g, h, i, w, k, l, m, n, o) - j) : 1 === a ? (p = b(v, g, t, h), q = b(w, g, u, h)) : (p = Ta(v, t, g), q = Ta(w, u, g)), M(p)) {
                    if (s = p[2], t = p[1], r = p[0], !r) return x ? [r, d, f, s] : [r, d, f]
                } else t = p;
                if (M(q)) {
                    if (s = q[2], u = q[1], r = q[0], !r) return x ? [r, d, f, s] : [r, d, f]
                } else u = q;
                return d = (u - t) / (w - v), x ? [!0, d, f, s] : [!0, d, f]
            }
            function Va(a, b, c, d, e, f, g, h, i, j, k, l, m) {
                var n, o;
                return d < c.fl || d > c.gl ? [!1, c] : (n = a ? Ra(d, e) : b(e, f, g, d, i, j, k, l, m) - h, o = Ea(d, n, c), c = o[1], [ !! o[0], c])
            }
            function Wa(a, b, c, d, e) {
                if (b < a.fl || b > a.gl) return [!1, a, d];
                var f = Sa(b, c, d, e);
                return d = f[1], f[0] ? (f = Ea(b, 0, a), a = f[1], [ !! f[0], a, d]) : [f[0], a, d]
            }
            function Xa(a, b, c) {
                var d, e, f = 0;
                return b < a.fl || b > a.gl ? [!1, a, c] : (d = Ta(b, f, c), c = d[2], f = d[1], d[0] ? (e = Ea(b, f, a), a = e[1], [ !! e[0], a, c]) : [d[0], a, c])
            }
            function Ya(a, b, c, d, e, f, g, h, i, j) {
                var k, l, m, n, o, p, q = 0,
                    r = a ? 15 : 2;
                if (!c.Wk || !c.Xk) return a ? [!1, c, d] : [!1, c];
                for (l = Z(c.Zk - c.Yk) / (Z(c.Zk) + Z(c.Yk)), k = 0; k < 100 + 4 * r; k++) if (m = 0, n = 0, o = k % 4 === 0 ? 1 : k % 4 === 2 ? 2 : 3, p = a ? bb(c, d, l, q, n, o) : b ? cb(!0, c, q, m, n, o, Sa, l, e, d, Ua) : cb(!1, c, q, m, n, o, Ga, l, f, g, h, d, e, i, j), c = p[1], d = p[2], q = a ? p[3] : p[2], p[0]) return a ? [!0, c, d] : [!0, c];
                return a ? [!1, c, d] : [!1, c]
            }
            function Za(a, b, c, d, e, f, g, h, i, j, k) {
                var l, m, n, o, p, q, r, s = 0,
                    t = a ? 15 : 2;
                if (!b.Wk || !b.Xk) return [!1, b];
                for (m = Z(b.Zk - b.Yk) / (Z(b.Zk) + Z(b.Yk)), l = 0; l < 100 + 4 * t; l++) if (n = 0, o = 0, p = l % 4 === 0 ? 1 : l % 4 === 2 ? 2 : 3, q = a ? cb(!0, b, s, n, o, p, Ra, m, X, c, Ua) : cb(!1, b, s, n, o, p, Ha, m, g, h, i, c, d, j, k, e, f), b = q[1], s = q[2], n = q[3], !(a && q[0] === W || !a && N(q[0]))) {
                    if (q[0]) return [!0, b];
                    if (o = a ? Ra(n, c) : Ha(c, d, g, n, i, j, k, e, f) - h, r = Ea(n, o, b), b = r[1], r[0]) return [!0, b];
                    if (m = Z(b.Zk - b.Yk) / (Z(b.Zk) + Z(b.Yk)), m < b.hl) return b._k < o && (o = b._k, n = b.Yk), b.$k < o && (n = b.Zk), b.al = n, [!0, b]
                }
                return [!1, b]
            }
            function $a(a, b, c, d, e, f, g, h, i, j, k, l, m) {
                var n, o, p, q, r, s, t, u, v, w, x = c.hl / 2;
                for (n = 0; n < 20; n++) {
                    if (d < c.fl || d > c.gl) return [!1, c];
                    if (q = a ? Sa(d, e, 0, f) : b(e, f, g, d, i, j, k, l, m) - h, M(q)) {
                        if (p = q[1], o = q[0], !o) return [o, c]
                    } else p = q;
                    if (r = Ea(d, p, c), c = r[1], r[0]) return [!0, c];
                    if (s = c.Xk && c.Wk ? Z(c.Zk - c.Yk) : c.gl - c.fl, t = (Z(d) < 1e-10 ? s : Z(d)) / 1e6, u = 0, r = a ? Ua(1, Sa, d, u, t, c, e, f) : Ua(0, b, d, u, t, c, e, f, g, h, i, j, k, l, m), c = r[2], u = r[1] < 0 ? r[1] : -r[1], o = r[0], !o) return [o, c];
                    if (0 === u) return [!1, c];
                    if (v = d - 1.000001 * p / u, v === d) return c.al = d, [!0, c];
                    if (w = Z(v - d) / (Z(d) + Z(v)), d = v, w < x) return c.al = d, [!0, c]
                }
                return [!1, c]
            }
            function _a(a, b, c) {
                var d, e, f, g, h, i, j = a.hl / 2;
                for (d = 0; d < 20; d++) {
                    if (c < a.fl || c > a.gl) return [!1, a];
                    if (g = Ra(c, b), i = Ea(c, g, a), a = i[1], i[0]) return [!0, a];
                    if (h = Ra(c, b, !0), 0 === h) return [!1, a];
                    if (e = c - 1.000001 * g / h, e === c) return a.al = c, [!0, a];
                    if (f = Z(e - c) / (Z(c) + Z(e)), c = e, f < j) return a.al = c, [!0, a]
                }
                return [!1, a]
            }
            function ab(a, b, c) {
                var d, e, f, g, h, i, j, k, l = a.hl / 2;
                for (d = 0; d < 100; d++) {
                    if (h = 0, i = 0, c < a.fl || c > a.gl) return [!1, a, b];
                    if (j = Ta(c, h, b), b = j[2], h = j[1], g = j[0], !g) return [g, a, b];
                    if (k = Ea(c, h, a), a = k[1], k[0]) return [!0, a, b];
                    if (j = Ta(c, i, b, !0), b = j[2], i = j[1], g = j[0], !g) return [g, a, b];
                    if (0 === i) return [!1, a, b];
                    if (e = c - 1.000001 * h / i, e === c) return a.al = c, [!0, a, b];
                    if (f = Z(e - c) / (Z(c) + Z(e)), c = e, f < l) return a.al = c, [!0, a, b]
                }
                return [!1, a, b]
            }
            function bb(a, b, c, d, e, f) {
                var g, h, i, j, k, l, m, n, o, p;
                if (1 === f) {
                    if (g = (a.Zk + a.Yk) / 2, j = Ta(g, e, b), b = j[2], e = j[1], h = j[0], !h) return [W, a, b, d];
                    if (0 === e) return a = Ea(g, e, a)[1], [!0, a, b, d];
                    if (i = aa(e * e - a.$k * a._k), 0 === i) return [W, a, b, d]
                } else if (2 === f) {
                    if (m = 0, n = 0, c > .1) return f = 3, bb(a, b, c, d, e, f);
                    if (o = d++ % 4, 0 === o) k = a.Zk, m = a.$k;
                    else if (2 === o) k = a.Yk, m = a._k;
                    else if (k = (a.Zk + a.Yk) / 2, j = Ta(k, m, b), b = j[2], m = j[1], h = j[0], !h) return [W, a, b, d];
                    if (l = Z(a.Zk - a.Yk) / 1e6, p = Ua(2, void 0, k, n, l, a, b), b = p[3], a = p[2], n = p[1], h = p[0], !h || 0 === n) return [W, a, b, d];
                    if (g = k - 1.01 * m / n, g < a.Zk && g < a.Yk || g > a.Zk && g > a.Yk) return [W, a, b, d]
                }
                return [!1, a, b, d]
            }
            function cb(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) {
                var r, s, t, u, v, w, x, y;
                switch (f) {
                    case 0:
                        d = b.Zk - b.$k * ((b.Yk - b.Zk) / (b._k - b.$k));
                        break;
                    case 1:
                        if (d = (b.Zk + b.Yk) / 2, r = a ? g(d, j, e, i) : g(l, m, i, d, k, n, o, p, q) - j, M(r)) {
                            if (e = r[1], !r[0]) return [W, b, c, d, e, f]
                        } else e = r;
                        if (0 === e) return b = Ea(d, e, b)[1], [!0, b, c, d, e, f];
                        if (s = aa(e * e - b.$k * b._k), 0 === s) return [W, b, c, d, e, f];
                        d += (d - b.Zk) * e / s;
                        break;
                    case 3:
                        d = (b.Zk + b.Yk) / 2;
                        break;
                    case 2:
                        if (u = 0, w = 0, h > .1) return f = 3, cb(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
                        if (x = c++ % 4, 0 === x) t = b.Zk, u = b.$k;
                        else if (2 === x) t = b.Yk, u = b._k;
                        else if (t = (b.Zk + b.Yk) / 2, r = a ? g(t, j, u, i) : g(l, m, i, t, k, n, o, p, q) - j, M(r)) {
                            if (u = r[1], !r[0]) return [W, b, c, d, e, f]
                        } else u = r;
                        if (v = Z(b.Zk - b.Yk) / 1e6, y = a ? k(1, g, t, w, v, b, j, i) : Ua(0, g, t, w, v, b, l, m, i, j, k, n, o, p, q), b = y[2], w = y[1], !y[0] || 0 === w) return [W, b, c, d, e, f];
                        if (d = t - 1.01 * u / w, d < b.Zk && d < b.Yk || d > b.Zk && d > b.Yk) return [W, b, c, d, e, f]
                }
                return [!1, b, c, d, e, f]
            }
            function db(a, b, c, d, e) {
                e = e ? 1 : 0;
                var f = Y(1 + a, b);
                return f = 0 === a ? c * b + d : d * f + c * (1 + a * e) * (f - 1) / a, S(-f)
            }
            function eb(a, b) {
                for (var c = 0; c < O(b); c++) b[c] !== V && (a *= 1 + b[c]);
                return a
            }
            function fb(a) {
                var b, c, d, e = arguments,
                    f = 0,
                    g = 1;
                for (c = 1; c < O(e); c++) {
                    if (d = T(e[c], 1, !0, !0, !1), d.isError) return d[0];
                    for (b = 0; b < O(d); b++) d[b] !== V && (f += d[b] / Y(1 + a, g++))
                }
                return f
            }
            function gb(a, b, c, d, e) {
                if (e = e ? 1 : 0, 0 === a) return S(-(c * b + d));
                var f = Y(1 + a, b);
                return a === -1 ? fa : S(-(d + c * (1 + a * e) * (f - 1) / a) / f)
            }
            function hb(a, b, c, d, e) {
                var f, g, h;
                return pa(a, b) >= 0 ? ha : (f = xa(a, b, e), g = na(a, e), f <= 0 || g <= 0 ? ha : (h = 1 - d * f / g, h <= 0 ? ha : c / h))
            }
            function ib(a, b, c) {
                var d = O(b),
                    e = O(c),
                    f = 0,
                    g;
                if (d !== e) return ha;
                for (g = 0; g < d; g++) f += b[g] / Y(1 + a, (c[g] - c[0]) / 365);
                return f
            }
            function jb(a, b, c, d, e, f) {
                return La(!1, a, b, c, d, e, f)
            }
            function kb(a, b, c, d, e, f) {
                return La(!0, a, b, c, d, e, f)
            }
            function lb(a, b, c, d, e, f) {
                if (b >= c + 1 || 0 !== f && 1 !== f) return ha;
                var g = ya(a, c, d, e, f);
                return Ma(d, g, a, b - 1)
            }
            function mb(a, b, c, d) {
                return S(d * a * (b / c - 1))
            }
            function nb(a, b, c, d, e) {
                e = e ? 1 : 0;
                var f = Y(1 + a, b);
                return f = 0 === a ? (c + d) / b : (c * f + d) / ((1 + a * e) * (f - 1) / a), S(-f)
            }
            function ob(a, b, c, d, e, f) {
                if (f = f ? 1 : 0, b >= c + 1) return ha;
                var g = ya(a, c, d, e, f);
                return g - Ma(d, g, a, b - 1)
            }
            function pb(a, b, c, d) {
                return Na(Aa, a, b, c, d)
            }
            function qb(a, b, c, d) {
                return Na(Ba, a, b, c, d)
            }
            function rb(a, b, c, d) {
                return Na(Ca, a, b, c, d)
            }
            function sb(a, b, c) {
                return wa(za(a, b, c, !0))
            }
            function tb(a, b, c) {
                return Na(sb, a, b, c)
            }
            function ub(a, b, c) {
                return Na(Da, a, b, c)
            }
            function vb(a, b, c) {
                return wa(za(a, b, c, !1))
            }
            function wb(a, b, c) {
                return Na(vb, a, b, c)
            }
            function xb(a, b, c, d, e) {
                return Oa(!1, a, b, c, d, e)
            }
            function yb(a, b, c, d, e) {
                return Oa(!0, a, b, c, d, e)
            }
            function zb(a, b, c, d, e) {
                return e = e ? 1 : 0, 0 === a ? 0 === b ? fa : S(-(c + d) / b) : S(_((b * (1 + a * e) - d * a) / (c * a + b * (1 + a * e))) / _(1 + a))
            }
            function Ab(a, b, c, d, e, f, g) {
                var h, i, j, k, l, m, n, o, p, q, r;
                if (L(f, [1, 2, 4]) < 0 || pa(a, b) > 0) return ha;
                if (h = Da(a, b, f), h <= 1) return i = Aa(a, b, f, g), j = Ca(a, b, f, g), k = Ba(a, b, f, g), l = f * k / j, m = e / 100 + c / f - (d / 100 + i / k * c / f), n = d / 100 + i / k * c / f, m / n * l;
                if (p = .1, q = {
                        fl: 0,
                        gl: 1e3,
                        hl: 1e-10,
                        Wk: !1,
                        Zk: 0,
                        $k: 0,
                        Xk: !1,
                        Yk: 0,
                        _k: 0,
                        al: 0
                    }, r = $a(!1, Ga, q, p, a, b, c, d, e, f, g), q = r[1], o = r[0], !o) {
                    for (p = 1e-10; p < q.gl; p *= 2) q = Va(!1, Ga, q, p, a, b, c, d, e, f, g)[1];
                    r = Ya(!1, !1, q, a, b, c, d, e, f, g), q = r[1], o = r[0]
                }
                return o ? q.al : ha
            }
            function Bb(a, b, c, d, e) {
                return pa(a, b) >= 0 ? ha : (d / c - 1) / ra(a, b, e)
            }
            function Cb(a, b, c, d, e, f) {
                var g = ra(c, b, f),
                    h = ra(c, a, f),
                    i = ra(a, b, f),
                    j = 1 + g * d;
                return j /= e / 100 + h * d, j--, j /= i
            }
            function Db(a, b, c, d, e, f, g) {
                function h(a, b, c, d, e, f, g) {
                    var h, i, j, k, l, m, n = 1 / f;
                    if (i = n < 3 ? 1 : n < 5 ? 1.5 : n <= 6 ? 2 : 2.5, f *= i, l = ra(b, c, g), R(l)) return 0;
                    for (j = ba(l * f * a + .5), a -= j, k = a - d, h = 0; h < e; h++) {
                        if (j = ba(f * a + .5), k -= j, k < 0) return m = e - h, 0 === m || 1 === m ? ba(.5 * a + .5) : 0;
                        a -= j
                    }
                    return j
                }
                var i = 1 / f;
                return i > 0 && i < 1 || i > 1 && i < 2 || i > 2 && i < 3 || i > 4 && i < 5 || pa(b, c) > 0 ? ha : h(a, b, c, d, e, f, g)
            }
            function Eb(a, b, c, d, e, f, g) {
                function h(a, b, c, d, e, f, g) {
                    var h, i, j, k, l = a * f,
                        m = a - d,
                        n = ra(b, c, g);
                    return R(n) ? 0 : (h = n * f * a, i = (a - d - h) / l, j = Q((a - d - h) / l), k = 0 === e ? h : e <= j ? l * (i < 1 ? i : 1) : e === j + 1 ? m - l * j - h : 0)
                }
                return pa(b, c) > 0 ? ha : h(a, b, c, d, e, f, g)
            }
            function Fb(a, b, c, d, e, f, g, h, i) {
                var j, k, l, m = .1;
                if (L(h, [1, 2, 4]) < 0 || pa(c, a) > 0 || pa(a, d) > 0 || pa(d, b) > 0) return ha;
                if (j = {
                        fl: 0,
                        gl: 1e3,
                        hl: 1e-10,
                        Wk: !1,
                        Zk: 0,
                        $k: 0,
                        Xk: !1,
                        Yk: 0,
                        _k: 0,
                        al: 0
                    }, k = $a(!1, Ha, j, m, a, b, e, f, g, h, i, c, d), j = k[1], l = k[0]) {
                    for (m = 1e-10; m < j.gl; m *= 2) j = Va(!1, Ha, j, m, a, b, e, f, g, h, i, c, d)[1];
                    k = Za(!1, j, a, b, c, d, e, f, g, h, i), j = k[1], l = k[0]
                }
                return l ? j.al : ha
            }
            function Gb(a, b, c, d, e, f, g, h) {
                return Pa(!1, a, b, c, d, f, g, h, e)
            }
            function Hb(a, b, c, d, e, f, g, h) {
                return Pa(!0, a, b, c, d, f, g, h, e)
            }
            function Ib(a, b, c) {
                var d, e, f = wa(b) - wa(a);
                return pa(a, b) >= 0 || f > 365 ? ha : (d = 365 * c, e = 360 - c * f, 0 === e ? fa : e < 0 ? ha : S(d / e))
            }
            function Jb(a, b, c) {
                var d = wa(b) - wa(a);
                return pa(a, b) >= 0 || d > 365 ? ha : (100 - c) / c * (360 / d)
            }
            function Kb(a, b) {
                var c, d, e, f, g, h = O(a),
                    i = [],
                    j = !1,
                    k = !1,
                    l = {
                        fl: -1,
                        gl: 1e10,
                        hl: 1e-10,
                        Wk: !1,
                        Zk: 0,
                        $k: 0,
                        Xk: !1,
                        Yk: 0,
                        _k: 0,
                        al: 0
                    };
                if (h < 2) return ha;
                for (Z(b) > 1 && (b = .1), l.gl = da(l.gl, Y(ma / 1e10, 1 / h) - 1), c = 0; c < h; c++) d = a[c], d !== V && (i[c] = d, d > 0 && (j = !0), d < 0 && (k = !0));
                if (!j || !k) return ha;
                if (e = _a(l, i, b), l = e[1], f = e[0], !f) {
                    for (g = 2;
                         (!l.Xk || !l.Wk) && g < 100; g *= 2) l = Va(!0, X, l, b * g, i)[1], l = Va(!0, X, l, b / g, i)[1];
                    e = Za(!0, l, i), l = e[1], f = e[0]
                }
                return f ? l.al : ha
            }
            function Lb(a, b, c) {
                var d, e, f, g, h = 0,
                    i = 0,
                    j = 0,
                    k = 0,
                    l = 0,
                    m = [],
                    n = O(a);
                if (n < 2) return fa;
                for (d = 0; d < n; d++) e = a[d], e !== V && (m[d] = e, e >= 0 ? h++ : i++);
                for (j = i + h, f = 0; f < j; f++) g = m[f], g >= 0 ? k += g / Y(1 + c, f) : l += g / Y(1 + b, f);
                return 0 === l || 0 === k || c <= -1 ? fa : Y(-k * Y(1 + c, j) / (l * (1 + c)), 1 / (j - 1)) - 1
            }
            function Mb(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n = O(a),
                    o = O(b);
                if (n !== o) return ha;
                for (f = 0; f < n; f++) d = a[f] > 0 || d, e = a[f] < 0 || e;
                if (!d || !e) return ha;
                if (g = {
                        fl: -1,
                        gl: 1e3,
                        hl: 1e-10,
                        Wk: !1,
                        Zk: 0,
                        $k: 0,
                        Xk: !1,
                        Yk: 0,
                        _k: 0,
                        al: 0
                    }, h = $a(!0, Ua, g, c, a, b), g = h[1], h[0]) return g.al;
                for (f = 1; f <= 1024; f += f) if (j = f, k = 9 / (j + 9), l = Wa(g, c, k, a, b), g = l[1], k = j, l = Wa(g, c, k, a, b), g = l[1], m = Ya(!1, !0, g, a, b), g = m[1], i = m[0]) return g.al;
                return ha
            }
            function Nb(a, b, c, d, e, f) {
                var g, h, i, j, k, l;
                if (e > 1 && (e = 1), g = {
                        hl: 1e-10,
                        Wk: !1,
                        Zk: 0,
                        $k: 0,
                        Xk: !1,
                        Yk: 0,
                        _k: 0,
                        al: 0
                    }, h = Y(1.7976931348623157e298, 1 / a), g.fl = ca(-1e10, -h + 1), g.gl = da(1e10, h - 1), i = {
                        bl: a,
                        cl: b,
                        dl: c,
                        el: d,
                        Nc: e
                    }, j = ab(g, i, f), i = j[2], g = j[1], k = j[0], !k) {
                    for (l = 2;
                         (!g.Xk || !g.Wk) && l < 100; l *= 2) j = Xa(g, f * l, i), i = j[2], g = j[1], j = Xa(g, f / l, i), i = j[2], g = j[1];
                    j = Ya(!0, !1, g, i), g = j[1], k = j[0]
                }
                return k ? g.al : ha
            }
            function Ob(a, b, c, d, e) {
                var f, g, h, i = e / c;
                return i >= 1 ? (i = 1, g = 1 === d ? a : 0) : g = a * Y(1 - i, d - 1), h = a * Y(1 - i, d), f = g - (h < b ? b : h), f < 0 ? 0 : f
            }
            function Pb(a, b, c, d, e, f) {
                var g, h, i, j = 0,
                    k = 0,
                    l = $(e),
                    m = l,
                    n = a - b,
                    o = !1;
                for (i = 1; i <= m; i++) o ? h = k : (g = Ob(a, b, c, i, f), k = n / (d - (i - 1)), k > g ? (h = k, o = !0) : (h = g, n -= g)), i === m && (h *= e + 1 - l), j += h;
                return j
            }
            function Qb(a, b, c, d, e, f, g) {
                var h, i, j, k, l = ba(d),
                    m = l,
                    n = $(e),
                    o = n,
                    p = 0;
                if (g) for (h = m + 1; h <= o; h++) i = Ob(a, b, c, h, f), h === m + 1 ? i *= da(e, l + 1) - d : h === o && (i *= e + 1 - n), p += i;
                else j = c, d !== ba(d) && f > 1 && d >= c / 2 && (k = d - c / 2, d = c / 2, e -= k, j += 1), a -= Pb(a, b, c, j, d, f), p = Pb(a, b, c, c - d, e - d, f);
                return p
            }
            function Rb(a, b, c, d, e, f, g) {
                return e < d ? ha : a < b && 0 === d && 1 === e ? a - b : Qb(a, b, c, d, e, f, g)
            }
            function Sb(a, b, c, d, e, f, g) {
                var h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z;
                if (L(f, [1, 2, 4]) < 0 || pa(a, c) >= 0) return ha;
                if (1 === f || 0 === g || 4 === g) return Tb(a, b, c, d, e, f, g);
                for (h = a.getFullYear(), i = a.getMonth(), j = a.getDate(), k = c.getFullYear(), l = c.getMonth(), m = c.getDate(), n = b.getMonth(), o = b.getDate(), p = [], q = [], r = [], s = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], t = 0; t < f; t++) p[t] = (n + 12 * t / f) % 12, q[t] = o <= s[p[t]] ? o : s[p[t]], 2 === g ? r[t] = 360 / f : 3 === g && (r[t] = 365 / f);
                for (t = 0; t < f; t++) u = t === f - 1 ? 0 : t + 1, v = p[u] > p[t] ? 2001 : 2002, r[t] = wa(new Date(v, p[u], q[u])) - wa(new Date(2001, p[t], q[t]));
                for (w = 0, x = wa(c); h < k || h === k && i < l || h === k && i === l && j < m;) {
                    for (t = 0; t < f && (i < p[t] || i === p[t] && j < q[t]) && (0 === t || p[t] > p[t - 1]);) t++;
                    for (; t < f && (i > p[t] || i === p[t] && j >= q[t]) && (t++, i !== p[t - 1] || j !== q[t - 1]););
                    t--, u = t === f - 1 ? 0 : t + 1, v = i + 12 / f >= 12 ? h + 1 : h, y = wa(new Date(h, i, j)), z = Math.min(wa(new Date(v, p[u], q[u])), x), w += e * d / f * (z - y) / r[t], h = v, i = p[u], j = q[u]
                }
                return w
            }
            function Tb(a, b, c, d, e, f, g) {
                var h = xa(a, c, g),
                    i = na(a, g);
                return h < 0 || i <= 0 ? ha : e * d * (h / i)
            }
            function Ub(a, b, c, d, e) {
                if (pa(a, b) > 0) return ha;
                var f = xa(a, b, e),
                    g = na(a, e);
                return f < 0 || g <= 0 ? ha : d * c * f / g
            }
            function Vb(a, b, c, d, e) {
                if (pa(a, b) >= 0) return ha;
                var f = na(a, e),
                    g = xa(a, b, e);
                return g <= 0 || f <= 0 ? ha : (d - c) / d * (f / g)
            }
            function Wb(a, b) {
                return Y(1 + a / b, b) - 1
            }
            function Xb(a, b, c, d, e) {
                if (pa(a, b) >= 0) return ha;
                var f = xa(a, b, e),
                    g = na(a, e);
                return f <= 0 || g <= 0 ? ha : (d - c) / c * (g / f)
            }
            function Yb(a, b) {
                return b * (Y(1 + a, 1 / b) - 1)
            }
            function Zb(a, b, c, d, e) {
                var f, g, h, i, j = c + (e < 12 ? 1 : 0);
                if (j < d) return ha;
                if (0 === a) return 0;
                for (f = la(1 - Y(b / a, 1 / c), 3), g = 0, h = 0, i = 1; i <= d; i++) h = 1 === i ? a * f * e / 12 : i === c + 1 ? (a - g) * f * (12 - e) / 12 : (a - g) * f, g += h;
                return h
            }
            function $b(a, b, c, d, e) {
                var f, g = 0,
                    h = 0;
                if (c < d) return ha;
                if (a <= b) return 0;
                for (f = 1; f <= d; f++) h = (a - g) * (e / c), h = da(h, a - g - b), g += h;
                return h
            }
            function _b(a, b, c) {
                return (a - b) / c
            }
            function ac(a, b, c, d) {
                return d > c ? ha : (a - b) * (c - d + 1) * 2 / (c * (c + 1))
            }
            function bc(a, b) {
                return Qa(!0, a, b)
            }
            function cc(a, b) {
                return Qa(!1, a, b)
            }
            function dc(a, b, c, d, e, f, g) {
                return L(f, [1, 2, 4]) < 0 || pa(a, b) > 0 ? ha : Ga(a, b, c, d, e, f, g)
            }
            function ec(a, b, c, d, e) {
                if (pa(a, b) >= 0) return ha;
                var f = xa(a, b, e),
                    g = na(a, e);
                return f <= 0 || g <= 0 ? ha : d - c * d * f / g
            }
            function fc(a, b, c, d, e, f) {
                var g, h, i, j, k;
                return pa(a, b) >= 0 ? ha : (g = xa(a, b, f), h = xa(c, b, f), i = xa(c, a, f), j = na(a, f), i <= 0 || j <= 0 || g <= 0 || h <= 0 ? ha : (k = 1 + g / j * e, 0 === k ? ha : (100 + h / j * d * 100) / k - i / j * d * 100))
            }
            function gc(a, b, c, d, e, f, g, h, i) {
                return L(h, [1, 2, 4]) < 0 || pa(c, a) > 0 || pa(a, d) > 0 || pa(d, b) > 0 ? ha : Ha(a, b, e, f, g, h, i, c, d)
            }
            function hc(a, b, c) {
                var d = wa(b) - wa(a);
                return pa(a, b) >= 0 || d > 365 ? ha : 100 * (1 - c * d / 360)
            }
            function ic(a) {
                var b = Ia(a, 2);
                return b >= 0 ? b : ha
            }
            function jc(a, b, c, d, e) {
                var f, g, h, i;

                function j(a) {
                    var b = a.substr(0, 3),
                        c = ["BEF", "LUF", "ESP", "ITL", "PTE", "GRD", "LUX"];
                    return L(b, c) >= 0 ? 0 : 2
                }
                function k(a) {
                    var b = a.substr(0, 3),
                        c = ["BEF", "LUF", "ESP", "ITL", "LUX"];
                    return L(b, c) >= 0 ? 0 : 2
                }
                return f = 0, d || (f = k(c)), e.$i || (e.Qb = j(b)), h = Ia(b, e.Qb), i = Ia(c, e.Qb), h >= 0 && i >= 0 ? (g = a * i / h, d || (g = la(g, f)), g) : ga
            }
            function kc(a, b, c, d) {
                var e, f, g;
                return "" === a && "" === b && "" === c ? ga : (e = {
                    value: 0
                }, a = sa(a, e), f = {
                    value: 0
                }, b = sa(b, f), g = {
                    value: 0
                }, c = sa(c, g), a === !0 && b === !0 && c === !0 ? d(e, f, g) : ga)
            }
            function lc(a, b, c) {
                return kc(a, b, c, function(a, b, c) {
                    var d, e;
                    return b.value > 0 && a.value > 0 && c.value > 0 ? (d = (Math.log(c.value) - Math.log(b.value)) / Math.log(1 + a.value), e = Math.abs(d), e <= 1.79769e308 ? e >= 2.2250738585072014e-308 ? d : 0 : fa) : ha
                })
            }
            function mc(a, b, c) {
                return kc(a, b, c, function(b, c, d) {
                    if (c.value > 0 && b.value > 0 && d.value >= 0) {
                        a = Math.pow(d.value / c.value, 1 / b.value) - 1;
                        var e = Math.abs(a);
                        if (e <= 1.79769e308) return e >= 2.2250738585072014e-308 ? a : 0
                    }
                    return ha
                })
            }
            b = {
                Hi: 0
            }, d = {
                _i: 0,
                Hi: 0
            }, e = {
                Hi: 0,
                aj: "<= 0"
            }, f = {
                Hi: 0,
                aj: "< 1"
            }, g = {
                Hi: 0,
                aj: "< 0"
            }, h = {
                _i: .1,
                Hi: 0
            }, i = {
                _i: 2,
                Hi: 0
            }, j = {
                Hi: 0,
                aj: "= 0"
            }, k = {
                _i: 1e3,
                Hi: 0,
                aj: "<= 0"
            }, l = {
                Hi: 6
            }, m = {
                Hi: 5
            }, n = {
                _i: !1,
                Hi: 7
            }, o = {
                Hi: 2
            }, p = {
                Hi: 2,
                aj: "<= 0"
            }, q = {
                Hi: 2,
                aj: "< 1"
            }, r = {
                _i: 0,
                Hi: 2
            }, s = {
                _i: 0,
                Hi: 2,
                aj: ["< 0", "> 4"]
            }, t = {
                _i: 0,
                Hi: 2,
                aj: ["< 0", "> 4", "= 2"]
            }, u = {
                Hi: 2,
                aj: "= 0",
                bj: fa
            }, v = {
                Hi: 2,
                aj: "< 0"
            }, w = {
                Hi: 4,
                Ii: 1,
                Ji: !0,
                Ki: !0
            }, x = {
                Hi: 4,
                Ii: 1,
                Ji: !0,
                Ki: !0,
                breakOnConvertError: !0
            }, y = [l, l, o, s], z = [l, l, b, b, o, s], A = [l, l, e], B = [b, l, l, b, o, e, t], C = [b, b, b, d, d], D = [l, l, e, e, s], E = [e, p, e, q, o, o], F = [e, q], G = [b, v], ja("FV", db, 3, 5, C, X, X, {
                bk: [3, 4]
            }), ja("FVSCHEDULE", eb, 2, 2, [b, w], 1, 1), ja("NPV", fb, 2, X, b, "> 0", "> 0"), ja("PV", gb, 3, 5, C, X, X, {
                bk: [3, 4]
            }), ja("RECEIVED", hb, 4, 5, D, X, X, {
                bk: 3
            }), ja("XNPV", ib, 3, 3, [b, x, x], "!= 0", "!= 0"), ja("CUMIPMT", jb, 6, 6, E), ja("CUMPRINC", kb, 6, 6, E), ja("IPMT", lb, 4, 6, [b, f, f, b, d, r], X, X, {
                bk: [4, 5]
            }), ja("ISPMT", mb, 4, 4, [b, o, u, b]), ja("PMT", nb, 3, 5, [b,
                {
                    Hi: 0,
                    aj: "= 0",
                    bj: fa
                },
                b, d, d], X, X, {
                bk: [3, 4]
            }), ja("PPMT", ob, 4, 6, [b, f, b, b, d, d], X, X, {
                bk: [4, 5]
            }), ja("COUPDAYBS", pb, 3, 4, y, X, X, {
                bk: 3
            }), ja("COUPDAYS", qb, 3, 4, y, X, X, {
                bk: 3
            }), ja("COUPDAYSNC", rb, 3, 4, y, X, X, {
                bk: 3
            }), ja("COUPNCD", tb, 3, 4, y, X, X, {
                bk: 3
            }), ja("COUPNUM", ub, 3, 4, y, X, X, {
                bk: 3
            }), ja("COUPPCD", wb, 3, 4, y, X, X, {
                bk: 3
            }), ja("DURATION", xb, 5, 6, z, X, X, {
                bk: 5
            }), ja("MDURATION", yb, 5, 6, z, X, X, {
                bk: 5
            }), ja("NPER", zb, 3, 5, [{
                Hi: 0,
                aj: "<= -1"
            },
                b, b, d, d], X, X, {
                bk: [3, 4]
            }), ja("YIELD", Ab, 6, 7, [l, l, g, g, e, o, s], X, X, {
                bk: 6
            }), ja("YIELDDISC", Bb, 4, 5, [l, l, e, e, s], X, X, {
                bk: 3
            }), ja("YIELDMAT", Cb, 5, 6, [l, l, l, g, b, s], X, X, {
                bk: 5
            }), ja("AMORDEGRC", Db, 6, 7, B, X, X, {
                bk: 6
            }), ja("AMORLINC", Eb, 6, 7, B, X, X, {
                bk: 6
            }), ja("ODDFYIELD", Fb, 8, 9, [l, l, l, l, g, e, e, o, s], X, X, {
                bk: 8
            }), ja("ODDLYIELD", Gb, 7, 8, [l, l, l, g, g, e, b, s], X, X, {
                bk: 7
            }), ja("ODDLPRICE", Hb, 7, 8, [l, l, l, g, g, e, o, s], X, X, {
                bk: 7
            }), ja("TBILLEQ", Ib, 3, 3, A), ja("TBILLYIELD", Jb, 3, 3, A), ja("IRR", Kb, 1, 2, [w, h], 0, 0, {
                bk: 1
            }), ja("MIRR", Lb, 3, 3, [w, b, b], 0, 0), ja("XIRR", Mb, 2, 3, [x,
                {
                    Hi: 4,
                    Ii: 4,
                    Ji: !0,
                    Ki: !0,
                    breakOnConvertError: !0
                },
                h], "!= 2", "!= 2", {
                bk: 2
            }), ja("RATE", Nb, 3, 6, [e, b, b, d,
                {
                    _i: 0,
                    Hi: 2,
                    aj: "< 0",
                    bj: ga
                },
                h], X, X, {
                bk: [3, 4, 5]
            }), ja("VDB", Rb, 5, 7, [g, g, v, g, g, i, n], X, X, {
                bk: [5, 6]
            }), ja("ACCRINT", Sb, 6, 8, [l, l, l, e, k, o, s], X, X, {
                bk: [4, 6, 7]
            }), ja("ACCRINTM", Ub, 3, 5, [l, l, e, k, s], X, X, {
                bk: [3, 4]
            }), ja("DISC", Vb, 4, 5, [l, l, e, e, s], X, X, {
                bk: 3
            }), ja("EFFECT", Wb, 2, 2, F), ja("INTRATE", Xb, 4, 5, D, X, X, {
                bk: 3
            }), ja("NOMINAL", Yb, 2, 2, F), ja("DB", Zb, 4, 5, [g, b, q, q,
                {
                    _i: 12,
                    Hi: 2,
                    aj: ["< 1", "> 12"]
                }], X, X, {
                bk: 3
            }), ja("DDB", $b, 4, 5, [g, b, p, p,
                {
                    _i: 2,
                    Hi: 0,
                    aj: "<= 0"
                }], X, X, {
                bk: 3
            }), ja("SLN", _b, 3, 3, [b, b, u]), ja("SYD", ac, 4, 4, [b, g, q, p]), ja("DOLLARDE", bc, 2, 2, G), ja("DOLLARFR", cc, 2, 2, G), ja("PRICE", dc, 6, 7, [l, l, g, g, j, o, s], X, X, {
                bk: 6
            }), ja("PRICEDISC", ec, 4, 5, D, X, X, {
                bk: 3
            }), ja("PRICEMAT", fc, 5, 6, [l, l, l, g, g, s], X, X, {
                bk: 5
            }), ja("ODDFPRICE", gc, 8, 9, [l, l, l, l, g, g, e, o, s], X, X, {
                bk: 8
            }), ja("TBILLPRICE", hc, 3, 3, [l, l, e]), ja("EURO", ic, 1, 1, m), ja("EUROCONVERT", jc, 3, 5, [b, m, m, n,
                {
                    Zi: !0,
                    Hi: 2,
                    _i: 3,
                    aj: "< 3",
                    bj: ga
                }], X, X, {
                bk: [3, 4]
            }), ja("PDURATION", lc, 3, 3), ja("RRI", mc, 3, 3), a.exports = ia
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p = c(26),
                q = c(33),
                r = null,
                s = void 0,
                t = p.q,
                u = p.j,
                v = p.l.lb,
                w = u.Ia,
                x = u.Fa,
                y = u.G,
                z = p.k.ac,
                A = q.Convert,
                B = A.vf,
                C = A.Rh,
                D = A.Sh,
                E = A.Na,
                F = A.Pa,
                G = A.bc,
                H = q.Errors,
                I = H.Value,
                J = H.Reference,
                K = H.NotAvailable,
                L = H.Null,
                M = q.Parser,
                N = q.CalcReference,
                O = q.CalcArrayHelper,
                P = q.Functions,
                Q = P.ak,
                R = P.ik,
                S = P.jk,
                T = function(a, b, c, d) {
                    return {
                        row: a,
                        col: b,
                        rowCount: c,
                        colCount: d
                    }
                };

            function U(a, b, c) {
                var d, e;
                return x(a) ? r : a.isArray || a.isReference ? (d = a.colCount, b > d && (e = b, b = c, c = e), a[c * d + b]) : a[0]
            }
            function V(a, b) {
                return !x(b) && ( !! ((x(a) || E(a, !0)) && E(b, !0) || R(a) && R(b)) || !(!S(a) || !S(b)))
            }
            function W(a, c, i, j, k) {
                if (a < 0 || c < 0 || c < a || i < a || i > c) return -1;
                if (k) return b = a, d = c, e = i, f = i, g = j, h = j, e;
                if (g) {
                    if (e++, e > d) {
                        if (g !== h) return -1;
                        e = f - 1, g = !1
                    }
                } else if (e--, e < b) {
                    if (g !== h) return -1;
                    e = f + 1, g = !0
                }
                return e
            }
            function X(a, b, c) {
                var d = v(a),
                    e = c;
                return d === b ? e = 0 : d > b ? e = 1 : d < b && (e = 2), e
            }
            function Y(a, b, c) {
                var d, e, f;
                return a === b ? 0 : S(a) ? b || 0 !== z("" + a) ? E(b) && !E(a) ? 1 : R(b) ? 2 : S(b) ? (d = c ? ("" + a).localeCompare("" + b) : a.toLowerCase().localeCompare(b.toLowerCase()), 0 === d ? 0 : d > 0 ? 1 : 2) : b instanceof Date ? X(a, b, 1) : -1 : 0 : S(b) ? a || 0 !== z("" + b) ? E(a) ? 2 : R(a) ? 1 : a instanceof Date ? X(a, b, 2) : -1 : 0 : R(a) && E(b) ? 1 : R(b) && E(a) ? 2 : (e = F(a), f = F(b), e === f ? 0 : e < f ? 2 : 1)
            }
            function Z(a, b, c) {
                var d = U(a, b, c);
                return x(d) ? 0 : d
            }
            function $(a, b, c, d) {
                var e, f, g, h, i = -1,
                    j = 0,
                    k = -1,
                    l = -1,
                    m = d ? b.rowCount : b.colCount;
                if (m--, m < j) return -1;
                for (; j <= m;) {
                    for (e = r, g = a[0], c >= 1 != (2 === i) && (k = l), l = C((j + m) / 2), l = W(j, m, l, c >= 0, !0), f = l; !V(g, e) && l !== -1 && (e = d ? U(b, 0, l) : U(b, l, 0), !V(g, e));) l = W(0, 0, 0, !1, !1), c >= 0 && l < f ? m = l : c < 0 && l > f && (j = l);
                    if (l === -1 && c >= 1 != (2 === i)) return k;
                    if (l === -1) return -1;
                    if (i = Y(g, e, !1), c >= 1 && 1 === i) j = l + 1;
                    else if (c >= 1 && 2 === i) m = l - 1;
                    else if (c <= -1 && 1 === i) m = l - 1;
                    else if (c <= -1 && 2 === i) j = l + 1;
                    else if (0 === i) {
                        for (; c <= -1 && l > j || c >= 0 && l < m;) {
                            if (h = 0, h = c >= 0 ? l + 1 : l - 1, e = d ? Z(b, 0, h) : Z(b, h, 0), null === e) return -1;
                            if (!V(g, e)) break;
                            if (i = Y(g, e, !1), 0 !== i) break;
                            l = h
                        }
                        return l
                    }
                }
                return c >= 1 != (2 === i) ? l : k
            }
            function _(a, b, c, d) {
                var e, f, g, h, i, j = r,
                    k = -1,
                    l = a[0],
                    m = S(l),
                    n = t.zb(l),
                    o = d ? b.rowCount : b.colCount;
                for (m && n && (g = t.sb(n)), f = 0; f < o; f++) if (h = d ? U(b, 0, f) : U(b, f, 0), V(l, h)) if (i = S(h), m && i && n ? (g.lastIndex = 0, e = g.test(h) ? 0 : 1) : e = Y(l, h, !1), c >= 1 && 1 === e) e = -1, k >= 0 && (e = Y(h, j, !1)), (k < 0 || k >= 0 && 1 === e) && (k = f, j = h);
                else if (c <= -1 && 2 === e) e = -1, k >= 0 && (e = Y(h, j, !1)), (k < 0 || k >= 0 && 2 === e) && (k = f, j = h);
                else if (0 === e) return f;
                return k
            }
            i = function(a) {
                y(b, a);

                function b(b, c, d, e, f, g) {
                    var h = this;
                    a.call(h, b, [T(c, d, e, f)]), h.cj = c, h.Lk = d, h.Xj = e, h.Yj = f, h.Nc = g
                }
                var c = {
                    type: function() {
                        return this.Nc
                    },
                    getValue: function(b, c, d) {
                        var e = this,
                            f = e.Nc,
                            g;
                        return g = 0 === f ? e.getRow(0) + 1 + c : 1 === f ? e.getColumn(0) + 1 + d : a.prototype.getValue.call(e, b, c, d)
                    },
                    toArray: function(b, c) {
                        var d = this,
                            e = [],
                            f = d.cj,
                            g = d.Lk,
                            h = d.Nc,
                            i = d.getRangeCount(),
                            j = d.Xj,
                            k = d.Yj,
                            l, m, n, o, p, q;
                        for (l = 0; l < i; l++) for (c || (n = [], e.push(n)), p = 0; p < j; p++) for (c || (o = [], n.push(o)), q = 0; q < k; q++) m = 0 === h ? f + 1 + p : 1 === h ? g + 1 + q : a.prototype.getValue.call(d, l, f + p, g + q), c ? e.push(m) : o.push(m);
                        return c || 1 !== i || (e = e[0]), e.rowCount = j, e.colCount = k, e.rangeCount = i, e
                    }
                };
                return w(b.prototype, c), b
            }(q.CalcReference), j = function(a) {
                y(b, a);

                function b(b) {
                    a.call(this), this.il = b
                }
                var c = {
                    getRowCount: function() {
                        return O.getColumnCount(this.il)
                    },
                    getColumnCount: function() {
                        return O.getRowCount(this.il)
                    },
                    getValue: function(a, b) {
                        return O.getValue(this.il, b, a)
                    }
                };
                return w(b.prototype, c), b
            }(q.CalcArray);

            function aa(a, b, c) {
                if (!a) return I;
                var d = a.arrayFormulaMode,
                    e = b !== s,
                    f = c ? 0 : 1;
                return b = e ? b : a.getReference(a.source, q.qf(a.row, a.column, a.rowCount, a.columnCount)), b && 1 === b.getRangeCount() ? d && e ? new i(b.getSource(), b.getRow(0), b.getColumn(0), b.getRowCount(0), 1, f) : (c ? b.getRow(0) : b.getColumn(0)) + 1 : I
            }
            function ba(a, b, c, d, e) {
                if (e && c > b.colCount || !e && c > b.rowCount) return J;
                var f = d ? $(a, b, 1, e) : _(a, b, 0, e);
                return f >= 0 ? e ? Z(b, c - 1, f) : Z(b, f, c - 1) : K
            }
            function ca(a, b) {
                return aa(a, b, !0)
            }
            function da(a, b) {
                return aa(a, b, !1)
            }
            function ea(a) {
                return O.getRowCount(a)
            }
            function fa(a) {
                return O.getColumnCount(a)
            }
            function ga(a) {
                return new j(a)
            }
            function ha(a, b, c, d) {
                return ba(a, b, c, d, !1)
            }
            function ia(a, b, c, d) {
                return ba(a, b, c, d, !0)
            }
            function ja(a, b, c) {
                var d, e, f, g, h, i, j, k = [];
                if (b) for (d = 0; d < b.length; d++) x(b[d]) || k.push(b[d]);
                if (b.colCount <= b.rowCount ? (k.colCount = b.colCount, k.rowCount = Math.ceil(k.length / k.colCount)) : (k.rowCount = b.rowCount, k.colCount = Math.ceil(k.length / k.rowCount)), k.isReference = b.isReference, k.rangeCount = b.rangeCount, e = -1, g = k.colCount, h = k.rowCount, i = a, c === s) return j = g > h ? ha(i, k, h, !0) : ia(i, k, g, !0), B(j) ? K : j;
                if (f = A.Ph(c, 0, !0, !1, !1)) {
                    if (f.colCount > 1 && f.rowCount > 1) return K
                } else f = k;
                return e = $(i, k, 1, !(g > h)), e >= 0 ? (g = f.colCount, h = f.rowCount, g > h ? Z(f, e, h - 1) : Z(f, g - 1, e)) : K
            }
            function ka(a) {
                var b = arguments;
                return a < 1 || z(b) <= a ? I : x(b[a]) ? 0 : b[a]
            }
            function la(a, b, c) {
                var d, e, f, g, h;

                function i(a, b) {
                    var c, d, e, f, g;
                    if (!b) for (c = z(a), d = 1; d < c; d++) if (e = a[d - 1], f = a[d], g = Y(e, f, !1), 2 === g) return !1;
                    return !0
                }
                return d = a, e = b, e.isArray || e.isReference ? (f = e.colCount, g = e.rowCount, h = -1, f > 1 && g > 1 ? K : 1 === c && !i(e, !0) || c === -1 && !i(e, !1) ? K : (1 === c ? h = $(d, e, 1, g > 1) : 0 === c ? h = _(d, e, 0, g > 1) : c === -1 && (h = $(d, e, -1, g > 1)), h === -1 ? K : h + 1)) : K
            }
            function ma(a, b, c, d) {
                return a += b, d ? 0 !== c && (a += "[", a += "" + c, a += "]") : a += c, a
            }
            function na(a, b, c) {
                return c || (a += "$"), a += b
            }
            function oa(a, b, c) {
                c || (a += "$");
                for (var d = a.length; b > .1; b = parseInt((b - 1) / 26), 10) a = p.u.Eb(a, d, String.fromCharCode("A".charCodeAt(0) + (b - 1) % 26));
                return a
            }
            function pa(a, b) {
                if (b && 0 < z(b)) {
                    var c, d = !q.ei(b[0]) && "_" !== b[0];
                    for (c = 1; !d && c < z(b); c++) d = !q.fi(b[c]) && "_" !== b[c];
                    d ? (a += "'", a += b.replace("'", "''"), a += "'") : a += b, a += "!"
                }
                return a
            }
            function qa(a, b, c, d, e) {
                var f = 3 === c || 4 === c || 7 === c || 8 === c,
                    g = 2 === c || 4 === c || 6 === c || 8 === c,
                    h = "";
                return a < 1 && (d || !f) || a > q.maxRowCount || b < 1 && (d || !g) || b > q.maxColumnCount || c < 1 || 8 < c ? I : (h = pa(h, e), d ? (h = oa(h, b, g), h = na(h, a, f)) : (h = ma(h, "R", a, f), h = ma(h, "C", b, g)), h)
            }
            function ra(a, b, c, d, e) {
                var f, g, h, i, j, k, l, m, n, o, p, t, u, v;

                function w(a) {
                    return !x(a) && !a._error
                }
                return f = a instanceof q.EvaluateContext ? a : s, g = f !== r && f.acceptsReference, b instanceof N ? (h = {
                    value: -1
                }, i = b, j = i.getRowCount(0), k = i.getColumnCount(0), l = i.getRow(0), m = i.getColumn(0), 3 === z(arguments) ? 1 !== i.getRangeCount() || 1 !== j && 1 !== k ? J : (p = w(c) && D(c, h) ? h.value : 0, 0 !== p || g || f === r || (p = j > 0 ? f.rowOffset : f.columnOffset), p < 0 ? I : j * k < p ? J : 0 === p ? i.create([T(l, m, j, k)]) : (n = Math.floor((p - 1) / k) + l, o = (p - 1) % k + m, i.create([T(n, o, 1, 1)]))) : (c = w(c) && D(c, h) ? h.value - 1 : -1, d = w(d) && D(d, h) ? h.value - 1 : -1, e = w(e) && D(e, h) ? h.value - 1 : 0, e >= i.getRangeCount() ? J : (j = i.getRowCount(e), k = i.getColumnCount(e), t = i.getRow(e), u = i.getColumn(e), c === -1 && !g && j > 1 && f !== r && (c = f.rowOffset), d === -1 && !g && k > 1 && f !== r && (d = f.columnOffset), n = c + t, o = d + u, c < -1 || d < -1 || e < 0 ? I : j <= c || k <= d || i.getRangeCount() <= e ? J : c === -1 && d === -1 ? i.create([T(t, u, j, k)]) : c === -1 ? i.create([T(t, o, j, 1)]) : d === -1 ? i.create([T(n, u, 1, k)]) : i.create([T(n, o, 1, 1)])))) : A.Ca(b) ? (v = b, j = v.getRowCount(), c = c !== s ? C(c) : -1, d = d !== s ? C(d) : -1, e = e !== s ? C(e) - 1 : 1, 1 !== e ? J : (c === -1 && d === -1 ? c = d = 0 : d === -1 && 1 === j && (d = c, c = 1), c = c === -1 ? 0 : c, d = d === -1 ? 0 : d, j = v.getRowCount(), k = v.getColumnCount(), c < 0 || d < 0 || e < 0 ? I : (c > j && 1 === j && d === s && (d = c, c = 0), j < c || k < d ? J : 0 === c && 0 === d ? v.slice(0, 0, j, k) : 0 === c ? v.slice(0, d - 1, j, 1) : 0 === d ? v.slice(c - 1, 0, 1, k) : v.getValue(c - 1, d - 1)))) : void 0
            }
            function sa(a, b, c, d, e) {
                var f, g;
                return a && a instanceof N && 1 === a.getRangeCount() ? (d = d !== s ? C(d) : a.getRowCount(0), e = e !== s ? C(e) : a.getColumnCount(0), f = a.getRow(0) + b, g = a.getColumn(0) + c, d <= 0 || e <= 0 || f < 0 || g < 0 ? J : a.create([{
                    row: f,
                    col: g,
                    rowCount: d,
                    colCount: e
                }])) : I
            }
            function ta(a, b, c) {
                var d, e, f, g, h, i, j, k;
                return a ? b ? (d = a.row, e = a.column, f = new M, g = q.pf(d, e), h = a.source ? a.source.getParserContext(!c, g) : new q.ParserContext(a.source, (!c), g), h.onlyValidateSourceNameWithSpecial = !0, i = f.parse(h, b), i ? (8 === i.type && (i.source ? (j = i.source, i = j.getCustomName(i.value)) : i = a.getName(i.value)), !i || u.Ea(i.type, [1, 13]) < 0 ? J : (j = i.source || a.source, 25 === i.type || 26 === i.type ? j.getValueByName(i.nameIdentity) : (k = i.getRange(d, e), 13 === i.type && (j = i.source()), 1 !== k.rowCount || 1 !== k.colCount || a.acceptsReference || a.arrayFormulaMode ? j.getReference(k) : j.getValue(k.row, k.col)))) : J) : J : K
            }
            function ua(a, b) {
                return G(2 === arguments.length ? b : a)
            }
            function va() {
                var a, b = 0;
                for (a = 0; a < z(arguments); a++) {
                    if (0 === arguments[a].length) return L;
                    arguments[a].isReference && (b += arguments[a].rangeCount)
                }
                return b
            }
            function wa(a, b) {
                var c = b.getRow(0),
                    d = b.getColumn(0),
                    e = a.source.getCalcSourceModel().getFormula(c, d);
                return e ? "=" + e : K
            }
            function xa(a, b) {
                var c = b.getRow(0),
                    d = b.getColumn(0),
                    e = a.source.getCalcSourceModel().getFormula(c, d);
                return !!e
            }
            k = {
                _i: !0,
                Hi: 7
            }, l = {
                Hi: 2
            }, m = {
                _i: 1,
                Hi: 2
            }, n = {
                Hi: 2,
                aj: "<= 0",
                bj: I
            }, o = {
                Hi: 4,
                Ii: 0,
                Ji: !0
            }, Q("ADDRESS", qa, 2, 5, [l, l, m, k,
                {
                    _i: "",
                    Hi: 5
                }], s, s, {
                bk: [2, 3, 4]
            }), Q("INDEX", ra, 2, 4, s, 0, 0, {
                bk: [1, 2, 3],
                dk: !0,
                fk: 3
            }), Q("OFFSET", sa, 3, 5, [{},
                l, l], 0, 0, {
                bk: [3, 4],
                ck: !0,
                fk: 2,
                returnReference: !0
            }), Q("ROW", ca, 0, 1, s, -1, s, {
                dk: !0,
                ek: -1,
                expandColumns: -1
            }), Q("COLUMN", da, 0, 1, s, -1, s, {
                bk: 0,
                dk: !0,
                ek: -1,
                expandRows: -1
            }), Q("ROWS", ea, 1, 1, s, -1, -1, {
                ek: -1,
                expandColumns: -1,
                ck: !0
            }), Q("COLUMNS", fa, 1, 1, s, -1, -1, {
                ek: -1,
                expandRows: -1,
                ck: !0
            }), Q("TRANSPOSE", ga, 1, 1, s, -1, -1), Q("LOOKUP", ja, 2, 3, [o,
                {
                    Hi: 4,
                    Ii: 0,
                    Ji: !0,
                    xTa: !0
                }], "!= 0", "!= 0", {
                fk: 1
            }), Q("HLOOKUP", ha, 3, 4, [o, o, n, k], 1, 1, {
                bk: 3
            }), Q("VLOOKUP", ia, 3, 4, [o, o, n, k], 1, 1, {
                bk: 3
            }), Q("CHOOSE", ka, 2, 255, l, ">= 1", ">= 1", {
                gk: ">= 1",
                isBranch: !0,
                findTestArgument: 0,
                findBranchArgument: function(a) {
                    var b = {
                        value: -1
                    };
                    return B(a) ? -1 : (D(a, b), b.value)
                }
            }), Q("MATCH", la, 2, 3, [o, o, m], 1, 1, {
                bk: 2
            }), Q("INDIRECT", ta, 1, 2, [{
                Hi: 5
            },
                k], s, s, {
                bk: 2,
                ck: !0,
                dk: !0
            }), Q("HYPERLINK", ua, 1, 2), Q("AREAS", va, 1, s, {
                Hi: 4,
                Ji: !0,
                Ki: !0,
                Xi: !0
            }, -1, -1), Q("FORMULATEXT", wa, 1, 1, s, -1, s, {
                dk: !0
            }), Q("ISFORMULA", xa, 1, 1, s, -1, s, {
                dk: !0
            }), a.exports = P
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, aa, ba, ca = c(26),
                da = c(33),
                ea = da.Functions,
                fa = ca.k.ac,
                ga = null,
                ha = void 0,
                ia = isNaN,
                ja = isFinite,
                ka = parseInt,
                la = Math.pow,
                ma = Math.max,
                na = Math.min,
                oa = Math.floor,
                pa = Math.sin,
                qa = Math.tan,
                ra = Math.PI,
                sa = Math.atan,
                ta = Math.exp,
                ua = Math.abs,
                va = Math.sqrt,
                wa = Math.log,
                xa = Math.round,
                ya = da.Errors,
                za = ya.DivideByZero,
                Aa = ya.Value,
                Ba = ya.NotAvailable,
                Ca = ya.Number,
                Da = ya.Null,
                Ea = da.CalcArray,
                Fa = da.Convert,
                Ga = Fa.Nh,
                Ha = Fa.Ph,
                Ia = Fa.Rh,
                Ja = Fa.Pa,
                Ka = ea.Fk,
                La = Ka.Bk,
                Ma = Ka.xk,
                Na = Fa.Na,
                Oa = Fa.vf,
                Pa = ea.rk,
                Qa = ea.sk,
                Ra = ea.sja,
                Sa = ea.qk,
                Ta = ea.ik,
                Ua = ea.jk,
                Va = ea.Na,
                Wa = ea.hk,
                Xa = Fa.CalcConvertedError,
                Ya = ea.ak,
                Za = Fa.Th,
                $a = Fa.Sh;

            function _a(a) {
                var b, c = 0;
                for (b = 0; b < a.length; b++) a[b] !== Xa && c++;
                return c
            }
            function ab(a) {
                var b, c, d, e = 6;
                return 0 === a ? c = 0 : (b = .5 * Math.abs(a), b >= .5 * e ? c = 1 : b < 1 ? (d = b * b, c = ((((((((.000124818987 * d - .001075204047) * d + .005198775019) * d - .019198292004) * d + .059054035642) * d - .151968751364) * d + .319152932694) * d - .5319230073) * d + .797884560593) * b * 2) : (b -= 2, c = (((((((((((((-45255659e-12 * b + .00015252929) * b - 19538132e-12) * b - .000676904986) * b + .001390604284) * b - .00079462082) * b - .002034254874) * b + .006549791214) * b - .010557625006) * b + .011630447319) * b - .009279453341) * b + .005353579108) * b - .002141268741) * b + .000535310849) * b + .999936657524)), a > 0 ? .5 * (c + 1) : .5 * (1 - c)
            }
            function bb(a, b, c) {
                var d, e, f, g, h, i = fa(a);
                if (b !== a[0]) {
                    for (f = 0, g = a[0], e = 1; e < i && a[e] < b; e++) a[e] !== g && (f = e, g = a[e]);
                    a[e] !== g && (f = e), b === a[e] ? d = c ? f / (i - 1) : (e + 1) / (i + 1) : 0 === f ? d = 0 : (h = (b - a[f - 1]) / (a[f] - a[f - 1]), d = c ? (f - 1 + h) / (i - 1) : (f + h) / (i + 1))
                } else d = c ? 0 : 1 / (i + 1);
                return d
            }
            function cb(a, b, c, d) {
                var e, f, g = [];
                return ub(a, g), e = fa(g), 0 === e || b < g[0] || b > g[e - 1] ? Ba : (f = 1 === e ? 1 : bb(g, b, d), 0 !== f ? xa(f * la(10, c)) / la(10, c) : f)
            }
            function db(a, b, c) {
                var d, e, f, g, h, i = 300,
                    j = 1e-50,
                    k = 1e-20,
                    l = a + b,
                    m = a + 1,
                    n = a - 1,
                    o = 1,
                    p = 1 - l * c / m;
                for (ua(p) < j && (p = j), p = 1 / p, f = p, d = 1; d <= i && (e = d + d, g = (b - d) * d * c / ((n + e) * (a + e)), p = 1 + g * p, ua(p) < j && (p = j), o = 1 + g / o, ua(o) < j && (o = j), p = 1 / p, f *= p * o, g = 0 - (a + d) * (l + d) * c / ((a + e) * (m + e)), p = 1 + g * p, ua(p) < j && (p = j), o = 1 + g / o, ua(o) < j && (o = j), p = 1 / p, h = p * o, f *= h, !(ua(h - 1) < k)); d++);
                return f
            }
            function eb(a) {
                var b = [2.2250738585072014e-308, 1.7976931348623157e308, la(2, -53), la(2, -52), Ka.Ek(2, 10)];
                return b[a - 1] || 0
            }
            function fb(a, b, c) {
                var d = 0,
                    e = 0,
                    f;
                if (b < 1) return 0;
                for (f = 1; f <= b; f++) if (d = b - f, e += ua(Ja(a[d])), e > c) return d;
                return d
            }
            function gb(a, b, c) {
                var d, e, f, g, h;
                if (c < 1 || c > 1e3 || a < -1.1 || a > 1.1) return NaN;
                for (g = 2 * a, f = e = 0, d = 0, h = 1; h <= c; h++) f = e, e = d, d = g * e - f + Ja(b[c - h]);
                return .5 * (d - f)
            }
            function hb(a) {
                var b, c = [.16663894804518634, -1384948176067564e-20, 9.81082564692473e-9, -1.809129475572494e-11, 6.221098041892606e-14, -3.399615005417722e-16, 2.683181998482699e-18, -2.868042435334643e-20, 3.9628370610464347e-22, -6.831888753985767e-24, 1.4292273559424982e-25, -3.5475981581010704e-27, 1.025680058010471e-28, -3.401102254316749e-30, 1.276642195630063e-31],
                    d = fb(c, 15, eb(3)),
                    e = 1 / va(eb(3)),
                    f = ta(na(wa(eb(2) / 12), -wa(12 * eb(1))));
                return a < 10 ? NaN : a >= f ? 4.930380657631324e-32 : a < e ? (b = 10 / a, gb(b * b * 2 - 1, c, d) / a) : 1 / (12 * a)
            }
            function ib(a) {
                var b = [1.037869356274377, -.13364301504908918, .019408249135520562, -.0030107551127535777, .0004869461479715485, -8105488189317536e-20, 13778847799559525e-21, -2380221089435897e-21, 4.1640416213865184e-7, -7.359582837807599e-8, 1.3117611876241675e-8, -2.3546709317742423e-9, 4.2522773276035e-10, -7.71908941348408e-11, 1.407574648135907e-11, -2.5769072058024682e-12, 4.734240666629442e-13, -8.724901267474264e-14, 1.612461490274055e-14, -2.9875652015665774e-15, 5.548070120908289e-16, -1.0324619158271569e-16, 1.9250239203049852e-17, -3.595507346526515e-18, 6.726454253787686e-19, -1.260262416873522e-19, 2.364488440860621e-20, -4.4419377050807936e-21, 8.354659446403425e-22, -1.5731559416479563e-22, 2.9653128740247425e-23, -5.594958348181595e-24, 1.056635426883568e-24, -1.9972483680670205e-25, 3.778297781883936e-26, -7.153158688908174e-27, 1.3552488463674214e-27, -2.5694673048487566e-28, 4.8747756066216946e-29, -9.254211253084972e-30, 1.757859784176024e-30, -3.341002667773101e-31, 6.353393618023618e-32],
                    c = fb(b, 43, .1 * eb(3));
                return a <= -1 ? NaN : ua(a) <= .375 ? a * (1 - a * gb(a / .375, b, c)) : wa(a + 1)
            }
            function jb(a) {
                var b, c, d, e, f, g, h = 1,
                    i = [1, .5772156649015329, -.6558780715202538, -.0420026350340952, .1665386113822915, -.0421977345555443, -.009621971527877, .007218943246663, -.0011651675918591, -.0002152416741149, .0001280502823882, -201348547807e-16, -12504934821e-16, 1133027232e-15, -2.056338417e-7, 6.116095e-9, 5.0020075e-9, -1.1812746e-9, 1.043427e-10, 7.7823e-12, -3.6968e-12, 5.1e-13, -2.06e-14, -5.4e-15, 1.4e-15];
                if (a > 171) return 1e308;
                if (a === Ia(a)) if (a > 0) for (e = 1, b = 2; b < a; b++) e *= b;
                else e = 1e308;
                else {
                    if (ua(a) > 1) {
                        for (g = ua(a), d = Ia(g), h = 1, c = 1; c <= d; c++) h *= g - c;
                        g -= d
                    } else g = a;
                    for (f = i[24], c = 23; c >= 0; c--) f = f * g + i[c];
                    e = 1 / (f * g), ua(a) > 1 && (e *= h, a < 0 && (e = -ra / (a * e * pa(ra * a))))
                }
                return e
            }
            function kb(a) {
                var b, c, d, e, f, g = 0,
                    h = [.08333333333333333, -.002777777777777778, .0007936507936507937, -.0005952380952380952, .0008417508417508418, -.001917526917526918, .00641025641025641, -.02955065359477124, .1796443723688307, -1.3924322169059],
                    i = a;
                if (a <= 0) return 1e308;
                if (1 === a || 2 === a) return 0;
                for (a <= 7 && (g = Ia(7 - a), i = a + g), b = 1 / (i * i), c = 2 * ra, e = h[9], f = 8; f >= 0; f--) e = e * b + h[f];
                if (d = e / i + .5 * wa(c) + (i - .5) * wa(i) - i, a <= 7) for (f = 1; f <= g; f++) d -= wa(i - 1), i -= 1;
                return d
            }
            function lb(a, b) {
                var c, d, e, f = d = a;
                return b < f && (f = b), b > d && (d = b), f < 0 ? NaN : 0 === f ? Wa : f >= 10 ? (c = hb(f) + hb(d) - hb(f + d), wa(d) * -.5 + .9189385332046728 + c + (f - .5) * wa(f / (f + d)) + d * ib(-f / (f + d))) : d >= 10 ? (c = hb(d) - hb(f + d), e = pd(f), Oa(e) ? NaN : Ja(e) + c + f - f * wa(f + d) + (d - .5) * ib(-f / (f + d))) : wa(jb(f) * (jb(d) / jb(f + d)))
            }
            function mb(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n, o = eb(3),
                    p = wa(o),
                    q = eb(1),
                    r = wa(q),
                    s = a,
                    t = b,
                    u = c;
                if (t / (t + u) < a && (s = 1 - s, t = c, u = b), (t + u) * s / (t + 1) < o) d = 0, j = t * wa(ma(s, q)) - wa(t) - lb(t, u), j > r && 0 !== s && (d = ta(j)), s === a && t === b || (d = 1 - d);
                else {
                    if (g = u - oa(u), 0 === g && (g = 1), j = t * wa(s) - lb(g, t) - wa(t), d = 0, j >= r && (d = ta(j), i = d * t, 1 !== g)) for (l = Ia(ma(p / wa(s), 4)), m = 1; m <= l; m++) k = m, i = i * (k - g) * s / k, d += i / (t + k);
                    if (u > 1) {
                        for (j = t * wa(s) + u * wa(1 - s) - lb(t, u) - wa(u), n = Ia(ma(j / r, 0)), i = ta(j - n * r), e = 1 / (1 - s), h = u * e / (t + u - 1), f = 0, l = Ia(u), u === l && (l -= 1), m = 1; m <= l && !(h <= 1 && i / o <= f); m++) k = m, i = (u - k + 1) * e * i / (t + u - k), i > 1 && (n -= 1, i *= q), 0 === n && (f += i);
                        d += f
                    }
                    s === a && t === b || (d = 1 - d), d = ma(na(d, 1), 0)
                }
                return d
            }
            function nb(a) {
                var b, c;
                return a = .7071067811865475 * -a, b = Ja(a), ia(b) ? Aa : (c = Sa(b * va(2)), Oa(c) ? NaN : .5 * (2 - 2 * parseFloat(c)))
            }
            function ob(a, b, c, d) {
                var e, f, g, h, i, j, k, l, m, n, o, p, q, r;

                function s(a, b) {
                    return a < 0 && b > 0 || a > 0 && b < 0
                }
                for (e = 1e-307, f = 2.22045e-16, g = a.ge(b), h = a.ge(c), j = 0; j < 1e3 && !s(g, h); j++) ua(g) <= ua(h) ? (i = b, b += 2 * (b - c), b < 0 && (b = 0), c = i, h = g, g = a.ge(b)) : (i = c, c += 2 * (c - b), b = i, g = h, h = a.ge(c));
                if (0 === g) return b;
                if (0 === h) return c;
                if (!s(g, h)) return d.jl = !0, 0;
                for (k = b, l = g, m = c, n = h, o = b, p = g, q = .5 * (b + c), r = !0, j = 0; j < 500 && ua(p) > e && c - b > ma(ua(b), ua(c)) * f;) r && (l !== n && n !== p && p !== l ? (q = k * p * n / (p - l) / (n - l) + o * n * l / (n - p) / (l - p) + m * l * p / (l - n) / (p - n), r = b < q && q < c) : r = !1), r || (q = .5 * (b + c), m = c, n = h, r = !0), k = m, m = o, o = q, l = n, n = p, p = a.ge(q), s(g, p) ? (c = o, h = p) : (b = o, g = p), r = r && 2 * ua(p) <= ua(n), ++j;
                return o
            }
            function pb(a, b) {
                var c, d, e, f, g = fa(b);
                for (c = 0; c < g; c++) d = Ja(b[c]), e = d - a.M, f = e / (a.N + 1), a.M += f, a.Q += a.N * e * f, a.N++, a.kl += d
            }
            function qb(a) {
                var b, c = [76.18009172947146, -86.50532032941678, 24.01409824083091, -1.231739572450155, .001208650973866179, -5395239384953e-18],
                    d = 1.000000000190015,
                    e = a,
                    f = a + 5.5;
                for (f -= (a + .5) * wa(f), b = 0; b <= 5; b++) d += c[b] / ++e;
                return -f + wa(2.5066282746310007 * d / a)
            }
            function rb(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n, o, p, q, r = 0 === c || 1 === c ? 0 : ta(qb(a + b) - qb(a) - qb(b) + a * wa(c) + b * wa(1 - c)),
                    s = c >= (a + 1) / (a + b + 2);
                for (s && (d = a, a = b, b = d, c = 1 - c), e = 4.450147717014403e-308, f = 100, g = a + b, h = a + 1, i = a - 1, j = 1, k = 1 - g * c / h, ua(k) < e && (k = e), k = 1 / k, l = k, m = 1, n = 2; m <= f; m++, n += 2) if (o = m * (b - m) * c / ((i + n) * (a + n)), k = 1 + o * k, ua(k) < e && (k = e), j = 1 + o / j, ua(j) < e && (j = e), k = 1 / k, l *= k * j, o = -(a + m) * (g + m) * c / ((a + n) * (h + n)), k = 1 + o * k, ua(k) < e && (k = e), j = 1 + o / j, ua(j) < e && (j = e), k = 1 / k, p = k * j, l *= p, ua(Ja(p - 1)) < 5e-324) return q = r * l / a, s ? 1 - q : q;
                return Ca
            }
            function sb(a, b) {
                var c, d, e, f, g = fa(b);
                for (f = 0; f < g; f++) c = b[f], c !== Xa && (d = c - a.M, e = d / (a.N + 1), a.M += e, a.Q += a.N * d * e, a.N++, a.kl += c)
            }
            function tb(a) {
                a.sort(function(a, b) {
                    return a - b
                })
            }
            function ub(a, b) {
                var c, d;
                for (c = 0; c < fa(a); c++) d = a[c], d !== Xa && b.push(d);
                tb(b)
            }
            function vb(a) {
                var b = [],
                    c;
                for (c = 0; c < fa(a); c++) ub(a[c], b);
                return b
            }
            function wb(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n, o = Math.expm1 ||
                    function(a) {
                        return ta(a) - 1
                    }, p = Math.log1p ||
                    function(a) {
                        return wa(1 + a)
                    };
                return a <= 0 ? 0 : a >= 1 ? 1 : 1 === c ? la(a, b) : 1 === b ? -o(c * p(-a)) : (e = .5 - a + .5, f = p(-a), g = a, h = wa(a), i = b, j = c, k = a > b / (b + c), k && (i = c, j = b, g = e, e = a, h = f, f = wa(a)), d = xb(g, i, j), d /= i, l = i / (i + j), m = j / (i + j), n = i > 1 && j > 1 && l < .97 && m < .97 ? yb(g, i, j) * g * e : ta(i * h + j * f - zb(!1, i, j)), d *= n, k && (d = .5 - d + .5), d > 1 && (d = 1), d < 0 && (d = 0), d)
            }
            function xb(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n = 2.22045e-16,
                    o = 1,
                    p = 1,
                    q = 1 - (b + c) / (b + 1) * a;
                0 === q ? (d = 0, e = 1, j = 1) : (d = 1, e = 1 / q, j = d * e), i = 1, k = 1, l = 5e4, m = !1;
                do f = b + 2 * k, g = k * (c - k) * a / ((f - 1) * f), h = -(b + k) * (b + c + k) * a / (f * (f + 1)), o = (d + g * o) * e, p = (q + g * p) * e, d = o + h * d * e, q = p + h * q * e, 0 !== q && (e = 1 / q, i = d * e, m = ua(j - i) < ua(j) * n), j = i, k += 1;
                while (k < l && !m);
                return j
            }
            function yb(a, b, c) {
                var d, e, f, g, h, i, j;
                return 1 === b ? 1 === c ? 1 : 2 === c ? -2 * a + 2 : a <= .01 ? c + c * ta((c - 1) * wa(1 - a)) - 1 : c * la(.5 - a + .5, c - 1) : 1 === c ? 2 === b ? b * a : b * la(a, b - 1) : a <= 0 && !(b < 1 && 0 === a) || a >= 1 && !(c < 1 && 1 === a) ? 0 : (d = wa(eb(2)), e = wa(eb(1)), f = wa(a < .1 ? 1 + a : 1 - a), g = wa(a), h = (b - 1) * g, i = (c - 1) * f, j = zb(!1, b, c), h < d && h > e && i < d && i > e && j < d && j > e && h + i < d && h + i > e ? la(a, b - 1) * la(.5 - a + .5, c - 1) / zb(!0, b, c) : ta(h + i - j))
            }
            function zb(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m = c,
                    n = b,
                    o = 171.624376956302;
                return b > c && (d = m, m = n, n = d), a && m + n < o ? Bb(m) / Bb(m + n) * Bb(n) : (e = 6.02468004077673, f = e - .5, g = Db(m), g /= Db(m + n), g *= Db(n), h = m + n + f, i = a ? g * va(h / (m + f) / (n + f)) : wa(g) + .5 * (wa(h) - wa(m + f) - wa(n + f)), j = n / (m + f), k = m / (n + f), l = -m * wa(1 + j) - n * wa(1 + k) - f, a ? ta(l) * i : l + i)
            }
            function Ab(a) {
                var b = Db(a),
                    c = 6.02468004077673,
                    d = a + c - .5,
                    e = la(d, a / 2 - .25);
                return b *= e, b /= ta(d), b *= e, a <= 20 && a === Ka.wk(a) && (b = xa(b)), b
            }
            function Bb(a) {
                var b, c, d = wa(ra),
                    e = wa(eb(2)),
                    f = 171.624376956302;
                return a > f ? Ca : a >= 1 ? Ab(a) : a >= .5 ? Ab(a + 1) / a : a >= -.5 ? (b = Ab(a + 2) - wa(a + 1) - wa(ua(a)), b >= e ? Ca : Ab(a + 2) / (a + 1) / a) : (c = Ab(1 - a) + wa(ua(pa(ra * a))), c - d >= e ? 0 : c < 0 && d - c > e ? Ca : ta(d - c) * (pa(ra * a) < 0 ? -1 : 1))
            }
            function Cb(a) {
                var b = 171.624376956302;
                return a >= b ? Ab(a) : a >= 1 ? wa(Ab(a)) : a >= .5 ? wa(Ab(a + 1) / a) : Ab(a + 2) - wa(a + 1) - wa(a)
            }
            function Db(a) {
                var b, c, d, e, f = [23531376880.41076, 42919803642.6491, 35711959237.35567, 17921034426.03721, 6039542586.352028, 1439720407.3117216, 248874557.86205417, 31426415.585400194, 2876370.6289353725, 186056.26539522348, 8071.672002365816, 210.82427775157936, 2.5066282746310002],
                    g = [0, 39916800, 120543840, 150917976, 105258076, 45995730, 13339535, 2637558, 357423, 32670, 1925, 66, 1];
                if (a <= 1) for (b = f[12], c = g[12], d = 11; d >= 0; --d) b *= a, b += f[d], c *= a, c += g[d];
                else for (e = 1 / a, b = f[0], c = g[0], d = 1; d <= 12; ++d) b *= e, b += f[d], c *= e, c += g[d];
                return b / c
            }
            function Eb(a, b) {
                return a <= 0 ? 0 : Fb(b / 2, a / 2)
            }
            function Fb(a, b) {
                var c = a * wa(b) - b - Cb(a),
                    d = ta(c);
                return b > a + 1 ? 1 - d * Hb(a, b) : d * Gb(a, b)
            }
            function Gb(a, b) {
                var c = .5 * eb(3),
                    d = a,
                    e = 1 / a,
                    f = e,
                    g = 1;
                do d += 1, e = e * b / d, f += e, g += 1;
                while (e / f > c && g <= 1e4);
                return g > 1e4 ? Aa : f
            }
            function Hb(a, b) {
                var c = eb(3),
                    d = .5 * c,
                    e = 1 / c,
                    f = 0,
                    g = 0,
                    h = 1 - a,
                    i = b + 2 - a,
                    j = 0,
                    k = b + 1,
                    l = 1,
                    m = 1,
                    n = i * b,
                    o = b,
                    p = k / n,
                    q = !1,
                    r = 0;
                do f += 1, h += 1, g = h * f, i += 2, j = k * i - l * g, m = n * i - o * g, 0 !== m && (r = j / m, q = ua((p - r) / r) <= d, p = r), l = k, k = j, o = n, n = m, ua(j) > e && (l *= c, k *= c, o *= c, n *= c);
                while (!q && f < 1e4);
                return q ? p : Aa
            }
            function Ib(a, b) {
                var c, d;
                if (a <= 0) return 0;
                if (b * a > 1391e3) c = ta((.5 * b - 1) * wa(.5 * a) - .5 * a - wa(2) - Cb(.5 * b));
                else {
                    for (b % 2 < .5 ? (c = .5, d = 2) : (c = 1 / va(2 * a * ra), d = 1); d < b;) c *= a / d, d += 2;
                    c = a >= 1425 ? ta(wa(c) - a / 2) : c * ta(-a / 2)
                }
                return c
            }
            function Jb(a, b, c, d) {
                var e, f, g, h = La(c, a);
                return Oa(h) ? h : (e = Ja(h), h = La(d - c, b - a), Oa(h) ? h : (f = Ja(h), h = La(d, b), Oa(h) ? h : (g = Ja(h), Ga(e * f / g))))
            }
            function Kb(a, b, c) {
                var d, e, f = wb(b / (b + a * a), b / 2, .5);
                switch (c) {
                    case 1:
                        return .5 * f;
                    case 2:
                        return f;
                    case 3:
                        return la(1 + a * a / b, -(b + 1) / 2) / (va(b) * zb(!0, .5, b / 2));
                    case 4:
                        return d = b / (a * a + b), e = .5 * wb(d, .5 * b, .5), a < 0 ? e : 1 - e
                }
                return Aa
            }
            function Lb(a, b, c) {
                return {
                    ge: function(d) {
                        return a - Kb(d, b, c)
                    }
                }
            }
            function Mb(a, b, c) {
                var d = {
                        jl: !1
                    },
                    e = Lb(a, b, c),
                    f = ob(e, .5 * b, b, d);
                return d.jl ? Ba : f
            }
            function Nb(a, b) {
                var c = !1,
                    d = 0,
                    e, f, g, h, i;
                for (f = 0; f < fa(b); f++) for (i = b[f], g = 0; g < fa(i); g++) if (h = i[g], Na(h) || Ta(h) || Ua(h)) e = Ua(h) ? 0 : Ja(h), (!c || a && e > d || !a && e < d) && (d = e), c = !0;
                else if (Oa(h)) return h;
                return d
            }
            function Ob(a, b, c, d) {
                var e, f, g, h = 0,
                    i = 0,
                    j = 0;
                for (e = 0; e < fa(b); e++) f = b[e], f !== Xa && (f < c ? h++ : c < f ? j++ : i++);
                return 0 === i ? Ba : (g = (0 === d ? j : h) + 1, a ? g : g + (i - 1) / 2)
            }
            function Pb(a, b) {
                var c, d, e, f, g, h;
                for (f = 0; f < fa(a); f++) for (c = a[f], g = 0; g < fa(c); g++) if (e = c[g], e === ga) b.n++;
                else if (Ua(e)) {
                    if (h = {
                            value: 0
                        }, Fa.Th(e, h)) d = h.value, b.ll += d, b.ml += d * d;
                    else if (!c.isArray && !c.isReference) return Aa;
                    b.n++
                } else {
                    if (Oa(e)) return e;
                    Na(e) && (d = Ja(e), b.ll += d, b.ml += d * d, b.n++)
                }
            }
            function Qb(a, b, c) {
                var d, e = {
                        ll: 0,
                        ml: 0,
                        n: 0
                    },
                    f = Pb(a, e);
                return Oa(f) ? f : e.n <= b ? za : (d = ma(0, (e.n * e.ml - e.ll * e.ll) / (e.n * (e.n - b))), d = c ? va(d) : d, Ga(d))
            }
            function Rb(a, b, c) {
                var d, e, f, g, h, i = 0,
                    j = 0,
                    k = 0,
                    l = 0,
                    m = fa(b);
                if (m !== fa(c)) return Ba;
                for (f = 0; f < m; f++) d = b[f], e = c[f], d !== Xa && e !== Xa && (i += d, j += e, l++);
                if (l <= 1) return za;
                for (g = i / l, h = j / l, f = 0; f < m; f++) d = b[f], e = c[f], d !== Xa && e !== Xa && (k += (d - g) * (e - h));
                return Ga(a ? k / l : k / (l - 1))
            }
            function Sb(a, b) {
                var c, d, e, f, g = a ? 1 : 0,
                    h = 0;
                for (e = 0; e < fa(b); e++) for (c = b[e], f = 0; f < fa(c); f++) if (d = c[f], d !== Xa) {
                    if (d <= 0) return Ca;
                    g = a ? g * d : g + 1 / d, h++
                }
                return a ? h <= 0 ? za : Ga(la(g, 1 / h)) : 0 === g ? za : Ga(h / g)
            }
            function Tb(a, b, c, d, e) {
                var f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O = b.rowCount,
                    P = b.colCount;
                if (a ? c = c !== ha ? Ha(c, 1, !1, !0, !0) : b : (f = c !== ha ? c : function(a, b) {
                        var c = [];
                        for (g = 0; g < a; g++) for (c[g] = [], h = 0; h < b; h++) c[g][h] = g * b + h + 1;
                        return new Ea(c)
                    }(O, P), c = Ha(f, 1, !1, !0, !0)), i = c.rowCount, j = c.colCount, O === i && P === j && (d || !e)) {
                    for (m = a ? i * j : Ja(i * j), w = 0, x = 0, y = 0, z = 0, A = 0, g = 0; g < i; g++) for (h = 0; h < j; h++) n = c[g][h], o = b[g][h], a && (o = wa(o)), w += n, x += n * n, y += o, z += o * o, A += n * o;
                    return t = m * x - w * w, l = d ? (m * A - w * y) / t : A / x, B = d ? (y * x - w * A) / t : 0, a && (l = ta(l), B = ta(B)), r = [
                        [l, B]
                    ], e && (r[1] = [], r[2] = [], r[3] = [], r[4] = [], C = m * x - w * w, D = m * z - y * y, E = m * A - w * y, F = z - B * y - l * A, G = E * E / (C * D), m < 3 ? (r[1][0] = Ca, r[1][1] = Ca, r[2][1] = Ca, r[3][0] = Ca) : (r[1][0] = va(F * m / (C * (m - 2))), r[1][1] = va(F * x / (C * (m - 2))), r[2][1] = va((D - E * E / C) / (m * (m - 2))), r[3][0] = 1 === G ? Ca : G * (m - 2) / (1 - G)), r[2][0] = G, r[3][1] = m - 2, r[4][0] = D / m - F, r[4][1] = F), new Ea(r)
                }
                if (1 === P && O === i || 1 === O && P === j) {
                    for (o = [], n = [], t = 1 === P, m = i, l = j, g = 0; g < m; g++) o[g] = d ? b[g][0] : b[0][g], a && (o[g] = wa(o[g]));
                    for (g = 0; g < m; g++) for (n[g] = [], h = 0; h < l; h++) n[g][h] = t ? c[g][h] : c[h][g];
                    for (H = [], k = 0; k < l + 1; k++) H[k] = [];
                    for (p = 0; p < l + 1; p++) for (q = 0; q < l + 2; q++) H[p][q] = 0;
                    for (I = [], p = 0; p < l + 2; p++) I[p] = 0;
                    for (J = e ? [] : ga, k = 0; k < m; k++) for (I[l + 1] += o[k] * o[k], H[0][l + 1] += o[k], I[0] = H[0][l + 1], g = 0; g < l; g++) for (H[0][g + 1] += n[k][g], H[g + 1][0] = H[0][g + 1], H[g + 1][l + 1] += n[k][g] * o[k], I[g + 1] = H[g + 1][l + 1], h = g; h < l; h++) H[h + 1][g + 1] += n[k][g] * n[k][h], H[g + 1][h + 1] = H[h + 1][g + 1];
                    if (H[0][0] = m, e) {
                        for (p = 0; p < l + 1; p++) for (J[p] = [], q = 0; q < l + 1; q++) J[p][q] = 0;
                        for (g = 0; g < l + 1; g++) J[g][g] = 1
                    }
                    for (K = d ? 0 : 1, g = 0; g < l + 1; g++) {
                        if (0 === H[g][g]) {
                            for (s = !1, h = g + 1; !s && h < l + 1; h++) if (0 !== H[h][g]) {
                                for (k = 0; k < l + 2; k++) t = H[g][k], H[g][k] = H[h][k], H[h][k] = t;
                                if (e) for (k = 0; k < l + 1; k++) t = J[g][k], J[g][k] = J[h][k], J[h][k] = t;
                                s = !0
                            }
                            if (!s) return Ca
                        }
                        for (u = 1 / H[g][g], k = K; k < l + 2; k++) H[g][k] *= u;
                        if (e) for (k = K; k < l + 1; k++) J[g][k] *= u;
                        for (h = K; h < l + 1; h++) if (h !== g) {
                            for (u = -H[h][g], k = K; k < l + 2; k++) H[h][k] += u * H[g][k];
                            if (e) for (k = K; k < l + 1; k++) J[h][k] += u * J[g][k]
                        }
                        d || (H[0][l + 1] = 0)
                    }
                    for (r = a ? [
                        [], l + 1] : [
                        []
                    ], g = 0; g < l + 1; g++) r[0][g] = a ? ta(H[l - g][l + 1]) : H[l - g][l + 1];
                    if (e) {
                        if (a) r[1] = [], r[2] = [], r[3] = [], r[4] = [];
                        else for (p = 1; p < 5; p++) for (r[p] = [], q = 0; q < l + 1; q++) r[p][q] = 0;
                        for (M = I[l + 1] - I[0] * I[0] / m, L = I[l + 1], g = 0; g < l + 1; g++) L -= H[g][l + 1] * I[g];
                        if (N = M - L, r[2][0] = 0 === M ? Ca : N / M, r[4][0] = N, r[4][1] = L, t = d ? m - l - 1 : m - l, 0 === t) {
                            for (g = 0; g < l + 1; g++) r[1][g] = Ca;
                            r[2][1] = Ca
                        } else {
                            for (v = L / Ja(t), d || (r[1][l] = Ba), g = K; g < l + 1; g++) r[1][l - g] = va(v * J[g][g]);
                            r[2][1] = va(v)
                        }
                        for (r[3][0] = 0 === L ? Ca : Ja(t) * N / (L * Ja(l)), r[3][1] = Ja(t), g = 2; g < 5; g++) for (h = 2; h < l + 1; h++) r[g][h] = Ba
                    }
                    return a || (r = [r[0]]), new Ea(r)
                }
                return Ca
            }
            function Ub(a, b) {
                var c, d, e, f, g, h = 0,
                    i = 0,
                    j = 0,
                    k = [];
                for (e = 0; e < fa(b); e++) for (g = b[e], k.push(g), f = 0; f < fa(g); f++) c = g[f], c !== Xa && (h += c, j++);
                for (d = h / j, e = 0; e < fa(b); e++) for (g = k[e], f = 0; f < fa(g); f++) c = g[f], c !== Xa && (i += a ? (c - d) * (c - d) : ua(c - d));
                return a ? Ga(i) : 0 === j ? za : Ga(i / j)
            }
            function Vb(a, b, c, d) {
                b = b !== ha ? Ha(b, 0, !1, !0, !1) : a, c = c !== ha ? Ha(c, 0, !1, !0, !1) : b;
                var e, f;
                for (e = 0; e < a.rowCount; e++) for (f = 0; f < a.colCount; f++) if (!Na(a[e][f])) return Aa;
                for (e = 0; e < b.rowCount; e++) for (f = 0; f < b.colCount; f++) if (!Na(b[e][f])) return Aa;
                for (e = 0; e < c.rowCount; e++) for (f = 0; f < c.colCount; f++) if (!Na(c[e][f])) return Aa;
                return ca.qc(a, b, c, d, Ja, Ea, Aa, Ba)
            }
            function Wb(a, b, c, d) {
                return b = b !== ha ? Ha(b, 1, !1, !0, !0) : a, c = c !== ha ? Ha(c, 1, !1, !0, !0) : b, ca.sc(a, b, c, d, Ea, Ca, Ba)
            }
            function Xb(a, b, c) {
                var d, e, f, g, h, i = 0,
                    j = 0,
                    k = 0,
                    l = 0,
                    m = fa(b),
                    n = 0;
                if (m !== fa(c)) return Ba;
                for (d = 0; d < m; d++) e = b[d], f = c[d], e !== Xa && f !== Xa && (i += e, j += f, k += f * f, l += f * e, n++);
                return 0 === n ? za : n * k - j * j === 0 ? za : (g = (n * l - j * i) / (n * k - j * j), h = i / n - g * (j / n), Ga(h + g * a))
            }
            function Yb() {
                return Pa(arguments, !0, 1)
            }
            function Zb() {
                return Qa(arguments, !0, 7)
            }
            function $b(a, b) {
                return Ra([a, b], 16)
            }
            function _b() {
                return Pa(arguments, !0, 4)
            }
            function ac() {
                return Nb(!0, arguments)
            }
            function bc() {
                return Pa(arguments, !0, 5)
            }
            function cc() {
                return Nb(!1, arguments)
            }
            function dc(a, b) {
                return Ra([a, b], 14)
            }
            function ec(a, b) {
                return Ra([a, b], 15)
            }
            function fc() {
                var a, b, c, d, e = arguments,
                    f = 0,
                    g = 0;
                for (a = 0; a < fa(e); a++) for (d = e[a], b = 0; b < fa(d); b++) c = d[b], Na(c) || Ta(c) ? (f += Ja(c), g++) : (c === ga || Ua(c)) && g++;
                return 0 === g ? za : Ga(f / g)
            }
            function gc(a, b, c) {
                var d, e, f, g = 0,
                    h = 0,
                    i = Ma(b);
                if (a.rowCount !== c.rowCount || a.colCount !== c.colCount) return Aa;
                for (d = 0; d < fa(a); d++) e = a[d], i && i(e) && (f = c[d], f !== Xa && (g += f, h++));
                return 0 === h ? za : Ga(g / h)
            }
            function hc(a, b, c, d) {
                var e, f, g, h = a ? b.rowCount : b.getRowCount(0),
                    i = a ? b.colCount : b.getColumnCount(0),
                    j = [];
                for (e = 0; e < h; e++) for (j[e] = [], f = 0; f < i; f++) g = a ? b.getValue(e, f) : b.getValue(0, e, f), j[e][f] = gc(c, g, d);
                return new Ea(j)
            }
            function ic(a, b, c) {
                if (c !== ha) {
                    if (a = Ha(a, 0, !0, !1, !1), c = Ha(c, 1, !0, !0, !1), c.isError) return c[0]
                } else {
                    if (a = Ha(a, 1, !0, !0, !1), a.isError) return a[0];
                    c = a
                }
                return Fa.Fh(b) ? hc(!1, b, a, c) : Fa.Ca(b) ? hc(!0, b, a, c) : gc(a, b, c)
            }
            function jc(a) {
                var b, c, d, e, f, g, h, i = arguments,
                    j = 0,
                    k = 0,
                    l = a.length,
                    m = i.length,
                    n = [];
                for (n.push(a), d = 1; d < m; d += 2) {
                    if (e = Ha(i[d], 0, !0, !1, !1), e.isError) return e[0];
                    n.push(e), f = i[d + 1], g = Ma(f), n.push(g)
                }
                for (c = 0; c < l; c++) if (b = a[c], b !== Xa) {
                    for (h = !0, d = 1; d < m && (g = n[d + 1], h = g(n[d][c]), h); d += 2);
                    h && (j += b, k++)
                }
                return 0 === k ? za : Ga(j / k)
            }
            function kc() {
                return Ra(arguments, 12)
            }
            function lc() {
                return Ra(arguments, 13)
            }
            function mc() {
                return Sb(!0, arguments)
            }
            function nc() {
                return Sb(!1, arguments)
            }
            function oc(a, b) {
                var c, d, e, f = 0,
                    g = [];
                for (ub(a, g), c = _a(g), d = ka("" + c * b / 2), e = d; e < c - d; e++) f += Ja(g[e]);
                return f / (c - 2 * d)
            }
            function pc(a, b) {
                var c, d, e, f, g, h, i, j, k, l, m, n, o = 0,
                    p = b.rowCount,
                    q = b.colCount;
                for (c = 0; c < p; c++) for (d = 0; d < q; d++) b[c][d] !== Xa && o++;
                for (f = a.rowCount, g = a.colCount, h = [], i = [], j = o + 1, o = 0, c = 0; c < p; c++) for (d = 0; d < q; d++) e = b[c][d], e !== Xa && (h[o++] = Ja(e));
                for (k = h.slice(0), tb(h), c = 0; c < j; c++) i[c] = [0];
                for (c = 0; c < f; c++) for (d = 0; d < g; d++) if (e = a[c][d], Na(e)) {
                    for (l = Ja(e), m = !1, n = 0; !m && n < o; n++) l <= h[n] && (i[k.indexOf(h[n])][0]++, m = !0);
                    m || i[o][0]++
                }
                return new Ea(i)
            }
            function qc(a, b, c) {
                var d = da.CalcArrayHelper;
                if (Fa.Fh(a)) {
                    if (1 !== d.getLength(a)) return Aa;
                    a = d.getValueByIndex(a, 0)
                }
                return a = Ja(a), ia(a) ? Aa : Ob(!0, b, a, c)
            }
            function rc() {
                var a, b, c, d, e, f, g = arguments,
                    h = 0,
                    i = 0,
                    j = 0,
                    k = 0,
                    l = fa(g),
                    m = [];
                if (l > 0) {
                    for (f = g[0], m.push(f), d = 0; d < fa(f); d++) a = f[d], a !== Xa && (h += a, i += a * a, k++);
                    if (k <= 3) return za;
                    if (b = h / k, c = va((k * i - h * h) / (k * (k - 1))), 0 === c) return za;
                    for (e = 0; e < l; e++) for (f = m[e], d = 0; d < fa(f); d++) a = f[d], a !== Xa && (j += la((a - b) / c, 4));
                    return Ga(k * (k + 1) * j / ((k - 1) * (k - 2) * (k - 3)) - 3 * (k - 1) * (k - 1) / ((k - 2) * (k - 3)))
                }
            }
            function sc(a, b, c) {
                return cb(a, b, c, !0)
            }
            function tc(a, b, c) {
                return cb(a, b, c, !1)
            }
            function uc(a, b) {
                return Ra([a, b], 17)
            }
            function vc() {
                return Pa(arguments, !0, 2)
            }
            function wc() {
                return Pa(arguments, !0, 3)
            }
            function xc(a) {
                var b, c = 0;
                for (b = 0; b < fa(a); b++) a[b] === ga && c++;
                return c
            }
            function yc(a, b) {
                var c, d, e = 0,
                    f = 0 === b || "*" === b,
                    g = Ma(b);
                for (c = 0; c < fa(a); c++) d = a[c], f && d === ga || !g || !g(d) || e++;
                return Ga(e)
            }
            function zc(a, b) {
                var c = 0,
                    d, e, f;
                if (b.isArray || b.isReference) {
                    for (f = 0; f < fa(b); f++) {
                        if (e = yc(a, b[f]), Oa(e)) return e;
                        if (d = Ja(e), ia(d)) return Aa;
                        c += d
                    }
                    return c
                }
                return yc(a, b[0])
            }
            function Ac(a) {
                var b, c, d, e, f, g = arguments,
                    h = 0,
                    i = fa(a),
                    j = fa(g),
                    k = [];
                for (d = 0; d < j; d += 2) {
                    if (b = 0 === d ? a : Ha(g[d], 0, !0, !1, !1), b.isError) return b[0];
                    i = b.length, k.push(b), e = Ma(g[d + 1]), k.push(e)
                }
                for (c = 0; c < i; c++) {
                    for (f = !0, d = 0; d < j && (e = k[d + 1], f = e && e(k[d][c]), f); d += 2);
                    f && h++
                }
                return Ga(h)
            }
            function Bc() {
                return Ub(!1, arguments)
            }
            function Cc() {
                return Qb(arguments, 1, !0)
            }
            function Dc() {
                return Qa(arguments, !0, 8)
            }
            function Ec() {
                return Qb(arguments, 0, !0)
            }
            function Fc() {
                return Qa(arguments, !0, 10)
            }
            function Gc() {
                return Qb(arguments, 1, !1)
            }
            function Hc() {
                return Qa(arguments, !0, 11)
            }
            function Ic() {
                return Qb(arguments, 0, !1)
            }
            function Jc(a, b) {
                return Rb(!0, a, b)
            }
            function Kc() {
                return Ub(!0, arguments)
            }
            function Lc(a, b, c) {
                var d = xd(a / 2);
                return Oa(d) ? d : -Ja(d) * (b / va(c))
            }
            function Mc(a, b, c) {
                return 1 === c ? za : b * Mb(a, c - 1, 2) / va(c)
            }
            function Nc(a, b) {
                var c, d, e, f, g = 0,
                    h = 0,
                    i = 0,
                    j = 0,
                    k = 0,
                    l = fa(a);
                if (l !== fa(b)) return Ba;
                for (f = 0; f < l; f++) c = a[f], d = b[f], d !== Xa && c !== Xa && (g += c, h += d, i += d * d, j += d * c, k++);
                return 0 === k ? za : k * i - h * h === 0 ? za : (e = (k * j - h * g) / (k * i - h * h), Ga(g / k - e * (h / k)))
            }
            function Oc(a, b, c, d) {
                return Tb(!1, a, b, c, d)
            }
            function Pc(a, b) {
                var c, d, e, f, g, h = 0,
                    i = 0,
                    j = 0,
                    k = 0,
                    l = 0,
                    m = fa(b);
                if (m !== fa(a)) return Ba;
                for (c = 0; c < m; c++) d = a[c], e = b[c], e === Xa || d === Xa || Oa(e) || Oa(d) || (f = Ja(d), g = Ja(e), h += f, i += g, j += g * g, k += g * f, l++);
                return l * j - i * i === 0 ? za : Ga((l * k - i * h) / (l * j - i * i))
            }
            function Qc(a, b, c, d) {
                return Tb(!0, a, b, c, d)
            }
            function Rc(a, b) {
                var c, d, e, f, g, h = 0,
                    i = 0,
                    j = 0,
                    k = 0,
                    l = 0,
                    m = 0,
                    n = fa(a);
                if (n !== fa(b)) return Ba;
                for (e = 0; e < n; e++) f = a[e], g = b[e], f !== Xa && g !== Xa && (d = f, c = g, h += d, i += d * d, j += c, k += c * c, l += c * d, m++);
                return m * (m - 2) === 0 || m * k - j * j === 0 ? za : va((m * i - h * h - (m * l - j * h) * (m * l - j * h) / (m * k - j * j)) / (m * (m - 2)))
            }
            function Sc(a) {
                var b, c = a,
                    d = c + 5.5;
                return d -= (c + .5) * wa(d), b = 1.000000000190015 + 76.18009172947146 / (a + 1), b -= 86.50532032941678 / (a + 2), b += 24.01409824083091 / (a + 3), b -= 1.231739572450155 / (a + 4), b += .001208650973866179 / (a + 5), b -= 5395239384953e-18 / (a + 6), wa(2.506628274631001 * b / c) - d
            }
            function Tc(a, b, c, d, e) {
                var f, g, h, i, j, k, l, m, n;
                return a < d || e < a || d === e ? Ca : (f = (a - d) / (e - d), g = Sc(b + c), h = Sc(b), i = Sc(c), j = wa(f), k = wa(1 - f), l = ta(g - h - i + b * j + c * k), m = l * db(c, b, 1 - f) / c, n = f < (b + 1) / (b + c + 2) ? m : 1 - m, Ga(n))
            }
            function Uc(a, b, c, d, e, f) {
                if (a < e || f < a || e === f) return Ca;
                var g = (a - e) / (f - e);
                return d ? wb(g, b, c) : yb(g, b, c) / (f - e)
            }
            function Vc(a, b, c, d, e) {
                var f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y = 2.30753,
                    z = .27061,
                    A = .99229,
                    B = .04481,
                    C = 3e-308,
                    D = 1e-300,
                    E = C,
                    F = 1 - 2.22e-16,
                    G = 5,
                    H = 6,
                    I = 2,
                    J = lb(b, c);
                for (a <= .5 ? (i = a, m = b, o = c, f = 0) : (i = 1 - a, m = c, o = b, f = 1), p = va(-wa(i * i)), u = p - (y + z * p) / (1 + (A + B * p) * p), m > 1 && o > 1 ? (p = (u * u - 3) / 6, q = 1 / (m + m - 1), r = 1 / (o + o - 1), l = 2 / (q + r), t = u * va(l + p) / l - (r - q) * (p + G / H - I / (3 * l)), x = m / (m + o * ta(t + t))) : (p = o + o, r = 1 / (9 * o), r = p * la(1 - r + u * va(r), 3), r <= 0 ? x = 1 - ta((wa((1 - i) * o) + J) / o) : (r = (4 * m + p - I) / r, x = r <= 1 ? ta((wa(i * m) + J) / m) : 1 - I / (r + 1))), p = 1 - m, r = 1 - o, v = 0, j = 1, x < E ? x = E : x > F && (x = F), w = ma(D, la(10, -13 - 2.5 / (m * m) - .5 / (i * i))), s = n = 0, g = 0; g < 1e3; g++) {
                    for (u = mb(x, m, o), u = (u - i) * ta(J + p * wa(x) + r * wa(1 - x)), u * v <= 0 && (n = ma(ua(j), C)), k = 1, h = 0; h < 1e3; h++) {
                        if (j = k * u, ua(j) < n && (s = x - j, s >= 0 && s <= 1)) {
                            if (n <= w) return 0 !== f && (x = 1 - x), Ga((e - d) * x + d);
                            if (ua(u) <= w) return 0 !== f && (x = 1 - x), Ga((e - d) * x + d);
                            if (0 !== s && 1 !== s) break
                        }
                        k /= 3
                    }
                    if (s === x) return 0 !== f && (x = 1 - x), Ga((e - d) * x + d);
                    x = s, v = u
                }
                return 0 !== f && (x = 1 - x), Ga((e - d) * x + d)
            }
            function Wc(a, b, c, d) {
                var e, f, g, h;
                if (b < a) return Ca;
                if (!d) {
                    if (e = 1 - c, f = la(e, b), 0 === f) {
                        if (f = la(c, b), 0 === f) return Ca;
                        for (g = 0; g < b - a && f > 0; g++) f *= Ja(b - g) / Ja(g + 1) * e / c;
                        return f
                    }
                    for (g = 0; g < a && f > 0; g++) f *= Ja(b - g) / Ja(g + 1) * c / e;
                    return f
                }
                if (b === a) return 1;
                if (e = 1 - c, f = la(e, b), 0 === f) {
                    if (f = la(c, b), 0 === f) return Ca;
                    for (h = 1 - f, g = 0; g < b - a && f > 0; g++) f *= Ja(b - g) / Ja(g + 1) * e / c, h -= f;
                    return h < 0 ? 0 : h
                }
                for (h = f, g = 0; g < a && f > 0; g++) f *= Ja(b - g) / Ja(g + 1) * c / e, h += f;
                return h
            }
            function Xc(a, b, c) {
                if (a + b - 1 <= 0) return Ca;
                var d = La(a + b - 1, b - 1);
                return Oa(d) ? d : Ga(Ja(d) * la(c, b) * la(1 - c, a))
            }
            function Yc(a, b, c, d) {
                if (a + b - 1 <= 0) return Ca;
                if (d) return 1 - wb(1 - c, a + 1, b);
                var e = la(c, b),
                    f;
                for (f = 0; f < a; f++) e *= (f + b) / (f + 1) * (1 - c);
                return e
            }
            function Zc(a, b, c) {
                var d, e, f = 1 - b,
                    g = la(f, a);
                if (0 === g) {
                    if (g = la(b, a), 0 === g) return Ca;
                    for (d = 1 - g, e = 0; e < a && d >= c; e++) g *= Ja(a - e) / Ja((e + 1) * f / b), d -= g;
                    return Ja(a - e)
                }
                for (d = g, e = 0; e < a && d < c; e++) g *= Ja(a - e) / Ja((e + 1) * b / f), d += g;
                return Ja(e)
            }
            function $c(a, b) {
                var c, d, e, f, g, h, i = wa(va(ra)),
                    j = 1 / va(ra),
                    k = 0,
                    l = a,
                    m = .5 * l,
                    n = b % 2 === 0;
                if (b > 1 && (k = ta(-m)), g = Sa(-va(l)), Oa(g)) return g;
                if (h = Ja(g), d = n ? k : 2 * h, b > 2) {
                    if (l = .5 * (b - 1), e = n ? 1 : .5, m > 20) {
                        for (c = n ? 0 : i, f = wa(m); e <= l;) c = wa(e) + c, d += ta(f * e - m - c), e += 1;
                        return d
                    }
                    for (c = n ? 1 : j / va(m), f = 0; e <= l;) c *= m / e, f += c, e += 1;
                    return f * k + d
                }
                return d
            }
            function _c(a, b, c) {
                return c ? Eb(a, b) : Ib(a, b)
            }
            function ad(a, b) {
                var c = od(1 - a, .5 * b, 2);
                return Ja(c)
            }
            function bd(a, b) {
                return {
                    ge: function(c) {
                        return a - Eb(c, b)
                    }
                }
            }
            function cd(a, b) {
                var c = bd(a, b),
                    d = {
                        bConvError: !1
                    },
                    e = ob(c, .5 * b, b, d);
                return d.jl ? Ba : e
            }
            function dd(a, b) {
                var c, d, e, f, g = 0,
                    h = a.rowCount,
                    i = a.colCount;
                if (h !== b.rowCount || i !== b.colCount) return Ba;
                if (h > 1 && i > 1) c = (h - 1) * (i - 1);
                else if (h > 1 && 1 === i) c = h - 1;
                else {
                    if (!(1 === h && i > 1)) return Ba;
                    c = i - 1
                }
                for (d = 0; d < fa(a); d++) if (e = a[d], f = b[d], e !== Xa && f !== Xa) {
                    if (0 === f) return za;
                    g += (e - f) * (e - f) / f
                }
                return $c(g, c)
            }
            function ed(a, b) {
                var c, d, e, f, g, h, i, j, k = 0,
                    l = 0,
                    m = 0,
                    n = 0,
                    o = 0,
                    p = fa(b);
                if (p !== fa(a)) return Ba;
                for (g = 0, h = 0; h < p; h++) i = a[h], j = b[h], i !== Xa && j !== Xa && (k += i, l += j, m += i * i, n += j * j, g++);
                if (g <= 1) return za;
                if (c = k / g, d = l / g, e = va((g * m - k * k) / (g * (g - 1))), f = va((g * n - l * l) / (g * (g - 1))), 0 === e || 0 === f) return za;
                for (h = 0; h < p; h++) i = a[h], j = b[h], i !== Xa && j !== Xa && (o += (i - c) * (j - d));
                return Ga(o / Ja((g - 1) * e * f))
            }
            function fd(a, b, c) {
                var d = ta(-b * a);
                return Ga(c ? 1 - d : b * d)
            }
            function gd(a, b, c) {
                var d = b * a / (b * a + c),
                    e = .5 * b,
                    f = .5 * c,
                    g = Tc(d, e, f, 0, 1);
                return Oa(g) ? g : 1 - Ja(g)
            }
            function hd(a, b, c, d) {
                if (d) {
                    var e = wb(c / (c + b * a), c / 2, b / 2);
                    return 1 - e
                }
                return la(b / c, b / 2) * la(a, b / 2 - 1) / (la(1 + a * b / c, (b + c) / 2) * zb(!0, b / 2, c / 2))
            }
            function id(a, b, c) {
                var d = 1 - a,
                    e = Vc(1 - d, c / 2, b / 2, 0, 1);
                return Oa(e) ? e : (1 / Ja(e) - 1) * (c / b)
            }
            function jd(a, b, c) {
                var d = 1 - a,
                    e = Vc(d, c / 2, b / 2, 0, 1);
                return Oa(e) ? e : (1 / Ja(e) - 1) * (c / b)
            }
            function kd(a) {
                return wa((1 + a) / (1 - a)) / 2
            }
            function ld(a) {
                var b = ta(2 * a) - 1,
                    c = ta(2 * a) + 1;
                return !ja(b) && b > 0 && !ja(c) && c > 0 ? 1 : b / c
            }
            function md(a, b) {
                var c, d, e, f, g, h, i = {
                    N: 0,
                    M: 0,
                    Q: 0,
                    kl: 0
                };
                return sb(i, a), f = i.N - 1, 1 === i.N ? za : (c = i.Q / (i.N - 1), 0 === c ? za : (i.N = 0, i.M = 0, i.Q = 0, i.kl = 0, sb(i, b), g = i.N - 1, 1 === i.N ? za : (d = i.Q / (i.N - 1), 0 === d ? za : (h = gd(c / d, f, g), Oa(h) ? h : (e = 2 * (1 - Ja(h)), e > 1 && (e = 2 - e), e)))))
            }
            function nd(a, b, c, d) {
                var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B;
                if (d === !1) return e = la(c, b), ia(e) || !ja(e) ? za : (f = 1 / (e * jb(b)), g = la(a, b - 1), h = ta(-(a / c)), i = g * h, f * i);
                if (x = 1 / 3, y = 1e8, z = 1e37, A = 1e3, B = -88, a /= c, a <= 0) return Ca;
                if (b > A) return j = 3 * va(b) * (la(a / b, x) + 1 / (9 * b) - 1), w = vd(j, 0, 1, !0), Oa(w) ? w : Ja(w);
                if (a > y) return 1;
                if (a <= 1 || a < b) {
                    if (w = pd(b + 1), Oa(w)) return w;
                    p = b * wa(a) - a - Ja(w), q = 1, v = 1, s = b;
                    do s += 1, q = q * a / s, v += q;
                    while (q > 2.220446049250313e-16);
                    p += wa(v), v = 0, p >= B && (v = ta(p))
                } else {
                    if (w = pd(b), Oa(w)) return w;
                    for (p = b * wa(a) - a - Ja(w), s = 1 - b, t = s + a + 1, q = 0, j = 1, k = a, l = a + 1, m = a * t, v = l / m;;) {
                        if (s += 1, t += 2, q += 1, u = s * q, n = t * l - u * j, o = t * m - u * k, ua(o) > 0) {
                            if (r = n / o, ua(v - r) <= na(2.220446049250313e-16, 2.220446049250313e-16 * r)) break;
                            v = r
                        }
                        j = l, k = m, l = n, m = o, ua(n) >= z && (j /= z, k /= z, l /= z, m /= z)
                    }
                    p += wa(v), v = 1, p >= B && (v = 1 - ta(p))
                }
                return v
            }
            function od(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w = 4.67,
                    x = 6.66,
                    y = 6.73,
                    z = 13.32,
                    A = 60,
                    B = 70,
                    C = 84,
                    D = 105,
                    E = 120,
                    F = 127,
                    G = 140,
                    H = 1175,
                    I = 210,
                    J = 252,
                    K = 2264,
                    L = 294,
                    M = 346,
                    N = 420,
                    O = 462,
                    P = 606,
                    Q = 672,
                    R = 707,
                    S = 735,
                    T = 889,
                    U = 932,
                    V = 966,
                    W = 1141,
                    X = 1182,
                    Y = 1278,
                    Z = 1740,
                    $ = 2520,
                    _ = 5040,
                    aa = 5e-7,
                    ba = .01,
                    ca = 5e-7,
                    da = 20,
                    ea = 2e-6,
                    fa = .999998;
                if (a < ea) return 0;
                if (a > fa) return Wa;
                if (j = 2 * b, f = b - 1, v = pd(b), Oa(v)) return v;
                if (h = Ja(v), j < -1.24 * wa(a)) {
                    if (g = la(a * b * ta(h + .6931471805599453 * b), 1 / b), g < aa) return NaN
                } else if (j > .32) {
                    if (v = wd(a, 0, 1), Oa(v)) return v;
                    t = Ja(v), i = .222222 / j, g = j * la(t * va(i) + 1 - i, 3), g > 2.2 * j + 6 && (g = -2 * (wa(1 - a) - f * wa(.5 * g) + h))
                } else {
                    g = .4, d = wa(1 - a) + h + .6931471805599453 * f;
                    do l = g, i = 1 + g * (w + g), k = g * (y + g * (x + g)), s = -.5 + (w + 2 * g) / i - (y + g * (z + 3 * g)) / k, g -= (1 - ta(d + .5 * g) * k / i) / s;
                    while (ua(l / g - 1) > ba)
                }
                for (u = 1; u <= da; u++) {
                    if (l = g, i = .5 * g, v = nd(i, b, 1, !0), Oa(v)) return v;
                    if (k = a - Ja(v), s = k * ta(.6931471805599453 * b + h + i - f * wa(g)), e = s / g, d = .5 * s - e * f, m = (I + d * (G + d * (D + d * (C + d * (B + A * d))))) / N, n = (N + d * (S + d * (V + d * (W + Y * d)))) / $, o = (I + d * (O + d * (R + U * d))) / $, p = (J + d * (Q + X * d) + f * (L + d * (T + Z * d))) / _, q = (C + K * d + f * (H + P * d)) / $, r = (E + f * (M + F * f)) / _, g += s * (1 + .5 * s * m - e * f * (m - e * (n - e * (o - e * (p - e * (q - e * r)))))), ua(l / g - 1) > ca) return .5 * c * g
                }
                return .5 * c * g
            }
            function pd(a) {
                return kb(a)
            }
            function qd(a, b, c, d) {
                return a > na(b, c) || a < ma(0, b - d + c) || b > d || c > d ? Ca : Jb(a, b, c, d)
            }
            function rd(a, b, c, d, e) {
                var f, g;
                if (a > na(b, c) || a < ma(0, b - d + c) || b > d || c > d) return Ca;
                if (e) {
                    for (f = 0, g = 0; g <= a; g++) f += Jb(g, b, c, d);
                    return f
                }
                return Jb(a, b, c, d)
            }
            function sd(a, b, c) {
                return Sa((wa(a) - b) / c)
            }
            function td(a, b, c, d) {
                if (d) return Sa((wa(a) - b) / c);
                var e = (wa(a) - b) / c;
                return .3989422804014327 * ta(-(e * e) / 2) / c / a
            }
            function ud(a, b, c) {
                var d, e = xd(a);
                return Oa(e) ? e : (d = Ja(e), Ga(ta(b + c * d)))
            }
            function vd(a, b, c, d) {
                return d ? Sa((a - b) / c) : Ga(ta(-((a - b) * (a - b)) / (2 * c * c)) / (va(2 * ra) * c))
            }
            function wd(a, b, c) {
                var d, e, f, g, h, i = a - .5;
                if (ua(i) <= .42) d = i * i, e = i * (((-25.44106049637 * d + 41.39119773534) * d - 18.61500062529) * d + 2.50662823884) / ((((3.13082909833 * d - 21.06224101826) * d + 23.08336743743) * d + -8.4735109309) * d + 1);
                else {
                    if (d = a, i > 0 && (d = 1 - a), !(d > 2.220446049250313e-16)) return d > 1e-300 ? (e = -2 * wa(a), d = wa(6.283185307179586 * e), d = d / e + (2 - d) / (e * e) + (-14 + 6 * d - d * d) / (2 * e * e * e), e = va(e * (1 - d)), i < 0 ? -e : e) : i < 0 ? -Wa : Wa;
                    d = va(-wa(d)), e = (((2.32121276858 * d + 4.85014127135) * d - 2.29796479134) * d - 2.78718931138) / ((1.63706781897 * d + 3.54388924762) * d + 1), i < 0 && (e = -e)
                }
                return f = (e - 0) / 1, g = .3989422804014327 * ta(-.5 * f * f) / 1, h = vd(e, 0, 1, !0), Oa(h) ? h : (e -= (h - a) / g, b + c * e)
            }
            function xd(a) {
                return wd(a, 0, 1)
            }
            function yd(a, b) {
                return b ? nb(a) : ta(-la(a, 2) / 2) / va(2 * ra)
            }
            function zd(a, b) {
                var c, d, e, f, g = 0,
                    h = 0,
                    i = 0,
                    j = 0,
                    k = 0,
                    l = fa(a);
                if (l !== fa(b)) return Ba;
                for (c = 0, d = 0; d < l; d++) e = a[d], f = b[d], Va(e) && Va(f) && (g += e, h += f, i += e * e, j += f * f, k += e * f, c++);
                return c * i - g * g === 0 || c * j - h * h === 0 ? za : (c * k - g * h) / va((c * i - g * g) * (c * j - h * h))
            }
            function Ad(a, b) {
                var c, d, e, f, g, h = 0,
                    i = 0,
                    j = 0,
                    k = 0,
                    l = 0,
                    m = 0,
                    n = fa(b);
                if (n !== fa(a)) return Ba;
                for (c = 0; c < n; c++) d = b[c], e = a[c], Va(d) && Va(e) && (h += d, i += e, j += d * d, k += e * e, l += d * e, m++);
                return f = va((m * j - h * h) * (m * k - i * i)), 0 === f ? za : (g = (m * l - h * i) / f, Ga(g * g))
            }
            function Bd(a, b, c) {
                var d, e = 0;
                if (c) for (d = 0; d <= a; d++) e += ta(-b) * la(b, d) / ea.tk(d);
                else e = ta(-b) * la(b, a) / ea.tk(a);
                return Ga(e)
            }
            function Cd(a, b, c, d) {
                var e, f, g, h, i, j, k = c;
                if (d !== ha && (k = Ja(d), ia(k))) return Aa;
                if (e = 0, f = 0, g = fa(a), g !== fa(b)) return Ba;
                for (h = 0; h < g; h++) if (i = a[h], j = b[h], i !== Xa && j !== Xa) {
                    if (j <= 0 || 1 < j) return Ca;
                    c <= i && i <= k && (e += j), f += j
                }
                return 1 !== f ? Ca : e
            }
            function Dd() {
                var a, b, c, d, e, f, g = arguments,
                    h = 0,
                    i = 0,
                    j = 0,
                    k = 0,
                    l = [];
                for (c = 0; c < fa(g); c++) for (f = g[c], l.push(f), d = 0; d < fa(f); d++) e = f[d], e !== Xa && (h += e, i += e * e, k++);
                if (k <= 2) return za;
                if (a = h / k, b = va((k * i - h * h) / (k * (k - 1))), 0 === b) return za;
                for (c = 0; c < fa(l); c++) for (f = l[c], d = 0; d < fa(f); d++) e = f[d], e !== Xa && (j += la((e - a) / b, 3));
                return Ga(k * j / ((k - 1) * (k - 2)))
            }
            function Ed() {
                var a, b, c, d, e, f, g, h, i, j, k = arguments,
                    l = 0,
                    m = 0,
                    n = [];
                for (c = 0; c < fa(k); c++) {
                    if (f = k[c], 1 === fa(k) && 0 === fa(f)) return Da;
                    for (d = 0; d < fa(f); d++) e = f[d], g = {
                        value: 0
                    }, e !== Xa && "boolean" != typeof e && Za(e, g) && (l += g.value, m++, n.push(g.value))
                }
                if (m <= 2) return za;
                for (a = l / m, h = 0, i = 0, j = 0, c = 0; c < n.length; c++) j = n[c] - a, i += la(j, 2), h += la(j, 3);
                return b = va(i / m), 0 === b ? za : Ga(h / m / b / b / b)
            }
            function Fd(a, b, c) {
                return (a - b) / c
            }
            function Gd(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m;
                if (1 !== c && 2 !== c) return Ca;
                if (d = b, e = a / va(d), f = d / (d + a * a), g = d - 2, h = d % 2, i = 1, j = 1, d = 1, k = 2 + h, l = k, g >= 2) for (m = Ia(k); m <= g && (j = j * f * (l - 1) / l, i += j, i !== d); m += 2) d = i, l += 2;
                return 1 !== h ? c * (1 - (.5 + .5 * e * va(f) * i)) : (1 === b && (i = 0), c * (1 - (.5 + .3183098862 * (e * f * i + sa(e)))))
            }
            function Hd(a, b, c) {
                return Kb(a, b, c ? 4 : 3)
            }
            function Id(a, b) {
                return Gd(a, b, 1)
            }
            function Jd(a, b) {
                return Gd(a, b, 2)
            }
            function Kd(a, b) {
                var c, d, e, f, g, h, i, j, k, l, m, n = 1e-12,
                    o = a / 2,
                    p = o;
                if (b > 1e20) return xd(o);
                if (p < .5 ? (l = 0, h = 2 * p) : (l = 1, h = 2 * (1 - p)), ua(b - 2) < n) i = h > 0 ? va(2 / (h * (2 - h)) - 2) : Wa;
                else if (Ja(b) < 1 + n) h > 0 ? (g = 1.5707963267948966 * (h + 1), i = -qa(g)) : i = Wa;
                else {
                    if (c = 1 / (b - .5), d = 48 / (c * c), e = ((20700 * c / d - 98) * c - 16) * c + 96.36, f = ((94.5 / (d + e) - 3) / d + 1) * va(1.5707963267948966 * c) * b, k = la(f * h, 2 / b), k > .05 + c) {
                        if (m = xd(.5 * h), Oa(m)) return m;
                        j = Ja(m), k = j * j, b < 5 && (e += .3 * (b - 4.5) * (j + .6)), e = (((.05 * f * j - 5) * j - 7) * j - 2) * j + d + e, k = (((((.4 * k + 6.3) * k + 36) * k + 94.5) / e - k - 3) / d + 1) * j, k = c * k * k, k = k > .002 ? ta(k) - 1 : .5 * k * k + k
                    } else k = ((1 / (((b + 6) / (b * k) - .089 * f - .822) * (b + 2) * 3) + .5 / (b + 4)) * k - 1) * (b + 1) / (b + 2) + 1 / k;
                    i = va(b * k)
                }
                return 0 !== l && (i = -i), Ga(i)
            }
            function Ld(a, b) {
                return a < .5 ? -Mb(1 - a, b, 4) : Mb(a, b, 4)
            }
            function Md(a, b, c, d) {
                var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y = {
                    N: 0,
                    M: 0,
                    Q: 0,
                    kl: 0
                };
                if (1 !== c && 2 !== c) return Ca;
                if (1 === d) {
                    if (fa(a) !== fa(b)) return Ba;
                    for (u = fa(a), t = 0; t < u; t++) a[t] = a[t] - b[t];
                    for (q = r = s = n = 0, t = 0; t < u; t++) v = a[t], o = v - q, p = o / (s + 1), q += p, r += s * o * p, s++, n += v;
                    if (s - 1 === 0 || 0 === s) return za;
                    if (h = va(r / (s - 1)), ia(h) || !ja(h)) return Ca;
                    e = n / s, g = e / (h / va(s)), k = s - 1
                } else y.N = 0, y.M = 0, y.Q = 0, y.kl = 0, pb(y, a), i = y.Q / (y.N - 1), e = y.kl / y.N, l = y.N, y.N = 0, y.M = 0, y.Q = 0, y.kl = 0, pb(y, b), j = y.Q / (y.N - 1), f = y.kl / y.N, m = y.N, 2 !== d ? (w = i / l / (i / l + j / m), k = 1 / (w * w / Ja(l - 1) + (1 - w) * (1 - w) / Ja(m - 1))) : k = Ja(l + m - 2), g = (e - f) / va(i / Ja(l) + j / Ja(m));
                return g = ua(g), x = rb(.5 * k, .5, k / (k + g * g)), Oa(x) ? x : .5 * c * Ja(x)
            }
            function Nd(a, b, c, d) {
                var e = ta(-la(a / c, b));
                return Ga(d ? 1 - e : b / la(c, b) * la(a, b - 1) * e)
            }
            function Od(a, b, c) {
                var d, e, f, g, h, i, j = 0,
                    k = 0,
                    l = 0,
                    m = 0;
                if (c !== ha && (j = Ja(c), ia(j))) return Aa;
                for (g = 0; g < fa(a); g++) h = a[g], h !== Xa && (f = Ja(h), k += f, l += f * f, m++);
                return 0 === m ? Ba : 1 === m ? za : (d = k / m, e = c !== ha ? j : va((m * l - k * k) / (m * (m - 1))), 0 === e ? za : (i = Sa((d - b) / (e / va(m))), Oa(i) ? i : Ga(1 - Ja(i))))
            }
            function Pd(a, b) {
                a = Ja(Ia(a)), b = Ja(Ia(b));
                var c = 1,
                    d;
                if (a < 0 || b < 0 || a < b) return Ca;
                for (d = a - b + 1; d <= a; d++) c *= d;
                return Ga(c)
            }
            function Qd(a, b) {
                return Rb(!1, a, b)
            }
            function Rd() {
                var a, b, c, d = 0,
                    e = [],
                    f = vb(arguments),
                    g = fa(f);
                for (a = 0; a < g; a++) {
                    for (c = 0, b = a + 1; b < g; b++) f[a] === f[b] && c++;
                    c > d ? (d = c, e = [], e.push([f[a]])) : c === d && e.push([f[a]])
                }
                return 0 === d ? Ba : new Ea(e)
            }
            function Sd(a, b) {
                return Ra([a, b], 18)
            }
            function Td(a, b) {
                return Ra([a, b], 19)
            }
            function Ud(a, b, c) {
                return a.rowCount > 1 || a.colCount > 1 ? Aa : Ob(!1, b, a[0], c)
            }
            function Vd(a, b) {
                var c, d = b;
                return a >= 0 && a < 2147483647 && d >= 0 && d < 2147483647 && (a = Math.pow(parseInt(a), parseInt(d)), c = Math.abs(a), c <= 1.79769e308) ? c >= 2.2250738585072014e-308 ? a : 0 : Ca
            }
            function Wd(a) {
                var b, c;
                return "" === a ? Aa : (b = {
                    value: 0
                }, Za(a, b) === !0 ? (a = .3989422804014327 * Math.exp(.5 * -(b.value * b.value)), c = Math.abs(a), c <= 1.79769e308 ? c >= 2.2250738585072014e-308 ? a : 0 : Ca) : Aa)
            }
            function Xd(a, b, c, d) {
                var e, f, g, h, i, j, k, l, m;
                if ("" === a) return Aa;
                e = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600, 6227020800, 87178291200, 1307674368e3, 20922789888e3, 355687428096e3, 6402373705728e3, 0x1b02b9306890000, 243290200817664e4, 5109094217170944e4, 0x3ceea4c2b3e0d80000, 2.585201673888498e22, 6.204484017332394e23, 1.5511210043330986e25, 4.0329146112660565e26, 1.0888869450418352e28, 3.0488834461171387e29, 8.841761993739702e30, 2.6525285981219107e32, 8.222838654177922e33, 2.631308369336935e35, 8.683317618811886e36, 2.9523279903960416e38, 1.0333147966386145e40, 3.7199332678990125e41, 1.3763753091226346e43, 5.230226174666011e44, 2.0397882081197444e46, 8.159152832478977e47, 3.345252661316381e49, 1.40500611775288e51, 6.041526306337383e52, 2.658271574788449e54, 1.1962222086548019e56, 5.502622159812089e57, 2.5862324151116818e59, 1.2413915592536073e61, 6.082818640342675e62, 3.0414093201713376e64, 1.5511187532873822e66, 8.065817517094388e67, 4.2748832840600255e69, 2.308436973392414e71, 1.2696403353658276e73, 7.109985878048635e74, 4.0526919504877214e76, 2.3505613312828785e78, 1.3868311854568984e80, 8.32098711274139e81, 5.075802138772248e83, 3.146997326038794e85, 1.98260831540444e87, 1.2688693218588417e89, 8.247650592082472e90, 5.443449390774431e92, 3.647111091818868e94, 2.4800355424368305e96, 1.711224524281413e98, 1.1978571669969892e100, 8.504785885678623e101, 6.1234458376886085e103, 4.4701154615126844e105, 3.307885441519386e107, 2.48091408113954e109, 1.8854947016660504e111, 1.4518309202828587e113, 1.1324281178206297e115, 8.946182130782976e116, 7.156945704626381e118, 5.797126020747368e120, 4.753643337012842e122, 3.945523969720659e124, 3.314240134565353e126, 2.81710411438055e128, 2.4227095383672734e130, 2.107757298379528e132, 1.8548264225739844e134, 1.650795516090846e136, 1.4857159644817615e138, 1.352001527678403e140, 1.2438414054641308e142, 1.1567725070816416e144, 1.087366156656743e146, 1.032997848823906e148, 9.916779348709496e149, 9.619275968248212e151, 9.426890448883248e153, 9.332621544394415e155, 9.332621544394415e157, 9.42594775983836e159, 9.614466715035127e161, 9.90290071648618e163, 1.0299016745145628e166, 1.081396758240291e168, 1.1462805637347084e170, 1.226520203196138e172, 1.324641819451829e174, 1.4438595832024937e176, 1.588245541522743e178, 1.7629525510902446e180, 1.974506857221074e182, 2.2311927486598138e184, 2.5435597334721877e186, 2.925093693493016e188, 3.393108684451898e190, 3.969937160808721e192, 4.684525849754291e194, 5.574585761207606e196, 6.689502913449127e198, 8.094298525273444e200, 9.875044200833601e202, 1.214630436702533e205, 1.506141741511141e207, 1.882677176888926e209, 2.372173242880047e211, 3.0126600184576594e213, 3.856204823625804e215, 4.974504222477287e217, 6.466855489220474e219, 8.47158069087882e221, 1.1182486511960043e224, 1.4872707060906857e226, 1.9929427461615188e228, 2.6904727073180504e230, 3.659042881952549e232, 5.012888748274992e234, 6.917786472619489e236, 9.615723196941089e238, 1.3462012475717526e241, 1.898143759076171e243, 2.695364137888163e245, 3.854370717180073e247, 5.5502938327393044e249, 8.047926057471992e251, 1.1749972043909107e254, 1.727245890454639e256, 2.5563239178728654e258, 3.80892263763057e260, 5.713383956445855e262, 8.62720977423324e264, 1.3113358856834524e267, 2.0063439050956823e269, 3.0897696138473508e271, 4.789142901463394e273, 7.471062926282894e275, 1.1729568794264145e278, 1.853271869493735e280, 2.9467022724950384e282, 4.7147236359920616e284, 7.590705053947219e286, 1.2296942187394494e289, 2.0044015765453026e291, 3.287218585534296e293, 5.423910666131589e295, 9.003691705778438e297, 1.503616514864999e300, 2.5260757449731984e302, 4.269068009004705e304, 7.257415615307999e306];

                function n(a) {
                    return a < 171 ? a < 0 ? NaN : e[a] : 1 / 0
                }
                function o(a, b) {
                    var c, d, e, f;
                    if (a <= b) return a === b && b >= 0 ? 1 : Aa;
                    if (a < 2 * b && (b = a - b), b < 2) return b >= 0 ? 0 !== b ? a : 1 : Aa;
                    if (a < 171) return n(a) / (n(b) * n(a - b));
                    if (b > 514) return Aa;
                    if (a > 8192) {
                        for (c = a, d = 2; d <= b; d++) c *= --a / d;
                        return c
                    }
                    for (e = a, a--, f = 2;;) switch (b - f) {
                        case -1:
                            return e;
                        case 0:
                            return a / f * e;
                        case 1:
                            return a * (a - 1) / (f * (f + 1)) * e;
                        case 2:
                            return a * (a - 1) * (a - 2) / (f * (f + 1) * (f + 2)) * e;
                        default:
                            e = a * (a - 1) * (a - 2) * (a - 3) / (f * (f + 1) * (f + 2) * (f + 3)) * e, f += 4, a -= 4
                    }
                }
                if (f = {
                        value: 0
                    }, a = $a(a, f), g = {
                        value: 0
                    }, b = Za(b, g), h = {
                        value: 0
                    }, c = $a(c, h), 4 === arguments.length && d ? (i = {
                        value: 0
                    }, d = $a(d, i)) : (d = c, i = h), a === !0 && b === !0 && c === !0 && d === !0) {
                    if (a = f.value, b = g.value, c = h.value, d = i.value, a >= 0 && a <= 2147483646 && b >= 0 && b <= 1 && c >= 0 && c <= a && d >= c && d <= a) {
                        if (j = a * b * (1 - b), j > 100) return j = Math.sqrt(j), b *= a, ab((d - b + .5) / j) - ab((c - 1 - b + .5) / j);
                        if (k = o(a, c) * Math.pow(b, c) * Math.pow(1 - b, a - c), 0 === k) return 0;
                        for (l = k, j = k, b /= 1 - b, m = c; m < d; m++) j *= (a - m) / (m + 1) * b, l += j;
                        return l <= 1 ? l : 1
                    }
                    return Ca
                }
                return Aa
            }
            function Yd(a) {
                var b, c, d;
                if (a > 0) a = Math.exp(kb(a));
                else {
                    if (b = Math.abs(parseInt(a)), c = a + b, 0 === c) return Ca;
                    a = Math.pow(-1, b - 1) * Math.exp(kb(-c)) * Math.exp(kb(1 + c)) / Math.exp(kb(b + 1 - c))
                }
                return d = Math.abs(a), d <= 1.79769e308 ? d >= 2.2250738585072014e-308 ? a : 0 : Ca
            }
            function Zd(a) {
                a = ab(a) - .5;
                var b = Math.abs(a);
                return b <= 1.79769e308 ? b >= 2.2250738585072014e-308 ? a : 0 : Ca
            }
            b = {
                Hi: 7
            }, d = {
                _i: !0,
                Hi: 7
            }, e = {
                Hi: 2
            }, f = {
                Hi: 2,
                aj: "< 1"
            }, g = {
                Hi: 2,
                aj: "< 0"
            }, h = {
                Hi: 2,
                aj: ["< 1", "> 10000000000"]
            }, i = {
                Hi: 0
            }, j = {
                Hi: 0,
                aj: ["< 0", ">= 1"]
            }, k = {
                Hi: 0,
                aj: ["<= 0", ">= 1"]
            }, l = {
                Hi: 0,
                aj: "<= 0"
            }, m = {
                _i: 0,
                Hi: 0
            }, n = {
                _i: 1,
                Hi: 0
            }, o = {
                Hi: 0,
                aj: ["< 0", "> 1"]
            }, p = {
                Hi: 0,
                aj: "< 0"
            }, q = {
                Hi: 0,
                aj: ["< 1", "> 10000000000"]
            }, r = {
                Hi: 0,
                aj: ["< 1", ">= 10000000000"]
            }, s = {
                Hi: 4,
                Ii: 1,
                Ji: !0,
                Ki: !0,
                Mi: !0
            }, t = {
                Hi: 4,
                Ii: 1,
                Ji: !0,
                Ki: !0
            }, u = {
                Hi: 4,
                Ii: 1,
                Ji: !0,
                Ki: !0,
                Mi: !0,
                Xi: !0
            }, v = {
                Hi: 4,
                Ii: 1,
                Ji: !0,
                Ki: !0,
                Xi: !0
            }, w = {
                Hi: 4,
                Ii: 1,
                Ki: !0,
                Mi: !0
            }, x = {
                Hi: 4,
                Ii: 0,
                Ji: !0
            }, y = {
                Hi: 4,
                Ii: 1,
                Ji: !0
            }, z = {
                Hi: 4,
                Ii: 1,
                Ji: !0,
                Ki: !0,
                Li: !0
            }, A = {
                Hi: 4,
                Ii: 0,
                Ji: !0,
                Ki: !0,
                Xi: !0
            }, B = {
                Hi: 4,
                Ii: 0,
                Ji: !0,
                Ki: !0,
                Mi: !0,
                Xi: !0
            }, C = {
                Hi: 4,
                Ii: 0,
                Ji: !0,
                Ki: !0
            }, D = {
                Hi: 4,
                Ii: 1,
                Ki: !0,
                Li: !0
            }, E = [s,
                {
                    Hi: 2
                }], F = [t, e], G = [s, i,
                {
                    _i: 3,
                    Hi: 2,
                    aj: "< 1"
                }], H = [k, l, f], I = [k, l, l, m, n], J = [g, g, o, b], K = [g, o, k], L = [p, q], M = [o, h], N = [t, t], O = [p, l, b], P = [p, r, r], Q = [o, r, r], R = [s, s], S = [p, l, l, b], T = [o, l, l], U = [o, i, l], V = [i, i, l, b], W = [y, y], X = [g, p, b], Y = [p, f], Z = [z, z, e,
                {
                    Hi: 2,
                    aj: ["< 1", "> 3"]
                }], $ = [p, l, l, b], _ = [s, i], aa = [D,
                {},
                d,
                {
                    _i: !1,
                    Hi: 7
                }], ba = [{},
                t, m], Ya("TREND", Vb, 1, 4, [{
                Hi: 4,
                Ii: 0,
                Ki: !0
            }, {}, {},
                d], [0, 1, 2], [0, 1, 2], {
                bk: [1, 2, 3]
            }), Ya("GROWTH", Wb, 1, 4, [D,
                {}, {},
                d], "!= 3", "!= 3", {
                bk: [1, 2, 3]
            }), Ya("FORECAST", Xb, 3, 3, [i, t, t], "> 0", "> 0"), Ya("AVERAGE", Yb, 1, ha, ha, -1, -1), Ya("STDEV", Zb, 1, ha, ha, -1, -1), Ya("STDEV.S", Zb, 1, ha, ha, -1, -1), Ya("PERCENTILE", $b, 2, 2, ha, 0, 0), Ya("PERCENTILE.INC", $b, 2, 2, ha, 0, 0), Ya("MAX", _b, 1, ha, ha, -1, -1), Ya("MAXA", ac, 1, ha, A, -1, -1), Ya("MIN", bc, 1, ha, ha, -1, -1), Ya("MINA", cc, 1, ha, A, -1, -1), Ya("LARGE", dc, 2, 2, F, 0, 0), Ya("SMALL", ec, 2, 2, F, 0, 0), Ya("AVERAGEA", fc, 1, ha, B, -1, -1), Ya("AVERAGEIF", ic, 2, 3, ha, [0, 2], [0, 2], {
                bk: 2
            }), Ya("AVERAGEIFS", jc, 3, ha, t, [0, "%= 1"], [0, "%= 1"]), Ya("MEDIAN", kc, 1, ha, u, -1, -1), Ya("MODE", lc, 1, ha, u, -1, -1), Ya("MODE.SNGL", lc, 1, ha, u, -1, -1), Ya("GEOMEAN", mc, 1, ha, v, -1, -1), Ya("HARMEAN", nc, 1, ha, u, -1, -1), Ya("TRIMMEAN", oc, 2, 2, [s, j], 0, 0), Ya("FREQUENCY", pc, 2, 2, [w, w], -1, -1), Ya("RANK", qc, 2, 3, ba, [0, 1], [0, 1], {
                bk: 2
            }), Ya("RANK.EQ", qc, 2, 3, ba, [0, 1], 1, {
                bk: 2
            }), Ya("KURT", rc, 1, ha, u, -1, -1), Ya("PERCENTRANK", sc, 2, 3, G, 0, 0, {
                bk: 2
            }), Ya("PERCENTRANK.INC", sc, 2, 3, G, 0, 0, {
                bk: 2
            }), Ya("PERCENTRANK.EXC", tc, 2, 3, G, 0, 0, {
                bk: 2
            }), Ya("QUARTILE", uc, 2, 2, E, 0, 0), Ya("QUARTILE.INC", uc, 2, 2, E, 0, 0), Ya("COUNT", vc, 1, ha, ha, -1, -1, {
                gk: -1
            }), Ya("COUNTA", wc, 1, ha, ha, -1, -1, {
                gk: -1
            }), Ya("COUNTBLANK", xc, 1, 1, x, -1, -1), Ya("COUNTIF", zc, 2, 2, [x, x], 0, 0), Ya("COUNTIFS", Ac, 2, ha, C, "%= 0", "%= 0"), Ya("AVEDEV", Bc, 1, ha, u, -1, -1), Ya("STDEVA", Cc, 1, ha, B, -1, -1), Ya("STDEVP", Dc, 1, ha, ha, -1, -1), Ya("STDEV.P", Dc, 1, ha, ha, -1, -1), Ya("STDEVPA", Ec, 1, ha, B, -1, -1), Ya("VAR", Fc, 1, ha, ha, -1, -1), Ya("VAR.S", Fc, 1, ha, ha, -1, -1), Ya("VARA", Gc, 1, ha, B, -1, -1), Ya("VARP", Hc, 1, ha, ha, -1, -1), Ya("VAR.P", Hc, 1, ha, ha, -1, -1), Ya("VARPA", Ic, 1, ha, B, -1, -1), Ya("COVAR", Jc, 2, 2, N, -1, -1), Ya("COVARIANCE.P", Jc, 2, 2, N, -1, -1), Ya("DEVSQ", Kc, 1, ha, u, -1, -1), Ya("CONFIDENCE", Lc, 3, 3, H), Ya("CONFIDENCE.NORM", Lc, 3, 3, H), Ya("CONFIDENCE.T", Mc, 3, 3, H), Ya("INTERCEPT", Nc, 2, 2, [u, u], -1, -1), Ya("LINEST", Oc, 1, 4, aa, [0, 1], [0, 1], {
                bk: [1, 2, 3],
                fk: 1
            }), Ya("SLOPE", Pc, 2, 2, [u, u], -1, -1, {
                fk: 1
            }), Ya("LOGEST", Qc, 1, 4, aa, [0, 1], [0, 1], {
                bk: [1, 2, 3]
            }), Ya("STEYX", Rc, 2, 2, N, -1, -1), Ya("BETADIST", Tc, 3, 5, [i, l, l, m, n], ha, ha, {
                bk: [3, 4]
            }), Ya("BETA.DIST", Uc, 4, 6, [i, l, l, b, m, n], ha, ha, {
                bk: [5, 6]
            }), Ya("BETAINV", Vc, 3, 5, I, ha, ha, {
                bk: [3, 4]
            }), Ya("BETA.INV", Vc, 3, 5, I, ha, ha, {
                bk: [3, 4]
            }), Ya("BINOMDIST", Wc, 4, 4, J), Ya("BINOM.DIST", Wc, 4, 4, J), Ya("NEGBINOMDIST", Xc, 3, 3, [e, e, j]), Ya("NEGBINOM.DIST", Yc, 4, 4, [g, f, j, b]), Ya("CRITBINOM", Zc, 3, 3, K), Ya("BINOM.INV", Zc, 3, 3, K), Ya("CHIDIST", $c, 2, 2, L), Ya("CHISQ.DIST.RT", $c, 2, 2, L), Ya("CHISQ.DIST", _c, 3, 3, [p, h, b]), Ya("CHIINV", ad, 2, 2, M), Ya("CHISQ.INV.RT", ad, 2, 2, M), Ya("CHISQ.INV", cd, 2, 2, M), Ya("CHITEST", dd, 2, 2, N, -1, -1), Ya("CHISQ.TEST", dd, 2, 2, N, -1, -1), Ya("CORREL", ed, 2, 2, [u, u], -1, -1), Ya("EXPONDIST", fd, 3, 3, O), Ya("EXPON.DIST", fd, 3, 3, O), Ya("FDIST", gd, 3, 3, P), Ya("F.DIST", hd, 4, 4, [p, q, q, b]), Ya("F.DIST.RT", gd, 3, 3, P), Ya("FINV", id, 3, 3, Q), Ya("F.INV.RT", id, 3, 3, Q), Ya("F.INV", jd, 3, 3, [o, h, h]), Ya("FISHER", kd, 1, 1, {
                Hi: 0,
                aj: ["<= -1", ">= 1"]
            }), Ya("FISHERINV", ld, 1, 1, i), Ya("FTEST", md, 2, 2, R, -1, -1), Ya("F.TEST", md, 2, 2, R, -1, -1), Ya("GAMMADIST", nd, 4, 4, S), Ya("GAMMA.DIST", nd, 4, 4, S), Ya("GAMMAINV", od, 3, 3, T), Ya("GAMMA.INV", od, 3, 3, T), Ya("GAMMALN", pd, 1, 1, l), Ya("GAMMALN.PRECISE", pd, 1, 1, l), Ya("HYPGEOMDIST", qd, 4, 4, [g, g, g, g]), Ya("HYPGEOM.DIST", rd, 5, 5, [g, g, g, g, b]), Ya("LOGNORMDIST", sd, 3, 3, [l, i, l]), Ya("LOGNORM.DIST", td, 4, 4, [l, i, l, b]), Ya("LOGINV", ud, 3, 3, U), Ya("LOGNORM.INV", ud, 3, 3, U), Ya("NORMDIST", vd, 4, 4, V), Ya("NORM.DIST", vd, 4, 4, V), Ya("NORMINV", wd, 3, 3, U), Ya("NORM.INV", wd, 3, 3, U), Ya("NORMSDIST", Sa, 1, 1, i, ha, ha), Ya("NORMSINV", xd, 1, 1, o), Ya("NORM.S.INV", xd, 1, 1, o), Ya("NORM.S.DIST", yd, 2, 2, [i, b]), Ya("PEARSON", zd, 2, 2, W, -1, -1), Ya("RSQ", Ad, 2, 2, W, [0, 1], [0, 1]), Ya("POISSON", Bd, 3, 3, X), Ya("POISSON.DIST", Bd, 3, 3, X), Ya("PROB", Cd, 3, 4, [z, t, i], [0, 1], [0, 1], {
                bk: 3
            }), Ya("SKEW", Dd, 1, ha, u, -1, -1), Ya("STANDARDIZE", Fd, 3, 3, [i, i, l]), Ya("TDIST", Gd, 3, 3, [p, f, e]), Ya("T.DIST", Hd, 3, 3, [p, f, b]), Ya("T.DIST.RT", Id, 2, 2, Y), Ya("T.DIST.2T", Jd, 2, 2, Y), Ya("TINV", Kd, 2, 2, M), Ya("T.INV.2T", Kd, 2, 2, M), Ya("T.INV", Ld, 2, 2, [{
                Hi: 0,
                aj: ["<= 0", "> 1"]
            },
                h]), Ya("TTEST", Md, 4, 4, Z, [0, 1], [0, 1]), Ya("T.TEST", Md, 4, 4, Z, [0, 1], [0, 1]), Ya("WEIBULL", Nd, 4, 4, $), Ya("WEIBULL.DIST", Nd, 4, 4, $), Ya("ZTEST", Od, 2, 3, _, 0, 0, {
                bk: 2
            }), Ya("Z.TEST", Od, 2, 3, _, 0, 0, {
                bk: 2
            }), Ya("PERMUT", Pd, 2, 2), Ya("COVARIANCE.S", Qd, 2, 2, N, -1, -1), Ya("MODE.MULT", Rd, 1, ha, v, -1, -1), Ya("PERCENTILE.EXC", Sd, 2, 2, [s, k], 0, 0), Ya("QUARTILE.EXC", Td, 2, 2, [s, e], 0, 0), Ya("RANK.AVG", Ud, 2, 3, [z, y, m], [0, 1], 1, {
                bk: 2
            }), Ya("PERMUTATIONA", Vd, 2, 2, [i, i]), Ya("PHI", Wd, 1, 1), Ya("BINOM.DIST.RANGE", Xd, 3, 4, [{
                _i: 0
            }, {
                _i: 0
            }, {
                _i: 0
            }]), Ya("GAMMA", Yd, 1, 1, l), Ya("GAUSS", Zd, 1, 1, i), Ya("SKEW.P", Ed, 1, ha, B, -1, -1), a.exports = ea
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f = c(42),
                g = c(33);
            c(43), c(44), b = c(45), d = b.Soa, e = -1, 1 === d ? (c(48), c(49), c(50), e = Math.floor(5 * Math.random()), f["G".concat("C", "$")]["s".concat("d")] = e) : (c(50), c(48), c(49)), 0 === e && c(51), c(52), 1 === e && c(51), c(53), 2 === e && c(51), c(56), 3 === e && c(51), c(57), 4 === e && c(51), c(58), g && (c(59), c(60), c(61), c(62)), c(71), c(65), c(72), c(73), c(74), c(75), c(76), c(77), c(78), c(79), c(66), c(63), g && c(80), c(81), c(69), c(68), c(70), c(67), c(54), c(82), c(83), 1 !== d && 2 !== d || b.Gb(), f.SR = {}, f.SR.en = c(84), a.exports = f
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {}
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m = c(44).GC$,
                n = c(26),
                o = c(33),
                p = c(34),
                q = c(42),
                r = m.each,
                s = m.extend,
                t = n.o,
                u = n.k.Uo,
                v = p && p.GeneralFormatter,
                w = q.FallbackFontFamily = '"Helvetica Neue", Arial, sans-serif',
                x = window,
                y = document,
                z = "boolean",
                A = "date",
                B = "undefined",
                C = "function",
                D = void 0,
                E = null,
                F = Math.floor,
                G = Math.ceil,
                H = Math.min,
                I = Math.max,
                J = Math.round,
                K = parseInt,
                L = parseFloat,
                M = isNaN,
                N = "px",
                O = " ",
                P = ".",
                Q = "string",
                R = "number",
                S = "touch",
                T = "MSPOINTER_TYPE_TOUCH";

            function U(a) {
                return typeof a !== B
            }
            function V(a) {
                return y.createElement(a)
            }
            function W(a) {
                y.body && y.body.insertBefore(a, E)
            }
            function X(a, b, c) {
                Object.defineProperty(a, b, {
                    get: function() {
                        return this._ps[b]
                    },
                    set: function(a) {
                        var d = this._ps[b];
                        d !== a && (this._ps[b] = a, c && c(b, a, d))
                    },
                    enumerable: !0
                })
            }
            q.productInfo = {
                productVersion: "11.1.0"
            }, q.CursorResource = {
                ResizeCol: "col-Resize",
                ResizeRow: "row-resize",
                ResizeHiddenCol: "w-resize",
                ResizeHiddenRow: "n-resize"
            }, q.getTypeFromString = function(a) {
                var b, c, d, e = !1,
                    f = x;
                if (typeof a === Q) {
                    for (b = a.split(P), c = 0, d = b.length; c < d && f; c++) f = f[b[c]];
                    f && c === d && d > 0 && (e = !0)
                }
                return e ? f : D
            }, q.findControl = function(a) {
                return typeof a === Q && (a = y.getElementById(a)), m(a).data("workbook")
            };

            function Y(a) {
                return a.preventDefault ? (a.preventDefault(), a.stopPropagation()) : (a.cancelBubble = !1, a.returnValue = !1), !1
            }
            b = {}, b.nl = Y, b.ol = function(a, b, c) {
                if (3 === a) {
                    var d = m.getType(b);
                    a = c && "@" === c ? 0 : d === z ? 1 : d === R || d === A ? 2 : 0
                }
                return a
            }, b.bc = function(a) {
                var b, c = m.getType(a);
                return a === E || a === D ? a = "" : c === z ? a = ("" + a).toUpperCase() : c === A ? (b = 0 === a.getHours() && 0 === a.getMinutes() && 0 === a.getSeconds() && 0 === a.getMilliseconds(), a = n.l.Vb(a, b ? "M/d/yyyy" : "M/d/yyyy h:mm:ss")) : a = "" + a, a
            }, b.ql = function(a, b, c, d, e, f) {
                var g, h, i, j, k, l, n = m(a),
                    o = b,
                    p = c,
                    q = "background-position",
                    r = "background-size",
                    s = "auto",
                    t = "0%",
                    u = "50%",
                    v = "100%";
                switch (f) {
                    case 0:
                        n.css(q, t + O + t).css(r, v + O + v);
                        break;
                    case 1:
                        g = u, h = u, d > o && (g = t), e > p && (h = t), n.css(q, g + O + h).css(r, s + O + s);
                        break;
                    case 2:
                        i = 0, j = 0, k = o, l = p, p > 0 && e > 0 && o / p > d / e ? (k = d / e * p, i = i + o / 2 - k / 2) : o > 0 && d > 0 && p / o > e / d && (l = e / d * o, j = j + p / 2 - l / 2), n.css(q, i + N + O + j + N).css(r, k + N + O + l + N);
                        break;
                    case 3:
                        n.css(q, t + O + t).css(r, s + O + s)
                }
            }, b.rl = b.device = function() {
                var a, b, c, d, e = navigator.userAgent,
                    f = e.match(/iPad/i);
                return f && (a = f[0], a && (b = "ipad" === a.toLowerCase())), f = e.match(/iPhone/i), f && (a = f[0], a && (c = "iphone" === a.toLowerCase())), f = e.match(/android/i), f && (a = f[0], a && (d = "android" === a.toLowerCase())), {
                    ipad: b,
                    iphone: c,
                    android: d
                }
            }, b.sl = function() {
                var a = navigator.platform;
                return a && a.indexOf("Mac") > -1
            }, b.tl = function(a) {
                if (a === D || a === E) return !1;
                var b = "" + a;
                return b = t.Oa(b), !M(+("" === b.trim() ? NaN : b)) || /^[1-9]\d{0,2}(?:(,\d{3})*|\d*)(?:\.\d*)?$/.test(b)
            }, b.ul = function(a, c, d, e, f) {
                var g, h, i, j, k = E;
                if (a && (a.formatter ? (k = f ? f : a.formatter, typeof k === Q && v && (k = new v(k))) : k = a._autoFormatter), k && !k.isAuto) {
                    g = E;
                    try {
                        if (g = k.parse(c), typeof g === R) return g
                    } catch (a) {}
                    return g === D || g === E ? c : g
                }
                if (d) {
                    if (h = {}, j = E, v) try {
                        j = (new v).getPreferredDisplayFormatter(c, h)
                    } catch (a) {}
                    return i = h.value, typeof i === R ? c = i : b.tl(c) && (i = h.value = c), e && (e.value = j), i !== D && i !== E ? i : c
                }
                return c
            }, b.vl = function(a) {
                for (var b, c, d = y.body, e = a; e && e.parentElement && e.parentElement !== d;) e = e.parentElement;
                return b = 1e3, e && e.parentElement === d && (c = K(m(e).css("z-index")), M(c) || (b += c)), b
            }, b.wl = function(a) {
                var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p;
                if (!a) return [];
                if (b = a.indexOf("("), c = a.lastIndexOf(")"), d = a.substring(b + 1, c), !d) return [];
                for (e = [], f = 0, g = "", h = 0, i = 0; i < d.length;) h = d.indexOf("rgb", f), i = d.indexOf("rgb", f + 1), i === -1 && (i = d.length), g = d.substring(h, i), e.push(g), f = i;
                for (j = [], k = 0, l = e.length; k < l; k++) m = e[k], n = m.indexOf(")"), o = m.substring(0, n + 1), p = L(m.substring(n + 1, m.length)), M(p) && (k === l - 1 ? p = 100 : k <= 1 && (p = 0)), (o || 0 !== k) && (p /= 100, j.push({
                    color: o,
                    point: p
                }));
                return j
            }, b.xl = function(a, c, d, e) {
                var f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y = c.yl,
                    z = 0,
                    A = [d],
                    B = c.zoom();
                for (1 === e && (3 === d ? A.push(1) : 2 === d && A.push(0)), f = 0; f < A.length; f++) for (g = 0, h = A[f], i = c.getRowCount(h); g >= 0 && g < i;) j = c.ITa.findSpan(g, a, h), j && (j.col < a || j.colCount > 1 || j.row < g) ? g = j.row + j.rowCount : (c.getRowHeight(g, h) > 0 && (k = c.getActualStyle(g, a, h), l = 0, m = k.cellType || c.Al(h), m && (n = k.font || y.Bl(), k.font = y.Cl(n), o = c.rowFilter && c.rowFilter(), p = !(!o || !o.Dl(g, a, h)), p || 3 !== h || (q = c.tables ? c.tables.find(g, a) : E, q && q.showHeader() && q.headerIndex() === g && q.rowFilter() && q.filterButtonVisible(a - q.range().col) && (p = !0)), r = k.formatter ? k.formatter : k._autoFormatter, s = {
                    sheet: c,
                    row: g,
                    col: a,
                    sheetArea: h,
                    quotePrefix: k.quotePrefix
                }, t = {}, u = c.getValue(g, a, h), v = m.format(u, r, t, s), l = m.X4(u, v, k, B, s), p && (w = H(B, 1), x = K("" + c.defaults.rowHeight * w, 10), l += x)), l > z && (z = l)), 3 === h ? g = b.El(g, a, c, h) : g++);
                return 0 === z ? z = c.defaults.colWidth : z += G(3 / B), G(z)
            }, b.El = function(a, b, c, d) {
                var e, f, g, h = -1,
                    i = c.getRowCount(d);
                for (e = a + 1; e < i; e++) {
                    if (f = c.getText(e, b, d)) {
                        h = e;
                        break
                    }
                    if (g = c.getActualStyle(e, b, d), g && g.cellType) {
                        h = e;
                        break
                    }
                }
                return h
            }, b.Fl = function(a, c, d, e) {
                var f, g, h, i, j, k, l, m, n, o, p, q = c.yl,
                    r = 0,
                    s = [d],
                    t = c.zoom();
                for (1 === e && (3 === d ? s.push(2) : 1 === d && s.push(0)), f = 0; f < s.length; f++) for (d = s[f], g = 0, h = c.getColumnCount(d); g >= 0 && g < h;) i = c.ITa.findSpan(a, g, d), i && (i.row < a || i.rowCount > 1 || i.col < g) ? g = i.col + i.colCount : (c.getColumnWidth(g, d) > 0 && (j = c.getActualStyle(a, g, d), k = j.font || q.Bl(), j.font = q.Cl(k), l = 0, m = c.getCellType(a, g, d), m && (n = c.getText(a, g, d), o = c.getValue(a, g, d), p = {
                    sheet: c,
                    row: a,
                    col: g,
                    sheetArea: d
                }, l = m.Y4(o, n, j, t, p)), l > r && (r = l)), 3 === d ? g = b.Gl(a, g, c, d) : g++);
                return 0 === r ? r = c.defaults.rowHeight : r += G(3 / t), G(r)
            }, b.Gl = function(a, b, c, d) {
                var e, f, g, h = -1,
                    i = c.getColumnCount(d);
                for (e = b + 1; e < i; e++) {
                    if (f = c.getText(a, e, d)) {
                        h = e;
                        break
                    }
                    if (g = c.getActualStyle(a, e, d), g && g.cellType) {
                        h = e;
                        break
                    }
                }
                return h
            }, b.Il = function(a, c, d, e) {
                var f, g, h, i, j, k, l, m;
                if (d && (f = d.Jl, g = d.Kl, h = a.formatter ? a.formatter : a._autoFormatter, i = e || {}, v && c !== E && c !== D)) if (h && h.isAuto) j = typeof c === R, k = b.tl(c), !j && k && (c = t.Oa(c)), c = h.getPreferredEditingFormatter ? h.getPreferredEditingFormatter(c).format(c) : c;
                else if (typeof h === Q && (h = new v(h)), h) try {
                    c instanceof Date ? (l = o && o.Convert.Wh(c), l && (c = l), m = n.CultureManager.q4().DateTimeFormat, h = new v(0 === c.getHours() && 0 === c.getMinutes() && 0 === c.getSeconds() && 0 === c.getMilliseconds() ? m.shortDatePattern : m.shortDatePattern + O + m.longTimePattern), d.Ll = !0, c = h.format(c), i.formatter = h) : typeof c === R && (c = t.nb("" + c))
                } catch (a) {
                    c = d.getText(f, g)
                } else c = d.getText(f, g);
                return c !== E && c !== D && (c = b.bc(c)), c
            }, b.Ml = b.browser = function() {
                var a, b, c, d, e, f, g;

                function h(a) {
                    a = a.toLowerCase();
                    var b = /(chrome)[ \/]([\w.]+)/.exec(a) || /(webkit)[ \/]([\w.]+)/.exec(a) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a) || /(msie) ([\w.]+)/.exec(a) || a.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a) || [];
                    return {
                        browser: b[1] || "",
                        version: b[2] || "0"
                    }
                }
                a = navigator.userAgent, b = h(a), c = {}, b.browser && (c[b.browser] = !0, c.version = b.version), c.chrome ? c.webkit = !0 : c.webkit && (c.safari = !0), d = a.indexOf("PhantomJS") >= 0, d && (c.safari = !1, c.chrome = !0), e = a.toLowerCase(), f = e.indexOf("compatible") < 0 && /(trident)(?:.*? rv ([\w.]+)|)/.exec(e) !== E, f && (c.mozilla = D, c.msie = !0), g = /Edge\/\d+/.exec(a), g !== E && g.length > 0 && (c.webkit = D, c.chrome = D, c.msie = !0, c.edge = !0, c.version = g[0].substr(g[0].indexOf("/") + 1));

                function i() {
                    var a = E,
                        b = !1;
                    try {
                        new ActiveXObject("")
                    } catch (b) {
                        a = b.name
                    }
                    try {
                        b = !! new ActiveXObject("htmlfile")
                    } catch (a) {
                        b = !1
                    }
                    return b = "ReferenceError" === a || b !== !1, !b
                }
                return c.msie && i() && (c.metroMode = !0), c
            }(), b._Va = function(a) {
                var c, d = b.Ml.msie || b.Ml.edge,
                    e = d && x.MSPointerEvent && (navigator.msMaxTouchPoints || 0) > 1;
                return a ? e : (c = d && x.PointerEvent && (navigator.maxTouchPoints || 0) > 1, e || c)
            }, b.Nl = V, b.Ol = U;

            function Z(a) {
                var b, c, d = !1;
                if (a) for (b = 0; b < a.length; b++) if (c = a.charCodeAt(b), c >= 11904 && c < 12032 || c >= 12288 && c < 40960 || c >= 43360 && c < 43392 || c >= 63744 && c < 64256) {
                    d = !0;
                    break
                }
                return d
            }
            b.uWa = Z, b.Pl = function(a, b, c, d) {
                var e = a,
                    f = b,
                    g = function(a, b) {
                        var g, h, i = this;
                        return i.hasOwnProperty("_ps") || (i._ps = {}), g = i._ps, 0 === arguments.length ? g[e] !== D ? g[e] : f : (b !== !1 && d && !d.call(i, a) || (h = g[e] !== D ? g[e] : f, h !== a && (g[e] = a, b !== !1 && c && c.call(i, a, h))), i)
                    };
                return g.isDefault = function(a) {
                    return a === f
                }, g
            }, b.Ql = function(a, b) {
                var c = {};
                return c._ps = {}, n.j.H(a, function(a) {
                    X(c, a, b)
                }), c
            }, b.Rl = function(a, b, c, d, e) {
                var f, g = H(b, c),
                    h = I(b, c),
                    i = 0;
                for (f = g; f < h && (i += d ? a.Sl(f, 3) : a.Tl(f, 3), !(e && i > e)); f++);
                return i
            }, b.Z3 = function(a, b) {
                var c, d, e = 0,
                    f = 0;
                return a !== b && (c = m(a).offset(), d = m(b).offset(), e = c.left - d.left, f = c.top - d.top), {
                    FB: f,
                    EB: e
                }
            }, b.bq = function(a, b, c) {
                var d, e, f, g;
                if (!a || "string" != typeof a) return !1;
                for (e = 0; e < a.length; e++) if (d = a.charAt(e), "*" === d || ":" === d || "[" === d || "]" === d || "?" === d || "\\" === d || "/" === d) return !1;
                if (!b) return !0;
                for (f = b.length, e = 0; e < f; e++) if (g = b[e], c !== g && a.toUpperCase() === g.name().toUpperCase()) return !1;
                return !0
            }, b.Ika = function(a, b, c) {
                var d, e, f;
                if (!a) return a;
                for (d = 0, e = a.length, f = []; d < e;) a[d] === b ? f[d] = c : f[d] = a[d], d++;
                return f.join("")
            }, b.tt = function() {
                var a, c, d, e = b;
                return e.ct || (a = V("span"), c = a.style, d = "-10000px", c.visibility = "hidden", c.top = d, c.left = d, c.position = "absolute", a.setAttribute("gcUIElement", "gcStringWidthSpan"), y.body.insertBefore(a, E), e.ct = a), e.ct
            }, b.fp = function(a, c) {
                var d, e, f, g = b,
                    h = g.st;
                if (!c) if (h) {
                    if (d = h[a]) return d
                } else h = g.st = {};
                return e = g.tt(), e.style.font = b.hZa(a), e.innerHTML = "H", f = e.offsetHeight, c || (h[a] = f), f
            }, b.Voa = function(a, c) {
                var d = b.tt();
                return d.style.font = b.hZa(c), d.innerHTML = a || "H", d.offsetHeight
            }, b.iZa = function(a) {
                var c = b,
                    d = c.tt(),
                    e = d.style;
                return e.font = a, e.fontFamily = [].concat(e.fontFamily.split(","), w.split(",")).join(","), e.font
            }, b.jZa = b.sl(), b.hZa = function(a) {
                var c, d, e = b;
                return a && e.jZa ? (c = e.kZa, c || (c = e.kZa = {}), d = c[a], d || (d = c[a] = e.iZa(a)), d) : a
            }, b.lZa = function(a, c) {
                a.font = b.hZa(c)
            }, b.no = function() {
                var a = b,
                    c = a.ct;
                c && (m(c).remove(), a.ct = D), a.st = D, b._0 && (b._0 = D), a.kZa = D
            }, b.Woa = function(a) {
                var c, d = b._0;
                return d || (d = b._0 = V("div")), c = a.innerHTML, d.innerHTML = c, d.innerText
            }, b.a_a = function(a) {
                a && (a.b_a(!0), a.initExpression(), a.c_a())
            }, b.d_a = function(a) {
                var b, c, d = 0,
                    e = 0,
                    f = a.length;
                for (f > 0 && (d = a[0].row, e = a[0].col), b = 1; b < f; b++) c = a[b], d > c.row && (d = c.row), e > c.col && (e = c.col);
                return d = d < 0 ? 0 : d, e = e < 0 ? 0 : e, {
                    r: d,
                    c: e
                }
            }, q.Ul = q.util = b, d = q.Vl = {}, d.Wl = function(a) {
                return d.Xl() === a && a.mm && a.mm.YH
            }, d.Xl = function() {
                return x.Yl.activeElement
            };

            function $(a) {
                var b, c, e, f, g, h, i;

                function j(d) {
                    var f, g;
                    for (f = 0; f <= 2; f++) g = d.call(b, f), g && 0 !== g.width && 0 !== g.height && (a.$l = !0, c._l(e, g))
                }
                if (a && !d.Wl(a) && a.parent && a.parent.options.hideSelection) {
                    for (b = a.am(), c = a.yl, e = c.bm(), f = a.getSelections(), g = 0; g < f.length; g++) h = f[g], i = a.cm(h), i.width >= 0 && i.height >= 0 && (i.x -= 9, i.y -= 9, i.width += 18, i.height += 30, c.dm(i));
                    i = b.em(), a.$l = !0, c._l(e, i), j(b.fm), j(b.gm)
                }
            }
            d.Zl = function(a, b) {
                var c = d.Xl();
                x.Yl.activeElement = a, a === c || b || (c && (c.endEdit(), $(c), c.hm && c.hm()), a && a.yl.im())
            };

            function _() {
                this.jm = 0, this.ad(), this.km = []
            }
            function aa(a, b) {
                var c = V("span");
                return c.className = a, b && (c.id = b), c.style.display = "none", W(c), c
            }
            function ba(a, b, c, d) {
                a.addEventListener(b, c, d)
            }
            function ca(a) {
                var b = a.currentStyle,
                    c = y.defaultView;
                return c && c.getComputedStyle && (b = c.getComputedStyle(a, "")), b
            }
            function da(a) {
                var b, c, e, f, g, h, i, j = x.Yl;
                j.jm > 0 || (b = d.Xl(), c = b && b.lm, c && (e = m(c), e.isVisible()) || b && b.mm && b.mm.nm && (b.mm.nm(a), b.isEditing() || (f = a.keyCode, g = a.ctrlKey, h = a.altKey, i = a.shiftKey, 90 !== f && 89 !== f || !g || h ? 86 !== f || !g || h || i || a.stopPropagation && a.stopPropagation() : Y(a))))
            }
            function ea(a) {
                var b, c = x.Yl;
                c.jm > 0 || (b = d.Xl(), b && b.mm && b.mm.om && b.mm.om(a))
            }
            function fa(a) {
                var b, c = x.Yl;
                c.jm > 0 || (b = d.Xl(), b && b.mm && b.mm.pm && b.mm.pm(a))
            }
            function ga(a) {
                return y.all === D && d.Xl() && Y(a), !1
            }
            e = _.prototype = {
                qm: function() {
                    e.rm(), e.sm(), e.tm(), e.um()
                },
                rm: function() {
                    var a = "gc-theme-version ui-widget-header ui-state-default wijmoThemeHelper btn-default",
                        b = "span." + a.split(O).join(P);
                    return e.vm ? m(y).find(b).length <= 0 && W(e.vm) : e.vm = aa(a), e.vm
                },
                sm: function() {
                    var a = "gc-theme-version ui-widget-content wijmoThemeHelper btn-default",
                        b = "span." + a.split(O).join(P);
                    return e.wm ? m(y).find(b).length <= 0 && W(e.wm) : e.wm = aa(a), e.wm
                },
                tm: function() {
                    var a = "gc-theme-version ui-state-hover wijmoThemeHelper btn-primary",
                        b = "span." + a.split(O).join(P);
                    return e.xm ? m(y).find(b).length <= 0 && W(e.xm) : e.xm = aa(a), e.xm
                },
                um: function() {
                    var a = "gc-theme-version ui-state-highlight wijmoThemeHelper btn-warning",
                        b = "span." + a.split(O).join(P);
                    return e.ym ? m(y).find(b).length <= 0 && W(e.ym) : e.ym = aa(a), e.ym
                },
                zm: function() {
                    var a = "gc-theme-version",
                        b = "gcDummyElement";
                    return e.Am ? m(y).find("#" + b).length <= 0 && W(e.Am) : e.Am = aa(a, b), e.Am
                },
                ad: function() {
                    var a, c, f = this;
                    f.jm = 0, ba(x, "keydown", da, !0), ba(x, "keyup", ea, !0), ba(x, "compositionstart", fa, !0), ba(x, "selectstart", ga, !0), a = b.rl(), c = a.ipad || a.iphone;

                    function g(a) {
                        var b, g, h, i = d.Xl();
                        if (i && (b = e.Bm(a.target), f.km.forEach(function(a) {
                                a && a(i, b)
                            }), !b || "gcSpread" === m(b).attr("gcUIElement") && i.zo() !== b)) if (g = i.Cw && i.Cw.V4, i.gv(D, D, g)) c && (h = i.mm, h && h.Cm && h.Cm()), d.Zl(E);
                        else if (a.cancelable) return !1
                    }
                    function h(a) {
                        var b = a.pointerType;
                        b !== a[T] && b !== S || g(a)
                    }
                    b._Va() ? (m(y).bind("MSPointerDown", h), m(y).bind("pointerdown", h)) : m(y).bind("touchstart", g), ba(y, "mousedown", function(a) {
                        var b = g(a);
                        b === !1 && Y(a)
                    }, !0), m(y).bind("DOMContentLoaded", function() {
                        e.qm()
                    })
                },
                Bm: function(a) {
                    for (var b, c = a; c && "BODY" !== c.tagName && typeof c.getAttribute === C;) {
                        if (b = c.getAttribute("gcUIElement"), b || (b = c.gcUIElement), b) return c;
                        c = c.parentNode
                    }
                    return E
                },
                Dm: function(a, b) {
                    var c, d, f, g, h = e.rm();
                    return 1 === a || 2 === a ? h = e.um() : 4 === a && (h = e.tm()), c = h.className, m(h).removeClass(c).addClass(b), d = ca(h), f = {
                        backgroundColor: d.backgroundColor,
                        backgroundImage: d.backgroundImage
                    }, m(h).addClass(c), d = ca(h), g = {
                        backgroundColor: d.backgroundColor,
                        backgroundImage: d.backgroundImage,
                        color: d.color,
                        zIndex: d.zIndex
                    }, g.borderLeftColor = d.borderLeftColor, g.borderRightColor = d.borderRightColor, g.borderBottomColor = d.borderBottomColor, g.borderBottomWidth = d.borderBottomWidth, g.borderTopColor = d.borderTopColor, g.borderRightWidth = d.borderRightWidth, g.backgroundImage === f.backgroundImage && g.backgroundColor !== f.backgroundColor && (g.backgroundImage = D), m(h).removeClass(b), g
                },
                Em: function(a) {
                    var b, c = e.zm();
                    return m(c).removeClass(c.className).addClass("gc-theme-version " + a), b = ca(c), s({}, b)
                },
                Fm: function(a) {
                    var b, c = e.sm();
                    return m(c).removeClass(c.className).addClass("gc-theme-version ui-widget-content wijmoThemeHelper btn-default " + a), b = ca(c), s({}, b)
                },
                Gm: function() {
                    var a = x.Yl;
                    a.jm++
                },
                Hm: function() {
                    var a = x.Yl;
                    a.jm--, a.jm < 0 && (a.jm = 0)
                }
            }, x.Yl || (x.Yl = new _), q.VisualState = {
                normal: 0,
                highlight: 1,
                selected: 2,
                active: 3,
                hover: 4
            }, q.SortState = {
                none: 0,
                ascending: 1,
                descending: 2
            }, f = q.Im = {
                styleCache: {}
            }, f.Jm = function(a) {
                var b = {
                    0: "normal",
                    1: "highlight",
                    2: "selected",
                    3: "active",
                    4: "hover"
                };
                return b[a] || ""
            }, f.Km = function(a, b) {
                var c = f.Jm(a) + b,
                    d = f.styleCache;
                return d[c] || (d[c] = e.Dm(a, b)), d[c]
            }, f.Lm = function(a) {
                var b = a,
                    c = f.styleCache;
                return c[b] || (c[b] = e.Em(a)), c[b]
            }, f.Mm = function(a) {
                var b = "content" + a,
                    c = f.styleCache;
                return c[b] || (c[b] = e.Fm(a)), c[b]
            }, f.Nm = function() {
                f.styleCache = {}
            };

            function ha(a, b) {
                this.x = a, this.y = b
            }
            ha.prototype.clone = function() {
                return new ha(this.x, this.y)
            }, q.Point = ha;

            function ia(a, b, c, d) {
                var e = this;
                e.x = a, e.y = b, e.width = c, e.height = d
            }
            ia.prototype = {
                intersect: function(a, b, c, d) {
                    var e = this;
                    return a < e.x + e.width && e.x < a + c && b < e.y + e.height && e.y < b + d
                },
                intersectRect: function(a) {
                    return this.intersect(a.x, a.y, a.width, a.height)
                },
                contains: function(a, b) {
                    var c = this;
                    return c.x < a && a < c.x + c.width && c.y < b && b < c.y + c.height
                },
                containsRect: function(a) {
                    return this.contains(a.x, a.y) && this.contains(a.x + a.width, a.y + a.height)
                },
                getIntersectRect: function(a) {
                    return this.getIntersect(a.x, a.y, a.width, a.height)
                },
                getIntersect: function(a, b, c, d) {
                    var e = this,
                        f = e.x,
                        g = e.y,
                        h = e.x + e.width,
                        i = e.y + e.height,
                        j = a,
                        k = b,
                        l = a + c,
                        m = b + d,
                        n = I(f, j),
                        o = I(g, k),
                        p = H(h, l),
                        q = H(i, m),
                        r = n,
                        s = o,
                        t = p - n,
                        u = q - o;
                    return t > 0 && u > 0 ? new ia(r, s, t, u) : E
                },
                round: function() {
                    var a = this;
                    a.x = F(a.x), a.y = F(a.y), a.width = G(a.width), a.height = G(a.height)
                },
                clone: function() {
                    var a = this;
                    return new ia(a.x, a.y, a.width, a.height)
                }
            }, q.Rect = ia;

            function ja(a, b, c, d) {
                var e = this;
                e.row = a, e.rowCount = c, e.col = b, e.colCount = d
            }
            ja.prototype = {
                intersect: function(a, b, c, d) {
                    var e = this;
                    return (a === -1 || e.row === -1 || e.row < a + c && a < e.row + e.rowCount) && (b === -1 || e.col === -1 || e.col < b + d && b < e.col + e.colCount)
                },
                getIntersect: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m, n = this;
                    return a && n.intersect(a.row, a.col, a.rowCount, a.colCount) ? (d = n.col === -1 ? c - 1 : n.col + n.colCount - 1, e = a.col === -1 ? c - 1 : a.col + a.colCount - 1, f = n.row === -1 ? b - 1 : n.row + n.rowCount - 1, g = a.row === -1 ? b - 1 : a.row + a.rowCount - 1, h = I(n.col, a.col), i = H(d, e), j = I(n.row, a.row), k = H(f, g), l = j === -1 ? -1 : k - j + 1, m = h === -1 ? -1 : i - h + 1, new ja(j, h, l, m)) : E
                },
                contains: function(a, b, c, d) {
                    var e = this,
                        f = arguments.length,
                        g = !1;
                    return 2 !== f && 4 !== f || (2 === f && (c = 1, d = 1), g = (e.row === -1 || e.row <= a && a + c <= e.row + e.rowCount) && (e.col === -1 || e.col <= b && b + d <= e.col + e.colCount)), g
                },
                containsRange: function(a) {
                    return this.contains(a.row, a.col, a.rowCount, a.colCount)
                },
                offset: function(a, b) {
                    var c = this,
                        d = c.col,
                        e = c.row;
                    return d !== -1 && (d += a), e !== -1 && (e += b), new ja(e, d, c.rowCount, c.colCount)
                },
                union: function(a) {
                    var b = this,
                        c = H(b.row, a.row),
                        d = H(b.col, a.col),
                        e = I(b.row + b.rowCount - 1, a.row + a.rowCount - 1),
                        f = I(b.col + b.colCount - 1, a.col + a.colCount - 1);
                    return c >= 0 && d >= 0 ? new ja(c, d, e - c + 1, f - d + 1) : c >= 0 ? new ja(c, (-1), e - c + 1, (-1)) : d >= 0 ? new ja((-1), d, (-1), f - d + 1) : new ja((-1), (-1), (-1), (-1))
                },
                equals: function(a) {
                    var b = this;
                    return a instanceof ja && b.row === a.row && b.col === a.col && b.rowCount === a.rowCount && b.colCount === a.colCount
                }
            }, q.Range = ja, q.kf = function(a, b, c, d) {
                return new ja(a, b, c, d)
            };

            function ka() {}
            ka.Om = function(a, b) {
                if (a && b) {
                    var c = a.Pm;
                    if (c) return c.getColor(b)
                }
                return b
            }, ka.Qm = function(a, b) {
                if (a && b) {
                    var c = a.Pm;
                    return c ? c.getFont(b) : b
                }
                return E
            }, q.Rm = ka, g = {}, h = ["ValidationError", "CellClick", "CellDoubleClick", "EnterCell", "LeaveCell", "ValueChanged", "TopRowChanged", "LeftColumnChanged", "InvalidOperation", "RangeFiltering", "RangeFiltered", "TableFiltering", "TableFiltered", "RangeSorting", "RangeSorted", "ClipboardChanging", "ClipboardChanged", "ClipboardPasting", "ClipboardPasted", "ColumnWidthChanging", "ColumnWidthChanged", "RowHeightChanging", "RowHeightChanged", "DragDropBlock", "DragDropBlockCompleted", "DragFillBlock", "DragFillBlockCompleted", "EditStarting", "EditStarted", "EditChange", "EditEnding", "EditEnd", "EditEnded", "RangeGroupStateChanging", "RangeGroupStateChanged", "SelectionChanging", "SelectionChanged", "SheetTabClick", "SheetTabDoubleClick", "SheetNameChanging", "SheetNameChanged", "UserZooming", "UserFormulaEntered", "CellChanged", "ColumnChanged", "RowChanged", "ActiveSheetChanging", "ActiveSheetChanged", "SparklineChanged", "RangeChanged", "ButtonClicked", "EditorStatusChanged", "FloatingObjectChanged", "FloatingObjectSelectionChanged", "PictureChanged", "FloatingObjectRemoving", "FloatingObjectRemoved", "PictureSelectionChanged", "FloatingObjectLoaded", "TouchToolStripOpening", "CommentChanged", "CommentRemoving", "CommentRemoved", "SlicerChanged", "ResetBinding", "InitBinding", "BeforeDragDrop", "FormulatextboxActiveSheetChanging", "FormulatextboxActiveSheetChanged", "FormulatextboxEditStarted", "FormulatextboxEnterCell", "FormulatextboxEditEnded", "FormulatextboxRangeChanged", "SheetMoving", "SheetMoved", "DragMerging", "DragMerged", "ChartClicked"], r(h, function(a, b) {
                g[b] = b
            }), q.Events = g;

            function la(a) {
                this.kj = a
            }
            la.prototype = {
                Sm: function(a, b, c) {
                    var d, e = this.Tm,
                        f = a << 4 + b;
                    return e ? (d = e[f], d || (d = c(), e[f] = d), d) : c()
                },
                Um: function(a, b) {
                    var c, d = this.Vm;
                    return d && (c = d[a]) ? c[b] : E
                },
                Wm: function(a, b, c, d) {
                    var e, f = this.Vm;
                    f && (f[a] || (f[a] = {}), e = f[a], e[b] = {
                        d: c,
                        i: d
                    })
                },
                ge: function(a, b, c) {
                    var d, e, f, g = this,
                        h = g.kj,
                        i = g.Xm;
                    return c === D && (c = 3), i ? (d = i[c], d || (d = {}, i[c] = d), e = d[a], e || (e = {}, d[a] = e), f = e[b], f === D && (f = h.getValue(a, b, c), e[b] = f), f) : h.getValue(a, b, c)
                },
                Ym: function(a, b, c) {
                    var d, e, f, g = this,
                        h = g.kj,
                        i = g.Zm;
                    return c === D && (c = 3), i ? (d = i[c], d || (d = {}, i[c] = d), e = d[a], e || (e = {}, d[a] = e), f = e[b], f || (f = h.getActualStyle(a, b, c, !1, !0), e[b] = f), f.clone(!0)) : h.getActualStyle(a, b, c, !1, !1)
                },
                Sl: function(a) {
                    var b, c = this,
                        d = c.kj,
                        e = c.$m;
                    return e ? (b = e[a], b === D && (b = e[a] = d.Sl(a)), b) : d.Sl(a)
                },
                _m: function(a) {
                    var b, c = this,
                        d = c.kj,
                        e = c.an;
                    return e ? (b = e[a], b === D && (b = e[a] = d.Tl(a)), b) : d.Tl(a)
                },
                bn: function(a) {
                    var b = this;
                    return b.Xm ? (b.cn || (b.cn = a()), b.cn) : a()
                },
                dn: function(a) {
                    var b = this;
                    return b.Xm ? (b.gn || (b.gn = a()), b.gn) : a()
                },
                hn: function() {
                    var a = this;
                    a. in = !0, a.Tm = {}, a.Vm = {}, a.Xm = {}, a.Zm = {}, a.$m = {}, a.an = {}
                },
                jn: function() {
                    this. in = !1
                },
                kn: function() {
                    var a = this;
                    a. in = !1, a.Tm = E, a.Vm = E, a.Xm = E, a.Zm = E, a.an = E, a.$m = E, a.cn = E, a.gn = E
                }
            }, q.ln = la, i = q.mn = {
                nn: !1,
                on: {},
                pn: {}
            }, i.qn = function(a, b, c, d, e) {
                var f, g, h, j;
                if (i.nn = !0, f = a.tables, f && f.rn(b, c, d - b + 1, e - c + 1)) for (g = -1, h = i.sn = [], j = 0; j <= d; j++) a.getRowVisible(j) ? (g++, h[j] = g) : h[j] = -1
            }, i.Nm = function() {
                i.sn = E, i.nn = !1
            }, i.tn = function(a) {
                var b = i.on;
                return b[a] || (b[a] = v ? new v(a) : E), b[a]
            }, i.un = function(a, b, c) {
                var d, e, f, g, h, j, k, l = i.pn,
                    m = a + "_" + typeof a;
                return v ? (l[b] || (l[b] = {}), d = l[b], (e = d[m]) ? (c && (c.conditionalForeColor = c.value = e.color, c.content = u(e.content)), e.text) : (f = i.on, f[b] || (f[b] = new v(b)), g = f[b], h = {}, j = g.format(a, h), k = d[m] = {}, k.text = j, k.color = h.conditionalForeColor, k.content = h.content, c && (c.conditionalForeColor = c.value = h.conditionalForeColor, c.content = u(h.content)), j)) : "" + a
            }, i.vn = function(a, b, c, d) {
                var e = b.cellType || a.Al(),
                    f = b.formatter || b._autoFormatter;
                return e.format(c, f, d, E)
            }, i.wn = function() {
                i.on = {}, i.pn = {}
            };

            function ma(a) {
                var b = a.An || {
                        scaleX: 1,
                        scaleY: 1,
                        translateX: 0,
                        translateY: 0,
                        skewX: 0,
                        skewY: 0,
                        orgTranslateX: 0,
                        orgTranslateY: 0
                    };
                return a.An = b, b
            }
            j = q.Bn = {
                Cn: function(a, b, c) {
                    var d = ma(a);
                    d.scaleX = b, d.scaleY = c, d.translateX = d.orgTranslateX * b, d.translateY = d.orgTranslateY * c, a.setTransform(d.scaleX, d.skewX, d.skewY, d.scaleY, d.translateX, d.translateY)
                },
                Dn: function(a, b, c) {
                    var d = ma(a);
                    d.orgTranslateX += b, d.orgTranslateY += c, d.translateX = d.orgTranslateX * d.scaleX, d.translateY = d.orgTranslateY * d.scaleY, a.setTransform(d.scaleX, d.skewX, d.skewY, d.scaleY, d.translateX, d.translateY)
                }
            }, k = q.En = {
                dpr: 1,
                Fn: []
            };

            function na() {
                var a, b, c = x.screen,
                    d = c.deviceXDPI,
                    e = x.devicePixelRatio || (d ? d / c.logicalXDPI : 1);
                return e <= 1 ? 1 : (a = 20 * e, b = J(a), b - a > .82 ? b / 20 : J(100 * e) / 100)
            }
            function oa(a, b) {
                a && (a.Gn = b)
            }
            function pa(a, b) {
                a && (a.Hn = b)
            }
            function qa(a, b) {
                a.In = b
            }
            function ra(a, b) {
                a.Jn = b
            }
            k.Kn = function(a, b, c) {
                var d, e, f, g, h, i, j, l, m = k;
                if (oa(a, 1), pa(a, 1), d = na(), (1 !== d || 1 !== m.dpr) && (m.dpr = d, e = b ? b : c && c.parent)) {
                    for (f = m.Fn, h = 0; h < f.length; h++) if (e === f[h].workbook) {
                        g = f[h];
                        break
                    }
                    if (g || (g = {
                            workbook: e,
                            sheets: [],
                            canvases: []
                        }, f.push(g)), b) g.canvases.push(a);
                    else {
                        for (j = g.sheets, l = 0; l < j.length; l++) if (j[l].sheet === c) {
                            i = j[l];
                            break
                        }
                        i || (i = {
                            sheet: c,
                            canvases: []
                        }, j.push(i)), i.canvases.push(a)
                    }
                }
            }, k.Ln = function(a) {
                return a && a.Gn || 1
            }, k.Mn = function(a) {
                return a && a.Hn || 1
            }, k.Nn = function(a) {
                return a.In
            }, k.On = function(a) {
                return a.Jn
            }, k.Pn = function(a, c, d) {
                var e, f, g, h = k,
                    i = h.dpr,
                    l = h.Ln(a),
                    m = h.Mn(a);
                qa(a, c), ra(a, d), 1 === i && 1 === l && 1 === m ? (a.width = c, a.height = d) : (e = a.getContext("2d"), j.Cn(e, 1, 1), b.Ml.mozilla ? (a.width = G(c * i), a.height = G(d * i)) : (a.width = J(c * i), a.height = J(d * i)), a.style.width = c + N, a.style.height = d + N, f = a.width / c, g = a.height / d, f === l && g === m || (oa(a, f), pa(a, g)), j.Cn(e, f, g))
            }, k.Qn = function(a, b) {
                var c, d, e, f, g, h = k.Fn,
                    i = a.parent;
                for (e = 0; e < h.length; e++) if (!i || h[e].workbook === i) for (c = h[e].sheets, f = 0; f < c.length; f++) if (c[f].sheet === a) {
                    for (d = c[f].canvases, g = 0; g < d.length; g++) if (d[g] === b) {
                        d.splice(g, 1);
                        break
                    }
                    break
                }
            }, k.Rn = function(a, b) {
                var c, d, e, f = k.Fn;
                for (d = 0; d < f.length; d++) if (f[d].workbook === a) for (c = f[d].canvases, e = 0; e < c.length; e++) if (c[e] === b) {
                    c.splice(e, 1);
                    break
                }
            }, k.Sn = function(a) {
                var b, c, d, e = k.Fn,
                    f = a.parent;
                for (c = 0; c < e.length; c++) if (!f || e[c].workbook === f) {
                    for (b = e[c].sheets, d = 0; d < b.length; d++) b[d].sheet === a && b.splice(d, 1);
                    return
                }
            }, k.Tn = function(a) {
                var b, c = k.Fn;
                for (b = 0; b < c.length; b++) if (c[b].workbook === a) return void c.splice(b, 1)
            }, k.Un = function() {
                var a, b, c, d, e, f, g, h, i = k,
                    j = na();
                if (i.dpr !== j) for (a = i.Fn, i.dpr = j, f = 0; f < a.length; f++) {
                    for (c = a[f], d = c.canvases, b = c.sheets, g = 0; g < b.length; g++) d = d.concat(b[g].canvases);
                    for (h = 0; h < d.length; h++) e = d[h], i.Pn(e, i.Nn(e), i.On(e))
                }
            }, l = q.Vn = {}, l.oV = function(a, b, c, d, e) {
                var f, g, h, i, j = [];
                if (0 === b.length) return j;
                if (d) j = l.Wn(b, e, c, !0);
                else for (f = b.split(/\r\n|\r|\n/), g = 0; g < f.length; g++) {
                    for (h = [], i = 0; i < f[g].length; i++) h.push(f[g][i]);
                    j.push(h)
                }
                return j
            }, l.Wn = function(a, c, d, e) {
                var f, g, h, i, j, k, l, m, n, o, p = [];
                if (0 === a.length) return p;
                if (f = sa(), !f) return p;
                if (b.lZa(f, d), g = b.fp(d), c <= 0) {
                    for (h = -1, i = !0, j = 0; j < a.length; j++) k = a.charAt(j), k === O || i ? k !== O && i && (h = e ? g : f.measureText(k).width, i = !1) : h = H(h, e ? g : f.measureText(k).width);
                    if (c = h, c <= 0) return [a]
                }
                for (l = a.split(/\r\n|\r|\n/), m = 0; m < l.length; m++) if (n = wa(l[m], c, e, g)) if (0 === n.length) p.push("");
                else for (o = 0; o < n.length; o++) p.push(n[o]);
                return p
            }, l.Xn = function(a, c, d) {
                var e, f = sa();
                return f ? (c && b.lZa(f, c), e = d ? ua(a) : a, f.measureText(e).width) : 0
            };

            function sa() {
                return l.Yn || (l.Yn = V("canvas").getContext("2d")), l.Yn
            }
            function ta(a) {
                var b, c, d, e = [],
                    f = 0,
                    g = O;
                for (b = 0; b < a.length; b++) e[f] === D && (e[f] = ""), c = a.charAt(b), d = "", b + 1 < a.length && (d = a.charAt(b + 1)), c === g && d !== g ? (e[f] += c, f++) : e[f] += c;
                return e
            }
            function ua(a) {
                for (var b = a.length - 1;
                     " " === a.charAt(b);) b--;
                return b !== a.length - 1 && (a = a.substring(0, b + 1)), a
            }
            function va(a, b, c, d) {
                var e, f, g, h, i, j, k, l, m, n = [],
                    o = sa();
                if (!o) return n;
                for (c ? (f = a.length * d, e = G(b / d)) : (f = o.measureText(a).width, g = f / a.length, e = G(b / g)); f > b && a;) for (h = !1, i = e;;) {
                    if (a.length < i) {
                        n.push(a), a = "";
                        break
                    }
                    if (j = a.substring(0, i), k = c ? i * d : o.measureText(j).width, k === b || h && k < b) {
                        n.push(j), a = a.substring(i), f -= k;
                        break
                    }
                    if (k > b) {
                        if (1 === j.length) {
                            l = a.substring(j.length), l.trim() ? (n.push(j), a = a.substring(i), f -= k) : (n.push(a), a = "");
                            break
                        }
                        i -= 1, h = !0
                    } else m = c ? (b - k) / d : (b - k) / g, m = m >= 1 ? m : 1, i += m
                }
                return a && n.push(a), n
            }
            function wa(a, b, c, d) {
                var e, f, g, h, i, j, k, m, n, o, p, q, r, s, t = [],
                    u = ta(a),
                    v = sa();
                if (!v) return t;
                for (e = v.measureText(a).width, f = c ? d : e / a.length, g = K(b / f + "", 10), h = 0, i = 0, j = 0, k = 0, m = [], n = !1; k < u.length;) {
                    if (n === !1) {
                        if (o = u[k], m.push(o), i += o.length, i < g && k < u.length - 1) {
                            k++;
                            continue
                        }
                        j = i, i = 0
                    }
                    if (p = c ? m.join("").length * d : l.Xn(m.join(""), D, !0), p > b) if (q = m.pop(), 0 === m.length) {
                        for (r = va(q, b, c, d), s = 0; s < r.length - 1; s++) t[h++] = r[s];
                        r.length >= 2 ? u[k] = r[r.length - 1] : k++, n = !1
                    } else n = !0, k--;
                    else p < b && n === !0 || p === b ? (n = !1, t[h++] = ua(m.join("")), m = [], k++) : p < b && (k++, i = j)
                }
                return 0 !== m.length && (t[h] = ua(m.join(""))), t
            }
            q.Zn = function(a) {
                a.$n = function(b, c) {
                    var d, e;
                    for (a._n || (a._n = []), d = a._n, c.name = b, c.priority = c.priority || 5e3, e = 0;; e++) if (e >= d.length || c.priority > d[e].priority) {
                        d.splice(e, 0, c);
                        break
                    }
                }, a.ao = function(b, c, d, e) {
                    var f, g, h = a._n;
                    if (h) for (f = 0; f < h.length && (g = h[f][c], g && g.call(b, d), !e || !e()); f++);
                }
            };

            function xa() {
                this.JTa = {}
            }
            xa.prototype.get = function(a, b) {
                var c = this.JTa[a];
                return c ? c[b] : D
            }, xa.prototype.set = function(a, b, c) {
                var d = this.JTa[a];
                d || (d = this.JTa[a] = {}), d[b] = c
            }, q.KTa = xa, a.exports = q
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f = c(26),
                g = f.j,
                h = f.D,
                i = void 0,
                j = null,
                k = parseFloat,
                l = document,
                m = "_nonamespace",
                n = "events",
                o = "get",
                p = "set",
                q = "width",
                r = "height",
                s = "left",
                t = "right",
                u = "top",
                v = "bottom",
                w = "hidden",
                x = "block",
                y = "none",
                z = "position",
                A = "visibility",
                B = "display",
                C = {
                    tabindex: "tabIndex",
                    readonly: "readOnly",
                    for :"htmlFor",
                    class: "className",
                    maxlength: "maxLength",
                    cellspacing: "cellSpacing",
                    cellpadding: "cellPadding",
                    rowspan: "rowSpan",
                    colspan: "colSpan",
                    usemap: "useMap",
                    frameborder: "frameBorder",
                    contenteditable: "contentEditable"
                },
                D = {
                    tabIndex: {
                        get: function(a) {
                            var b = a.getAttributeNode("tabindex"),
                                c = /^(?:input|select|textarea|button|object)$/i,
                                d = /^(?:a|area)$/i,
                                e = a.nodeName;
                            return b && b.specified ? parseInt(b.value, 10) : c.test(e) || d.test(e) && a.href ? 0 : i
                        }
                    }
                },
                E = {
                    option: {
                        get: function(a) {
                            var b = a.attributes.value;
                            return !b || b.specified ? a.value : a.text
                        }
                    },
                    select: {
                        get: function(a) {
                            var b, c, d = a.options,
                                e = a.selectedIndex,
                                f = "select-one" === a.type || e < 0,
                                g = f ? j : [],
                                h = f ? e + 1 : d.length,
                                i = f ? e : 0;
                            for (e < 0 && (i = h); i < h; i++) if (c = d[i], (c.selected || i === e) && !c.disabled && (!c.parentNode.disabled || !M(c.parentNode, "optgroup"))) {
                                if (b = K(c).val(), f) return b;
                                g.push(b)
                            }
                            return g
                        },
                        set: function(a, b) {
                            var c = K.makeArray(b),
                                d = K(a).find("option").getAll();
                            return d.forEach(function(a) {
                                a.selected = K.inArray(K(a).val(), c) >= 0
                            }), c.length || (a.selectedIndex = -1), c
                        }
                    }
                },
                F = {},
                G = "GC$" + ("" + Math.random()).replace(/\D/g, ""),
                H = 1,
                I = {};
            [r, q].forEach(function(a) {
                I[a] = {
                    get: function(b) {
                        var c, d, e, f = getComputedStyle(b),
                            g = b.style,
                            h = g[z],
                            i = g[A],
                            j = g[B],
                            k = 0 === b.offsetWidth && /^(none|table(?!-c[ea]).+)/.test(f[B]);
                        if (k && (g[z] = "absolute", g[A] = w, g[B] = x), c = f && f[a], k && (g[z] = h, g[A] = i, g[B] = j), "" === c) {
                            for (d = b.parentElement, e = l.body; d && d !== e;) d = d.parentElement;
                            d !== e && (c = g[a])
                        }
                        return c
                    }
                }
            });

            function J(a, b) {
                var c, d;
                for (Array.call(this), "string" == typeof a ? c = (b || l).querySelectorAll(a) : a && (c = g.Ca(a) || a instanceof HTMLCollection ? a : [a]), d = 0; c && d < c.length; d++) this.push(c[d])
            }
            function K(a, b) {
                return a instanceof J ? a : new J(a, b)
            }
            b = {
                get: function(a) {
                    return this[a]
                },
                getAll: function() {
                    return this
                },
                bind: function(a, b, c) {
                    var d = this;
                    return X(c) && (c = b, b = i), d.forEach(function(d) {
                        var e, f, g, h, j, k, l = R(d, n, i, !0);
                        l || (l = {}, R(d, n, l, !0)), e = a.split("."), f = e[0], g = e[1] || m, h = l[g], h || (h = l[g] = {}), j = function(a) {
                            X(b) || (a.data = b);
                            var e = c.apply(d, arguments);
                            a.result = e, e === !1 && (a.preventDefault ? (a.preventDefault(), a.stopPropagation()) : (a.cancelBubble = !1, a.returnValue = !1))
                        }, j.original = c, k = h[f], k || (k = h[f] = []), k.push(j), d.addEventListener(f, j)
                    }), d
                },
                unbind: function(a, b) {
                    var c = this;
                    return c.forEach(function(c) {
                        var d, e, f, g, j = a.split("."),
                            k = j[0],
                            l = j[1] || m,
                            o = R(c, n, i, !0),
                            p = o && o[l];
                        if (b) {
                            if (p && k && (d = p[k])) for (e = 0, f = d.length; e < f; e++) if (d[e].original === b) {
                                ba(c, k, d[e]), d.splice(e, 1);
                                break
                            }
                        } else if (p) if (k) {
                            if (d = p[k]) for (e = 0, f = d.length; e < f; e++) ba(c, k, d[e]);
                            p[k] = i
                        } else {
                            for (g in p) if (h(p, g) && (d = p[g])) for (e = 0, f = d.length; e < f; e++) ba(c, g, d[e]);
                            o[l] = i
                        }
                    }), c
                },
                trigger: function(a, b) {
                    var c, d, e, f, g, j, k, l, m, o, p, q = this;
                    for (c = 0, d = q.length; c < d; c++) if (e = q[c], f = R(e, n, i, !0)) {
                        g = a.split("."), j = g[0];
                        for (k in f) if (h(f, k) && (l = f[k], m = l && l[j])) for (o = 0, p = m.length; o < p; o++) m[o].apply(e, [{
                            type: j
                        },
                            b])
                    }
                    return q
                },
                css: function(a, b) {
                    var c, d, e, f = this,
                        g = f,
                        i = arguments.length;

                    function j(a, b) {
                        g.forEach(function(c) {
                            c.style[a] = N(a, b)
                        })
                    }
                    if (1 === i) {
                        if (!W(a)) return c = f[0], d = I[a], d && o in d ? d.get(c) : (e = getComputedStyle(c), e && e[a]);
                        g.forEach(function(b) {
                            for (var c in a) h(a, c) && (b.style[c] = N(c, a[c]))
                        })
                    } else 2 === i && (Array.isArray(a) && Array.isArray(b) && a.length === b.length ? a.forEach(function(a, c) {
                        j(a, b[c])
                    }) : j(a, b));
                    return f
                },
                width: Y(!0),
                height: Y(),
                innerWidth: Z(!0),
                innerHeight: Z(),
                outerWidth: $(!0),
                outerHeight: $(),
                append: function(a) {
                    var b, c, d = [a];
                    return a instanceof K && (d = a.getAll()), b = this, c = b[0], d.forEach(function(a) {
                        a && c.appendChild(a)
                    }), b
                },
                appendTo: function(a) {
                    var b, c = a;
                    return a instanceof K && (c = a[0]), b = this, b.forEach(function(a) {
                        c.appendChild(a)
                    }), b
                },
                prepend: function(a) {
                    var b = this,
                        c = b[0];
                    return c.insertBefore(a, c.firstChild), b
                },
                insertBefore: function(a) {
                    var b = this,
                        c = a.parentElement;
                    return b.forEach(function(b) {
                        c.insertBefore(b, a)
                    }), b
                },
                addClass: function(a) {
                    var b, c, d, e, f, g = 0,
                        h = this,
                        i = h.length,
                        j = /\S+/g,
                        k = /[\t\r\n]/g;
                    for (b = (a || "").match(j) || []; g < i; g++) if (c = h[g], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(k, " ") : " ")) {
                        for (f = 0; e = b[f++];) d.indexOf(" " + e + " ") < 0 && (d += e + " ");
                        c.className = K.trim(d)
                    }
                    return this
                },
                removeClass: function(a) {
                    var b, c, d, e, f, g = 0,
                        h = this,
                        i = h.length,
                        j = /\S+/g,
                        k = /[\t\r\n]/g;
                    for (b = (a || "").match(j) || []; g < i; g++) if (c = h[g], d = 1 === c.nodeType && (c.className ? (" " + c.className + " ").replace(k, " ") : "")) {
                        for (f = 0; e = b[f++];) for (; d.indexOf(" " + e + " ") >= 0;) d = d.replace(" " + e + " ", " ");
                        c.className = a ? K.trim(d) : ""
                    }
                    return this
                },
                hasClass: function(a) {
                    var b, c = 0,
                        d = this,
                        e = d.length,
                        f = /[\t\r\n]/g;
                    for (a = " " + a + " "; c < e; c++) if (b = d[c], 1 === b.nodeType && (" " + b.className + " ").replace(f, " ").indexOf(a) >= 0) return !0;
                    return !1
                },
                toggle: function() {
                    var a = this,
                        b = a[0];
                    return b.style[B] === y ? a.show() : a.hide(), a
                },
                show: _(!0),
                hide: _(),
                attr: function(a, b) {
                    var c = this,
                        d = c,
                        e = arguments.length;
                    if (1 === e) {
                        if (!W(a)) return c[0].getAttribute(a);
                        d.forEach(function(b) {
                            for (var c in a) h(a, c) && b.setAttribute(c, a[c])
                        })
                    } else 2 === e && d.forEach(function(c) {
                        c.setAttribute(a, b)
                    });
                    return c
                },
                removeAttr: function(a) {
                    return this.forEach(function(b) {
                        b.removeAttribute(a)
                    }), this
                },
                prop: function(a, b) {
                    var c = this,
                        d = c,
                        e = arguments.length;
                    if (1 === e) {
                        if (!W(a)) return O(c[0], a);
                        d.forEach(function(b) {
                            for (var c in a) h(a, c) && O(b, c, a[c])
                        })
                    } else 2 === e && d.forEach(function(c) {
                        O(c, a, b)
                    });
                    return c
                },
                removeProp: function(a) {
                    a = C[a] || a;
                    var b = this,
                        c = b;
                    return c.forEach(function(b) {
                        try {
                            b[a] = i, delete b[a]
                        } catch (a) {}
                    }), b
                },
                text: function(a) {
                    var b = this,
                        c = b;
                    return 0 === arguments.length ? b[0].textContent : (c.forEach(function(b) {
                        b.textContent = a
                    }), b)
                },
                val: function(a) {
                    var b, c, d, e, f = this; {
                        if (arguments.length) return e = K.isFunction(a), f.forEach(function(c, d) {
                            var f;
                            1 === c.nodeType && (f = e ? a.call(c, d, K(c).val()) : a, f === j || f === i ? f = "" : "number" == typeof f ? f += "" : K.isArray(f) && (f = K.map(f, function(a) {
                                return a === j || a === i ? "" : a + ""
                            })), b = E[c.type] || E[c.nodeName.toLowerCase()], b && p in b && !X(b.set(c, f, "value")) || (c.value = f))
                        }), f;
                        if (c = f[0]) return b = E[c.type] || E[c.nodeName.toLowerCase()], b && o in b && (d = b.get(c, "value"), !X(d)) ? d : (d = c.value, V(d) ? d.replace(/\r/g, "") : d === j || d === i ? "" : d)
                    }
                },
                position: function() {
                    var a, b, c, d, e = this[0];
                    if (e) return b = {
                        top: 0,
                        left: 0
                    }, "fixed" === K(e).css(z) ? a = e.getBoundingClientRect() : (c = this.offsetParent(), a = this.offset(), d = c[0], M(d, "html") || (b = c.offset(), b.left -= d.scrollLeft, b.top -= d.scrollTop), b.top += k(K(d).css("borderTopWidth")), b.left += k(K(d).css("borderLeftWidth"))), {
                        top: a.top - b.top - k(K(e).css("marginTop")),
                        left: a.left - b.left - k(K(e).css("marginLeft"))
                    }
                },
                offsetParent: function() {
                    var a = K.map(this, function(a) {
                        for (var b = l.documentElement, c = a.offsetParent || b; c && !M(c, "html") && "static" === K(c).css(z);) c = c.offsetParent;
                        return c || b
                    });
                    return K(a)
                },
                offset: function() {
                    var a, b, c = {
                            top: 0,
                            left: 0
                        },
                        d = this[0],
                        e = d && d.ownerDocument;
                    if (e) return a = e.documentElement, X(d.getBoundingClientRect) || (c = d.getBoundingClientRect()), b = L(e), {
                        top: c.top + (b.pageYOffset || a.scrollTop) - (a.clientTop || 0),
                        left: c.left + (b.pageXOffset || a.scrollLeft) - (a.clientLeft || 0)
                    }
                },
                scrollLeft: aa(!0),
                scrollTop: aa(),
                html: function(a) {
                    var b = this,
                        c = b;
                    return 0 === arguments.length ? b[0].innerHTML : (c.forEach(function(b) {
                        b.innerHTML = a
                    }), b)
                },
                remove: function() {
                    var a = this;
                    a.forEach(function(a) {
                        var b = a.parentElement;
                        b && (b.removeChild(a), U([a]))
                    })
                },
                empty: function() {
                    return this.forEach(function(a) {
                        K(a.children).remove()
                    }), this
                },
                find: function(a) {
                    var b = [];
                    return V(a) && this.forEach(function(c) {
                        var d = c.querySelectorAll(a);
                        K.merge(b, d)
                    }), K(b)
                },
                parent: function() {
                    var a = [];
                    return this.forEach(function(b) {
                        var c = b.parentElement;
                        c && a.push(c)
                    }), K(a)
                },
                index: function(a) {
                    var b = this[0];
                    return a ? V(a) ? K.inArray(b, K(a).getAll()) : K.inArray(a, this) : b && b.parentElement ? K.inArray(b, b.parentElement.children) : -1
                },
                focus: function() {
                    var a = this,
                        b = a[0];
                    return b !== l.activeElement && b.focus && b.focus(), a
                },
                isVisible: function() {
                    var a = 0;
                    return this.forEach(function(b) {
                        var c = getComputedStyle(b);
                        c[A] !== w && c[B] !== y && a++
                    }), a > 0
                },
                data: function(a, b) {
                    var c = this,
                        d = X(b);
                    return d && (c = void 0), K.each(this, function(e, f) {
                        var g = R(f, a, b);
                        if (d) return c = g, !1
                    }), c
                },
                removeData: function(a) {
                    return K.each(this, function(b, c) {
                        T(c, a)
                    }), this
                }
            }, d = J.prototype = [], g.Ia(d, b), K.prototype = d, K.each = g.H, K.isEmptyObject = g.za, K.isFunction = g.Aa, K.isArray = g.Ca, K.isNumeric = g.Da, K.getType = g.Ba, K.inArray = g.Ea, K.merge = g.Ga, K.map = g.Ha, K.extend = g.Ia, K.inherit = g.G, K.isPlainObject = g.Ja, K.isArraylike = g.ya, K.isWindow = g.Ka, K.makeArray = g.La, K.trim = function(a) {
                if (a.trim) return a.trim();
                var b = /^[\s﻿ ]+|[\s﻿ ]+$/g;
                return a === j || a === i ? "" : (a + "").replace(b, "")
            }, K.Nl = function(a, b, c, d, e) {
                var f = K(l.createElement(a));
                return b && c && f.css(b, c), d && f.addClass(d), e && (e instanceof K ? e.append(f) : K(e).append(f)), f
            };

            function L(a) {
                return K.isWindow(a) ? a : 9 === a.nodeType && (a.defaultView || a.parentWindow)
            }
            function M(a, b) {
                var c = a.nodeName;
                return c && c.toLowerCase() === b.toLowerCase()
            }
            function N(a, b) {
                return "top left right bottom width height border-radius border-width border-left-width border-right-width border-top-width border-bottom-width line-height padding padding-left padding-right padding-top padding-bottom margin margin-left margin-right margin-top margin-bottom".split(" ").indexOf(a) >= 0 && isFinite(b) ? ("width height".split(" ").indexOf(a) >= 0 && b < 0 && (b = 0), b + "px") : b
            }
            function O(a, b, c) {
                var d, e, f, g = a.nodeType;
                if (a && 3 !== g && 8 !== g && 2 !== g) return f = 1 !== g, f && (b = C[b] || b, e = D[b]), X(c) ? e && o in e && (d = e.get(a, b)) !== j ? d : a[b] : e && p in e && (d = e.set(a, c, b), !X(d)) ? d : (a[b] = c, c)
            }
            function P(a) {
                var b, c, d, e = a.nodeType;
                return (!e || 1 === e || 9 === e) && (b = {
                        embed: !0,
                        object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
                        applet: !0
                    }, c = a.nodeName, d = c && b[c.toLowerCase()], !d || d !== !0 && a.getAttribute("classid") === d)
            }
            function Q(a) {
                return a.replace(/^-ms-/, "ms-").replace(/-([\da-z])/gi, function(a, b) {
                    return b.toUpperCase()
                })
            }
            function R(a, b, c, d) {
                if (P(a)) {
                    var e, f, g = G,
                        h = V(b),
                        k = a.nodeType,
                        l = k ? F : a,
                        m = k ? a[g] : a[g] && g;
                    if (m && l[m] && (d || l[m].data) || !h || !X(c)) return m || (k ? a[g] = m = H++ : m = g), l[m] || (l[m] = {}, k || (l[m].toJSON = function() {})), (W(b) || "function" == typeof b) && (d ? l[m] = K.extend(l[m], b) : l[m].data = K.extend(l[m].data, b)), e = l[m], d || (e.data || (e.data = {}), e = e.data), X(c) || (e[Q(b)] = c), h ? (f = e[b], f !== j && f !== i || (f = e[Q(b)])) : f = e, f
                }
            }
            function S(a) {
                var b;
                for (b in a) if (("data" !== b || !K.isEmptyObject(a[b])) && "toJSON" !== b) return !1;
                return !0
            }
            function T(a, b, c) {
                if (P(a)) {
                    var d, e, f, g = a.nodeType,
                        h = g ? F : a,
                        i = g ? a[G] : G;
                    if (h[i]) {
                        if (b && (f = c ? h[i] : h[i].data)) {
                            K.isArray(b) ? b = b.concat(K.map(b, Q)) : b in f ? b = [b] : (b = Q(b), b = b in f ? [b] : b.split(" "));
                            for (d = 0, e = b.length; d < e; d++) delete f[b[d]];
                            if (!(c ? S : K.isEmptyObject)(f)) return
                        }(c || (delete h[i].data, S(h[i]))) && (g ? U([a], !0) : h !== h.window ? delete h[i] : h[i] = j)
                    }
                }
            }
            function U(a, b) {
                for (var c, d, e, f, g, i, k, l, m, n, o = 0, p = G, q = F;
                     (c = a[o]) !== j && void 0 !== c; o++) if ((b || P(c)) && (d = c[p], e = d && q[d])) {
                    if (f = e.events) for (g in f) if (h(f, g) && (i = f[g])) for (k in i) if (h(i, k) && (l = i[k])) for (m = 0, n = l.length; m < n; m++) ba(c, g, l[m]);
                    q[d] && (delete q[d], delete c[p])
                }
            }
            function V(a) {
                return "string" == typeof a
            }
            function W(a) {
                return "object" == typeof a
            }
            function X(a) {
                return typeof a == typeof i
            }
            function Y(a) {
                var b = a;
                return function(a) {
                    var c, d = this,
                        e = "border-box" === d.css("box-sizing"),
                        f = b ? q : r,
                        g = b ? s : u,
                        h = b ? t : v;
                    return 0 === arguments.length ? (c = Math.round(k(d.css(f))) || 0, e && (c -= k(d.css("padding-" + g)) + k(d.css("padding-" + h)) + k(d.css("border-" + g + "-" + q)) + k(d.css("border-" + h + "-" + q))), c) : (d.css(f, a), d)
                }
            }
            function Z(a) {
                var b = a;
                return function() {
                    var a = this,
                        c = b ? s : u,
                        d = b ? t : v;
                    return b ? a.width() : a.height() + k(a.css("padding-" + c)) + k(a.css("padding-" + d))
                }
            }
            function $(a) {
                var b = a;
                return function(a) {
                    var c = b ? s : u,
                        d = b ? t : v,
                        e = this,
                        f = b ? e.innerWidth() : e.innerHeight();
                    return f += k(e.css("border-" + c + "-" + q)) + k(e.css("border-" + d + "-" + q)), a && (f += k(e.css("margin-" + c)) + k(e.css("margin-" + d))), f
                }
            }
            function _(a) {
                var b = a;
                return function(a) {
                    return this.forEach(function(c) {
                        c.style[B] = b ? x : y, a && a.apply(c)
                    }), this
                }
            }
            function aa(a) {
                var b = a;
                return function(a) {
                    var c = "scrollLeft",
                        d = "scrollTop",
                        e = b ? c : d,
                        f = b ? "pageXOffset" : "pageYOffset",
                        g = this,
                        h = g[0],
                        i = L(h);
                    return X(a) ? i ? f in i ? i[f] : l.documentElement[e] : h[e] : (i ? i.scrollTo(b ? a : K(i)[c](), b ? K(i)[d]() : a) : h[e] = a, g)
                }
            }
            function ba(a, b, c) {
                a.removeEventListener(b, c)
            }
            e = c(42), e.GC$ = K, a.exports = e
        }()
}, function(a, b, c) {
    var d = c(26),
        e = c(42),
        f = c(46),
        g = c(43).Ul.lZa;

    function h(a, b) {
        var c, d, e, f, g = "",
            h = 0;
        for (c = 0; c < a.length; c++) h = Math.max(h, a[c].length);
        for (c = 0; c < h; c++) {
            for (b && (d = ""), f = 0; f < a.length; f++) b ? d += c >= a[f].length ? "00" : a[f].charAt(c) + a[f].charAt(c + 1) : c < a[f].length && (g += a[f].charAt(c));
            b && (e = parseInt(d, 16), g += String.fromCharCode(e), c++)
        }
        return g
    }
    function j(a, b, c, d) {
        var e, h, j, k, l, m, n, o, p, q = a.am(),
            r = "11pt calibri",
            s = d.hl && d.isVd(!1) && d.d,
            t = "",
            u = "",
            v = !0;
        for (h = s ? "l2" : d.e ? "l5" : d.hl && !d.d ? "l6" : "l1", q = q || a.am(), j = ["LcneNtFud\no edavldlcnekyt u pedSet.\neprr esaeaalbefreauto.\nfyuprhsdalcne orkyi nyu ucaecnimto mi.\nmi sslsgaeiycmi o edassac.", "ies o on\rYune  ai ies e ornSra.hes\rTmoayky r vial o vlain\rI o ucae  ies,yu e si orprhs ofraineal\rEalu.ae@rpct.o fyune sitne"], k = f.e6(h, j, d), i = 0; i < k.length; i++) t = k[i], l = a.dp(t, r), m = 10, n = 20, o = q.width - l - m, p = q.height - m - n * (k.length - i), c && !c.intersect(o, p, l, n) || (b.save(), b.fillStyle = "rgba(0, 0, 0, 0.5)", g(b, r), c && (b.rect(c.x, c.y, c.width, c.height), b.clip(), b.beginPath()), b.fillText(t, o, p + n), t && (a.l = d), b.restore())
    }
    function k() {
        f.Gb(j)
    }
    a.exports = {
        Soa: 1,
        g_a: f.g_a,
        h_a: f.h_a,
        Gb: k
    }
}, function(a, b, c) {
    var d = c(47).g_a;
    !
        function() {
            "use strict";
            var b, e, f, g = c(26),
                h = c(42),
                i = c(44).GC$,
                j = c(43).Ul.lZa;

            function k(a, b) {
                var c, d, e, f, g = "",
                    h = 0;
                for (c = 0; c < a.length; c++) h = Math.max(h, a[c].length);
                for (c = 0; c < h; c++) {
                    for (b && (d = ""), f = 0; f < a.length; f++) b ? d += c >= a[f].length ? "00" : a[f].charAt(c) + a[f].charAt(c + 1) : c < a[f].length && (g += a[f].charAt(c));
                    b && (e = parseInt(d, 16), g += String.fromCharCode(e), c++)
                }
                return g
            }
            b = function(a) {
                var b, c = k(["Lcnee", "iesKy"]),
                    e = h[c],
                    f = "wE+VWE4exHP+ieziZg+Cgf7sJslBhVzJbPXZQwfGUfU27NqODPzCpizjAPz6NnKw8GCiHpug6D+bUxmutcBmUw==",
                    g = "AQAB",
                    i = {
                        Q5: [],
                        Sample: function() {},
                        R5: function() {}
                    };
                d(i, "g6b3", "yW4TJyW&QXiBGuw", function(a) {
                    return new a("Sample")
                }, function(a) {
                    return new a(f, g)
                }, function(a, c) {
                    b = c(), b.s = a, b.isVd = function(a) {
                        var b = this;
                        return true;
                        // return a = 1 === h.Workbook.lm || a, b.s && !b.e && (!b.adr || !! b.adr.dsr == !! a)
                    }
                });
                try {
                    i[k(["lcne", "ies"])] = e
                } catch (a) {
                    b = {
                        s: !1
                    }
                }
                b.b = true;
                b.e = true;
                b.hl = true;
                b.m = 1;
                b.s = true;
                return b.hl = !! e, b.m = e ? b.m : -1, l(b) || m(a, b), b
            };

            function l(a) {
                return a && (a.isVd(!1) || a.b && !a.hl)
            }
            e = function(a) {
                var c, d, e, f, g = h.Workbook.prototype.ad;
                h.Workbook.prototype.ad = function() {
                    var a = this;
                    if (c = b(a), a.ls = c, a.ul = function() {
                            c = b(a), a.ls = c
                        }, l(c)) return g.apply(a, arguments)
                }, d = h.Worksheet.prototype.ad, h.Worksheet.prototype.ad = function() {
                    if (c || this.parent || (c = b(this)), l(c)) return d.apply(this, arguments)
                }, e = h.oJ.prototype.Pw, h.oJ.prototype.Pw = function(b, d) {
                    e.apply(this, arguments)
                       /* , (c.m === -1 || !c.hl && c.b) && a(this.kj, b, d, c)*/
                }, f = h.oJ.prototype.RI, h.oJ.prototype.RI = function(b, d) {
                    f.apply(this, arguments)
                        /*, (c.m === -1 || !c.hl && c.b) && a(this.kj, b, d, c)*/
                }
            };

            function m(a, b) {
                var c, d;

                function e() {
                    d.width = i(c).width(), d.height = i(c).height(), p(d.getContext("2d"), d.width, d.height, b)
                }
                a.i_a || (a.i_a = !0, c = a.qo, a.sheets = [], a.no(), c && (d = document.createElement("canvas"), c.appendChild(d), e(), i(window).bind("resize", function() {
                    setTimeout(e, 100)
                })))
            }
            function n(a) {
                return g.C(h.SR)()[a]
            }
            f = function(a, b, c) {
                var d, e, f, g = n(k([a, "s"])),
                    i = n(1 === h.Workbook.lm ? k(["ld", "se"]) : k(["lr", "su"])),
                    j = o(g, b);
                for (i = o(i, b), j = j.replace("{0}", c.d), j = j.replace("{1}", i).replace("{1}", i), d = [], e = 0, f = 0; f < j.length; f++)"\r" !== j[f] && "\n" !== j[f] || (d.push(j.substring(e, f)), "\r" === j[f] && f < j.length - 1 && "\n" === j[f + 1] && f++, e = f + 1);
                return e < j.length && d.push(j.substring(e, j.length)), d
            };

            function o(a, b) {
                var c, d, e, f = !0,
                    g = "";
                if (a) if ("string" == typeof a) a = a.trim(), a && (c = [a]);
                else if (Array.isArray(a)) {
                    for (d = !0, c = [], e = 0; e < a.length; e++) g = a[e].trim(), c.push(g), d && g && (d = !1);
                    d && (c = null)
                }
                return c || (f = !1, c = b), k(c, f)
            }
            function p(a, b, c, d) {
                var e, g, h, i, k, l, m, n = "16pt calibri";
                if (!d || !d.isVd(!1)) for (e = d.hl ? d.adr && d.adr.dsr ? "l4" : d.e ? "l5" : "l4" : "l3", g = ["Ivldlcneky mi pedslsgaeiycmi o edassac.", "nai ies e.Ealsra.ae@rpct.o fyune sitne"], h = f(e, g, d), j(a, n), a.fillStyle = "black", a.fillRect(0, 0, b, c), a.fillStyle = "white", i = 20, k = 30, l = 0; l < h.length; l++) m = h[l], a.fillText(m, i, k), k += 25
            }
            a.exports = {
                Gb: e,
                g_a: b,
                h_a: m,
                e6: f
            }
        }()
}, function(a, b) {
    var c = function(a) {
        var b = {};

        function c(d) {
            if (b[d]) return b[d].exports;
            var e = b[d] = {
                exports: {},
                id: d,
                loaded: !1
            };
            return a[d].call(e.exports, e, e.exports, c), e.loaded = !0, e.exports
        }
        return c.m = a, c.c = b, c.p = "dist", c(0)
    }([function(a, b, c) {
        "use strict";
        var d, e, f;
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.attorn = void 0, d = c(1), e = g(d);

        function g(a) {
            return a && a.__esModule ? a : {
                default:
                    a
            }
        }
        f = b.attorn = e.
            default
    }, function(a, b, c) {
        "use strict";
        var d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J;
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.
            default = O, d = c(2), e = c(3), f = K(e), g = c(4), h = K(g), i = c(7), j = K(i);

        function K(a) {
            return a && a.__esModule ? a : {
                default:
                    a
            }
        }
        function L(a, b) {
            if (!(a instanceof b)) throw new TypeError("Cannot call a class as a function")
        }
        k = Object.defineProperty, l = new h.
            default ("!@#$%^&*"), m = l.de, n = !0, o = !n, p = 2e3, q = m("LjzGb&Q6zzW"), r = m("Wb535X#8Zb5l"), s = m("0IwE"), t = "m", u = "dp", v = "n", w = "b", x = "d", y = "e", z = "f", A = "adr", B = m("XRsZ"), C = m("HUkJ"), D = m("T&g"), E = m("Q&w"), F = m("GRz1"), G = m("XSzB"), H = m("XRwh"), I = m("WQs5");

        function M(a) {
            return a && JSON.parse(a) || d.undefined
        }
        function N(a) {
            return JSON.stringify(a)
        }
        J = function a(b, c, e, g, h) {
            var i, j, l, J, K, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, aa, ba, ca;
            L(this, a), i = (0, d.storage)(), j = g[0], l = g[1], J = s, K = o, O = "", P = "", Q = "", R = "", S = "", T = o, U = d.undefined, V = 0, W = d.undefined, X = o, Y = d.undefined, Z = 0, $ = d.undefined, _ = function a() {
                return M(i[c])
            }, aa = function a(b) {
                return i[c] = N(b)
            }, ba = function a(b, c) {
                b && Z <= 0 && (V = b[t], c && (P = b[u]), S = b[v], T = b[w], X = b[y], W = b[x], U = b[A], Y = b[z])
            }, ca = function a() {
                var b = {};
                return b[t] = V, b[u] = P, b[v] = S, b[w] = T, b[y] = X, X || (b[x] = W), b[z] = Y, b[A] = U, b
            };

            function da() {
                return Q && R
            }
            function ea() {
                return V > 0 && !X && Y
            }
            function fa(a) {
                K = n, O = a;
                try {
                    ha(a, j().co())
                } catch (a) {
                    ka(0, a, ca, b[r])
                }
                ja()
            }
            function ga() {
                return O
            }
            function ha(a, b) {
                var c, d, e, f;
                return a && (c = a.indexOf(b)) !== -1 ? (d = a.substring(0, c), e = a.substr(c + b.length), f = M(j().de(e)), J = b, P = d, Q = f.D, R = f.S, n) : o
            }
            function ia(a) {
                var b, e, f, g, h, i;
                if (!a && J !== s) return o;
                if (V = a[B] ? -1 : 1, e = o, !(b = a[C]) || !b.length) return o;
                for (f in b) if (g = b[f], e = e || g && g[E] === c) {
                    S = g[D];
                    break
                }
                if (!e) return o;
                if (a[I] && (U = a[I]), a[H]) {
                    if (h = new Date, i = (0, d.toDate)(a[H]), W = Math.ceil((i - h) / 864e5), X = W <= 0) return o
                } else W = d.undefined;
                return (0, d.nV)(m) && (a[F] || a[G]) && !(0, d.mH)(a[F], a[G], m, !a.hasOwnProperty(I)) ? o : n
            }
            function ja(a) {
                var c = o;
                Z++;
                try {
                    da() && ($ || ($ = l()), $.verify(P + J + N(Q), R) && (c = ia(Q)) && aa(ca()))
                } catch (a) {
                    V = 0, X = n
                } finally {
                    Z--
                }
                h && !a && h.call(b, c, ca)
            }
            function ka(a, c, e, f) {
                !(0, d.nV)(m) || da() && ea() || (0, d.timeout)(function() {
                    return (f || b[r] ||
                    function() {})(a || p, c, e, ka)
                }, a)
            }
            function la(a, b) {
                da() && ja(n), ea() ? !Y[a] : (0, d.timeout)(function() {
                    return ka(0, d.undefined, ca, function() {
                        b ? b(p, ca, ka) : (0, d.invalid_op)()
                    })
                }, 1)
            }
            ba(_(), n), T = !(0, d.nV)(m), (0, f.
                default)(e, function(a) {
                var c = b[a];
                b[a] = function() {
                    (0, d.nV)(m) && !ea() && la(a, b[r]), c && c.apply(b, arguments)
                }.bind(b)
            }), k(b, q, {
                get: function a() {
                    return ga()
                },
                set: function a(b) {
                    return fa(b)
                },
                enumerable: o,
                configurable: o
            }), h && !(0, d.nV)(m) && (0, d.timeout)(function() {
                K || h.call(b, ea(), ca)
            }, 0)
        };

        function O(a, b, c, d, e, f) {
            var g = d.call(a, h.
                    default, "d"),
                i = M(g.de(c));
            return new J(a, b, i, [function() {
                return d.call(a, h.
                    default, "c")
            }, function() {
                return e.call(a, j.
                    default, "s")
            }], f)
        }
    }, function(a, b) {
        (function(a) {
            "use strict";
            var c, d, e, f, g, h, i, j, k, l;
            Object.defineProperty(b, "__esModule", {
                value: !0
            }), c = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ?
                function(a) {
                    return typeof a
                } : function(a) {
                return a && "function" == typeof Symbol && a.constructor === Symbol ? "symbol" : typeof a;
            }, b.mH = t, b.nV = u, b.invalid_op = w, b.invalid_cdc = x, b.toDate = z, b.protect = A, b.global = a, d = "object" == (h === a ? "undefined" : c(a)) && a && a.Object === Object && a, e = "object" == ("undefined" == typeof self ? "undefined" : c(self)) && self && self.Object === Object && self, f = d || e || Function("return this")(), g = !0, h = b.undefined = void 0, i = b.timeout = f.setTimeout, j = b.storage = function a() {
                return f.SSa || (f.SSa = {})
            }, k = b.appName = function a() {
                return f.navigator && f.navigator.appName
            }, l = /^[\w\-]+$/i;

            function m(a, b) {
                var c = b("4LJITMx8UMcA"),
                    d = b("jOxo"),
                    e = b("JYw3Gb4NOb6x"),
                    f = b("g1Jbww#Y"),
                    g = RegExp("^[\\w\\-]+\\." + f + "$", "i");
                return true;
               /* return a && (a === c || a === d || a === e || l.test(a) || g.test(a))*/
            }
            function n(a, b) {
                var c = b("MlSZto#Z");
                return true;
               /* return a && a === c*/
            }
            function o(a, b) {
                var c = b("VdgJHc#wJb59"),
                    d = b("Zdg3Ga#UHbw5");
                return true;
                /*return a && (n(a[c], b) || m(a[d], b))*/
            }
            function p(a) {
                    var b = a("JYx3Gb#8Pb5R");
                    return true;
               /* return o(f[b], a)*/
            }
            function q(a, b) {
                var c, d, e, f;
                for (c in b) {
                    if (d = b[c], e = !1, d && 0 === d.lastIndexOf("*.", 0) && (e = !0), d = e ? d.slice(2) : d, d === a) return g;
                    if (e && (f = a.indexOf("." + d), f > 0 && f === a.length - d.length - 1)) return g
                }
                return !1
            }
            function r(a, b) {
                var c, d, e;
                for (c in b) {
                    if (d = b[c], d === a) return g;
                    if (e = a.indexOf("." + d), e > 0 && e === a.length - d.length - 1) return g
                }
            }
            function s(a, b) {
                var c, d;
                for (c in b) if (d = b[c], d === a || ".*" === d.substr(d.length - 2) && a.substr(0, d.length - 2) === d.substr(0, d.length - 2)) return g;
                return !1
            }
            function t(a, b, c, d) {
                var e, h = c("JYx3Gb#8Pb5R"),
                    i = c("Zdg3Ga#UHbw5"),
                    j = f[h] && f.location[i];
                return true;
              //  return j ? (j = j.toLowerCase(), e = a.split(","), a && q(j, e) ? g : a && d && r(j, e) ? g : b && s(j, b.split(",")) ? g : !g) : g
            }
            function u(a) {
                return !p(a)
            }
            function v(a, b) {
                var c = Error(b);
                throw c.name = a, c
            }
            function w(a) {
                return v("InvalidOperation", a || "Invalid Operation")
            }
            function x(a) {
                return v("InvalidCodec", a || "Invalid UTF-8 codec")
            }
            function y(a) {
                return parseInt(a, 10)
            }
            function z(a) {
                return new Date(y(a.substr(0, 4)) || 0, y(a.substr(4, 2)) - 1 || 0, y(a.substr(6, 2)) || 0)
            }
            function A(a) {
                a.toString = function() {
                    return "function () { [native code] }"
                }
            }
            function a(a, b) {
                f[a] = b
            }
        }).call(b, function() {
                return this
            }())
    }, function(a, b) {
        "use strict";
        var c, d, e, f, g, h, i, j, k, l, m;
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), c = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ?
            function(a) {
                return typeof a
            } : function(a) {
            return a && "function" == typeof Symbol && a.constructor === Symbol ? "symbol" : typeof a
        }, b.
            default = function(a, b) {
            var c = d(a) ? v : u;
            return c(a, b)
        }, d = Array.isArray, e = Object.prototype, f = e.hasOwnProperty, g = e.toString, h = "object", i = "function", j = "[" + h + " Function]", k = "[" + h + " GeneratorFunction]", l = Math.pow(2, 53) - 1;

        function n(a) {
            var b = void 0 === a ? "undefined" : c(a);
            return !!a && (b == h || b == i)
        }
        function o(a) {
            var b = a && a.constructor,
                d = (void 0 === b ? "undefined" : c(b)) == i && b.prototype || e;
            return a === d
        }
        function p(a) {
            var b = n(a) ? g.call(a) : "";
            return b == j || b == k
        }
        function q(a) {
            return "number" == typeof a && a > -1 && a % 1 == 0 && a <= l
        }
        function r(a) {
            return null != a && q(a.length) && !p(a)
        }
        function s(a) {
            var b, c;
            if (!o(a)) return Object.keys(Object(a));
            b = [];
            for (c in Object(a)) f.call(a, c) && "constructor" != c && b.push(c);
            return b
        }
        function t(a, b, c) {
            for (var d, e = -1, f = Object(a), g = c(a), h = g.length; h-- && (d = g[++e], b(f[d], d, f) !== !1););
            return a
        }
        m = function a(b, c) {
            if (null == b) return b;
            if (!r(b)) return b && t(b, c, s);
            for (var d = b.length, e = -1, f = Object(b); ++e < d && c(f[e], e, f) !== !1;);
            return b
        };

        function u(a, b) {
            var c = -1,
                d = r(a) ? Array(a.length) : [];
            return m(a, function(a, e, f) {
                d[++c] = b(a, e, f)
            }), d
        }
        function v(a, b) {
            for (var c = -1, d = a ? a.length : 0, e = Array(d); ++c < d;) e[c] = b(a[c], c, a);
            return e
        }
    }, function(a, b, c) {
        "use strict";
        var d, e, f, g, h, i, j, k;
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), d = function() {
            function a(a, b) {
                var c, d;
                for (c = 0; c < b.length; c++) d = b[c], d.enumerable = d.enumerable || !1, d.configurable = !0, "value" in d && (d.writable = !0), Object.defineProperty(a, d.key, d)
            }
            return function(b, c, d) {
                return c && a(b.prototype, c), d && a(b, d), b
            }
        }(), e = c(2), f = c(5), g = l(f), h = c(6), i = l(h);

        function l(a) {
            var b, c;
            if (a && a.__esModule) return a;
            if (b = {}, null != a) for (c in a) Object.prototype.hasOwnProperty.call(a, c) && (b[c] = a[c]);
            return b.
                default = a, b
        }
        function m(a, b) {
            if (!(a instanceof b)) throw new TypeError("Cannot call a class as a function")
        }
        j = String.fromCharCode;

        function n(a, b, c, d) {
            return 1 == a.length ? a : (a.splice(c, 1, d(a.splice(b, 1, d(a[c]))[0])), a)
        }
        function o(a) {
            var b = arguments.length <= 1 || void 0 === arguments[1] ? 1 : arguments[1],
                c = a.charCodeAt(0);
            return c >= 65 && c <= 90 ? a.toLowerCase() : c >= 97 && c <= 122 ? a.toUpperCase() : c >= 48 && c <= 57 ? j(48 + (c - 48 + 10 + b) % 10) : a
        }
        function p(a) {
            var b, c = a.split("");
            for (b = 0; b < c.length - 4; b++) n(c, b, b + 2, o), n(c, b + 1, b + 3, o);
            return c.join("")
        }
        function q(a) {
            var b, c = a.split(""),
                d = function a(b) {
                    return o(b, -1)
                };
            for (b = c.length - 5; b >= 0; b--) n(c, b + 1, b + 3, d), n(c, b, b + 2, d);
            return c.join("")
        }
        function r(a) {
            return a.split("").reverse().join("")
        }
        k = function() {
            function a(b) {
                var c = arguments.length <= 1 || void 0 === arguments[1] ? "A0" : arguments[1];
                m(this, a), b && "string" == typeof b || (0, e.invalid_op)("Invalid Key"), this.c = c, this.k = b
            }
            return d(a, [{
                key: "co",
                value: function a() {
                    return "#" + this.c
                }
            }, {
                key: "en",
                value: function a(b) {
                    var c, d, e;
                    return b ? (c = i.getBytes(b), d = g.fromBytes(c), d = d.replace("==", "&"), d = d.replace("=", "#"), e = Math.floor(d.length / 2), d = d.substr(e) + d.substr(0, e), d = r(d), p(d)) : ""
                }
            }, {
                key: "de",
                value: function a(b) {
                    var c, d, e;
                    return b ? (c = q(b), c = r(c), d = Math.ceil(c.length / 2), c = c.substr(d) + c.substr(0, d), c = c.replace("#", "="), c = c.replace("&", "=="), e = g.toBytes(c), i.getString(e)) : ""
                }
            }]), a
        }(), b.
            default = k
    }, function(a, b) {
        "use strict";
        var c, d, e, f, g, h, i, j, k;
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), c = "0123456789", d = c + "abcdef", e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + c + "+/", f = "=", g = e + f;

        function l(a) {
            return d.charAt(a)
        }
        h = b.fromBytes = function a(b) {
            var c, d, e, f, h, i, j, k, l, m = 0,
                n = "";
            if (!b) return "";
            do c = b[m++], d = b[m++], e = b[m++], k = c << 16 | d << 8 | e, f = k >> 18 & 63, h = k >> 12 & 63, i = k >> 6 & 63, j = 63 & k, n += g.charAt(f) + g.charAt(h) + g.charAt(i) + g.charAt(j);
            while (m < b.length);
            return l = b.length % 3, (l ? n.slice(0, l - 3) : n) + "===".slice(l || 3)
        }, i = b.toBytes = function a(b) {
            var c, d, e, f, h, i, j, k, l = 0,
                m = [];
            if (b) {
                b += "";
                do f = g.indexOf(b.charAt(l++)), h = g.indexOf(b.charAt(l++)), i = g.indexOf(b.charAt(l++)), j = g.indexOf(b.charAt(l++)), k = f << 18 | h << 12 | i << 6 | j, c = k >> 16 & 255, d = k >> 8 & 255, e = 255 & k, m.push(c), 64 !== i && (m.push(d), 64 !== j && m.push(e));
                while (l < b.length)
            }
            return m
        }, j = b.fromHex = function a(b) {
            var c, d, g = "";
            for (c = 0; c + 3 <= b.length; c += 3) d = parseInt(b.substring(c, c + 3), 16), g += e.charAt(d >> 6) + e.charAt(63 & d);
            for (c + 1 == b.length ? (d = parseInt(b.substring(c, c + 1), 16), g += e.charAt(d << 2)) : c + 2 == b.length && (d = parseInt(b.substring(c, c + 2), 16), g += e.charAt(d >> 2) + e.charAt((3 & d) << 4));
                 (3 & g.length) > 0;) g += f;
            return g
        }, k = b.toHex = function a(b) {
            var c, d, g = "",
                h = 0,
                i = 0;
            for (c = 0; c < b.length && b.charAt(c) != f; ++c) d = e.indexOf(b.charAt(c)), d < 0 || (0 == h ? (g += l(d >> 2), i = 3 & d, h = 1) : 1 == h ? (g += l(i << 2 | d >> 4), i = 15 & d, h = 2) : 2 == h ? (g += l(i), g += l(d >> 2), i = 3 & d, h = 3) : (g += l(i << 2 | d >> 4), g += l(15 & d), h = 0));
            return 1 == h && (g += l(i << 2)), g
        }
    }, function(a, b, c) {
        "use strict";
        var d, e, f, g;
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), b.getBytes = m, b.getString = n, d = c(2), e = String.fromCharCode, f = "Invalid continuation byte", g = "Invalid byte index";

        function h(a) {
            for (var b, c, d = [], e = 0, f = a.length; e < f;) b = a.charCodeAt(e++), b >= 55296 && b <= 56319 && e < f ? (c = a.charCodeAt(e++), 56320 == (64512 & c) ? d.push(((1023 & b) << 10) + (1023 & c) + 65536) : (d.push(b), e--)) : d.push(b);
            return d
        }
        function i(a) {
            for (var b, c = a.length, d = -1, f = ""; ++d < c;) b = a[d], b > 65535 && (b -= 65536, f += e(b >>> 10 & 1023 | 55296), b = 56320 | 1023 & b), f += e(b);
            return f
        }
        function j(a) {
            a >= 55296 && a <= 57343 && (0, d.invalid_cdc)("Lone surrogate U+" + a.toString(16).toUpperCase() + " is not a scalar value")
        }
        function k(a, b) {
            return a >> b & 63 | 128
        }
        function l(a) {
            if (0 == (4294967168 & a)) return [a];
            var b = [];
            return 0 == (4294965248 & a) ? b.push(a >> 6 & 31 | 192) : 0 == (4294901760 & a) ? (j(a), b.push(a >> 12 & 15 | 224), b.push(k(a, 6))) : 0 == (4292870144 & a) && (b.push(a >> 18 & 7 | 240), b.push(k(a, 12)), b.push(k(a, 6))), b.push(63 & a | 128), b
        }
        function m(a) {
            for (var b, c = h(a), d = c.length, e = -1, f = []; ++e < d;) b = c[e], f = f.concat(l(b));
            return f
        }
        function n(a) {
            var b, c, e, h;

            function k() {
                c >= b && (0, d.invalid_cdc)(g);
                var e = 255 & a[c];
                return c++, 128 == (192 & e) ? 63 & e : void(0, d.invalid_cdc)(f)
            }
            function l() {
                var e, h, i, l, m;
                if (c > b && (0, d.invalid_cdc)(g), c == b) return !1;
                if (e = 255 & a[c], c++, 0 == (128 & e)) return e;
                if (192 == (224 & e)) {
                    if (h = k(), m = (31 & e) << 6 | h, m >= 128) return m;
                    (0, d.invalid_cdc)(f)
                }
                if (224 == (240 & e)) {
                    if (h = k(), i = k(), m = (15 & e) << 12 | h << 6 | i, m >= 2048) return j(m), m;
                    (0, d.invalid_cdc)(f)
                }
                return 240 == (248 & e) && (h = k(), i = k(), l = k(), m = (15 & e) << 18 | h << 12 | i << 6 | l, m >= 65536 && m <= 1114111) ? m : void(0, d.invalid_cdc)()
            }
            for (b = a.length, c = 0, e = [];
                 (h = l()) !== !1;) e.push(h);
            return i(e)
        }
    }, function(a, b, c) {
        "use strict";
        var d, e, f, g, h, i;
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), d = function() {
            function a(a, b) {
                var c, d;
                for (c = 0; c < b.length; c++) d = b[c], d.enumerable = d.enumerable || !1, d.configurable = !0, "value" in d && (d.writable = !0), Object.defineProperty(a, d.key, d)
            }
            return function(b, c, d) {
                return c && a(b.prototype, c), d && a(b, d), b
            }
        }(), e = c(5), f = k(e), g = c(8), h = j(g);

        function j(a) {
            return a && a.__esModule ? a : {
                default:
                    a
            }
        }
        function k(a) {
            var b, c;
            if (a && a.__esModule) return a;
            if (b = {}, null != a) for (c in a) Object.prototype.hasOwnProperty.call(a, c) && (b[c] = a[c]);
            return b.
                default = a, b
        }
        function l(a, b) {
            if (!(a instanceof b)) throw new TypeError("Cannot call a class as a function")
        }
        i = function() {
            function a(b, c) {
                l(this, a);
                var d = new h.
                    default;
                d.setPublic(f.toHex(b), f.toHex(c || "AQAB")), this.k = d
            }
            return d(a, [{
                key: "verify",
                value: function a(b, c) {
                    return this.k.verify(b, f.toHex(c))
                }
            }]), a
        }(), b.
            default = i
    }, function(a, b, c) {
        "use strict";
        var d, e, f, g, h, i;
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), d = c(2), e = c(6), f = k(e), g = c(9), h = j(g);

        function j(a) {
            return a && a.__esModule ? a : {
                default:
                    a
            }
        }
        function k(a) {
            var b, c;
            if (a && a.__esModule) return a;
            if (b = {}, null != a) for (c in a) Object.prototype.hasOwnProperty.call(a, c) && (b[c] = a[c]);
            return b.
                default = a, b
        }
        i = RegExp(""), i.compile("[^0-9a-f]", "gi");

        function l(a, b) {
            return new h.
                default (a, b)
        }
        function m() {
            this.n = null, this.e = 0, this.d = null, this.p = null, this.q = null, this.dmp1 = null, this.dmq1 = null, this.coeff = null
        }
        function n(a, b) {
            null != a && null != b && a.length > 0 && b.length > 0 ? (this.n = l(a, 16), this.e = parseInt(b, 16)) : (0, d.invalid_cdc)("Invalid RSA public key")
        }
        function o(a) {
            return a.modPowInt(this.e, this.n)
        }
        m.prototype.doPublic = o, m.prototype.setPublic = n;

        function p(a) {
            var b, c, d, e, g, h, i, j, k, l, m, n, o, p, t, u, v, w, x, y = f.getBytes(a),
                z = [1518500249, 1859775393, 2400959708, 3395469782];
            for (y.push(128), b = y.length / 4 + 2, c = Math.ceil(b / 16), d = Array(c), e = 0; e < c; e++) for (d[e] = Array(16), g = 0; g < 16; g++) d[e][g] = y[64 * e + 4 * g] << 24 | y[64 * e + 4 * g + 1] << 16 | y[64 * e + 4 * g + 2] << 8 | y[64 * e + 4 * g + 3];
            for (d[c - 1][14] = 8 * (y.length - 1) / Math.pow(2, 32), d[c - 1][14] = Math.floor(d[c - 1][14]), d[c - 1][15] = 8 * (y.length - 1) & 4294967295, h = 1732584193, i = 4023233417, j = 2562383102, k = 271733878, l = 3285377520, m = Array(80), e = 0; e < c; e++) {
                for (v = 0; v < 16; v++) m[v] = d[e][v];
                for (v = 16; v < 80; v++) m[v] = r(m[v - 3] ^ m[v - 8] ^ m[v - 14] ^ m[v - 16], 1);
                for (n = h, o = i, p = j, t = k, u = l, v = 0; v < 80; v++) w = Math.floor(v / 20), x = r(n, 5) + q(w, o, p, t) + u + z[w] + m[v] & 4294967295, u = t, t = p, p = r(o, 30), o = n, n = x;
                h = h + n & 4294967295, i = i + o & 4294967295, j = j + p & 4294967295, k = k + t & 4294967295, l = l + u & 4294967295
            }
            return s(h) + s(i) + s(j) + s(k) + s(l)
        }
        function q(a, b, c, d) {
            switch (a) {
                case 0:
                    return b & c ^ ~b & d;
                case 1:
                    return b ^ c ^ d;
                case 2:
                    return b & c ^ b & d ^ c & d;
                case 3:
                    return b ^ c ^ d
            }
        }
        function r(a, b) {
            return a << b | a >>> 32 - b
        }
        function s(a) {
            var b, c, d = "";
            for (c = 7; c >= 0; c--) b = a >>> 4 * c & 15, d += b.toString(16);
            return d
        }
        function t(a, b) {
            var c, d, e, f, g, h;
            return b = b.replace(i, ""), b = b.replace(/[ \n]+/g, ""), c = l(b, 16), c.bitLength() <= this.n.bitLength() && (d = this.doPublic(c), e = d.toString(16).replace(/^1f+00/, ""), f = "3021300906052b0e03021a05000414", e.substr(0, f.length) === f) ? (g = e.substr(f.length), h = p(a), h === g) : 0
        }
        m.prototype.verify = t, b.
            default = m
    }, function(a, b, c) {
        "use strict";
        var d, e, f, g, h, i, j, k, l, m, n, o, p;
        Object.defineProperty(b, "__esModule", {
            value: !0
        }), d = c(2), e = Math, f = e.floor, g = e.pow, h = e.min;

        function q(a, b) {
            for (var c in b) a[c] = b[c]
        }
        j = 0xdeadbeefcafe, k = 15715070 == (16777215 & j);

        function r(a, b, c) {
            if (null != a) {
                var d = this;
                "number" == typeof a ? d.fromNumber(a, b, c) : null == b && "string" != typeof a ? d.fromString(a, 256) : d.fromString(a, b)
            }
        }
        function s() {
            return new r(null)
        }
        function t(a, b, c, d, e, g) {
            for (; --g >= 0;) {
                var h = b * this[a++] + c[d] + e;
                e = f(h / 67108864), c[d++] = 67108863 & h
            }
            return e
        }
        function u(a, b, c, d, e, f) {
            for (var g, h, i, j = 32767 & b, k = b >> 15; --f >= 0;) g = 32767 & this[a], h = this[a++] >> 15, i = k * g + h * j, g = j * g + ((32767 & i) << 15) + c[d] + (1073741823 & e), e = (g >>> 30) + (i >>> 15) + k * h + (e >>> 30), c[d++] = 1073741823 & g;
            return e
        }
        function v(a, b, c, d, e, f) {
            for (var g, h, i, j = 16383 & b, k = b >> 14; --f >= 0;) g = 16383 & this[a], h = this[a++] >> 14, i = k * g + h * j, g = j * g + ((16383 & i) << 14) + c[d] + e, e = (g >> 28) + (i >> 14) + k * h, c[d++] = 268435455 & g;
            return e
        }
        for (k && "Microsoft Internet Explorer" == (0, d.appName)() ? (r.prototype.am = u, i = 30) : k && "Netscape" != (0, d.appName)() ? (r.prototype.am = t, i = 26) : (r.prototype.am = v, i = 28), q(r.prototype, {
            DB: i,
            DM: (1 << i) - 1,
            DV: 1 << i
        }), l = 52, q(r.prototype, {
            FV: g(2, l),
            F1: l - i,
            F2: 2 * i - l
        }), m = "0123456789abcdefghijklmnopqrstuvwxyz", n = [], o = "0".charCodeAt(0), p = 0; p <= 9; ++p) n[o++] = p;
        for (o = "a".charCodeAt(0), p = 10; p < 36; ++p) n[o++] = p;
        for (o = "A".charCodeAt(0), p = 10; p < 36; ++p) n[o++] = p;

        function w(a) {
            return m.charAt(a)
        }
        function x(a, b) {
            var c = n[a.charCodeAt(b)];
            return null == c ? -1 : c
        }
        function y(a) {
            var b, c = this;
            for (b = c.t - 1; b >= 0; --b) a[b] = c[b];
            a.t = c.t, a.s = c.s
        }
        function z(a) {
            var b = this;
            b.t = 1, b.s = a < 0 ? -1 : 0, a > 0 ? b[0] = a : a < -1 ? b[0] = a + b.DV : b.t = 0
        }
        function A(a) {
            var b = s();
            return b.fromInt(a), b
        }
        function B(a, b) {
            var c, d, e, f, g, h = this;
            if (16 == b) c = 4;
            else if (8 == b) c = 3;
            else if (256 == b) c = 8;
            else if (2 == b) c = 1;
            else if (32 == b) c = 5;
            else {
                if (4 != b) return void h.fromRadix(a, b);
                c = 2
            }
            for (h.t = 0, h.s = 0, d = a.length, e = !1, f = 0; --d >= 0;) g = 8 == c ? 255 & a[d] : x(a, d), g < 0 ? "-" == a.charAt(d) && (e = !0) : (e = !1, 0 == f ? h[h.t++] = g : f + c > this.DB ? (h[h.t - 1] |= (g & (1 << h.DB - f) - 1) << f, h[h.t++] = g >> h.DB - f) : h[h.t - 1] |= g << f, f += c, f >= h.DB && (f -= h.DB));
            8 == c && 0 != (128 & a[0]) && (h.s = -1, f > 0 && (h[h.t - 1] |= (1 << h.DB - f) - 1 << f)), h.clamp(), e && r.ZERO.subTo(h, h)
        }
        function C() {
            for (var a = this, b = a.s & a.DM; a.t > 0 && a[a.t - 1] == b;)--a.t
        }
        function D(a) {
            var b, c, d, e, f, g, h, i = this;
            if (i.s < 0) return "-" + i.negate().toString(a);
            if (16 == a) b = 4;
            else if (8 == a) b = 3;
            else if (2 == a) b = 1;
            else if (32 == a) b = 5;
            else {
                if (4 != a) return i.toRadix(a);
                b = 2
            }
            if (c = (1 << b) - 1, e = !1, f = "", g = this.t, h = i.DB - g * i.DB % b, g-- > 0) for (h < i.DB && (d = i[g] >> h) > 0 && (e = !0, f = w(d)); g >= 0;) h < b ? (d = (i[g] & (1 << h) - 1) << b - h, d |= i[--g] >> (h += i.DB - b)) : (d = i[g] >> (h -= b) & c, h <= 0 && (h += i.DB, --g)), d > 0 && (e = !0), e && (f += w(d));
            return e ? f : "0"
        }
        function E() {
            var a = s();
            return r.ZERO.subTo(this, a), a
        }
        function F() {
            return this.s < 0 ? this.negate() : this
        }
        function G(a) {
            var b, c = this,
                d = c.s - a.s;
            if (0 != d) return d;
            if (b = c.t, d = b - a.t, 0 != d) return c.s < 0 ? -d : d;
            for (; --b >= 0;) if (0 != (d = c[b] - a[b])) return d;
            return 0
        }
        function H(a) {
            var b = 1,
                c;
            return 0 != (c = a >>> 16) && (a = c, b += 16), 0 != (c = a >> 8) && (a = c, b += 8), 0 != (c = a >> 4) && (a = c, b += 4), 0 != (c = a >> 2) && (a = c, b += 2), 0 != (c = a >> 1) && (a = c, b += 1), b
        }
        function I() {
            var a = this;
            return a.t <= 0 ? 0 : a.DB * (a.t - 1) + H(a[a.t - 1] ^ a.s & a.DM)
        }
        function J(a, b) {
            var c, d = this;
            for (c = d.t - 1; c >= 0; --c) b[c + a] = d[c];
            for (c = a - 1; c >= 0; --c) b[c] = 0;
            b.t = d.t + a, b.s = d.s
        }
        function K(a, b) {
            var c, d = this;
            for (c = a; c < d.t; ++c) b[c - a] = d[c];
            b.t = Math.max(d.t - a, 0), b.s = d.s
        }
        function L(a, b) {
            var c, d = this,
                e = a % d.DB,
                g = d.DB - e,
                h = (1 << g) - 1,
                i = f(a / d.DB),
                j = d.s << e & d.DM;
            for (c = d.t - 1; c >= 0; --c) b[c + i + 1] = d[c] >> g | j, j = (d[c] & h) << e;
            for (c = i - 1; c >= 0; --c) b[c] = 0;
            b[i] = j, b.t = d.t + i + 1, b.s = d.s, b.clamp()
        }
        function M(a, b) {
            var c, d, e, g, h, i = this;
            if (b.s = i.s, c = f(a / i.DB), c >= i.t) return void(b.t = 0);
            for (d = a % i.DB, e = i.DB - d, g = (1 << d) - 1, b[0] = i[c] >> d, h = c + 1; h < i.t; ++h) b[h - c - 1] |= (i[h] & g) << e, b[h - c] = i[h] >> d;
            d > 0 && (b[i.t - c - 1] |= (i.s & g) << e), b.t = i.t - c, b.clamp()
        }
        function N(a, b) {
            for (var c = this, d = 0, e = 0, f = h(a.t, c.t); d < f;) e += c[d] - a[d], b[d++] = e & c.DM, e >>= c.DB;
            if (a.t < c.t) {
                for (e -= a.s; d < c.t;) e += c[d], b[d++] = e & c.DM, e >>= c.DB;
                e += c.s
            } else {
                for (e += c.s; d < a.t;) e -= a[d], b[d++] = e & c.DM, e >>= c.DB;
                e -= a.s
            }
            b.s = e < 0 ? -1 : 0, e < -1 ? b[d++] = c.DV + e : e > 0 && (b[d++] = e), b.t = d, b.clamp()
        }
        function O(a, b) {
            var c = this,
                d = c.abs(),
                e = a.abs(),
                f = d.t;
            for (b.t = f + e.t; --f >= 0;) b[f] = 0;
            for (f = 0; f < e.t; ++f) b[f + d.t] = d.am(0, e[f], b, f, 0, d.t);
            b.s = 0, b.clamp(), c.s != a.s && r.ZERO.subTo(b, b)
        }
        function P(a) {
            for (var b, c = this.abs(), d = a.t = 2 * c.t; --d >= 0;) a[d] = 0;
            for (d = 0; d < c.t - 1; ++d) b = c.am(d, c[d], a, 2 * d, 0, 1), (a[d + c.t] += c.am(d + 1, 2 * c[d], a, 2 * d + 1, b, c.t - d - 1)) >= c.DV && (a[d + c.t] -= c.DV, a[d + c.t + 1] = 1);
            a.t > 0 && (a[a.t - 1] += c.am(d, c[d], a, 2 * d, 0, 1)), a.s = 0, a.clamp()
        }
        function Q(a, b, c) {
            var d, e, g, h, i, j, k, l, m, n, o, p, q, t, u, v, w = a.abs();
            if (!(w.t <= 0)) {
                if (d = this, e = d.abs(), e.t < w.t) return null != b && b.fromInt(0), void(null != c && d.copyTo(c));
                if (null == c && (c = s()), g = s(), h = d.s, i = a.s, j = d.DB - H(w[w.t - 1]), j > 0 ? (w.lShiftTo(j, g), e.lShiftTo(j, c)) : (w.copyTo(g), e.copyTo(c)), k = g.t, l = g[k - 1], 0 != l) {
                    for (m = l * (1 << d.F1) + (k > 1 ? g[k - 2] >> d.F2 : 0), n = d.FV / m, o = (1 << d.F1) / m, p = 1 << d.F2, q = c.t, t = q - k, u = null == b ? s() : b, g.dlShiftTo(t, u), c.compareTo(u) >= 0 && (c[c.t++] = 1, c.subTo(u, c)), r.ONE.dlShiftTo(k, u), u.subTo(g, g); g.t < k;) g[g.t++] = 0;
                    for (; --t >= 0;) if (v = c[--q] == l ? d.DM : f(c[q] * n + (c[q - 1] + p) * o), (c[q] += g.am(0, v, c, t, 0, k)) < v) for (g.dlShiftTo(t, u), c.subTo(u, c); c[q] < --v;) c.subTo(u, c);
                    null != b && (c.drShiftTo(k, b), h != i && r.ZERO.subTo(b, b)), c.t = k, c.clamp(), j > 0 && c.rShiftTo(j, c), h < 0 && r.ZERO.subTo(c, c)
                }
            }
        }
        function R(a) {
            var b = s();
            return this.abs().divRemTo(a, null, b), this.s < 0 && b.compareTo(r.ZERO) > 0 && a.subTo(b, b), b
        }
        function S(a) {
            this.m = a
        }
        function T(a) {
            return a.s < 0 || a.compareTo(this.m) >= 0 ? a.mod(this.m) : a
        }
        function U(a) {
            return a
        }
        function V(a) {
            a.divRemTo(this.m, null, a)
        }
        function W(a, b, c) {
            a.multiplyTo(b, c), this.reduce(c)
        }
        function X(a, b) {
            a.squareTo(b), this.reduce(b)
        }
        q(S.prototype, {
            convert: T,
            revert: U,
            reduce: V,
            mulTo: W,
            sqrTo: X
        });

        function Y() {
            var a, b, c = this;
            return c.t < 1 ? 0 : (a = c[0], 0 == (1 & a) ? 0 : (b = 3 & a, b = b * (2 - (15 & a) * b) & 15, b = b * (2 - (255 & a) * b) & 255, b = b * (2 - ((65535 & a) * b & 65535)) & 65535, b = b * (2 - a * b % c.DV) % c.DV, b > 0 ? c.DV - b : -b))
        }
        function Z(a) {
            var b = this;
            b.m = a, b.mp = a.invDigit(), b.mpl = 32767 & b.mp, b.mph = b.mp >> 15, b.um = (1 << a.DB - 15) - 1, b.mt2 = 2 * a.t
        }
        function $(a) {
            var b = this,
                c = s();
            return a.abs().dlShiftTo(b.m.t, c), c.divRemTo(b.m, null, c), a.s < 0 && c.compareTo(r.ZERO) > 0 && b.m.subTo(c, c), c
        }
        function _(a) {
            var b = s();
            return a.copyTo(b), this.reduce(b), b
        }
        function aa(a) {
            for (var b, c, d, e = this; a.t <= e.mt2;) a[a.t++] = 0;
            for (b = 0; b < e.m.t; ++b) for (c = 32767 & a[b], d = c * e.mpl + ((c * e.mph + (a[b] >> 15) * e.mpl & e.um) << 15) & a.DM, c = b + e.m.t, a[c] += e.m.am(0, d, a, b, 0, e.m.t); a[c] >= a.DV;) a[c] -= a.DV, a[++c]++;
            a.clamp(), a.drShiftTo(e.m.t, a), a.compareTo(e.m) >= 0 && a.subTo(e.m, a)
        }
        function ba(a, b) {
            a.squareTo(b), this.reduce(b)
        }
        function ca(a, b, c) {
            a.multiplyTo(b, c), this.reduce(c)
        }
        q(Z.prototype, {
            convert: $,
            revert: _,
            reduce: aa,
            mulTo: ca,
            sqrTo: ba
        });

        function da() {
            var a = this;
            return 0 == (a.t > 0 ? 1 & a[0] : a.s)
        }
        function ea(a, b) {
            var c, d, e, f, g;
            if (a > 4294967295 || a < 1) return r.ONE;
            for (c = s(), d = s(), e = b.convert(this), f = H(a) - 1, e.copyTo(c); --f >= 0;) b.sqrTo(c, d), (a & 1 << f) > 0 ? b.mulTo(d, e, c) : (g = c, c = d, d = g);
            return b.revert(c)
        }
        function fa(a, b) {
            var c;
            return c = a < 256 || b.isEven() ? new S(b) : new Z(b), this.exp(a, c)
        }
        function ga(a) {
            return f(Math.LN2 * this.DB / Math.log(a))
        }
        function ha() {
            var a = this;
            return a.s < 0 ? -1 : a.t <= 0 || 1 == a.t && a[0] <= 0 ? 0 : 1
        }
        function ia(a) {
            var b, c, d, e, f, h, i = this;
            if (null == a && (a = 10), 0 == i.signum() || a < 2 || a > 36) return "0";
            for (b = i.chunkSize(a), c = g(a, b), d = A(c), e = s(), f = s(), h = "", i.divRemTo(d, e, f); e.signum() > 0;) h = (c + f.intValue()).toString(a).substr(1) + h, e.divRemTo(d, e, f);
            return f.intValue().toString(a) + h
        }
        function ja() {
            var a = this;
            if (a.s < 0) {
                if (1 == a.t) return a[0] - a.DV;
                if (0 == a.t) return -1
            } else {
                if (1 == a.t) return a[0];
                if (0 == a.t) return 0
            }
            return (a[1] & (1 << 32 - a.DB) - 1) << a.DB | a[0]
        }
        function ka(a, b) {
            var c, d, e, f, h, i, j, k = this;
            for (k.fromInt(0), null == b && (b = 10), c = k.chunkSize(b), d = Math.pow(b, c), e = !1, f = 0, h = 0, i = 0; i < a.length; ++i) j = x(a, i), j < 0 ? "-" == a.charAt(i) && 0 == k.signum() && (e = !0) : (h = b * h + j, ++f >= c && (k.dMultiply(d), k.dAddOffset(h, 0), f = 0, h = 0));
            f > 0 && (k.dMultiply(g(b, f)), k.dAddOffset(h, 0)), e && r.ZERO.subTo(k, k)
        }
        function la(a) {
            var b = this;
            b[b.t] = b.am(0, a - 1, b, 0, 0, b.t), ++b.t, b.clamp()
        }
        function ma(a, b) {
            var c = this;
            if (0 != a) {
                for (; c.t <= b;) c[c.t++] = 0;
                for (c[b] += a; c[b] >= c.DV;) c[b] -= c.DV, ++b >= c.t && (c[c.t++] = 0), ++c[b]
            }
        }
        q(r.prototype, {
            copyTo: y,
            fromInt: z,
            fromString: B,
            clamp: C,
            dlShiftTo: J,
            drShiftTo: K,
            lShiftTo: L,
            rShiftTo: M,
            subTo: N,
            multiplyTo: O,
            squareTo: P,
            divRemTo: Q,
            invDigit: Y,
            isEven: da,
            exp: ea,
            toRadix: ia,
            chunkSize: ga,
            fromRadix: ka,
            dMultiply: la,
            dAddOffset: ma
        }), q(r.prototype, {
            toString: D,
            signum: ha,
            intValue: ja,
            negate: E,
            abs: F,
            compareTo: G,
            bitLength: I,
            mod: R,
            modPowInt: fa
        }), r.ZERO = A(0), r.ONE = A(1), b.
            default = r
    }]);
    a.exports = {
        g_a: c.attorn
    }
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(42),
                d = c(44).GC$,
                e = c(43),
                f = e.Ul.Nl,
                g = e.Ul,
                h = g.Ml,
                i = g.nl,
                j = window.Yl,
                k = document,
                l = function() {
                    function a(a, b, c) {
                        var d = this;
                        d.qo = a, d.zWa = c, d.c4 = "gc-popup", d.so = "gc-overlay", d.AWa = null, b = b || 0, d.to = {
                            position: "fixed",
                            width: "100%",
                            height: "100%",
                            margin: 0,
                            padding: 0,
                            top: 0,
                            left: 0,
                            border: "none",
                            zIndex: b,
                            backgroundColor: "rgba(0,0,0,0)"
                        }, d.uo = {
                            position: "absolute",
                            padding: 0,
                            margin: 0,
                            height: "auto",
                            zIndex: b + 1,
                            outline: "none"
                        }, d.ad()
                    }
                    return a.prototype = {
                        constructor: a,
                        ad: function() {
                            var a = this;
                            a.vo(a.Cj) ? a.xo = d("#" + a.Cj) : (a.Cj = a.wo(), a.xo = d(f("div")).addClass(a.c4 + " ui-widget").attr({
                                id: a.Cj,
                                tabIndex: -1
                            }).css(a.uo))
                        },
                        wo: function() {
                            for (var a = 0, b = "gc-dialog"; this.vo(b + ("" + a));) a++;
                            return b + ("" + a)
                        },
                        yo: function() {
                            if (this.xo) return this.xo
                        },
                        zo: function() {
                            return this.qo ? this.qo : k.body
                        },
                        Ao: function(a) {
                            var b = this,
                                c = b.xo;
                            b.Bo() || b.Co(), j.Gm(), b.vo(b.Cj) || (d(b.zo()).append(c), b.Do(), c.css("display", "none")), c.show(a)
                        },
                        close: function() {
                            var a = this;
                            a.vo(a.Cj) && a.xo.remove(), d("." + a.c4).isVisible() || a.Eo(), j.Hm()
                        },
                        Eo: function() {
                            d("." + this.so).remove(), this.AWa = null
                        },
                        Do: function() {
                            var a, b, c, e, f, g, h, i, j, l, m, n = this.xo,
                                o = this.zo();
                            0 !== n.length && (a = d(o).offset(), b = parseInt(n.css("left")) + a.left, c = parseInt(n.css("top")) + a.top, e = n.width(), f = n.height(), isNaN(b) || isNaN(c) || isNaN(e) || isNaN(f) || (g = 0, h = 0, i = k.documentElement, j = i.clientWidth, l = i.clientHeight, m = n[0].getBoundingClientRect(), m.left + e > j && (h = m.left + e - j), m.top + f > l && (g = m.top + f - l), (b < 0 || c < 0 || g > 0 || h > 0) && (b -= h, c -= g, b < 0 && (b = 0), c < 0 && (c = 0), n.css({
                                left: b - a.left + "px",
                                top: c - a.top + "px"
                            }))))
                        },
                        vo: function(a) {
                            return d("#" + a).length > 0
                        },
                        Co: function() {
                            var a, b, c = this,
                                e = d(f("div")).addClass(c.so),
                                g = c.xo;
                            this.AWa = e, e.css(c.to), d(c.qo).append(e), a = h && h.mozilla, a && (b = (new Date).valueOf()), e.bind("mousedown", function(d) {
                                if (!c.zWa) {
                                    if (a) {
                                        var e = (new Date).valueOf();
                                        if (e - b < 100) return
                                    }
                                    c.close(), a && c.Fo && clearTimeout(c.Fo)
                                }
                                i(d)
                            }), e.bind("contextmenu", function(a) {
                                c.zWa && i(a)
                            }), g.bind("contextmenu", function(a) {
                                i(a)
                            }), c.xo.bind("contextmenu", function(a) {
                                i(a)
                            }), "touchstart MSPointerDown pointerdown".split(" ").forEach(function(b) {
                                e.bind(b, function(b) {
                                    c.zWa || (a ? c.Fo = setTimeout(function() {
                                        c.close()
                                    }, 100) : c.close()), i(b)
                                })
                            })
                        },
                        Bo: function() {
                            return d("." + this.so).length > 0
                        }
                    }, a
                }();
            b.Go = l, a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d = c(44).GC$,
                e = ".gcSheet";

            function f(a) {
                var b = this;
                b.bo = 0, b.co = 0, b.do = a, b.eo = {}
            }
            f.prototype = {
                fo: function(a) {
                    var b, c, f, g = this;

                    function h() {
                        g.ho(a)
                    }
                    b = g.eo, c = b[a], c || (f = d(document.createElement("img")), f.bind("load" + e, h), f.bind("error" + e, h), f.bind("abort" + e, h), g.bo++, b[a] = {
                        io: !1,
                        jo: f[0]
                    }, f[0].src = a)
                },
                ko: function(a) {
                    var b = this.eo[a];
                    return !!b && b.io
                },
                lo: function(a) {
                    var b = this.eo[a];
                    return b ? b.jo : null
                },
                ho: function(a) {
                    var b = this;
                    b.co++, b.eo[a].io = !0, b.mo() && b.do && b.do()
                },
                mo: function() {
                    return this.co >= this.bo
                },
                no: function() {
                    var a, b, c = this.eo;
                    if (c) for (a in c) c[a] && (b = d(c[a].jo), b.unbind(e));
                    this.do = null
                }
            }, b = c(42), b.oo = f, a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s = c(26),
                t = s.j.Fa,
                u = s.pc,
                v = u.ec,
                w = parseInt,
                x = c(43),
                y = x.Ul.Pl;

            function z(a) {
                var b = a;
                return function(c) {
                    return 0 === arguments.length ? this.po[b] : (this.po[a] = v(c), this)
                }
            }
            b = 0, d = 1, e = 2, f = 3, g = 4, h = 5, i = 6, j = 7, k = 8, l = 9, m = 10, n = 11, o = function() {
                function a(a, b, c, d, e, f, g, h, i, j, k, l, m) {
                    this.Cj = a, this.po = [];
                    for (var n = 1; n < 13; n++) this.po.push(v(arguments[n]))
                }
                return a.prototype = {
                    constructor: a,
                    name: function(a) {
                        return 0 === arguments.length ? this.Cj : (this.Cj = a, this)
                    },
                    background1: z(b),
                    background2: z(d),
                    textColor1: z(e),
                    textColor2: z(f),
                    accent1: z(g),
                    accent2: z(h),
                    accent3: z(i),
                    accent4: z(j),
                    accent5: z(k),
                    accent6: z(l),
                    hyperlink: z(m),
                    followedHyperlink: z(n),
                    getColor: function(a) {
                        var b, c, d, e, f;
                        if (a && (b = a.split(" "))) {
                            if (d = -1, e = b.length, e > 1) {
                                if (!b[0]) return a;
                                c = b[0].toLowerCase(), "background" === c ? d = w(b[1], 10) - 1 : "text" === c ? d = w(b[1], 10) + 1 : "accent" === c && (d = w(b[1], 10) + 3)
                            } else 1 === e && (c = b[0].toLowerCase(), "hyperlink" === c ? d = m : "followedhyperlink" === c && (d = n));
                            if (d >= 0 && d <= 11) return e > 2 ? (f = w(b[2], 10) / 100, u.bc(u.jc(this.po[d], f))) : u.bc(this.po[d])
                        }
                        return a
                    },
                    toJSON: function() {
                        var a = this,
                            c = a.po;
                        return {
                            name: a.Cj,
                            background1: c[b],
                            background2: c[d],
                            text1: c[e],
                            text2: c[f],
                            accent1: c[g],
                            accent2: c[h],
                            accent3: c[i],
                            accent4: c[j],
                            accent5: c[k],
                            accent6: c[l],
                            hyperlink: c[m],
                            followedHyperlink: c[n]
                        }
                    },
                    fromJSON: function(a, c) {
                        var o, p, q, r, s, u, v, w, x, y, z, A, B, C, D, E, F;

                        function G(a, b) {
                            t(b) || (o.po[a] = {
                                a: b.a,
                                r: b.r,
                                g: b.g,
                                b: b.b
                            })
                        }
                        a && (o = this, p = "_colorList", q = "_name", c ? (r = a.name ? a.name : a[q], t(r) || (o.Cj = r), s = a.colorList ? a.colorList : a[p], u = s[b], v = s[d], w = s[e], x = s[f], y = s[g], z = s[h], A = s[i], B = s[j], C = s[k], D = s[l], E = s[m], F = s[n]) : (t(a.name) || (o.Cj = a.name), u = a.background1, v = a.background2, w = a.text1, x = a.text2, y = a.accent1, z = a.accent2, A = a.accent3, B = a.accent4, C = a.accent5, D = a.accent6, E = a.hyperlink, F = a.followedHyperlink), G(b, u), G(d, v), G(e, w), G(f, x), G(g, y), G(h, z), G(i, A), G(j, B), G(k, C), G(l, D), G(m, E), G(n, F))
                    },
                    e4: function(a) {
                        var b, c, d, e;
                        if (this.name() !== a.name()) return !1;
                        for (b = ["textColor1", "textColor2", "background1", "background2", "accent1", "accent2", "accent3", "accent4", "accent5", "accent6", "hyperlink", "followedHyperlink"], c = 0, d = b.length; c < d; c++) if (e = b[c], !u.Pka(this[e](), a[e]())) return !1;
                        return !0
                    }
                }, a
            }(), p = function() {
                function a(a, b, c, d) {
                    var e = this;
                    e.name(a), e.colors(b ? b : new o(a)), e.headerFont(c), e.bodyFont(d)
                }
                return a.prototype = {
                    name: y("name"),
                    colors: y("colors"),
                    headerFont: y("headerFont"),
                    bodyFont: y("bodyFont"),
                    getColor: function(a) {
                        return this.colors().getColor(a)
                    },
                    getFont: function(a) {
                        return "Body" === a ? this.bodyFont() : "Headings" === a ? this.headerFont() : a
                    },
                    toJSON: function() {
                        var b = this,
                            c = b.name();
                        return a.f4(b) ? c : {
                            name: c,
                            themeColor: b.colors() ? b.colors().toJSON() : void 0,
                            headingFont: b.headerFont(),
                            bodyFont: b.bodyFont()
                        }
                    }
                }, a.f4 = function(a) {
                    var b, c = a.name();
                    return !!r[c] && (b = r[c], a.bodyFont() === b.bodyFont() && a.headerFont() === b.headerFont() && a.colors().e4(b.colors()))
                }, a
            }(), q = function() {
                var a, b;

                function c() {}
                return a = "#000000", b = "#FFFFFF", c.Default = new o("Default", b, "#EEECE1", a, "#1F497D", "#4F81BD", "#C0504D", "#9BBB59", "#8064A2", "#4BACC6", "#F79646", "#0000FF", "#800080"), c.Office2007 = new o("Office2007", b, "#EEECE1", a, "#1F497D", "#4F81BD", "#C0504D", "#9BBB59", "#8064A2", "#4BACC6", "#F79646", "#0000FF", "#800080"), c.Office = new o("Office", b, "#E7E6E6", a, "#44546A", "#5B9BD5", "#ED7D31", "#A5A5A5", "#FFC000", "#4472C4", "#70AD47", "#0563C1", "#954F72"), c.Apex = new o("Apex", b, "#C9C2D1", a, "#69676D", "#CEB966", "#9CB084", "#6BB1C9", "#6585CF", "#7E6BC9", "#A379BB", "#410082", "#932968"), c.Aspect = new o("Aspect", b, "#E3DED1", a, "#323232", "#F07F09", "#9F2936", "#1B587C", "#4E8542", "#604878", "#C19859", "#6B9F25", "#B26B02"), c.Concourse = new o("Concourse", b, "#DEF5FA", a, "#464646", "#2DA2BF", "#DA1F28", "#EB641B", "#39639D", "#474B78", "#7D3C4A", "#FF8119", "#44B9E8"), c.Civic = new o("Civic", b, "#C5D1D7", a, "#646B86", "#D16349", "#CCB400", "#8CADAE", "#8C7B70", "#8FB08C", "#D19049", "#00A3D6", "#694F07"), c.Oriel = new o("Oriel", b, "#FFF39D", a, "#575F6D", "#FE8637", "#7598D9", "#B32C16", "#F5CD2D", "#AEBAD5", "#777C84", "#D2611C", "#3B435B"), c.Origin = new o("Origin", b, "#DDE9EC", a, "#464653", "#727CA3", "#9FB8CD", "#D2DA7A", "#FADA7A", "#B88472", "#8E736A", "#B292CA", "#6B5680"), c.Paper = new o("Paper", b, "#FEFAC9", a, "#444D26", "#A5B592", "#F3A447", "#E7BC29", "#D092A7", "#9C85C0", "#809EC2", "#8E58B6", "#7F6F6F"), c.Solstice = new o("Solstice", b, "#E7DEC9", a, "#4F271C", "#3891A7", "#FEB80A", "#C32D2E", "#84AA33", "#964305", "#475A8D", "#8DC765", "#AA8A14"), c.Technic = new o("Technic", b, "#D4D2D0", a, "#3B3B3B", "#6EA0B0", "#CCAF0A", "#8D89A4", "#748560", "#9E9273", "#7E848D", "#00C8C3", "#A116E0"), c.Trek = new o("Trek", b, "#FBEEC9", a, "#4E3B30", "#F0A22E", "#A5644E", "#B58B80", "#C3986D", "#A19574", "#C17529", "#AD1F1F", "#FFC42F"), c.Urban = new o("Urban", b, "#DEDEDE", a, "#424456", "#53548A", "#438086", "#A04DA3", "#C4652D", "#8B5D3D", "#5C92B5", "#67AFBD", "#C2A874"), c.Verve = new o("Verve", b, "#D2D2D2", a, "#666666", "#FF388C", "#E40059", "#9C007F", "#68007F", "#005BD3", "#00349E", "#17BBFD", "#FF79C2"), c.Equity = new o("Equity", b, "#E9E5DC", a, "#696464", "#D34817", "#9B2D1F", "#A28E6A", "#956251", "#918485", "#855D5D", "#CC9900", "#96A9A9"), c.Flow = new o("Flow", b, "#DBF5F9", a, "#04617B", "#0F6FC6", "#009DD9", "#0BD0D9", "#10CF9B", "#7CCA62", "#A5C249", "#E2D700", "#85DFD0"), c.Foundry = new o("Foundry", b, "#EAEBDE", a, "#676A55", "#72A376", "#B0CCB0", "#A8CDD7", "#C0BEAF", "#CEC597", "#E8B7B7", "#DB5353", "#903638"), c.Median = new o("Median", b, "#EBDDC3", a, "#775F55", "#94B6D2", "#DD8047", "#A5AB81", "#D8B25C", "#7BA79D", "#968C8C", "#F7B615", "#704404"), c.Metro = new o("Metro", b, "#D6ECFF", a, "#4E5B6F", "#7FD13B", "#EA157A", "#FEB80A", "#00ADDC", "#738AC8", "#1AB39F", "#EB8803", "#5F7791"), c.Module = new o("Module", b, "#D4D4D6", a, "#5A6378", "#F0AD00", "#60B5CC", "#E66C7D", "#6BB76D", "#E88651", "#C64847", "#168BBA", "#680000"), c.Opulent = new o("Opulent", b, "#F4E7ED", a, "#B13F9A", "#B83D68", "#AC66BB", "#DE6C36", "#F9B639", "#CF6DA4", "#FA8D3D", "#FFDE66", "#D490C5"), c
            }(), r = {
                Default: new p("Default", q.Default, "Cambria", "Calibri"),
                Office: new p("Office", q.Office, "Calibri Light", "Calibri"),
                Office2007: new p("Office2007", q.Office2007, "Cambria", "Calibri"),
                Apex: new p("Apex", q.Apex, "Lucida Sans", "Book Antiqua"),
                Aspect: new p("Aspect", q.Aspect, "Verdana", "Verdana"),
                Concourse: new p("Concourse", q.Concourse, "Lucida Sans Unicode", "Lucida Sans Unicode"),
                Civic: new p("Civic", q.Civic, "Georgia", "Georgia"),
                Oriel: new p("Oriel", q.Oriel, "Century Schoolbook", "Century Schoolbook"),
                Origin: new p("Origin", q.Origin, "Bookman Old Style", "Gill Sans MT"),
                Paper: new p("Paper", q.Paper, "Constantia", "Constantia"),
                Solstice: new p("Solstice", q.Solstice, "Gill Sans MT", "Gill Sans MT"),
                Technic: new p("Technic", q.Technic, "Franklin Gothic Book", "Arial"),
                Trek: new p("Trek", q.Trek, "Franklin Gothic Medium", "Franklin Gothic Book"),
                Urban: new p("Urban", q.Urban, "Trebuchet MS", "Georgia"),
                Verve: new p("Verve", q.Verve, "Century Gothic", "Century Gothic"),
                Equity: new p("Equity", q.Equity, "Franklin Gothic Book", "Perpetua"),
                Flow: new p("Flow", q.Flow, "Calibri", "Constantia"),
                Foundry: new p("Foundry", q.Foundry, "Rockwell", "Rockwell"),
                Median: new p("Median", q.Median, "Tw Cen MT", "Tw Cen MT"),
                Metro: new p("Metro", q.Metro, "Consolas", "Corbel"),
                Module: new p("Module", q.Module, "Corbel", "Corbel"),
                Opulent: new p("Opulent", q.Opulent, "Trebuchet MS", "Trebuchet MS")
            }, x.ColorScheme = o, x.ThemeColors = q, x.Theme = p, x.Themes = r, a.exports = x
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a, b = c(45),
                d = c(42).GC$,
                e = d.sd,
                f = [];
            d[e] = function(b) {
                f.push(b), a || (a = setTimeout(g, 5e3 * Math.random() + 3e3))
            };

            function g() {
                var c, d, e, g;
                if (a = null, f[0]) try {
                    c = f[0].tc, c && c.qo && (d = b.g_a(c), e = c.getActiveSheet(), e && (g = e.l, g && (d = g), g || d.b || d.m !== -1 || !d.d || (d.s = !1, b.h_a(c, d))))
                } finally {
                    f = []
                }
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d = c(42),
                e = c(44).GC$,
                f = c(43).Ul,
                g = document,
                h = Math.floor,
                i = Math.max,
                j = void 0,
                k = d.Ho = "11pt";

            function l() {}
            l.Io = function(a, b) {
                return b ? l.Jo(a, b) : a
            }, l.Ko = function(a) {
                var b, c;
                return a ? (b = l.Lo(), b.style.font = a, c = b.style, {
                    fontFamily: c.fontFamily,
                    fontSize: c.fontSize,
                    fontStyle: c.fontStyle,
                    fontWeight: c.fontWeight
                }) : {}
            }, l.F4 = function(a) {
                var b, c, d, e, g, h, i;
                return f.Ml.safari ? a.font : (b = "", c = "normal", d = "400", e = a.fontStyle, g = a.fontVariant, h = a.fontWeight, i = a.lineHeight, e !== c && (b = e), g !== c && (b += (b ? " " : "") + g), h !== c && h !== d && (b += (b ? " " : "") + h), b += (b ? " " : "") + a.fontSize, i !== c && (b += "/" + i), b += " " + a.fontFamily)
            }, l.Jo = function(a, b) {
                var c, d, f, h, i;
                if (!a && !b) return a;
                if (a) {
                    if (d = b ? a + "+" + b : a, f = l.Mo[d]) return f;
                    c = l.Lo(), e(c).css("font", a)
                } else {
                    if (d = b, f = l.Mo[d]) return f;
                    c = l.Lo(), e(c).css("fontSize", k), e(c).css("fontFamily", b)
                }
                return h = c.currentStyle, i = g.defaultView, i && i.getComputedStyle && (h = i.getComputedStyle(c, "")), f = l.F4(h), l.Mo[d] = f, l.Mo[f] = f, f
            }, l.No = function(a, b, c, d) {
                var e, f, j, k, m, n, o, p, q, r = l.Oo[b];
                if (!d) if (r) {
                    if (e = r[a]) return e
                } else r = l.Oo[b] = {};
                return f = l.Lo(), f.style.font = a, j = f.currentStyle, k = g.defaultView, k && k.getComputedStyle && (j = k.getComputedStyle(f, "")), m = j.fontSize, n = "px", m.indexOf(n) !== -1 && (o = i(1, h(parseFloat(m.replace(n, "")) * b)), c && 1 === o && (c.value = !0), m = o + n), p = j.lineHeight, p.indexOf(n) !== -1 && (q = i(1, h(parseFloat(p.replace(n, "")) * b)), p = q + n), 1 === b ? e = {
                    font: a,
                    fontSize: o
                } : (f.style.fontSize = m, f.style.lineHeight = p, e = {
                    font: f.style.font,
                    fontSize: o
                }), d || (r[a] = e), e
            }, l.Lo = function() {
                var a, b, c;
                return l.Po ? l.Po.style.cssText = l.Qo : (a = "-10000px", b = f.Nl("span"), c = b.style, c.visibility = "hidden", c.top = a, c.left = a, c.lineHeight = "normal", c.position = "absolute", c.fontWeight = "normal", c.fontStretch = "normal", c.fontVariant = "normal", c.fontStyle = "normal", g.body.insertBefore(b, null), l.Po = b, l.Qo = c.cssText), l.Po
            }, l.no = function() {
                var a = l.Po;
                a && (e(a).remove(), l.Po = j, l.Qo = j)
            }, b = {}, l.Ro = function(a, c) {
                var d, e = a + "," + c,
                    f = b,
                    g = f[e];
                return g || (d = l.Lo(), d.style.font = a, c && (d.style.fontWeight = c), g = f[e] = d.style.font), g
            }, l.Mo = {}, l.Oo = {}, l.So = function(a) {
                if (a <= 0) return "none";
                var b = "";
                return (1 | a) === a && (b += "underline "), (2 | a) === a && (b += "line-through "), (4 | a) === a && (b += "overline "), b.trim()
            }, d.To = l, a.exports = d
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d = c(42),
                e = c(44).GC$,
                f = c(43),
                g = c(52).To,
                h = e.each,
                i = f.Ul,
                j = i.Ol,
                k = void 0,
                l = null,
                m = "autoFormatter",
                n = "formatter",
                o = "cellType",
                p = "hAlign",
                q = "vAlign",
                r = "imeMode",
                s = "labelOptions",
                t = {
                    borderLeft: !0,
                    borderRight: !0,
                    borderTop: !0,
                    borderBottom: !0,
                    diagonalDown: !0,
                    diagonalUp: !0
                };
            d.HorizontalAlign = {
                left: 0,
                center: 1,
                right: 2,
                general: 3
            }, d.VerticalAlign = {
                top: 0,
                center: 1,
                bottom: 2
            }, d.ImageLayout = {
                stretch: 0,
                center: 1,
                zoom: 2,
                none: 3
            }, d.LineStyle = {
                empty: 0,
                thin: 1,
                medium: 2,
                dashed: 3,
                dotted: 4,
                thick: 5,
                double: 6,
                hair: 7,
                mediumDashed: 8,
                dashDot: 9,
                mediumDashDot: 10,
                dashDotDot: 11,
                mediumDashDotDot: 12,
                slantedDashDot: 13
            }, d.TextDecorationType = {
                underline: 1,
                lineThrough: 2,
                overline: 4,
                doubleUnderline: 8,
                none: 0
            }, d.LineBorderComposeLevel = {
                conditionalFormat: 1,
                cell: 10,
                table: 20,
                row: 30,
                column: 40,
                sheet: 50
            }, d.LabelAlignment = {
                topLeft: 0,
                topCenter: 1,
                topRight: 2,
                bottomLeft: 3,
                bottomCenter: 4,
                bottomRight: 5
            }, d.LabelVisibility = {
                visible: 0,
                hidden: 1,
                auto: 2
            };

            function u(a, b, c) {
                this.color = a || "black", this.style = b || 0, this.level = c
            }
            u.prototype = {
                constructor: u,
                Uo: function() {
                    return new u(this.color, this.style, this.level)
                },
                toJSON: function() {
                    var a = {},
                        b = this,
                        c = b.color,
                        d = b.style;
                    return "black" !== c && (a.color = c), 0 !== d && (a.style = d), a
                },
                fromJSON: function(a) {
                    if (a) {
                        var b = this,
                            c = a.color,
                            d = a.style;
                        j(c) && (b.color = c), j(d) && (b.style = d)
                    }
                }
            }, u.Vo = function(a) {
                var b = a && a.style,
                    c = {
                        9: 1,
                        1: 1,
                        3: 1,
                        4: 1,
                        7: 1,
                        11: 1,
                        2: 2,
                        10: 2,
                        12: 2,
                        8: 2,
                        13: 2,
                        5: 3,
                        6: 3
                    };
                return c[b] || 0
            }, d.LineBorder = u, b = ["backColor", "foreColor", p, q, "font", "themeFont", n, "borderLeft", "borderTop", "borderRight", "borderBottom", "locked", "textIndent", "wordWrap", "shrinkToFit", "backgroundImage", o, "backgroundImageLayout", "tabStop", "textDecoration", r, "name", "parentName", "watermark", "cellPadding", s, "quotePrefix", "diagonalDown", "diagonalUp", "isVerticalText"];

            function v() {
                var a, c, d = this;
                if (d.yn = v.Wo++, a = arguments, 0 !== a.length) for (c = 0; c < b.length; c++) d[b[c]] = a[c]
            }
            function w(a, b, d, e) {
                var g, h, i, j, l = b;
                if (d && b) {
                    if (g = b.gQa && b.gQa()) return void(a.cellType = l);
                    b.toJSON && (b = b.toJSON()), h = c(54).CellTypes._o, i = b.typeName, j = h[b.type] || h[i] || f.getTypeFromString(i), j ? (l = new j, l.fromJSON(b, e)) : l = k
                }
                a.cellType = l
            }
            function x(a, b, d) {
                var e, g, h, i, j = b;
                d && b && "object" == typeof b && (b.toJSON && (b = b.toJSON()), e = c(34), g = e && e.GeneralFormatter, g && (h = b.typeName, h ? (i = f.getTypeFromString(h), i && (j = new i, j.fromJSON(b))) : j = new g(b.formatCached, b.customerCultureName))), a.formatter = j
            }
            function y(a, b, d) {
                var e, f, g = b;
                d && b && (b.toJSON && (b = b.toJSON()), e = c(34), f = e && e.GeneralFormatter, f && (g = new f(b.formatCached, b.customerCultureName), g.isAuto = !0)), a._autoFormatter = g
            }
            function z(a, b, c) {
                b && (b = a.getColor(b), b && c(b))
            }
            function A(a, b, c) {
                return a === p ? 2 === c ? 1 === b : 1 === c ? 1 === b : 3 === b : a === q ? 2 === c ? 1 === b : 1 === c ? 1 === b : 0 === b : a === r ? 1 === b : a === m ? b === k : void 0
            }
            v.prototype = {
                constructor: v,
                Yo: function(a, b, c) {
                    var d, e, f, g, h, i, j, l = this,
                        m = a.labelOptions;
                    b ? (l._autoFormatter = a._autoFormatter, l.backgroundImage = a.backgroundImage, l.backgroundImageLayout = a.backgroundImageLayout, l.backColor = a.backColor, l.foreColor = a.foreColor, l.hAlign = a.hAlign, l.vAlign = a.vAlign, l.font = a.font, l.themeFont = a.themeFont, l.formatter = a.formatter, d = a.borderLeft, l.borderLeft = d && d.Uo() || d, l.borderLeft && c && (l.borderLeft.level = c), e = a.borderTop, l.borderTop = e && e.Uo() || e, l.borderTop && c && (l.borderTop.level = c), f = a.borderRight, l.borderRight = f && f.Uo() || f, l.borderRight && c && (l.borderRight.level = c), g = a.borderBottom, l.borderBottom = g && g.Uo() || g, l.borderBottom && c && (l.borderBottom.level = c), h = a.diagonalDown, l.diagonalDown = h && h.Uo() || h, l.diagonalDown && c && (l.diagonalDown.level = c), i = a.diagonalUp, l.diagonalUp = i && i.Uo() || i, l.diagonalUp && c && (l.diagonalUp.level = c), l.locked = a.locked, l.textIndent = a.textIndent, l.wordWrap = a.wordWrap, l.shrinkToFit = a.shrinkToFit, l.cellType = a.cellType, l.name = a.name, l.parentName = a.parentName, l.tabStop = a.tabStop, l.textDecoration = a.textDecoration, l.imeMode = a.imeMode, l.watermark = a.watermark, l.cellPadding = a.cellPadding, l.isVerticalText = a.isVerticalText, m && (l.labelOptions = {
                        alignment: m.alignment,
                        font: m.font,
                        foreColor: m.foreColor,
                        visibility: m.visibility,
                        margin: m.margin
                    }), l.quotePrefix = a.quotePrefix) : (l.backgroundImage === k && (l.backgroundImage = a.backgroundImage), l.backgroundImageLayout === k && (l.backgroundImageLayout = a.backgroundImageLayout), l.backColor === k && (l.backColor = a.backColor), l.foreColor === k && (l.foreColor = a.foreColor), l.hAlign === k && (l.hAlign = a.hAlign), l.vAlign === k && (l.vAlign = a.vAlign), l.themeFont === k && l.font === k ? (l.themeFont = a.themeFont, l.font = a.font) : l.themeFont !== k && l.font === k && (l.font = a.font), l.formatter === k && (l.formatter = a.formatter), l._autoFormatter === k && (l._autoFormatter = a._autoFormatter), l.borderLeft === k && (d = a.borderLeft, l.borderLeft = d && d.Uo() || d, l.borderLeft && c && (l.borderLeft.level = c)), l.borderTop === k && (e = a.borderTop, l.borderTop = e && e.Uo() || e, l.borderTop && c && (l.borderTop.level = c)), l.borderRight === k && (f = a.borderRight, l.borderRight = f && f.Uo() || f, l.borderRight && c && (l.borderRight.level = c)), l.borderBottom === k && (g = a.borderBottom, l.borderBottom = g && g.Uo() || g, l.borderBottom && c && (l.borderBottom.level = c)), l.diagonalDown === k && (h = a.diagonalDown, l.diagonalDown = h && h.Uo() || h, l.diagonalDown && c && (l.diagonalDown.level = c)), l.diagonalUp === k && (i = a.diagonalUp, l.diagonalUp = i && i.Uo() || i, l.diagonalUp && c && (l.diagonalUp.level = c)), l.locked === k && (l.locked = a.locked), l.textIndent === k && (l.textIndent = a.textIndent), l.wordWrap === k && (l.wordWrap = a.wordWrap), l.shrinkToFit === k && (l.shrinkToFit = a.shrinkToFit), l.cellType === k && (l.cellType = a.cellType), l.tabStop === k && (l.tabStop = a.tabStop), l.textDecoration === k && (l.textDecoration = a.textDecoration), l.imeMode === k && (l.imeMode = a.imeMode), l.name === k && (l.name = a.name), l.parentName === k && (l.parentName = a.parentName), l.watermark === k && (l.watermark = a.watermark), l.cellPadding === k && (l.cellPadding = a.cellPadding), !l.labelOptions && m && (l.labelOptions = {}), j = l.labelOptions, j && m && (j.alignment === k && (j.alignment = m.alignment), j.font === k && (j.font = m.font), j.foreColor === k && (j.foreColor = m.foreColor), j.visibility === k && (j.visibility = m.visibility), j.margin === k && (j.margin = m.margin)), l.quotePrefix === k && (l.quotePrefix = a.quotePrefix), l.isVerticalText === k && (l.isVerticalText = a.isVerticalText))
                },
                $b: function(a) {
                    var c = this;
                    0 === arguments.length ? h(b, function(a, b) {
                        c[b] = k
                    }) : c[a] = k
                },
                clone: function(a) {
                    var b = this,
                        c = b.borderLeft,
                        d = b.borderTop,
                        e = b.borderRight,
                        f = b.borderBottom,
                        g = b.diagonalDown,
                        h = b.diagonalUp,
                        i = new v(b.backColor, b.foreColor, b.hAlign, b.vAlign, b.font, b.themeFont, k, c && !a && c.Uo() || c, d && !a && d.Uo() || d, e && !a && e.Uo() || e, f && !a && f.Uo() || f, b.locked, b.textIndent, b.wordWrap, b.shrinkToFit, b.backgroundImage, k, b.backgroundImageLayout, b.tabStop, b.textDecoration, b.imeMode, b.name, b.parentName, b.watermark, b.cellPadding, b.labelOptions, b.quotePrefix, g && !a && g.Uo() || g, h && !a && h.Uo() || h, b.isVerticalText);
                    return x(i, b.formatter, !a), y(i, b._autoFormatter, !a), w(i, b.cellType, !a, !0), i
                },
                Zo: function(a) {
                    var b, c, d, e, f, h, i = this;
                    if (a && a.getColor) for (z(a, i.foreColor, function(a) {
                        i.foreColor = a
                    }), z(a, i.backColor, function(a) {
                        i.backColor = a
                    }), b = [i.borderLeft, i.borderTop, i.borderRight, i.borderBottom, i.diagonalDown, i.diagonalUp], c = 0, d = b.length; c < d; c++) e = b[c], e && e.color && z(a, e.color, function(a) {
                        e.color = a
                    });
                    return f = i.themeFont, h = i.font, a && a.getFont && (f ? i.font = g.Io(h, a.getFont(f)) : h || (i.font = g.Io(h, a.bodyFont()))), i
                },
                $o: function(a) {
                    var b, c = this,
                        d = c._autoFormatter;
                    d && a !== l && (b = d.getPreferredEditingFormatter(a), b.isAuto = !0, c._autoFormatter = b)
                },
                toJSON: function(a, c) {
                    var d, f, g = this,
                        h = {},
                        i = g._autoFormatter;
                    for (!j(i) || c && A(m, i, a) || (i.toJSON && (i = i.toJSON()), e.isEmptyObject(i) || (h[m] = i)), d = 0; d < b.length; d++) f = b[d], i = g[f], f !== s || e.isEmptyObject(i) ? !j(i) || c && A(f, i, a) || (h[f] = i && i.toJSON ? i.toJSON() : i) : h[s] = i;
                    return e.isEmptyObject(h) ? k : h
                },
                fromJSON: function(a, b) {
                    var c, d, e, f, g;
                    if (a) {
                        c = this;
                        for (d in a) e = a[d], j(e) && (f = {
                            p: d,
                            v: e,
                            r: !1
                        }, v.ao(c, "fromJson", f), f.r || ("formatter" === d ? x(c, e, !0) : "autoFormatter" === d ? y(c, e, !0) : d === o ? w(c, e, !0, b) : t[d] ? e === l ? c[d] = null : (g = new u, g.fromJSON(e, b), c[d] = g) : c[d] = e))
                    }
                }
            }, f.Zn(v), v.Wo = 0, d.Style = v, a.exports = d
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(26),
                d = c(44).GC$,
                e = c(43),
                f = c(52).To,
                g = c(42),
                h = g.CellTypes = {},
                i = b.CultureManager,
                j = b.o,
                k = b.l,
                l = b.pc,
                m = e.mn,
                n = b.j.Fa,
                o = b.j.Ma,
                p = e.Vn,
                q = e.Rect,
                r = e.Im,
                s = e.Ul,
                t = s.fp,
                u = s.ol,
                v = s.uWa,
                w = s.lZa,
                x = s.hZa,
                y = "right",
                z = "center",
                A = 16,
                B = "string",
                C = "number",
                D = null,
                E = void 0,
                F = Math.floor,
                G = Math.ceil,
                H = "none",
                I = h.Context = {};
            I.ap = function(a, b, c, d, e, f, g, h) {
                var i, j, k, l, m, n, o, p, q, r, s;
                if (f && "none" !== f && h) try {
                    h.ko(f) ? (i = h.lo(f), j = i.width, k = i.height, l = 0, m = 0, n = j, o = k, p = d, q = e, r = b, s = c, 1 === g ? (n = d >= j ? j : d, o = e >= k ? k : e, r = d > j && j > 0 ? G(b + d / 2 - j / 2) : b, s = e > k && k > 0 ? G(c + e / 2 - k / 2) : c, p = n, q = o) : 2 === g ? e > 0 && k > 0 && d / e > j / k ? (p = j / k * e, r = b + d / 2 - p / 2) : d > 0 && j > 0 && e / d > k / j && (q = k / j * d, s = c + e / 2 - q / 2) : 3 === g && (n = d >= j ? j : d, o = e >= k ? k : e, p = n, q = o), a.drawImage(i, l, m, n, o, r, s, p, q)) : h.fo(f)
                } catch (a) {}
            };

            function J(a, b, c, d) {
                var e = a.conditionalFormats;
                if (e) return e.bp(b, c, d)
            }
            I.cp = function(a, b, c, d, e) {
                var f, g, h = 0,
                    i = e && e.sheet,
                    j = c.textIndent,
                    k = c.font,
                    l = c.hAlign,
                    m = c.isVerticalText,
                    n = t(k) / d;
                if (i && typeof b === B && b) if (g = b.split(/\r\n|\r|\n/), m) if (c.wordWrap) for (f = 0; f < g.length; f++) h += n;
                else h = n;
                else {
                    if (c.wordWrap) for (f = 0; f < g.length; f++) h = Math.max(h, p.Xn(g[f], k, !0) / d);
                    else h = i.dp(b, k) / d;
                    1 !== l && j > 0 && (h += 8 * j / d), 0 === l && J(i, e.row, e.col, e.sheetArea) && (h += A)
                }
                return h
            }, I.ep = function(a, b, c, d, e) {
                var f, g, h, i, j, k, l, m, n, o, q, r = 0,
                    s = e && e.sheet,
                    u = c.font,
                    v = c.isVerticalText,
                    w = c.textIndent,
                    x = c.vAlign;
                if (s && typeof b === B && b) if (h = t(u) / d, v) {
                    if (c.wordWrap) for (g = b.split(/\r\n|\r|\n/), f = 0; f < g.length; f++) i = g[f].length * h, r = Math.max(r, i);
                    else r = b.length * h;
                    1 !== x && w > 0 && (r += 8 * w / d)
                } else if (c.wordWrap) {
                    if (j = e.row, k = e.col, l = e.sheetArea, m = s.Tl(k), n = s.ITa.findSpan(j, k, l), n && n.row >= j && n.col >= k && n.colCount > 1) for (o = k + 1; o < k + n.colCount; o++) m += s.Tl(o);
                    q = 0, w > 0 && (q = 8 * w), g = p.Wn(b, m - 3 - q, u), r = g.length * h
                } else r = h;
                return r
            };

            function K(a, b, c, d, e, f, g, h, i) {
                (f || g) && (a.save(), a.beginPath(), f && (a.fillStyle !== f && (a.fillStyle = f), a.fillRect(b, c, d, e)), I.ap(a, b, c, d, e, g, h, i), a.restore())
            }
            function L(a, b, d, e, f, g, h) {
                var i, j, k = c(55),
                    l = k && k.SparklineExValue;
                return !!(l && b instanceof l && (i = h && h.parent, i && (j = i.getSparklineEx(b.name)))) && (j.paint(a, b.value, d, e, f, g, {
                        zoomFactor: h.zoom(),
                        sheet: h
                    }), !0)
            }
            function M(a, b, c, d, e, f) {
                0 === a && J(b, c, d, e) && (f.x += A, f.width -= A)
            }
            I.gp = function(a, b, c, d, e, f, g, h, i, j, k) {
                var l;
                1 === i ? (a.beginPath(), l = a.createLinearGradient(b, c + 1, b, c + e - 2), l.addColorStop(0, h.borderLeftColor), l.addColorStop(1, h.borderRightColor), a.strokeStyle = l, f.borderLeft || (a.moveTo(b + .5, c), a.lineTo(b + .5, c + e)), f.borderRight || (a.moveTo(b + d - .5, c), a.lineTo(b + d - .5, c + e)), j && !f.borderTop && (a.moveTo(b, c + .5), a.lineTo(b + d, c + .5)), a.stroke(), h.borderBottomWidth && !f.borderBottom && (a.beginPath(), a.strokeStyle = h.borderBottomColor, a.moveTo(b + 1, c + e - .5), a.lineTo(b + d, c + e - .5), a.stroke())) : (a.beginPath(), l = a.createLinearGradient(b, c, b + d - 2, c), l.addColorStop(0, h.borderTopColor), l.addColorStop(1, h.borderBottomColor), a.strokeStyle = l, f.borderTop || (a.moveTo(b, c + .5), a.lineTo(b + d, c + .5)), f.borderBottom || (a.moveTo(b, c + e - .5), a.lineTo(b + d, c + e - .5)), k && !f.borderLeft && (a.moveTo(b + .5, c), a.lineTo(b + .5, c + e)), a.stroke(), h.borderRightWidth && !f.borderRight && (a.beginPath(), a.strokeStyle = h.borderRightColor, a.moveTo(b + d - .5, c + 1), a.lineTo(b + d - .5, c + e), a.stroke()))
            }, I.hp = function(a, b) {
                var c;
                c = 2 === b ? "active" : 4 === b ? "inactive" : 0 === b ? "disabled" : "auto", d(a).css("ime-mode", c)
            };

            function N(a, b, c, d) {
                var e = a.cellPadding,
                    f = 0,
                    g = a.labelOptions;
                return c && (e = g ? g.margin : "0"), e && (f = parseInt(Q(e)[b]), f = typeof f === C && f > 0 ? f : 0), d === E ? f : f * d
            }
            function O(a) {
                var b = {
                    context: a,
                    value: 0
                };
                return _.ao(a.sheet, "getOutlineColumnOffset", b), b.value
            }
            I.u5 = N;

            function P(a, b, c, e) {
                var f, g, h = e && e.sheet;
                h && c && (f = e.canvasOffset || h.mm.bG(), g = h.Dr(), d(a).css("top", f.top + g.y + c.y - 2).css("left", f.left + g.x + c.x - 2).css("background-color", b.backColor || "white").width(c.width).height(c.height))
            }
            function Q(a) {
                var b, c, d, e, f = [0, 0, 0, 0];
                return typeof a === B && (b = a.split(" ", 4), c = b.length, 1 === c ? (d = b[0], f = [d, d, d, d]) : 2 === c ? (d = b[0], e = b[1], f = [d, e, d, e]) : 3 === c ? (e = b[1], f = [b[0], e, b[2], e]) : 4 === c && (f = [b[0], b[1], b[2], b[3]])), f
            }
            function R(a, b) {
                var c, d = N(a, 0),
                    e = N(a, 2),
                    f = N(a, 0, !0),
                    g = N(a, 2, !0);
                if (N(a, 3, !0) + N(a, 1, !0) >= b.width) return !1;
                if (c = a.labelOptions.alignment, c === E && (c = a.labelOptions.alignment = 0), 0 === c || 1 === c || 2 === c) {
                    if (d > 0 && f + g < d) return !0
                } else if ((3 === c || 4 === c || 5 === c) && d < b.height && e > 0 && f + g < e) return !0;
                return !1
            }
            function S(a, b) {
                var c = N(b, 0),
                    d = N(b, 3, !0),
                    e = N(b, 2, !0),
                    f = a.clone(),
                    g = b.labelOptions.alignment;
                return 0 === g || 1 === g || 2 === g ? c < a.height && (f.height = c - e + 1) : 3 !== g && 4 !== g && 5 !== g || (f.height = a.height - e), f.x += d, f.width -= d + N(b, 1, !0), f
            }
            function T(a) {
                var b = "left";
                return 1 === a || 4 === a ? b = "center" : 2 !== a && 5 !== a || (b = "right"), b
            }
            function U(a, b, c, d) {
                var f = new e.Point(a.x, a.y),
                    g = c.fontSize,
                    h = N(b, 0),
                    i = N(b, 2),
                    j = N(b, 3, !0),
                    k = N(b, 1, !0),
                    l = a.width,
                    m = a.height,
                    n = g > 8 ? Math.floor((g - 8) / 5 + 2) : 1,
                    o = d / 2 - g / 2 + n - 1,
                    p = g > 8 ? 1 : 2,
                    q = d - o + N(b, 0, !0),
                    r = q + 1,
                    s = h + i > m ? h + q : m - i + q - 1;
                switch (b.labelOptions.alignment) {
                    case 0:
                        f.x += j + p + 1, f.y += r;
                        break;
                    case 1:
                        f.x += j + (l - j - k) / 2, f.y += r;
                        break;
                    case 2:
                        f.x += l - k - 2, f.y += r;
                        break;
                    case 3:
                        f.x += j + p + 1, f.y += s;
                        break;
                    case 4:
                        f.x += j + (l - j - k) / 2, f.y += s;
                        break;
                    case 5:
                        f.x += l - k - 2, f.y += s
                }
                return f
            }
            function V(a, b) {
                var c = N(b, 3, !0),
                    d = N(b, 1, !0),
                    e = N(b, 0, !0),
                    f = N(b, 2, !0),
                    g = a.clone(),
                    h = b.labelOptions.alignment;
                return g.x = c + 1, g.width -= c + d, 0 === h || 1 === h || 2 === h ? (g.y = e, g.height = N(b, 0) - e - f) : 3 !== h && 4 !== h && 5 !== h || (g.y = a.height - N(b, 2) + e, g.height = N(b, 2) - e - f), 2 !== h && 5 !== h || (g.width -= 2), g
            }
            function W(a, b) {
                if (a.cellPadding) {
                    var c = Q(a.cellPadding),
                        d;
                    for (d = 0; d < 4; d++) c[d] = parseInt(c[d]), "number" == typeof c[d] && c[d] > 0 && (c[d] *= b);
                    a.cellPadding = c.join(" ")
                }
            }
            function X(a, b, c, d) {
                var e, f;
                if (c) return b.length * d;
                if (o(b, "string")) return a.measureText(b).width;
                for (e = 0, f = 0; f < b.length; f++)"fillingChar" !== b[f].type && (e += a.measureText(b[f].value).width);
                return e
            }
            function Y(a) {
                for (var b = 0; b < a.length; b++) if ("fillingChar" === a[b].type) return !0;
                return !1
            }
            function Z(a, b, c, d, e) {
                var f;
                return f = d ? Math.floor(b / e) : Math.floor(b / a.measureText(c).width), Array(f + 1).join(c)
            }
            function $(a) {
                var b = a.clone();
                return b.width--, b.height--, b
            }
            function _() {
                this.allowOverflow = !1, this.typeName = "0"
            }
            e.Zn(_), _.prototype = {
                constructor: _,
                Gia: function(a, b, c, d, e) {
                    var f, g = this;
                    return g.i5 && (g.i5(a, b, c, d), b = g.f5(b, c)), f = {
                        ctx: a,
                        options: {
                            rect: b,
                            context: d,
                            value: e
                        }
                    }, _.ao(d.sheet, "paintCellPadding", f), f.options.rect
                },
                i5: function(a, b, c, d) {
                    var e, g, h, i, j, k, l, m, n, o, p = c.labelOptions;
                    if (p && (e = d.sheet, g = c.watermark)) {
                        if (h = p.visibility, i = e.getText(d.row, d.col, d.sheetArea), 1 === h || (2 === h || h === E) && "" === i) return;
                        j = e.zoom(), 1 !== j && W(c, j), k = p.font, l = k ? f.No(k, j) : f.No(c.font, 1), m = t(l.font), n = S(b, c), R(c, b) && (o = U(b, c, l, m)), o && (a.save(), a.textAlign = T(p.alignment), a.textBaseline = "alphabetic", w(a, l.font), a.fillStyle = p.foreColor || c.foreColor || "grey", a.rect(n.x, n.y, n.width, n.height), a.clip(), a.beginPath(), a.fillText(g, o.x, o.y), a.restore())
                    }
                },
                f5: function(a, b) {
                    var c = a.clone(),
                        d = N(b, 0),
                        e = N(b, 1),
                        f = N(b, 2),
                        g = N(b, 3);
                    return d > 0 && (c.y += d, c.height -= d), f > 0 && (c.height -= f), g > 0 && (c.x += g, c.width -= g), e > 0 && (c.width -= e), e + g >= a.width && (c.width = 0), d + f >= a.height && (c.height = 0), c
                },
                Ama: function(a, b, c, d) {
                    var e, f = this;
                    return b = f.f5(b, c), e = {
                        ctx: a,
                        options: {
                            rect: b,
                            context: d
                        }
                    }, _.ao(d.sheet, "getCellPaddingRect", e), e.options.rect
                },
                e5: function(a, b, c, e) {
                    var f, g, h, i, j, k, l, m, n, o, p, q, r, u = c.labelOptions;
                    u && (f = e.sheet, g = f.getText(e.row, e.col, e.sheetArea), h = c.watermark, i = u.visibility, 1 !== i && h && (j = u.font || c.font || f.yl.Bl(), k = f.zoom(), 1 !== k && (j = f.yl.Cl(j), W(c, k)), l = t(j), R(c, b) && (m = V(b, c)), m && (n = d(s.Nl("span")), n.text(h), o = (2 === i || i === E) && "" === g, p = m.height - l, q = m.y + (o && p > 0 ? p : 0), n.css({
                        display: "block",
                        position: "absolute",
                        left: m.x,
                        top: q,
                        width: m.width,
                        height: m.height,
                        font: x(j),
                        color: u.foreColor || c.foreColor || "grey",
                        textAlign: T(u.alignment),
                        overflow: "hidden",
                        whiteSpace: "nowrap"
                    }).attr("gcUIElement", "gcEditorLabel"), d(a).append(n), o && (r = setInterval(function() {
                        q--, n.css("top", q), q <= m.y && clearInterval(r)
                    }, 20)))))
                },
                a5: function(a) {
                    var b, c, e = this,
                        f = s.Nl("div");
                    return d(f).css({
                        position: "absolute",
                        margin: 0,
                        padding: 0,
                        overflow: "hidden",
                        "box-sizing": "content-box",
                        resize: H,
                        outline: H,
                        border: "2px #5292f7 solid",
                        "box-shadow": "1px 2px 5px rgba(0,0,0,0.4)",
                        "background-color": "white"
                    }), b = d(s.Nl("div")), b.css({
                        position: "absolute",
                        outline: H,
                        border: H
                    }), d(f).append(b), c = e.createEditorElement(a, f), c && b.append(d(c)), f
                },
                d5: function(a, b, c, d) {
                    var e, f, g;
                    a && a.firstChild && (e = this, f = $(c), P(a, b, f, d), e.e5 && e.e5(a, f, b, d), g = e.f5 ? e.f5(f, b) : f, e.activateEditor(a.firstChild.firstChild, b, g, d))
                },
                updateEditorContainer: function(a, b, c) {
                    var e, f, g, h, i, j;
                    a && b && (e = a.parentNode, e && (f = e.parentNode, g = d(f), h = b.width, i = b.height, h > 0 && (g.width(h), j = f.lastChild, c && "gcEditorLabel" === j.getAttribute("gcUIElement") && d(j).width(h - N(c, 3, !0) - N(c, 1, !0) - 2)), i > 0 && g.height(i), n(b.x) || g.css("left", b.x + "px"), n(b.y) || g.css("top", b.y + "px")))
                },
                g5: function(a, b, c, e, f) {
                    var g, h, i, j = this,
                        k = a.firstChild,
                        l = e.sheet,
                        m = $(c);
                    P(a, b, m, e), f && l && W(b, l.zoom()), d(k).css({
                        left: N(b, 3),
                        top: N(b, 0)
                    }), g = k.firstChild, h = j.f5 ? j.f5(m, b) : m, i = j.updateEditor(g, b, h, e), j.updateEditorContainer(g, i, b)
                },
                h5: function(a, b, c, d, e) {
                    var f = this,
                        g = f.f5 ? f.f5(d, c) : d;
                    return f.getCellAndPaddingHitInfo(a, b, c, g, e)
                },
                X4: function(a, b, c, d, e) {
                    return O(e) + N(c, 3, !1, d) + N(c, 1, !1, d) + this.getAutoFitWidth(a, b, c, d, e)
                },
                Y4: function(a, b, c, d, e) {
                    return N(c, 0, !1, d) + N(c, 2, !1, d) + this.getAutoFitHeight(a, b, c, d, e)
                },
                paintValue: function(a, b, c, d, e, f, g, h) {
                    var i = {},
                        j;
                    h.quotePrefix = g.quotePrefix, j = this.format(b, g.formatter || g._autoFormatter, i, h), j && this.paintText(a, b, c, d, e, f, g, h, j, i)
                },
                paintText: function(a, b, c, d, e, f, g, h, i, j, k) {
                    var l, m, n, o;
                    a.save(), a.beginPath(), l = this.v$a(g, h), m = this.VI(c, d, e, f, h), this.w$a(a, g, h, j, "alphabetic", z, k), n = g.font, o = h.fontInfo.fontSize, g.isVerticalText ? this.x$a(a, b, c, d, e, f, g, h, i, j, l, m, n, o) : this.y$a(a, b, c, d, e, f, g, h, i, j), a.restore()
                },
                y$a: function(a, b, c, d, e, f, g, h, i, j) {
                    var k, l, m, n, o, q, r, s, t, v, w, x, A, B, C, D, E, G, H, I, J, K = 0,
                        L = g.textIndent,
                        M = g.wordWrap,
                        O = g.hAlign,
                        P = g.vAlign,
                        Q = g.textDecoration,
                        R = "left",
                        S = "alphabetic",
                        T = 2,
                        U = 2,
                        V = g.font,
                        W = 0,
                        X = h.lineHeight,
                        Y = [],
                        Z = 0,
                        $ = h.fontInfo.fontSize;
                    if (L > 0 && (K = 8 * L), h.sheet.outlineColumn && h.sheet.outlineColumn.XQa(h.col) && (K = 0), 3 === O && (O = u(O, b, g.formatter)), T += K, 1 === O ? (T = e / 2, R = z) : 2 === O && (T = e - 1 - 2, T -= K, R = y), a.textAlign !== R && (a.textAlign = R), M && (k = e - 3 - K, k -= 1, Y = p.Wn(i, k, V), Z = Y.length, Z > 1 && 0 !== P && (W = (Z - 1) * X)), l = $ > 8 ? F(($ - 8) / 5 + 2) : 1, m = X / 2 - $ / 2 + l - 1, U += X - m, 1 === P ? U = (f - W) / 2 + X / 2 - m : 2 === P && (U = f - W - 2 - m), a.textBaseline !== S && (a.textBaseline = S), n = h.cellOverflowLayout, o = n && n.layout, q = {
                            x: o ? o.x : c + 1,
                            y: o ? o.y : d + 1,
                            width: o ? o.width : e - 2,
                            height: o ? o.height : f - 2
                        }, r = o && o.width > e, s = q.x, t = q.y, v = q.width, w = q.height, M) if (a.rect(s, t, v, w), a.clip(), a.beginPath(), x = d + U, Z > 1) for (A = 0; A < Z; A++) a.fillText(Y[A], c + T, x), Q && (B = a.measureText(Y[A]).width, this.ip(a, Q, c + T, x, B, $, l)), x += X;
                    else this.Oja(a, i, j, c + T, d + U, O, v, K, Q, l, $, r);
                    else C = a.measureText(i).width, D = C > v - (c + 1 - s) || X > w, E = N(g, 0), G = N(g, 1), H = N(g, 2), I = N(g, 3), D || (1 === O ? n && (J = C / 2, (J > n.backgroundLeftWidth || J > n.backgroundRightWidth) && (D = !0)) : (C + K + E + H > v || W + I + G > w) && (D = !0)), D && (a.rect(s, t, v, w), a.clip(), a.beginPath()), this.Oja(a, i, j, c + T, d + U, O, v, K, Q, l, $, r)
                },
                x$a: function(a, b, c, d, e, f, g, h, i, j, k, l, m, n) {
                    var o, q, r, s, t, w, x, y, z, A, B, C, D, E, G = v(i),
                        H = g.wordWrap,
                        I = g.hAlign,
                        J = g.vAlign,
                        K = 2,
                        L = 2,
                        M = 0,
                        N = 0,
                        O = h.lineHeight,
                        P = [],
                        Q = 0;
                    if (H ? (q = 1 !== J ? f - 3 - k : f - 3, P = p.oV(a, i, m, H, q)) : P.push(i), Q = P.length, M = Q * O, 3 === I && (I = u(I, b, g.formatter)), G ? 0 === I ? (K += M, K -= O / 2) : 1 === I ? K = (e + M) / 2 - O / 2 : 2 === I && (K = e - 1 - 2, K -= O / 2) : (K += O / 2, 1 === I ? K = (e - M) / 2 + O / 2 : 2 === I && (K = e - 1 - 2, K = K - M + O / 2)), r = n > 8 ? F((n - 8) / 5 + 2) : 1, s = O / 2 - n / 2 + r - 1, t = l.x, w = l.y, x = l.width, y = l.height, a.rect(t, w, x, y), a.clip(), a.beginPath(), z = c + K, 1 === Q && j.content) for (A = j.content, N = X(a, A, g.isVerticalText, O), B = y - k - N - 2, B = B > 0 ? B : 0, Y(A) ? (L += k, L += O - s) : (N = P[0].length * O, L = this.z$a(f, L, J, N, O, s, k)), o = 0; o < A.length; o++)"fillingChar" === A[o].type ? (D = Z(a, B, A[o].value, !0, O), this.vWa(a, D, z, d + L, O), d += B) : "placeholder" === A[o].type ? d += A[o].value ? A[o].value.length * O : 0 : "numberPlaceholder" === A[o].type ? d += O : (this.vWa(a, A[o].value, z, d + L, O), C = A[o].value ? A[o].value.length * O : 0, d += C);
                    else if (H) for (o = 0; o < Q; o++) N = P[o].length * O, E = d + this.z$a(f, L, J, N, O, s, k), this.vWa(a, P[o], z, E, O), G ? z -= O : z += O;
                    else N = i.length * O, E = d + this.z$a(f, L, J, N, O, s, k), this.vWa(a, i, z, E, O)
                },
                z$a: function(a, b, c, d, e, f, g) {
                    return 1 === c ? b = (a - d) / 2 + e - f : 2 === c ? b = a - g - d - 2 + e - f : (b += g, b += e - f), b
                },
                vWa: function(a, b, c, d, e) {
                    if (b && b.length > 0) for (var f = 0; f < b.length; f++) a.fillText(b[f], c, d), d += e
                },
                w$a: function(a, b, c, d, e, f, g) {
                    var h, i = b.font,
                        j = b.foreColor,
                        k = d.conditionalForeColor;
                    k && (j = k), n(g) || (h = l.ec(j), h.a = g, j = l.bc(h)), j && a.fillStyle !== j && (a.fillStyle = j), i && a.font !== i && w(a, i), a.textAlign !== f && (a.textAlign = f), a.textBaseline !== e && (a.textBaseline = e)
                },
                VI: function(a, b, c, d, e) {
                    var f = e.cellOverflowLayout,
                        g = f && f.layout;
                    return {
                        x: g ? g.x : a + 1,
                        y: g ? g.y : b + 1,
                        width: g ? g.width : c - 2,
                        height: g ? g.height : d - 2
                    }
                },
                v$a: function(a, b) {
                    var c = 0,
                        d = a.textIndent;
                    return d > 0 && (c = 8 * d), b.sheet.outlineColumn && b.sheet.outlineColumn.XQa(b.col) && (c = 0), c
                },
                paint: function(a, b, c, d, e, f, g, h) {
                    var i, j, k, l, m, n;
                    a && (i = g.backColor, h.parentBackColor !== i && K(a, c, d, e, f, i, g.backgroundImage, g.backgroundImageLayout, h.imageLoader), j = new q(c, d, e, f), k = this, l = h.cellOverflowLayout, m = l && l.layout, n = new q(m ? m.x : c, m ? m.y : d, m ? m.width : e, m ? m.height : f), k.Gia && !h.cellOverflowLayout && (n = k.Gia(a, n, g, h, b)), n.width > 0 && n.height > 0 && k.paintContent(a, b, n.x, n.y, n.width, n.height, g, h, j))
                },
                paintContent: function(a, b, c, d, e, f, g, h, i) {
                    var j, k, l, m, n, o, p, s, t = h.sheetArea;
                    2 !== t && 1 !== t || (j = h.visualState || 0, k = "columnHeader", 2 === t && (k = "rowHeader"), l = this.getThemeStyle(h.visualState, "gc-" + k + "-" + r.Jm(j)), I.gp(a, c, d, e, f, g, k, l, t)), n = h.conditionalFormats, n && (m = i ? n.jp(a, b, i.x, i.y, i.width, i.height, g, h) : n.jp(a, b, c, d, e, f, g, h)), h.showBarIconOnly = m, o = h.sparkline, o && o.paintSparkline(a, c, d, e, f), p = L(a, b, c, d, e, f, h.sheet), h.cellOverflowLayout || m || p || (s = new q(c, d, e, f), M(g.hAlign, h.sheet, h.row, h.col, h.sheetArea, s), this.paintValue(a, b, s.x, s.y, s.width, s.height, g, h))
                },
                createEditorElement: function(a) {
                    return D
                },
                getEditorValue: function(a, b) {
                    return D
                },
                kp: function(a, b, c, d) {
                    return c
                },
                setEditorValue: function(a, b, c) {},
                getEditingElement: function() {
                    return D
                },
                parse: function(a, b, d) {
                    var e, f, g, h = n(b),
                        i = n(a);
                    try {
                        if (e = c(34), f = e && e.GeneralFormatter, !h && !i && f) return g = typeof b === B ? new f(b) : b, g.parse(a)
                    } catch (a) {}
                    return i ? "" : "" + a
                },
                format: function(a, b, d, e) {
                    var f, g, h, l;
                    if (n(a) || "" === a) return "";
                    if (typeof b === B && "object" != typeof a) return m.un(a, b, d);
                    if (!b) return "boolean" == typeof a || a instanceof Boolean ? ("" + a).toUpperCase() : a instanceof Date ? (f = i.q4(i.culture()).DateTimeFormat, k.Vb(a, f.shortDatePattern + " H:mm:ss")) : (typeof a === C && (a = j.nb("" + a)), "" + a);
                    try {
                        return g = c(34), h = g && g.GeneralFormatter, h ? (l = D, l = typeof b === B ? m.tn(b) : b, l.format(a, d)) : "" + a
                    } catch (b) {
                        return "" + a
                    }
                },
                focus: function(a, b) {
                    a && a.focus && a.focus()
                },
                getThemeStyle: function(a, b) {
                    return r.Km(a, b)
                },
                activateEditor: function(a, b, c, d) {},
                deactivateEditor: function(a, b) {},
                selectAll: function(a, b) {
                    a && a.select && a.select()
                },
                updateEditor: function(a, b, c, d) {},
                setImeMode: function(a, b, c) {
                    this.isImeAware(c) ? this.updateImeMode(a, b, c) : a && I.hp(a, 0)
                },
                updateImeMode: function(a, b, c) {
                    a && I.hp(a, b)
                },
                getHitInfo: function(a, b, c, d, e) {
                    return D
                },
                getCellAndPaddingHitInfo: function(a, b, c, d, e) {
                    var f, g;
                    return e && 3 === e.sheetArea ? (f = null, g = {
                        x: a,
                        y: b,
                        context: e,
                        cellStyle: c,
                        cellRect: d,
                        paddingHitInfo: f
                    }, _.ao(e.sheet, "getCellPaddingHitInfo", g), g.paddingHitInfo ? g.paddingHitInfo : this.getHitInfo(a, b, c, d, e)) : this.getHitInfo(a, b, c, d, e)
                },
                processCellAndPaddingMouseDown: function(a) {
                    return _.ao(a.sheet, "processMouseDownOnCellPadding", a), this.processMouseDown(a)
                },
                processMouseDown: function(a) {
                    return !1
                },
                processMouseMove: function(a) {
                    return !1
                },
                processMouseUp: function(a) {
                    return !1
                },
                processMouseEnter: function(a) {},
                processMouseLeave: function(a) {},
                isReservedKey: function(a, b) {
                    return !1
                },
                isEditingValueChanged: function(a, b, c) {
                    return a !== b
                },
                processKeyDown: function(a, b) {
                    return !1
                },
                processKeyUp: function(a, b) {
                    return !1
                },
                getAutoFitWidth: function(a, b, c, d, e) {
                    return I.cp(a, b, c, d, e)
                },
                getAutoFitHeight: function(a, b, c, d, e) {
                    return I.ep(a, b, c, d, e)
                },
                Oja: function(a, b, c, d, e, f, g, h, i, j, k, l) {
                    if (c && c.content && c.content.length > 0 && !l) this.Pja(a, c.content, d, e, f, g, h, i, j, k);
                    else if (a.fillText(b, d, e), i) {
                        var m = a.measureText(b).width;
                        this.ip(a, i, d, e, m, k, j)
                    }
                },
                Pja: function(a, b, c, d, e, f, g, h, i, j) {
                    var k, l;
                    a.save(), a.textAlign = "left", k = X(a, b), l = f - g - k - 2, l = l > 0 ? l : 0, Y(b) ? (1 === e ? (c -= f / 2, c += g) : 2 === e && (c = c - f + 2, c += g), this.Qja(a, b, c, d, l, h, i, j)) : (1 === e ? c -= k / 2 : 2 === e && (c -= k), this.Qja(a, b, c, d, l, h, i, j)), a.restore()
                },
                Qja: function(a, b, c, d, e, f, g, h) {
                    var i, j;
                    for (j = 0; j < b.length; j++)"fillingChar" === b[j].type ? (a.fillText(Z(a, e, b[j].value), c, d), f && this.ip(a, f, c, d, e, h, g), c += e) : "placeholder" === b[j].type ? c += a.measureText(b[j].value).width : "numberPlaceholder" === b[j].type ? c += a.measureText("0").width : (a.fillText(b[j].value, c, d), i = a.measureText(b[j].value).width, f && this.ip(a, f, c, d, i, h, g), c += i)
                },
                ip: function(a, b, c, d, e, f, g) {
                    var h, i, j, k, l;
                    a.strokeStyle = a.fillStyle, h = a.textAlign, i = 0, j = 0, k = .5, l = f <= 12 ? 12 : f, j = F((l - 12) / 21 + 1), a.lineWidth = j, 0 === (1 & j) && (k = 0), h === z ? c -= e / 2 : h === y && (c -= e), a.beginPath(), 4 === (4 & b) && (i = G(d + g - f - 1) - k, a.moveTo(c, i), a.lineTo(c + e, i)), 2 === (2 & b) && (i = G(d + g - f / 2) - k, a.moveTo(c, i), a.lineTo(c + e, i)), 1 === (1 & b) && (i = G(d + g - 1) - k, a.moveTo(c, i), a.lineTo(c + e, i)), 8 === (8 & b) && (i = G(d + g - 1) - k, a.moveTo(c, i - j), a.lineTo(c + e, i - j), a.moveTo(c, i + j), a.lineTo(c + e, i + j)), a.stroke()
                },
                lp: function(a, b) {
                    var c = "";
                    4 === (4 & b) && (c = "overline"), 2 === (2 & b) && (c += " line-through"), 1 === (1 & b) && (c += " underline"), a.css("text-decoration", c)
                },
                gQa: function() {
                    return D
                },
                isImeAware: function(a) {
                    return !1
                },
                isEditting: function() {
                    return !1
                },
                toJSON: function() {
                    var a, b = {},
                        c = this;
                    for (a in c) c.hasOwnProperty(a) && (b[a] = c[a]);
                    return b
                },
                fromJSON: function(a) {
                    if (a) for (var b in a) n(a[b]) || (this[b] = a[b])
                }
            }, h.Base = _, h._o = {
                0: _
            }, a.exports = g
        }()
}, function(a, b) {
    a.exports = GC.Spread.Sheets.Sparklines
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(42),
                d = c(43),
                e = c(26),
                f = c(53),
                g = c(52).To,
                h = e.u,
                i = d.Ul.Ml,
                j = e.j.Fa,
                k = e.k.Bb,
                l = f.LineBorder,
                m = f.Style,
                n = null;

            function o(a) {
                return a && a.options.allowCopyPasteExcelStyle
            }
            function p(a) {
                var b = this;
                b.PA = n, b.n5 = n, b.G4 = !1, b.tc = a, b.Nl()
            }
            p.prototype = {
                Nl: function() {
                    var a, b, c, d = this,
                        e = document.createElement("div");
                    e.style.position = "fixed", e.style.top = "0px", e.style.left = "0px", e.style.width = "0px", e.style.height = "0px", e.style.overflow = "hidden", a = document.createElement("div"), a.setAttribute("contenteditable", "true"), a.setAttribute("gcUIElement", "gcSheetClipboard"), a.setAttribute("tabindex", -1), a.style.position = "absolute", a.style.overflow = "hidden", a.style.background = "white", a.style.webkitUserSelect = "text", e.appendChild(a), d.KM = a, b = document.createElement("textarea"), b.setAttribute("gcUIElement", "gcSheetClipboard"), b.setAttribute("tabindex", -1), b.style.position = "absolute", b.style.overflow = "hidden", b.style.background = "white", b.style.webkitUserSelect = "text", e.appendChild(b), d.qka = b, c = d.tc.getHost(), c && c.appendChild(e), i.msie || i.edge || (d.H4 = function(a) {
                        var b, c, e, f = d.tc.getActiveSheet(),
                            g = a.clipboardData;
                        g && (b = g.getData("text/html"), c = d.I4(), c.innerHTML = b, e = b ? d.A$a(c, !0) : r(g.getData("text/plain")), c.innerHTML = "", f.J4(e, b))
                    }, a.addEventListener("paste", d.H4), d.rka = function(a) {
                        var b, c, e, f = d.tc.getActiveSheet(),
                            g = a.clipboardData;
                        g && (b = r(g.getData("text/plain")), b || (c = g.getData("text/html"), c && (e = d.I4(), e.innerHTML = c, b = d.A$a(e, !1), e.innerHTML = "")), f.J4(b, ""))
                    }, b.addEventListener("paste", d.rka))
                },
                no: function() {
                    var a, b, c, d, e, f, g = this,
                        h = g.KM;
                    h && (i.msie || i.edge || (h.removeEventListener("paste", g.H4), g.qka.removeEventListener("paste", g.rka)), a = h.parent, a && (b = a.parent, b && b.removeChild(a)), g.KM = n, g.qka = n), c = g.K4, c && (d = c.parent, d && d.removeChild(c), g.K4 = n), e = g.B$a, e && (f = e.parent, f && f.removeChild(e), g.B$a = n)
                },
                ska: function(a) {
                    o(this.tc) ? this.KM.innerHTML = a : this.qka.value = a
                },
                M4: function() {
                    o(this.tc) ? this.KM.focus() : this.qka.focus()
                },
                N4: function() {
                    o(this.tc) ? document.execCommand("selectAll") : this.qka.select()
                },
                wx: function() {
                    var a, b, c = "",
                        d = "";
                    return o(this.tc) ? (a = this.KM, a && (b = a.getElementsByTagName("table"), b.length > 0 && (c = b[0].outerHTML)), d = this.A$a(this.KM, !0)) : d = r(this.qka.value), {
                        html: c,
                        text: d
                    }
                },
                Q4: function(a, b, c, e, f, g, h, i) {
                    var j, k, l, m, n, o = this,
                        p = a.Tq(d.kf(b, e, c, f)),
                        q = RegExp(String.fromCharCode(32), "g"),
                        r = "&nbsp;",
                        s = !1,
                        t = !1,
                        u = a.parent.options.copyPasteHeaderOptions;
                    return b < 0 && 2 === (2 & u) && (s = !0), e < 0 && 1 === (1 & u) && (t = !0), b = p.row, e = p.col, c = p.rowCount, f = p.colCount, j = null, k = null, l = o.Ema(a, b, c, e, f, 3, h, i, g, p, q, r), t && (m = a.getColumnCount(2), j = o.Ema(a, b, c, 0, m, 2, h, i, g, p, q, r)), s && (n = a.getRowCount(1), k = o.Ema(a, 0, n, e, f, 1, h, i, g, p, q, r)), o.yb(l, j, k)
                },
                yb: function(a, b, c) {
                    var d, e, f = this,
                        g = a,
                        h = 0,
                        i = function(a, b) {
                            var c, d = [],
                                e = a.length;
                            for (c = 0; c < e; c++) d.push(a[c].concat(b[c]));
                            return d
                        };
                    return b && (h = b[0].length, g = i(b, a)), c && (d = c.length, e = null, h && (e = f.Ema(null, 0, d, 0, h, null, [], [], !1, null, null, null), c = i(e, c)), g = c.concat(g)), f.Fma(g)
                },
                Fma: function(a) {
                    var b, c, d = "",
                        e = a.length;
                    for (d += "<table>", b = 0; b < e; b++) {
                        for (d += "<tr>", c = 0; c < a[b].length; c++) d += a[b][c];
                        d += "</tr>"
                    }
                    return d += "</table>"
                },
                Ema: function(a, b, c, d, e, f, g, l, m, o, p, r) {
                    var v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R = [];
                    for (v = 0; v < c; v++) if (w = b + v, !k(g, w)) {
                        for (x = [], y = 0; y < e; y++) z = d + y, k(l, z) || (A = "", m && a && (B = a.getSpan(w, z, f), B && q(B, o, g, l) && (B = n), B && (B.row !== w || B.col !== z)) || (A += "<td", m && a && (B && (B.rowCount > 1 && (A += " rowSpan=" + B.rowCount), B.colCount > 1 && (A += " colSpan=" + B.colCount)), C = a.getActualStyle(w, z, f), A += ' style="', D = C.backColor, D && (A += "background-color: " + D + ";"), E = C.foreColor, E && (A += "color: " + E + ";"), F = C.font, F && (A += "font: " + F.replace(/"/g, "'") + ";"), G = C.vAlign, j(G) || (A += "vertical-align: " + t(G) + ";"), H = C.hAlign, j(H) || (I = s(H), I && (A += "text-align: " + I + ";")), J = C.borderLeft, J && (A += "border-left: " + u(J) + ";"), K = C.borderRight, K && (A += "border-right: " + u(K) + ";"), L = C.borderTop, L && (A += "border-top: " + u(L) + ";"), M = C.borderBottom, M && (A += "border-bottom: " + u(M) + ";"), A += '"'), A += ">", m && a && (N = C.textDecoration, O = 2 === (2 & N), P = 1 === (1 & N), O && (A += "<s>"), P && (A += "<u>")), Q = a ? a.getText(w, z, f) : "", Q ? Q = h.Ob(Q).replace(p, r) : i.chrome ? Q = " " : i.safari && (Q = "&nbsp;"), A += Q, m && (P && (A += "</u>"), O && (A += "</s>")), A += "</td>", x.push(A)));
                        R.push(x)
                    }
                    return R
                },
                I4: function() {
                    var a, b, c = this;
                    return c.K4 || (a = document.createElement("div"), a.style.display = "none", b = c.tc.getHost(), b && b.appendChild(a), c.K4 = a), c.K4
                },
                C$a: function() {
                    var a, b, c = this;
                    return c.B$a || (a = document.createElement("div"), a.style.display = "none", b = c.tc.getHost(), b && b.appendChild(a), c.B$a = a), c.B$a
                },
                R4: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, p = this.I4();
                    if (p.innerHTML = a, e = p.getElementsByTagName("table"), e.length > 0) for (f = this.D$a(e[0], !0), g = 0; g < f.length; g++) for (h = f[g], i = c + g, j = 0; j < h.length; j++) k = h[j], k && (l = d + j, b.Pq(i, l, k.style), m = k.rowSpan, n = k.colSpan, (m > 1 || n > 1) && (o = b.getSpan(i, l), o ? (o.row = i, o.col = l, o.rowCount = m, o.colCount = n) : b.addSpan(i, l, m, n)));
                    p.innerHTML = ""
                },
                D$a: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m, n = this.C$a(),
                        o = [],
                        p = /\s+/g;
                    for (c = 0; c < a.rows.length; c++) for (d = a.rows[c], o[c] || (o[c] = []), e = o[c], f = 0, g = 0; f < d.cells.length; f++) {
                        for (h = d.cells[f]; e[g];) g++;
                        for (i = e[g] = {}, b && (j = B(h), i.style = j), n.innerHTML = h.innerHTML.replace(p, " "), i.text = n.innerText, i.rowSpan = h.rowSpan, i.colSpan = h.colSpan, k = 0; k < h.rowSpan; k++) for (l = 0; l < h.colSpan; l++) 0 === k && 0 === l || (o[c + k] || (o[c + k] = []), m = o[c + k], m[g + l] = {
                            style: j,
                            text: "",
                            rowSpan: 1,
                            colSpan: 1
                        });
                        g += h.colSpan
                    }
                    return n.innerHTML = "", o
                },
                A$a: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m = [];
                    if (a) if (c = a.getElementsByTagName("table"), c.length > 0) for (d = this.D$a(c[0], !1), e = RegExp(String.fromCharCode(160), "g"), f = String.fromCharCode(32), g = 0, h = d.length; g < h; g++) {
                        for (i = d[g], j = 0, k = i.length; j < k; j++) l = i[j] ? i[j].text : "", l.indexOf("\n") >= 0 && (b ? (l.indexOf("\r\n") >= 0 && (l = l.split("\r\n").join("")), l = l.split("\n").join("")) : l = '"' + l + '"'), m.push(l.replace(e, f)), j < k - 1 && m.push("\t");
                        g < h - 1 && m.push("\r\n")
                    } else m.push(a.innerText.trim());
                    return m.join("")
                }
            };

            function q(a, b, c, d) {
                if (!b.containsRange(a)) return !0;
                for (var e = 0; e < c.length; e++) if (a.row <= c[e] && c[e] < a.row + a.rowCount) return !0;
                for (e = 0; e < d.length; e++) if (a.col <= d[e] && d[e] < a.col + a.colCount) return !0;
                return !1
            }
            function r(a) {
                var b, c, d, e, f, g = [];
                if (a) {
                    for (b = '"', c = !1, d = 0; d < a.length; d++) e = d > 0 ? a[d - 1] : "", f = a[d], f === b ? (c = !c, g.push(b)) : c || "\n" !== f || "\r" === e ? g.push(f) : g.push("\r\n");
                    return g.join("")
                }
                return ""
            }
            function s(a) {
                var b = {
                    0: "left",
                    1: "center",
                    2: "right"
                };
                return b[a]
            }
            function t(a) {
                var b = {
                    0: "top",
                    1: "middle",
                    2: "bottom"
                };
                return b[a]
            }
            function u(a) {
                var b = {
                        0: "none",
                        1: "solid",
                        2: "solid",
                        3: "dashed",
                        4: "dotted",
                        5: "solid",
                        6: "double",
                        7: "dotted",
                        8: "dashed",
                        9: "dashed",
                        10: "dashed",
                        11: "dashed",
                        12: "dashed",
                        13: "dashed"
                    },
                    c = {
                        9: .5,
                        1: .5,
                        3: .5,
                        4: .5,
                        7: .5,
                        11: .5,
                        2: 1,
                        10: 1,
                        12: 1,
                        8: 1,
                        13: 1,
                        5: 1.5,
                        6: 1.5
                    };
                return c[a.style] + "pt " + b[a.style] + " " + a.color
            }
            function v(a) {
                var b = {
                    left: 0,
                    center: 1,
                    right: 2
                };
                return b[a]
            }
            function w(a) {
                var b = {
                    top: 0,
                    middle: 1,
                    bottom: 2
                };
                return b[a]
            }
            function x(a, b, c) {
                var d = {
                    none: 0,
                    solid: 1,
                    dashed: 3,
                    dotted: 4,
                    double: 6
                };
                return (i.msie || i.edge) && "2px" === c ? d.solid = 5 : (c = Math.round(10 * parseFloat(c) * 3 / 4) / 10, 1.5 === c ? d.solid = 5 : 1 === c && (d.solid = 2, d.dashed = 8)), new l(a, d[b])
            }
            function y(a) {
                var b = {
                    underline: 1,
                    "line-through": 2,
                    none: 0
                };
                return b[a]
            }
            function z(a) {
                return 0 === e.pc.ec(a).a
            }
            function A(a) {
                var b = e.pc.ec(a);
                return 0 !== b.a && 0 === b.r && 0 === b.g && 0 === b.b
            }
            function B(a) {
                var b, c, d, e, f, h, j, k, l, n, o = a.getElementsByTagName("font")[0],
                    p = getComputedStyle(a),
                    q = a.style,
                    r = new m,
                    s = p.backgroundColor;
                return s && !z(s) && (r.backColor = s), b = p.color, o && (b = o.color), b && !A(b) && (r.foreColor = b), o ? r.font = g.F4(getComputedStyle(o)) : (c = g.F4(p), c && (r.font = c)), d = p.verticalAlign, d && (r.vAlign = w(d)), e = q.textAlign, f = p.textAlign, i.msie || i.edge ? "" !== e ? r.hAlign = v(e) : r.hAlign = v("general") : f && (r.hAlign = v(f)), h = p.borderLeftStyle, "none" !== h && (r.borderLeft = x(p.borderLeftColor, h, p.borderLeftWidth)), j = p.borderRightStyle, "none" !== j && (r.borderRight = x(p.borderRightColor, j, p.borderRightWidth)), k = p.borderTopStyle, "none" !== k && (r.borderTop = x(p.borderTopColor, k, p.borderTopWidth)), l = p.borderBottomStyle, "none" !== l && (r.borderBottom = x(p.borderBottomColor, l, p.borderBottomWidth)), n = y(i.chrome ? p.textDecorationLine : p.textDecoration), a.getElementsByTagName("u").length > 0 && (n |= y("underline")), a.getElementsByTagName("s").length > 0 && (n |= y("line-through")), 0 !== n && (r.textDecoration = n), r
            }
            b.S4 = p, a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l = null,
                m = void 0,
                n = "string",
                o = Math.min,
                p = Math.floor,
                q = Math.max,
                r = c(42),
                s = c(53).Style,
                t = c(26),
                u = c(43),
                v = c(52).To,
                w = c(44).GC$,
                x = w.each,
                y = w.isEmptyObject,
                z = w.inherit,
                A = w.extend,
                B = "dirtyNodes",
                C = t.A,
                D = t.B,
                E = t.j.Fa,
                F = u.kf,
                G = function() {
                    return t.C(r.SR)()
                };

            function H(a, b) {
                return a.hasOwnProperty(b)
            }
            function I(a) {
                return a.rowCount
            }
            function J(a) {
                return a.colCount
            }
            function K(a, b, c, d) {
                var e = c;
                Object.defineProperty(a, b, {
                    get: function() {
                        return e
                    },
                    set: function(a) {
                        var c = e;
                        e = a, d(this, a, b, c)
                    }
                })
            }
            r.StorageType = {
                data: 1,
                style: 2,
                comment: 4,
                tag: 8,
                sparkline: 16,
                axis: 32,
                bindingPath: 64
            }, b = function() {
                function a() {
                    K(this, "spans", [], b), this.Ff = -1, this.Ef = -1, this.cache = {}
                }
                function b(a, b) {
                    a.cache = {}, b && b.forEach(function(b) {
                        c(a, b)
                    })
                }
                function c(a, b) {
                    var c, d;
                    for (a.Ef = q(a.Ef, b.row + I(b) - 1), a.Ff = q(a.Ff, b.col + J(b) - 1), c = 0; c < b.rowCount; c++) for (d = 0; d < b.colCount; d++) a.cache[b.row + c + "_" + (b.col + d)] = b
                }
                function d(a, b) {
                    var c, d;
                    for (c = 0; c < b.rowCount; c++) for (d = 0; d < b.colCount; d++) a.cache[b.row + c + "_" + (b.col + d)] = m
                }
                var e = {
                    find: function(a, b) {
                        return this.cache[a + "_" + b] || l
                    },
                    get: function(a, b) {
                        return this.find(a, b) || F(a, b, 1, 1)
                    },
                    remove: function(a, b) {
                        var c = this.spans.indexOf(a);
                        c >= 0 ? (b && (b[0].push("spans"), b[1] = this.spans.slice(0)), this.removeSpan(c, 1)) : b && (b.length = 0)
                    },
                    removeSpan: function(a, b) {
                        for (var c = 0; c < b; c++) d(this, this.spans[a + c]);
                        this.spans.splice(a, b)
                    },
                    update: function(a, b) {
                        var e = this;
                        d(e, e.spans[a]), e.spans[a] = b, c(e, b)
                    },
                    add: function(a, b) {
                        b && (b[0].push("spans"), b[1] = this.spans.slice(0)), c(this, a), this.spans.push(a)
                    },
                    Zz: function(a, b, c, d, e, f, g) {
                        var h, i, j, k, l = this,
                            m = !1,
                            n = l.spans.slice(0),
                            o = l.spans.length,
                            p = [];
                        for (k = 0; k < o; k++) h = l.spans[k], j = h.col, i = h.row, (a === -1 || a <= i && i < a + e) && (b === -1 || b <= j && j < b + f) ? (p.push(F(a === -1 ? i : c + i - a, b === -1 ? j : d + j - b, I(h), J(h))), m = !0) : (a === -1 || c <= i && i < c + e) && (b === -1 || d <= j && j < d + f) && (l.removeSpan(k, 1), k--, o--, m = !0);
                        for (k = 0; k < p.length; k++) {
                            if (h = p[k], !l.LTa(l.spans, 0, l.spans.length, h)) throw Error(G().Exp_OverlappingSpans);
                            l.add(h)
                        }
                        g && (m ? (g[0].push("spans"), g[1] = n) : g.length = 0)
                    },
                    LTa: function(a, b, c, d) {
                        for (var e = b; e < c && e < a.length; e++) if (a[e].intersect(d.row, d.col, I(d), J(d))) return !1;
                        return !0
                    },
                    getSpans: function(a) {
                        var b, c, d, e = this.spans;
                        if (!a) return e.slice(0);
                        for (b = [], c = 0; c < e.length; c++) d = e[c], d.intersect(a.row, a.col, I(a), J(a)) && b.push(d);
                        return b
                    },
                    qu: function(a, b, c, d) {
                        var e, f, g = this.spans;
                        for (e = 0; e < g.length; e++) if (f = g[e], f.intersect(a, b, c, d) && (a !== -1 && (f.row < a || f.row + I(f) > a + c) || b !== -1 && (f.col < b || f.col + J(f) > b + d))) return !0;
                        return !1
                    },
                    MTa: function(a, b, c, d) {
                        var e, f, g = !1,
                            h = this.spans;
                        for (e = 0, f = h.length; e < f; e++) {
                            if (a >= 0 || b >= 0) for (; e < f && !h[e].intersect(a, b, c, d);) e++;
                            if (e < f) {
                                g = !0;
                                break
                            }
                        }
                        return g
                    },
                    $b: function(a, b, c, d, e) {
                        var f, g, h, i, j = this.spans,
                            k = !1,
                            l = j.slice(0);
                        for (f = 0; f < j.length; f++) g = j[f], h = g.row, i = g.col, (a === -1 || a <= h && h < a + c) && (b === -1 || b <= i && i < b + d) && (this.removeSpan(f--, 1), k = !0);
                        e && (k ? (e[0].push("spans"), e[1] = l) : e.length = 0)
                    },
                    aB: function(a, b, c, d, e, f, g) {
                        var h, i, j, k, l, m = this,
                            n = !1,
                            o = m.spans.slice(0),
                            p = [],
                            q = [],
                            r = m.spans.length;
                        for (k = 0; k < r; k++) h = m.spans[k], i = h.row, j = h.col, (a === -1 || a <= i && i < a + e) && (b === -1 || b <= j && j < b + f) ? (l = F(a === -1 ? i : c + i - a, b === -1 ? j : d + j - b, I(h), J(h)), q.push(l), n = !0) : (a === -1 || c <= i && i < c + e) && (b === -1 || d <= j && j < d + f) ? n = !0 : p.push(h);
                        if (n) {
                            if (q.length > 0) for (k = 0; k < q.length; k++) {
                                if (l = q[k], !m.LTa(p, 0, p.length, l)) throw Error(G().Exp_OverlappingSpans);
                                p.push(l)
                            }
                            for (m.spans.length = 0, m.cache = {}, k = 0; k < p.length; k++) m.add(p[k]);
                            g && (g[0].push("spans"), g[1] = o)
                        } else g && (g.length = 0)
                    },
                    NTa: function(a, b, c) {
                        var d, e, f, g, h, i, j = this,
                            k = j.spans,
                            l = !1,
                            m = k.slice(0),
                            n = k.length;
                        for (d = 0; d < n; d++) e = k[d], f = e.row, g = e.col, h = I(e), i = J(e), f >= a ? (j.update(d, F(f + b, g, h, i)), l = !0) : a < f + h && (j.update(d, F(f, g, h + b, i)), l = !0);
                        c && (l ? (c[0].push("spans"), c[1] = m) : c.length = 0)
                    },
                    OTa: function(a, b, c) {
                        var d, e, f, g, h, i, j = this,
                            k = j.spans,
                            l = !1,
                            m = k.slice(0),
                            n = k.length;
                        for (d = 0; d < n; d++) e = k[d], f = e.row, g = e.col, h = I(e), i = J(e), g >= a ? (j.update(d, F(f, g + b, h, i)), l = !0) : a < g + i && (j.update(d, F(f, g, h, i + b)), l = !0);
                        c && (l ? (c[0].push("spans"), c[1] = m) : c.length = 0)
                    },
                    PTa: function(a, b, c) {
                        var d, e, f, g, h, i, j, k, l = this,
                            m = l.spans,
                            n = !1,
                            p = m.slice(0),
                            q = [],
                            r = m.length;
                        for (d = 0; d < r; d++) e = m[d], f = e.row, g = e.col, h = I(e), i = J(e), f >= a ? f < a + b ? (q.push(d), n = !0) : (l.update(d, F(f - b, g, h, i)), n = !0) : a < f + h && (j = F(f, g, h - o(f + h - a, b), i), l.update(d, j), 1 === j.rowCount && 1 === j.colCount && q.push(d), n = !0);
                        for (d = q.length - 1; d >= 0; d--) k = q[d], l.removeSpan(k, 1);
                        c && (n ? (c[0].push("spans"), c[1] = p) : c.length = 0)
                    },
                    QTa: function(a, b, c) {
                        var d, e, f, g, h, i, j, k, l = this,
                            m = l.spans,
                            n = !1,
                            p = m.slice(0),
                            q = [],
                            r = m.length;
                        for (d = 0; d < r; d++) e = m[d], f = e.row, g = e.col, h = I(e), i = J(e), g >= a ? g < a + b ? (q.push(d), n = !0) : (l.update(d, F(f, g - b, h, i)), n = !0) : a < g + i && (j = F(f, g, h, i - o(g + i - a, b)), l.update(d, j), 1 === j.rowCount && 1 === j.colCount && q.push(d), n = !0);
                        for (d = q.length - 1; d >= 0; d--) k = q[d], l.removeSpan(k, 1);
                        c && (n ? (c[0].push("spans"), c[1] = p) : c.length = 0)
                    },
                    toJSON: function() {
                        var a = this.spans.slice(0);
                        return 0 === a.length ? m : a
                    },
                    fromJSON: function(a) {
                        var b, c, d;
                        if (a) for (this.spans = [], b = a, c = 0; c < b.length; c++) d = b[c], this.add(F(d.row, d.col, I(d), J(d)))
                    }
                };
                return A(a.prototype, e), a
            }(), d = function(a) {
                z(b, a);

                function b() {
                    a.call(this), this.headingOverflowlayout = l, this.trailingOverflowLayout = l
                }
                return b.prototype.find = function(a) {
                    var b, c, d = this,
                        e = d.length;
                    for (c = 0; c < e; c++) if (b = d[c], b.contains(a)) return b;
                    return l
                }, b
            }(Array), r.np = d;

            function L(a, b, c, d, e, f, g, h) {
                var i = this;
                i.column = a, i.startColumn = b, i.endColumn = c, i.valueWidth = d, i.columnWidth = e, i.backgroundWidth = f, i.backgroundLeftWidth = g, i.backgroundRightWidth = h
            }
            L.prototype.contains = function(a) {
                return a >= this.startColumn && a <= this.endColumn
            }, r.op = L, e = function() {
                function a() {
                    this.selections = [], this.selectionPolicy = 2, this.selectionUnit = 0
                }
                function b(a, b, c) {
                    var d, e, f, g, h = F(-1, -1, -1, -1);
                    return a && (d = a.col, e = a.row, f = e === -1, g = d === -1, h.row = f ? 0 : e, h.rowCount = f ? b : I(a), h.col = g ? 0 : d, h.colCount = g ? c : J(a)), h
                }
                var c = {
                    getProperty: function(a) {
                        return this[a]
                    },
                    setProperty: function(a, b, c) {
                        c && (c[0].push(a), c[1] = this[a]), this[a] = b
                    },
                    clear: function(a) {
                        a && (a.push(["selections", this.get()]), a.push(["activeSelectedRangeIndex", this.activeSelectedRangeIndex])), this.selections = [], this.activeSelectedRangeIndex = -1
                    },
                    add: function(a, b, c, d, e) {
                        e && (e.push(["selections", this.get()]), e.push(["activeSelectedRangeIndex", this.activeSelectedRangeIndex]));
                        var f = this,
                            g = f.selectionPolicy,
                            h = f.selectionUnit;
                        0 === g ? (c = o(c, 1), d = o(d, 1), f.clear()) : 1 === g && f.clear(), 1 === h ? (b = -1, d = -1) : 2 === h && (a = -1, c = -1), f.selections.push(F(a, b, c, d)), f.activeSelectedRangeIndex = f.selections.length - 1
                    },
                    get: function() {
                        return this.selections.slice(0)
                    },
                    set: function(a, b) {
                        b && (b.push(["selections", this.get()]), b.push(["activeSelectedRangeIndex", this.activeSelectedRangeIndex])), this.selections = a, this.activeSelectedRangeIndex >= a.length && (this.activeSelectedRangeIndex = 0)
                    },
                    toJSON: function() {
                        var a, b = this,
                            c = {},
                            d = b.selectionPolicy,
                            e = b.selectionUnit,
                            f = b.activeSelectedRangeIndex,
                            g = b.selections.length;
                        for (2 !== d && (c.selectionPolicy = d), 0 !== e && (c.selectionUnit = e), 0 !== f && (c.activeSelectedRangeIndex = f), c.length = g, a = 0; a < g; a++) c[a] = b.selections[a];
                        return y(c) ? m : c
                    },
                    fromJSON: function(a) {
                        var b, c, d, e, f, g;
                        if (a) {
                            for (b = this, b.clear(), c = a.selectionPolicy, d = a.selectionUnit, e = a.length, E(e) && (e = 1), f = 0; f < e; f++) g = a[f], b.selections.push(F(g ? g.row : 0, g ? g.col : 0, g ? I(g) : 1, g ? J(g) : 1));
                            b.activeSelectedRangeIndex = a.activeSelectedRangeIndex || 0, E(c) || (b.selectionPolicy = c), E(d) || (b.selectionUnit = d)
                        }
                    },
                    sp: function(a) {
                        var b, c, d, e = this.selections;
                        for (b = 0; b < e.length; b++) if (c = e[b], d = c.col === -1 ? 0 : c.col, c.row === -1 && a >= d && a < d + J(c)) return !0;
                        return !1
                    },
                    tp: function(a) {
                        var b, c, d, e = this.selections;
                        for (b = 0; b < e.length; b++) if (c = e[b], d = c.row === -1 ? 0 : c.row, c.col === -1 && a >= d && a < d + I(c)) return !0;
                        return !1
                    },
                    vp: function(a, c, d, e, f, g) {
                        var h, i, j, k, l, m, n, o, p = !1,
                            q = this.selections,
                            r = g ? 1 : 0;
                        for (h = 0, i = q.length; h < i && (j = q[h], k = b(j, e, f), l = k.row, m = k.col, n = l - r <= a && a < l + I(k) + r, o = m - r <= c && c < m + J(k) + r, 3 === d || E(d) ? p = n && o : 2 === d ? p = n : 1 === d ? p = o : 0 === d && (p = j.row === -1 && j.col === -1), !p); h++);
                        return p
                    },
                    wp: function(a, b, c, d, e) {
                        var f, g, h, i, j, k, l, m, n, o, p = this.selections,
                            q = !1;
                        for (f = 0; f < p.length && (g = p[f], h = g.row, i = g.col, j = I(g), k = J(g), l = i === -1, m = h === -1, E(c) || 3 === c || (2 === c ? (n = m ? 0 : h, q = l && a >= n && a < n + j) : 1 === c ? (o = l ? 0 : i, q = m && b >= o && b < o + k) : 0 === c && (q = m && l && j === d && k === e), !q)); f++);
                        return q
                    }
                };
                return A(a.prototype, c), a
            }(), f = function(a) {
                z(b, a);

                function b() {
                    a.call(this)
                }
                function c(a, b, c, d, e) {
                    var f, g, h = a.length,
                        i = !1;
                    for (g = 0; g < h; g++) if (f = a[g], i = E(b) || E(c) ? E(b) ? E(c) ? E(d) ? f.containsY(e) : f.containsX(d) : f.col === c : f.row === b : f.contains(b, c)) return f;
                    return l
                }
                function d(a, b, c) {
                    var d = l,
                        e = a.length,
                        f = !E(b);
                    return e > 0 && (d = f ? a.findX(b) : a.findY(c), d || (d = f && b < a[0].x || !f && c < a[0].y ? a[0] : a[e - 1])), d
                }
                var e = {
                    findCell: function(a, b) {
                        var c, d, e = this.length;
                        for (d = 0; d < e; d++) if (c = this[d], c.contains(a, b)) return c;
                        return l
                    },
                    findRow: function(a) {
                        var b, c, d = this.length;
                        for (c = 0; c < d; c++) if (b = this[c], b.row === a) return b;
                        return l
                    },
                    findCol: function(a) {
                        var b, c, d = this.length;
                        for (c = 0; c < d; c++) if (b = this[c], b.col === a) return b;
                        return l
                    },
                    findX: function(a) {
                        return c(this, m, m, a)
                    },
                    findY: function(a) {
                        return c(this, m, m, m, a)
                    },
                    findNearX: function(a) {
                        return d(this, a)
                    },
                    findNearY: function(a) {
                        return d(this, m, a)
                    }
                };
                return A(b.prototype, e), b
            }(Array), r.yp = f;

            function M(a, b, c, d, e, f, g, h) {
                var i = this;
                i.rowCount = g, i.colCount = h, i.row = a, i.col = b, i.x = c, i.y = d, i.width = e, i.height = f
            }
            M.prototype = {
                contains: function(a, b) {
                    var c = this;
                    return a < c.row + I(c) && c.row <= a && b < c.col + J(c) && c.col <= b
                },
                intersect: function(a) {
                    var b = this;
                    return (b.x < 0 || a.x < b.x + b.width && b.x < a.x + a.width) && (b.y < 0 || a.y < b.y + b.height && b.y < a.y + a.height)
                },
                containsX: function(a) {
                    return this.x <= a && a < this.x + this.width
                },
                containsY: function(a) {
                    return this.y <= a && a < this.y + this.height
                }
            }, r.zp = M;

            function N(a, b) {
                var c = this;
                c.Xj = a, c.OZ = b, c.dataTable = {}, c.rowDataArray = [], c.columnDataArray = [], c.defaultDataNode = l, c.Ap = {}, c.gga = 0, c.Ff = -1, c.Ef = -1
            }
            function O(a, b, c, d, e, f, g, h) {
                if (c >= 0 && d >= 0) {
                    f[c] || (f[c] = {});
                    var i = f[c];
                    i[d] = e
                } else c >= 0 && d === -1 && a >= 0 && b === -1 ? g[c] = e : d >= 0 && c === -1 && b >= 0 && a === -1 && (h[d] = e)
            }
            N.prototype = {
                constructor: N,
                getRowCount: function() {
                    return this.Xj
                },
                getColumnCount: function() {
                    return this.OZ
                },
                setRowCount: function(a) {
                    this.Xj = a
                },
                setColumnCount: function(a) {
                    this.OZ = a
                },
                Cp: function(a, b, c, d) {
                    var e, f, g, h, i = this,
                        j = i.Ap;
                    i.gga > 0 || a >= 0 && b >= 0 && (d && (d.type = "updateDirty", d.row = a, d.col = b, j[a] ? j[a][b] || (d.isEmptyCol = !0) : d.isEmptyRow = !0), j[a] || (j[a] = {}), e = j[a], e[b] || (e[b] = {}), f = e[b], "n" !== e.rs && (e.rs = "e"), g = c.Dp, h = c.Ep, E(g) || (d && (d.originalItem = e.originalItem), e.originalItem = g), E(h) || (d && (d.oldValue = f.oldValue), f.oldValue = h))
                },
                gWa: function(a) {
                    var b = this.Ap,
                        c = a.row,
                        d = a.col;
                    a.isEmptyRow ? delete b[c] : a.isEmptyCol ? delete b[c][d] : (a.hasOwnProperty("originalItem") && (E(a.originalItem) && !E(b[c].originalItem) ? delete b[c].originalItem : b[c].originalItem = a.originalItem), a.hasOwnProperty("oldValue") && (E(a.oldValue) && !E(b[c][d].oldValue) ? delete b[c][d].oldValue : b[c][d].oldValue = a.oldValue))
                },
                getValue: function(a, b) {
                    var c = this.RTa(a, b);
                    return c && !E(c.value) ? c.value : l
                },
                setValue: function(a, b, c, d, e) {
                    var f, g = this.RTa(a, b, !0, d ? d[0] : m);
                    g && g.value !== c ? (f = g.value, g.value = c, this.Cp(a, b, {
                        Ep: f
                    }, e), d && (d[0].push("value"), d[1] = f)) : d && (d.length = 0)
                },
                getStyle: function(a, b) {
                    var c = this.RTa(a, b),
                        d = c && c.style;
                    return d && d.clone && (d = d.clone(!0)), d
                },
                setStyle: function(a, b, c, d) {
                    var e, f = this.RTa(a, b, !0, d ? d[0] : m);
                    f && f.style !== c ? (e = f.style, f.style = c, d && (d[0].push("style"), d[1] = e)) : d && (d.length = 0)
                },
                getValueForKey: function(a, b, c) {
                    var d = this.RTa(a, b);
                    return d && d[c]
                },
                setValueForKey: function(a, b, c, d, e) {
                    var f, g = this.RTa(a, b, !0, e ? e[0] : m);
                    g && g[c] !== d ? (f = g[c], g[c] = d, e && (e[0].push(c), e[1] = f)) : e && (e.length = 0)
                },
                NTa: function(a, b, c) {
                    var d, e = this,
                        f = e.Xj,
                        g = e.dataTable,
                        h = e.Ap;
                    if (0 <= a && a <= f && b >= 0 && (C(g, f, a, b), C(e.rowDataArray, f, a, b), C(h, f, a, b), e.Xj += b, !c)) for (d = 0; d < b; d++) g[a + d] = {
                        rs: "n"
                    }, h[a + d] = g[a + d]
                },
                STa: function(a, b, c) {
                    var d, e, f = this,
                        g = f.Xj;
                    if (0 <= a && a < g && b > 0) {
                        if (a + b > g && (b = g - a), c) for (d = 0; d < b; d++) e = a + d, c.push([
                            ["dataTable", e], f.dataTable[e]
                        ]), c.push([
                            ["rowDataArray", e], f.rowDataArray[e]
                        ]), c.push([
                            [B, e], f.Ap[e]
                        ]);
                        D(f.dataTable, g, a, b), D(f.rowDataArray, g, a, b), D(f.Ap, g, a, b), f.Xj -= b
                    }
                },
                OTa: function(a, b) {
                    var c, d, e = this,
                        f = e.OZ;
                    if (0 <= a && a <= f && b >= 0) {
                        for (c = 0; c < e.Xj; c++) d = e.dataTable[c], d && a < f && C(d, f, a, b);
                        C(e.columnDataArray, f, a, b), e.OZ += b
                    }
                },
                TTa: function(a, b, c) {
                    var d, e, f, g, h, i, j = this,
                        k = j.OZ;
                    if (0 <= a && a < k && b > 0) {
                        for (d = 0; d < j.Xj; d++) if (e = j.dataTable[d]) {
                            if (c) for (f = 0; f < b; f++) g = a + f, c.push([
                                ["dataTable", d, g], e[g]
                            ]);
                            D(e, k, a, b)
                        }
                        if (c) for (h = 0; h < b; h++) i = a + h, c.push([
                            ["columnDataArray", i], j.columnDataArray[i]
                        ]);
                        D(j.columnDataArray, k, a, b), a + b > k && (b = k - a), j.OZ -= b
                    }
                },
                RTa: function(a, b, c, d) {
                    var e, f = this,
                        g = f.dataTable,
                        h = f.columnDataArray,
                        i = f.rowDataArray,
                        j = l;
                    return a < f.Xj && b < f.OZ && (a >= 0 && b >= 0 ? (e = g[a], c && !e && (e = g[a] = {}, a > f.Ef && (f.Ef = a)), e && (j = e[b], c && !j && (j = e[b] = {}, f.Ff < b && (f.Ff = b))), d && d.push("dataTable", a, b)) : a === -1 && b >= 0 ? (j = h[b], c && !j && (j = h[b] = {}, f.Ff < b && (f.Ff = b)), d && d.push("columnDataArray", b)) : a >= 0 && b === -1 ? (j = i[a], c && !j && (j = i[a] = {}, f.Ef < a && (f.Ef = a)), d && d.push("rowDataArray", a)) : a === -1 && b === -1 && (j = f.defaultDataNode, c && !j && (j = f.defaultDataNode = {}), d && d.push("defaultDataNode"))), j
                },
                setNode: function(a, b, c) {
                    var d, e = this,
                        f = e.dataTable,
                        g = e.columnDataArray,
                        h = e.rowDataArray;
                    a < e.Xj && b < e.OZ && (a >= 0 && b >= 0 ? (d = f[a], d || (d = f[a] = {}), d[b] = c) : a === -1 && b >= 0 ? g[b] = c : b === -1 && a >= 0 && (h[a] = c))
                },
                _f: function(a, b, c, d, e) {
                    var f, g, h, i, j, k, n, o;
                    e && (f = [], g = []), h = this, i = h.dataTable, j = h.rowDataArray, k = h.columnDataArray, n = h.RTa(a, b, m, f), o = h.RTa(c, d, m, g), e && (e.push([f, n]), e.push([g, o])), n ? O(a, b, c, d, n, i, j, k) : o && O(a, b, c, d, l, i, j, k), o ? O(c, d, a, b, o, i, j, k) : n && O(c, d, a, b, l, i, j, k)
                },
                Yea: function(a) {
                    a++;
                    for (var b = this.Xj, c = this.dataTable; a >= 0 && a < b && !c[a];) a++;
                    return a < b ? a : -1
                },
                Hl: function(a, b) {
                    var c = this,
                        d = l,
                        e = c.OZ;
                    if (a >= 0 && a < c.Xj && (d = c.dataTable[a]), d) {
                        for (b++; b >= 0 && b < e && !d[b];) b++;
                        if (b < e) return b
                    }
                    return -1
                },
                clear: function(a, b, c, d, e, f, g) {
                    var h, i, j, k, n, p, q, r = this,
                        s = r.Xj,
                        u = r.OZ,
                        v = [],
                        w = !! g,
                        x = [];
                    if (a >= 0 && b >= 0) {
                        if (c = o(c, s - a), d = o(d, u - b), c > 0 && d > 0) for (j = a; j < a + c; j++) if (!f || t.k.Cb(f, j) < 0) for (i = b; i < b + d; i++) w && (k = []), h = r.RTa(j, i, m, k), h && (v.push(h), w && x.push(k), (1 & e) > 0 && !E(h.value) && (w && (n = {}), r.Cp(j, i, {
                            Ep: h.value
                        }, n), n && g.push(n)))
                    } else if (a >= 0 && b === -1) {
                        if (c = o(c, s - a), c > 0) for (j = a; j < a + c; j++) w && (k = []), h = r.RTa(j, -1, m, k), h && (v.push(h), w && x.push(k))
                    } else if (a === -1 && b >= 0) {
                        if (d = o(d, u - b), d > 0) for (i = b; i < b + d; i++) w && (k = []), h = r.RTa(-1, i, m, k), h && (v.push(h), w && x.push(k))
                    } else a === -1 && b === -1 && (w && (k = []), h = r.RTa(-1, -1, m, k), h && (v.push(h), w && x.push(k)));
                    for (p = 0; p < v.length; p++) h = v[p], h && (q = w ? [] : m, (8 & e) > 0 && (q && q.push(["tag", h.tag]), h.tag = l), (2 & e) > 0 && (q && q.push(["style", h.style]), h.style = l), (1 & e) > 0 && (q && q.push(["value", h.value]), h.value = l), (16 & e) > 0 && (q && q.push(["sparkline", h.sparkline]), h.sparkline = l), (64 & e) > 0 && (q && q.push(["bindingPath", h.bindingPath]), h.bindingPath = l), (4 & e) > 0 && (q && q.push(["comment", h.comment]), h.comment = l), w && q.forEach(function(a) {
                        var b = x[p].slice(0);
                        b.push(a[0]), a[0] = b, g.push(a)
                    }))
                },
                toJSON: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, n, o, p, q, r, s, t;

                    function u(a, c, d) {
                        var e, f, g, h, i, j, k, n;
                        return a ? (e = {}, f = a.value, E(f) || (e.value = f), g = b && b.ignoreStyle, g || (h = a.style, "string" == typeof h ? e.style = h : h && (i = h.toJSON(c, d), j = h.font, i && (j && (i.font = v.Jo(j)), i.name = m, e.style = i))), k = a.bindingPath, E(k) || (e.bindingPath = k), n = a.tag, E(n) || (e.tag = n), e) : l
                    }
                    for (c = this, d = {}, e = {}, f = c.Yea(-1); f >= 0;) {
                        for (h = {}, i = !1, g = c.Hl(f, -1); g >= 0;) j = c.RTa(f, g), j && (k = u(j), y(k) || (h[g] = k, i = !0)), g = c.Hl(f, g);
                        i && (e[f] = h), f = c.Yea(f)
                    }
                    for (y(e) || (d.dataTable = e), n = [], o = c.rowDataArray, f = 0; f < c.Xj; f++) H(o, f) && o[f] && (p = u(o[f]), y(p) || (n[f] = p));
                    for (n.length > 0 && (d.rowDataArray = n), q = [], r = c.columnDataArray, g = 0; g < c.OZ; g++) H(r, g) && r[g] && (s = u(r[g]), y(s) || (q[g] = s));
                    return q.length > 0 && (d.columnDataArray = q), t = u(c.defaultDataNode, a, !0), y(t) || (d.defaultDataNode = t), d
                },
                fromJSON: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m, n;
                    if (a) {
                        if (d = this, d.gga++, e = a.dataTable, h = d.Xj, i = d.OZ, e) for (f = 0; f < h; f++) if (j = e[f]) for (g = 0; g < i; g++) k = j[g], k && Q(k, d.RTa(f, g, !0), b, f, g, c);
                        if (l = a.rowDataArray || a.Hf) for (f = 0; f < h; f++) H(l, f) && l[f] && Q(l[f], d.RTa(f, -1, !0), b, f, -1, c);
                        if (m = a.columnDataArray || a.If) for (g = 0; g < i; g++) H(m, g) && m[g] && Q(m[g], d.RTa(-1, g, !0), b, -1, g, c);
                        n = a.defaultDataNode || a.Jf, n && Q(n, d.RTa(-1, -1, !0), b, -1, -1, c), d.gga--
                    }
                }
            };

            function P() {
                this.infos = []
            }
            g = P.prototype = {
                uL: function(a, b) {
                    var c = this.infos,
                        d = c.length;
                    0 <= a && a <= d && b > 0 && C(c, d, a, b)
                },
                UTa: function(a, b, c) {
                    var d, e, f = this.infos,
                        g = f.length;
                    if (0 <= a && a < g && b > 0) {
                        if (b = o(b, g - a), c) for (d = 0; d < b; d++) e = a + d, c.push([
                            ["infos", e], f[e]
                        ]);
                        D(f, g, a, b)
                    }
                },
                VTa: function() {
                    return this.infos.length
                },
                Hp: function() {
                    return this.infos
                },
                Jp: function(a) {
                    return this.infos[a]
                },
                Kp: function(a, b, c) {
                    var d = this.infos[a];
                    this.infos[a] = b, c && (c[0].push("infos", a), c[1] = d)
                },
                getSize: function(a) {
                    var b = this.infos[a],
                        c = l;
                    return b && (c = b.visible === !1 ? 0 : p(b.size)), c
                },
                getActualSize: function(a) {
                    var b = this.infos[a];
                    return b ? p(b.size) : l
                },
                setSize: function(a, b, c) {
                    var d, e = this.infos,
                        f = e[a];
                    f || (f = e[a] = {}), d = f.size, d !== b && (f.size = b), c && (c[0].push("infos", a, "size"), c[1] = d)
                },
                toJSON: function() {
                    var a, b = this.infos,
                        c = [];
                    for (a = 0; a < b.length; a++) E(b[a]) || (c[a] = b[a]);
                    return c.length > 0 ? c : m
                },
                fromJSON: function(a) {
                    a && (this.infos = a)
                }
            }, x({
                visible: !0,
                resizable: !0,
                pageBreak: !1
            }, function(a, b) {
                var c = a[0].toUpperCase() + a.substr(1);
                g["get" + c] = function(c) {
                    var d = b,
                        e = this.infos[c];
                    return e && !E(e[a]) && (d = e[a]), d
                }, g["set" + c] = function(b, c, d) {
                    var e, f = this.infos,
                        g = f[b];
                    g || (g = f[b] = {}), e = g[a], e !== c && (g[a] = c), d && (d[0].push("infos", b, a), d[1] = e)
                }
            });

            function Q(a, b, d, e, f, g) {
                var h, i, j, k, o, p, q, r, t, v, w;
                a && (h = a.value, h !== m && (h !== l && (h._calcError || h._error && h._code) && (i = c(33), j = i && i.CalcError.parse(h._calcError || h._error), j !== m && (h = j)), b.value = h), k = a.style, o = g && g.sheet, k === m || g.ignoreStyle || (p = l, typeof k === n ? (b.style = k, p = o && (o.Mq(k, !1) || o.parent && o.parent.Mq(k, !1))) : k && (p = new s, p.fromJSON(k, d), p.name = m, b.style = p), p && p.validator && g && g.setValidator && g.setValidator(e, f, p.validator)), q = a.visualState, q !== m && (b.visualState = q), r = a.bindingPath, r !== m && (b.bindingPath = r), t = a.tag, t !== m && (v = t.typeName, typeof v === n && (w = u.getTypeFromString(v), w && (t = new w, t.fromJSON && t.fromJSON(a.tag))), b.tag = t))
            }
            h = 20, i = 62, j = 40, k = 20;

            function R(a, c, d, f, g, l) {
                var n, o, p, q = this;
                q.kj = a, q.sheetModels = [m, new N(f, d), new N(c, g), new N(c, d)], n = q.rowInfos = [], n[0] = n[1] = new P, n[2] = n[3] = new P, o = q.colInfos = [], o[0] = o[2] = new P, o[1] = o[3] = new P, q.spanModels = [m, new b, new b, new b], q.selectionModel = new e, q.name = l || "", q.zoomFactor = 1;

                function r(a, b, c, d) {
                    q.WTa > 0 && q.zTa.push([
                        ["defaults", c], d])
                }
                p = q.defaults = {}, K(p, "rowHeight", h, r), K(p, "colWidth", i, r), K(p, "rowHeaderColWidth", j, r), K(p, "colHeaderRowHeight", k, r), q.WTa = 0, R.ao(this, "init")
            }
            function S(a, b) {
                var c, d, e = b[0],
                    f = a;
                for (c = 0; c < e.length - 1; c++) {
                    if (E(f)) return;
                    d = e[c], f = d === B ? f.Ap : f[d]
                }
                f[e[c]] = b[1]
            }
            R.prototype = {
                addRows: function(a, b, c, d) {
                    var e, f = this;
                    f.WTa > 0 && (e = {
                        row: a,
                        rowCount: b,
                        type: "addRows"
                    }, f.zTa.push(e)), f.XTa(3).NTa(a, b, d), f.XTa(2).NTa(a, b, d), f.zl(3).NTa(a, b), f.zl(2).NTa(a, b), f.YTa(!0, 3).uL(a, b), c || R.ao(f, "addRows", {
                        row: a,
                        rowCount: b,
                        changes: f.zTa
                    })
                },
                ZTa: function(a) {
                    this.deleteRows(a.row, a.rowCount, !0)
                },
                deleteRows: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, n = this;
                    if (n.WTa > 0 && (e = [], f = [], g = [
                            ["spanModels", 3], m], h = [
                            ["spanModels", 2], m], i = [], d = {
                            row: a,
                            rowCount: b,
                            type: "deleteRows"
                        }, n.zTa.push(d)), n.XTa(3).STa(a, b, e), n.XTa(2).STa(a, b, f), n.zl(3).PTa(a, b, g), n.zl(2).PTa(a, b, h), n.YTa(!0, 3).UTa(a, b, i), c || R.ao(n, "deleteRows", {
                            row: a,
                            rowCount: b,
                            changes: n.zTa
                        }), d) {
                        for (j = d.changes = [], k = ["sheetModels", 3], l = 0; l < e.length; l++) e[l][0] = k.concat(e[l][0]), j.push(e[l]);
                        for (k = ["sheetModels", 2], l = 0; l < f.length; l++) f[l][0] = k.concat(f[l][0]), j.push(f[l]);
                        for (g.length > 0 && j.push(g), h.length > 0 && j.push(h), k = ["rowInfos", 3], l = 0; l < i.length; l++) i[l][0] = k.concat(i[l][0]), j.push(i[l])
                    }
                },
                $Ta: function(a) {
                    var b, c;
                    for (this.addRows(a.row, a.rowCount, !0, !0), b = a.changes, c = b.length - 1; c >= 0; c--) S(this, b[c])
                },
                addColumns: function(a, b, c) {
                    var d, e = this;
                    e.WTa > 0 && (d = {
                        col: a,
                        colCount: b,
                        type: "addColumns"
                    }, e.zTa.push(d)), e.XTa(3).OTa(a, b), e.XTa(1).OTa(a, b), e.zl(3).OTa(a, b), e.zl(1).OTa(a, b), e.YTa(!1, 3).uL(a, b), c || R.ao(e, "addColumns", {
                        col: a,
                        colCount: b,
                        changes: e.zTa
                    })
                },
                _Ta: function(a) {
                    this.deleteColumns(a.col, a.colCount, !0)
                },
                deleteColumns: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, n = this;
                    if (n.WTa > 0 && (e = [], f = [], g = [
                            ["spanModels", 3], m], h = [
                            ["spanModels", 1], m], i = [], d = {
                            col: a,
                            colCount: b,
                            type: "deleteColumns"
                        }, n.zTa.push(d)), n.XTa(3).TTa(a, b, e), n.XTa(1).TTa(a, b, f), n.zl(3).QTa(a, b, g), n.zl(1).QTa(a, b, h), n.YTa(!1, 3).UTa(a, b, i), c || R.ao(n, "deleteColumns", {
                            col: a,
                            colCount: b,
                            changes: n.zTa
                        }), d) {
                        for (j = d.changes = [], k = ["sheetModels", 3], l = 0; l < e.length; l++) e[l][0] = k.concat(e[l][0]), j.push(e[l]);
                        for (k = ["sheetModels", 1], l = 0; l < f.length; l++) f[l][0] = k.concat(f[l][0]), j.push(f[l]);
                        for (g.length > 0 && j.push(g), h.length > 0 && j.push(h), k = ["colInfos", 3], l = 0; l < i.length; l++) i[l][0] = k.concat(i[l][0]), j.push(i[l])
                    }
                },
                aUa: function(a) {
                    var b, c;
                    for (this.addColumns(a.col, a.colCount, !0), b = a.changes, c = b.length - 1; c >= 0; c--) S(this, b[c])
                },
                getRowCount: function(a) {
                    return this.XTa(a).getRowCount()
                },
                setRowCount: function(a, b, c) {
                    var d = this,
                        e = d.getRowCount(b);
                    d.WTa > 0 && d.zTa.push({
                        oldRowCount: e,
                        sheetArea: b,
                        type: "setRowCount"
                    }), 3 === b || 2 === b ? (e > a && d.deleteRows(a, e - a, c), d.XTa(3).setRowCount(a), d.XTa(2).setRowCount(a)) : 1 === b && (e > a && d.YTa(!0, b).UTa(a, e - a), d.XTa(b).setRowCount(a))
                },
                bUa: function(a) {
                    this.setRowCount(a.oldRowCount, a.sheetArea, !0)
                },
                getColumnCount: function(a) {
                    return this.XTa(a).getColumnCount()
                },
                setColumnCount: function(a, b, c) {
                    var d = this,
                        e = d.getColumnCount(b);
                    d.WTa > 0 && d.zTa.push({
                        oldColCount: e,
                        sheetArea: b,
                        type: "setColumnCount"
                    }), 3 === b || 1 === b ? (e > a && d.deleteColumns(a, e - a, c), d.XTa(3).setColumnCount(a), d.XTa(1).setColumnCount(a)) : 2 === b && (e > a && d.YTa(!1, b).UTa(a, e - a), d.XTa(b).setColumnCount(a))
                },
                cUa: function(a) {
                    this.setColumnCount(a.oldColCount, a.sheetArea, !0)
                },
                getLastNonNullRow: function(a) {
                    var b = this.YTa(!0, a).VTa();
                    return q(this.XTa(a).Ef, this.zl(a).Ef, q(b - 1, 0))
                },
                getLastNonNullCol: function(a) {
                    var b = this.YTa(!1, a).VTa();
                    return q(this.XTa(a).Ff, this.zl(a).Ff, q(b - 1, 0))
                },
                toJSON: function(a) {
                    var b, c, d, e, f = this,
                        g = {};
                    return g.data = f.XTa(3).toJSON(3, a), g.rowHeaderData = f.XTa(2).toJSON(2, a), g.colHeaderData = f.XTa(1).toJSON(1, a), g.rows = f.YTa(!0, 3).toJSON(), g.columns = f.YTa(!1, 3).toJSON(), g.rowHeaderColInfos = f.YTa(!1, 2).toJSON(), g.colHeaderRowInfos = f.YTa(!0, 1).toJSON(), b = a && a.ignoreStyle, b || (g.spans = f.zl(3).toJSON(), g.rowHeaderSpan = f.zl(2).toJSON(), g.colHeaderSpan = f.zl(1).toJSON()), g.selections = f.selectionModel.toJSON(), g.tag = f.getValueForKey(-1, -1, "tag", 3), c = f.defaults, d = {
                        colHeaderRowHeight: c.colHeaderRowHeight,
                        colWidth: c.colWidth,
                        rowHeaderColWidth: c.rowHeaderColWidth,
                        rowHeight: c.rowHeight
                    }, e = d.rowHeight === h && d.colWidth === i && d.rowHeaderColWidth === j && d.colHeaderRowHeight === k, e || (g.defaults = d), g
                },
                fromJSON: function(a, b, c) {
                    var d, e, f, g, h, i, j = this;
                    j.XTa(3).fromJSON(a.data, b, c, 3), j.XTa(2).fromJSON(a.rowHeaderData, b, c, 2), j.XTa(1).fromJSON(a.colHeaderData, b, c, 1), j.YTa(!0, 3).fromJSON(a.rows), j.YTa(!1, 3).fromJSON(a.columns), j.YTa(!1, 2).fromJSON(a.rowHeaderColInfos), j.YTa(!0, 1).fromJSON(a.colHeaderRowInfos), d = c && c.ignoreStyle, d || (j.zl(3).fromJSON(a.spans), j.zl(2).fromJSON(a.rowHeaderSpan), j.zl(1).fromJSON(a.colHeaderSpan)), j.selectionModel.fromJSON(a.selections), e = a.tag, e !== m && (f = e.typeName, typeof f === n && (g = u.getTypeFromString(f), g && (e = new g, e.fromJSON && e.fromJSON(a.tag))), j.do("setValueForKey", -1, -1, "tag", e, 3)), h = a.defaults, h !== m && (i = j.defaults, i.colHeaderRowHeight = h.colHeaderRowHeight, i.colWidth = h.colWidth, i.rowHeaderColWidth = h.rowHeaderColWidth, i.rowHeight = h.rowHeight)
                },
                startTransaction: function() {
                    if (0 === this.WTa) {
                        this.zTa = [];
                        var a = this.kj,
                            b = !a.isEventSuspended();
                        b && (this.zTa.events = [])
                    }
                    this.WTa++
                },
                endTransaction: function() {
                    var a, b;
                    return this.WTa--, 0 === this.WTa ? (a = this.zTa, this.zTa = m, b = a.events, b && 0 === b.length && delete a.events, a) : []
                },
                dUa: function() {
                    var a = this.zTa;
                    if (a) return a.calc || (a.calc = []), a.calc
                },
                undo: function(a) {
                    var b, c, d, e, f, g;
                    for (b = a.length - 1; b >= 0; b--) c = a[b], d = c.type, d ? "addRows" === d ? this.ZTa(c) : "addColumns" === d ? this._Ta(c) : "deleteRows" === d ? this.$Ta(c) : "deleteColumns" === d ? this.aUa(c) : "setRowCount" === d ? this.bUa(c) : "setColumnCount" === d ? this.cUa(c) : "setZoomFactor" === d ? this.fUa(c.value) : "updateDirty" === d ? this.gWa(c) : "setName" === d && this.pZa(c.value) : S(this, c);
                    e = this.kj, e.Oq = {}, e.Jq(), f = a && a.calc, f && f.length && e.gUa(f), R.ao(this, "undo", a), g = a && a.events, g && this.YVa(g)
                },
                do: function() {
                    var a = this,
                        b = arguments[0],
                        c = Array.prototype.slice.call(arguments, 1);
                    b && a[b] && a[b].apply(a, c)
                },
                XTa: function(a) {
                    return E(a) && (a = 3), this.sheetModels[a]
                },
                dWa: function(a, b, c) {
                    E(c) && (c = 3), this.sheetModels[c] = new N(a, b)
                },
                ZVa: function() {
                    var a = this,
                        b = a.zTa,
                        c = b && b.events;
                    c && c.push(arguments)
                },
                YVa: function(a) {
                    for (var b, c, d, e = this.kj; a.length;) b = a.pop(), c = b[0], "cellChanged" === c ? d = e.Bq : "rowChanged" === c ? d = e.kq : "columnChanged" === c && (d = e.pq), d && d.apply(e, [].slice.call(b, 1))
                },
                getValue: function(a, b, c, d) {
                    if (E(c) && (c = 3), !d) {
                        var e = {
                            row: a,
                            col: b,
                            sheetArea: c,
                            isValueGet: !1,
                            value: m
                        };
                        if (R.ao(this, "getValue", e, function() {
                                return e.isValueGet
                            }), e.isValueGet) return e.value
                    }
                    return this.XTa(c).getValue(a, b)
                },
                setValue: function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l, n, o;
                    E(d) && (d = 3), h = this, i = h.kj, j = !f && !i.isEventSuspended(), j && (g = i.vq(h, a, b, d)), k = !1, e || (l = {
                        row: a,
                        col: b,
                        value: c,
                        sheetArea: d,
                        isValueSet: !1,
                        changes: h.zTa
                    }, R.ao(h, "setValue", l, function() {
                        return l.isValueSet
                    }), k = l.isValueSet), k || (h.WTa > 0 && (n = [
                        ["sheetModels", d], m], o = {
                        sheetArea: d
                    }), h.XTa(d).setValue(a, b, c, n, o), n && n.length > 0 && h.zTa.push(n), o && o.type && h.zTa.push(o)), j && g !== c && i.Bq("value", a, b, d, g, c)
                },
                getStyle: function(a, b, c) {
                    return this.XTa(c).getStyle(a, b)
                },
                setStyle: function(a, b, c, d) {
                    E(d) && (d = 3);
                    var e = this.WTa > 0 ? [
                        ["sheetModels", d], m] : m;
                    this.XTa(d).setStyle(a, b, c, e), e && e.length > 0 && this.zTa.push(e)
                },
                getValueForKey: function(a, b, c, d) {
                    return this.XTa(d).getValueForKey(a, b, c)
                },
                setValueForKey: function(a, b, c, d, e) {
                    E(e) && (e = 3);
                    var f = this.WTa > 0 ? [
                        ["sheetModels", e], m] : m;
                    this.XTa(e).setValueForKey(a, b, c, d, f), f && f.length > 0 && this.zTa.push(f)
                },
                clear: function(a, b, c, d, e, f, g) {
                    var h, i;
                    E(g) && (g = 3), h = this.WTa > 0 ? [] : m, this.XTa(g).clear(a, b, c, d, e, f, h), R.ao(this, "clear", {
                        row: a,
                        col: b,
                        rowCount: c,
                        colCount: d,
                        type: e,
                        ignoredRowList: f,
                        sheetArea: g,
                        changes: this.zTa
                    }), h && (i = ["sheetModels", g], h.forEach(function(a) {
                        a[0] = i.concat(a[0])
                    }), Array.prototype.push.apply(this.zTa, h))
                },
                swapNode: function(a, b, c, d, e) {
                    var f, g;
                    E(e) && (e = 3), f = this.WTa > 0 ? [] : m, this.XTa(e)._f(a, b, c, d, f), f && (g = ["sheetModels", e], f.forEach(function(a) {
                        a[0] = g.concat(a[0])
                    }), Array.prototype.push.apply(this.zTa, f))
                },
                Cp: function(a, b, c, d) {
                    var e;
                    this.WTa > 0 && (e = {
                        sheetArea: d
                    }, E(d) && (e.sheetArea = 3)), this.XTa(d).Cp(a, b, c, e), e && this.zTa.push(e)
                },
                gWa: function(a) {
                    this.XTa(a.sheetArea).gWa(a)
                },
                hUa: function(a) {
                    return this.XTa(a).Ap
                },
                iUa: function(a) {
                    this.XTa(a).Ap = {}
                },
                jUa: function(a) {
                    this.XTa(a).gga++
                },
                kUa: function(a) {
                    var b, c = this.XTa(a);
                    c.gga--, b = c.gga, b < 0 && (c.gga = 0)
                },
                getName: function() {
                    return this.name || ""
                },
                setName: function(a) {
                    var b = this;
                    b.WTa > 0 && b.zTa.push({
                        type: "setName",
                        value: b.name
                    }), b.name = a
                },
                pZa: function(a) {
                    this.kj.name(a)
                },
                getZoomFactor: function() {
                    return this.zoomFactor
                },
                setZoomFactor: function(a) {
                    var b = this;
                    b.WTa > 0 && b.zTa.push({
                        type: "setZoomFactor",
                        value: b.zoomFactor
                    }), b.zoomFactor = a
                },
                fUa: function(a) {
                    this.kj.zoom(a)
                },
                zl: function(a) {
                    return E(a) && (a = 3), this.spanModels[a]
                },
                eWa: function(a) {
                    E(a) && (a = 3), this.spanModels[a] = new b
                },
                getSpans: function(a, b) {
                    return this.zl(b).getSpans(a)
                },
                getSpan: function(a, b, c) {
                    return this.zl(c).get(a, b)
                },
                MTa: function(a, b, c, d, e) {
                    return this.zl(e).MTa(a, b, c, d)
                },
                qu: function(a, b, c, d, e) {
                    return this.zl(e).qu(a, b, c, d)
                },
                findSpan: function(a, b, c) {
                    return this.zl(c).find(a, b)
                },
                removeSpan: function(a, b) {
                    E(b) && (b = 3);
                    var c = this.WTa > 0 ? [
                        ["spanModels", b], m] : m;
                    this.zl(b).remove(a, c), c && c.length > 0 && this.zTa.push(c)
                },
                addSpan: function(a, b) {
                    E(b) && (b = 3);
                    var c = this.WTa > 0 ? [
                        ["spanModels", b], m] : m;
                    this.zl(b).add(a, c), c && c.length > 0 && this.zTa.push(c)
                },
                clearSpan: function(a, b, c, d, e) {
                    E(e) && (e = 3);
                    var f = this.WTa > 0 ? [
                        ["spanModels", e], m] : m;
                    this.zl(e).$b(a, b, c, d, f), f && f.length > 0 && this.zTa.push(f)
                },
                moveSpan: function(a, b, c, d, e, f, g) {
                    E(g) && (g = 3);
                    var h = this.WTa > 0 ? [
                        ["spanModels", g], m] : m;
                    this.zl(g).aB(a, b, c, d, e, f, h), h && h.length > 0 && this.zTa.push(h)
                },
                copySpan: function(a, b, c, d, e, f, g) {
                    E(g) && (g = 3);
                    var h = this.WTa > 0 ? [
                        ["spanModels", g], m] : m;
                    this.zl(g).Zz(a, b, c, d, e, f, h), h && h.length > 0 && this.zTa.push(h)
                },
                addSelection: function(a, b, c, d) {
                    var e, f, g = this.WTa > 0 ? [] : m;
                    if (this.selectionModel.add(a, b, c, d, g), g) for (e = 0; e < g.length; e++) f = g[e], f[0] = ["selectionModel"].concat(f[0]), this.zTa.push(f)
                },
                getSelections: function() {
                    return this.selectionModel.get()
                },
                setSelections: function(a) {
                    var b, c, d = this.WTa > 0 ? [] : m;
                    if (this.selectionModel.set(a, d), d) for (b = 0; b < d.length; b++) c = d[b], c[0] = ["selectionModel"].concat(c[0]), this.zTa.push(c)
                },
                clearSelection: function() {
                    var a, b, c = this.WTa > 0 ? [] : m;
                    if (this.selectionModel.clear(c), c) for (a = 0; a < c.length; a++) b = c[a], b[0] = ["selectionModel"].concat(b[0]), this.zTa.push(b)
                },
                getActiveSelectedRangeIndex: function() {
                    return this.selectionModel.getProperty("activeSelectedRangeIndex")
                },
                setActiveSelectedRangeIndex: function(a) {
                    var b = this.WTa > 0 ? [
                        ["selectionModel"], m] : m;
                    this.selectionModel.setProperty("activeSelectedRangeIndex", a, b), b && this.zTa.push(b)
                },
                getSelectionPolicy: function() {
                    return this.selectionModel.getProperty("selectionPolicy")
                },
                setSelectionPolicy: function(a) {
                    var b = this.WTa > 0 ? [
                        ["selectionModel"], m] : m;
                    this.selectionModel.setProperty("selectionPolicy", a, b), b && this.zTa.push(b)
                },
                getSelectionUnit: function() {
                    return this.selectionModel.getProperty("selectionUnit")
                },
                setSelectionUnit: function(a) {
                    var b = this.WTa > 0 ? [
                        ["selectionModel"], m] : m;
                    this.selectionModel.setProperty("selectionUnit", a, b), b && this.zTa.push(b)
                },
                sp: function(a) {
                    return this.selectionModel.sp(a)
                },
                tp: function(a) {
                    return this.selectionModel.tp(a)
                },
                vp: function(a, b, c, d, e, f) {
                    return this.selectionModel.vp(a, b, c, d, e, f)
                },
                wp: function(a, b, c, d, e) {
                    return this.selectionModel.wp(a, b, c, d, e)
                },
                YTa: function(a, b) {
                    E(b) && (b = 3);
                    var c = a ? this.rowInfos : this.colInfos;
                    return c[b]
                },
                fWa: function(a, b) {
                    E(b) && (b = 3);
                    var c = a ? this.rowInfos : this.colInfos;
                    c[b] = new P
                },
                getPageBreak: function(a, b, c) {
                    var d = this.YTa(a, b);
                    return d.getPageBreak(c)
                },
                setPageBreak: function(a, b, c, d) {
                    var e, f;
                    E(b) && (b = 3), e = this.WTa > 0 ? [
                        [a ? "rowInfos" : "colInfos", b], m] : m, f = this.YTa(a, b), f.setPageBreak(c, d, e), e && this.zTa.push(e)
                },
                getVisible: function(a, b, c) {
                    var d = this.YTa(a, b);
                    return d.getVisible(c)
                },
                setVisible: function(a, b, c, d) {
                    var e, f;
                    E(b) && (b = 3), e = this.WTa > 0 ? [
                        [a ? "rowInfos" : "colInfos", b], m] : m, f = this.YTa(a, b), f.setVisible(c, d, e), e && this.zTa.push(e)
                },
                getResizable: function(a, b, c) {
                    var d = this.YTa(a, b);
                    return d.getResizable(c)
                },
                setResizable: function(a, b, c, d) {
                    var e, f;
                    E(b) && (b = 3), e = this.WTa > 0 ? [
                        [a ? "rowInfos" : "colInfos", b], m] : m, f = this.YTa(a, b), f.setResizable(c, d, e), e && this.zTa.push(e)
                },
                getSize: function(a, b, c) {
                    var d = this.YTa(a, b);
                    return d.getSize(c)
                },
                getActualSize: function(a, b, c) {
                    var d = this.YTa(a, b);
                    return d.getActualSize(c)
                },
                setSize: function(a, b, c, d) {
                    var e, f;
                    E(b) && (b = 3), e = this.WTa > 0 ? [
                        [a ? "rowInfos" : "colInfos", b], m] : m, f = this.YTa(a, b), f.setSize(c, d, e), e && this.zTa.push(e)
                },
                VTa: function(a, b) {
                    var c = this.YTa(a, b);
                    return c.VTa()
                },
                Hp: function(a, b) {
                    var c = this.YTa(a, b);
                    return c.Hp()
                },
                Jp: function(a, b, c) {
                    var d = this.YTa(a, b);
                    return d.Jp(c)
                },
                setItem: function(a, b, c, d) {
                    var e, f;
                    E(b) && (b = 3), e = this.WTa > 0 ? [
                        [a ? "rowInfos" : "colInfos", b], m] : m, f = this.YTa(a, b), f.Kp(c, d, e), e && this.zTa.push(e)
                }
            }, u.Zn(R), r.lUa = R, a.exports = r
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d = c(42),
                e = c(43),
                f = c(49).oo,
                g = c(53).Style,
                h = c(57),
                i = c(44).GC$,
                j = c(26),
                k = e.Ul,
                l = e.En,
                m = e.Ul.Nl,
                n = e.kf,
                o = j.j.Fa,
                p = e.ln,
                q = e.Rect,
                r = e.Events,
                s = k.Pl,
                t = k.Ql,
                u = k.bq,
                v = e.Vl,
                w = e.Im,
                x = e.Themes,
                y = e.Theme,
                z = h.zp,
                A = h.yp,
                B = i.each,
                C = i.isEmptyObject,
                D = j.l,
                E = j.D,
                F = document,
                G = parseInt,
                H = parseFloat,
                I = isNaN,
                J = null,
                K = void 0,
                L = Math.min,
                M = Math.max,
                N = Math.floor,
                O = "undefined",
                P = "string",
                Q = "width",
                R = "height",
                S = "black",
                T = "tag",
                U = "onLayoutChanged",
                V = "onPaintSuspend",
                W = "isVisible",
                X = "resizable",
                Y = ".gcSheet",
                Z = ".gcSheetInternal",
                $ = RegExp("^/Date\\((-?\\d+)([-+]{1}\\d+)?\\)/\\s*$"),
                _ = RegExp("^/OADate\\(([-+]?(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)\\)/\\s*$"),
                aa = {
                    backColor: !0,
                    foreColor: !0,
                    font: !0,
                    borderLeft: !0,
                    borderTop: !0,
                    borderRight: !0,
                    borderBottom: !0,
                    textDecoration: !0
                };
            d.RangeChangedAction = {
                dragDrop: 0,
                dragFill: 1,
                clear: 2,
                paste: 3,
                sort: 4,
                setArrayFormula: 5,
                evaluateFormula: 6
            }, d.SheetArea = {
                corner: 0,
                colHeader: 1,
                rowHeader: 2,
                viewport: 3
            }, d.HeaderAutoText = {
                blank: 0,
                numbers: 1,
                letters: 2
            };

            function ba() {
                return j.C(d.SR)()
            }
            function ca(a) {
                if (typeof a === P && "/" === a.charAt(0)) {
                    var b;
                    _.test(a) ? (b = a.match(_), a = D.Xb(H(b[1]))) : $.test(a) && (b = a.match($), a = new Date(H(b[1])))
                }
                return a
            }
            function da(a) {
                return !o(a) && D.Ska(a) && (a = D.Daa(a)), a
            }
            function ea(a, b) {
                var c, d, e, f = [],
                    g = a.ITa.hUa();
                if (g) for (c in g) E(g, c) && (d = g[c], d && d.rs === (b ? "e" : "n") && (e = {
                    row: +c,
                    item: a.getDataItem && a.getDataItem(c)
                }, b && (e.originalItem = d.originalItem), f.push(e)));
                return f
            }
            function fa(a, b, c) {
                var d, e = 0;
                for (d = b; d <= c; d++) e += a._m(d);
                return e
            }
            function ga(a, b, c) {
                var d, e = 0;
                for (d = b; d <= c; d++) e += a.Sl(d);
                return e
            }
            function ha(a) {
                return a.getColumnCount()
            }
            function ia(a) {
                return a.getRowCount()
            }
            function ja(a) {
                return a.frozenTrailingColumnCount()
            }
            function ka(a) {
                return a.frozenTrailingRowCount()
            }
            function la(a) {
                return a.frozenColumnCount()
            }
            function ma(a) {
                return a.frozenRowCount()
            }
            function na(a, b, c) {
                Object.defineProperty(a, b, {
                    get: function() {
                        return this["_" + b]
                    },
                    set: function(a) {
                        var d = this["_" + b];
                        d !== a && (this["_" + b] = a, c && c(b, a, d))
                    }
                })
            }
            b = {
                rowHeaderVisible: !0,
                colHeaderVisible: !0,
                clipBoardOptions: 0,
                frozenlineColor: S,
                rowHeaderAutoText: 1,
                colHeaderAutoText: 2,
                rowHeaderAutoTextIndex: -1,
                colHeaderAutoTextIndex: -1,
                sheetTabColor: J,
                selectionBackColor: J,
                selectionBorderColor: J,
                allowCellOverflow: !0,
                isProtected: !1,
                protectionOptions: {},
                gridline: {},
                borderColor: S,
                borderWidth: 0
            };

            function oa(a) {
                var c = this;
                c.yn = oa.Np++, c.options = t(b, function(a, b, d) {
                    c.Op(a, b, d)
                }), c.ad(a)
            }
            e.Zn(oa), oa.Np = 1, oa.Qp = b, oa.Rp = 200, oa.Sp = 20, oa.Tp = 1, oa.Vp = 1;

            function pa(a, b, c, d) {
                return {
                    row: b,
                    col: c,
                    newValue: a.getValue(b, c),
                    oldValue: d
                }
            }
            oa.prototype = {
                constructor: oa,
                Op: function(a, b, c) {
                    var d, e, f = this,
                        g = f.parent;
                    switch (a) {
                        case "allowCellOverflow":
                        case "colHeaderAutoText":
                        case "colHeaderAutoTextIndex":
                        case "colHeaderVisible":
                        case "frozenlineColor":
                        case "rowHeaderAutoText":
                        case "rowHeaderAutoTextIndex":
                        case "rowHeaderVisible":
                        case "selectionBackColor":
                        case "selectionBorderColor":
                            f.$p();
                            break;
                        case "gridline":
                            d = function() {
                                f.$p()
                            }, e = f.options.gridline, ["color", "showHorizontalGridline", "showVerticalGridline"].forEach(function(a) {
                                var c = b[a];
                                na(e, a, d), e[a] = c
                            });
                            break;
                        case "isProtected":
                            g && g.undoManager().clear(), f._p(), oa.ao(f, "onProtectChanged"), f.$p();
                            break;
                        case "protectionOptions":
                            f._p(), oa.ao(f, "onProtectChanged");
                            break;
                        case "sheetTabColor":
                            g && g.aq()
                    }
                },
                name: function(a) {
                    var b = this,
                        c = b.parent;
                    if (0 === arguments.length) return b.ITa ? b.ITa.getName() : "";
                    if (!u(a, c ? c.sheets : null, b)) throw ba().Exp_NotSupported;
                    return b.cq(a), c && c.aq(), b
                },
                cq: function(a, b) {
                    var c = this,
                        d = c.name();
                    b || oa.ao(c, "beforeSetName", {
                        oldName: d,
                        newName: a
                    }), this.ITa.do("setName", a), b || oa.ao(c, "setName", {
                        oldName: d,
                        newName: a
                    })
                },
                visible: s("visible", !0, function(a) {
                    var b, c = this,
                        d = c.parent,
                        e = d.sheets,
                        f = e.length,
                        g = i.inArray(c, e),
                        h = d.getActiveSheetIndex();
                    if (a) h < 0 ? d.dq(g, 1) : d.aq();
                    else if (g === h) {
                        for (b = g + 1; b < f && !e[b].visible();) b++;
                        if (b >= f) for (b = g - 1; b >= 0 && !e[b].visible();) b--;
                        b < d.hq.gq && (d.hq.gq = b), b < 0 ? (c.no(!1), d.eq = b, d.fq()) : d.dq(b, 1)
                    } else d.aq()
                }),
                addRows: function(a, b) {
                    var c, d, e, f;
                    if (!(b <= 0)) {
                        c = this, d = ia(c), (a < 0 || a > d) && (a = d), c.suspendPaint();
                        try {
                            if (e = {
                                    changeType: "addingRows",
                                    row: a,
                                    rowCount: b,
                                    canAdd: !0
                                }, oa.ao(c, U, e), !e.canAdd) return;
                            o(e.newRow) || (a = e.newRow), this.ITa.do("addRows", a, b), c.jq = !0, f = "addRows", oa.ao(c, U, {
                                changeType: f,
                                row: a,
                                oldValue: d,
                                rowCount: b
                            }), oa.ao(c, U, {
                                changeType: "addRows2",
                                row: a,
                                oldValue: d,
                                rowCount: b
                            }), c.kq(a, 3, f, b, d)
                        } finally {
                            c.resumePaint()
                        }
                    }
                },
                deleteRows: function(a, b) {
                    var c, d, e, f, g, h, i, j = this,
                        k = ia(j);
                    if (!(0 > a || a >= k || b <= 0)) {
                        j.suspendPaint();
                        try {
                            if (c = {
                                    changeType: "deletingRows",
                                    row: a,
                                    rowCount: b,
                                    canDelete: !0
                                }, oa.ao(j, U, c), !c.canDelete) return;
                            if (j.ITa.do("deleteRows", a, b), d = j.lq, d >= 0) {
                                for (e = -1, f = ma(j), g = d; g >= f; g--) if (j.getRowVisible(g) && j.Sl(g) > 0) {
                                    e = g;
                                    break
                                }
                                e === -1 && (e = 0), d !== e && j.mq(e)
                            }
                            h = k, j.getActiveRowIndex() >= h && j.setActiveCell(h - 1, j.getActiveColumnIndex()), j.jq = !0, i = "deleteRows", oa.ao(j, U, {
                                changeType: i,
                                row: a,
                                oldValue: k,
                                rowCount: b
                            }), j.kq(a, 3, i, b, k)
                        } finally {
                            j.resumePaint()
                        }
                    }
                },
                addColumns: function(a, b) {
                    var c, d, e, f;
                    b <= 0 || (c = this, d = ha(c), (a < 0 || a > d) && (a = d), e = {
                        changeType: "addingColumns",
                        col: a,
                        colCount: b,
                        canAdd: !0
                    }, oa.ao(c, U, e), e.canAdd && (c.ITa.do("addColumns", a, b), c.oq = !0, f = "addColumns", oa.ao(c, U, {
                        changeType: f,
                        col: a,
                        oldValue: d,
                        colCount: b
                    }), c.pq(a, 3, f, b, d), c.$p()))
                },
                deleteColumns: function(a, b) {
                    var c, d, e, f, g, h, i, j = this,
                        k = ha(j);
                    if (!(0 > a || a >= k || b <= 0) && (c = {
                            changeType: "deletingColumns",
                            col: a,
                            colCount: b,
                            canDelete: !0
                        }, oa.ao(j, U, c), c.canDelete)) {
                        if (j.ITa.do("deleteColumns", a, b), d = j.qq, d >= 0) {
                            for (e = -1, f = la(j), g = d; g >= f; g--) if (j.getColumnVisible(g) && j.Tl(g) > 0) {
                                e = g;
                                break
                            }
                            e === -1 && (e = 0), d !== e && j.rq(e)
                        }
                        h = k, j.getActiveColumnIndex() >= h && j.setActiveCell(j.getActiveRowIndex(), h - 1), j.oq = !0, i = "deleteColumns", oa.ao(j, U, {
                            changeType: i,
                            col: a,
                            oldValue: k,
                            colCount: b
                        }), j.pq(a, 3, i, b, k), j.$p()
                    }
                },
                frozenColumnCount: s("frozenColumnCount", 0, function(a) {
                    var b = this;
                    b.qq < a ? b.qq = a : "" !== a && 0 !== a && null !== a || (b.qq = 0), b.oq = !0, b.$p()
                }, function(a) {
                    return a >= 0
                }),
                frozenRowCount: s("frozenRowCount", 0, function(a) {
                    var b = this;
                    b.lq < a ? b.lq = a : "" !== a && 0 !== a && null !== a || (b.lq = 0), b.jq = !0, b.$p()
                }, function(a) {
                    return a >= 0
                }),
                frozenTrailingRowCount: s("frozenTrailingRowCount", 0, function() {
                    var a = this;
                    a.jq = !0, a.$p()
                }, function(a) {
                    return a >= 0
                }),
                frozenTrailingColumnCount: s("frozenTrailingColumnCount", 0, function() {
                    var a = this;
                    a.oq = !0, a.$p()
                }, function(a) {
                    return a >= 0
                }),
                getRowCount: function(a) {
                    return 0 === a ? 0 : this.ITa.getRowCount(a)
                },
                getColumnCount: function(a) {
                    return 0 === a ? 0 : this.ITa.getColumnCount(a)
                },
                setRowCount: function(a, b) {
                    var c, d;
                    o(b) && (b = 3), c = this, d = {
                        changeType: "settingRowCount",
                        rowCount: a,
                        sheetArea: b,
                        canSet: !0
                    }, oa.ao(c, U, d), d.canSet && c.setRowCountCore(a, b)
                },
                setRowCountCore: function(a, b) {
                    var c, d;
                    a = G(a, 10), I(a) || (o(b) && (b = 3), c = this, d = c.getRowCount(b), a < 0 || a === d || (3 === b || 2 === b ? (c.ITa.do("setRowCount", a, b), ma(c) > a && c.frozenRowCount(a)) : 1 === b && c.ITa.do("setRowCount", a, b), oa.ao(c, U, {
                        changeType: "setRowCount",
                        rowCount: a,
                        sheetArea: b
                    }), c.jq = !0, c.Jl >= a && (3 === b || 2 === b) && c.setActiveCell(a - 1, c.getActiveColumnIndex()), c.$p(), c.clearPendingChanges()))
                },
                setColumnCount: function(a, b) {
                    var c, d;
                    a = G(a, 10), I(a) || (c = this, d = c.getColumnCount(b), a < 0 || a === d || (o(b) && (b = 3), 3 === b || 1 === b ? (c.ITa.do("setColumnCount", a, b), la(c) > a && c.frozenColumnCount(a)) : 2 === b && c.ITa.do("setColumnCount", a, b), oa.ao(c, U, {
                        changeType: "setColumnCount",
                        colCount: a,
                        sheetArea: b
                    }), c.oq = !0, c.Kl >= a && (3 === b || 1 === b) && c.setActiveCell(c.getActiveRowIndex(), a - 1), c.$p(), c.clearPendingChanges()))
                },
                getText: function(a, b, c) {
                    var d, e, f, g, h, i;
                    return o(c) && (c = 3), d = this, e = d.getValue(a, b, c), f = d.getCellType(a, b, c), g = d.tq(a, b, "formatter", c), g || (g = d.tq(a, b, "_autoFormatter", c)), h = {}, i = d.tq(a, b, "quotePrefix", c), e = f.format(e, g, h, {
                        sheet: d,
                        row: a,
                        col: b,
                        sheetArea: c,
                        quotePrefix: i
                    }), e && "string" == typeof e && (e = e.replace(/\r\n?/g, "\n")), e
                },
                setText: function(a, b, c, d) {
                    var e, f, g, h, i, j, k = this;
                    o(d) && (d = 3), e = c, f = {
                        value: c
                    }, oa.ao(k, "settingText", f), c = f.value, g = c, h = k.getCellType(a, b, d), i = k.getFormatter && k.getFormatter(a, b, d), h && i && (j = {
                        sheet: k,
                        row: a,
                        col: b,
                        sheetArea: d
                    }, g = h.parse(e, i, j), g = o(g) ? c : g), k.uq(a, b, g, d), k.$p()
                },
                getValue: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m, n, p;
                    return 0 === c ? J : (o(c) && (c = 3), d = this, e = d.options, f = d.ITa, g = f.getRowCount(c), h = f.getColumnCount(c), i = d.vq(f, a, b, c), 1 === c ? o(i) && (k = d.wq, k && k.Ou && (l = d.ITa.Jp(!1, 3, b), m = e.colHeaderAutoTextIndex, l && (m >= 0 && a === m || m === -1 && a === g - 1) && (i = l.displayName || l.name)), o(i) && (j = e.colHeaderAutoTextIndex, (j < 0 || j >= g) && (j = g - 1), a === j && (n = e.colHeaderAutoText, 2 === n ? i = d.xq(b + 1) : 1 === n && (i = b + 1)))) : 2 === c && o(i) && (j = e.rowHeaderAutoTextIndex, (j < 0 || j >= h) && (j = h - 1), b === j && (p = e.rowHeaderAutoText, 2 === p ? i = d.xq(a + 1) : 1 === p && (i = a + 1))), i)
                },
                setValue: function(a, b, c, d, e) {
                    this.uq(a, b, c, d, e), this.$p()
                },
                uq: function(a, b, c, e, f) {
                    var g, h, i, j, k, l;
                    0 !== e && (o(e) && (e = 3), g = this, h = g.ITa, i = h.getRowCount(e), j = h.getColumnCount(e), a < 0 || a >= i || b < 0 || b >= j || (k = 3 === e, c = da(c), h.do("setValue", a, b, c, e), k && !f && d.X3 && g.zq(a, b), g.t4 && g.t4(a, b, 1, 1, e), l = g.conditionalFormats, l && l.Nm()))
                },
                getActualStyle: function(a, b, c, d, e, f) {
                    var h, i, j, k, l, m, n, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D;
                    if (o(c) && (c = 3), 0 === c) return new g;
                    if (a === -1 && b === -1) return this.getDefaultStyle(c);
                    if (h = this, n = h.Cq, w = "__spreadJSDefault", x = "__undefined", y = this.ITa, k = y.getStyle(a, b, c), l = y.getStyle(a, -1, c), m = y.getStyle(-1, b, c), k = k ? k : J, l = l ? l : J, m = m ? m : J, t = x, k && (t = k.charAt ? k : w + k.yn), u = x, l && (u = l.charAt ? l : w + l.yn), v = x, m && (v = m.charAt ? m : w + m.yn), s = n[c], p = s[t], z = h.tables, A = 3 === c && z && !f ? z.find(a, b) : J, A || (p || (p = s[t] = {}), q = p[u], q ? r = q[v] : q = p[u] = {}), r || (j = h.Dq(a, b, c, k, l, m, A, f)), 3 !== c || d || (r || (B = j.formatter, B && B.hasFormatedColor && B.hasFormatedColor() && !f && (C = {
                            value: J
                        }, B.format(h.getValue(a, b), C), C.value && (i = new g, i.foreColor = C.value))), D = h.conditionalFormats, D && (i = D.Eq(i, a, b, c))), i) i.Yo(r ? r : j), j = i;
                    else if (r) return e ? r : r.clone(!0);
                    return o(j.locked) && (j.locked = !0), j = j.Zo(h.Pm), i || A || (q[v] = j.clone(!0)), j
                },
                tq: function(a, b, c, d) {
                    var e, f, h, i, j, k, l, m, n, p, q, r, s, t, u;
                    if (0 === d) return K;
                    for (o(d) && (d = 3), e = this, j = e.ITa, l = !1, 3 === d && ("foreColor" === c && (n = e.tq(a, b, "formatter", d), n && n.hasFormatedColor && n.hasFormatedColor() && (p = {
                        value: J
                    }, n.format(e.getValue(a, b), p), p.value && (k = p.value, l = !0))), q = e.conditionalFormats, q && q.count() > 0 && (r = q.Fq(a, b, c, d), l = r.v5, k = r.Fi)), s = 0; !l && s <= 4;) if (0 === s ? f = j.getStyle(a, b, d) : 1 === s ? (t = e.tables, u = 3 === d && t ? t.find(a, b) : J, u && aa[c] && (f = u.Gq(a, b, c))) : f = 2 === s ? j.getStyle(a, -1, d) : 3 === s ? j.getStyle(-1, b, d) : e.getDefaultStyle(d), s++, f && f.charAt && typeof f === P && (f = e.Hq(f)), f) {
                        if ("font" === c && f.themeFont && !m && (m = f.themeFont), f[c] !== K) {
                            k = f[c], l = !0;
                            break
                        }
                        for (h = f.parentName; h && (i = e.Hq(h));) {
                            if (i[c] !== K) {
                                k = i[c], l = !0;
                                break
                            }
                            h = i.parentName
                        }
                    }
                    return "locked" === c ? !! o(k) || k : l || m ? ("foreColor" !== c && "backColor" !== c && "font" !== c && "borderLeft" !== c && "borderTop" !== c && "borderRight" !== c && "borderBottom" !== c || (f = new g, f[c] = k, "font" === c && m && (f.themeFont = m), f.Zo(e.Pm), k = f[c]), k) : K
                },
                getStyle: function(a, b, c) {
                    return this.Iq(a, b, c, !0)
                },
                Iq: function(a, b, c, d) {
                    var e, f, h, i;
                    if (o(c) && (c = 3), 0 !== c) {
                        if (e = this.ITa, f = e.getStyle(a, b, c), f instanceof g) return d && this.Jq(), f;
                        if (typeof f === P && (h = this.Hq(f), h !== J)) return i = new g, i.Yo(h), d && this.Jq(), i
                    }
                    return J
                },
                addNamedStyle: function(a) {
                    this.Kq(a), this.$p()
                },
                Kq: function(a) {
                    if (a) {
                        if (!a.name) throw Error(ba.Exp_EmptyNamedStyle);
                        var b = a.name.toUpperCase();
                        this.Lq[b] = a
                    }
                },
                getNamedStyle: function(a) {
                    return this.Mq(a, !0)
                },
                Mq: function(a, b) {
                    var c, d = this.Lq;
                    return d && a ? (a = a.toUpperCase(), c = d[a], c && b && this.Jq(), c) : J
                },
                Jq: function() {
                    this.Cq = [{}, {}, {}, {}]
                },
                removeNamedStyle: function(a) {
                    var b = this.Lq;
                    b && a && (a = a.toUpperCase(), E(b, a) && (delete b[a], this.Jq(), this.$p()))
                },
                getNamedStyles: function() {
                    var a = [],
                        b = this.Lq;
                    return b && B(b, function(b, c) {
                        a.push(c)
                    }), this.Jq(), a
                },
                setStyle: function(a, b, c, d) {
                    o(d) && (d = 3);
                    var e = this;
                    e.Nq(a, b, c, d), a === -1 && b === -1 && (e.Oq[d] = J), a !== -1 && b !== -1 || c && c.validator && c.validator.condition() && 4 === c.validator.condition().conType() && c.validator.condition().getExpected(this, a < 0 ? 0 : a, b < 0 ? 0 : b), e.Jq(), e.$p()
                },
                Pq: function(a, b, c, d) {
                    var e, f, h = this;
                    h.options.isProtected ? (e = h.getStyle(a, b, d), c ? (f = e ? e.locked : K, c.locked !== f && (c.locked = f), h.setStyle(a, b, c, d)) : e && (f = e.locked, f !== K && (c = new g, c.locked = f), h.setStyle(a, b, c, d))) : h.setStyle(a, b, c, d)
                },
                getStyleName: function(a, b, c) {
                    var d = this.Aj(a, b, c);
                    return d instanceof g ? d.name : d
                },
                setStyleName: function(a, b, c, d) {
                    typeof c === P && (this.Nq(a, b, c, d), this.$p())
                },
                Aj: function(a, b, c) {
                    o(c) && (c = 3);
                    var d;
                    return 0 !== c && (d = this.ITa.getStyle(a, b, c)), d || J
                },
                Nq: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m;
                    if (o(d) && (d = 3), 0 !== d) {
                        if (e = this, f = e.Aj(a, b, d), g = e.ITa, h = g.getRowCount(d), i = g.getColumnCount(d), a < -1 || a >= h || b < -1 || b >= i) return;
                        j = g.getStyle(a, b, d), g.do("setStyle", a, b, c, d), k = f && f.cellType && f.cellType.typeName || J, l = c && c.cellType && c.cellType.typeName || J, a === e.Jl && b === e.Kl && k !== l && v.Wl(e) && e.mm.Qq(), m = "[styleinfo]", a !== -1 && b !== -1 ? e.Bq(m, a, b, d, j, c) : a !== -1 && b === -1 ? e.kq(a, d, m, c, j) : a === -1 && b !== -1 && e.pq(b, d, m, c, j)
                    }
                },
                getDefaultStyle: function(a) {
                    var b, c, d, e, f, h, i;
                    return o(a) && (a = 3), b = this, c = b.Oq, (d = c[a]) ? d : 0 !== a ? (e = b.ITa, f = e.getStyle(-1, -1, a), typeof f === P && (f = b.Hq(f)), f || (f = new g, e.do("setStyle", -1, -1, f, a)), h = 1 === a || 2 === a, typeof f.hAlign === O && (f.hAlign = h ? 1 : 3), typeof f.vAlign === O && (f.vAlign = h ? 1 : 0), typeof f.imeMode === O && (f.imeMode = 1), f.font || typeof f.themeFont !== O || (f.themeFont = "Body"), c[a] = f, f) : (i = new g, i.locked = !0, c[a] = i, i)
                },
                setDefaultStyle: function(a, b) {
                    o(b) && (b = 3);
                    var c = this;
                    0 !== b && c.ITa.do("setStyle", -1, -1, a, b), c.Oq[b] = J, c.Jq(), c.$p()
                },
                Hq: function(a) {
                    var b, c = this.Mq(a, !1);
                    return c ? c : (b = this.parent, b ? b.Mq(a, !1) : J)
                },
                Dq: function(a, b, c, d, e, f, h, i, j) {
                    var k, l, m, n, p, q, r, s, t, u, v;
                    if (o(c) && (c = 3), k = this, l = new g, 0 !== c) {
                        if (p = !1, q = k.ITa, r = k.tables, s = q.getRowCount(c), t = q.getColumnCount(c), 0 <= a && a < s && 0 <= b && b < t && (u = d !== K ? d : q.getStyle(a, b, c), u && u.charAt && (u = k.Hq(u)), u)) for (l.Yo(u, !0, 10), p = !0, n = u.parentName; n && (m = k.Hq(n));) l.Yo(m, !1, 10), n = m.parentName;
                        if (i) return l;
                        if (h !== K || j || (h = 3 === c && r ? r.find(a, b) : J), h && !j && (h.Yo(a, b, l), p = !0), 0 <= a && a < s && (u = e !== K ? e : q.getStyle(a, -1, c), u && u.charAt && (u = k.Hq(u)), u)) for (l.Yo(u, !p, 30), p = !0, n = u.parentName; n && (m = k.Hq(n));) l.Yo(m, !1, 30), n = m.parentName;
                        if (0 <= b && b < t && (u = f !== K ? f : q.getStyle(-1, b, c), u && u.charAt && (u = k.Hq(u)), u)) for (l.Yo(u, !p, 40), p = !0, n = u.parentName; n && (m = k.Hq(n));) l.Yo(m, !1, 40), n = m.parentName
                    }
                    if (v = k.getDefaultStyle(c), v && v.charAt && (v = k.Hq(v)), v) for (l.Yo(v, !p, 50), n = v.parentName; n && (m = k.Hq(n));) l.Yo(m, !1, 50), n = m.parentName;
                    return l
                },
                getCellType: function(a, b, c) {
                    return this.tq(a, b, "cellType", c) || this.Al(c)
                },
                Al: function(a) {
                    var b, d;
                    return o(a) && (a = 3), b = c(54).CellTypes, d = this.Rq, d || (d = this.Rq = new b.Text), 3 === a ? d : 1 === a ? new b.ColumnHeader : 2 === a ? new b.RowHeader : 0 === a ? new b.Corner : d
                },
                setCellType: function(a, b, c, d) {
                    var e = this.Iq(a, b, d);
                    e || (e = new g), e.cellType = c, this.setStyle(a, b, e, d)
                },
                Sq: function(a, b, c, d, e) {
                    var f, g, h, i, j, k, l = this;
                    if (o(e) && (e = 3), f = l.ITa, f.do("clearSpan", a, b, c, d, e), g = n(a, b, c, d), h = l.Tq(g, e), i = l.Fia(h, e), f.do("addSpan", i, e), 3 === e) {
                        for (j = l.getSelections(), k = 0; k < j.length; k++) j[k].intersect(a, b, c, d) && (j[k] = j[k].union(g));
                        f.do("setSelections", j)
                    }
                    l.$p()
                },
                Fia: function(a, b) {
                    var c = this.getRowCount(b),
                        d = this.getColumnCount(b),
                        e = a.row,
                        f = a.col,
                        g = a.rowCount,
                        h = a.colCount;
                    return e + g > c && (g = c - e), f + h > d && (h = d - f), n(e, f, g, h)
                },
                addSpan: function(a, b, c, e, f) {
                    var g, h, i, j, k, l = this;
                    if ((1 !== c || 1 !== e) && 0 !== f && (g = l.getRowCount(f), h = l.getColumnCount(f), !(a >= g || b >= h || a < -1 || b < -1) && (i = !0, d.X3 && (3 === f || o(f)) && (i = l.Vq(a, b, c, e, !1)), i))) {
                        if (j = l.ITa, j.qu(a, b, c, e, f)) throw Error(ba().Exp_InvalidRange);
                        l.Sq(a, b, c, e, f), k = {
                            sheet: l,
                            row: a,
                            col: b,
                            rowCount: c,
                            colCount: e,
                            sheetArea: f,
                            changeType: "addSpan"
                        }, oa.ao(l, U, k), l.Wq("spanChanged", k)
                    }
                },
                removeSpan: function(a, b, c) {
                    var d, e, f, g = this;
                    o(c) && (c = 3), d = g.ITa, e = d.findSpan(a, b, c), e && e.row === a && e.col === b && d.do("removeSpan", e, c), f = {
                        sheet: g,
                        row: a,
                        col: b,
                        sheetArea: c,
                        changeType: "removeSpan"
                    }, oa.ao(g, U, f), g.Wq("spanChanged", f), g.$p()
                },
                getSpans: function(a, b) {
                    return 0 === b ? [] : this.ITa.getSpans(a, b)
                },
                getSpan: function(a, b, c) {
                    return 0 === c ? J : this.ITa.findSpan(a, b, c)
                },
                repaint: function(a) {
                    this.Xq <= 0 && this.yl.repaint(a)
                },
                Yq: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m = this,
                        n = ma(m),
                        o = la(m),
                        p = o ? m.Zq(o - 1) : m.$q(),
                        q = n ? m._q(n - 1) : m.ar();
                    if (b < m.qq && b >= p && m.rq(m.br(b + 1)), b > m.cr() && b <= m.dr()) {
                        for (c = 0, d = b, e = m.am(), f = m.ITa.findSpan(a, d), f && (d = f.col + f.colCount - 1); d > m.qq && (c += m.Tl(d), !(c > e.er));) d--;
                        g = m.Zq(d), m.rq(g)
                    }
                    if (a < m.lq && a >= q && m.mq(m.gr(a + 1)), a > m.hr() && a <= m.ir()) {
                        for (m.ar(), h = 0, i = a, j = m.ITa.findSpan(i, b), j && (i = j.row + j.rowCount - 1), k = m.am(); i > m.lq && (h += m.Sl(i), !(h > k.jr));) i--;
                        l = m._q(i), m.mq(l)
                    }
                    b === m.dr() && m.rq(m.lr())
                },
                hitTest: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z = this;
                    return z.am(), e = {
                        x: a,
                        y: b
                    }, f = z.rowOutlines, g = z.columnOutlines, f && (h = f.hitTest(z, a, b)), !h && g && (h = g.hitTest(z, a, b)), h ? e.outlineHitInfo = h : (i = z.nr(b), j = z.or(a), e.rowViewportIndex = i, e.colViewportIndex = j, e.row = z.pr(b, i), e.col = z.qr(a, j), i >= 0 && i <= 2 && j >= 0 && (k = z.rr(i, j, K, e.row, e.col), k && c !== !0 && (e.row = k.row, e.col = k.col)), e.hitTestType = z.sr(i, j), l = z.mm, m = l.Yia && l.Yia(e, a, b), m ? e.dragMergeInfo = m : (n = l.tr && l.tr(e, a, b), n ? e.dragInfo = n : (o = l.ur(e, a, b, 5), o ? e.resizeInfo = o : (p = l.vr ? l.vr(e, a, b) : J, p ? e.formulaRangeHitInfo = p : (q = z.ITa.Ky, r = q && q.hitTest(a, b), r ? e.commentHitInfo = r : (s = z.wr, t = s && s.hitTest(a, b, d), t ? e.floatingObjectHitInfo = t : (u = z.xr, v = u && u.hitTest(e, a, b), v || (w = z.tables, x = w && w.find(e.row, e.col), y = x && x.xr, v = y && y.hitTest(e, a, b)), v ? e.filterButtonHitInfo = v : e.cellTypeHitInfo = z.yr(e, a, b)))))))), e
                },
                getCellRect: function(a, b, c, d) {
                    var e, f, g, h, i, j, k = 3;
                    return c === -1 ? k = 1 : d === -1 && (k = 2), e = this, f = e.am(), c === -1 && d === -1 ? new q(f.zr, f.Ar, f.Br, f.Cr) : (g = e.Dr(), o(c) && (c = e.Er(a)), o(d) && (d = e.Fr(b)), h = e.Gr(c, k).findRow(a), i = e.Hr(d, k).findCol(b), j = e.Ir(c, d, k).findCell(a, b), j ? new q(j.x - g.x, j.y - g.y, j.width, j.height) : h && i ? new q(i.x - g.x, h.y - g.y, i.width, h.height) : new q)
                },
                Jr: function(a, b, c) {
                    var d = this,
                        e = d.mm,
                        f = !1;
                    o(a) || (d.Jl = a, f = !0), o(b) || (d.Kl = b, f = !0), !c && e && f && e.Qq()
                },
                Kr: function(a, b, c, d, e) {
                    var f, g = this,
                        h = g.Jl,
                        i = g.Kl,
                        j = g.ITa.getSpan(a, b);
                    g.Lr = j.rowCount, g.Mr = j.colCount, g.Xq <= 0 && (f = g.ITa.getSpan(h, i), g.yl.im(n(h, i, f.rowCount, f.colCount))), g.Nr = c, g.Pr = d, g.Jr(a, b, e), g.Qr = a, g.Rr = b
                },
                setActiveCell: function(a, b, c, d) {
                    this.Sr(a, b, c, d, 2)
                },
                Sr: function(a, b, c, d, e) {
                    var f, g, h = this,
                        i = ia(h),
                        j = ha(h);
                    a < 0 ? a = 0 : a >= i && (a = i - 1), b < 0 ? b = 0 : b >= j && (b = j - 1), h.Tr(), f = 2 === e ? v.Wl(h) : 1 === e, h.Kr(a, b, c, d, !f), g = h.ITa.getSpan(a, b), h.Ur(g.row, g.col, g.rowCount, g.colCount), h.$p()
                },
                getActiveRowIndex: function() {
                    return this.Jl
                },
                getActiveColumnIndex: function() {
                    return this.Kl
                },
                getRowResizable: function(a, b) {
                    return this.ITa.getResizable(!0, b, a)
                },
                setRowResizable: function(a, b, c) {
                    this.Vr(a, b, X, !0, c)
                },
                Vr: function(a, b, c, e, f) {
                    o(f) && (f = 3);
                    var g = this,
                        h = g.ITa,
                        i;
                    switch (c) {
                        case X:
                            i = h.getResizable(e, f, a), h.do("setResizable", e, f, a, b);
                            break;
                        case "pageBreak":
                            i = h.getPageBreak(e, f, a), h.do("setPageBreak", e, f, a, b);
                            break;
                        case W:
                            i = h.getVisible(e, f, a), h.do("setVisible", e, f, a, b), e && d.X3 && 3 === f && i !== b && g.recalcRows([a]);
                            break;
                        case R:
                            i = h.getSize(e, f, a), h.do("setSize", e, f, a, b), !d.X3 || 3 !== f || i === b || 0 !== i && 0 !== b || g.recalcRows([a]);
                            break;
                        case Q:
                            i = h.getSize(e, f, a), h.do("setSize", e, f, a, b)
                    }
                    e ? g.kq(a, f, c, b, i) : g.pq(a, f, c, b, i)
                },
                getColumnResizable: function(a, b) {
                    return this.ITa.getResizable(!1, b, a)
                },
                setColumnResizable: function(a, b, c) {
                    this.Vr(a, b, X, !1, c)
                },
                getRowHeight: function(a, b) {
                    var c, d, e, f, g, h, i, j = this;
                    if (o(b) && (b = 3), 3 === b || 2 === b) {
                        if (c = j.getRowCount(b), a < 0 || a >= c) return 0;
                        for (d = j.Wr, e = 0; e < d.length; e++) if (f = d[e], !f.Xr(a)) return 0
                    }
                    return g = j.defaults, h = g.rowHeight, 1 === b && (h = g.colHeaderRowHeight), i = j.ITa.getSize(!0, b, a), i || 0 === i ? i : N(h)
                },
                Yr: function(a, b) {
                    var c, d, e, f;
                    return o(b) && (b = 3), c = this, d = c.defaults, e = d.rowHeight, 1 === b && (e = d.colHeaderRowHeight), f = c.ITa.getActualSize(!0, b, a), f || 0 === f ? f : N(e)
                },
                setRowHeight: function(a, b, c) {
                    this.Vr(a, b, R, !0, c), this.jq = !0, this.$p()
                },
                getRowVisible: function(a, b, c) {
                    var d, e, f, g = this;
                    if (o(b) && (b = 3), !c && (3 === b || 2 === b)) for (d = g.Wr, e = 0; e < d.length; e++) if (f = d[e], !f.Xr(a)) return !1;
                    return this.ITa.getVisible(!0, b, a)
                },
                setRowVisible: function(a, b, c) {
                    var d = this;
                    d.Vr(a, b, W, !0, c), d.jq = !0, d.$p()
                },
                getColumnWidth: function(a, b) {
                    var c, d, e, f, g, h, i, j = this;
                    if (o(b) && (b = 3), c = j.defaults, d = c.colWidth, 2 === b && (d = c.rowHeaderColWidth), 3 === b || 1 === b) {
                        if (e = j.getColumnCount(b), a < 0 || a >= e) return 0;
                        for (f = j.Zr, g = 0; g < f.length; g++) if (h = f[g], !h.Xr(a)) return 0
                    }
                    return i = this.ITa.getSize(!1, b, a), i || 0 === i ? i : N(d)
                },
                $r: function(a, b) {
                    var c, d, e, f;
                    return o(b) && (b = 3), c = this, d = c.defaults, e = d.colWidth, 2 === b && (e = d.rowHeaderColWidth), f = c.ITa.getActualSize(!1, b, a), f || 0 === f ? f : N(e)
                },
                setColumnWidth: function(a, b, c) {
                    this.Vr(a, b, Q, !1, c), this.oq = !0, this.$p()
                },
                getColumnVisible: function(a, b) {
                    var c, d, e, f = this;
                    if (o(b) && (b = 3), 3 === b || 1 === b) for (c = f.Zr, d = 0; d < c.length; d++) if (e = c[d], !e.Xr(a)) return !1;
                    return f.ITa.getVisible(!1, b, a)
                },
                setColumnVisible: function(a, b, c) {
                    var d = this;
                    d.Vr(a, b, W, !1, c), d.oq = !0, d.$p()
                },
                zoom: function(a) {
                    var b = this;
                    return 0 === arguments.length ? b.ITa.getZoomFactor() : (a = H(a), !I(a) && isFinite(a) && (a > 4 ? a = 4 : a < .25 && (a = .25), b.XSa(a), b.oq = !0, b.jq = !0, b.$p()), b)
                },
                XSa: function(a) {
                    this.ITa.do("setZoomFactor", a), oa.ao(this, U, {
                        changeType: "zoomSheet"
                    })
                },
                invalidateLayout: function() {
                    var a = this,
                        b = a.mm;
                    a._r = J, a.as = {
                        colHeader: J,
                        viewport: J,
                        colFooter: J
                    }, a.bs = {
                        rowHeader: J,
                        viewport: J
                    }, oa.ao(a, U, {
                        changeType: "invalidateLayout"
                    }), b && b.cs && v.Wl(a) && b.cs(a.Jl, a.Kl), a.oq && (a.ds(), a.oq = !1), a.jq && (a.es(), a.jq = !1), a.$l = !0
                },
                $p: function() {
                    var a = this;
                    a.Xq <= 0 && (a.invalidateLayout(), a.repaint())
                },
                getViewportHeight: function(a) {
                    var b = this.am();
                    return 0 === a ? b.fs : 1 === a ? b.jr : 2 === a ? b.gs : 0
                },
                getViewportWidth: function(a) {
                    var b = this.am();
                    return 0 === a ? b.hs : 1 === a ? b.er : 2 === a ? b.js : 0
                },
                getViewportTopRow: function(a) {
                    var b = this,
                        c = ma(b);
                    return 0 === a ? 0 : 1 === a ? M(c, b.lq) : 2 === a ? M(c, ia(b) - ka(b)) : -1
                },
                getViewportBottomRow: function(a) {
                    var b, c, d, e, f, g, h = this;
                    if (2 === a) return ia(h) - 1;
                    for (b = h.getViewportTopRow(a), c = h.getViewportHeight(a), d = 0, e = 0, f = ia(h) - ka(h), 0 === a && (f = L(ma(h), f)), g = b; g < f && d < c; g++, e++) d += h.Sl(g);
                    return b + e - 1
                },
                getViewportLeftColumn: function(a) {
                    var b = this,
                        c = la(b);
                    return 0 === a ? 0 : 1 === a ? M(c, b.qq) : 2 === a ? M(c, ha(b) - ja(b)) : -1
                },
                getViewportRightColumn: function(a) {
                    var b, c, d, e, f, g, h = this;
                    if (2 === a) return ha(h) - 1;
                    for (b = h.getViewportLeftColumn(a), c = h.getViewportWidth(a), d = 0, e = 0, f = ha(h) - ja(h), 0 === a && (f = L(la(h), f)), g = b; g < f && e < c; g++, d++) e += h.Tl(g);
                    return b + d - 1
                },
                showCell: function(a, b, c, d) {
                    var e, f, g, h, i, j, k = this;
                    a < 0 || a >= ia(k) || b < 0 || b >= ha(k) || (e = k.Fr(b), f = k.Er(a), g = k.getViewportTopRow(f), h = k.getViewportLeftColumn(e), 1 === e && (b = k.ks(b, d)), 1 === f && (a = k.ms(a, c)), i = !1, 1 === f && a !== g && (a = L(a, k.ns()), k.lq = a, k.os(), i = !0), 1 === e && b !== h && (b = L(b, k.ps()), k.qq = b, k.qs(), i = !0), i && (j = k.parent, j && !j.options.scrollbarShowMax && (k.oq = !0, k.jq = !0), k.$p()))
                },
                Er: function(a) {
                    var b = this,
                        c = 1;
                    return a < ma(b) ? c = 0 : a >= ia(b) - ka(b) && (c = 2), c
                },
                Fr: function(a) {
                    var b = this,
                        c = 1;
                    return a < la(b) ? c = 0 : a >= ha(b) - ja(b) && (c = 2), c
                },
                ks: function(a, b) {
                    var c = this,
                        d = c.ss,
                        e = c.Fr(a),
                        f = c.getViewportLeftColumn(e),
                        g;
                    if (0 !== b) if (1 === b) for (g = N((c.getViewportWidth(e) - d._m(a)) / 2); 0 < a && (g -= d._m(a - 1), !(g < 0)); a--);
                    else if (2 === b) for (g = c.getViewportWidth(e) - d._m(a); 0 < a && (g -= d._m(a - 1), !(g < 0)); a--);
                    else if (3 === b && a >= f) for (g = c.getViewportWidth(e) - d._m(a); f < a && (g -= d._m(a - 1), !(g < 0)); a--);
                    return a
                },
                ms: function(a, b) {
                    var c = this,
                        d = c.ss,
                        e = c.Er(a),
                        f = c.getViewportTopRow(e),
                        g;
                    if (0 !== b) if (1 === b) for (g = N((c.getViewportHeight(e) - d.Sl(a)) / 2); 0 < a && (g -= d.Sl(a - 1), !(g < 0)); a--);
                    else if (2 === b) for (g = c.getViewportHeight(e) - d.Sl(a); 0 < a && (g -= d.Sl(a - 1), !(g < 0)); a--);
                    else if (3 === b && !(a < f || f === -1)) for (g = c.getViewportHeight(e) - d.Sl(a); f < a && (g -= d.Sl(a - 1), !(g < 0)); a--);
                    return a
                },
                showColumn: function(a, b) {
                    this.showCell(this.lq, a, 0, b)
                },
                showRow: function(a, b) {
                    this.showCell(a, this.qq, b, 0)
                },
                suspendEvent: function() {
                    this.jm++
                },
                resumeEvent: function() {
                    this.jm--, this.jm < 0 && (this.jm = 0)
                },
                isEventSuspended: function() {
                    return this.jm > 0
                },
                currentTheme: function(a) {
                    var b = this;
                    return 0 === arguments.length ? (b.Pm || b.ts(), b.Pm) : (typeof a === P && (a = x[a] ? x[a] : new y(a)), b.Pm = a, b.yl.us(), b.Jq(), b.$p(), b)
                },
                P3: function() {
                    var a = w.Lm(""),
                        b = G(a.zIndex),
                        c = x.Office2007;
                    return b > 2007 && (c = x.Office), c
                },
                ts: function() {
                    this.Pm = this.P3(), this.Jq()
                },
                reset: function() {
                    var a = this;
                    a.vs(), a.$p()
                },
                vs: function() {
                    var a, b, c = this;
                    c.Pp(), c.Nr = 0, c.Pr = 0, c.T3(), c._r = J, c.as = {
                        colHeader: J,
                        viewport: J,
                        colFooter: J
                    }, c.bs = {
                        rowHeader: J,
                        viewport: J
                    }, c.lq = 0, c.qq = 0, c.frozenRowCount(0), c.frozenColumnCount(0), c.frozenTrailingRowCount(0), c.frozenTrailingColumnCount(0), this.mm = new d.iI(this), a = c.parent, a && (b = a.getActiveSheet(), b && c.name() === b.name() && c.ws(a.xs)), c.Cq = [{}, {}, {}, {}], c.ss = new p(c), c.Oq = {}, d.X3 && c.resetCalc(), c.ITa = new h.lUa(c, oa.Rp, oa.Sp, oa.Vp, oa.Tp, c.name()), c.defaults = c.ITa.defaults, c.ts(), c.Lq = {}, c.oq = !0, c.jq = !0, c.parent && c.parent.xD ? c.Xq = c.parent.xD : c.Xq = 0, c.parent && c.parent.jm ? c.jm = c.parent.jm : c.jm = 0, c.gga = 0, c.Js = !1, c.Ks = J, c.Wr = [], c.Zr = [], oa.ao(c, "init")
                },
                T3: function() {
                    var a = this;
                    B(b, function(b, c) {
                        if (!o(c)) {
                            var d = c;
                            "gridline" === b ? d = {
                                color: w.Lm("gc-gridlineColor").borderTopColor,
                                showVerticalGridline: !0,
                                showHorizontalGridline: !0
                            } : "object" == typeof d && (d = i.extend({}, c)), a.options[b] = d
                        }
                    })
                },
                Ls: function(a) {
                    var b, c = this;
                    for (c.parent = a, b = 0; b < a.xD; b++) c.suspendPaint();
                    c.jm = a.jm, oa.ao(c, "attach", a)
                },
                Y3: function(a, b, c, e, f, g, h) {
                    var i = this;
                    return !h && i.options.isProtected && i.ou(n(a, b, c, e)) ? (f && i.Os(1, f), !1) : !(d.X3 && !i.Vq(a, b, c, e)) || (g && i.Os(1, g), !1)
                },
                clear: function(a, b, c, d, e, f) {
                    0 !== e && this.cg(a, b, c, d, e, f)
                },
                cg: function(a, b, c, e, f, g, h, i) {
                    var j, k, l, m, n, p, q, r, s, t, u, v, w, x, y, z, A = this;
                    try {
                        if (j = d.X3, j && A.suspendCalcService(), A.suspendPaint(), k = A.defaults, q = 3, o(f) || f === q) {
                            if (d.X3 && !A.Vq(a, b, c, e)) return !1;
                            if (1 & g && A.getDataSource && A.getDataSource()) {
                                for (A.suspendEvent(), l = a; l < a + c; l++) if (!(h && A.Ps && A.Ps(l))) for (m = b; m < b + e; m++) A.setValue(l, m, J, f);
                                A.resumeEvent()
                            }
                        }
                        for (r = {
                            changeType: "clear",
                            row: a,
                            col: b,
                            rowCount: c,
                            colCount: e,
                            sheetArea: f,
                            type: g,
                            ignoreTable: i
                        }, oa.ao(A, U, r), s = A.ITa, t = j && A.Bj(), l = a === -1 ? 0 : a, u = a === -1 ? s.getRowCount(f) : c, m = b === -1 ? 0 : b, v = b === -1 ? s.getColumnCount(f) : e, w = [], x = l; x < u; x++) h && A.Ps && A.Ps(x) && w.push(x);
                        if (s.do("clear", l, m, u, v, g, w, f), t && 1 & g && (t.Sg(l, m, u, v), t.clear(l, m, u, v, s.dUa())), 8 & g && !(a >= 0 && b >= 0)) if (b >= 0) for (p = 0; p < v; p++) A.setTag(-1, m + p, J, f);
                        else if (a >= 0) for (n = 0; n < u; n++) h && A.Ps && A.Ps(l + n) || A.setTag(l + n, -1, J, f);
                        else A.setTag(-1, -1, J, f);
                        if (2 & g && !(a >= 0 && b >= 0)) if (b >= 0) for (p = 0; p < v; p++) A.setStyle(-1, m + p, J, f);
                        else if (a >= 0) for (n = 0; n < u; n++) h && A.Ps && A.Ps(l + n) || A.setStyle(l + n, -1, J, f);
                        else A.setStyle(-1, -1, J, f);
                        if (32 & g) {
                            if (a < 0) for (p = 0; p < v; p++) A.setColumnVisible(m + p, !0, f), A.setColumnResizable(m + p, !0, f), A.setColumnWidth(m + p, 2 === f ? k.rowHeaderColWidth : k.colWidth, f);
                            if (b < 0) for (n = 0; n < u; n++) h && A.Ps && A.Ps(l + n) || (A.setRowVisible(l + n, !0, f), A.setRowResizable(l + n, !0, f), A.setRowHeight(l + n, 1 === f ? k.colHeaderRowHeight : k.rowHeight, f))
                        }
                        for ((o(f) || f === q) && j && 1 === (1 & g) && (y = A.Bj(), y && y.Ag(a, b, c, e)), z = [], n = 0; n < u; n++) for (p = 0; p < v; p++) z.push({
                            row: l + n,
                            col: m + p
                        });
                        A.Bu(a, b, u, v, z, 2, f)
                    } finally {
                        A.resumePaint(), j && A.resumeCalcService(!1)
                    }
                },
                _p: function() {
                    var a, b, c = this,
                        d = c.options,
                        e = d.protectionOptions;
                    d.isProtected && e && (e.allowSelectLockedCells === !1 || e.allowSelectUnlockedCells === !1) && (a = c.Jl, b = c.Kl, c.Qs(a, b) || (c.Tr(), c.Rs(a, b, !0), c.Ss(4, a, b)))
                },
                setArray: function(a, b, c, e) {
                    var f, g, h, j, k = this;
                    if (e = d.X3 && e, f = ia(k), g = ha(k), c && 0 <= a && a < f && 0 <= b && b < g) {
                        d.X3 && k.suspendCalcService(), k.suspendPaint();
                        try {
                            B(c, function(c, d) {
                                i.isArray(d) ? B(d, function(d, i) {
                                    h = a + c, j = b + d, h < f && j < g && (e ? k.setFormula(h, j, i) : k.setValue(h, j, i, 3, !0))
                                }) : (h = a + c, j = b, h < f && j < g && (e ? k.setFormula(h, j, d) : k.setValue(h, j, d, 3, !0)))
                            })
                        } finally {
                            d.X3 && k.resumeCalcService(), k.resumePaint()
                        }
                    }
                },
                getArray: function(a, b, c, e, f) {
                    var g, h, i = this,
                        j = [],
                        k = ia(i),
                        l = ha(i);
                    if (f = f && d.X3, 0 <= a && a < k && 0 <= b && b < l) for (a + c > k && (c = k - a), b + e > l && (e = l - b), g = 0; g < c; g++) for (j[g] = [], h = 0; h < e; h++) f ? j[g][h] = i.getFormula(a + g, b + h) : j[g][h] = i.getValue(a + g, b + h);
                    return j
                },
                setTag: function(a, b, c, d) {
                    var e, f, g, h, i, j;
                    if (o(d) && (d = 3), e = this, 0 !== d) {
                        if (f = e.ITa, g = f.getRowCount(d), h = f.getColumnCount(d), a < -1 || a >= g || b < -1 || b >= h) return;
                        c = da(c), j = e.jm > 0, j || (i = e.getTag(a, b, d)), f.do("setValueForKey", a, b, T, c, d), j || i === c || (a !== -1 && b !== -1 ? e.Bq(T, a, b, d, i, c) : a !== -1 && b === -1 ? e.kq(a, d, T, c, i) : a === -1 && b !== -1 && e.pq(b, d, T, c, i))
                    }
                },
                getTag: function(a, b, c) {
                    var d, e = this;
                    return o(c) && (c = 3), 0 !== c ? (d = e.ITa.getValueForKey(a, b, T, c), ca(d)) : J
                },
                tag: function(a) {
                    var b, c = this;
                    return 0 === arguments.length ? (b = c.ITa.getValueForKey(-1, -1, T, 3), ca(b)) : (c.ITa.do("setValueForKey", -1, -1, T, da(a), 3), c)
                },
                getParent: function() {
                    return this.parent
                },
                getDirtyRows: function() {
                    return ea(this, !0)
                },
                getInsertRows: function() {
                    return ea(this, !1)
                },
                getDeletedRows: function() {
                    var a = [],
                        b = this.Ts;
                    return b && B(b, function(b, c) {
                        c && !i.isFunction(c) && a.push({
                            row: c.row,
                            originalItem: c.data
                        })
                    }), a
                },
                hasPendingChanges: function() {
                    var a, b = this,
                        c = b.Ts;
                    return !!(c && c.length > 0) || (a = b.ITa.hUa(), !C(a))
                },
                clearPendingChanges: function() {
                    this.ITa.iUa(), this.Ts = []
                },
                getDirtyCells: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l = this;
                    if (o(a) && (a = -1), o(b) && (b = -1), (o(c) || c <= 0) && (c = 1), (o(d) || d <= 0) && (d = 1), e = [], f = l.ITa.hUa(), !C(f)) {
                        if (g = [], a >= 0) for (h = a; h < a + c; h++) g.push(h);
                        else for (i in f) E(f, i) && g.push(G(i));
                        B(g, function(a, c) {
                            var g, h;
                            if (j = f[c], j && "e" === j.rs) if (b >= 0) for (g = b; g < b + d; g++) k = j[g], k && e.push(pa(l, c, g, k.oldValue));
                            else for (h in j) I(h) || (k = j[h], k && e.push(pa(l, c, G(h), k.oldValue)))
                        })
                    }
                    return e
                },
                suspendDirty: function() {
                    this.gga++, this.ITa.jUa()
                },
                resumeDirty: function() {
                    var a = this;
                    a.gga--, a.gga < 0 && (a.gga = 0), a.ITa.kUa()
                },
                isDirtySuspended: function() {
                    return this.gga > 0
                },
                ad: function(a) {
                    this.Us(new q(0, 0, 0, 0)), this.vs(), this.cq(a)
                },
                Vs: function() {
                    var a, b = this,
                        c = i(b.Ws()).offset();
                    return c ? (c.top += F.body.clientTop || 0, c.left += F.body.clientLeft || 0) : c = {
                        top: 0,
                        left: 0
                    }, a = b.Ws().canvasOffset, a && (c = a), c
                },
                ws: function(a) {
                    var b, c, d;
                    a && (b = this, b.Js = !1, c = b.Xs, c && b.no(!1), d = m("canvas"), i(d).attr("id", a.getAttribute("id") + "_vp").html(ba().NeedCanvasSupport).appendTo(a), l.Kn(d, J, b), b.Xs = d, b.fq(), b.repaint(), b.parent && b.parent.Ys(), oa.ao(b, "setHost", i(d)))
                },
                fq: function() {
                    var a, b, c, d, e, f, g, h, j = this,
                        k = j.Ws();
                    k && k.parentNode && (a = getComputedStyle(k.parentNode), b = a.width, c = a.height, d = b.indexOf("px"), d > 0 && (b = b.substring(0, d)), d = c.indexOf("px"), d > 0 && (c = c.substring(0, d)), e = G(b), f = G(c), I(e) && (e = i(k.parentNode).width()), I(f) && (f = i(k.parentNode).height()), 0 !== e && 0 !== f && (g = M(e, 0), h = M(f, 0), k.style.display = "none", k.style.display = "", k.width = g, k.height = h, k.style.width = g + "px", k.style.height = h + "px", g = k.clientWidth || k.width, h = k.clientHeight || k.height, j.Zs.width = g, j.Zs.height = h, l.Pn(k, g, h), j.invalidateLayout()))
                },
                no: function(a) {
                    var b, c, d, e = this;
                    l.Sn(e), e.isEditing && e.isEditing() && e.Yoa(), oa.ao(e, "dispose", a), b = e.Xs, b && (c = b.parentNode, c && c.removeChild(b), e.Xs = J), e.$s(), a !== !1 && (e.Js = !0, d = e.at, d && d.no(), e.parent = J, e.ITa = J, e.ss = J, e.bt && (e.bt.no(), e.bt = J), v.Wl(e) && v.Zl(J, !0))
                },
                $s: function() {
                    var a = this.dt;
                    a && (i(a).remove(), this.dt = K)
                },
                vq: function(a, b, c, d) {
                    o(d) && (d = 3);
                    var e = a.getValue(b, c, d);
                    return e = ca(e)
                },
                Tq: function(a, b) {
                    var c, d, e, f, g, h;
                    return o(b) && (b = 3), c = n(-1, -1, -1, -1), a && (d = this, e = a.row, f = a.col, g = a.rowCount, h = a.colCount, f === -1 && (f = 0, h = d.getColumnCount(b)), e === -1 && (e = 0, g = d.getRowCount(b)), c.col = f, c.row = e, c.colCount = h, c.rowCount = g), c
                },
                getRangeRect: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m, n, o, p, r, s, t, u = new q((-1), (-1), (-1), (-1)),
                        v = this,
                        w = v.am();
                    if (0 === w.width || 0 === w.height) return u;
                    if (d = v.it(b), e = v.jt(a), !d || 0 === d.length || !e || 0 === e.length) return u;
                    f = v.Tq(c), g = v.ss, h = f.row, i = f.row + f.rowCount - 1, j = f.col, k = f.col + f.colCount - 1, l = ma(v), m = ia(v) - ka(v) - 1, n = la(v), o = ha(v) - ja(v) - 1, p = d[0].col, r = d[d.length - 1].col, s = e[0].row, t = e[e.length - 1].row;

                    function x(a, b) {
                        for (; a > b;) if (a--, v.getColumnVisible(a)) return a;
                        return a
                    }
                    function y(a, b) {
                        for (; a < b;) if (a++, v.getColumnVisible(a)) return a;
                        return a
                    }
                    function z(a, b) {
                        for (; a > b;) if (a--, v.getRowVisible(a)) return a;
                        return a
                    }
                    function A(a, b) {
                        for (; a < b;) if (a++, v.getRowVisible(a)) return a;
                        return a
                    }
                    return j < p && (j = x(p, j)), k > r && (k = y(r, k)), h < s && (h = z(s, h)), i > t && (i = A(t, i)), k < j || i < h ? u : (0 === b ? j < n && (u.x = w.kt + fa(g, 0, j - 1), u.width = fa(g, j, k)) : 1 === b ? j <= o && k >= n && (j < p ? u.x = d[0].x - fa(g, j, p - 1) : u.x = d[0].x + fa(g, p, j - 1), u.width = fa(g, j, k)) : 2 === b && k > o && (j < p ? u.x = w.lt - fa(g, j, p - 1) : u.x = w.lt + fa(g, p, j - 1), u.width = fa(g, j, k)), 0 === a ? h < l && (u.y = w.nt + ga(g, 0, h - 1), u.height = ga(g, h, i)) : 1 === a ? h <= m && i >= l && (h < s ? u.y = e[0].y - ga(g, h, s - 1) : u.y = e[0].y + ga(g, s, h - 1), u.height = ga(g, h, i)) : 2 === a && i > m && (h < s ? u.y = w.ot - ga(g, h, s - 1) : u.y = w.ot + ga(g, s, h - 1), u.height = ga(g, h, i)), u)
                },
                cm: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p = this,
                        r = new q((-1), (-1), (-1), (-1)),
                        s = p.am();
                    if (0 === s.width || 0 === s.height) return r;
                    if (b = p.Tq(a), c = la(p), d = ma(p), e = ja(p), f = ka(p), g = p.ss, h = b.row, i = b.row + b.rowCount - 1, j = b.col, k = b.col + b.colCount - 1, l = ia(p), m = ha(p), j < c) r.x = s.kt + fa(g, 0, j - 1), r.width = fa(g, j, L(k, c - 1)), c <= k && k < m - e ? (n = p.it(1), n && n.length > 0 && (r.width += fa(g, n[0].col, L(k, n[n.length - 1].col)))) : k >= m - e && (n = p.it(2), n && n.length > 0 && (r.width = n[0].x - r.x, r.width += fa(g, m - e, L(k, m - 1))));
                    else if (j < m - e) {
                        if (n = p.it(1), !n || 0 === n.length || j > n[n.length - 1].col || k < n[0].col) return r;
                        r.x = s.pt + fa(g, n[0].col, j - 1), c <= k && k < m - e ? r.width = fa(g, M(j, n[0].col), L(k, n[n.length - 1].col)) : k >= m - e && (n = p.it(2), n && n.length > 0 && (r.width = n[0].x - r.x, r.width += fa(g, m - e, L(k, m - 1))))
                    } else j < m && (n = p.it(2), n && n.length > 0 && (r.x = s.lt + fa(g, n[0].col, j - 1), r.width = fa(g, j, L(k, m - 1))));
                    if (h < d) r.y = s.nt + ga(g, 0, h - 1), r.height = ga(g, h, L(i, d - 1)), d <= i && i < l - f ? (o = p.jt(1), o && o.length > 0 && (r.height += ga(g, o[0].row, L(i, o[o.length - 1].row)))) : i >= l - f && (o = p.jt(2), o && o.length > 0 && (r.height = o[0].y - r.y, r.height += ga(g, l - f, L(i, l - 1))));
                    else if (h < l - f) {
                        if (o = p.jt(1), !o || 0 === o.length || h > o[o.length - 1].row || i < o[0].row) return r;
                        r.y = s.qt + ga(g, o[0].row, h - 1), d <= i && i < l - f ? r.height = ga(g, M(h, o[0].row), L(i, o[o.length - 1].row)) : i >= l - f && (o = p.jt(2), o && o.length > 0 && (r.height = o[0].y - r.y, r.height += ga(g, l - f, L(i, l - 1))))
                    } else h < l && (o = p.jt(2), o && o.length > 0 && (r.y = s.ot + ga(g, o[0].row, h - 1), r.height += ga(g, h, L(i, l - 1))));
                    return r
                },
                Ws: function() {
                    return this.Xs
                },
                rt: function(a, b) {
                    return this.dp(a, b) + 1
                },
                dp: function(a, b) {
                    var c = "",
                        d = this.yl;
                    return c = b ? b : d.Cl(d.Bl()), e.Vn.Xn(a, c)
                },
                or: function(a) {
                    var b = this.am(),
                        c = J;
                    return b.zr < a && a < b.zr + b.Br ? c = -1 : b.kt < a && a < b.kt + b.hs ? c = 0 : b.pt < a && a < b.pt + b.er ? c = 1 : b.lt < a && a < b.lt + b.js && (c = 2), c
                },
                nr: function(a) {
                    var b = this.am(),
                        c = J;
                    return b.Ar < a && a < b.Ar + b.Cr ? c = -1 : b.nt < a && a < b.nt + b.fs ? c = 0 : b.qt < a && a < b.qt + b.jr ? c = 1 : b.ot < a && a < b.ot + b.gs && (c = 2), c
                },
                pr: function(a, b) {
                    var c, d;
                    if (c = b === -1 ? this.ut() : this.jt(b), c && (d = c.findY(a))) return d.row
                },
                qr: function(a, b) {
                    var c, d;
                    if (c = b === -1 ? this.vt() : this.it(b), c && (d = c.findX(a))) return d.col
                },
                wt: function(a, b) {
                    var c = this;
                    return c.Jl <= a && a < c.Jl + c.Lr && c.Kl <= b && b < c.Kl + c.Mr
                },
                sp: function(a) {
                    return this.ITa.sp(a)
                },
                tp: function(a) {
                    return this.ITa.tp(a)
                },
                vp: function(a, b, c, d) {
                    var e = this,
                        f = ia(e),
                        g = ha(e);
                    return this.ITa.vp(a, b, c, f, g, d)
                },
                wp: function(a, b, c) {
                    var d = this,
                        e = ia(d),
                        f = ha(d);
                    return this.ITa.wp(a, b, c, e, f)
                },
                xt: function(a, b, c) {
                    var d, e, f, g, h, i, j = this,
                        k = j.yt;
                    if (k && !k.resizeInfo && !o(c)) {
                        if (g = k.hitTestType, h = k.row, i = k.col, 1 === c) return d = !1, e = j.ITa.findSpan(h, i, 1), e && (d = e.contains(a, b, 1, 1)), f = a === h && b === i || d, g === c && f;
                        if (2 === c) return d = !1, e = j.ITa.findSpan(h, i, 2), e && (d = e.contains(a, b, 1, 1)), f = a === h && b === i || d, g === c && f;
                        if (3 === c) return g === c && a === h && b === i;
                        if (0 === c) return g === c
                    }
                    return !1
                },
                xq: function(a) {
                    for (var b, c = "A", d = c.charCodeAt(0), e = ""; a > 0; a = parseInt((a - 1) / 26), 10) b = (a - 1) % 26, e = String.fromCharCode(d + b) + e;
                    return e
                },
                sr: function(a, b) {
                    return a >= 0 && a <= 2 && b >= 0 ? 3 : a >= 0 && a <= 2 && b < 0 ? 2 : a < 0 && b >= 0 ? 1 : a < 0 && b < 0 ? 0 : J
                },
                zt: function(a) {
                    var b = this.mm;
                    b && b.zt(a)
                },
                zo: function() {
                    var a, b = this,
                        c = b.parent,
                        d = c && c.qo;
                    return d || (a = b.Xs, d = a && a.parentElement), d
                },
                Pp: function() {
                    var a = this,
                        b = 0,
                        c = 0,
                        d = 1,
                        e = 1;
                    a.Jl = b, a.Kl = c, a.Lr = d, a.Mr = e, a.Qr = b, a.Rr = c
                },
                Sl: function(a, b) {
                    var c = this,
                        d = c.getRowHeight(a, b),
                        e = c.zoom();
                    return 1 !== e && (d *= e), N(d)
                },
                Tl: function(a, b) {
                    var c = this,
                        d = c.getColumnWidth(a, b),
                        e = c.zoom();
                    return 1 !== e && (d *= e), N(d)
                },
                At: function() {
                    var a, b, c, d, e, f, g, h, i, j = this,
                        k = j.Dr(),
                        l = j.options,
                        m = l.borderWidth,
                        n = new q(k.x + m, k.y + m, M(0, k.width - 2 * m), M(0, k.height - 2 * m)),
                        o = n.width,
                        p = n.height,
                        r = {
                            x: n.x,
                            y: n.y,
                            width: n.width,
                            height: n.height,
                            Br: 0,
                            Cr: 0,
                            hs: 0,
                            fs: 0,
                            js: 0,
                            gs: 0,
                            Bt: 0,
                            Ct: 0,
                            Dt: 0,
                            Et: 0,
                            kt: 0,
                            nt: 0,
                            lt: 0,
                            ot: 0,
                            pt: 0,
                            qt: 0,
                            jr: 0,
                            er: 0,
                            zr: 0,
                            Ar: 0,
                            em: function() {
                                var a = this;
                                return new q(a.x, a.y, a.Br, a.Cr)
                            },
                            gm: function(a) {
                                var b = this;
                                return 0 === a ? new q(b.kt, b.y, b.hs, b.Cr) : 1 === a ? new q(b.pt, b.y, b.er, b.Cr) : 2 === a ? new q(b.lt, b.y, b.js, b.Cr) : J
                            },
                            fm: function(a) {
                                var b = this;
                                return 0 === a ? new q(b.x, b.nt, b.Br, b.fs) : 1 === a ? new q(b.x, b.qt, b.Br, b.jr) : 2 === a ? new q(b.x, b.ot, b.Br, b.gs) : J
                            },
                            Ft: function(a, b) {
                                var c = this;
                                if (0 === a) {
                                    if (0 === b) return new q(c.kt, c.nt, c.hs, c.fs);
                                    if (1 === b) return new q(c.pt, c.nt, c.er, c.fs);
                                    if (2 === b) return new q(c.lt, c.nt, c.js, c.fs)
                                } else if (1 === a) {
                                    if (0 === b) return new q(c.kt, c.qt, c.hs, c.jr);
                                    if (1 === b) return new q(c.pt, c.qt, c.er, c.jr);
                                    if (2 === b) return new q(c.lt, c.qt, c.js, c.jr)
                                } else if (2 === a) {
                                    if (0 === b) return new q(c.kt, c.ot, c.hs, c.gs);
                                    if (1 === b) return new q(c.pt, c.ot, c.er, c.gs);
                                    if (2 === b) return new q(c.lt, c.ot, c.js, c.gs)
                                }
                                return J
                            }
                        };
                    if (j.Gt && (a = j.Gt(), r.x += a.width, r.y += a.height, o -= a.width, p -= a.height), l.rowHeaderVisible) for (e = j.getColumnCount(2), d = 0; d < e; d++) r.Br += j.Tl(d, 2);
                    if (l.colHeaderVisible) for (c = j.getRowCount(1), b = 0; b < c; b++) r.Cr += j.Sl(b, 1);
                    if (f = la(j), f > 0) for (e = ha(j), d = 0; d < f && d < e; d++) j.getColumnVisible(d) && (r.hs += j.Tl(d));
                    if (g = ma(j), g > 0) for (c = ia(j), b = 0; b < g && b < c; b++) j.getRowVisible(b) && (r.fs += j.Sl(b));
                    if (h = ja(j), h > 0) for (e = ha(j), d = M(f, e - h); d < e; d++) r.js += j.Tl(d);
                    if (i = ka(j), i > 0) for (c = ia(j), b = M(g, c - i); b < c; b++) r.gs += j.Sl(b);
                    return o -= r.Br, p -= r.Cr, o -= r.hs, p -= r.fs, o -= r.js, p -= r.gs, p -= r.Bt, r.er = M(0, o), r.jr = M(0, p), r.zr = r.x, r.Ar = r.y, r.kt = r.zr + r.Br, r.nt = r.Ar + r.Cr, r.pt = r.kt + r.hs, r.qt = r.nt + r.fs, r.lt = r.pt + r.er, r.ot = r.qt + r.jr, r.Dt = r.zr, r.Et = r.y + r.height - r.Bt, r
                },
                am: function() {
                    var a = this;
                    return a._r || (a._r = a.At()), a._r
                },
                Hr: function(a, b) {
                    return o(b) || 3 === b || 1 === b ? this.it(a) : 2 === b ? this.vt() : J
                },
                vt: function() {
                    var a = this;
                    return a.bs.rowHeader || (a.bs.rowHeader = a.Ht()), a.bs.rowHeader
                },
                it: function(a) {
                    var b = this;
                    return b.bs.viewport || (b.bs.viewport = {}), b.bs.viewport[a] || (b.bs.viewport[a] = b.It(a)), b.bs.viewport[a]
                },
                Ht: function() {
                    var a, b, c = new A,
                        d = this.am(),
                        e = d.zr,
                        f = this.getColumnCount(2);
                    for (b = 0; b < f; b++) a = this.Tl(b, 2), c.push(new z((-1), b, e, (-1), a, (-1))), e += a;
                    return c
                },
                It: function(a) {
                    var b, c, d, e, f, g = this,
                        h = new A,
                        i = g.am(),
                        j = ha(g),
                        k = g.ss,
                        l = la(g),
                        m = ja(g);
                    if (0 === a) for (c = i.kt, j = L(l, j), b = 0; b < j; b++) d = k._m(b), h.push(new z((-1), b, c, (-1), d, (-1))), c += d;
                    else if (1 === a) for (c = i.pt, j -= m, e = i.er, f = M(l, g.qq), b = f; e > 0 && b < j; b++) d = k._m(b), h.push(new z((-1), b, c, (-1), d, (-1))), c += d, e -= d;
                    else if (2 === a) for (c = i.lt, b = M(l, j - m); b < j; b++) d = k._m(b), h.push(new z((-1), b, c, (-1), d, (-1))), c += d;
                    return h
                },
                Gr: function(a, b) {
                    return o(b) || 3 === b || 2 === b ? this.jt(a) : 1 === b ? this.ut() : J
                },
                Jt: function(a) {
                    var b, c, d = new A;
                    for (b = 0; b < 3; b++) c = this.Gr(b, a), c && c.length > 0 && (d = i.merge(d, c));
                    return d
                },
                Kt: function(a) {
                    var b, c, d = new A;
                    for (b = 0; b < 3; b++) c = this.Hr(b, a), c && c.length > 0 && (d = i.merge(d, c));
                    return d
                },
                ut: function() {
                    var a = this;
                    return a.as.colHeader || (a.as.colHeader = a.Lt()), a.as.colHeader
                },
                jt: function(a) {
                    var b = this;
                    return b.as.viewport || (b.as.viewport = {}), b.as.viewport[a] || (b.as.viewport[a] = b.Mt(a)), b.as.viewport[a]
                },
                Lt: function() {
                    var a, b, c = new A,
                        d = this.am(),
                        e = d.Ar,
                        f = this.getRowCount(1);
                    for (b = 0; b < f; b++) a = this.Sl(b, 1), c.push(new z(b, (-1), (-1), e, (-1), a)), e += a;
                    return c
                },
                Mt: function(a) {
                    var b, c, d, e, f, g = this,
                        h = new A,
                        i = ma(g),
                        j = ka(g),
                        k = g.am(),
                        l = ia(g),
                        m = g.ss;
                    if (0 === a) for (c = k.nt, l = L(i, l), b = 0; b < l; b++) d = m.Sl(b), h.push(new z(b, (-1), (-1), c, (-1), d)), c += d;
                    else if (1 === a) for (c = k.qt, l -= j, e = k.jr, f = M(i, g.lq), b = f; e > 0 && b < l; b++) d = m.Sl(b), h.push(new z(b, (-1), (-1), c, (-1), d)), c += d, e -= d;
                    else if (2 === a) for (c = k.ot, b = M(i, l - j); b < l; b++) d = m.Sl(b), h.push(new z(b, (-1), (-1), c, (-1), d)), c += d;
                    return h
                },
                Ir: function(a, b, c) {
                    var d, e, f, g, h, i = this,
                        j = i.getRowCount(c),
                        k = i.getColumnCount(c),
                        l = i.Gr(a, c),
                        m = i.Hr(b, c),
                        o = new A;
                    return l && l.length > 0 && m && m.length > 0 && (d = l[0].row, e = m[0].col, f = l[l.length - 1].row, g = m[m.length - 1].col, h = i.getSpans(n(d, e, f - d + 1, g - e + 1), c), h && h.length > 0 && i.Nt(h, d, e, f, g, o, j, k, c, l, m)), o
                },
                rr: function(a, b, c, d, e) {
                    var f, g, h, i, j = this,
                        k = j.getRowCount(c),
                        l = j.getColumnCount(c),
                        m = j.Gr(a, c),
                        n = j.Hr(b, c),
                        o = new A;
                    return m && m.length > 0 && n && n.length > 0 ? (f = m[0].row, g = n[0].col, h = j.getSpan(d, e, c), h && (i = [], i.push(h), j.Nt(i, f, g, h.row + h.rowCount, h.col + h.colCount, o, k, l, c, m, n)), o.length > 0 ? o[0] : J) : J
                },
                Nt: function(a, b, c, d, e, f, g, h, i, j, k) {
                    var l, m, n, o, p, q, r, s, t, u, v, w, x, y, A, B, C, D, E, F, G = a.length;
                    if (!(G <= 0)) {
                        for (l = this, n = d + 1, o = e + 1, p = [], q = [], r = [], s = [], t = 0, u = 0, m = b - 1; m >= 0; m--) p[m] = l.Sl(m, i), u -= p[m], s[m] = u;
                        for (u = 0, m = b; m < n; m++) s[m] = u, p[m] = l.Sl(m, i), u += p[m];
                        for (m = c - 1; m >= 0; m--) q[m] = l.Tl(m, i), t -= q[m], r[m] = t;
                        for (t = 0, m = c; m < o; m++) r[m] = t, q[m] = l.Tl(m, i), t += q[m];
                        for (v = 0; v < G; v++) if (w = a[v], w.intersect(b, c, d - b + 1, e - c + 1)) {
                            if (x = w.row + w.rowCount, x > n) {
                                for (m = n; m < x; m++) p.push(l.Sl(m, i)), s.push(s[m - 1] + p[m]);
                                n = x
                            }
                            if (y = w.col + w.colCount, y > o) {
                                for (m = o; m < y; m++) q.push(l.Tl(m, i)), r.push(r[m - 1] + q[m]);
                                o = y
                            }
                            for (A = r[w.col], B = s[w.row], C = 0, D = 0, F = w.col; F < w.col + w.colCount && F < h; F++) C += q[F];
                            for (E = w.row; E < w.row + w.rowCount && E < g; E++) D += p[E];
                            f.push(new z(w.row, w.col, k[0].x + A, j[0].y + B, C, D, w.rowCount, w.colCount))
                        }
                    }
                },
                qs: function() {
                    var a = this,
                        b = a.parent,
                        c = a.Ot(a.qq);
                    c !== -1 && c !== a.qq && (a.qq = c), b && b.Pt && b.Pt.value(a.Qt(a.qq))
                },
                os: function() {
                    var a = this,
                        b = a.parent,
                        c = a.Rt(a.lq);
                    c !== -1 && c !== a.lq && (a.lq = c), b && b.St && b.St.value(a.Tt(a.lq))
                },
                ds: function() {
                    var a = this,
                        b = a.parent;
                    b && b.Ut && (b.options.scrollIgnoreHidden && (a.Vt = a.Wt(!0)), b.Ut())
                },
                es: function() {
                    var a = this,
                        b = a.parent;
                    b && b.Xt && (b.options.scrollIgnoreHidden && (a.Yt = a.Zt(!0)), b.Xt())
                },
                $t: function() {
                    var a = this,
                        b = 0,
                        c = la(a);
                    return b = c > 0 ? a.Zq(c - 1) : a.$q()
                },
                _t: function() {
                    var a = this,
                        b = 0,
                        c = ma(a);
                    return b = c > 0 ? a._q(c - 1) : a.ar()
                },
                $q: function(a) {
                    return this.Zq(-1, a)
                },
                Zq: function(a, b) {
                    for (var c = this, d = c.getColumnCount(b) - 1 - ja(c); a < d;) if (a++, c.getColumnVisible(a, b) && c.Tl(a, b) > 0) return a;
                    return J
                },
                br: function(a, b) {
                    for (var c = this, d = la(c); a > d;) if (a--, c.getColumnVisible(a, b) && c.Tl(a, b) > 0) return a;
                    return J
                },
                ar: function(a) {
                    return this._q(-1, a)
                },
                _q: function(a, b, c) {
                    for (var d = this, e = d.getRowCount(b), f = c ? e - 1 : e - 1 - ka(d); a < f;) if (a++, d.getRowVisible(a, b) && d.Sl(a, b) > 0) return a;
                    return J
                },
                gr: function(a, b, c) {
                    for (var d = this, e = c ? 0 : ma(d); a > e;) if (a--, d.getRowVisible(a, b) && d.Sl(a, b) > 0) return a;
                    return J
                },
                au: function() {
                    var a = this.parent;
                    a && a.options.scrollIgnoreHidden && (this.jq = !0), this.os()
                },
                bu: function() {
                    var a = this.parent;
                    a && a.options.scrollIgnoreHidden && (this.oq = !0), this.qs()
                },
                Tt: function(a) {
                    var b, c = this.parent;
                    return c && c.options.scrollIgnoreHidden ? (b = this.Zt().visibleIndex, b[a]) : a
                },
                cu: function(a) {
                    var b, c = this.parent;
                    return c && c.options.scrollIgnoreHidden ? (b = this.Zt().originalIndex, b[a]) : a
                },
                Qt: function(a) {
                    var b, c = this.parent;
                    return c && c.options.scrollIgnoreHidden ? (b = this.Wt().visibleIndex, b[a]) : a
                },
                du: function(a) {
                    var b, c = this.parent;
                    return c && c.options.scrollIgnoreHidden ? (b = this.Wt().originalIndex, b[a]) : a
                },
                Wt: function(a) {
                    var b, c, d, e, f, g, h, i, j = this;
                    if (j.Vt && !a) return j.Vt;
                    if (b = la(j), c = ha(j) - ja(j) - b, d = b, e = d + c - 1, f = j.ss, g = {
                            visibleIndex: {},
                            originalIndex: {}
                        }, e - d + 1 <= 0) return g;
                    for (h = 0, i = d; i <= e; i++) g.originalIndex[h] = i, g.visibleIndex[i] = h, f._m(i) > 0 && h++;
                    for (i--, h--; f._m(i) <= 0 && i >= d;) g.originalIndex[h] = i, g.visibleIndex[i] = h, i--;
                    return g
                },
                Zt: function(a) {
                    var b, c, d, e, f, g, h, i, j = this;
                    if (j.Yt && !a) return j.Yt;
                    if (b = ma(j), c = ia(j) - ka(j) - b, d = b, e = d + c - 1, f = j.ss, g = {
                            visibleIndex: {},
                            originalIndex: {}
                        }, e - d + 1 <= 0) return g;
                    for (h = 0, i = d; i <= e; i++) g.originalIndex[h] = i, g.visibleIndex[i] = h, f.Sl(i) > 0 && h++;
                    for (i--, h--; f.Sl(i) <= 0 && i >= d;) g.originalIndex[h] = i, g.visibleIndex[i] = h, i--;
                    return g
                },
                Rt: function(a, b) {
                    var c, d = this,
                        e = ma(d),
                        f = ia(d) - ka(d) - 1;
                    if (b) {
                        if (a > f && (a = f), c = d.gr(a + 1), c !== J && c >= e) return c
                    } else if (a < e && (a = e), c = d._q(a - 1), c !== J && c <= f) return c;
                    return -1
                },
                Ot: function(a, b) {
                    var c, d = this,
                        e = la(d),
                        f = ha(d) - ja(d) - 1;
                    if (b) {
                        if (a > f && (a = f), c = d.br(a + 1), c !== J && c >= e) return c
                    } else if (a < e && (a = e), c = d.Zq(a - 1), c !== J && c <= f) return c;
                    return -1
                },
                eu: function(a, b, c) {
                    var d, e, f, g, h;
                    if (c < b) return c;
                    for (d = 0, e = this.ss, f = c, g = c; f >= b; f--) if (h = e.Sl(f), !(h <= 0)) {
                        if (d += h, d > a) break;
                        g = f
                    }
                    return g
                },
                fu: function(a, b, c) {
                    var d, e, f, g, h;
                    if (c < b) return c;
                    for (d = 0, e = this.ss, f = c, g = c; f >= b; f--) if (h = e._m(f), !(h <= 0)) {
                        if (d += h, d > a) break;
                        g = f
                    }
                    return g
                },
                gu: function() {
                    var a, b, c, d = this.am(),
                        e = this.Hr(1, 3),
                        f = 0,
                        g = 0;
                    if (e) for (a = 0; a < e.length; a++) b = e[a].width, f += b, b > 0 && g++;
                    return g = 0 === g ? 1 : g, c = f / g, 0 === c ? 1 : N(d.er / c)
                },
                hu: function() {
                    var a, b, c, d = this.am(),
                        e = this.Gr(1, 3),
                        f = 0,
                        g = 0;
                    if (e) for (a = 0; a < e.length; a++) b = e[a].height, f += b, b > 0 && g++;
                    return g = 0 === g ? 1 : g, c = f / g, 0 === c ? 1 : N(d.jr / c)
                },
                ns: function(a) {
                    var b, c, d, e, f, g, h;
                    return o(a) && (a = 3), b = this, c = b.parent, d = ma(b), e = ka(b), c && c.options.scrollbarMaxAlign ? (f = b.am(), b.eu(f.jr, d, ia(b) - e - 1)) : (g = b.getRowCount(a), 3 !== a && 2 !== a || (g -= e), h = b.gr(g, a), h === J && (h = d), h)
                },
                ps: function(a) {
                    var b, c, d, e, f, g;
                    return o(a) && (a = 3), b = this, c = b.parent, d = la(b), c && c.options.scrollbarMaxAlign ? (e = b.am(), b.fu(e.er, d, ha(b) - ja(b) - 1)) : (f = b.getColumnCount(a), 3 !== a && 1 !== a || (f -= ja(b)), g = b.br(f, a), g === J && (g = d), g)
                },
                iu: function() {
                    var a, b, c, d, e = this,
                        f = ma(e),
                        g = la(e),
                        h = ia(e) - ka(e) - 1,
                        i = ha(e) - ja(e) - 1,
                        j = e.ITa,
                        k = j.getLastNonNullRow(3);
                    return k > f && (f = k), a = j.getLastNonNullCol(3), a > g && (g = a), b = j.getLastNonNullRow(2), b > f && (f = b), c = j.getLastNonNullCol(1), c > g && (g = c), d = oa._n, d && B(d, function(a, b) {
                        var c, d = b.lastNonNullRowAndCol;
                        d && (c = d.call(e), f = M(f, c.lastNonNullRow), g = M(g, c.lastNonNullCol))
                    }), f > h && (f = h), g > i && (g = i), {
                        lastNonNullRow: f,
                        lastNonNullCol: g
                    }
                },
                mq: function(a) {
                    var b, c = this,
                        d = c.lq;
                    a >= c._t() && a <= c.ns() && a !== d && (b = c.parent, b && (b.ku.ju(a), c.os()), b && !b.options.scrollbarShowMax && c.es())
                },
                rq: function(a) {
                    var b, c = this,
                        d = c.qq;
                    a >= c.$t() && a <= c.ps() && a !== d && (b = c.parent, b && (b.ku.lu(a), c.qs()), b && !b.options.scrollbarShowMax && c.ds())
                },
                yr: function(a, b, c) {
                    var d, e, f, g, h, i, j, k = this,
                        l = a.row,
                        m = a.col,
                        n = a.hitTestType;
                    return o(l) || o(m) ? J : (d = k.getSpan(l, m, n), d && (l = d.row, m = d.col), e = k.getActualStyle(l, m, n), f = 1 === n ? -1 : K, g = 2 === n ? -1 : K, h = k.getCellRect(l, m, f, g), i = {
                        sheet: k,
                        row: l,
                        col: m,
                        sheetArea: n
                    }, j = e.cellType || k.Al(n), j.h5(b, c, e, h, i))
                },
                mu: function() {
                    this.unbindAll(), this.nu()
                },
                ou: function(a) {
                    var b, c, d, e, f, g, h = this.Tq(a),
                        i = h.row,
                        j = h.col,
                        k = i + h.rowCount,
                        l = j + h.colCount;
                    for (c = i; c < k; c++) for (d = j; d < l; d++) if (e = this.getSpan(c, d), f = e ? e.row : c, g = e ? e.col : d, b = this.getActualStyle(f, g), b.locked === !0) return !0;
                    return !1
                },
                pu: function(a, b, c, d, e, f) {
                    if (-1 <= a && a < e && -1 <= b && b < f) {
                        if (a === -1 && b === -1) return !0;
                        if (a === -1) {
                            if (0 !== d && b + d <= f) return !0
                        } else if (b === -1) {
                            if (0 !== c && a + c <= e) return !0
                        } else if (0 !== d && b + d <= f && 0 !== c && a + c <= e) return !0
                    }
                    return !1
                },
                qu: function(a, b, c, d) {
                    var e, f, g, h = this;
                    return !(a < 0 && b < 0) && (a < 0 && (e = h.ITa.zl(1), e && e.spans && e.spans.length > 0) ? h.ITa.qu(-1, b, -1, d, 1) : b < 0 && (f = h.ITa.zl(2), f && f.spans && f.spans.length > 0) ? h.ITa.qu(a, -1, c, -1, 2) : (g = h.ITa.zl(3), !! (g && g.spans && g.spans.length > 0) && h.ITa.qu(a, b, c, d, 3)))
                },
                suspendPaint: function() {
                    var a = this,
                        b = a.Xq;
                    a.Xq++, 0 === b && oa.ao(a, V, {
                        suspend: !0
                    })
                },
                resumePaint: function() {
                    var a, b = this;
                    b.Xq--, b.Xq <= 0 && (b.Xq = 0, oa.ao(b, V, {
                        suspend: !1
                    }), a = b.parent, a && a.getActiveSheet() !== b || b.$p())
                },
                isPaintSuspended: function() {
                    return this.Xq > 0
                },
                su: function(a, b) {
                    var c, d, e = this,
                        f = a && a.length;
                    for (c = 0; c < f; c++) if (d = a[c], b.intersect(d.row, d.col, d.rowCount, d.colCount)) return a.splice(c--, 1), e.su(a, b.union(d));
                    return b
                },
                tu: function() {
                    var a = this,
                        b = a.parent;
                    return a.uu || (a.uu = b && b.uu), a.uu
                },
                vu: function() {
                    if (!this.bt) {
                        var a = this;
                        a.bt = new f(function() {
                            a.bt && a.repaint()
                        })
                    }
                    return this.bt
                },
                wu: function() {
                    var a = this,
                        b = a.parent;
                    if (b) return b.commandManager()
                },
                Os: function(a, b) {
                    this.Wq(r.InvalidOperation, {
                        sheet: this,
                        sheetName: this.name(),
                        invalidType: a,
                        message: b
                    })
                },
                Bq: function(a, b, c, d, e, f) {
                    var g, h = {
                        sheet: this,
                        sheetName: this.name(),
                        row: b,
                        col: c,
                        sheetArea: d,
                        propertyName: a,
                        oldValue: e,
                        newValue: f
                    };
                    this.Wq(r.CellChanged, h), g = this.ITa, g.ZVa("cellChanged", a, b, c, d, f, e)
                },
                xu: function(a, b, c, d) {
                    this.Wq(r.ValueChanged, {
                        sheet: this,
                        sheetName: this.name(),
                        row: a,
                        col: b,
                        oldValue: c,
                        newValue: d
                    })
                },
                pq: function(a, b, c, d, e) {
                    var f, g = {
                        sheet: this,
                        sheetName: this.name(),
                        col: a,
                        sheetArea: b,
                        propertyName: c,
                        newValue: d,
                        oldValue: e
                    };
                    "addColumns" !== c && "deleteColumns" !== c || (g.count = d), this.Wq(r.ColumnChanged, g), f = this.ITa, f.ZVa("columnChanged", a, b, c, e, d)
                },
                kq: function(a, b, c, d, e) {
                    var f, g = {
                        sheet: this,
                        sheetName: this.name(),
                        row: a,
                        sheetArea: b,
                        propertyName: c,
                        newValue: d,
                        oldValue: e
                    };
                    "addRows" !== c && "deleteRows" !== c || (g.count = d), this.Wq(r.RowChanged, g), f = this.ITa, f.ZVa("rowChanged", a, b, c, e, d)
                },
                yu: function(a, b) {
                    return !!this.mm.zu(a, b) && (this.Wq(r.SelectionChanging, {
                            sheet: this,
                            sheetName: this.name(),
                            oldSelections: a,
                            newSelections: b
                        }), !0)
                },
                Au: function(a) {
                    this.Wq(r.SelectionChanged, {
                        sheet: this,
                        sheetName: this.name(),
                        oldSelections: a,
                        newSelections: this.getSelections()
                    })
                },
                Bu: function(a, b, c, d, e, f, g, h) {
                    var i = {
                        sheet: this,
                        sheetName: this.name(),
                        row: a,
                        col: b,
                        rowCount: c,
                        colCount: d,
                        changedCells: e,
                        action: f
                    };
                    g && (i.sheetArea = g), h && (i.value = h), e && e.length > 0 && (this.Wq(r.RangeChanged, i), this.Wq(r.FormulatextboxRangeChanged, i))
                },
                Cu: function(a, b) {
                    var c = {
                        sheet: this,
                        sheetName: this.name(),
                        oldStatus: a,
                        newStatus: b
                    };
                    this.Wq(r.EditorStatusChanged, c)
                },
                Du: function() {
                    return this.b4 || (this.b4 = i(m("input"))), this.b4
                },
                bind: function(a, b, c) {
                    this.Du().bind(a + Y, b, c)
                },
                unbind: function(a, b) {
                    this.Du().unbind(a + Y, b)
                },
                Wq: function(a, b) {
                    this.updateEventsData && this.updateEventsData(a, b), 0 === this.jm && this.Du().trigger(a, b)
                },
                unbindAll: function() {
                    this.unbind(Y)
                },
                Fu: function(a, b, c) {
                    a.indexOf(".") >= 0 ? this.bind(a, b, c) : this.bind(a + Z, b, c)
                },
                Gu: function(a, b) {
                    a.indexOf(".") >= 0 ? this.unbind(a, b) : this.unbind(a + Z, b)
                },
                nu: function() {
                    this.unbind(Z)
                },
                Dr: function() {
                    var a = this.Zs;
                    return new q(a.x, a.y, a.width, a.height)
                },
                Us: function(a) {
                    this.Zs = new q(a.x, a.y, a.width, a.height)
                }
            }, d.Worksheet = oa, a.exports = d
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a, b, d, e, f, g, h, i = c(33),
                j = c(26),
                k = c(60),
                l = j.j.G,
                m = j.j.Ia,
                n = i.maxRowCount = 1048576,
                o = i.maxColumnCount = 16384,
                p = i.BAND_INDEX_CONST,
                q = [1, 26, 676],
                r = void 0,
                s = null,
                t = ["#all", "#data", "#headers", "#totals", "#this row"],
                u = i.Expression,
                v = i.isNumber,
                w = i.ei,
                x = i.FormulaToken,
                y = i.Errors.Reference;

            function z(a, b) {
                var c = b + 1;
                return a < 0 ? a % c + c : a > b ? a % c : a
            }
            a = i.ErrorSource = function(a) {
                l(b, a);

                function b(b) {
                    a.call(this, s), this.u4 = b
                }
                return b
            }(i.CalcSource), m(a.prototype, {
                startCalculation: function() {},
                endCalculation: function() {},
                getValue: function() {
                    return y
                },
                getReference: function() {
                    var a = new i.CalcReference(self, [i.pf(0, 0)]);
                    a.getValue = function() {
                        return y
                    }
                },
                referenceToArray: function() {
                    var a = [y];
                    return a.isError = !0, a
                },
                getName: function() {
                    return this.u4
                },
                setValue: function() {}
            });

            function A(b) {
                return new a(b)
            }
            function B(a, b, c, d, e, f, g) {
                return 3 === g || c >= 0 && d >= 0 || 1 === g && c >= 0 || 2 === g && d >= 0
            }
            function C(a, b, c, d) {
                var e, f, g = p,
                    h = {
                        cj: g,
                        dj: g,
                        ej: !0,
                        fj: !0,
                        gj: !1,
                        li: 0,
                        Vka: !0
                    },
                    i = b ? E(a, c, d, 0) : D(a, 0);
                return i.hj ? (h.cj = i.ij, h.ej = i.jj) : (h.dj = i.ij, h.fj = i.jj), h.li = i.li, h.gj = i.gj, !i.gj || i.li >= a.length ? h : !b && i.hj || b && !i.hj ? {
                    gj: !1
                } : (e = a[h.li], !b && (v(e) || "$" === e) || b && ("C" === e || "c" === e) ? (f = b ? E(a, c, d, h.li) : D(a, h.li), h.li = f.li, !f.gj || !b && !f.hj || b && f.hj ? (h.gj = !1, h) : (h.li < a.length && (h.Vka = !1), b ? (h.dj = f.ij, h.fj = f.jj) : (h.cj = f.ij, h.ej = f.jj), h.gj = !0, h)) : {
                    gj: !1
                })
            }
            b = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e6];

            function D(a, c) {
                var d, e, f, g, h, i, j, k, l = {
                        jj: !0,
                        gj: !1
                    },
                    m = a.length;
                if (c >= m) return l;
                if ("$" === a[c] && (l.jj = !1, c++), c >= m) return l;
                if (d = c, e = 0, f = a[d], v(f) && "0" !== f) {
                    for (l.hj = !0; d < m && v(f);) d++, d < m && (f = a[d]);
                    if (d - c > 7) return l;
                    for (g = d - 1, h = 0; g >= c; g--, h++) e += (a[g].charCodeAt() - 48) * b[h];
                    if (e <= n) return l.ij = e - 1, l.li = d, l.gj = !0, l
                } else if (w(f)) {
                    for (l.hj = !1; d < m && w(f);) d++, d < m && (f = a[d]);
                    if (i = d - c, i > 3) return l;
                    for (e = 0, j = d - 1, k = j; k >= c; k--) e += ((32 | a[k].charCodeAt(0)) - 96) * q[j - k];
                    if (e <= o) return l.ij = e - 1, l.li = d, l.gj = !0, l
                }
                return l
            }
            function E(a, b, c, d) {
                var e, f, g, h, i, j = p,
                    k = {
                        endIndex: d,
                        elementIndex: j,
                        isRow: !0,
                        isRelative: !1,
                        success: !1
                    },
                    l = a.length;
                if (d >= l) return k;
                if (e = d, f = a[e], "R" === f || "r" === f) k.hj = !0, g = b;
                else {
                    if ("C" !== f && "c" !== f) return k;
                    k.hj = !1, g = c
                }
                if (d++, e++, d >= l) return k.li = d, k.ij = g, k.jj = !0, k.gj = !0, k;
                if (f = a[e], "[" === f && (d++, e++, k.jj = !0), d >= l) return k;
                if (h = !1, f = a[e], k.jj && "-" === f && (d++, e++, h = !0), d >= l) return k;
                if (f = a[e], !v(f)) return k.jj ? k : (k.li = d, k.ij = g, k.jj = !0, k.gj = !0, k);
                for (; e < l && v(f);) e++, e < l && (f = a[e]);
                if (i = parseInt(a.slice(d, e).join(""), 10), k.jj) {
                    if (e >= l || "]" !== a[e]) return k;
                    e++
                }
                return i < (k.hj ? n : o) ? (k.jj ? (i = h ? -i : i, k.ij = i + g) : k.ij = i - 1, k.li = e, k.gj = !0, k) : void 0
            }
            function F(a, b, c, d) {
                var e, f = a.row,
                    g = a.column;
                if (c.source === i.BangSource) d.push("!");
                else if (c.source && (e = I(a, d, c.source, c.endSource), !e)) return void d.push("#", "R", "E", "F", "!");
                8 === c.type || 5 === c.type ? d.push("" + c.value) : c.value && c._error ? d.push("" + c.value) : c.sf() ? G(a.useR1C1, f, g, c.row, c.column, c.rowRelative, c.columnRelative, d) : H(a.source, a.useR1C1, f, g, c.row, c.column, c.endRow, c.endColumn, c.rowRelative, c.columnRelative, c.endRowRelative, c.endColumnRelative, d, c.tf())
            }
            function G(a, b, c, d, e, f, g, h, j) {
                var k, l, m, p, r, s;
                if (j = j || 0, k = n - 1, (0 === j || 1 === j) && d > -k && d <= 2 * k && (d += f ? b : 0, d = z(d, k)), l = o - 1, (0 === j || 2 === j) && e > -l && e <= 2 * l && (e += g ? c : 0, e = z(e, l)), !B(b, c, d, e, f, g, j)) return void h.push("" + i.Errors.Reference);
                if (a) {
                    if (h.push("R"), d >= 0 && (b !== d || !f) && (f ? h.push("[" + (d - b) + "]") : (d++, h.push(d + ""))), e < 0) return;
                    if (h.push("C"), c === e && g || (g ? h.push("[" + (e - c) + "]") : (e++, h.push(e + ""))), f && d < 0 || !f && d <= 0) return
                } else {
                    if (e >= 0) {
                        for (g || h.push("$"), m = e, p = 1, r = q.length; p < r; p++) s = q[r - p], e = parseInt(m / s, 10), m %= s, 0 !== e && h.push(String.fromCharCode(e + 65 - 1));
                        h.push(String.fromCharCode(m + 65))
                    }
                    if (d < 0) return;
                    d++, f || h.push("$"), h.push(d + "")
                }
            }
            function H(a, b, c, d, e, f, g, h, i, j, k, l, m, o) {
                o = o || 0, 3 === o && (e = 0, g = a ? a.getRowCount() : n - 1, o = 1), G(b, c, d, e, f, i, j, m, o);
                var q = p;
                (!b || e !== g || f !== h || g !== q && h !== q) && (g === q && h === q || (m.push(":"), G(b, c, d, g, h, k, l, m, o)))
            }
            function I(a, b, c, d) {
                if (a.getExternalSourceToken) {
                    if (c !== i.BangSource) {
                        var e = J(a, a.getExternalSourceToken(c).split(""), d && a.getExternalSourceToken(d).split(""));
                        if (!(e.length > 0)) return !1;
                        b.push.apply(b, e)
                    }
                    return b.push("!"), !0
                }
                return !1
            }
            function J(a, b, c) {
                var d, e;
                if (!b || 0 === b.length || K(a, b) || K(a, c)) return [];
                if (d = b, N(b, !1) || c && N(c, !1)) {
                    for (d = ["'"], e = 0; e < b.length; e++)"'" === b[e] && d.push("'"), d.push(b[e]);
                    if (c) for (d.push(":"), e = 0; e < c.length; e++)"'" === c[e] && d.push("'"), d.push(c[e]);
                    d.push("'")
                }
                if (c) for (d.push(":"), e = 0; e < c.length; e++) d.push(c[e]);
                return d
            }
            function K(a, b) {
                if (!b || 0 === b.length || !a.Eh) return !1;
                var c = "'" === b[0] ? 1 : 0;
                return "[" === b[c] && b.indexOf("]") > c
            }
            function L(a, b) {
                var c, d, e;
                if (!a || 0 === a.length) return !0;
                if (!b) {
                    if (i.isNumber(a[0])) return !1;
                    if (c = O(a), c.gj && c.li <= a.length) return !1
                }
                for (e = 0; e < a.length; e++) if (d = a[e], b) {
                    if ("*" === d || ":" === d || "[" === d || "]" === d || "?" === d || "\\" === d || "/" === d) return !1
                } else if (" " === d || "'" === d || "[" === d || "]" === d || "?" === d || "\\" === d || "%" === d || '"' === d || "(" === d || ")" === d || "|" === d || "{" === d || "}" === d || "#" === d || "@" === d || "!" === d || "$" === d || "^" === d || "（" === d || "）" === d || i.operaterTypesMap[d]) return !1;
                return !0
            }
            k.jma = L;

            function M(a, b) {
                var c, d;
                if (!a || 0 === a.length) return !0;
                for (d = 0; d < a.length; d++) if (c = a[d], b) {
                    if ("*" === c || ":" === c || "[" === c || "]" === c || "?" === c) return !1;
                    if ("'" === c && (0 === d || d >= a.length - 1 || "'" !== a.charAt(d + 1))) return !1
                } else if ("'" === c || "[" === c || "]" === c || "?" === c || "%" === c || i.operaterTypesMap[c]) return !1;
                return !0
            }
            function N(a, b) {
                var c, d, e;
                return !!i.isDigit(a[0]) || (c = [], d = a, "[" === a[0] && (e = a.lastIndexOf("]"), e > 0 && (c = a.slice(1, e), d = a.slice(e + 1))), !M(c) || !L(d, b))
            }
            function O(a) {
                var b = C(a, !1, 0, 0);
                return b.gj || (b = C(a, !0, 0, 0)), b
            }
            d = k.SheetReferenceResolver = function(a) {
                this.kj = a, this.priority = 8e3
            }, l(d, i.TokenResolver);

            function P(a) {
                var b = new i.Expression(8);
                return b.value = a, b
            }
            function Q(a) {
                var b = a;
                return a && a.length >= 3 && "[" === a[0] && "0" === a[1] && "]" === a[2] && (b = 3 === a.length ? "" : a.subString(3)), b
            }
            m(d.prototype, {
                resolveToken: function(a, b, c, d) {
                    var e, f, g, h, j, k, l, m, n, o, q, r, t, u, v = a.useR1C1,
                        w = a.row,
                        x = a.column,
                        y = c.length,
                        z = c[d],
                        B = z.ni,
                        D = z.Nc,
                        E = z.hi;
                    if (0 !== D && 6 !== E) return !1;
                    if (0 === D && 0 === E && d < y - 2 && ":" === c[d + 1].ni && 12 === c[d + 2].hi && c[d + 2].ni.indexOf(":") < 0 || 0 === D && 12 === E) {
                        if (B && (B.indexOf(":") > 0 ? (l = B.indexOf(":"), j = B.substring(1, l - 1), k = B.substring(l + 1, B.length - 2)) : (j = B, "'" === j.charAt(0) && (j = j.substring(1, j.length - 1)), 0 === E && (k = c[d + 2].ni))), d++, h = !! j, j = Q(j), j && (f = B ? a.getExternalSource("", j) : i.BangSource, f = f || A(j), k = Q(k), k && (g = a.getExternalSource("", k), g = g || A(k), d += 2)), z = c[d], !z) return P(B);
                        B = z.ni
                    }
                    if (m = d === y - 1 ? s : c[d + 1], R(c, z, d, v, !0)) {
                        if (n = C(z.Qb, v, w, x), !n.gj && !h) return !1;
                        if (z.hi = 7, n.gj && n.Vka) {
                            if (o = n.cj, q = n.dj, r = n.ej, t = n.fj, d < y - 2 && 5 === m.Nc && ":" === m.ni && (m = c[d + 2], R(c, m, d + 2, v, !1) && (u = C(m.Qb, v, w, x), u.gj && o === p == (u.cj === p) && q === p == (u.dj === p)))) return w = o === p ? 0 : w, x = q === p ? 0 : x, {
                                index: d + 3,
                                expr: i.uf(f, g, o - (r ? w : 0), q - (t ? x : 0), u.cj - (u.ej ? w : 0), u.dj - (u.fj ? x : 0), r, t, u.ej, u.fj)
                            };
                            if (o === p || q === p) {
                                if (v) return o -= o !== p && r ? w : 0, q -= q !== p && t ? x : 0, {
                                    index: d + 3,
                                    expr: i.uf(f, g, o, q, o, q, r, t, r, t)
                                };
                                if (!f) return !1;
                                e = P(B)
                            }
                            if (!e) return {
                                index: d + 1,
                                expr: i.rf(f, g, o - (r ? w : 0), q - (t ? x : 0), r, t)
                            }
                        } else e = P(B)
                    } else if (6 === z.hi) e = new i.Expression(5), e.value = i.CalcError.parse(z.ni);
                    else {
                        if (!f) return !1;
                        e = P(B)
                    }
                    return f && (e.source = f), g && (e.endSource = g), {
                        index: d + 1,
                        expr: e
                    }
                },
                unparse: function(a, b, c, d) {
                    return (1 === c.type || 8 === c.type || 5 === c.type) && (F(a, b, c, d), !0)
                }
            });

            function R(a, b, c, d, e) {
                return 0 === b.Nc && 0 === b.hi || !d && 0 === b.Nc && 4 === b.hi && (!e || c < a.length - 2 && ":" === a[c + 1].ni && 0 === a[c + 2].Nc && 4 === a[c + 2].hi)
            }
            k.StructReferencePortions = {
                ThisRow: 1,
                Headers: 2,
                Data: 3,
                Totals: 8,
                HeadersAndData: 6,
                DataAndTotals: 12,
                All: 14,
                NotSpecific: 16
            }, k.StructReferenceColumnSpecifier = {
                All: 1,
                NotSpecific: 1,
                SingleColumn: 2,
                ColumnRange: 4
            };

            function S(a, b, c, d, e) {
                return b <= a.startRow() && c <= a.startColumn() && b + d > a.endRow() && c + e > a.endColumn()
            }
            e = function() {
                var a = new u(13);
                return a.tableName = function() {
                    return this.lj.tableName()
                }, a.baseTable = function() {
                    return this.lj
                }, a.mj = function() {
                    this.nj = this.lj.startColumn()
                }, a.columnReferenceStart = function() {
                    return this.oj + this.lj.startColumn()
                }, a.columnReferenceEnd = function() {
                    return this.pj + this.lj.startColumn()
                }, a.referencePortions = function() {
                    return this.qj
                }, a.referenceColumnSpecifier = function() {
                    return this.rj
                }, a.source = function() {
                    return this.lj.source()
                }, a.getRange = function(a, b, c) {
                    var d, e, f, g, h, j, k, l, m, n, o = this,
                        p = o.lj;
                    switch (o.mj(), k = p.startRow(), l = p.endRow(), m = p.hasTotalsRow(), n = p.hasHeadersRow(), o.qj) {
                        case 3:
                        case 16:
                            d = n ? k + 1 : k, f = m ? l - 1 : l;
                            break;
                        case 2:
                            if (n) d = k, f = k;
                            else {
                                if (!c) return s;
                                d = k - 1, f = k - 1
                            }
                            break;
                        case 8:
                            if (m) d = l, f = l;
                            else {
                                if (!c) return s;
                                d = l + 1, f = l + 1
                            }
                            break;
                        case 1:
                            d = a, f = a;
                            break;
                        case 6:
                            d = k + (c && !n ? -1 : 0), f = m ? l - 1 : l;
                            break;
                        case 12:
                            d = n ? k + 1 : k, f = l + (c && !m ? 1 : 0);
                            break;
                        case 14:
                        default:
                            d = k + (c && !n ? -1 : 0), f = l + (c && !m ? 1 : 0)
                    }
                    return e = o.columnReferenceStart(), g = o.columnReferenceEnd(), f < d || !c && d < k || !c && f > l ? s : (h = f - d + 1, j = g - e + 1, i.qf(d, e, h, j))
                }, a.offsetWhenInsertRemoveColumn = function(a, b, c) {
                    var d, f, g = this,
                        h = g.nj;
                    return a < h || a === h && c || a > g.pj + h ? g : (b = c ? b : -b, d = a - h, f = e(), f.lj = g.lj, f.pj = g.pj + b, f.oj = g.oj, a <= h + g.oj && (f.oj += b, f.oj < d && (f.oj = d)), f.rj = g.rj, f.qj = g.qj, f.pj < f.oj ? i.Ih : f)
                }, a.offsetWhenCopy = function(a, b, c, d, e, f, g, h, j, l) {
                    var m, n, o, p = this,
                        q = c - e,
                        r = d - f,
                        s = g - e,
                        t = h - f,
                        u = new k.SheetParserContext(b.kj, b.Af.useR1C1, i.pf(c, d)),
                        v = u.getTableByIndex(c, d);
                    return v ? (a === b ? m = u.getTableByIndex(q, r) : (n = new k.SheetParserContext(a.kj, a.Af.useR1C1, i.pf(q, r)), m = n.getTableByIndex(q, r)), m === v ? p.Jma(f) : m === p.lj && S(m, s, t, j, l) && S(v, g, h, j, l) ? (o = p.offset(), o.lj = v, o) : p.offset()) : p.offset()
                }, a.Jma = function(a) {
                    var b, c = this,
                        d = e();
                    return d.lj = c.lj, d.pj = c.pj, d.oj = c.oj, 2 === c.rj && a && (b = c.lj.endColumn() - c.lj.startColumn() + 1, a %= b, d.oj += a, d.oj < 0 && (d.oj += b), d.pj = d.oj), d.rj = c.rj, d.qj = c.qj, d
                }, a.offset = function() {
                    var a = this,
                        b = e();
                    return b.lj = a.lj, b.qj = a.qj, b.oj = a.oj, b.pj = a.pj, b.rj = a.rj, b
                }, a.Kma = function(a, b) {
                    var c = this.lj;
                    return a >= c.startRow() && b >= c.startColumn() && a <= c.endRow() && b <= c.endColumn()
                }, a
            }, f = k.StructureReferenceResolver = function(a) {
                i.TokenResolver.call(this), this.kj = a, this.priority = 7900
            }, l(f, i.TokenResolver), m(f.prototype, {
                resolveToken: function(a, b, c, d) {
                    var g, h, i = c[d];
                    if (0 === i.Nc && 0 === i.hi) if (i = i.ni, "]" === i.charAt(i.length - 1)) try {
                        return g = e(), T(a, i.split(""), g), g
                    } catch (a) {} else if (h = a.getTableByName(i)) return f.create(h);
                    return s
                },
                unparse: function(a, b, c, d) {
                    var e, f, g, h, j, k, l;
                    return 13 === c.type && (e = c, a.YSa ? (f = e.getRange(a.row, a.column, !0), g = i.uf(e.source(), s, f.row, f.col, f.row + f.rowCount - 1, f.col + f.colCount - 1, !1, !1, !1, !1), F(a, b, g, d), !0) : 16 === e.qj && 1 === e.rj ? (d.push(e.lj.tableName()), void(a.Eh && d.push("[]"))) : (h = a.source === e.lj.source() && e.Kma(a.row, a.column), h && !a.Eh || d.push(e.lj.tableName()), d.push("["), 16 !== e.qj && (j = ea(e.qj, 1 !== e.rj, a.Eh), d.push(j)), 1 !== e.rj && (1 === e.qj && !a.Eh || 16 === e.qj || d.push(", "), k = e.lj.getColumnName(e.oj), k = $(k.split("")).join(""), 4 === e.rj ? (l = e.lj.getColumnName(e.pj), l = $(l.split("")).join(""), d.push("[", k, "]:[", l, "]")) : 1 === e.qj && !a.Eh && !_(k) || 16 === e.qj ? d.push(k) : d.push("[", k, "]")), d.push("]"), !0))
                }
            }), f.create = function(a, b, c, d, f) {
                void 0 === b && (b = 16), void 0 === c && (c = 1), d = d || 0, void 0 === f && (f = a.endColumn() - a.startColumn());
                var g = e();
                return g.lj = a, g.qj = b, g.oj = d, g.pj = f, g.rj = c, g
            };

            function T(a, b, c) {
                var d, e, f, g, h, i, j, k, l = c,
                    m = 0,
                    n = b[m],
                    o = ca(a, b, m, n),
                    p = o.sj;
                for (p || da(), l.lj = p, m = o.tj, m++, n = b[m], d = m;
                     " " === n;) m++, n = b[m];
                for ("@" !== n && "[" !== n && (m = d, n = b[m]), e = 1, f = !1, g = !1, h = b.length; 0 !== e && m < h;) if ("[" === n && (e++, m++, n = b[m]), "#" === n) f && e <= 1 && da(), o = ba(b, m, n, e), i = o.vj, m = o.tj, n = o.uj, e = o.wj, f ? 2 === l.qj && 3 === i || 2 === i && 3 === l.qj ? l.qj = 6 : 3 === l.qj && 8 === i || 3 === i && 8 === l.qj ? l.qj = 12 : da() : l.qj = i, f = !0;
                else if ("@" === n) {
                    for ((e > 1 || f) && da(), f = !0, l.qj = 1, m++, n = b[m];
                         " " === n;) m++, n = b[m];
                    "," === n && da()
                } else {
                    for (j = m;
                         "]" !== n && "[" !== n;) if ("'" === n && m++, "," === n) {
                        for (m++, n = b[m], k = m;
                             " " === n;) m++, n = b[m];
                        if ("[" === n) {
                            m = k, n = ",";
                            break
                        }
                    } else m++, n = b[m];
                    if (m > j && ((g || "[" === n && e > 1) && da(), o = V(l, b, m, n, e, j), m = o.tj, n = o.uj, e = o.wj, g = !0), "]" === n) {
                        if (e--, 0 === e) break;
                        m >= b.length && da(), m++, n = b[m]
                    }
                    "," === n && (m++, n = b[m])
                }
                f || (l.qj = 16), g || (l.oj = 0, l.pj = l.lj.endColumn() - l.lj.startColumn(), l.rj = 1)
            }
            function U(a, b, c) {
                return a.slice(b, c).join("")
            }
            function V(a, b, c, d, e, f) {
                var g, h, i, j, k, l, m = a,
                    n = [],
                    o = "",
                    p = !1,
                    q = !1;
                if (e > 1) p = !0, e--, n = b.slice(f, c), c++, d = b[c], ":" === d && (c++, d = b[c], q = "[" === d, g = aa(b, c, d, e), o = g.xj, c = g.tj, d = g.uj, e = g.wj);
                else if ("[" === d) {
                    for (q = !0, h = c - 1, d = b[h];
                         " " === d;) h--, d = b[h];
                    ":" !== d && da(), n = b.slice(f, h), n = W(n), d = b[c], g = aa(b, c, d, e), o = g.xj, c = g.tj, d = g.uj, e = g.wj
                } else m.qj !== r && 16 !== m.qj || (p = !0), i = b.slice(f, c), h = i.indexOf(":"), h > 0 ? (n = i.slice(0, h), o = i.slice(h + 1), "[" !== o[0] && da()) : n = i;
                if (j = Y(m, n, p), o ? (k = Y(m, o, q), m.rj = 4) : (k = j, m.rj = 2), j > k && (l = j, j = k, k = l), m.oj = j, m.pj = k, c++, c < b.length) for (d = b[c];
                                                                                                                                                                    " " === d;) c++, d = b[c];
                return {
                    tj: c,
                    uj: d,
                    wj: e
                }
            }
            function W(a) {
                for (var b = a.length - 1; b >= 0 && " " === a[b];) b--;
                for (; b >= 0 && " " !== a[b];) b--;
                return b >= 0 ? a.substr(b + 1, a.length - b - 1) : a
            }
            function X(a) {
                for (var b = 0, c = a.length, d = 0; b < c && " " === a[b];) b++;
                for (d = b, b = c - 1; b > d && " " === a[b];) b++;
                return b >= d ? a.slice(d, b + 1) : a
            }
            function Y(a, b, c) {
                var d, e, f, g;
                if (b && Z(b, c)) {
                    for (d = [], e = 0, f = b.length; e < f; e++)"'" === b[e] && e < f - 1 && "'" !== b[e + 1] || d.push(b[e]);
                    return b = d, g = a.lj.getColumnIndexInTable(b.join("")), g < 0 && da(), g
                }
                return -1
            }
            function Z(a, b) {
                var c, d, e;
                if (b) return !0;
                if (c = "", c = a[0], d = c, "#" === c || " " === c || "@" === c || " " === c || "," === c || ":" === c || "[" === c || "]" === c) return !1;
                for (e = 1; e < a.length; e++) {
                    if (c = a[e], " " === c || "," === c || ":" === c || "[" === c && "'" !== d || "]" === c && "'" !== d || "@" === c && "'" !== d || "#" === c && "'" !== d) return !1;
                    d = c
                }
                return !0
            }
            function $(a) {
                var b, c, d = [];
                for (c = 0; c < a.length; c++) b = a[c], "[" !== b && "]" !== b && "@" !== b && "#" !== b && "'" !== b || d.push("'"), d.push(b);
                return d
            }
            function _(a) {
                var b, c = "";
                if (c = a[0], "#" === c || " " === c || "@" === c || " " === c || "," === c || ":" === c || "[" === c || "]" === c) return !0;
                for (b = 1; b < a.length; b++) if (c = a[b], " " === c || "," === c || ":" === c || "[" === c || "]" === c || "@" === c || "#" === c) return !0;
                return !1
            }
            function aa(a, b, c, d) {
                var e, f, g = !1;
                if ("[" === c) for (g = !0, d++, b++, c = a[b];
                                    " " === c;) b++, c = a[b];
                for (e = b;
                     "]" !== c && ("," !== c || d > 1);)"'" === c && b++, b++, c = a[b];
                return b <= e && da(), f = a.slice(e, b), d > 1 && d--, g || (f = X(f)), {
                    xj: f,
                    tj: b,
                    uj: c,
                    wj: d
                }
            }
            g = {
                "#all": 14,
                "#data": 3,
                "#headers": 2,
                "#totals": 8,
                "#this row": 1
            };

            function ba(a, b, c, d) {
                for (var e, f, h, i, j = 14, k = b;
                     "]" !== c;)"'" === c && b++, b++, c = a[b];
                for (e = U(a, k, b).toLowerCase().trim(), f = !1, h = 0; h < t.length; h++) if (i = t[h], e === i) {
                    j = g[e], f = !0;
                    break
                }
                if (f || da(), b++, b >= a.length) d--;
                else {
                    for (c = a[b];
                         " " === c;) b++, c = a[b];
                    if ("," === c) {
                        for (d <= 1 && da(), b++, c = a[b];
                             " " === c;) b++, c = a[b];
                        for ("[" === c && (d++, b++, c = a[b]);
                             " " === c;) b++, c = a[b]
                    }
                    d > 1 && d--
                }
                return {
                    vj: j,
                    tj: b,
                    uj: c,
                    wj: d
                }
            }
            function ca(a, b, c, d) {
                for (var e, f, g = 0, h = b.length;
                     "[" !== d && c < h;) c++, d = b[c];
                return g = c, g > 0 ? (f = U(b, 0, g), e = a.getTableByName(f)) : e = a.getTableByIndex(a.row, a.column), {
                    sj: e,
                    tj: c,
                    uj: d
                }
            }
            function da() {
                throw j.C(i.SR)().Exp_FormulaInvalid
            }
            function ea(a, b, c) {
                switch (a) {
                    case 1:
                        return c ? "[#This Row]" : "@";
                    case 2:
                        return b ? "[#Headers]" : "#Headers";
                    case 3:
                        return b ? "[#Data]" : "#Data";
                    case 8:
                        return b ? "[#Totals]" : "#Totals";
                    case 6:
                        return "[#Headers], [#Data]";
                    case 12:
                        return "[#Data], [#Totals]";
                    case 14:
                    case 16:
                }
                return b ? "[#All]" : "#All"
            }
            h = i.Parser.prototype, h.parseReferenceExpressionInfos = function(a, b, c, d, e, f) {
                var g, h, j, k = this;
                k.setParserOption(e), g = [], h = a.split("");
                try {
                    j = b.yj().getParserContext(!f && b.Cf().useR1C1, i.pf(c, d), s), g = k.parseToTokens(j, h, !1)
                } catch (a) {}
                return g = fa(g, h), this.getExpressToken(g, h, b, c, d, f)
            };

            function fa(a, b) {
                var c, d, e, f, g, h, i, j, k, l, m = 0;
                for (a.unshift(new x("=", 1, 0, 0, 0)), e = [], f = 0, g = a.length - 1; g > 0; g--) a[g].mi === a[g - 1].mi && a[g].ni === a[g - 1].ni || (e[f++] = a[g]);
                for (e[f++] = a[g], e.reverse(), h = [], i = 0, j = 0; j < e.length - 1; j++, i++) d = ga(e[j]), h[i] = e[j], m = e[j + 1].mi - e[j].mi - d, m > 0 && (c = new x(b.slice(e[j].mi + d, e[j + 1].mi), 7, e[j].mi + d), h[++i] = c);
                for (h[i] = e[j], d = ga(h[i]), h.length > 0 && b.length > h[i].mi + d && (c = new x(b.slice(h[i].mi + d, b.length), 7, h[i].mi + d), h[i + 1] = c), k = 0; k < h.length; k++) l = h[k].ni.trim(), 3 === h[k].hi ? h[k].ni = '"' + h[k].ni + '"' : "(" === l || "{" === l ? (h[k].Nc = 1, h[k].hi = 1) : ")" !== l && "}" !== l || (h[k].Nc = 1, h[k].hi = 2);
                return h
            }
            function ga(a) {
                return 1 === a.Nc && "ARRAY" === a.ni ? 1 : 0 === a.Nc && 3 === a.hi ? (a.HTa || a.ni).length + 2 : 0 === a.Nc && 12 === a.hi ? a.ni.length + 3 : a.ni.length
            }
            function ha(a, b, c) {
                var d, e;
                a && b && (d = b.getName && b.getName() || "!", e = a[d], e || (e = a[d] = [], a.sheets || (a.sheets = []), a.sheets.push(d)), e.push(c))
            }
            h.getExpressToken = function(a, b, c, d, e, f) {
                var g, h, j, l, m, n, o, p, q, t, u, v, w, y, z, A, B, C = r,
                    D = c.yj(),
                    E = c.Cf();
                for (E ? (g = new k.SheetParserContext(c, !f && E.useR1C1, i.pf(d, e)), C = new i.EvaluateContext(D, i.pf(d, e), (!1))) : g = new i.ParserContext(s, (!1), i.pf(0, 0)), g.ignoreError = !0, h = [], j = 0; j < a.length; j++) try {
                    if (l = a[j], "[" === l.ni || "#" === l.Qb[0] || 3 === l.hi) {
                        h.push({
                            text: l.HTa || l.ni,
                            type: l.Nc,
                            subType: l.hi,
                            canDrag: !1,
                            ranges: l.ranges,
                            value: l.ni
                        });
                        continue
                    }
                    if (m = [], j = this.buildExpressionInfo(g, a, j, m), m.length > 0) {
                        for (o = 0; o < m.length; o++) if (p = m[o], p instanceof x) h.push({
                            text: b.slice(p.mi, p.li + 1).join(""),
                            type: p.Nc,
                            subType: p.hi,
                            canDrag: n,
                            ranges: [],
                            value: p.ni
                        });
                        else if (p.Lf) {
                            if (q = p.Lf, t = b.slice(p.mi, p.li + 1).join(""), u = [], v = {}, n = !0, w = q.getRange && q.getRange(d, e), 8 === q.type) n = !1, C && (y = C.getName(q.value), ia(y, u, v, C, d, e));
                            else if (13 === q.type) n = !1, q.source() === D && w ? u.push(w) : u = null, ha(v, q.source(), w);
                            else if (1 === q.type) if (q.endSource) for (z = q.source, A = q.endSource, B = z.getSources(A), o = 0; o < B.length; o++) {
                                if (B[o] === D) {
                                    u.push(w);
                                    break
                                }
                                ha(v, B[o], w)
                            } else ha(v, q.source || D, w), q.source && q.source !== D || u.push(w);
                            else u = null;
                            u && u.length > 0 ? h.push({
                                text: t,
                                type: 0,
                                subType: 7,
                                canDrag: n,
                                ranges: u,
                                value: t,
                                sheetRanges: v
                            }) : h.push({
                                text: t,
                                type: l.Nc,
                                subType: l.hi,
                                canDrag: n,
                                ranges: u,
                                value: t,
                                sheetRanges: v
                            })
                        }
                    } else h.push({
                        text: l.ni,
                        type: l.Nc,
                        subType: l.hi,
                        canDrag: !1,
                        ranges: l.ranges,
                        value: l.ni
                    })
                } catch (a) {
                    h.push({
                        text: l.ni,
                        type: l.Nc,
                        subType: l.hi,
                        canDrag: !1,
                        ranges: l.ranges,
                        value: l.ni
                    })
                }
                return h
            };

            function ia(a, b, c, d, e, f) {
                var g, h, j, k;
                if (a) {
                    for (; 10 === a.type;) a = a.value;
                    if (12 === a.type && (h = a, a = h.value), a.type >= 2 && a.type <= 6);
                    else if (1 === a.type) g = a.getRange(e, f), !d.source || a.source && a.source !== d.source || b.push(g), ha(c, a.source || d.source, g);
                    else if (13 === a.type) g = a.getRange(e, f), a.source() === d.source && g && b.push(g), ha(c, a.source() || d.source, g);
                    else if (8 === a.type) j = s, a.source ? a.source.Cf() && (j = new i.EvaluateContext(a.source, (!1), i.pf(e, f))) : j = d, ia(j.getName(a.value), b, c, j, e, f);
                    else if (9 === a.type) ia(a.value, b, c, d, e, f), a.value2 && ia(a.value2, b, c, d, e, f);
                    else if (7 === a.type) for (k = 0; k < a.arguments.length; k++) ia(a.arguments[k], b, c, d, e, f)
                }
            }
            h.buildExpressionInfo = function(a, b, c, d) {
                var e, f, g, h, i, j = b[c];
                return j && "function" != typeof j && 0 === j.Nc ? (e = [], f = this.resolveToken(a, b, e, c) - 1, g = e[0], 1 === g.type || 13 === g.type || 8 === g.type || 5 === g.type && g.source ? (h = b[f], i = {
                    mi: j.mi,
                    li: h.li,
                    Lf: g
                }, d.push(i), f) : c) : c
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t = c(26),
                u = c(33),
                v = c(42),
                w = v.CalcEngine = {};
            v.X3 = !0, b = t.j, d = t.u, e = b.Ia, f = b.za, g = null, h = void 0, i = ["v", "n", "s", "b", "d", "sn"], j = u.Errors.Value, k = c(34), l = k && k.GeneralFormatter, m = b.G, n = function(a) {
                return u.Convert.Na(a, !0)
            }, o = u.Convert.vf, p = v.Range.prototype.contains, q = w.SheetRangeReference = function(a) {
                m(b, a);

                function b(b) {
                    a.call(this, g), this.references = b
                }
                return b.prototype.toArray = function(a, b, c, d, e) {
                    var f, g, h = this.references,
                        i = [];
                    for (f = 0; f < h.length; f++) {
                        if (g = h[f].xf.referenceToArray(h[f], a, b, c, d, e), g.isError && c) return g;
                        b ? Array.prototype.push.apply(i, g) : i.push(g[0]), f || (i.rowCount = g.rowCount, i.colCount = g.colCount)
                    }
                    return i.rangeCount = h.length, i
                }, b
            }(u.CalcReference), r = w.SheetParserContext = function(a) {
                m(b, a);

                function b(b, c, d, e) {
                    a.call(this, b && b.yj(), c, d, e), this.kj = b, this.addResolver(new w.SheetReferenceResolver(b)), this.addResolver(new w.StructureReferenceResolver(b))
                }
                return b
            }(u.ParserContext), e(r.prototype, {
                getExternalSource: function(a, b) {
                    var c, e, f, h = this,
                        i = h.kj.parent;
                    if (a && (!i || i.name !== a)) return g;
                    if (!i) return d.Mb(h.kj.name(), b) ? h.kj.yj() : g;
                    if (c = i.sheets, c && c.length > 0) for (e = 0; e < c.length; e++) if (f = c[e], d.Mb(f.name(), b)) return f.yj();
                    return u.ParserContext.prototype.getExternalSource.call(this, a, b)
                },
                getExternalSourceToken: function(a) {
                    return a.getName()
                },
                getTableByName: function(a) {
                    var b, c, d = this.kj.tables,
                        e = d ? d.findByName(a) : g;
                    if (!e && (b = this.kj.parent && this.kj.parent.sheets)) for (c = 0; c < b.length && (d = b[c].tables, !d || !(e = d.findByName(a))); c++);
                    return e
                },
                getTableByIndex: function(a, b) {
                    var c = this.kj.tables;
                    return c ? c.find(a, b) : g
                },
                setSource: function(a) {
                    this.source = a, a && a.getSheet && (this.kj = a.getSheet())
                }
            }), s = w.SheetSource = function(a) {
                m(b, a);

                function b(b) {
                    a.call(this, g), this.kj = b
                }
                return b
            }(u.CalcSource), e(s.prototype, {
                startCalculation: function() {
                    if (!this.Hu) {
                        var a = this.getRowCount(),
                            b = this.getColumnCount();
                        this.Hu = {
                            rowCount: a,
                            colCount: b
                        }, this.Iu = [], this.E$a = {}
                    }
                },
                endCalculation: function() {
                    this.Hu = g;
                    var a = this.Iu;
                    a && a.length > 0 && this.kj.Wq(c(58).Events.RangeChanged, {
                        sheet: this.kj,
                        sheetName: this.kj.name(),
                        row: 0,
                        col: 0,
                        rowCount: this.kj.getRowCount(),
                        colCount: this.kj.getColumnCount(),
                        changedCells: a,
                        action: 6
                    }), this.Iu = g, delete this.E$a
                },
                clearValueCache: function() {
                    this.Hu = g
                },
                getValue: function(a, b) {
                    var c, d, e, f, k, l, m, n, o, p = this,
                        q = p.kj;
                    if (a.row !== h) c = a.row, d = a.col;
                    else {
                        if (a.name) return null;
                        c = arguments[0], d = arguments[1], b = arguments[2]
                    }
                    return b = b || 0, c < 0 || d < 0 ? j : q.Ju && q.Ku === c && q.Lu === d ? q.Mu : (e = p.Hu, f = i[b], e ? (k = e.rowCount, l = e.colCount, c >= k ? g : d >= l ? g : (m = e[c], m || (m = e[c] = {}), n = m[d], n || (n = m[d] = {
                        v: q.getValue(c, d)
                    }), o = n[f], o === h && (o = u.Convert.wf(n.v, b, !0), n[f] = o), o)) : c >= p.getRowCount() ? g : d >= p.getColumnCount() ? g : p.kj.getValue(c, d))
                },
                getReference: function(a) {
                    var b = this;
                    return a.row === -1 && (a.row = 0, a.rowCount = b.getRowCount()), a.col === -1 && (a.col = 0, a.colCount = b.getColumnCount()), new u.CalcReference(b, [a])
                },
                getSheetRangeReference: function(a) {
                    var b, c, d, e, f, g = this.kj && this.kj.parent;
                    if (a.endSource && g && g.sheets && a.endSource instanceof s) {
                        for (b = g.sheets, c = !1, e = [], f = 0; f < b.length; f++) {
                            if (d = b[f].yj(), d === this) c = !0;
                            else if (d === a.endSource) {
                                e.push(d.getReference(a));
                                break
                            }
                            c && e.push(d.getReference(a))
                        }
                        return new q(e)
                    }
                },
                getSources: function(a) {
                    var b, c, d, e, f;
                    if (this.kj && this.kj.parent && this.kj.parent.sheets && a instanceof s) {
                        for (b = this.kj.parent.sheets, c = !1, e = [], f = 0; f < b.length; f++) {
                            if (d = b[f].yj(), d === this && (c = !0), d === a) {
                                e.push(d);
                                break
                            }
                            c && e.push(d)
                        }
                        return e
                    }
                },
                F$a: function(a, b) {
                    var c = a.yf[0];
                    return b.some(function(a) {
                        return p.call(c, a.row, a.col)
                    })
                },
                referenceToArray: function(a, c, d, e, k, m, n) {
                    var o, p, q, r, s, t, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K = this,
                        L = 1,
                        M = 1,
                        N = [],
                        O = K.kj,
                        P = K.Hu,
                        Q = i[c],
                        R = a.getRangeCount();
                    if (0 === R) return N.isError = !0, [];
                    if (P && (w = a.getRangeCount() + "_" + a.getRow(0) + "_" + a.getColumn(0) + "_" + a.getRowCount(0) + "_" + a.getColumnCount(0) + "_" + c + "_" + d, s = P[w], s && (x = K.Iu, y = x && x.length > 0, K.r$a && y && (z = K.E$a, z || (z = K.E$a = {}), z[w] || (K.F$a(a, x) && (s = g), z[w] = !0)), s))) return N = s, N.rowCount = s.rowCount, N.colCount = s.colCount, N.rangeCount = s.rangeCount, N;
                    for (A = this.getRowCount(), B = this.getColumnCount(), d = d === h || d, C = 0; C < R; C++) {
                        if (d || (t = [], N.push(t)), L = a.getRowCount(C), 0 === L) return N.isError = !0, N;
                        if (M = a.getColumnCount(C), 0 === M) return N.isError = !0, N;
                        if (q = a.getRow(C), r = a.getColumn(C), q >= A || r >= B) return N = [g], N.rowCount = 1, N.colCount = 1, N.rangeCount = 1, N;
                        for (q + L > A && (L = A - q), r + M > B && (M = B - r), F = O.Ju, G = 0; G < L; G++) for (o = q + G, d || (D = [], t.push(D)), P && (P[o] || (P[o] = {}), v = P[o]), H = 0; H < M; H++) {
                            if (p = r + H, F && O.Ku === o && O.Lu === p) s = O.Mu, F = !1;
                            else {
                                if (P ? (E = v[p], E ? s = E.v : (s = O.getValue(o, p), E = v[p] = {
                                        v: s
                                    })) : s = O.getValue(o, p), n && (I = O.getFormatter(), J = I instanceof l ? I.formatString() : I, "@" === J ? s = O.getText(o, p) : s instanceof Date && (s = b.Pa(s)), f(E) || (E = v[p] = {
                                        v: s
                                    })), e && u.Convert.vf(s)) return N = [s], N.isError = !0, N;
                                if (E && E[Q] !== h) s = E[Q];
                                else if (s = u.Convert.wf(s, c, !0, m), E && (E[Q] = s), k && E === s) return N = [j], N.isError = !0, N
                            }
                            u.Convert.u$a(s, m) || (d ? N.push(s) : D.push(s))
                        }
                    }
                    return d || 1 !== R || (N = N[0]), N.rowCount = L, N.colCount = M, N.rangeCount = R, P && (P[w] = N, P[w].rowCount = L, P[w].colCount = M, P[w].rangeCount = R), N
                },
                getColumnCount: function() {
                    return this.kj.getColumnCount()
                },
                getRowCount: function() {
                    return this.kj.getRowCount()
                },
                isHiddenRow: function(a, b) {
                    var c = this.kj,
                        d = c.Nu && c.Nu();
                    return !(!d && b) && 0 === c.getRowHeight(a)
                },
                getName: function() {
                    return this.kj.name()
                },
                setValue: function(a, b, d) {
                    var f, g, i, j, k, l, m, n, o, p, q, r, s, t, u, v = this,
                        w = v.kj;
                    if (a.row !== h) f = a.row, g = a.col;
                    else {
                        if (a.name) return;
                        f = arguments[0], g = arguments[1], b = arguments[2]
                    }
                    i = v.Hu, i && (j = i[f], j && (k = j[g], k && (k.v = b, void 0 !== k.b && (k.b = h), void 0 !== k.d && (k.d = h), void 0 !== k.n && (k.n = h), void 0 !== k.s && (k.s = h)))), l = w.ITa, m = !1, n = w.tables, o = n && n.find(f, g), o && (p = o.showHeader() && f === o.headerIndex(), q = o.showFooter() && f === o.footerIndex(), p || q || (m = o.yq(f, g, b))), r = w.wq, !m && r && r.Ou && (s = r.getValue(f, g), s.hasBinding && (i ? (u = i.bindingRows = i.bindingRows || {}, t = u[f], t || (t = u[f] = e({}, w.getDataItem(f)))) : t = e({}, w.getDataItem(f)), l.Cp(f, g, {
                        Dp: t,
                        Ep: s.value
                    }), r.setValue(f, g, b)), m = s.hasBinding), m || l.do("setValue", f, g, b, h, !0, !0), this.Iu ? this.Iu.push({
                        row: f,
                        col: g
                    }) : this.kj.Wq(c(58).Events.CellChanged, {
                        sheet: this.kj,
                        sheetName: this.kj.name(),
                        row: f,
                        col: g,
                        sheetArea: 3,
                        propertyName: "value",
                        oldValue: d,
                        newValue: b
                    })
                },
                getCustomFunction: function(a) {
                    return this.kj ? this.kj.Pu(a) : g
                },
                getCustomName: function(a) {
                    var b = this.kj ? this.kj.getCustomName(a) : g;
                    return b ? b.getExpression() : g
                },
                getSheet: function() {
                    return this.kj
                },
                getParserContext: function(a, b, c) {
                    return b = b || u.pf(0, 0), new r(this.kj, a, b, c)
                },
                setFormula: function(a, b, c) {},
                setArrayFormula: function(a, b, c, d, e) {},
                setFormulaByName: function(a, b) {},
                refresh: function() {
                    this.kj.repaint()
                },
                toJSON: function(a, b, c, d) {
                    var e, g, h, i, j, k, l, m, n = b,
                        o = a.data || {},
                        p = !0;
                    for (k = 0; k <= c; k++) if (e = o.dataTable || {}, g = n[k]) {
                        for (i = e[k], p = !i, i = i || {}, l = 0; l <= d; l++) if (h = g[l], h && h.Lf) {
                            j = i[l] || {};
                            try {
                                m = this.Cf().unparse(this, h.Lf, k, l, !1, !0), h.Pf ? h.Pf.row === k && h.Pf.col === l && (j.arrayInfo = h.Pf, j.formula = m) : j.formula = m, p = !1, i[l] = j
                            } catch (a) {}
                        }
                        p || (e[k] = i), f(e) || (o.dataTable = e)
                    }
                    f(o) || (a.data = o)
                }
            }), w.SpreadSource = function(a) {
                m(b, a);

                function b(b) {
                    a.call(this, g), this.Qu = b
                }
                return b.prototype.getCustomFunction = function(a) {
                    return this.Qu ? this.Qu.getCustomFunction(a) : g
                }, b.prototype.getCustomName = function(a) {
                    var b = this.Qu ? this.Qu.getCustomName(a) : g;
                    return b ? b.getExpression() : g
                }, b
            }(u.CalcSource);

            function x(a, b, d, e, f) {
                var g, i = a && a instanceof c(58).Worksheet && a,
                    j = new u.Parser;
                return d = d === h ? 0 : d, e = e === h ? 0 : e, g = new r(i, ( !! f), u.pf(d, e)), j.parse(g, b)
            }
            w.formulaToExpression = x;

            function y(a, b, d, e, f, g) {
                var i, j = a && a instanceof c(58).Worksheet && a,
                    k = new u.Parser;
                return d = d === h ? 0 : d, e = e === h ? 0 : e, i = new r(j, ( !! f), u.pf(d, e)), i.YSa = g, k.unparse(i, b)
            }
            w.expressionToFormula = y;

            function z(a, b, c, d, e) {
                c === h && (c = 0), d === h && (d = 0);
                var f = x(a, b, c, d, e);
                return w.evaluateExpression(a, f, c, d)
            }
            w.evaluateFormula = z;

            function A(a, b, c, d, e) {
                var f, g, i = a.Cf();
                return c === h && (c = a.getActiveRowIndex()), d === h && (d = a.getActiveColumnIndex()), f = !0, e && e.convertNullToZero !== h && (f = e.convertNullToZero), g = a.yj(), i.Hg(g, b, u.pf(c, d), !1, f)
            }
            w.evaluateExpression = A;

            function B(a, b, c, d, e) {
                var f, h, i, j = a.row,
                    k = a.col,
                    l = a.row + a.rowCount - 1,
                    m = a.col + a.colCount - 1,
                    n = !1,
                    o = !1,
                    p = !1,
                    q = !1;
                return arguments.length >= 4 && (n = 0 !== (1 & d), o = 0 !== (4 & d), p = 0 !== (2 & d), q = 0 !== (8 & d), j -= n ? b : 0, l -= o ? b : 0, k -= p ? c : 0, m -= q ? c : 0), e && (h = C(a, e, b), i = D(a, e, b), h && i) ? f = w.StructureReferenceResolver.create(e, h, i, a.col - e.dataRange().col, a.col + a.colCount - e.dataRange().col - 1) : (1 === a.rowCount && 1 === a.colCount ? f = u.rf(g, g, j, k, n, p) : (a.row < 0 && (j = l = u.BAND_INDEX_CONST), a.col < 0 && (k = m = u.BAND_INDEX_CONST), f = u.uf(g, g, j, k, l, m, n, p, o, q)), f)
            }
            w.rangeToExpression = B;

            function C(a, b, c) {
                if (1 === a.rowCount) {
                    if (b.hasHeadersRow() && a.row === b.startRow()) return 2;
                    if (b.hasTotalsRow() && a.row === b.endRow()) return 8;
                    if (c === a.row) return 1
                } else {
                    if (b.hasHeadersRow() && a.row === b.startRow()) {
                        if (a.rowCount === b.dataRange().rowCount + 1) return 6;
                        if (b.hasTotalsRow() && a.rowCount === b.dataRange().rowCount + 1 + 1) return 14
                    }
                    if (a.row === b.dataRange().row) {
                        if (a.rowCount === b.dataRange().rowCount) return 3;
                        if (b.hasTotalsRow() && a.rowCount === b.dataRange().rowCount + 1) return 12
                    }
                }
                return h
            }
            function D(a, b, c) {
                return a.col === b.startColumn() && a.colCount === b.dataRange().colCount ? 1 : 1 === a.colCount ? 2 : a.col >= b.startColumn() && a.col + a.colCount - 1 <= b.endColumn() ? 4 : h
            }
            function E(a, b, c, d, e) {
                var f = w.rangeToExpression(a, b, c, d),
                    h = new r(g, ( !! e), u.pf(b, c)),
                    i = new u.Parser;
                return i.unparse(h, f)
            }
            w.rangeToFormula = E;

            function F(a, b, c, d, e, f, g) {
                var h = w.rangeToExpression(b, c, d, e, g),
                    i = new r(a, ( !! f), u.pf(c, d)),
                    j = new u.Parser;
                return j.unparse(i, h)
            }
            w.rangeToFormulaWithStructReference = F;

            function G(a, b, c, d) {
                var e, f, g, h, i, j, k, l, m;
                if (!b) return null;
                if (c = c ? c : 0, d = d ? d : 0, e = a.Cf(), f = e.parse(a.yj(), b, c, d, !0, !0)) if (g = f.source, g && 13 === f.type) g = f.source();
                else if (1 === f.type && f.endSource) {
                    for (h = f.source, i = f.endSource, j = h.getSources(i), k = !1, l = 0; l < j.length; l++) if (j[l] === a.yj()) {
                        k = !0;
                        break
                    }
                    f = k && f
                }
                return !f || !f.getRange || g && g !== a.yj() ? null : (m = f.getRange(c, d), m ? new v.Range(m.row, m.col, m.rowCount, m.colCount) : null)
            }
            w.formulaToRange = G;

            function H(a, b, c, d, e) {
                var f, g, i, j, k, l, m, n, o, p, q = [],
                    r = [];
                if (!b) return q;
                for (f = {}, c = c || 0, d = d || 0, g = new u.Parser, i = g.parseReferenceExpressionInfos(b, a, c, d, h, e), j = 0; j < i.length; j++) for (k = i[j].sheetRanges, l = 0; k && l < k.sheets.length; l++) for (m = k.sheets[l], r = f[m], r || (f[m] = r = [], q.push({
                    sheetName: m,
                    ranges: r
                })), n = k[m], o = 0; o < n.length; o++) p = n[o], r.push(new v.Range(p.row, p.col, p.rowCount, p.colCount));
                return q
            }
            w.formulaToRanges = H;

            function I(a, b, c, d, e) {
                var f, h, i, j = "",
                    k = new u.Parser,
                    l = new r(g, ( !! e), u.pf(b, c));
                for (f = 0; f < a.length; f++) h = w.rangeToExpression(a[f], b, c, d), i = k.unparse(l, h), j += f > 0 ? ", " + i : i;
                return j
            }
            w.rangesToFormula = I, w.RangeReferenceRelative = {
                allAbsolute: 0,
                startRowRelative: 1,
                startColRelative: 2,
                endRowRelative: 4,
                endColRelative: 8,
                rowRelative: 5,
                colRelative: 10,
                allRelative: 15
            };

            function J(a, b, c, d, e, f, g) {
                var h, i, j, k, l = d.getValue(b, c),
                    m = !1,
                    p = 100,
                    q = .001,
                    r = .01,
                    s = (n(l) ? +l : 0) - g,
                    u = d.getValue(e, f),
                    v = (n(u) ? +u : 0) - g;
                if (n(u) && Math.abs(v) < q) m = !0;
                else if (o(u)) m = !1;
                else for (h = s + (0 === s ? r : r * s), j = 0; !m && j < p; j++) h = t.o.Lma(h, 13), a.setValue(b, c, h), u = d.getValue(e, f), i = (n(u) ? +u : 0) - g, n(u) && Math.abs(i) < q ? m = !0 : o(u) ? h = (s + h) / 2 : s - h === 0 ? h = s + (0 === s ? r : r * s) : v - i === 0 ? h = s + 2 * (h - s) : (k = h - i * (s - h) / (v - i), s = h, v = i, h = k);
                return m || a.setValue(b, c, l), m
            }
            w.goalSeek = J, a.exports = w
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a, b, d = c(33),
                e = d.Errors,
                f = Math.min,
                g = Math.max,
                h = d.kf,
                i = void 0,
                j = null,
                k = d.Convert,
                l = k.vf,
                m = d.rf,
                n = d.uf,
                o = d.Hh,
                p = d.Lh,
                q = d.Kh,
                r = d.Jh,
                s = e.Reference,
                t = d.Ih,
                u = d.BAND_INDEX_CONST,
                v = c(43).Ul,
                w = v.d_a;

            function x(a, b) {
                var c, d, e, h;
                return b || (b = this), c = g(a.row, b.row), d = g(a.column, b.col), e = f(a.row + a.rowCount, b.row + b.rowCount), h = f(a.column + a.colCount, b.col + b.colCount), c >= e || d >= h ? j : {
                    row: c,
                    col: d,
                    rowCount: e - c,
                    colCount: h - d,
                    intersectWith: x
                }
            }
            a = function() {
                function a(a, b, c, d, e, f, g, h) {
                    var i = this;
                    i.Rj = a, i.Vj = b, i.Wj = c, i.Qj = d, i.Tj = e, i.Uj = f, i.Xj = g, i.Yj = h
                }
                return a
            }(), a.prototype = {
                Nj: function() {
                    return this.Tj - this.Vj
                },
                Oj: function() {
                    return this.Uj - this.Wj
                },
                Sj: function(a, b, c, d, e) {
                    var f = this;
                    return f.Rj === a && (f.Vj === -1 || f.Vj <= b && b + d <= f.Vj + f.Xj) && (f.Wj === -1 || f.Wj <= c && c + e <= f.Wj + f.Yj)
                },
                Pj: function(a, b, c, d, e) {
                    var f = this;
                    return f.Qj === a && (f.Tj === -1 || f.Tj <= b && b + d <= f.Tj + f.Xj) && (f.Uj === -1 || f.Uj <= c && c + e <= f.Uj + f.Yj)
                },
                intersectWith: function(a, b, c, d, e) {
                    var f, g, h = this;
                    return h.Qj !== a ? j : (f = h.Zj(a, b, c, d, e), g = h.Zj(a, h.Vj, h.Wj, d, e), g.intersectWith(f))
                },
                Zj: function(a, b, c, d, e) {
                    var f = b === -1 ? 0 : b,
                        g = b === -1 || d === -1 ? a.rowCount : d,
                        h = c === -1 ? 0 : c,
                        i = c === -1 || e === -1 ? a.colCount : e;
                    return {
                        row: f,
                        column: h,
                        rowCount: g,
                        columnCount: i,
                        intersectWith: x
                    }
                }
            }, b = d.CalcOperatorAdjustor = function() {
                function a() {}
                return a.zj = function(b, c, e, g, h, i, j, k, l, m, n) {
                    var p, q, r, t, u, v = e,
                        w = a,
                        x = w.zj;
                    if (!e) return v;
                    if (10 === e.type) v = d.Lh(x.call(w, b, c, e.value, g, h, i, j, k, l, m, n));
                    else if (1 === e.type && e.sf()) {
                        if (p = f((e.source || c).getRowCount(), d.MAX_ROW_COUNT), q = f((e.source || c).getColumnCount(), d.MAX_COLUMN_COUNT), e.rowRelative && (e.row + g < 0 || e.row + g >= p) || e.columnRelative && (e.column + h < 0 || e.column + h >= q)) return o(s, e.source);
                        v = e.offset(0, 0, !1)
                    } else if (1 === e.type) {
                        if (p = f((e.source || c).getRowCount(), d.MAX_ROW_COUNT), q = f((e.source || c).getColumnCount(), d.MAX_COLUMN_COUNT), r = e, r.rowRelative && !e.isFullColumn && (r.row + g < 0 || r.row + g > p) || r.columnRelative && !e.isFullRow && (r.column + h < 0 || r.column + h > q) || r.endRowRelative && !e.isFullColumn && (r.endRow + g < 0 || r.endRow + g > p) || r.endColumnRelative && !e.isFullRow && (r.endColumn + h < 0 || r.endColumn + h > q)) return o(s, e.source, e.endSource);
                        v = e.offset(0, 0, !1)
                    } else if (9 === e.type) v = d.Kh(e.operatorType, x.call(w, b, c, e.value, g, h, i, j, k, l, m, n), e.value2 && x.call(w, b, c, e.value2, g, h, i, j, k, l, m, n));
                    else if (7 === e.type) {
                        if (t = [], e.arguments && e.arguments.length > 0) for (u = 0; u < e.arguments.length; u++) t[u] = x.call(w, b, c, e.arguments[u], g, h, i, j, k, l, m, n);
                        v = d.Jh(e, t)
                    } else 13 === e.type && (v = e.offsetWhenCopy(b, c, g, h, i, j, k, l, m, n));
                    return v
                }, a.copyFormula = function(b, c, e, g, h, j, k, l, m) {
                    var n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K = b,
                        L = g,
                        M = b.getSource(),
                        N = g.getSource(),
                        O = a;
                    if (K && L) {
                        for (n = N && N.getSheet().ITa.dUa(), o = c, p = e, q = h, r = j, s = k, t = l, c < 0 && (o = 0, s = f(b.rC(), g.rC())), e < 0 && (p = 0, t = f(b.cC(), g.cC())), h < 0 && (q = 0), j < 0 && (r = 0), K && K.Sg(q, r, s, t), u = new d.CalcSourceModel(b.Cf(), M), v = 0; v < s; v++) for (w = 0; w < t; w++) K.Uf(u, v + o, w + p, v, w);
                        for (x = {}, y = g.Cf(), v = 0; v < s; v++) if (!m || !N.isHiddenRow(v + q)) for (z = v + q, w = 0; w < t; w++) if (A = w + r, B = u.Kf(v, w)) {
                            if (B === x) continue;
                            if (B = O.zj(M, N, u.Kf(v, w), z, A, h - c, j - e, h, j, s, t), C = u.Qf(v, w), N) if (C) {
                                for (D = s - v < C.rowCount ? s - v : C.rowCount, E = t - w < C.colCount ? t - w : C.colCount, F = 0; F < D; F++) for (G = 0; G < E; G++) u.Rf(v + F, w + G, B);
                                g.setArrayFormula(z, A, D, E, y.unparse(N, B, z, A), i, n)
                            } else H = B ? y.unparse(N, B, z, A) : i, N.setFormula(z, A, H), I = u.Mf(v, w), I && (J = new d.EvaluateContext(N, d.pf(z, A), (!1)), I = d.Mh(J, B, !1, 0, 0), I = I === B ? i : I), L.ig(z, A, B, I, C, n);
                            else L.Rf(v + q, w + r, B), L.Xf(v + q, w + r, C)
                        } else L && L.Kf(z, A) && L.Sf(z, A, n)
                    }
                }, a.moveFormula = function(a, b, c, d, e, g, k, l) {
                    var m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E = a.Bj(),
                        F = d.Bj(),
                        G = E.Cf();
                    if (E && F) {
                        for (m = E.dUa(), n = F.dUa(), o = G.ih(), b < 0 && (b = 0, k = f(a.getRowCount(), d.getRowCount())), e < 0 && (e = 0), c < 0 && (c = 0, l = f(a.getColumnCount(), d.getColumnCount())), g < 0 && (g = 0), p = !(a === d && a.name() === d.name()), E.Sg(b, c, k, l), Q(E, b, c, k, l), F.Sg(e, g, k, l), Q(F, e, g, k, l), q = [], r = 0; r < k; r++) for (s = 0; s < l; s++) t = E.Kf(r + b, s + c), u = E.Qf(r + b, s + c), v = E.Mf(r + b, s + c), t ? (q.push({
                            Lf: t,
                            Pf: u,
                            Nf: v
                        }), E.Sf(r + b, s + c, m)) : q.push(j);
                        for (x = p ? {} : null, r = 0; r < k; r++) for (y = r + e, s = 0; s < l; s++) z = q.shift(), A = s + g, z ? (t = z.Lf, u = z.Pf, G && u && u.row === b + r && u.col === c + s && (w = h(y, A, u.rowCount, u.colCount)), u && (u.row = y, u.col = A), B = u ? w : i, v = z.Nf, F.FTa(n, y, A), F.Rf(y, A, t), F.Xf(y, A, B), F.Wf(y, A, v), p && (x[y + ", " + A] = t)) : (F.FTa(n, y, A), F.Rf(y, A, i), F.Xf(y, A, i));
                        o.Dj(E, b, c, k, l), o.Dj(F, e, g, k, l), C = E.getSource().getSheet(), D = C.uja && (C.parent || C).tja(), o.Ej(D, E.getSource(), b, c, F.getSource(), e, g, k, l, !0, x), p === !0 && o.Ej(D, E.getSource(), b, c, F.getSource(), e, g, k, l, !0, x)
                    }
                }, a
            }(), b.prototype = {
                isAdjustCell: function(a) {
                    return a.preAdj || a === this.sh
                },
                isAdjust: function(a) {
                    return a.preAdj || a === this.sh
                },
                hh: function(a, b) {
                    var c = this,
                        d, e;
                    if (0 === b) d = c.sh, e = c.wh;
                    else if (1 === b) d = c.th, e = c.xh;
                    else if (2 === b) d = c.uh, e = c.yh;
                    else {
                        if (3 !== b) return;
                        d = c.vh, e = c.zh
                    }
                    a && !a.preAdj && a !== d && (d ? e.nextAdj = a : 0 === b ? c.sh = a : 1 === b ? c.th = a : 2 === b ? c.uh = a : c.vh = a, a.preAdj = e, a.nextAdj = j, 0 === b ? c.wh = a : 1 === b ? c.xh = a : 2 === b ? c.yh = a : c.zh = a)
                },
                Fj: function(a, b) {
                    var c, d, e, f = this;
                    if (0 === b) c = f.sh;
                    else if (1 === b) c = f.th;
                    else if (2 === b) c = f.uh;
                    else {
                        if (3 !== b) return;
                        c = f.vh
                    }
                    a && (a.preAdj || a === c) && (d = a.preAdj, e = a.nextAdj, d ? d.nextAdj = e : 0 === b ? f.sh = e : 1 === b ? f.th = e : 2 === b ? f.uh = e : f.vh = e, e ? e.preAdj = d : 0 === b ? f.wh = d : 1 === b ? f.xh = d : 2 === b ? f.yh = d : f.zh = d, a.preAdj = j, a.nextAdj = j)
                },
                Gj: function(a, b, c, d, e) {
                    this.Hj(a, D, b, c, d, e);
                    var f = 0,
                        g = 0,
                        h = 0,
                        i = 0;
                    0 === b && (d && e ? h = c : d ? f = c : e ? i = c : g = c), E(a, D, b, c, f, g, h, i, d, e)
                },
                Hj: function(a, b, c, d, e, f) {
                    for (var g, j, k, l, m, n, o, p, q, r, s, t = this, u = {}; t.sh;) if (g = t.sh.ah, m = g.getSource(), j = t.sh.row, k = t.sh.column, u[j] && u[j][k]) t.Fj(t.sh, 0);
                    else {
                        if (l = g.Kf(j, k)) if (l = b.call(t, m, j, k, l, a, c, d, e, f), n = g.Qf(j, k)) for (n = h(j, k, n.rowCount, n.colCount), o = j; o < j + n.rowCount; o++) for (u[o] || (u[o] = {}), p = k; p < k + n.colCount; p++) g.fg(o, p, l, n, o === j && p === k), u[o][p] = !0;
                        else g.fg(j, k, l, n, !0);
                        else(g.getRowExpression && g.getRowExpression(j) || g.getColumnExpression && g.getColumnExpression(k)) && g.Ag(j, k, 1, 1);
                        t.Fj(t.sh, 0)
                    }
                    for (; t.th;) g = t.th.ah, j = t.th.row, g.getRowExpression && (l = g.getRowExpression(j), l && g.fg && g.fg(j, -1, b.call(t, m, j, -1, l, a, c, d, e, f), i, !0)), t.Fj(t.th, 1);
                    for (; t.uh;) g = t.uh.ah, k = t.uh.column, g.getColumnExpression && (l = g.getColumnExpression(k), l && g.fg && g.fg(-1, k, b.call(t, m, -1, k, l, a, c, d, e, f), i, !0)), t.Fj(t.uh, 2);
                    for (; t.vh;) q = t.vh, r = q.name, g = q.ah, l = g.DTa(r), s = b.call(t, g.getSource(), 0, 0, l, a, c, d, e, f), g.gg(r, s), t.Fj(t.vh, 3)
                },
                ph: function(a) {
                    var b = this,
                        c = a.getCalcSourceModel(),
                        d = a.getRowCount(),
                        e = a.getColumnCount();
                    Q(c, 0, 0, d, e), b.Hj(a, J), E(a, J, 0, 0, 0, 0, 0, 0, !0, !1)
                },
                Ej: function(b, c, d, e, f, g, j, k, l, m, n) {
                    var o, p, q, r, s, t, u, v, w, x, y, z, A = this,
                        B = M,
                        C = new a(c, d, e, f, g, j, k, l),
                        D = {};
                    for (b && N(b, C, m); A.sh;) if (o = A.sh.ah, s = o.dUa(), p = A.sh.row, q = A.sh.column, D[p] && D[p][q]) A.Fj(A.sh, 0);
                    else {
                        if (r = o.Kf(p, q), t = o.getSource(), r) if (n && n[p + ", " + q] && (t = c), r = B.call(A, t, p, q, r, C, m), u = o.Qf(p, q)) for (u = h(p, q, u.rowCount, u.colCount), v = p; v < p + u.rowCount; v++) for (D[v] || (D[v] = {}), w = q; w < q + u.colCount; w++) o.fg(v, w, r, u, v === p && w === q, s), D[v][w] = !0;
                        else o.fg(p, q, r, u, !0, s);
                        else(o.getRowExpression && o.getRowExpression(p) || o.getColumnExpression && o.getColumnExpression(q)) && o.Ag(p, q, 1, 1);
                        A.Fj(A.sh, 0)
                    }
                    for (; A.th;) o = A.th.ah, s = o.dUa(), p = A.th.row, o.getRowExpression && (r = o.getRowExpression(p), r && o.jg && o.jg(p, B.call(A, t, p, -1, r, C, m), i, s)), A.Fj(A.th, 1);
                    for (; A.uh;) o = A.uh.ah, s = o.dUa(), q = A.uh.column, o.getColumnExpression && (r = o.getColumnExpression(q), r && o.kg && o.kg(q, B.call(A, t, -1, q, r, C, m), i, s)), A.Fj(A.uh, 2);
                    for (; A.vh;) x = A.vh, y = x.name, o = x.ah, r = o.DTa(y), z = B.call(A, t, 0, 0, r, C, m), o.gg(y, z), A.Fj(A.vh, 3)
                },
                Dj: function(a, b, c, d, e) {
                    var f, g, h, i, j, k = this,
                        l = b + d,
                        m = c + e;
                    for (h = b; h < l; h++) for (i = c; i < m; i++) f = a.Yf(h, i), g = a.Kf(h, i), (f || g) && (k.Fj(f, 0), a.Q3(h, i, 0), j = a.qg(h, i, !0), k.hh(j, 0))
                },
                Ij: function(a, b, c) {
                    var d, e, f = this;
                    for (d = b; d !== -1 && d < b + c; d++)(a.Yf(-1, d) || a.Kf(-1, d)) && (a.Q3(-1, d, 2), e = a.sg(d, !0), f.hh(e, 2))
                },
                Jj: function(a, b, c) {
                    var d, e, f = this;
                    for (d = b; d !== -1 && d < b + c; d++)(a.Yf(d, -1) || a.Kf(d, -1)) && (a.Q3(d, -1, 1), e = a.rg(d, !0), f.hh(e, 1))
                },
                Kj: function(a) {
                    var b, c, e, f, g, h = this,
                        i = a.Cf().getAllSouceModels();
                    for (f = 0; f < i.length; f++) for (b = i[f], c = b.ag(), g = 0; g < c.length; g++) e = c[g], e && e.isVolatile && e instanceof d.CellCalc && !h.isAdjustCell(e) && h.hh(e, 0)
                },
                onBeforeAddRemoveRows: function(a, b) {
                    var c = a.rC(),
                        d = a.cC();
                    a.Sg(b, 0, c - b, d), a.Ug(b, c - b), Q(a, b, -1, c - b, -1, !0)
                },
                onAfterAddRemoveRows: function(a, b, c, d) {
                    var e = this,
                        f = a.rC(),
                        g = a.cC();
                    d ? a.Ag(b, 0, c, g) : f += c, e.Dj(a, b, 0, f - b, g), e.Jj(a, b, f - b), e.Kj(a), e.Gj(a.getSource(), b, c, !0, d), a.Cf().autoCalculation && a.Cf().recalculateAll(!1)
                },
                onAfterAddRemoveColumns: function(a, b, c, d) {
                    var e = this,
                        f = a.rC(),
                        g = a.cC();
                    d ? a.Ag(0, b, f, c) : g += c, e.Dj(a, 0, b, f, g - b), e.Ij(a, b, g - b), e.Kj(a), e.Gj(a.getSource(), b, c, !1, d), a.Cf().autoCalculation && a.Cf().recalculateAll(!1)
                },
                onBeforeAddRemoveColumns: function(a, b) {
                    var c = a.rC(),
                        d = a.cC();
                    a.Sg(0, b, c, d - b), a.Wg(b, d - b), Q(a, -1, b, -1, d - b, !0)
                },
                onAfterRemoveName: function(a, b) {
                    var c = a.wg(b, !1);
                    c && (c.updateListening(!0, !1), c.fh(), c.updateListeningOnRemoved())
                },
                adjustFormulaOnRemoveName: function(a, b, c) {
                    return R(a, b, c)
                },
                invalidName: function(a, b) {
                    var c, d;
                    b && (c = a.getCalcSourceModel(), d = c.wg(b.toUpperCase(), !0), d && d.Yg())
                },
                onAfterRemoveTable: function(a, b) {
                    var c, d, e, f, g, i, j, k, l, m, n = this;
                    for (g = 0; g < a.length; g++) i = a[g], Q(i.source().getCalcSourceModel(), i.startRow(), i.startColumn(), i.endRow() - i.startRow() + 1, i.endColumn() - i.startColumn() + 1);
                    for (j = {}; n.sh;) if (c = n.sh.ah, d = n.sh.row, e = n.sh.column, j[d] && j[d][e]) n.Fj(n.sh, 0);
                    else {
                        if (f = c.Kf(d, e)) if (f = y(f, a, d, e, b), k = c.Qf(d, e)) for (k = h(d, e, k.rowCount, k.colCount), l = d; l < d + k.rowCount; l++) for (j[l] || (j[l] = {}), m = e; m < e + k.colCount; m++) c.fg(l, m, f, k, l === d && m === e), j[l][m] = !0;
                        else c.fg(d, e, f, k, !0);
                        else(c.getRowExpression && c.getRowExpression(d) || c.getColumnExpression && c.getColumnExpression(e)) && c.Ag(d, e, 1, 1);
                        n.Fj(n.sh, 0)
                    }
                }
            };

            function y(a, b, c, e, f) {
                var g, h, i, k, l, m, n, o, p, q, r, s, t, u, v, w, x, z = y;
                if (9 === a.type) {
                    if (g = a.value, h = a.value2, i = z(g, b, c, e, f), k = h && z(h, b, c, e, f), g !== i || h !== k) return d.Kh(a.operatorType, i, k)
                } else if (7 === a.type) {
                    for (l = !1, m = [], n = 0; n < a.arguments.length; n++) o = a.arguments[n], p = z(o, b, c, e, f), l = l || o !== p, m.push(p);
                    if (l) return d.Jh(a, m)
                } else if (10 === a.type) {
                    if (q = a, r = q.value, s = z(r, b, c, e, f), r !== s) return d.Lh(s)
                } else if (13 === a.type) for (t = a, n = 0; n < b.length; n++) if (t.baseTable() === b[n]) return f ? d.Ih : (u = t.getRange(c === -1 ? 0 : c, e === -1 ? 0 : e, !0), v = c === -1 || 1 === t.referencePortions(), w = 1 === u.rowCount && 1 === u.columnCount, x = t.source(), w ? d.rf(x, j, u.row, u.col, v, !1) : new d.uf(x, j, u.row, u.col, u.row + u.rowCount - 1, u.col + u.colCount - 1, v, (!1), v, (!1)));
                return a
            }
            b.adjustExpressionOnRemoveTable = y;

            function z(a, b, c, d, e, f, g, h, i, j) {
                var k, l;
                return c >= 0 || !e ? (k = d + (e ? c : 0), l = f + (g ? c : 0), h === a && i + j <= c && (k -= e ? j : 0, l -= g ? j : 0), h === b && (i <= k ? (k += j, l += j) : i <= l && (l += j)), k -= e ? c : 0, l -= g ? c : 0, {
                    index: k,
                    endIndex: l
                }) : {
                    index: d,
                    endIndex: f
                }
            }
            function A(a, b, c, d, e, f, g, h, i, j) {
                if (b) {
                    var k = i ? e.row : e.column,
                        m = i ? e.rowRelative : e.columnRelative,
                        n;
                    if (i && c >= 0 || !i && d >= 0 || !m) {
                        if (j) n = z(a, b, i ? c : d, k, m, -1, !1, f, g, h).index;
                        else if (n = G(a, b, i ? c : d, k, m, f, g, h), l(n)) return o(n);
                        n !== k && (e = e.offset(i ? n - k : 0, i ? 0 : n - k, !0))
                    }
                }
                return e
            }
            function B(a, b, c, d, e, f, g, h, i, j) {
                var k, m, n, p, q, r, s, t;
                if (b) {
                    if (k = e.tf(), 3 === k || i && 2 === k || !i && 1 === k) return e;
                    if (m = i ? e.rowRelative : e.columnRelative, n = i ? e.endRowRelative : e.endColumnRelative, p = i ? e.row : e.column, q = i ? e.endRow : e.endColumn, i && c >= 0 || !i && d >= 0 || !m || !n) {
                        if (j) r = z(a, b, i ? c : d, p, m, q, n, f, g, h);
                        else if (r = H(a, b, i ? c : d, p, m, q, n, f, g, h), l(r)) return o(r);
                        s = r.index, t = r.endIndex, s === p && t === q || (e = e.offset2(i ? s - p : 0, i ? 0 : s - p, i ? t - q : 0, i ? 0 : t - q))
                    }
                }
                return e
            }
            function C(a, b, c, d, e, f, g, h, i) {
                if (b) {
                    var j = e;
                    if (j && b === j.source()) return j.offsetWhenInsertRemoveColumn(g, h, i)
                }
                return e
            }
            function D(a, b, c, d, e, f, g, h, k) {
                var l, m, n, o, s, t, u, v, w = D,
                    x = d;
                if (1 === d.type && d.sf()) x = A(a, d.source || a, b, c, d, e, f, g, h, k);
                else if (1 === d.type) x = B(a, d.source || a, b, c, d, e, f, g, h, k);
                else if (10 === d.type) l = w(a, b, c, d.value, e, f, g, h, k), l !== d.value && (x = p(l));
                else if (9 === d.type) m = w(a, b, c, d.value, e, f, g, h, k), n = d.value2 && w(a, b, c, d.value2, e, f, g, h, k), m === d.value && n === d.value2 || (x = q(d.operatorType, m, n));
                else if (7 === d.type) {
                    for (o = j, u = d, v = u.arguments.length, t = 0; t < v; t++) if (s = u.arguments[t], l = w(a, b, c, s, e, f, g, h, k), l !== s) {
                        o = [], o[t] = l;
                        break
                    }
                    if (o) {
                        for (t = 0; t < v; t++) s = u.arguments[t], o[t] !== i && o[t] !== j || (o[t] = w(a, b, c, s, e, f, g, h, k));
                        x = r(u, o)
                    }
                } else h || 13 !== d.type || (x = C(a, a, b, c, d, e, f, g, k));
                return x
            }
            function E(a, b, c, d, e, f, g, h, i, j) {
                var k = function(e, f, g, h) {
                        return b.call(this, e, g, h, f, a, c, d, i, j)
                    },
                    l = a.getSheet(),
                    m = l.uja && (l.parent || l).tja();
                F(m, k, i)
            }
            function F(a, b, c) {
                var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x;
                if (a) for (j = 0; j < a.length; j++) {
                    for (k = !0, l = !0, m = d.maxRowCount - 1, n = d.maxColumnCount - 1, e = a[j].validator, o = e.n5, p = 0, q = o.length; p < q && (r = o[p], s = r.rowCount, t = r.colCount, h = r.row, i = r.col, s !== -1 && (l = !1, m = m > h ? h : m), t !== -1 && (k = !1, n = n > i ? i : n), k || l); p++);
                    if (!(c && l || !c && k) && (g = a[j].sheet, u = g.yj(), f = e.condition(), v = f.getExpressions(), v && v.length > 0)) {
                        for (w = 0; w < v.length; w++) x = v[w], v[w] = b(u, x, m, n);
                        f.setExpressions(v)
                    }
                }
            }
            function G(a, b, c, d, e, f, g, h) {
                if (c >= 0 || !e) {
                    var i = d + (e ? c : 0);
                    if (f === a && g <= c && (i += e ? h : 0), f === b) if (g + h <= i) i -= h;
                    else if (g <= i) return s;
                    return i -= e ? c : 0
                }
                return d
            }
            function H(a, b, c, d, e, f, g, h, i, j) {
                var k, l, m;
                if (c >= 0 || !e) {
                    if (k = d + (e ? c : 0), l = f + (g ? c : 0), m = i + j - 1, h === a && i <= c && (k += e ? j : 0, l += g ? j : 0), h === b) if (m < k) k -= j, l -= j;
                    else {
                        if (i <= k && m >= l) return s;
                        i > l || (m <= l ? (k = i >= k ? k : i, l -= j) : l = i - 1)
                    }
                    return k -= e ? c : 0, l -= g ? c : 0, {
                        index: k,
                        endIndex: l
                    }
                }
                return {
                    index: d,
                    endIndex: f
                }
            }
            function I(a, b, c) {
                var d, e, f, g, h, k, l, m, n = I,
                    o = b;
                if (b) if (b.source) g = b.source, (a !== c && g === c || a === c && g !== c) && (o = t);
                else if (10 === b.type) d = n(a, b.value, c), d !== b.value && (o = p(d));
                else if (9 === b.type) h = n(a, b.value, c), k = b.value2 && n(a, b.value2, c), h === b.value && k === b.value2 || (o = q(b.operatorType, h, k));
                else if (7 === b.type) {
                    for (l = j, m = b.arguments.length, f = 0; f < m; f++) if (e = b.arguments[f], d = n(a, e, c), d !== e) {
                        l = [], l[f] = d;
                        break
                    }
                    if (l) {
                        for (f = 0; f < m; f++) e = b.arguments[f], l[f] !== i && l[f] !== j || (l[f] = n(a, e, c));
                        o = r(b, l)
                    }
                }
                return o
            }
            function J(a, b, c, d, e) {
                return I(a, d, e)
            }
            function K(a, b, c, d, e) {
                var f, g, h, k, l = !! d.source,
                    n = l ? d.source : a,
                    o = d.rowRelative,
                    p = d.columnRelative,
                    q = e.Nj(),
                    r = e.Oj();
                if ((b >= 0 || !o) && (c >= 0 || !p)) {
                    if (f = d.row + (o ? b : 0), g = d.column + (p ? c : 0), k = e.Pj(e.Qj, b, c, 1, 1), n === e.Qj && e.Pj(n, f, g, 1, 1) && !e.Sj(n, f, g, 1, 1) && (!o && !p || !k)) return t;
                    if (h = (l && n === e.Rj || !l && a === e.Rj) && (!k && e.Sj(e.Rj, f, g, 1, 1) || k && e.Pj(e.Qj, f, g, 1, 1)), k && (f -= o ? q : 0, g -= p ? r : 0), h && (f += q, g += r), f -= o ? b : 0, g -= p ? c : 0, e.Rj === e.Qj ? n = l ? d.source : i : (n = i, h && k && l ? n = e.Qj : h && k || (h ? n = e.Qj : k && !l && (n = e.Rj))), f !== d.row || g !== d.column || n !== d.source) return m(n, j, f, g, o, p)
                } else if ((b >= 0 || !o) && c === -1) {
                    if (f = d.row + (o ? b : 0), e.Pj(a, b, c, 1, 1) && (f -= o ? q : 0), e.Sj(n, f, -1, o, -1)) f += q;
                    else if (e.Pj(n, f, -1, 1, -1)) return t;
                    if (f -= o ? b : 0, f !== d.row) return m(d.source, j, f, d.column, o, d.columnRelative)
                } else if (b === -1 && c >= 0 && !p) {
                    if (g = d.column + (p ? c : 0), e.Pj(a, b, c, 1, 1) && (g -= p ? r : 0), e.Sj(n, f, g, 1, 1)) g += r;
                    else if (e.Pj(n, f, g, 1, 1)) return t;
                    if (g -= p ? c : 0, f !== d.row || g !== d.column) return m(d.source, d.endSource, d.row, g, d.rowRelative, p)
                }
                return d
            }
            function L(a, b, c, d, e) {
                var f, g, h, k, l, m, o, p, q, r, s, v, w, x, y, z, A, B, C, D, E, F, G = !! d.source,
                    H = G ? d.source : a,
                    I = d.tf(),
                    J = e.Nj(),
                    K = e.Oj();
                if (0 === I) if (f = d.rowRelative, g = d.columnRelative, h = d.endRowRelative, k = d.endColumnRelative, b >= 0 || !f || !h || c >= 0 || !g || !k) {
                    if (l = d.row + (f ? b : 0), m = d.endRow + (h ? b : 0), o = d.column + (g ? c : 0), p = d.endColumn + (k ? c : 0), q = m - l + 1, r = p - o + 1, B = e.Pj(e.Qj, b, c, 1, 1), B && (C = e.Tj - e.Uj, D = e.Uj - e.Tj, q += (f ? -C : 0) + (h ? C : 0), r += (g ? -D : 0) + (k ? D : 0)), H === e.Qj && e.Pj(H, l, o, q, r) && !r && (!f && !g && !h && !k || !B)) return t;
                    if (A = (G && H === e.Rj || !G && a === e.Rj) && (!B && e.Sj(e.Rj, l, o, q, r) || B && e.Pj(e.Qj, l, o, q, r)), B && (w = f ? J : 0, x = h ? J : 0, y = g ? K : 0, z = k ? K : 0, l -= w, m -= x, o -= y, p -= z), E = !1, A) s = J, v = K, l += s, m += s, o += v, p += v;
                    else if (e.Pj(H, l, o, q, r)) {
                        if (F = e.intersectWith(H, l, o, q, r), !F || F.rowCount !== q && F.colCount !== r) return t;
                        l = F.row + J, o = F.col + K, m = l + F.rowCount, p = o + F.colCount, E = !0
                    }
                    if (l -= f ? b : 0, m -= h ? b : 0, o -= g ? c : 0, p -= k ? c : 0, e.Rj === e.Qj ? H = G ? d.source : i : (H = i, A && B && G ? H = e.Qj : A && B || (A ? H = e.Qj : B && !G && (H = e.Rj))), l !== d.row || o !== d.column || m !== d.endRow || p !== d.endColumn || E || H !== d.source) return n(H, j, l, o, m, p, f, g, h, k)
                } else if (!(b >= 0) && f && h || c !== -1) {
                    if (b === -1 && (c >= 0 || !g || !k)) {
                        if (o = d.column + (g ? c : 0), p = d.endColumn + (k ? c : 0), o > p) return t;
                        if (e.Pj(a, b, c, 1, 1) && (y = g ? K : 0, z = k ? K : 0, o -= y, p -= z), r = p - o, e.Sj(H, -1, o, -1, r)) v = K, o += v, p += v;
                        else if (e.Pj(H, -1, o, -1, r)) return t;
                        if (o -= g ? c : 0, p -= k ? c : 0, o !== d.column || p !== d.endColumn) return n(d.source, j, d.row, o, d.endRow, p, d.rowRelative, g, d.endRowRelative, k)
                    }
                } else {
                    if (l = d.row + (f ? b : 0), m = d.endRow + (h ? b : 0), l > m) return t;
                    if (e.Pj(a, b, c, 1, 1) && (w = f ? J : 0, x = h ? J : 0, l -= w, m -= x), q = m - l, e.Sj(H, l, -1, q, -1)) s = J, l += s, m += s;
                    else if (e.Pj(H, l, -1, q, -1)) return t;
                    if (l -= f ? b : 0, m -= h ? b : 0, l !== d.row || m !== d.endRow) return n(d.source, j, l, d.column, m, d.endColumn, f, d.columnRelative, h, d.endColumnRelative)
                } else if (1 === I) {
                    if (f = d.rowRelative, h = d.endRowRelative, b >= 0 || !f || !h) {
                        if (l = d.row + (f ? b : 0), m = d.endRow + (h ? b : 0), l > m) return t;
                        if (e.Pj(a, b, c, 1, 1) && (w = f ? J : 0, x = h ? J : 0, l -= w, m -= x), q = m - l, e.Sj(H, l, -1, q, -1)) s = J, l += s, m += s;
                        else if (e.Pj(H, l, -1, q, -1)) return t;
                        if (l -= f ? b : 0, m -= h ? b : 0, l !== d.row || m !== d.endRow) return n(d.source, d.endSource, l, u, m, u, f, !1, h, !1)
                    }
                } else if (2 === I) {
                    if (g = d.columnRelative, k = d.endColumnRelative, o = d.column + (g ? c : 0), p = d.endColumn + (k ? c : 0), o < p) return t;
                    if (e.Pj(a, b, c, 1, 1) && (y = g ? K : 0, z = k ? K : 0, o -= y, p -= z), r = p - o, e.Sj(H, -1, o, -1, r)) v = K, o += v, p += v;
                    else if (e.Pj(H, -1, o, -1, r)) return t;
                    if (o -= g ? c : 0, p -= k ? c : 0, o !== d.column || p !== d.endColumn) return n(d.source, d.endSource, u, o, u, p, !1, g, !1, k)
                }
                return d
            }
            function M(a, b, c, d, e, f) {
                var g, h, k, l, m, n, o, s = M,
                    t = d;
                if (1 === d.type && d.sf()) t = f ? K(a, b, c, d, e) : O(a, b, c, d, e);
                else if (1 === d.type) t = f ? L(a, b, c, d, e) : P(a, b, c, d, e);
                else if (10 === d.type) g = s(a, b, c, d.value, e, f), g !== d.value && (t = p(g));
                else if (9 === d.type) h = s(a, b, c, d.value, e, f), k = d.value2 && s(a, b, c, d.value2, e, f), h === d.value && k === d.value2 || (t = q(d.operatorType, h, k));
                else if (7 === d.type) {
                    for (l = j, o = d.arguments.length, n = 0; n < o; n++) if (m = d.arguments[n], g = s(a, b, c, m, e, f), g !== m) {
                        l = [], l[n] = g;
                        break
                    }
                    if (l) {
                        for (n = 0; n < o; n++) m = d.arguments[n], l[n] !== i && l[n] !== j || (l[n] = s(a, b, c, m, e, f));
                        t = r(d, l)
                    }
                }
                return t
            }
            function N(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n, o;
                for (l = 0; l < a.length; l++) if (d = a[l].validator, m = d.n5, i = w(m), j = i.r, k = i.c, h = a[l].sheet, n = h.yj(), e = d.condition(), f = e.getExpressions(), f && f.length > 0) {
                    for (o = 0; o < f.length; o++) g = f[o], f[o] = M(n, j, k, g, b, c);
                    e.setExpressions(f)
                }
            }
            function O(a, b, c, d, e) {
                var f, g, h = d.source || a,
                    i = d.rowRelative,
                    k = d.columnRelative,
                    l = e.Nj(),
                    n = e.Oj();
                if ((b >= 0 || !i) && (c >= 0 || !k)) {
                    if (f = d.row + (i ? b : 0), g = d.column + (k ? c : 0), e.Pj(a, b, c, 1, 1) ? (f -= i ? l : 0, g -= k ? n : 0) : e.Sj(a, f, g, 1, 1) && (f += i ? l : 0, g += k ? n : 0), e.Sj(h, f, g, 1, 1) ? (f += l, g += n) : e.Pj(h, f, g, 1, 1) && (f -= l, g -= n), f -= i ? b : 0, g -= k ? c : 0, f !== d.row || g !== d.column) return m(d.source, j, f, g, i, k)
                } else if ((b >= 0 || !i) && c === -1) {
                    if (f = d.row + (i ? b : 0), e.Pj(a, b, -1, 1, -1) ? f -= i ? l : 0 : e.Sj(a, f, -1, 1, -1) && (f += i ? l : 0), e.Sj(h, f, -1, 1, -1) ? f += l : e.Pj(h, f, -1, 1, -1) && (f -= l), f -= i ? b : 0, f !== d.row || g !== d.column) return m(d.source, j, f, d.column, i, d.columnRelative)
                } else if (b === -1 && c >= 0 && !k && (g = d.column + 0, e.Pj(a, -1, c, -1, 1) ? g -= 0 : e.Sj(a, -1, g, -1, 1) && (g += 0), e.Sj(h, -1, g, -1, 1) ? g += n : e.Pj(h, -1, g, -1, 1) && (g -= n), g -= 0, f !== d.row || g !== d.column)) return m(d.source, j, d.row, g, d.rowRelative, k);
                return d
            }
            function P(a, b, c, d, e) {
                var f, g, h, i, k, l, m, o, p, q, r, s, v, w, x, y, z = d.source || a,
                    A = d.tf(),
                    B = e.Nj(),
                    C = e.Oj();
                if (0 === A) {
                    if (m = d.rowRelative, o = d.columnRelative, p = d.endRowRelative, q = d.endColumnRelative, !(b >= 0) && m && p || !(c >= 0) && o && q) if (!(b >= 0) && m && p || c !== -1) {
                        if (b === -1 && (c >= 0 || !o || !q)) {
                            if (h = d.column + (o ? c : 0), i = d.endColumn + (q ? c : 0), h < i) return t;
                            if (e.Pj(a, -1, c, -1, 1) ? (w = o ? C : 0, y = q ? C : 0, h -= w, i -= y) : e.Sj(a, -1, c, -1, 1) && (w = o ? C : 0, y = q ? C : 0, h += w, i += y), l = i - h, e.Sj(z, -1, h, -1, l) ? (s = C, h += s, i += s) : e.Pj(z, -1, h, -1, l) && (s = C, h -= s, i -= s), h -= o ? c : 0, i -= q ? c : 0, h !== d.column || i !== d.endColumn) return n(d.source, j, h, d.endRow, i, d.rowRelative, o, d.endRowRelative, q)
                        }
                    } else {
                        if (f = d.row + (m ? b : 0), g = d.endRow + (p ? b : 0), f < g) return t;
                        if (e.Pj(a, b, -1, 1, -1) ? (v = m ? B : 0, x = m ? B : 0, f -= v, g -= x) : e.Sj(a, b, -1, 1, -1) && (v = m ? B : 0, x = m ? B : 0, f += v, g += x), k = g - f, e.Sj(z, f, -1, k, -1) ? (r = B, f += r, g += r) : e.Pj(z, f, -1, k, -1) && (r = B, f -= r, g -= r), f -= m ? b : 0, g -= p ? b : 0, f !== d.row || g !== d.endRow) return n(d.source, j, f, d.column, g, d.endColumn, m, d.columnRelative, p, d.endColumnRelative)
                    } else if (f = d.row + (m ? b : 0), g = d.endRow + (p ? b : 0), h = d.column + (o ? c : 0), i = d.endColumn + (q ? c : 0), k = g - f, l = i - h, e.Pj(a, b, c, 1, 1) ? (v = m ? B : 0, w = o ? C : 0, x = p ? B : 0, y = q ? C : 0, f -= v, g -= x, h -= w, i -= y) : e.Sj(a, f, h, k, l) && (v = m ? B : 0, w = o ? C : 0, x = p ? B : 0, y = q ? C : 0, f += v, g += x, h += w, i += y), e.Sj(z, f, h, k, l) ? (r = B, s = C, f += r, g += r, h += s, i += s) : e.Pj(z, f, h, k, l) && (r = B, s = C, f -= r, g -= r, h -= s, i -= s), f -= m ? b : 0, g -= p ? b : 0, h -= o ? c : 0, i -= q ? c : 0, f !== d.row || h !== d.column || g !== d.endRow || i !== d.endColumn) return n(d.source, j, f, h, g, i, m, o, p, q)
                } else if (1 === A) {
                    if (m = d.rowRelative, p = d.endRowRelative, b >= 0 || !m || !p) {
                        if (f = d.row + (m ? b : 0), g = d.endRow + (p ? b : 0), f < g) return t;
                        if (e.Pj(a, b, -1, 1, -1) ? (v = m ? B : 0, x = p ? B : 0, f -= v, g -= x) : e.Sj(a, b, -1, 1, -1) && (v = m ? B : 0, x = p ? B : 0, f += v, g += x), k = g - f, e.Sj(z, f, -1, k, -1) ? (r = B, f += r, g += r) : e.Pj(z, f, -1, k, -1) && (r = B, f -= r, g -= r), f -= m ? b : 0, g -= p ? b : 0, f !== d.row || g !== d.endRow) return n(d.source, j, f, u, g, u, m, !1, p, !1)
                    }
                } else if (2 === A) {
                    if (o = d.columnRelative, q = d.endColumnRelative, h = d.column + (o ? c : 0), i = d.endColumn + (q ? c : 0), h > i) return t;
                    if (e.Pj(a, -1, c, -1, 1) ? (w = o ? C : 0, y = q ? C : 0, h -= w, i -= y) : e.Sj(a, -1, c, -1, 1) && (w = o ? C : 0, y = q ? C : 0, h += w, i += y), l = i - h, e.Sj(z, -1, h, -1, l) ? (s = C, h += s, i += s) : e.Pj(z, -1, h, -1, l) && (s = C, h -= s, i -= s), h -= o ? c : 0, i -= q ? c : 0, h !== d.column || i !== d.endColumn) return n(d.source, j, u, h, u, i, !1, o, !1, q)
                }
                return d
            }
            function Q(a, b, c, d, e, f) {
                a._g(b, c, d, e, !0, !1, f)
            }
            function R(a, b, c) {
                var d, e, f, g, h, k, l, m = R,
                    n = b;
                if (8 === b.type) {
                    if (b.value === c && (!b.source || b.source === a.getSource())) return o(s, b.source)
                } else if (10 === b.type) d = m(a, b.value, c), d !== b.value && (n = p(d));
                else if (9 === b.type) g = m(a, b.value, c), h = b.value2 && m(a, b.value2, c), g === b.value && h === b.value2 || (n = q(b.operatorType, g, h));
                else if (7 === b.type) {
                    for (k = j, l = b.arguments.length, f = 0; f < l; f++) if (e = b.arguments[f], d = m(a, e, c), d !== e) {
                        k = [], k[f] = d;
                        break
                    }
                    if (k) {
                        for (f = 0; f < l; f++) e = b.arguments[f], k[f] !== i && k[f] !== j || (k[f] = m(a, e, c));
                        n = r(b, k)
                    }
                }
                return n
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e = c(42),
                f = null,
                g = void 0,
                h = c(33),
                i = c(44).GC$,
                j = i.each,
                k = c(43),
                l = c(26),
                m = l.u.Nb,
                n = function() {
                    return l.C(e.SR)()
                },
                o = c(58).Worksheet,
                p = l.j.Fa,
                q = parseInt;

            function r(a) {
                return a.columnRelative
            }
            function s(a) {
                return a.endColumnRelative
            }
            function t(a) {
                return a.rowRelative
            }
            function u(a) {
                return a.endRowRelative
            }
            function v(a) {
                return a.Cf()
            }
            function w(a) {
                return a.column
            }
            function x() {
                var a = this;
                return a.Ru ? void(a.Ru = !1) : (a.Su = {}, a.Tu = {}, void(a.et ? a.et.clearAll() : a.ft = new e.CalcEngine.SheetSource(a)))
            }
            e.ReferenceStyle = {
                a1: 0,
                r1c1: 1
            }, b = function() {
                function a(a, b, c, d, e) {
                    var f = this;
                    f.Cj = a, f.Uu = c, f.Vu = d, f.Lf = b, p(e) || (f.kT = e)
                }
                return a.prototype = {
                    getName: function() {
                        return this.Cj
                    },
                    getRow: function() {
                        return this.Uu
                    },
                    getColumn: function() {
                        return this.Vu
                    },
                    getExpression: function() {
                        return this.Lf
                    },
                    getComment: function() {
                        return this.kT
                    },
                    fg: function(a) {
                        this.Lf = a
                    }
                }, a
            }(), e.NameInfo = b;

            function y(a, b, c, d, e) {
                var f = a.Ms(b, c, d, e),
                    g = f && f.formulas;
                return g && g.length > 0
            }
            d = {
                resetCalc: function() {
                    x.call(this), this.Ru = !0
                },
                recalcAll: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q = v(this);
                    if (q) {
                        if (this.suspendPaint(), q.suspend(!0), a) for (b = this.parent, c = b && b.sheets || [this], d = 0; d < c.length; d++) {
                            if (e = c[d], f = e.Tu, g = e.yj(), f) for (h in f) i = f[h], j = i.Lf, k = q.unparse(g, j, 0, 0), i.Lf = q.parse(g, k, 0, 0);
                            for (l = g.getCalcSourceModel(), m = l.getAllNodes(), n = 0; n < m.length; n++) o = m[n], p = o.calc, p && o.Lf && z(q, p)
                        }
                        q.resume(!0), this.resumePaint()
                    }
                },
                recalcRange: function(a, b, c, d) {
                    var e = v(this);
                    e && e.recalcRange(this.yj(), a, b, c, d)
                },
                recalcRows: function(a) {
                    var b, c = v(this);
                    if (c && !c.ignoreDirty()) {
                        for (c.suspend(), b = 0; b < a.length; b++) c.recalculate(this.ft, a[b], -1);
                        c.resume(!1)
                    }
                },
                zq: function(a, b) {
                    var c = v(this);
                    c && !c.ignoreDirty() && c.recalculate(this.ft, a, b)
                },
                getCalcService: function() {
                    return this.Wu || (this.Wu = new h.CalcService, this.yj().setCalcService(this.Wu), this.Wu.initParserContext(this.yj())), this.Wu
                },
                Cf: function() {
                    return this.getCalcService()
                },
                suspendCalcService: function(a) {
                    v(this) && v(this).suspend(a)
                },
                resumeCalcService: function(a) {
                    v(this) && v(this).resume(a)
                },
                yj: function(a) {
                    return p(a) || 3 === a ? this.ft : f
                },
                Bj: function() {
                    var a = this;
                    return !a.et && a.ft && (a.et = a.Cf().getSourceModel(a.ft)), a.et
                },
                Ns: function(a, b, c, d) {
                    return this.Bj() && this.Bj().tg(a, b, c, d, !0, !0)
                },
                Ms: function(a, b, c, d) {
                    return this.Bj() && this.Bj().tg(a, b, c, d, !1, !0)
                },
                Vq: function(a, b, c, d, f) {
                    return f = f === g || f, !(e.X3 && f && this.Ns(a, b, c, d) || !f && y(this, a, b, c, d)) || (this.Os(4, n().Exp_ChangePartOfArray), !1)
                },
                addCustomFunction: function(a) {
                    this.Xu(a), this.recalcAll()
                },
                Xu: function(a) {
                    if (!(a && a instanceof h.Functions.Function)) throw Error(n().Exp_InvalidCustomFunction);
                    this.Su[m(a.name)] = a
                },
                getCustomFunction: function(a) {
                    return a ? this.Su[m(a)] : f
                },
                removeCustomFunction: function(a) {
                    a && (delete this.Su[m(a)], this.recalcAll())
                },
                clearCustomFunctions: function() {
                    this.Su = {}, this.recalcAll()
                },
                Pu: function(a) {
                    var b, c, d;
                    return a ? (b = this, c = b.parent, d = b.getCustomFunction(a), !d && c && c.getCustomFunction && (d = c.getCustomFunction(a)), d) : f
                },
                addCustomName: function(a, b, c, d, e) {
                    this.Yu(a, b, c, d, !1, e)
                },
                getCustomName: function(a) {
                    return a ? this.Tu[m(a)] : g
                },
                getCustomNames: function() {
                    var a = [];
                    return j(this.Tu, function(b, c) {
                        a.push(c)
                    }), a
                },
                removeCustomName: function(a) {
                    var b, c;
                    a && (b = m(a), delete this.Tu[b], c = {}, c[b] = b, this.Zu(c, !1))
                },
                clearCustomNames: function() {
                    var a = this,
                        b = a.Tu;
                    a.Tu = {}, this.Zu(b, !1)
                },
                createNameInfo: function(a, c, d, e, g) {
                    var h, i = this,
                        j = v(i),
                        k = i.yj();
                    return j && k ? (h = j.parse(k, c, e, g), new b(a, h, d, e, g)) : f
                },
                Yu: function(a, c, d, e, f, g) {
                    var h, i, j, k, l;
                    if (!a || !c) throw Error(n().Exp_InvalidCustomName);
                    if (h = this, i = v(h), j = h.yj(), i && j) {
                        if (f) try {
                            k = i.parse(j, c, d, e, !1, !1, !0)
                        } catch (a) {} else k = i.parse(j, c, d, e);
                        h.Tu[m(a)] = new b(a, k, d, e, g), f || (l = {}, l[a] = a, this.Zu(l, !0))
                    }
                },
                Zu: function(a, b) {
                    var c, d = this.Bj();
                    if (d) {
                        for (c in a) d.updateNameCalc(c, b);
                        this.recalcAll()
                    }
                },
                $u: function(a) {
                    var b, c, d;
                    return a ? (b = this, c = b.parent, d = b.getCustomName(a), !d && c && c.getCustomName && (d = c.getCustomName(a)), d) : f
                },
                setFormula: function(a, b, c) {
                    this._u(a, b, c, f, !1)
                },
                _u: function(a, b, c, d, e, h, i) {
                    var j, k, l, m, o, q, r, s, t = this;
                    if (1 !== h && 2 !== h) {
                        if (p(h) && (h = 3), a < 0 || a >= t.getRowCount() || b < 0 || b >= t.getColumnCount()) return void t.Os(0, n().Exp_IndexOutOfRange);
                        j = a >= 0 ? a : 0, k = b >= 0 ? b : 0, d = d || (c && t.Wu ? t.Wu.parse(t.ft, c, j, k, !1, e, e) : f), l = t.tables, 3 === h && a >= 0 && b >= 0 && l && !(m = l.Hma(a, b, 1, 1, c, d)) || (o = t.Bj(), q = t.conditionalFormats, o && (r = o.getFormula(a, b), s = t.ITa, o.setFormula(a, b, c, d, e, g, s.dUa()), q && q.Nm(), i || t.Bq("formula", a, b, h, r, c)), t.t4 && t.t4(a, b, 1, 1, h), t.$p())
                    }
                },
                setArrayFormula: function(a, b, c, d, e) {
                    this.bv(a, b, c, d, e, !1)
                },
                bv: function(a, b, c, d, e, f, g) {
                    var h, i, j, k, l, m, o, q = this;
                    if (1 !== g && 2 !== g) {
                        if (p(g) && (g = 3), a < 0 || a + c > q.getRowCount() || b < 0 || b + d > q.getColumnCount()) return void q.Os(0, n().Exp_IndexOutOfRange);
                        if (q.ITa.MTa(a, b, c, d)) return void q.Os(0, n().Exp_ArrayFromulaSpan);
                        if (h = q.tables, !(3 === g && a >= 0 && b >= 0 && h) || (i = h.Hma(a, b, c, d, e))) {
                            if (j = q.Bj(), k = q.conditionalFormats, j && (q.suspendEvent(), j.setArrayFormula(a, b, c, d, e, f, q.ITa.dUa()), q.resumeEvent(), k && k.Nm(), q.jm < 1)) {
                                for (l = [], m = a; m < a + c; m++) for (o = b; o < b + d; o++) l.push({
                                    row: m,
                                    col: o
                                });
                                q.Bu(a, b, c, d, l, 5, g, e)
                            }
                            q.$p()
                        }
                    }
                },
                getFormula: function(a, b, c) {
                    var d = this.Bj();
                    return d ? d.getFormula(a, b, c) : f
                },
                Ima: function(a, b) {
                    var c = this.Bj();
                    return c ? c.Kf(a, b) : f
                },
                getFormulaInformation: function(a, b) {
                    var c, d, e = {},
                        f = this.Bj();
                    return f && (c = f.Kf(a, b), c && (d = f.Qf(a, b), e.hasFormula = !0, d && (e.baseRange = new k.Range(d.row, d.col, d.rowCount, d.colCount)), e.isArrayFormula = !! d, a = d ? d.row : a, b = d ? d.col : b, e.formula = this.Wu.unparse(this.ft, c, a, b), e.formulaWithCulture = this.Wu.unparse(this.ft, c, a, b, !0), e.hasFormula = !! e.formula)), e
                },
                hasFormula: function(a, b) {
                    var c = this.Bj();
                    return !!c && c.hasFormula(a, b)
                },
                cv: function(a, b, c, d) {},
                dv: function() {
                    var a, b, c, d, e, f = this.Bj();
                    if (f) for (a = 0, b = f.rC(), c = f.cC(); a < b;) {
                        for (d = 0; d < c;) e = f.qg(a, d), e && (e.ng(), e.og()), d++;
                        a++
                    }
                },
                clearFormula: function(a, b, c, d, e) {
                    var g, h, i = this;
                    for (a < 0 && (a = 0, c = i.getRowCount()), b < 0 && (b = 0, d = i.getColumnCount()), g = 0; g < c; g++) if (e(i, g + a)) for (h = 0; h < d; h++) i.setFormula(g + a, h + b, f)
                },
                nameFunctionsFromJSON: function(a, b) {
                    var c, d, e, f, g, h, i, j, l;
                    if (a) {
                        if (c = this, d = a.customFunctions) for (e in d) d.hasOwnProperty(e) && (f = d[e], g = k.getTypeFromString(f.typeName), g && (h = new g, h.fromJSON(f, b), c.Xu(h)));
                        if (i = a.names) {
                            for (j = 0; j < i.length; j++) l = i[j], c.Yu(l.name, l.formula, l.row, l.col, !0, l.comment);
                            c.dv()
                        }
                    }
                },
                formulaFromJSON: function(a, b, c) {
                    var d, e, g, h, i, k, l, m, n, p, r, s, t;
                    if (a) {
                        if (d = this, e = a.data, g = c && c.ignoreFormula, e && !g && (h = e.dataTable)) for (l = d.getRowCount(), m = d.getColumnCount(), n = 0; n < l; n++) if (i = h[n]) for (p = 0; p < m; p++) k = i[p], r = k && k.formula, r && (s = k.arrayInfo, s ? d.bv(n, p, q(s.rowCount, 10), q(s.colCount, 10), r, !0) : d._u(n, p, r, f, !0, f, !0));
                        t = o._n, t && j(t, function(e, f) {
                            var g = f.fromJsonAfterFormula;
                            g && g.call(d, a, b, c)
                        })
                    }
                },
                ev: function(a) {
                    var b = this,
                        c = b.Wu;
                    c && !a || (b.Wu = a ? a : new h.CalcService, b.yj().setCalcService(b.Wu), b.Wu.initParserContext(b.yj()), c ? a.setSourceModel(b.yj(), c.getSourceModel(b.ft)) : b.et = b.Wu.getSourceModel(b.ft))
                },
                setCalc: function(a, b) {
                    this.Wu = a, this.ft = b, this.et = a.getSourceModel(b), this.parent && (this.parent.Wu = a)
                },
                fv: function() {
                    this.gv(!1, 1)
                },
                mUa: function(a) {
                    var b, c, d, e, f, g = this,
                        h = a.changeType,
                        i = a.row,
                        j = a.rowCount,
                        k = a.col,
                        l = a.colCount,
                        m = g.Bj();
                    m && (b = g.ITa.dUa(), c = v(m), d = m.xf, e = c.ih(), f = c.lh.asyncManager, "addingRows" === h ? g.Vq(i, 0, 0, g.getColumnCount()) ? (e.onBeforeAddRemoveRows(m, i), o.adjustCustomNameOnInsertRemove(g, i, j, !0, !0), m.addRows(i, j), f.addRows(d, i, j)) : a.canAdd = !1 : "addRows" === h ? (b && b.push({
                        type: "addRows",
                        row: i,
                        rowCount: j
                    }), c.suspend(), e.onAfterAddRemoveRows(m, i, j, !0), c.resume(!1)) : "deletingRows" === h ? g.Vq(i, 0, j, g.getColumnCount()) ? (e.onBeforeAddRemoveRows(m, i), o.adjustCustomNameOnInsertRemove(g, i, j, !1, !0), m.deleteRows(i, j), f.deleteRows(d, i, j)) : a.canDelete = !1 : "deleteRows" === h ? (b && b.push({
                        type: "deleteRows",
                        row: i,
                        rowCount: j
                    }), c.suspend(), e.onAfterAddRemoveRows(m, i, j, !1), c.resume(!1)) : "addingColumns" === h ? g.Vq(0, k, g.getRowCount(), 0) ? (e.onBeforeAddRemoveColumns(m, k), o.adjustCustomNameOnInsertRemove(g, k, l, !0, !1), m.addColumns(k, l), f.addColumns(d, i, j)) : a.canAdd = !1 : "addColumns" === h ? (b && b.push({
                        type: "addColumns",
                        col: k,
                        colCount: l
                    }), c.suspend(), e.onAfterAddRemoveColumns(m, k, l, !0), c.resume(!1)) : "deletingColumns" === h ? g.Vq(0, k, g.getRowCount(), l) ? (e.onBeforeAddRemoveColumns(m, k), o.adjustCustomNameOnInsertRemove(g, k, l, !1, !1), m.deleteColumns(k, l), f.deleteColumns(d, i, j)) : a.canDelete = !1 : "deleteColumns" === h && (b && b.push({
                        type: "deleteColumns",
                        col: k,
                        colCount: l
                    }), c.suspend(), e.onAfterAddRemoveColumns(m, k, l, !1), c.resume(!1)))
                },
                nUa: function(a, b, c) {
                    var d = c.type,
                        e = this;
                    "addRows" === d ? (c.changeType = "deletingRows", e.mUa(c), c.changeType = "deleteRows", e.mUa(c)) : "deleteRows" === d ? (c.changeType = "addingRows", e.mUa(c), c.changeType = "addRows", e.mUa(c)) : "addColumns" === d ? (c.changeType = "deletingColumns", e.mUa(c), c.changeType = "deleteColumns", e.mUa(c)) : "deleteColumns" === d && (c.changeType = "addingColumns", e.mUa(c), c.changeType = "addColumns", e.mUa(c))
                },
                gUa: function(a) {
                    var b, c = v(this),
                        d = this.Bj();
                    for (c.suspend(); a.length;) b = a.pop(), b.type ? this.nUa(c, d, b) : d.$Va.apply(d, b);
                    c.resume(!1)
                }
            }, i.extend(o.prototype, d), o.adjustCustomNameOnInsertRemove = function(a, b, c, d, e) {
                var f, g, h, i, k, l, m = this;
                if (!a.parent || !a.parent.sheets) return f = a.getCustomNames(), void(f && j(f, function(f, i) {
                    g = i.getExpression(), h = m.adjustCustomNameExpOnInsertRemove(a, a, b, c, d, e, g), h !== g && i.fg(h)
                }));
                for (i = a.parent.sheets, k = a.parent.getCustomNames(), k && j(k, function(f, i) {
                    g = i.getExpression(), h = m.adjustCustomNameExpOnInsertRemove(null, a, b, c, d, e, g), h !== g && i.fg(h)
                }), l = 0; l < i.length; l++) f = i[l].getCustomNames(), f && j(f, function(f, j) {
                    g = j.getExpression(), h = m.adjustCustomNameExpOnInsertRemove(i[l], a, b, c, d, e, g), h !== g && j.fg(h)
                })
            }, o.adjustCustomNameExpOnInsertRemove = function(a, b, c, d, e, g, i) {
                var j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L = b.yj(),
                    M = h.Hh(h.Errors.Reference, L);
                if (9 === i.type) {
                    if (j = i.value, k = i.value2, l = this.adjustCustomNameExpOnInsertRemove(a, b, c, d, e, g, j), m = k && this.adjustCustomNameExpOnInsertRemove(a, b, c, d, e, g, k), j !== l || k !== m) return h.Kh(i.operatorType, l, m)
                } else if (7 === i.type) {
                    for (n = !1, o = [], q = 0; q < i.arguments.length; q++) p = i.arguments[q], r = this.adjustCustomNameExpOnInsertRemove(a, b, c, d, e, g, p), n = n || p !== r, o.push(r);
                    if (n) return h.Jh(i, o)
                } else if (1 === i.type && i.sf()) {
                    if (s = i.source || a && a.yj(), t = i.row, u = i.column, v = t, w = u, s && s === L && (g && !i.rowRelative || !g && !i.columnRelative)) {
                        if (g && e) t += t >= c ? d : 0;
                        else if (!g && e) u += u >= c ? d : 0;
                        else if (g) {
                            if (t >= c + d) t -= d;
                            else if (t >= c) return M
                        } else if (u >= c + d) u -= d;
                        else if (u >= c) return M;
                        if (t !== v || u !== w) return h.rf(L, f, t, u, i.rowRelative, i.columnRelative)
                    }
                } else if (1 === i.type) {
                    if (s = i.source || a && a.yj(), x = i.row, y = i.column, z = i.endRow, A = i.endColumn, B = i.rowRelative, C = i.columnRelative, D = i.endRowRelative, E = i.endColumnRelative, F = x, G = y, H = z, I = A, s && s === L) {
                        if (g && e) x += !B && x >= c ? d : 0, z += !D && z >= c ? d : 0;
                        else if (!g && e) y += !C && y >= c ? d : 0, A += !E && A >= c ? d : 0;
                        else if (g && !e) {
                            if (!B && x >= c && !D && z < c + d) return M;
                            if (B && D || z < c) return i;
                            if (!B) if (x >= c + d) x -= d;
                            else if (x < c);
                            else {
                                if (D) return M;
                                x > c && (x = c)
                            }
                            if (!D) if (z >= c + d) z -= d;
                            else {
                                if (B) return M;
                                z < c + d && (z = c - 1)
                            }
                        } else {
                            if (!C && y >= c && !E && A < c + d) return M;
                            if (C && E || A < c) return i;
                            if (!C) if (y >= c + d) y -= d;
                            else if (y < c);
                            else {
                                if (E) return M;
                                y > c && (y = c)
                            }
                            if (!E) if (A >= c + d) A -= d;
                            else {
                                if (C) return M;
                                A < c + d && (A = c - 1)
                            }
                        }
                        if (y !== G || A !== I || x !== F || z !== H) return h.uf(L, f, x, y, z, A, B, C, D, E)
                    }
                } else if (10 === i.type && (J = i.value, K = this.adjustCustomNameExpOnInsertRemove(a, b, c, d, e, g, J), J !== K)) return h.Lh(K);
                return i
            };

            function z(a, b) {
                var c, d, e, f, g, h = b.ah,
                    i = h.getSource(),
                    j = -1,
                    k = -1;
                b.name ? (d = b.name, c = h.getNodeByName(d)) : (j = b.row, k = b.column, j = void 0 === j ? -1 : j, k = void 0 === k ? -1 : k, c = h.getNode(j, k)), e = c.Lf, f = c.Pf, g = a.unparse(i, e, j < 0 ? 0 : j, k < 0 ? 0 : k), f ? h.setArrayFormula(f.row, f.col, f.rowCount, f.colCount, g) : d ? h.setFormulaByName(d, g) : h.setFormula(j, k, g, null, !0, !0)
            }
            o.adjustModelFormulasAfterSetSheetName = function(a) {
                var b, c, d, e, f, g, h, i, j, k = v(a),
                    l = k.getSourceModel(a.yj());
                if (l) for (b = l.getAllNodes(), c = 0; c < b.length; c++) if (d = b[c], e = d.calc) for (d.Lf && z(k, e), f = e.Ze, h = 0; h < f.length; h++) if (i = e[f[h]]) for (j in i) g = i[j], g && g.ah !== l && z(k, g)
            }, o.copyFormula = function(a, b, c, d, e, f, g, i, j) {
                h && h.CalcOperatorAdjustor.copyFormula(a.Bj(), b, c, d.Bj(), e, f, g, i, j)
            }, o.moveFormula = function(a, b, c, d, e, f, g, i) {
                h && h.CalcOperatorAdjustor.moveFormula(a, b, c, d, e, f, g, i)
            }, o.adjustCustomNameOnMove = function(a, b, c, d, e, f, g, h) {
                var i, k, l, m, n, o;
                if (!a.parent || !a.parent.sheets) return i = a.getCustomNames(), void(i && j(i, function(i, j) {
                    k = j.getExpression(), l = A(a, a, b, c, d, e, f, g, h, k), l !== k && j.fg(l)
                }));
                for (m = a.parent.sheets, n = a.parent.getCustomNames(), n && j(n, function(i, j) {
                    k = j.getExpression(), l = A(null, a, b, c, d, e, f, g, h, k), l !== k && j.fg(l)
                }), o = 0; o < m.length; o++) i = m[o].getCustomNames(), i && j(i, function(i, j) {
                    k = j.getExpression(), l = A(m[o], a, b, c, d, e, f, g, h, k), l !== k && j.fg(l)
                })
            };

            function A(a, b, c, d, e, g, i, j, k, l) {
                var m, n, o, p, q, v, x, y, z, B, C, D, E, F = g - c,
                    G = i - d,
                    H = b.yj(),
                    I = e.yj();
                if (9 === l.type) {
                    if (m = l.value, n = l.value2, o = A(a, b, c, d, e, g, i, j, k, m), p = n && A(a, b, c, d, e, g, i, j, k, n), m !== o || n !== p) return h.Kh(l.operatorType, o, p)
                } else if (7 === l.type) {
                    for (q = !1, v = [], y = 0; y < l.arguments.length; y++) x = l.arguments[y], z = A(a, b, c, d, e, g, i, j, k, x), q = q || x !== z, v.push(z);
                    if (q) return h.Jh(l, v)
                } else if (1 === l.type && l.sf()) {
                    if ((!l.source || l.source === H) && !l.rowRelative && l.row >= c && l.row < c + j && !l.columnRelative && l.column >= d && l.column < d + k) return h.rf(I, f, l.row + F, l.column + G)
                } else if (1 === l.type) {
                    if (B = !t(l) && !r(l), C = !u(l) && !s(l), (!l.source || l.source === H) && (B && l.row >= c && w(l) >= d || C && l.endColumn < d + k && l.endRow < c + j)) return h.uf(I, f, l.row + (B ? F : 0), w(l) + (B ? G : 0), l.endRow + (C ? F : 0), l.endColumn + (C ? G : 0), t(l), r(l), u(l), s(l))
                } else if (10 === l.type && (D = l.value, E = A(a, b, c, d, e, g, i, j, k, D), D !== E)) return h.Lh(E);
                return l
            }
            o.$n("calc", {
                priority: 1e3,
                init: x,
                dispose: function(a) {
                    a !== !1 && (this.ft = f, this.Wu = f)
                },
                attach: function(a) {
                    var b = this,
                        d = c(63).Workbook;
                    a instanceof d ? b.ev(a.Wu) : b.ev()
                },
                onLayoutChanged: function(a) {
                    e.X3 && !this.Cf().isAdjustSuspended() && this.mUa(a)
                },
                toJson: function(a, b) {
                    var c, d, e, f, g, h = this,
                        k = h.Su;
                    i.isEmptyObject(k) || (a.customFunctions = k), c = [], d = h.getCustomNames(), e = v(h), d && e && (j(d, function(a, b) {
                        var d = b.getName(),
                            f = b.getRow(),
                            g = b.getColumn(),
                            i = b.getExpression(),
                            j = b.getComment(),
                            k = e.unparse(h.yj(), i, f, g, !1, !0),
                            l = {
                                name: d,
                                formula: k,
                                row: f,
                                col: g
                            };
                        j && (l.comment = j), c.push(l)
                    }), c.length > 0 && (a.names = c)), f = b && b.ignoreFormula, g = h.et, g && !f && g.toJSON(a)
                },
                fromJson: function(a, b, c, d) {
                    var e = this;
                    e.clearCustomFunctions(), e.clearCustomNames(), d && (e.nameFunctionsFromJSON(a, b, c), e.formulaFromJSON(a, b, c))
                },
                setName: function(a) {
                    var b, c, d;
                    o.adjustModelFormulasAfterSetSheetName(this), b = this.Bj(), c = v(b), d = c.lh.asyncManager, d.changeSourceName(a.oldName, a.newName)
                },
                beforeSetName: function() {
                    this.uja && (this.parent || this).tja()
                }
            }), a.exports = e
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g = c(42),
                h = c(26),
                i = c(64),
                j = c(44).GC$,
                k = c(43),
                l = c(49).oo,
                m = c(65).Commands,
                n = c(67).hv,
                o = c(68).iv,
                p = c(70).jv,
                q = c(52).To,
                r = c(56).S4,
                s = i.UndoManager,
                t = i.CommandManager,
                u = j.each,
                v = j.extend,
                w = k.Ul,
                x = g.X3,
                y = k.En,
                z = k.Events,
                A = k.Vl,
                B = k.Rect,
                C = k.Im,
                D = h.j.Fa,
                E = k.Ul.Nl,
                F = k.Ul.Pl,
                G = w.Ql,
                H = w.hZa,
                I = window.jQuery,
                J = parseInt,
                K = window,
                L = document,
                M = null,
                N = Math.round,
                O = Math.min,
                P = "number",
                Q = "mousedown",
                R = "mouseup",
                S = "scroll",
                T = "resize",
                U = "focus",
                V = ".gcSpread",
                W = ".gcSpreadInternal",
                X = ".gcScrollbar",
                Y = "div",
                Z = "table",
                $ = "px",
                _ = "gc-scroll-handle",
                aa = "gc-scroll-bar",
                ba = "none",
                ca = "absolute",
                da = "content-box",
                ea = "solid",
                fa = " ui-widget-header ui-state-default btn btn-default",
                ga = "cultureChanged",
                ha = "workbook",
                ia = "gcUIElement",
                ja = "gc-no-user-select",
                ka = "visible",
                la = "overflow";

            function ma() {
                return h.C(g.SR)()
            }
            function na(a) {
                return a.getActiveSheet()
            }
            function oa(a, b, c) {
                a.Wq(z.ActiveSheetChanged, {
                    oldSheet: b,
                    newSheet: c
                })
            }
            function pa(a, b) {
                a.Wq(z.ActiveSheetChanging, b)
            }
            function qa(a, b) {
                a.Wq(z.FormulatextboxActiveSheetChanging, b)
            }
            function ra(a, b, c) {
                a.Wq(z.FormulatextboxActiveSheetChanged, {
                    oldSheet: b,
                    newSheet: c
                })
            }
            g.HorizontalPosition = {
                left: 0,
                center: 1,
                right: 2,
                nearest: 3
            }, g.VerticalPosition = {
                top: 0,
                center: 1,
                bottom: 2,
                nearest: 3
            }, g.ShowResizeTip = {
                none: 0,
                column: 1,
                row: 2,
                both: 3
            }, g.ShowScrollTip = {
                none: 0,
                horizontal: 1,
                vertical: 2,
                both: 3
            }, g.AutoFitType = {
                cell: 0,
                cellWithHeader: 1
            }, g.InvalidOperationType = {
                setFormula: 0,
                copyPaste: 1,
                dragFill: 2,
                dragDrop: 3,
                changePartOfArrayFormula: 4,
                changeSheetName: 5
            }, g.ResizeZeroIndicator = {
                default:
                    0, enhanced: 1
            }, g.CopyPasteHeaderOptions = {
                noHeaders: 0,
                rowHeaders: 1,
                columnHeaders: 2,
                allHeaders: 3
            }, b = {
                allowUserDragDrop: !0,
                allowUserDragFill: !0,
                allowUserZoom: !0,
                allowUserResize: !0,
                allowUndo: !0,
                allowSheetReorder: !0,
                allowContextMenu: !0,
                defaultDragFillType: 5,
                showDragFillSmartTag: !0,
                showHorizontalScrollbar: !0,
                showVerticalScrollbar: !0,
                scrollbarShowMax: !0,
                scrollbarMaxAlign: !1,
                tabStripVisible: !0,
                tabStripRatio: .5,
                tabEditable: !0,
                newTabVisible: !0,
                cutCopyIndicatorVisible: !0,
                cutCopyIndicatorBorderColor: "#217346",
                tabNavigationVisible: !0,
                backColor: "white",
                backgroundImage: M,
                backgroundImageLayout: 0,
                showResizeTip: 0,
                showDragDropTip: !0,
                showDragFillTip: !0,
                scrollIgnoreHidden: !1,
                highlightInvalidData: !1,
                showScrollTip: 0,
                grayAreaBackColor: M,
                useTouchLayout: !1,
                hideSelection: !1,
                resizeZeroIndicator: 1,
                allowUserEditFormula: !0,
                enableFormulaTextbox: !0,
                referenceStyle: 0,
                autoFitType: 0,
                allowCopyPasteExcelStyle: !0,
                allowExtendPasteRange: !1,
                copyPasteHeaderOptions: 3,
                allowUserDragMerge: !1,
                font: M
            };

            function sa(a, b, c) {
                var d, e, f = C.Lm("gc-vertical-scrollbar" + fa),
                    g = J(f.zIndex) > 2007 ? 1 : 0,
                    h = b - c;
                h % 2 === 0 ? (d = h / 2, e = d - g) : (d = (h - g) / 2, e = d), j(a).css({
                    "box-sizing": da,
                    border: ba,
                    "border-color": ba,
                    "border-left-style": ea,
                    "border-left-width": g + $,
                    "border-left-color": f.borderLeftColor,
                    "background-color": f.backgroundColor,
                    width: c,
                    padding: "0px " + d + "px 0px " + e + $,
                    margin: 0
                })
            }
            function ta(a, b, c) {
                var d, e, f = C.Lm("gc-horizontal-scrollbar" + fa),
                    g = J(f.zIndex) > 2007 ? 1 : 0,
                    h = b - c;
                h % 2 === 0 ? (d = h / 2, e = d - g) : (d = (h - g) / 2, e = d), j(a).css({
                    "box-sizing": da,
                    border: ba,
                    "border-color": ba,
                    "border-top-style": ea,
                    "border-top-width": g + $,
                    "border-top-color": f.borderTopColor,
                    "background-color": f.backgroundColor,
                    height: c,
                    padding: e + "px 0px " + d + "px 0px",
                    margin: 0
                })
            }
            function ua(a, b, c) {
                var d = C.Lm("gc-footer-corner" + fa);
                j(a).css({
                    border: ba,
                    padding: 0,
                    margin: 0,
                    width: b + $,
                    height: c + $,
                    "background-color": d.backgroundColor
                })
            }
            function va(a, c) {
                var d, e, f = this;
                f.name = "", f.kv = !1, f.lv = 1, f.eq = 0, f.mv = !1, f.options = G(b, function(a, b, c) {
                    f.Op(a, b, c)
                }), f.T3(c), d = 1, c && (e = c.sheetCount, typeof e === P && (d = e)), f.qo = a, f.ad(d, a)
            }
            k.Zn(va), va.Qp = b, va.nv = 1, va.ov = 0, va.prototype = {
                constructor: va,
                commandManager: function() {
                    return this.wu
                },
                undoManager: function() {
                    return this.pv
                },
                Op: function(a, b, c) {
                    var d, e, f = this,
                        g = na(f);
                    switch (a) {
                        case "allowUndo":
                            f.pv && (f.pv.zc = b);
                            break;
                        case "backColor":
                        case "cutCopyIndicatorBorderColor":
                        case "cutCopyIndicatorVisible":
                        case "grayAreaBackColor":
                        case "hideSelection":
                        case "highlightInvalidData":
                        case "resizeZeroIndicator":
                        case "allowUserDragFill":
                        case "allowUserDragMerge":
                            g && g.$p();
                            break;
                        case "backgroundImage":
                        case "backgroundImageLayout":
                            f.Ys(), g && g.$p();
                            break;
                        case "newTabVisible":
                        case "tabNavigationVisible":
                            d = f.hq, d && d.repaint();
                            break;
                        case "showHorizontalScrollbar":
                        case "showVerticalScrollbar":
                        case "useTouchLayout":
                        case "tabStripVisible":
                            f.fq();
                            break;
                        case "tabStripRatio":
                            f.aq();
                            break;
                        case "scrollIgnoreHidden":
                        case "scrollbarMaxAlign":
                        case "scrollbarShowMax":
                            g && (g.oq = !0, g.jq = !0, g.$p());
                            break;
                        case "referenceStyle":
                            e = x && f.Cf(), e && (e.useR1C1 = 1 === b)
                    }
                },
                ad: function(a, b) {
                    var c, d, e, f = this;
                    for (x && f.qv(), f.rv = [], f.sv = E("input"), f.jm = 0, f.xD = 0, f.tv = {
                        fromSheet: M,
                        isCutting: !1
                    }, f.Ks = M, f.sheets = [], f.Lq = {}, f.pv = new s(f, (-1), f.options.allowUndo), c = f.wu = new t(f), c.addListener("workbookUndo", function(a) {
                        var b = a.command,
                            c = m.aWa(b),
                            d = f.wu[b.cmd];
                        d && d.canUndo() && !c && !b.yTa && f.undoManager().Cc(b, a.s4)
                    }), m.uv(c), va.ao(f, "init"), d = 0; d < a; d++) e = f.vv(f.wv(d)), f.sheets.push(e), e.Ls(f);
                    f.suspendPaint(), b && f.ws(b), f.uu = new r(f), f.resumePaint()
                },
                hitTest: function(a, b, c) {
                    var d, e, f, g, h, i, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C = this,
                        D = C.getActiveSheet(),
                        E = C.hq,
                        F = C.Pt,
                        G = C.St,
                        H = j(C.getHost()).width(),
                        I = j(C.getHost()).height();
                    if (a < 0 || a > H || b < 0 || b > I) return M;
                    if (d = C.oia(), e = D.Vs(), f = D.Dr(), g = e.left - d.left, h = e.top - d.top, a > g && a < f.width + g && b > h && b < f.height + h) return {
                        worksheetHitInfo: D.hitTest(a - g, b - h, !1, c),
                        x: a,
                        y: b
                    };
                    if (i = j(E.Ws()).offset(), k = E.Dr(), l = i.left - d.left, m = i.top - d.top, a > l && a < k.width + l && b > m && b < k.height + m) {
                        switch (n = E.hitTest(a - l, b - m), o = {}, n.type) {
                            case "navButton":
                                o = {
                                    navButton: n.element
                                };
                                break;
                            case "sheetTab":
                                o = {
                                    sheetTab: {
                                        sheetName: n.element,
                                        sheetIndex: n.index
                                    }
                                };
                                break;
                            case "resize":
                                o = {
                                    resize: !0
                                };
                                break;
                            default:
                                o = {
                                    blank: !0
                                }
                        }
                        return {
                            tabStripHitInfo: o,
                            x: a,
                            y: b
                        }
                    }
                    return p = j(F.Bv()).offset(), q = F.pia(), r = p.left - d.left, s = p.top - d.top, a > r && a < q.width + r && b > s && b < q.height + s ? {
                        horizontalScrollBarHitInfo: {
                            element: F.hitTest(a - r, b - s).element
                        },
                        x: a,
                        y: b
                    } : (t = j(G.Bv()).offset(), u = G.pia(), v = t.left - d.left, w = t.top - d.top, a > v && a < u.width + v && b > w && b < u.height + w ? {
                        verticalScrollBarHitInfo: {
                            element: G.hitTest(a - v, b - w).element
                        },
                        x: a,
                        y: b
                    } : (x = j(C.Ov).offset(), y = parseInt(C.Ov.style.width.substr(0, C.Ov.style.width.indexOf("px"))), z = parseInt(C.Ov.style.height.substr(0, C.Ov.style.height.indexOf("px"))), A = x.left - d.left, B = x.top - d.top, a > A && a < y + A && b > B && b < z + B ? {
                        footerCornerHitInfo: {
                            element: "footerCorner"
                        },
                        x: a,
                        y: b
                    } : void 0))
                },
                oia: function() {
                    var a = this,
                        b;
                    return b = I ? I(a.qo).offset() : j(a.qo).offset(), b ? (b.top += L.body.clientTop || 0, b.left += L.body.clientLeft || 0) : b = {
                        top: 0,
                        left: 0
                    }, b
                },
                T3: function(a) {
                    var c = this.options,
                        d = a || {};
                    d = v(!0, {}, b, d), u(d, function(a, b) {
                        c.hasOwnProperty(a) && (c[a] = b)
                    })
                },
                xv: function() {
                    var a = this;
                    return !a.Ks && a.qo && (a.Ks = E(Y), j(a.Ks).css({
                        position: "relative",
                        left: 0,
                        top: 0,
                        height: 0
                    }), j(a.qo).prepend(a.Ks)), a.Ks
                },
                wv: function(a) {
                    var b, c, d, e, f, g, h = this,
                        i = h.getSheetCount();
                    h.lv < i ? h.lv = i : h.lv++, (D(a) || a < h.lv) && (a = h.lv), b = !1, d = h.sheets;
                    do
                        for (c = "Sheet" + (a + 1), e = d.length, f = 0; f < e; f++) if (f in d) {
                            if (g = d[f], g.name().toUpperCase() === c.toUpperCase()) {
                                a++, b = !0;
                                break
                            }
                            b && (b = !1)
                        }
                    while (b);
                    return c
                },
                vv: function(a) {
                    return new g.Worksheet(a)
                },
                ws: function(a) {
                    var b, c, d, e, f, g, h, i, k, l, m, o, p, q, r, s, t, u, v = this;
                    if (a) {
                        for (v.qo = a, I && I(a).data(ha, v), j(a).data(ha, v).attr(ia, "gcSpread").addClass(ja).css(la, ka), K.Yl.qm(), v.cultureChangedHandler = function() {
                            v.Av(v)
                        }, L.addEventListener(ga, v.cultureChangedHandler), b = E(Z), c = b.style, i = "100%", b.cellSpacing = 0, b.cellPadding = 0, b.border = 0, c.width = i, c.height = i, c.border = 0, c.margin = 0, d = 0; d < 2; d++) {
                            for (f = E("tr"), e = 0; e < 2; e++) g = E("td"), h = g.style, h.padding = 0, h.border = 0, f.appendChild(g);
                            b.appendChild(f)
                        }
                        for (a.appendChild(b), v.xs = E(Y), v.xs.id = a.id + "vp", j(b.rows[0].cells[0]).append(v.xs), v.St = new n((!1)), k = v.St.Bv(), l = v.Cv = E(Y), j(l).append(k), j(b.rows[0].cells[1]).append(l), j(k).bind(S + X, function(a, b) {
                            var c = b.scrollEventType;
                            a.data = v, 1 === b.scrollOrientation && (0 === c || 1 === c || 2 === c || 3 === c || 5 === c ? wa.Dv(a, b) : 4 === c && wa.Ev(a))
                        }).bind(Q + X, function(a) {
                            a.data = v, wa.Fv(a)
                        }).bind(R + X, function(a) {
                            a.data = v, wa.Gv(a)
                        }), m = E(Z), o = m.style, m.cellSpacing = 0, m.cellPadding = 0, m.border = 0, o.border = 0, o.margin = 0, j(m).css("user-select", ba), f = E("tr"), e = 0; e < 2; e++) g = E("td"), h = g.style, h.padding = 0, h.border = 0, f.appendChild(g);
                        m.appendChild(f), j(b.rows[1].cells[0]).append(m), p = v.Hv = E(Y), q = p.style, q.width = "" + v.Iv() * j(a).width() + $, q.height = "" + v.Jv() + $, q.fontSize = "10pt", q.fontFamily = "Arial", j(m.rows[0].cells[0]).append(p), v.Pt = new n((!0)), r = v.Pt.Bv(), s = v.Kv = E(Y), j(s).append(r), j(m.rows[0].cells[1]).append(s), j(r).bind(S + X, function(a, b) {
                            var c = b.scrollEventType;
                            a.data = v, 0 === b.scrollOrientation && (0 === c || 1 === c || 2 === c || 3 === c || 5 === c ? wa.Lv(a, b) : 4 === c && wa.Mv(a))
                        }).bind(Q + X, function(a) {
                            a.data = v, wa.Nv(a)
                        }).bind(R + X, function(a) {
                            a.data = v, wa.Gv(a)
                        }), v.Ov = E(Y), j(b.rows[1].cells[1]).append(v.Ov), v.ku = new wa(this), t = v.oTa = function() {
                            v.Pv()
                        }, j(K).bind(T + V, t), u = na(v), u && u.ws(v.xs), v.Qv(), v.fq(), v.Rv(a), va.ao(v, "setHost", a)
                    }
                },
                Rv: function(a) {
                    var b = this,
                        c = "tabindex",
                        d = J(j(a).attr(c), 10) || 0,
                        e = E(Y);
                    j(e).css({
                        position: ca,
                        overflow: "hidden"
                    }).attr(ia, "gcSheetFocusElementForTab").attr(c, d).bind(U, function() {
                        b.Sv || na(b).zt(), b.Sv = !1
                    }), a.insertBefore(e, M), b.Tv = e
                },
                Uv: function() {
                    var a = this,
                        b = a.Tv;
                    b && (a.Sv = !0, b.focus())
                },
                no: function() {
                    var a, b, c, d, e, f, g = this,
                        h = g.Pt,
                        i = g.St,
                        k = g.sheets;
                    for (y.Tn(g), w.no(), g.oTa && j(K).unbind(T + V, g.oTa), g.Zv && clearTimeout(g.Zv), h && h.dispose(), i && i.dispose(), g.mu(), a = 0; a < k.length; a++) k[a].no(!0);
                    k.splice(0, k.length), b = g.uu, b && b.no(), c = g.qo, e = "class", f = "unselectable", c && (d = j(c), L.removeEventListener(ga, g.cultureChangedHandler), d.html("").removeAttr(ia).removeClass(ja), d.attr(e) || d.removeAttr(e), d.attr(f) || d.removeAttr(f), d.data(ha) && d.data(ha, M), I && I(c).data(ha) && I(c).data(ha, M)), g.Kv = M, g.Cv = M, g.pv = M, g.hq && (g.hq.no(), g.hq = M), va.ao(g, "dispose"), g.Tv && (j(g.Tv).unbind(U), g.Tv = M), g.Wu && (g.Wu.dispose(), g.Wu = M, g.yv = M, g.zv = M), g.bt && (g.bt.no(), g.bt = M), q.no()
                },
                mu: function() {
                    var a = this,
                        b = a.sheets,
                        c, d;
                    for (j(a.sv).unbind(V), c = 0; c < b.length; c++) d = b[c], d.mu()
                },
                Qv: function() {
                    var a, b, c, d = this,
                        e = J(C.Lm("").zIndex),
                        f = e !== d.Vv,
                        g = d.qo,
                        h = g.getAttribute("id") + "_tabStrip",
                        i = d.hq;
                    f && (d.Vv = e), a = d.Jv(), b = d.Wv(), c = d.Xv(), i && !f ? i.repaint() : (i && i.no(), i = d.hq = e > 2007 ? new o(h) : new p(h), i.Yv(d), i.ws(d.Hv)), sa(d.Cv, c, b), ta(d.Kv, a, b), ua(d.Ov, c, a)
                },
                Pv: function() {
                    var a = this,
                        b = a.Zv;
                    b && clearTimeout(b), a.Zv = setTimeout(function() {
                        y.Un(), a.fq(), a.Zv = M
                    }, 100)
                },
                fq: function() {
                    var a = this;
                    a.kv || (a.kv = !0, a.$v(), a.kv = !1)
                },
                $v: function() {
                    var a, b, c, d, e, f, g, h, i, k, l, m, n, o, p, q, r, s, t, u = this,
                        v = "display",
                        w = "block",
                        x = u.Jv(),
                        y = u.Wv(),
                        z = u.Xv(),
                        A = u.qo;
                    A && (a = u.options, b = a.showVerticalScrollbar, c = a.showHorizontalScrollbar, d = a.tabStripVisible, e = c || d, f = j(A), g = f.width(), h = f.height(), i = u.Ov, k = u.Pt, l = u.St, m = u.xs.style, n = u.Hv.style, m.width = "" + (g - (b ? z : 0)) + $, j(u.Cv).css(v, b ? w : ba), j(i).css("width", (b ? z : 0) + $), o = h - (e ? x : 0), m.height = "" + (o >= 2 ? o : 2) + $, j(u.Kv).css(v, e ? w : ba), j(i).css("height", e ? x : 0 + $), c ? (j(k.Bv()).show(), a.tabStripRatio = a.tabStripRatio) : j(k.Bv()).hide(), p = j(u.xs).width(), q = N(u.Iv() * p), q === p && (q = p - 1), n.width = "" + q + $, n.height = "" + x + $, l.Vo(y), l._v(j(u.xs).height()), r = g - (d ? q : 0) - (b ? z : 0), k.Vo(r > 0 ? r : 1), k._v(y), s = na(u), s && (0 === s.lq && (s.lq = s._t()), 0 === s.qq && (s.qq = s.$t()), s.fq()), u.Ut(), u.Xt(), s && (s.invalidateLayout(), s.repaint()), d ? j(u.Hv).show() : j(u.Hv).hide(), u.hq && u.hq.fq(), t = f.width(), g === t || u.aw || (u.aw = !0, setTimeout(function() {
                        delete u.aw, u.$v()
                    }, 1)))
                },
                Ut: function() {
                    var a, b, c, d, e, f, g, h, i, j, k, l, m, n = this,
                        o = na(n),
                        p = n.options;
                    o && (a = o.frozenColumnCount(), b = o.getColumnCount() - o.frozenTrailingColumnCount() - a, c = a, d = o.am(), e = 0 === b ? c : c + b - 1, f = o.qq, h = o.fu(d.er, c, e), p.scrollbarMaxAlign && (e = h), p.scrollbarShowMax || (i = o.iu(), j = i.lastNonNullCol, k = o.fu(d.er, c, j), k === c && (k++, k > e && (k = e)), e = f > k ? f < e ? f : e : k), f > e && (o.qq = e), l = o.Ot(o.qq), l !== -1 && l !== o.qq && (o.qq = l), g = o.gu(), g < 1 && (g = 1), m = n.Pt, m && (m.bw(o.Qt(c)), m.cw(o.Qt(e)), m.dw(g), m.ew(), m.value(o.Qt(o.qq))))
                },
                Xt: function() {
                    var a, b, c, d, e, f, g, h, i, j, k, l, m, n = this,
                        o = na(n),
                        p = n.options;
                    o && (a = o.frozenRowCount(), b = o.getRowCount() - o.frozenTrailingRowCount() - a, c = a, d = o.am(), e = 0 === b ? c : c + b - 1, f = o.lq, h = o.eu(d.jr, c, e), p.scrollbarMaxAlign && (e = h), p.scrollbarShowMax || (i = o.iu(), j = i.lastNonNullRow, k = o.eu(d.jr, c, j), k === c && (k++, k > e && (k = e)), e = f > k ? f < e ? f : e : k), f > e && (o.lq = e), l = o.Rt(o.lq), l !== -1 && l !== o.lq && (o.lq = l), g = o.hu(), g < 1 && (g = 1), m = n.St, m && (m.bw(o.Tt(c)), m.cw(o.Tt(e)), m.dw(g), m.ew(), m.value(o.Tt(o.lq))))
                },
                aq: function() {
                    var a, b, c, d, e, f, g, h, i, k, l = this,
                        m = l.Jv(),
                        n = l.Wv(),
                        o = l.Xv(),
                        p = l.qo;
                    p && (a = l.options, b = a.tabStripVisible, c = j(p), d = c.width(), e = l.Pt, f = l.Hv.style, g = j(l.xs).width(), h = N(l.Iv() * g), h === g && (h = g - 1), f.width = "" + h + $, f.height = "" + m + $, i = d - (b ? h : 0) - (a.showVerticalScrollbar ? o : 0), e.Vo(i > 0 ? i : 1), e._v(n), k = na(l), k && 0 === k.qq && (k.qq = k.$t()), l.Ut(), b ? j(l.Hv).show() : j(l.Hv).hide(), l.hq && l.hq.fq())
                },
                suspendPaint: function() {
                    var a, b = this,
                        c = b.hq,
                        d = b.sheets;
                    for (b.xD++, a = 0; a < d.length; a++) d[a].suspendPaint();
                    c && c.fw()
                },
                resumePaint: function() {
                    var a, b = this,
                        c = b.hq,
                        d = b.sheets;
                    for (b.xD -= b.xD > 0 ? 1 : 0, a = 0; a < d.length; a++) d[a].resumePaint();
                    c && c.gw()
                },
                isPaintSuspended: function() {
                    return this.xD > 0
                },
                Ys: function() {
                    var a, b, c, d, e, f, g = this,
                        h = g.options.backgroundImage,
                        i = g.options.backgroundImageLayout,
                        k = na(g);
                    if (k && h && (a = j(k.Ws()), a.css({
                            "background-image": "url('" + h + "')",
                            "background-repeat": "no-repeat"
                        }), !D(i))) {
                        b = g.bt, b || (b = g.bt = new l(function() {
                            g.bt && g.Ys()
                        }));
                        try {
                            b.ko(h) ? (c = b.lo(h), d = k.Dr(), e = d.width, f = d.height, w.ql(k.Ws(), e, f, c.width, c.height, i)) : b.fo(h)
                        } catch (a) {}
                    }
                },
                hw: function(a, b) {
                    void 0 === b && (b = !0);
                    var c = this;
                    c.hq.iw(c.getSheetIndex(a.name()), b)
                },
                startSheetIndex: function(a) {
                    var b = this,
                        c = b.hq;
                    return 0 === arguments.length ? c ? c.gq : 0 : (c && (c.hE(a) || (a = c.jw(a), a === -1 && (a = c.rw(a))), c.gq = a), b.aq(), b)
                },
                Iv: function() {
                    var a, b, c, d, e, f = this,
                        g = f.options;
                    return g.showHorizontalScrollbar ? (a = g.tabStripRatio, isNaN(a) ? .5 : (b = 0, c = f.xs, d = f.hq, c && d && (e = j(c).width(), b = d.kw / e), a < b ? a = b : a > 1 && (a = 1), a)) : 1
                },
                destroy: function() {
                    this.oTa && j(K).unbind(T + V, this.oTa), this.no()
                },
                repaint: function() {
                    var a, b = this,
                        c = b.hq;
                    c && c.repaint(), a = na(b), a && a.repaint()
                },
                refresh: function() {
                    var a = this;
                    a.qo && (C.Nm(), a.Qv(), a.fq(), a.repaint())
                },
                getHost: function() {
                    return this.qo
                },
                invalidateLayout: function() {
                    var a = na(this);
                    a && a.invalidateLayout()
                },
                addNamedStyle: function(a) {
                    this.Kq(a);
                    var b = na(this);
                    b && b.$p()
                },
                Kq: function(a) {
                    if (a) {
                        if (!a.name) throw Error(ma.Exp_EmptyNamedStyle);
                        var b = a.name.toUpperCase();
                        this.Lq[b] = a
                    }
                },
                getNamedStyle: function(a) {
                    return this.Mq(a, !0)
                },
                Mq: function(a, b) {
                    var c, d = this.Lq;
                    return d && a ? (a = a.toUpperCase(), c = d[a], c && b && this.Jq(), c) : M
                },
                Jq: function() {
                    var a, b = this.sheets;
                    for (a = 0; a < b.length; a++) b[a].Jq()
                },
                removeNamedStyle: function(a) {
                    var b, c = this.Lq;
                    c && a && (a = a.toUpperCase(), c.hasOwnProperty(a) && (delete c[a], this.Jq(), b = na(this), b && b.$p()))
                },
                getNamedStyles: function() {
                    var a = [],
                        b = this.Lq;
                    return b && u(b, function(b, c) {
                        a.push(c)
                    }), this.Jq(), a
                },
                getActiveSheet: function() {
                    return this.sheets && this.sheets.length > 0 ? this.sheets[this.eq] : M
                },
                setActiveSheet: function(a) {
                    this.lw(a, 2)
                },
                lw: function(a, b) {
                    var c, d = this.sheets;
                    for (c = 0; c < d.length; c++) d[c].name() === a && this.dq(c, b)
                },
                getActiveSheetIndex: function() {
                    return this.eq
                },
                setActiveSheetIndex: function(a) {
                    this.dq(a, 2)
                },
                dq: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l;
                    typeof a === P && (e = this, a !== e.eq && (f = e.sheets[a], f && f.visible() && (g = w.rl(), (g.ipad || g.iphone) && (h = e.mw, h && (new Date).valueOf() - h < 300) || (i = na(e), j = {
                        oldSheet: i,
                        newSheet: f,
                        needTriggerSheetChange: !0
                    }, qa(e, j), k = {
                        oldSheet: i,
                        newSheet: f,
                        cancel: !1
                    }, l = j.needTriggerSheetChange && d, l && pa(e, k), k.cancel === !1 && (e.eq = a, f !== i && (i && i.no(!1), e.nw(f, b, !1, c)), e.fq(), ra(e, i, f), l && oa(e, i, f)), (g.ipad || g.iphone) && (e.mw = (new Date).valueOf())))))
                },
                nw: function(a, b, c, d) {
                    var e, f, g;
                    c || a.ws(this.xs), e = A.Xl(), f = e && e.parent === this, g = 2 === b ? f : 1 === b, A.Zl(M), !this.mv && g && a.zt(d), a.qs(), a.os()
                },
                addSheet: function(a, b) {
                    this.ow(a, 2, b)
                },
                ow: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l = this;
                    if (c || (c = l.vv(l.wv(a))), e = l.sheets, f = e.length, c.name()) {
                        for (d = 0; d < f; d++) if (e[d].name() === c.name()) throw ma().Exp_NotSupported
                    } else c.cq(l.wv(a));
                    for (l.pw(c), g = na(l), h = l.eq, i = f - a, j = [], d = 0; d < i && f > 0; d++) j.push(e.pop());
                    for (e.push(c), c.Ls(l); j.length > 0;) e.push(j.pop());
                    f = e.length, 1 === f ? (l.xs && c.ws(l.xs), l.eq = 0) : (h < 0 && l.hq && (h = l.hq.jw(h)), l.eq = h), k = na(l), k !== g && (g && g.no(!1), k && l.nw(k, b, 1 === f), l.fq()), l.hq && (l.hq.gq < 0 && (l.hq.gq = l.eq), l.hq.repaint())
                },
                removeSheet: function(a) {
                    this.qw(a, 2)
                },
                qw: function(a, b) {
                    var c, d, e, f, g, h = this,
                        i = h.sheets,
                        j = h.Wu,
                        k = h.hq,
                        l = i.length;
                    if (isNaN(a) || a < 0 || a >= l) throw Error(ma().Exp_IndexOutOfRange);
                    if (c = a <= h.eq || a === l - 1, d = na(h), a < h.eq && h.eq--, e = i[a], e.mu(), i.splice(a, 1), l = i.length, 0 === l) h.eq = -1;
                    else if (h.eq >= l) h.eq = k.rw(l);
                    else {
                        for (f = h.eq; f < l; f++) if (i[f].visible()) {
                            h.eq = f;
                            break
                        }
                        f >= l && (h.eq = -1)
                    }
                    c && (g = i[h.eq], d !== g && (d && d.no(!1), g && h.nw(g, b, !1))), j && j.removeSource(e.yj()), k && (k.gq >= l ? h.startSheetIndex(k.rw(l)) : k.gq < 0 ? h.startSheetIndex(k.jw(-1)) : h.fq())
                },
                clearSheets: function() {
                    var a, b = this,
                        c = b.sheets,
                        d = b.Wu,
                        e = b.hq;
                    for (a = 0; a < c.length; a++) c[a].mu(), c[a].no(!0);
                    c.splice(0, c.length), d && d.clearSource(), b.eq = -1, e && (e.gq = -1, e.repaint())
                },
                getSheet: function(a) {
                    var b = this.sheets;
                    return a >= 0 && a < b.length ? b[a] : M
                },
                getSheetFromName: function(a) {
                    var b, c = this.sheets;
                    for (b = 0; b < c.length; b++) if (c[b].name() === a) return c[b];
                    return M
                },
                getSheetIndex: function(a) {
                    var b, c = this.sheets;
                    for (b = 0; b < c.length; b++) if (c[b].name() === a) return b;
                    return M
                },
                getSheetCount: function() {
                    return this.sheets.length
                },
                setSheetCount: function(a) {
                    this.sw(a, 2)
                },
                sw: function(a, b) {
                    var c, d, e = this;
                    if (a < 0) throw ma().Exp_ArgumentOutOfRange;
                    if (0 === a && e.clearSheets(), c = e.sheets.length, a < c) for (d = c - 1; d >= a; d--) e.qw(d, b);
                    else if (a > c) for (d = c; d < a; d++) e.ow(d, b)
                },
                bind: function(a, b, c) {
                    var d, e, f = this,
                        g = f.sheets;
                    for (f.rv.push({
                        type: a,
                        data: b,
                        fn: c
                    }), j(f.sv).bind(a + V, b, c), d = 0; d < g.length; d++) e = g[d], e.bind(a, b, c)
                },
                unbind: function(a, b) {
                    var c, d, e, f, g = this,
                        h = g.sheets,
                        i = g.rv;
                    for (c = 0; c < i.length; c++) d = i[c], d.type === a && i.splice(c, 1);
                    for (j(g.sv).unbind(a + V, b), e = 0; e < h.length; e++) f = h[e], f.unbind(a, b)
                },
                unbindAll: function() {
                    var a, b, c = this,
                        d = c.sheets;
                    for (c.rv.length = 0, j(c.sv).unbind(V), a = 0; a < d.length; a++) b = d[a], b.unbindAll()
                },
                Fu: function(a, b, c) {
                    var d, e, f = this,
                        g = f.sheets;
                    for (f.rv.push({
                        type: a,
                        data: b,
                        fn: c
                    }), j(f.sv).bind(a + W, b, c), d = 0; d < g.length; d++) e = g[d], e.Fu(a, b, c)
                },
                Gu: function(a, b) {
                    var c, d, e, f, g = this,
                        h = g.sheets,
                        i = g.rv;
                    for (c = 0; c < i.length; c++) d = i[c], d.type === a && i.splice(c, 1);
                    for (j(g.sv).unbind(a + W, b), e = 0; e < h.length; e++) f = h[e], f.Gu(a, b)
                },
                nu: function() {
                    var a, b, c = this,
                        d = c.sheets;
                    for (c.rv.length = 0, j(c.sv).unbind(W), a = 0; a < d.length; a++) b = d[a], b.nu()
                },
                Wq: function(a, b) {
                    0 === this.jm && j(this.sv).trigger(a, b)
                },
                tw: function(a, b, c, d) {
                    this.Wq(z.ButtonClicked, {
                        sheet: a,
                        sheetName: a.name(),
                        row: b,
                        col: c,
                        sheetArea: d
                    })
                },
                pw: function(a) {
                    var b, c, d = this.rv;
                    for (b = 0; b < d.length; b++) c = d[b], a.bind(c.type, c.data, c.fn)
                },
                suspendEvent: function() {
                    var a, b, c = this,
                        d = c.sheets;
                    for (c.jm++, a = 0; a < d.length; a++) b = d[a], b.suspendEvent()
                },
                resumeEvent: function() {
                    var a, b, c = this,
                        d = c.sheets;
                    for (c.jm--, c.jm < 0 && (c.jm = 0), a = 0; a < d.length; a++) b = d[a], b.resumeEvent()
                },
                focus: function(a) {
                    if (a === !1) A.Zl(M);
                    else {
                        var b = na(this);
                        b && b.zt()
                    }
                },
                nextControl: F("nextControl", M),
                previousControl: F("previousControl", M),
                Wv: function() {
                    return this.Vv > 2007 ? 15 : 18
                },
                Xv: function() {
                    return this.Vv > 2007 ? 22 : this.Wv()
                },
                Jv: function() {
                    return this.Vv > 2007 ? 28 : this.Wv()
                },
                uw: function(a, b, c, d) {
                    var e, f = "auto",
                        g = this;
                    g.vw || (e = E(Y), j(e).addClass("gc-spread-toolTip ui-state-default ui-widget-content btn-default").css({
                        position: ca,
                        padding: "0px 3px 0px 3px",
                        font: H("normal normal normal 11pt calibri"),
                        "box-shadow": "1px 2px 5px rgba(0,0,0,0.4)"
                    }).width(f).height(f).appendTo(L.body), g.vw = e), g.ww(a, b, c, d)
                },
                ww: function(a, b, c, d) {
                    var e, f, g, h, i = this,
                        k = na(i);
                    k && (e = i.vw, e && (f = j(e), a ? (f.html(a), f.show()) : f.hide(), g = k.Vs(), d && (c -= g.top, b -= g.left), h = k.Dr(), c = O(c, h.y + h.height - f.outerHeight()), b = O(b, h.x + h.width - f.outerWidth()), D(c) || f.css("top", c + g.top), D(b) || f.css("left", b + g.left)))
                },
                xw: function() {
                    var a = this,
                        b = a.vw;
                    b && (j(b).remove(), a.vw = M)
                },
                Av: function(a) {
                    var b, c, d, e, f, g, h, i, j, l = a.sheets;
                    for (k.mn.wn(), a.invalidateLayout(), b = 0, c = l.length; b < c; b++) for (d = l[b], e = d.getRowCount(), f = d.getColumnCount(), g = 0; g < e; g++) for (h = 0; h < f; h++) i = d.getValue(g, h), i instanceof Date && (j = d.getStyle(g, h), j && j.$o(i), d.Nq(g, h, j));
                    a.repaint(), va.ao(a, "onCultureChanged")
                },
                getTab: function() {
                    return this.hq
                }
            }, g.Workbook = va, d = 100, e = 30, f = 40;

            function wa(a) {
                this.yw = a
            }
            v(wa, {
                Lv: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l = a.data,
                        m = na(l);
                    m && b && (c = b.newValue, d = b.oldValue, e = b.scrollEventType, f = J(c, 10), f = m.du(f), d = b.oldValue = D(d) ? 0 : J(d, 10), m.oq = !1, h = l.options.scrollbarShowMax, 2 === e || 0 === e ? (2 === e && (f = m.zw()), g = m.Ot(f, !0), g !== -1 && g !== f && (f = g), h || (m.oq = !0, b.ignoreUpdatePosition = !0)) : 3 !== e && 1 !== e || (3 === e && (f = m.Aw(), f === m.qq && f++), h || (m.oq = !0, 1 === e && c === d && f++), g = m.Ot(f), g !== -1 && g !== f && (f = g)), i = m.$t(), j = m.ps(), f < i && (f = i), f > j && (f = j), k = m.Qt(f), c !== k && (b.newValue = k), d !== k && l.ku.Bw(f, !0))
                },
                Mv: function(a) {
                    var b, c, d, e, f, g = a.data,
                        h = na(g);
                    h && (b = g.Pt, c = h.du(b.value()), d = h.$t(), e = h.ps(), f = h.Cw, c < d ? b.value(h.Qt(d)) : c > e && b.value(h.Qt(e)), g.xw(), g.options.scrollbarShowMax || (g.ku.scrolling ? h.oq = !0 : g.Ut()), f && f.focus())
                },
                Nv: function(a) {
                    var b, c, d, e, f, g = a.data;
                    g && (b = na(g), b && (c = g.Pt.xR, c && c.mR && (b.CH = !0), b.zt(), d = g.options.showScrollTip, 1 !== d && 3 !== d || (e = j(a.srcElement || a.target), f = e.parent(), (e && (e.hasClass(_) || e.hasClass(aa)) || f && (f.hasClass(_) || f.hasClass(aa))) && g.ku.Dw(!1, a))))
                },
                Dv: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l = a.data,
                        m = na(l);
                    m && b && (c = b.newValue, d = b.oldValue, e = b.scrollEventType, f = J(c, 10), f = m.cu(f), d = b.oldValue = D(d) ? 0 : J(d, 10), m.jq = !1, h = l.options.scrollbarShowMax, 2 === e || 0 === e ? (2 === e && (f = m.Ew()), g = m.Rt(f, !0), g !== -1 && g !== f && (f = g), h || (m.jq = !0, b.ignoreUpdatePosition = !0)) : 3 !== e && 1 !== e || (3 === e && (f = m.Fw(), f === m.lq && f++), h || (m.jq = !0, 1 === e && c === d && f++), g = m.Rt(f), g !== -1 && g !== f && (f = g)), i = m._t(), j = m.ns(), f < i && (f = i), f > j && (f = j), k = m.Tt(f), c !== k && (b.newValue = k), d !== k && l.ku.Bw(f))
                },
                Ev: function(a) {
                    var b, c, d, e, f, g = a.data,
                        h = na(g);
                    h && (b = g.St, c = h.cu(b.value()), d = h._t(), e = h.ns(), f = h.Cw, c < d ? b.value(h.Tt(d)) : c > e && b.value(h.Tt(e)), g.xw(), g.options.scrollbarShowMax || (g.ku.scrolling ? h.jq = !0 : g.Xt()), f && f.focus())
                },
                Fv: function(a) {
                    var b, c, d, e, f, g = a.data;
                    g && (b = na(g), b && (c = g.St.xR, c && c.mR && (b.CH = !0), b.zt(), d = g.options.showScrollTip, 2 !== d && 3 !== d || (e = j(a.srcElement || a.target), e && (f = e.parent(), (e.hasClass(_) || f && f.hasClass(_) || e.hasClass(aa) || f && f.hasClass(aa)) && g.ku.Dw(!0, a)))))
                },
                Gv: function(a) {
                    var b = a.data;
                    b && b.xw()
                }
            }), wa.prototype = {
                Bw: function(a, b) {
                    var c = this,
                        d = na(c.yw);
                    d && (c.Gw = !0, c.Hw = b ? d.lq : a, c.Iw = b ? a : d.qq, window.setTimeout(function() {
                        c.Kw()
                    }, 0))
                },
                Kw: function() {
                    var a = this,
                        b = na(a.yw);
                    b && a.Gw && (a.Gw = !1, a.Lw())
                },
                Lw: function() {
                    var a, b, c, d, e, f = this;
                    f.Mw || (f.Mw = !0, a = f.yw, b = na(a), b && (c = a.options.showScrollTip, d = f.Hw, e = f.Iw, d !== b.lq ? (f.ju(d), 2 !== c && 3 !== c || a.ww(f.Nw(!0))) : e !== b.qq && (f.lu(e), 1 !== c && 3 !== c || a.ww(f.Nw(!1)))), f.Mw = !1)
                },
                ju: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w = na(this.yw);
                    if (w) {
                        if (b = w.lq, a === b) return;
                        if (w.lq = a, w.Xq > 0) return void w.Wq(z.TopRowChanged, {
                            sheet: w,
                            sheetName: w.name(),
                            oldTopRow: b,
                            newTopRow: a
                        });
                        if (c = !1, d = 2, e = w.Zs, f = w.am(), g = f.qt, h = f.jr, m = w.yl, n = m.bm(), a > b) {
                            if (q = w.Gr(1), q && q.length > 0 && (o = q.findRow(a)), o) {
                                for (r = q.length - 1, p = q[r]; p.y + p.height > g + h;) r -= 1, p = q[r];
                                p.row > a && (c = !0, i = e ? e.x : f.x, j = o.y, k = f.width, l = p.y + p.height - o.y - d, m.Ow(i, j, k, l, i, g), w.invalidateLayout(), m._l(n, new B(i, g + l, k, h - l)), m.Pw(n, new B(i, g - 2, k, h + 2)))
                            }
                        } else {
                            for (s = 0, t = a; t < b && s < h; t++) s += w.Sl(t);
                            s < h && (c = !0, i = e ? e.x : f.x, j = g, k = f.width, l = h - s, w.frozenTrailingRowCount() > 0 && (l -= 1), m.Ow(i, j, k, l, i, j + s), w.invalidateLayout(), u = w.rowOutlines && !w.rowOutlines.iT() ? 1 : 0, m._l(n, new B(i, j, k, s + d + u)), m.Pw(n, new B(i, g - 2, k, h + 2)))
                        }
                        c || (w.invalidateLayout(), w.repaint()), w.Wq(z.TopRowChanged, {
                            sheet: w,
                            sheetName: w.name(),
                            oldTopRow: b,
                            newTopRow: a
                        }), v = w.mm, v && v.Qw()
                    }
                },
                lu: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w = na(this.yw);
                    if (w) {
                        if (b = w.qq, a === b) return;
                        if (w.qq = a, w.Xq > 0) return void w.Wq(z.LeftColumnChanged, {
                            sheet: w,
                            sheetName: w.name(),
                            oldLeftCol: b,
                            newLeftCol: a
                        });
                        if (c = !1, d = 2, e = w.Zs, f = w.am(), g = f.pt, h = f.er, m = w.yl, n = m.bm(), a > b) {
                            if (q = w.Hr(1), q && q.length > 0 && (o = q.findCol(a)), o) {
                                for (r = q.length - 1, p = q[r]; p.x + p.width > g + h;) r -= 1, p = q[r];
                                p.col > a && (c = !0, i = o.x, j = e ? e.y : f.y, k = p.x + p.width - o.x - d, l = f.height, m.Ow(i, j, k, l, g, j), w.invalidateLayout(), m._l(n, new B(g + k, j, h - k, l)), m.Pw(n, new B(g - 2, j, h + 2, l)))
                            }
                        } else {
                            for (s = 0, t = a; t < b && s < h; t++) s += w.Tl(t);
                            s < h && (c = !0, i = g, j = e ? e.y : f.y, k = h - s, l = f.height, w.frozenTrailingColumnCount() > 0 && (k -= 1), m.Ow(i, j, k, l, i + s, j), w.invalidateLayout(), u = w.columnOutlines && !w.columnOutlines.iT() ? 1 : 0, m._l(n, new B(i, j, s + d + u, l)), m.Pw(n, new B(g - 2, j, h + 2, l)))
                        }
                        c || (w.invalidateLayout(), w.repaint()), w.Wq(z.LeftColumnChanged, {
                            sheet: w,
                            sheetName: w.name(),
                            oldLeftCol: b,
                            newLeftCol: a
                        }), v = w.mm, v && v.Qw()
                    }
                },
                Rw: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m, n, o = this,
                        p = o.yw,
                        q = na(p),
                        r = !1,
                        s = !1,
                        t = p.options.scrollbarShowMax;
                    if (q) {
                        if (a.ctrlKey) {
                            if (!p.options.allowUserZoom) return !0;
                            if (d = q.zoom(), e = d - .05 * b, q.isEditing() && !q.endEdit()) return;
                            q.wu().execute({
                                cmd: "zoom",
                                sheetName: q.name(),
                                zoomFactor: e
                            }), e = q.zoom(), d !== e && q.Wq(z.UserZooming, {
                                sheet: q,
                                sheetName: q.name(),
                                oldZoomFactor: d,
                                newZoomFactor: e
                            })
                        } else c = c || 0, f = q.lq, g = o.ms(q, b), f !== g ? (o.ju(g), q.os(), t || q.es()) : r = !0, h = q.qq, i = o.Sw(q, c), h !== i ? (o.lu(i), q.qs(), t || q.ds()) : s = !0;
                        j = q.Vs(), k = q.hitTest(a.pageX - j.left, a.pageY - j.top), l = q.yt, m = l && l.cellTypeHitInfo, m && (m.cellRect = q.getCellRect(l.row, l.col)), n = q.mm, n.Tw(k), n.Uw(k)
                    }
                    return r && s
                },
                ms: function(a, b) {
                    var c, d, e, f = a.lq,
                        g = a.frozenRowCount();
                    return g > 0 && (0 === f && b > 0 ? f = g : b < 0 && f === g - b && (f = 0)), c = a.Rt(f + b, b < 0), c !== -1 ? f = c : f += b, d = a._t(), e = a.ns(), a.getRowCount() - g - a.frozenTrailingRowCount() <= 0 || d === M ? f = a.lq : (f < d ? f = d : f > e && (f = e), f === M && (f = -1)), f
                },
                Sw: function(a, b) {
                    var c, d, e, f = a.qq,
                        g = a.frozenColumnCount();
                    return g > 0 && (0 === f && b > 0 ? f = g : b < 0 && f === g - b && (f = 0)), c = a.Ot(f + b, b < 0), c !== -1 ? f = c : f += b, d = a.$t(), e = a.ps(), a.getColumnCount() - g - a.frozenTrailingColumnCount() <= 0 || d === M ? f = a.qq : (f < d ? f = d : f > e && (f = e), f === M && (f = -1)), f
                },
                Dw: function(a, b) {
                    var c, g, h = this,
                        i = h.yw,
                        j = na(i);
                    j && (a ? (c = b.pageY, g = b.pageX - d) : (c = b.pageY - f, g = b.pageX - e), i.uw(h.Nw(a), g, c, !0))
                },
                Nw: function(a) {
                    var b, c = na(this.yw),
                        d = c.qq + 1;
                    return c && (a ? b = ma().Tip_Row + (c.lq + 1) : (1 !== c.options.colHeaderAutoText && (d = c.xq(d)), b = ma().Tip_Column + d)), b
                }
            }, a.exports = g
        }()
}, function(a, b) {
    a.exports = GC.Spread.Commands
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, aa, ba, ca, da, ea, fa, ga = c(42),
                ha = c(26),
                ia = c(34),
                ja = c(58).Worksheet,
                ka = c(53).Style,
                la = c(43),
                ma = c(44).GC$,
                na = c(66).staticMembers,
                oa = ha.j.Fa,
                pa = ha.k.Bb,
                qa = ha.u,
                ra = qa.jb,
                sa = la.Events,
                ta = sa.CellChanged,
                ua = sa.ColumnWidthChanging,
                va = sa.ColumnWidthChanged,
                wa = sa.RowHeightChanging,
                xa = sa.RowHeightChanged,
                ya = la.Range,
                za = la.Rect,
                Aa = la.mn,
                Ba = la.Ul,
                Ca = Ba.Ml,
                Da = Ba.Ol,
                Ea = ma.extend,
                Fa = ma.inherit,
                Ga = null,
                Ha = void 0,
                Ia = Math.max,
                Ja = Math.floor;
            ga.ClipboardPasteOptions = {
                all: 0,
                values: 1,
                formatting: 2,
                formulas: 3
            }, ga.CopyToOptions = {
                value: 1,
                formula: 2,
                comment: 4,
                outline: 8,
                sparkline: 16,
                span: 32,
                style: 64,
                tag: 128,
                bindingPath: 256,
                conditionalFormat: 512,
                all: 1023
            };

            function Ka(a, b) {
                return a.getRowCount(b)
            }
            function La(a, b) {
                return a.getColumnCount(b)
            }
            function Ma(a) {
                return a.rowCount
            }
            function Na(a) {
                return a.colCount
            }
            function Oa(a) {
                var b = a.parent;
                return b && b.options.allowExtendPasteRange
            }
            function Pa(a) {
                var b = a.parent;
                return b && b.options.allowCopyPasteExcelStyle
            }
            function Qa(a) {
                var b = a.parent;
                return b && b.options.copyPasteHeaderOptions
            }
            function Ra() {
                return ha.C(ga.SR)()
            }
            function Sa(a, b, c, d) {
                throw Error(qa.Kb(Ra().Exp_InvalidAndSpace, [a, b, c, d]))
            }
            function Ta(a) {
                a.suspendPaint()
            }
            function Ua(a) {
                a.resumePaint()
            }
            function Va(a) {
                a.suspendEvent()
            }
            function Wa(a) {
                a.resumeEvent()
            }
            function Xa(a, b) {
                a && ga.X3 && a.suspendCalcService(b)
            }
            function Ya(a, b) {
                a && ga.X3 && a.resumeCalcService(b)
            }
            function Za(a, b, c, d, e) {
                var f = a.getSpan(b, c, d);
                if (f && e && (f.row !== b || f.col !== c)) return !0
            }
            function $a(a) {
                var b = this;
                b.Vw = 1 === (1 & a), b.Ww = 2 === (2 & a), b.Xw = 8 === (8 & a), b.Yw = ga.X3 && 16 === (16 & a), b.Zw = !0, b.$w = !0
            }
            function _a(a, b, c, d) {
                var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t;
                if (oa(a) || "" === a) return Ga;
                for ((oa(b) || "" === b) && (b = "\r\n"), e = "\n", (oa(c) || "" === c) && (c = "\t"), (oa(d) || "" === d) && (d = '"'), ra(a, b) || (a += b), f = [], g = [], h = "", j = !1, k = d.length, l = b.length, m = e.length, n = c.length, o = a.length, p = 0; p < o; p++) h += a[p], i = h.length, i >= k && d === h.substr(i - k, k) ? j && o >= p + 1 + k && d === a.substr(p + 1, k) ? p += k : j ? (h = h.substr(0, i - k), j = !1) : (q = h, 0 === q.indexOf(d) && (h = h.substr(0, i - k), j = !0)) : !j && i >= n && c === h.substr(i - n, n) ? (h = h.substr(0, i - n), g.push("" + h), h = "") : !j && i >= l && b === h.substr(i - l, l) ? (h = h.substr(0, i - l), g.push("" + h), f.push(g), g = [], h = "") : !j && i >= m && e === h.substr(i - m, m) ? (h = h.substr(0, i - m), g.push("" + h), f.push(g), g = [], h = "") : j && o >= p + 1 + n && c === a.substr(p + 1, n) && "," !== c && (p += k);
                if (j) {
                    if (g.length > 0) {
                        for (r = 0; r < f.length && f[r] !== g; r++);
                        r >= f.length && f.push(g)
                    }
                    s = "" + h, s && (s = s.replace(RegExp(c, "g"), ""), ra(s, b) && (s = s.substr(0, s.length - l)), 0 === f.length && f.push([s]))
                }
                return 0 === f.length && (t = a, ra(a, b) && (t = t.substr(0, t.length - l)), f.push([t])), f
            }
            function ab(a, b, c, d, e) {
                var f, g, h, i, j, k, l, m = d.length,
                    n = db(d);
                if (0 !== m && 0 !== n) for (f = new $a(e), a && (La(a, 2) <= 0 && (f.Vw = !1), Ka(a, 1) <= 0 && (f.Ww = !1)), g = f.Vw ? La(a, 2) : 0, h = f.Ww ? Ka(a, 1) : 0, i = 0, n -= g, n <= 0 && (n = 0), m -= h, m <= 0 && (i = 0), m -= i, m <= 0 && (m = 0), f.Zw && b + m > Ka(a) && a.setRowCount(b + m), f.$w && c + n > La(a) && a.setColumnCount(c + n), j = 0, k = 0; j < d.length; j++, k++) l = d[j], l.length <= 0 || (h > 0 && j < h ? bb(a, l, k, c, n, 1, f) : m > 0 && k < Ka(a) && (j === h && (k = b), bb(a, l, k, 0, g, 2, f), l.splice(0, g), bb(a, l, k, c, n, 3, f)))
            }
            function bb(a, b, c, d, e, f, g) {
                for (var h = 0, i = d; h < b.length; h++, i++) e > 0 && i < La(a, f) && cb(a, f, c, i, b[h], g)
            }
            function cb(a, b, c, d, e, f) {
                var g, h, i, j, k, l, m, n = e,
                    o = Ga;
                if (f.Xw === !1 && (g = {
                        value: Ga
                    }, n = Ba.ul(Ga, e, !f.Xw, g), o = g.value), oa(n)) a.setValue(c, d, n, b);
                else if ("" !== e) if (f.Yw && "=" === e[0] && e.length > 1) try {
                    a.setFormula(c, d, e.substr(1))
                } catch (f) {
                    a.setText(c, d, e, b)
                } else h = a.tq(c, d, "formatter", b), f.Xw === !1 && o ? h ? h && ("string" == typeof h && ia && (h = new ia.GeneralFormatter(h)), m = h.parse && h.parse(e), n = oa(m) ? n : m) : (o.isAuto = !0, a.getCell(c, d, b)._w("_autoFormatter", o), i = e, j = a.getCellType(c, d, b), k = o.formatString(), j && "7" === j.typeName && (l = {
                    sheet: a,
                    row: c,
                    col: d,
                    sheetArea: b
                }, i = j.parse(e, k, l), n = oa(i) ? e : i)) : h && a.getCell(c, d, b).formatter(Ga), a.setValue(c, d, n, b);
                else a.setValue(c, d, Ga, b)
            }
            function db(a) {
                var b, c, d = 0;
                for (b = 0; b < (a && a.length); b++) c = a[b], d = Ia(c.length, d);
                return d
            }
            function eb(a, b, c, d, e, f, g, h) {
                if (!a) throw Error(Ra().Exp_SheetIsNull);
                if ((b < -1 || b >= Ka(a)) && Sa("row", b, "-1", Ka(a) - 1), (c < -1 || c >= La(a)) && Sa("column", c, "-1", La(a) - 1), !oa(d) && "" !== d) {
                    b === -1 && (b = 0), c === -1 && (c = 0);
                    var i = _a(d, e, f, g);
                    i && i.length > 0 && ab(a, b, c, i, h)
                }
            }
            function fb(a, b, c, d, e, f, g, h, i, j, k, l, m) {
                var n, o, p, q, r, s, t, u, v, w, x, y;
                if (!a) throw Error(Ra().Exp_SheetIsNull);
                return n = Ka(a), o = La(a), (b < -1 || b >= n) && Sa("row", b, "-1", n - 1), (c < -1 || b + c > n) && Sa("rowCount", c, "-1", n - b), (d < -1 || d >= o) && Sa("column", d, "-1", o - 1), (e < -1 || d + e > o) && Sa("columnCount", e, "-1", o - d), p = -1, q = -1, r = !1, s = !1, b === -1 && d === -1 && c === -1 && e === -1 ? (b = 0, d = 0, p = Ka(a) - 1, q = La(a) - 1) : (b === -1 && (b = 0, 2 === (2 & a.parent.options.copyPasteHeaderOptions) && (r = !0)), d === -1 && (d = 0, 1 === (1 & a.parent.options.copyPasteHeaderOptions) && (s = !0)), c === -1 && (c = Ka(a) - b), e === -1 && (e = La(a) - d), p = b + c - 1, q = d + e - 1), (oa(f) || "" === f) && (f = "\r\n"), (oa(g) || "" === g) && (g = "\t"), (oa(h) || "" === h) && (h = '"'), t = RegExp(h, "g"), u = null, v = null, w = ib(a, b, p, d, q, 3, j, k, f, g, h, t, i, l, m), s && (x = a.getColumnCount(2), u = ib(a, b, p, 0, x - 1, 2, j, k, f, g, h, t, i, l, m)), r && (y = a.getRowCount(1), v = ib(a, 0, y - 1, d, q, 1, j, k, f, g, h, t, i, l, m)), gb(w, u, v, f, g)
            }
            function gb(a, b, c, d, e) {
                var f, g, h = a,
                    i = 0,
                    j = function(a, b) {
                        var c, d = [],
                            e = a.length;
                        for (c = 0; c < e; c++) d.push(a[c].concat(b[c]));
                        return d
                    };
                return b && (i = b[0].length, h = j(b, a)), c && (f = c.length, g = null, i && (g = ib(null, 0, f - 1, 0, i - 1, null, [], [], d, e, null, null, null, !1, !1), c = j(g, c)), h = c.concat(h)), hb(h, d, e)
            }
            function hb(a, b, c) {
                var d, e, f = "",
                    g = a.length;
                for (d = 0; d < g; d++) {
                    for (e = 0; e < a[d].length; e++) 0 !== e && (f += c), f += a[d][e];
                    f += b
                }
                return f
            }
            function ib(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) {
                var p, q, r, s, t = [];
                for (p = b; p <= c; p++) if (!g || !pa(g, p)) {
                    for (r = [], q = d; q <= e; q++) h && pa(h, q) || (s = "", a && !Za(a, p, q, f, n) && (s = a.getText(p, q, f)), s = jb(s, n, a && Pa(a), l, k, o, m, j, i), r.push(s));
                    t.push(r)
                }
                return t
            }
            function jb(a, b, c, d, e, f, g, h, i) {
                var j = "";
                return oa(a) || (j = a, b || (j = j.replace(d, e + e))), f && !j && (j = " "), b && c ? j = j.replace(/\n/g, " ") : (g || j.indexOf(e) !== -1 || j.indexOf(h) !== -1 || j.indexOf(i) !== -1 || j.indexOf("\n") !== -1) && (j = e + j + e), j
            }
            function kb(a, b, c, d) {
                var e, f, g, h, i, j = Ga,
                    k = _a(a, b, c, d);
                if (k) {
                    for (e = k.length, f = db(k), g = [], h = 0; h < e; h++) for (g[h] = [], i = 0; i < f; i++) i < k[h].length ? g[h][i] = k[h][i] : g[h][i] = Ga;
                    j = g
                }
                return j
            }
            Ea(ja.prototype, {
                autoFitColumn: function(a) {
                    0 <= a && a < La(this) && this.wu().execute({
                        cmd: "autoFitColumn",
                        sheetName: this.name(),
                        columns: [{
                            col: a
                        }],
                        rowHeader: !1
                    })
                },
                autoFitRow: function(a) {
                    0 <= a && a < Ka(this) && this.wu().execute({
                        cmd: "autoFitRow",
                        sheetName: this.name(),
                        rows: [{
                            row: a
                        }],
                        columnHeader: !1
                    })
                },
                setCsv: function(a, b, c, d, e, f) {
                    var g = this;
                    Ta(g), Va(g), eb(g, a, b, c, d, e, '"', f), Wa(g), Ua(g)
                },
                getCsv: function(a, b, c, d, e, f) {
                    return fb(this, a, c, b, d, e, f, '"', !0)
                },
                copyTo: function(a, b, c, d, e, f, g) {
                    this.ax(a, b, c, d, e, f, g)
                },
                ax: function(a, b, c, d, e, f, g, h) {
                    var i = this;
                    Ta(i), Va(i), na.copyTo(i, a, b, i, c, d, e, f, g, h, 0), Wa(i), Ua(i)
                },
                moveTo: function(a, b, c, d, e, f, g) {
                    var h = this;
                    (!(ga.X3 && g & ga.CopyToOptions.formula) || h.Vq(a, b, e, f, !0) && h.Vq(c, d, e, f, !0)) && (Ta(h), Va(h), na.moveTo(h, a, b, h, c, d, e, f, g), Wa(h), Ua(h))
                },
                bx: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m = this,
                        n = m.o5(a);
                    if (n) {
                        d = m.J5(a), e = "\t", f = "\r\n", g = '"', h = m.mm, i = fb(m, n.row, Ma(n), n.col, Na(n), f, e, g, !1, d.rows, d.cols, !0), j = m.tu(), j.PA = m, j.n5 = a, j.G4 = b, k = j.Q4(m, n.row, Ma(n), n.col, Na(n), Pa(m), d.rows, d.cols), m.ex && m.ex();
                        try {
                            if (l = {
                                    sheet: m,
                                    sheetName: m.name(),
                                    copyData: {
                                        text: i,
                                        html: k
                                    },
                                    cancel: !1
                                }, m.Wq(sa.ClipboardChanging, l), ma[ma.sd]({
                                    tc: m.parent
                                }), l && l.cancel === !1) return h && !c && h.gx(Pa(m) ? k : i), m.Wq(sa.ClipboardChanged, {
                                sheet: m,
                                sheetName: m.name(),
                                copyData: {
                                    text: i,
                                    html: k
                                }
                            }), setTimeout(function() {
                                !h || c || m.Js || h.hx()
                            }, 100), {
                                copyText: i,
                                copyHtml: k
                            };
                            j.PA = Ga, j.n5 = Ga
                        } catch (a) {}
                    }
                },
                ix: function(a, b, c, d, e, f) {
                    var g, h, i, j = Ra().Exp_PasteSourceCellsLocked;
                    if (f.pastedInternal = !1, f.pastedRange = Ga, !a && !e) return !1;
                    if (g = this, h = g, i = g.J5(b), g.jx(a, g.o5(b), h, e, i.rows, i.cols) || !e) {
                        if (f.pastedInternal = !0, d && a.options.isProtected && a.p5(b)) return g.Os(1, j), !1;
                        f.pastedRange = g.kx(a, b, h, c, d)
                    } else f.pastedRange = g.lx(c, e);
                    return g.mx(a, b, c, d, f)
                },
                mx: function(a, b, c, d, e) {
                    var f, g, h, i, j, k, l, m, n, o, p, q, r, s, t = Ra().Exp_InvalidCopyPasteSize,
                        u = Ra().Exp_PasteDestinationCellsLocked,
                        v = Ra().Exp_PasteChangeMergeCell,
                        w = Ra().Exp_ChangePartOfArray,
                        x = this,
                        y = x,
                        z = e.pastedRange;
                    if (!z) return x.Os(1, t), !1;
                    if (!y.Y3(z.row, z.col, Ma(z), Na(z), u, w)) return !1;
                    if (e.pastedInternal) {
                        if (f = b.length, 1 === f) {
                            if (g = b[0], d && !a.Y3(g.row, g.col, Ma(g), Na(g), u, w)) return !1;
                            if (a.qu(g.row, g.col, Ma(g), Na(g))) return x.Os(1, v), !1;
                            if (h = z.row < 0 ? Ka(y) : Ma(z), i = z.col < 0 ? La(y) : Na(z), j = g.row < 0 ? Ka(a) : Ma(g), k = g.col < 0 ? La(a) : Na(g), h > j || i > k) {
                                for (l = c.row, m = c.col, c.row < 0 && j < Ka(y) && (l = 0), c.col < 0 && k < La(y) && (m = 0), h % j === 0 && 1 === i ? (i = k, z = e.pastedRange = new ya(l, m, h, i)) : 1 === h && i % k === 0 ? (h = j, z = e.pastedRange = new ya(l, m, h, i)) : h % j === 0 && i % k === 0 || (h = j, i = k, z = e.pastedRange = new ya(l, m, h, i)), n = Ja(h / j), o = Ja(i / k), p = 0; p < n; p++) for (q = 0; q < o; q++) if (!x.nx(g, z) && y.qu(l < 0 ? -1 : l + p * j, m < 0 ? -1 : m + q * k, l < 0 ? -1 : j, m < 0 ? -1 : k)) return x.Os(1, v), !1
                            } else if (!x.nx(g, z) && y.qu(z.row, z.col, Ma(z), Na(z))) return x.Os(1, v), !1
                        } else if (f > 1) {
                            for (r = 0; r < f; r++) if (s = b[r], a.qu(s.row, s.col, Ma(s), Na(s))) return x.Os(1, v), !1;
                            if (y.qu(z.row, z.col, Ma(z), Na(z))) return x.Os(1, v), !1
                        }
                    } else {
                        if (y.qu(z.row, z.col, Ma(z), Na(z))) return x.Os(1, v), !1;
                        if (!y.l5(z.row, z.col, Ma(z), Na(z))) return x.Os(1, t), !1
                    }
                    return !0
                },
                nx: function(a, b) {
                    if (a && 1 === Ma(a) && 1 === Na(a)) {
                        var c = this.getSpan(b.row, b.col);
                        if (c && c.equals(b)) return !0
                    }
                    return !1
                },
                jx: function(a, b, c, d, e, f) {
                    var g, h;
                    return !!(a && b && c) && (g = fb(a, b.row, Ma(b), b.col, Na(b), "\r\n", "\t", '"', !1, e, f, !0, Ca.safari), h = g === d, h || (h = g === d + "\r\n", !h && Ca.chrome && (h = g === d + "\t\r\n"), h || !Ca.safari && Pa(c) || (h = g.replace(/\s/g, "") === d.replace(/\s/g, "")), h || (h = g.replace(/\s+$/, "") === d.replace(/\s+$/, ""))), h)
                },
                kx: function(a, b, c, d, e) {
                    var f, g, h, i, j, k, l, m, n, o, p = this,
                        q = b.length;
                    if (1 === q) {
                        if (f = b[0], g = f.row < 0 ? 0 : f.row, h = f.col < 0 ? 0 : f.col, i = f.row < 0 ? Ka(a) : Ma(f), j = f.col < 0 ? La(a) : Na(f), k = d.row < 0 ? 0 : d.row, l = d.col < 0 ? 0 : d.col, m = d.row < 0 ? Ka(c) : Ma(d), n = d.col < 0 ? La(c) : Na(d), e ? (m = i, n = j) : m % i === 0 && 1 === n ? n = j : 1 === m && n % j === 0 ? m = i : m % i === 0 && n % j === 0 || (m = i, n = j), !p.pu(g, h, i, j, Ka(a), La(a))) return Ga;
                        if (!c.l5(k, l, m, n)) return Ga;
                        if (o = new ya(k, l, m, n), !e && a.name() === c.name()) if (o.contains(g, h, i, j)) {
                            if ((g - k) % i !== 0 || (h - l) % j !== 0) return Ga
                        } else if (o.intersect(g, h, i, j) && (m > i || n > j)) return Ga;
                        return d.row === -1 && (k = -1, m = -1), d.col === -1 && (l = -1, n = -1), new ya(k, l, m, n)
                    }
                    return q > 1 ? p.q5(b, d) : Ga
                },
                q5: function(a, b) {
                    var c, d, e, f, g, h;
                    if (a.length > 1) {
                        if (c = a[0], d = a[1], e = c.rowCount, f = c.colCount, c.row === d.row && e === d.rowCount) return g = 0, a.forEach(function(a) {
                            g += a.colCount
                        }), la.kf(b.row, b.col, e, g);
                        if (c.col === d.col && f === d.colCount) return h = 0, a.forEach(function(a) {
                            h += a.rowCount
                        }), la.kf(b.row, b.col, h, f)
                    }
                    return Ga
                },
                lx: function(a, b) {
                    var c, d, e, f, g = Ga,
                        h = kb(b, "\r\n", "\t", '"');
                    return h && (c = a.row < 0 ? 0 : a.row, d = a.col < 0 ? 0 : a.col, e = h.length, f = db(h), e > 0 && f > 0 && (g = new ya(c, d, e, f))), g
                },
                ox: function() {
                    var a = this.tu();
                    a && (a.PA = Ga, a.n5 = Ga, a.G4 = !1)
                },
                px: function(a, b, c, d, e, f, g, h, i) {
                    var j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y;
                    if (a && c.name() === a.name() && c.parent && !pa(c.parent.sheets, a)) return void a.ox();
                    p = Ib.qx(h), Xa(a), Xa(c);
                    try {
                        if (a && b) {
                            if (0 !== (2 & p) && e && ga.X3 && (a.Ns(b.row, b.col, Ma(b), Na(b)) || c.Ns(d.row, d.col, Ma(d), Na(d)))) throw Ra().Exp_ChangePartOfArray;
                            if (e) na.moveTo(a, b.row, b.col, c, d.row, d.col, Ma(b), Na(b), p), a.ox();
                            else if (q = d.row < 0 ? Ka(c) : Ma(d), r = d.col < 0 ? La(c) : Na(d), l = b.row < 0 ? Ka(a) : Ma(b), m = b.col < 0 ? La(a) : Na(b), q > l || r > m) for (j = d.row, k = d.col, d.row < 0 && l < Ka(c) && (j = 0), d.col < 0 && m < La(c) && (k = 0), q % l === 0 && 1 === r ? r = m : 1 === q && r % m === 0 ? q = l : q % l === 0 && r % m === 0 || (q = l, r = m), s = Ja(q / l), t = Ja(r / m), n = 0; n < s; n++) for (o = 0; o < t; o++) na.copyTo(a, b.row, b.col, c, j < 0 ? -1 : j + n * l, k < 0 ? -1 : k + o * m, j < 0 ? -1 : l, k < 0 ? -1 : m, p, i, Qa(a));
                            else na.copyTo(a, b.row, b.col, c, d.row, d.col, Ma(b), Na(b), p, i, Qa(a))
                        } else {
                            for (j = d.row, k = d.col, l = Ma(d), m = Na(d), u = c.ITa, v = u.getSpans(la.kf(j, k, l, m)), w = v.length - 1; w >= 0; w--) u.do("removeSpan", v[w]);
                            if (ga.X3 && (1 & p) > 0 && c.clearFormula(j, k, l, m, function(a, b) {
                                    return !a.Ps || !a.Ps(b)
                                }), f && "" !== f) x = 0 === h || 2 === h, x && g && (y = c.tu(), y && y.R4(g, c, j, k)), c.setCsv(j, k, f, "\r\n", "\t", 16);
                            else for (n = 0; n < l; n++) for (o = 0; o < m; o++) c.setValue(j + n, k + o, Ga)
                        }
                    } finally {
                        Ya(a, !1), Ya(c, !1)
                    }
                },
                sx: function(a) {
                    if (!this.isEditing()) {
                        var b = this.getSelections();
                        if (b && 1 === b.length) return this.bx(b, !0, a)
                    }
                    return Ga
                },
                r5: function(a, b) {
                    var c, d, e, f, g, h, i;
                    if (a && (c = a.length, c > 1)) {
                        for (d = 0; d < c; d++) for (e = a[d], f = d + 1; f < c; f++) if (g = a[f], e.intersect(g.row, g.col, g.rowCount, g.colCount)) return !1;
                        for (h = a[0], d = 1; d < c && (i = a[d], h.row === i.row && h.rowCount === i.rowCount); d++);
                        if (d >= c) return b && (b.inSameRow = !0), !0;
                        for (d = 1; d < c && (i = a[d], h.col === i.col && h.colCount === i.colCount); d++);
                        if (d >= c) return b && (b.inSameCol = !0), !0
                    }
                    return !1
                },
                o5: function(a) {
                    var b, c, d, e, f;
                    if (a) {
                        if (b = a.length, 1 === b) return a[0];
                        if (b > 1) {
                            if (c = a[0], d = a[b - 1], c.row === d.row && c.rowCount === d.rowCount) {
                                for (e = 0; e < b; e++) f = a[e], f.col < c.col && (c = f), f.col > d.col && (d = f);
                                return la.kf(c.row, c.col, c.rowCount, d.col + d.colCount - c.col)
                            }
                            if (c.col === d.col && c.colCount === d.colCount) {
                                for (e = 0; e < b; e++) f = a[e], f.row < c.row && (c = f), f.row > d.row && (d = f);
                                return la.kf(c.row, c.col, d.row + d.rowCount - c.row, c.colCount)
                            }
                        }
                    }
                    return Ga
                },
                J5: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m, n = [],
                        o = [];
                    if (a && (b = a.length, b > 1 && (c = a[0], d = a[b - 1], e = c.row === d.row && c.rowCount === d.rowCount, f = c.col === d.col && c.colCount === d.colCount, e || f))) for (a.sort(e ?
                        function(a, b) {
                            return a.col - b.col
                        } : function(a, b) {
                        return a.row - b.row
                    }), g = 1; g < b; g++) for (h = a[g - 1], i = a[g], j = e ? h.col + h.colCount : h.row + h.rowCount, k = e ? i.col : i.row, l = e ? o : n, m = j; m < k; m++) l.push(m);
                    return {
                        rows: n,
                        cols: o
                    }
                },
                ux: function(a) {
                    var b, c, d, e, f, g, h = this;
                    if (!h.isEditing()) {
                        if (b = h.getSelections(), b && 1 === b.length) {
                            if (c = b[0], c.row !== -1 && h.Nu && h.Nu()) {
                                for (d = [], e = -1, f = 0; f < c.rowCount; f++) g = c.row + f, h.Ps(g) ? e !== -1 && (d.push(la.kf(e, c.col, g - e, c.colCount)), e = -1) : e === -1 && (e = g);
                                e !== -1 && d.push(la.kf(e, c.col, c.row + c.rowCount - e, c.colCount)), b = d
                            }
                            return h.bx(b, !1, a)
                        }
                        if (h.r5(b)) return h.bx(b, !1, a)
                    }
                    return Ga
                },
                vx: function(a) {
                    var b = this,
                        c = b.mm,
                        d, e, f;
                    b.isEditing() || (a && (d = a.pasteText, e = a.pasteHtml, f = a.callback), c && !d && c.gx(""), setTimeout(function() {
                        var a, g, h, i;
                        b.Js || (a = d || "", g = e || "", c && !d && (h = b.tu(), h && (i = h.wx(), a = i.text, g = i.html), c.hx()), (Ca.msie || Ca.edge || d || !a && !g) && (b.J4(a, g), f && f()))
                    }, 100))
                },
                J4: function(a, b) {
                    var c = this,
                        d = c.xx(a);
                    d && (d.cmd = "clipboardPaste", d.sheetName = c.name(), Pa(c) && (d.clipboardHtml = b), c.wu().execute(d))
                },
                xx: function(a) {
                    var b, c, d, e, f, g, h, i, j, k = this,
                        l = Ra().Exp_InvalidPastedArea,
                        m = k.tu(),
                        n = m.PA,
                        o = m.n5,
                        p = m.G4;
                    if (p && n && o && n.options.isProtected && n.p5(o) && (p = !1), b = {
                            pastedRange: Ga,
                            pastedInternal: !1
                        }, c = [], d = k.getSelections(), d.length > 1) for (f = 0; f < d.length; f++) {
                        if (e = d[f], !k.ix(n, [o[0]], e, p, a, b)) return;
                        if (e.containsRange(b.pastedRange) && !e.equals(b.pastedRange)) return void k.Os(1, l);
                        c.push(b.pastedRange)
                    } else {
                        if (e = d.length > 0 ? d[0] : k.ITa.getSpan(k.Jl, k.Kl), !k.ix(n, o, e, p, a, b)) return;
                        c.push(b.pastedRange)
                    }
                    if (g = k.at, g && g.jx(b.pastedInternal), b.pastedInternal || (n = Ga, o = Ga, p = !1), h = k.options.clipBoardOptions, p && (h = 0), o && 1 === o.length) for (i = 0; i < c.length; i++) j = c[i], k.nx(o[0], j) && (j.rowCount = 1, j.colCount = 1);
                    return {
                        fromSheet: n,
                        fromRanges: o,
                        isCutting: p,
                        pasteOption: h,
                        pastedRanges: c,
                        clipboardText: a
                    }
                },
                l5: function(a, b, c, d, e) {
                    var f = this,
                        g = Ka(f),
                        h = La(f);
                    return Oa(f) ? -1 <= a && (e || a < g) && -1 <= b && (e || b < h) : f.pu(a, b, c, d, g, h)
                },
                p5: function(a) {
                    for (var b = 0; b < a.length; b++) if (this.ou(a[b])) return !0;
                    return !1
                },
                yx: function(a, b, c, d) {
                    var e, f, g = this,
                        h = {
                            sheet: g,
                            sheetName: g.name(),
                            row: g.Jl,
                            col: g.Kl,
                            cancel: !1
                        };
                    g.Wq(sa.LeaveCell, h), h.cancel !== !0 && (g.endEdit && !g.endEdit() || (e = g.Jl, f = g.Kl, oa(c) && (c = g.Jl), oa(d) && (d = g.Kl), 3 === a ? g.zx(c, d, b) : 4 === a ? g.Rs(c, d, b) : 1 === a ? g.Ax(c, d, b) : 2 === a ? g.Bx(c, d, b) : 5 === a ? g.Cx() : 6 === a && g.Dx(), g.Ss(a, e, f)))
                },
                Ex: function(a) {
                    var b, c, d = this,
                        e = {
                            sheet: d,
                            sheetName: d.name(),
                            row: d.Jl,
                            col: d.Kl,
                            cancel: !1
                        };
                    d.Wq(sa.LeaveCell, e), e.cancel !== !0 && d.endEdit() && (b = d.Jl, c = d.Kl, 3 === a ? d.Fx(d.Jl, d.Kl) : 4 === a && d.Gx(d.Jl, d.Kl), d.Ss(a, b, c))
                },
                Ss: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w = this,
                        x = w.mm,
                        y = w.ITa.getSelections(),
                        z = !1;
                    w.Hx || (d = w.Tq(w.Ix()), (y.length > 1 || Ma(d) > 1 || Na(d) > 1) && (z = !0), w.Tr()), e = w.Jl, f = w.Kl, g = w.ITa.getSpan(e, f), w.Lr = Ma(g), w.Mr = Na(g), w.Hx || (h = w.Jx(e, f), i = w.selectionPolicy(), j = w.selectionUnit(), 0 === i ? w.ITa.do("clearSelection") : 1 === i && w.ITa.do("clearSelection"), 1 === j ? (h.col = -1, h.colCount = -1) : 2 === j && (h.row = -1, h.rowCount = -1), w.Kx(h.row, h.col, Ma(h), Na(h), !1), k = w.ITa.getSelections(), x.zu(y, k) && (w.yu(y, k), w.Au(y))), w.Yq(e, f), b !== e && (l = w.wq, l && l.Lx()), m = w.yl, z ? (n = w.am(), o = n.zr, p = n.Ar, q = n.width - o, r = n.height - p, m.Mx(o, p, q, r), m.repaint(new za(o, p, q, n.Cr)), m.repaint(new za(o, p, n.Br, r)), m.Pw(m.bm())) : (s = w.ITa.getSpan(b, c), t = Ma(s), u = Na(s), m.im(new ya(e, f, w.Lr, w.Mr).union(new ya(b, c, t, u)))), v = {
                        sheet: w,
                        sheetName: w.name(),
                        row: e,
                        col: f
                    }, w.Wq(sa.EnterCell, v), w.Wq(sa.FormulatextboxEnterCell, v), x.cs && x.cs(e, f)
                },
                Nx: function(a, b) {
                    var c = this,
                        d = c.getDataValidator && c.getDataValidator(a, b),
                        e = {
                            sheet: c,
                            sheetName: c.name(),
                            row: a,
                            col: b,
                            validator: d,
                            validationResult: 0
                        };
                    return c.Wq(sa.ValidationError, e), e.validationResult
                }
            });

            function lb(a, b) {
                return a.sheets ? a.getSheetFromName(b.sheetName) : a
            }
            function mb(a, b, c, d) {
                var e = lb(a, c),
                    f = new b(e, c, d);
                return d ? f.undo(e) : f.execute(e)
            }
            b = ga.Commands = {}, b.Ox = function(a, b) {
                return !!a && (2 !== a.Px && (a.yx(b, !1), !0))
            }, b.Qx = function(a, b, c, d) {
                return !!a && (2 !== a.Px && (a.yx(b, !1, c, d), !0))
            }, b.Rx = function(a, b, c) {
                return !!a && (2 !== a.Px && (!(a.endEdit && !a.endEdit()) && (a.Sx(b, c), !0)))
            };

            function nb(a) {
                var c = a;
                return function(a, d) {
                    var e = lb(a, d);
                    return b.Ox(e, c)
                }
            }
            function ob(a, c) {
                var d = a,
                    e = c;
                return function(a, c) {
                    var f = lb(a, c);
                    return b.Rx(f, d, e)
                }
            }
            function pb(a, b) {
                var c, d, e, f = a.parent;
                f && (c = f.getSheetCount(), d = e = f.getActiveSheetIndex(), b ? e < c - 1 && e++ : e > 0 && e--, d !== e && (f.dq(e, 1), f.repaint()))
            }
            function qb(a, b) {
                a.Tx = !0, a.Hx ? a.Ex(b) : a.yx(b, !0), a.Tx = !1
            }
            function rb(a, b) {
                var c, d, e, f;
                return !!a.endEdit() && (c = a.mm, c.Ux(), c.Vx(), la.Vl.Zl(Ga), d = !1, e = a.parent, e && (f = b.call(e), f && f.focus ? (f.focus(), d = !0) : e.Uv()), {
                        ignoreCancelDefault: !d
                    })
            }
            d = "navigationLeft", e = "navigationRight", f = "navigationUp", g = "navigationDown", h = "navigationHome2", i = "navigationEnd2", j = "navigationTop", k = "navigationBottom", l = "navigationHome", m = "navigationFirst", n = "navigationEnd", o = "navigationLast", p = "moveToNextCell", q = "moveToPreviousCell", r = "navigationPageUp", s = "navigationPageDown", t = "navigationPreviousSheet", u = "navigationNextSheet", v = "clear", w = "clearAndEditing", x = "commitInputNavigationDown", y = "commitInputNavigationUp", z = "cancelInput", A = "commitArrayFormula", B = "selectionLeft", C = "selectionRight", D = "selectionUp", E = "selectionDown", F = "selectionHome", G = "selectionEnd", H = "selectionPageUp", I = "selectionPageDown", J = "selectionTop", K = "selectionBottom", L = "selectionFirst", M = "selectionLast", N = "copy", O = "cut", P = "paste", Q = "undo", R = "redo", S = "resizeColumn", T = "resizeRow", U = "autoFitColumn", V = "autoFitRow", W = "editCell", X = "renameSheet", Y = "zoom", Z = "clearValues", $ = "clipboardPaste", _ = "selectNextControl", aa = "selectPreviousControl", ba = "moveToNextCellThenControl", ca = "moveToPreviousCellThenControl", da = "changeFormulaReference", b.bT = lb, b.h4 = mb, b.uv = function(a) {
                var c = Ba.sl(),
                    ea = !c,
                    fa = c;
                a.register(d, b[d], 37, !1, !1, !1, !1), a.register(e, b[e], 39, !1, !1, !1, !1), a.register(f, b[f], 38, !1, !1, !1, !1), a.register(g, b[g], 40, !1, !1, !1, !1), a.register(h, b[h], 37, ea, !1, !1, fa), a.register(i, b[i], 39, ea, !1, !1, fa), a.register(j, b[j], 38, ea, !1, !1, fa), a.register(k, b[k], 40, ea, !1, !1, fa), a.register(l, b[l], 36, !1, !1, !1, !1), a.register(m, b[m], 36, !0, !1, !1, !1), a.register(n, b[n], 35, !1, !1, !1, !1), a.register(o, b[o], 35, !0, !1, !1, !1), a.register(p, b[p], 9, !1, !1, !1, !1), a.register(q, b[q], 9, !1, !0, !1, !1), a.register(r, b[r], 33, !1, !1, !1, !1), a.register(s, b[s], 34, !1, !1, !1, !1), a.register(t, b[t], 33, ea, !1, !1, fa), a.register(u, b[u], 34, ea, !1, !1, fa), a.register(v, b[v], 46, !1, !1, !1, !1), a.register(w, b[w], 8, !1, !1, !1, !1), a.register(x, b[x], 13, !1, !1, !1, !1), a.register(y, b[y], 13, !1, !0, !1, !1), a.register(z, b[z], 27, !1, !1, !1, !1), a.register(A, b[A], 13, !0, !0, !1, !1), a.register(B, b[B], 37, !1, !0, !1, !1), a.register(C, b[C], 39, !1, !0, !1, !1), a.register(D, b[D], 38, !1, !0, !1, !1), a.register(E, b[E], 40, !1, !0, !1, !1), a.register(F, b[F], 36, !1, !0, !1, !1), a.register(G, b[G], 35, !1, !0, !1, !1), a.register(H, b[H], 33, !1, !0, !1, !1), a.register(I, b[I], 34, !1, !0, !1, !1), a.register(F, b[F], 37, ea, !0, !1, fa), a.register(G, b[G], 39, ea, !0, !1, fa), a.register(J, b[J], 38, ea, !0, !1, fa), a.register(K, b[K], 40, ea, !0, !1, fa), a.register(L, b[L], 36, !0, !0, !1, !1), a.register(M, b[M], 35, !0, !0, !1, !1), a.register(N, b[N], 67, ea, !1, !1, fa), a.register(O, b[O], 88, ea, !1, !1, fa), a.register(P, b[P], 86, ea, !1, !1, fa), a.register(Q, b[Q], 90, ea, !1, !1, fa), a.register(R, b[R], 89, ea, !1, !1, fa), a.register(_, b[_]), a.register(aa, b[aa]), a.register(ba, b[ba]), a.register(ca, b[ca]), a.register(da, b[da]), a.register(S, b[S]), a.register(T, b[T]), a.register(U, b[U]), a.register(V, b[V]), a.register(W, b[W]), a.register(X, b[X]), a.register(Y, b[Y]), a.register(Z, b[Z]), a.register($, b[$])
            }, b[d] = {
                canUndo: !1,
                execute: nb(3)
            }, b[e] = {
                canUndo: !1,
                execute: nb(4)
            }, b[f] = {
                canUndo: !1,
                execute: nb(1)
            }, b[g] = {
                canUndo: !1,
                execute: nb(2)
            }, b[A] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d = lb(a, c),
                        e = b.Wx;
                    return e && (d = e.fv(d)), d.fv && d.fv(), !0
                }
            }, b[x] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d = lb(a, c),
                        e = b.Wx;
                    return e && (d = e.Xx(d)), d.yx(2, !1), !0
                }
            }, b[y] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d = lb(a, c),
                        e = b.Wx;
                    return e && (d = e.Yx(d)), d.yx(1, !1), !0
                }
            }, b[l] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d = lb(a, c);
                    return b.Qx(d, 4, Ga, d.frozenColumnCount() - 1)
                }
            }, b[h] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d = lb(a, c);
                    return b.Qx(d, 4, Ga, -1)
                }
            }, b[n] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d = lb(a, c);
                    return b.Qx(d, 3, Ga, La(d) - d.frozenTrailingColumnCount())
                }
            }, b[i] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d = lb(a, c);
                    return b.Qx(d, 3, Ga, La(d))
                }
            }, b[j] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d = lb(a, c);
                    return b.Qx(d, 2, -1, Ga)
                }
            }, b[k] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d = lb(a, c);
                    return b.Qx(d, 1, Ka(d), Ga)
                }
            }, b[r] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d, e, f, g, h, i = lb(a, c);
                    if (!i || 2 === i.Px) return !1;
                    if (d = i.Ew(), d === Ga || d === i.lq) return !0;
                    if (e = i.Gr(1, 3), f = i._q(i.Jl - e.length), f < d && (f = d), g = b.Wx) {
                        if (h = g.Zx(i, f, d), h.r) return !0;
                        i = h.sheet
                    }
                    return !!i.endEdit() && (i.Qs(f, i.getActiveColumnIndex()) && (i.Jr(f, Ga), i.Qr = f, i.yx()), i.mq(d), !0)
                }
            }, b[s] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d, e, f, g, h, i = lb(a, c);
                    if (!i || 2 === i.Px) return !1;
                    if (d = i.$x(), d === Ga || d === i.lq) return !0;
                    if (e = i.Gr(1, 3), f = i.gr(i.Jl + e.length), f < d && (f = d), g = b.Wx) {
                        if (h = g._x(i, f, d), h.r) return !0;
                        i = h.sheet
                    }
                    return !!i.endEdit() && (i.Qs(f, i.getActiveColumnIndex()) && (i.Jr(f, Ga), i.Qr = f, i.yx()), i.mq(d), !0)
                }
            }, b[u] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = lb(a, b);
                    pb(c, !0)
                }
            }, b[t] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = lb(a, b);
                    pb(c, !1)
                }
            }, b[m] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d, e, f = lb(a, c);
                    if (!f || 2 === f.Px) return !1;
                    if (d = b.Wx) {
                        if (e = d.ay(f), e.r) return !0;
                        f = e.sheet
                    }
                    return f.yx(5, !1, f.Jl, f.Kl), !0
                }
            }, b[o] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d, e, f = lb(a, c);
                    if (!f || 2 === f.Px) return !1;
                    if (d = b.Wx) {
                        if (e = d.by(f), e.r) return !0;
                        f = e.sheet
                    }
                    return f.yx(6, !1, f.Jl, f.Kl), !0
                }
            }, b[_] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = lb(a, b);
                    return !!c.parent && rb(c, c.parent.nextControl)
                }
            }, b[aa] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = lb(a, b);
                    return !!c.parent && rb(c, c.parent.previousControl)
                }
            }, b[p] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d = lb(a, c),
                        e = b.Wx;
                    return e && (d = e.ey(d)), qb(d, 4), !0
                }
            }, b[q] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d = lb(a, c),
                        e = b.Wx;
                    return e && (d = e.gy(d)), qb(d, 3), !0
                }
            }, b[ba] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d, e, f = lb(a, c),
                        g = f.Qr,
                        h = f.getActiveColumnIndex();
                    return f.Tx = !0, d = f.hy(f.getActiveRowIndex(), h, !0, g), f.Tx = !1, e = !d || (d.leadingCellRow < g || d.leadingCellRow === g && h > d.col), e ? b[_].execute(a, c) : b[p].execute(a, c)
                }
            }, b[ca] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d, e, f = lb(a, c),
                        g = f.Qr,
                        h = f.getActiveColumnIndex();
                    return f.Tx = !0, d = f.iy(f.getActiveRowIndex(), h, !0, g), f.Tx = !1, e = !d || (d.leadingCellRow > g || d.leadingCellRow === g && h < d.col), e ? b[aa].execute(a, c) : b[q].execute(a, c)
                }
            }, b[z] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d, e, f, g, h, i, j = lb(a, c),
                        k = b.Wx;
                    if (k && k.jy(j), j.isEditing()) return d = j.getValue(j.Jl, j.Kl, 3), !! j.endEdit(!0) && (j.setValue(j.Jl, j.Kl, d, 3, !0), !0);
                    if (e = j.parent, f = e && e.sheets) for (g = 0, h = f.length; g < h; g++) i = f[g], i && i.at && i.at.ky()
                }
            }, b[v] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c, d = lb(a, b);
                    return !d.isEditing() && (c = d.getSelections(), d.wu().execute({
                            cmd: Z,
                            sheetName: d.name(),
                            ranges: c
                        }), !0)
                }
            }, b[w] = {
                canUndo: !1,
                execute: function(a, c) {
                    var d = lb(a, c);
                    return !d.isEditing() && (Ba.sl() ? (b[v].execute(a, c), !0) : (d.startEdit(!0, ""), !0))
                }
            }, b[N] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = lb(a, b),
                        d = b.copyData = c.ux(b.ignoreClipboard);
                    return b.callback && b.callback(), !d || Ha
                }
            }, b[O] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = lb(a, b),
                        d = b.cutData = c.sx(b.ignoreClipboard);
                    return b.callback && b.callback(), !d || Ha
                }
            }, b[P] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = lb(a, b);
                    c.vx(b)
                }
            }, b[B] = {
                canUndo: !1,
                execute: ob(37)
            }, b[C] = {
                canUndo: !1,
                execute: ob(39)
            }, b[D] = {
                canUndo: !1,
                execute: ob(38)
            }, b[E] = {
                canUndo: !1,
                execute: ob(40)
            }, b[F] = {
                canUndo: !1,
                execute: ob(37, !0)
            }, b[G] = {
                canUndo: !1,
                execute: ob(39, !0)
            }, b[H] = {
                canUndo: !1,
                execute: ob(33)
            }, b[I] = {
                canUndo: !1,
                execute: ob(34)
            }, b[J] = {
                canUndo: !1,
                execute: ob(38, !0)
            }, b[K] = {
                canUndo: !1,
                execute: ob(40, !0)
            }, b[L] = {
                canUndo: !1,
                execute: ob(36, !0)
            }, b[M] = {
                canUndo: !1,
                execute: ob(35, !0)
            }, b[da] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = lb(a, b),
                        d = c && c.mm;
                    if (d) {
                        Ta(c);
                        try {
                            d.ly && d.ly()
                        } finally {
                            Ua(c)
                        }
                    }
                }
            }, b[Q] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c, d = a;
                    d && (c = d.undoManager(), c && c.canUndo() && c.undo())
                }
            }, b[R] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c, d = a;
                    d && (c = d.undoManager(), c && c.canRedo() && c.redo())
                }
            }, b[S] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return mb(a, xb, b, c)
                }
            }, b[T] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return mb(a, yb, b, c)
                }
            }, b[U] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return mb(a, zb, b, c)
                }
            }, b[V] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return mb(a, Ab, b, c)
                }
            }, b[W] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return mb(a, Bb, b, c)
                }
            }, b[X] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return mb(a, Db, b, c)
                }
            }, b[Y] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return mb(a, Eb, b, c)
                }
            }, b[Z] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return mb(a, Hb, b, c)
                }
            }, b[$] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return mb(a, Jb, b, c)
                }
            };

            function sb(a, b, c) {
                var d = this;
                d.kj = a, d.my = b, d.ny = c, d.oy = [], d.Iu = [], d.py()
            }
            ea = {
                256: "bindingPath",
                4: "comment",
                2: "formula",
                16: "sparkline",
                64: "style",
                128: "tag",
                1: "value"
            }, Ea(sb.prototype, {
                py: function() {
                    var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A = this,
                        B = A.my,
                        C = A.kj;
                    if (C && B) {
                        if (a = A.ny, b = B.row, c = B.col, d = Ma(B), e = Na(B), f = A.oy, g = !1, b === -1 && (g = !0, b = 0, d = Ka(C)), c === -1 && (g = !0, c = 0, e = La(C)), i = [], (64 & a) > 0) for (k = 0; k < e; k++) i[k] = C.Aj(-1, k) || Ga;
                        for (l = 0; l < d; l++) for (m = b + l, (64 & a) > 0 && (h = C.Aj(m, -1) || Ga), n = 0; n < e; n++) {
                            if (p = c + n, ga.X3 && (2 & a) > 0 && C.getFormulaInformation && (o = C.getFormulaInformation(m, p), o.hasFormula)) if (o.isArrayFormula) {
                                if (q = o.baseRange, q.row === m && q.col === p) for (r = q.row, s = q.row + Ma(q); r < s; r++) for (t = q.col, u = q.col + Na(q); t < u; t++) A.qy(f, r - b, t - c, o, 2)
                            } else A.qy(f, l, n, o.formula, 2);
                            !((1 & a) > 0) || o && o.hasFormula || A.qy(f, l, n, C.getValue(m, p, 3), 1), (16 & a) > 0 && C.getSparkline && (v = C.getSparkline(m, p), w = Ga, v && (w = v.data()), v && w && A.qy(f, l, n, v, 16)), (64 & a) > 0 && (g ? x = C.getActualStyle(m, p, 3) : (j = C.Aj(m, p) || Ga, x = C.Dq(m, p, 3, j, h, i[n])), y = Ha, x && x.toJSON && (y = JSON.stringify(x.toJSON(3, !0))), A.qy(f, l, n, y, 64)), z = C.ITa.Ky, (4 & a) > 0 && z && A.qy(f, l, n, z.get(m, p), 4), (128 & a) > 0 && A.qy(f, l, n, C.getTag(m, p, 3), 128), (256 & a) > 0 && A.qy(f, l, n, C.getBindingPath && C.getBindingPath(m, p, 3), 256)
                        }
                    }
                },
                sy: function() {
                    return this.oy
                },
                qy: function(a, b, c, d, e) {
                    !oa(d) && a && (a[b] === Ha && (a[b] = []), a[b][c] === Ha && (a[b][c] = {}), a[b][c][ea[e]] = d)
                },
                uy: function(a) {
                    var b, c, d, e, f, g, h, i, j;
                    if (a) for (b = this, c = b.oy, d = 0, e = a.length; d < e; d++) if (f = a[d]) for (g = 0, h = f.length; g < h; g++) i = f[g], i && (c[d] || (c[d] = []), j = c[d][g], j ? b.vy(i, j) && (c[d][g] = Ha) : c[d][g] = i)
                },
                vy: function(a, b) {
                    var c, d, e, f = this.ny,
                        g = [];
                    for (256 & f && g.push(ea[256]), 4 & f && g.push(ea[4]), 2 & f && g.push(ea[2]), 16 & f && g.push(ea[16]), 64 & f && g.push(ea[64]), 128 & f && g.push(ea[128]), 1 & f && g.push(ea[1]), c = 0, d = g.length; c < d; c++) if (e = g[c], a[e] !== b[e]) return !1;
                    return !0
                },
                wy: function() {
                    var a, b, c, d, e, f = this,
                        g = f.my.row,
                        h = f.my.col,
                        i = f.oy,
                        j = f.Iu;
                    if (j && j.length > 0) return j;
                    for (j = [], g = g === -1 ? 0 : g, h = h === -1 ? 0 : h, a = 0, b = i.length; a < b; a++) if (c = i[a]) for (d = 0, e = c.length; d < e; d++) c[d] && j.push({
                        row: a + g,
                        col: d + h
                    });
                    return f.Iu = j, j
                }
            }), b.xy = sb, b.Bu = function(a, b, c, d, e, f, g) {
                a && (b < 0 && (b = 0, d = Ka(a)), c < 0 && (c = 0, e = La(a)), a.Bu(b, c, d, e, f, g))
            };

            function tb(a, b) {
                var c = [];
                return "string" == typeof b ? c.push(a.getSheetFromName(b)) : Array.isArray(b) && b.forEach(function(b) {
                    c.push(a.getSheetFromName(b))
                }), c
            }
            b.bWa = function(a) {
                return "changes" + a
            }, b.cWa = function(a) {
                return a && (0 !== a.length || !ma.isEmptyObject(a))
            }, b.aWa = function(a) {
                var c, d = a.sheetName;
                return "string" == typeof d ? c = [d] : Array.isArray(d) && (c = d), !! c && c.every(function(c) {
                    var d = b.bWa(c),
                        e = a[d];
                    return e && 0 === e.length && ma.isEmptyObject(e)
                })
            }, b.startTransaction = function(a, b) {
                tb(a, b.sheetName).forEach(function(a) {
                    a.ITa.startTransaction()
                })
            }, b.endTransaction = function(a, c) {
                tb(a, c.sheetName).forEach(function(a) {
                    var d = b.bWa(a.name());
                    c[d] = a.ITa.endTransaction()
                })
            }, b.undoTransaction = function(a, c) {
                tb(a, c.sheetName).forEach(function(a) {
                    var d = b.bWa(a.name());
                    a.ITa.undo(c[d]), a.$p()
                })
            };

            function ub(a, b) {
                Ta(a), b || Va(a)
            }
            function vb(a, b) {
                b || Wa(a), Ua(a)
            }
            function wb() {}
            wb.prototype = {
                constructor: wb,
                execute: function() {},
                canExecute: function() {
                    return !0
                },
                canUndo: function() {
                    return !0
                },
                undo: function() {
                    return !0
                },
                Lz: ub,
                Mz: vb
            }, b.ActionBase = wb, Fa(xb, wb);

            function xb(a, b) {
                var c = this;
                wb.call(c), c.kj = a, c.VQ = b, oa(b.lq) && (c.VQ.lq = a.lq, c.VQ.qq = a.qq)
            }
            Ea(xb.prototype, {
                execute: function() {
                    var a, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s = this,
                        t = !1;
                    if (s.canExecute() && (a = s.VQ, c = s.kj, d = a.columns, e = a.rowHeader, f = d && d.length, c && f > 0)) {
                        if (g = s.Sz(d), h = {
                                sheet: c,
                                sheetName: c.name(),
                                colList: g,
                                header: e,
                                cancel: !1
                            }, c.Wq(ua, h), h && h.cancel === !0) return t;
                        a.Tz = !0, c.ITa.startTransaction(), ub(c);
                        try {
                            for (i = 2, j = 3, k = e ? La(c, i) : La(c, j), c.qq = a.qq, l = a.size, m = 0; m < f; m++) for (n = d[m], o = n.firstCol, p = n.lastCol, q = o; q <= p; q++) 0 <= q && q < k && (e && c.getColumnResizable(q, i) && l !== c.$r(q, i) ? (c.setColumnWidth(q, l, i), t = !0) : !e && c.getColumnResizable(q, j) && l !== c.$r(q, j) && (c.setColumnWidth(q, l, j), t = !0))
                        } finally {
                            vb(c, !1), r = b.bWa(c.name()), a[r] = c.ITa.endTransaction()
                        }
                        ma[ma.sd]({
                            tc: c.parent
                        }), c.Wq(va, {
                            sheet: c,
                            sheetName: c.name(),
                            colList: g,
                            header: a.rowHeader
                        }), c.qs()
                    }
                    return t
                },
                undo: function() {
                    var a, c, d, e, f, g, h, i, j, k, l, m = this,
                        n = !1;
                    if (m.canUndo() && (a = m.VQ, c = m.kj, d = a.columns, e = a.rowHeader, f = d && d.length, c && f > 0)) {
                        if (g = m.Sz(d), h = {
                                sheet: c,
                                sheetName: c.name(),
                                colList: g,
                                header: e,
                                cancel: !1
                            }, c.Wq(ua, h), h && h.cancel === !0) return n;
                        ub(c);
                        try {
                            i = b.bWa(c.name()), c.ITa.undo(a[i]), j = d[d.length - 1], k = j.firstCol, l = a.lq, c.oq = !0, c.showCell(l, k, 0, 1), n = !0
                        } finally {
                            vb(c, !1)
                        }
                        ma[ma.sd]({
                            tc: c.parent
                        }), c.Wq(va, {
                            sheet: c,
                            sheetName: c.name(),
                            colList: g,
                            header: a.rowHeader
                        })
                    }
                    return n
                },
                Sz: function(a) {
                    var b, c, d, e, f, g, h = [];
                    for (b = 0, c = a.length; b < c; b++) for (d = a[b], e = d.firstCol, f = d.lastCol, g = e; g <= f; g++) h.push(g);
                    return h
                },
                canUndo: function() {
                    return this.VQ.Tz
                }
            }), Fa(yb, wb);

            function yb(a, b) {
                var c = this;
                wb.call(c), c.kj = a, c.VQ = b, oa(b.lq) && (c.VQ.lq = a.lq, c.VQ.qq = a.qq)
            }
            Ea(yb.prototype, {
                execute: function() {
                    var a, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s = this,
                        t = !1;
                    if (s.canExecute() && (a = s.kj, c = s.VQ, d = c.rows, e = d && d.length, a && e > 0)) {
                        if (f = s.Vz(d), g = {
                                sheet: a,
                                sheetName: a.name(),
                                rowList: f,
                                header: c.columnHeader,
                                cancel: !1
                            }, a.Wq(wa, g), g && g.cancel === !0) return t;
                        c.Tz = !0, a.ITa.startTransaction(), ub(a);
                        try {
                            for (h = 3, i = 1, j = c.columnHeader, k = j ? Ka(a, i) : Ka(a, h), a.lq = c.lq, l = c.size, m = 0; m < e; m++) for (n = d[m], o = n.firstRow, p = n.lastRow, q = o; q <= p; q++) 0 <= q && q < k && (j && a.getRowResizable(q, i) && l !== a.Yr(q, i) ? (a.setRowHeight(q, l, i), t = !0) : !j && a.getRowResizable(q, h) && l !== a.Yr(q, h) && (a.setRowHeight(q, l, h), t = !0))
                        } finally {
                            vb(a, !1), r = b.bWa(a.name()), c[r] = a.ITa.endTransaction()
                        }
                        ma[ma.sd]({
                            tc: a.parent
                        }), a.Wq(xa, {
                            sheet: a,
                            sheetName: a.name(),
                            rowList: f,
                            header: c.columnHeader
                        }), a.os()
                    }
                    return t
                },
                undo: function() {
                    var a, c, d, e, f, g, h, i, j, k, l = this,
                        m = !1;
                    if (l.canUndo() && (a = l.kj, c = l.VQ, d = c.rows, e = d && d.length, a && e > 0)) {
                        if (f = l.Vz(d), g = {
                                sheet: a,
                                sheetName: a.name(),
                                rowList: f,
                                header: c.columnHeader,
                                cancel: !1
                            }, a.Wq(wa, g), g && g.cancel === !0) return m;
                        ub(a);
                        try {
                            h = b.bWa(a.name()), a.ITa.undo(c[h]), i = d[d.length - 1], j = i.firstRow, k = c.qq, a.oq = !0, a.showCell(j, k, 1, 0), m = !0
                        } finally {
                            vb(a, !1)
                        }
                        ma[ma.sd]({
                            tc: a.parent
                        }), a.Wq(xa, {
                            sheet: a,
                            sheetName: a.name(),
                            rowList: f,
                            header: c.columnHeader
                        })
                    }
                    return m
                },
                Vz: function(a) {
                    var b, c, d, e, f, g, h = [];
                    for (b = 0, c = a.length; b < c; b++) for (d = a[b], e = d.firstRow, f = d.lastRow, g = e; g <= f; g++) h.push(g);
                    return h
                },
                canUndo: function() {
                    return this.VQ.Tz
                }
            }), Fa(zb, wb);

            function zb(a, b) {
                var c = this,
                    d = a.parent;
                wb.call(c), c.kj = a, c.VQ = b, c.Wz = b.rowHeader ? 2 : 3, Da(b.autoFitType) || (b.autoFitType = d ? d.options.autoFitType : 0)
            }
            Ea(zb.prototype, {
                canExecute: function() {
                    var a = this.VQ;
                    return this.kj && a.columns && a.columns.length > 0
                },
                execute: function() {
                    var a, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q = this,
                        r = !1;
                    if (q.canExecute()) {
                        if (a = q.VQ, c = q.kj, d = q.Wz, e = q.Sz(a.columns), f = 2 === d, g = {
                                sheet: c,
                                sheetName: c.name(),
                                colList: e,
                                header: f,
                                cancel: !1
                            }, c.Wq(ua, g), g && g.cancel === !0) return r;
                        for (a.Tz = !0, h = La(c, d), i = h - 1, j = 0, l = 0, m = a.columns.length; l < m; l++) k = a.columns[l].col, i = i > k ? k : i, j = j < k ? k : j;
                        Aa.qn(c, 0, i, Ka(c) - 1, j), c.ITa.startTransaction(), ub(c);
                        try {
                            for (l = 0, m = a.columns.length; l < m; l++) o = a.columns[l].col, 0 <= o && o < h && c.getColumnResizable(o, d) && (n = q.xl(o), n !== c.getColumnWidth(o, d) && (c.setColumnWidth(o, n, d), r = !0))
                        } finally {
                            Aa.Nm(), vb(c, !1), p = b.bWa(c.name()), a[p] = c.ITa.endTransaction()
                        }
                        ma[ma.sd]({
                            tc: c.parent
                        }), c.Wq(va, {
                            sheet: c,
                            sheetName: c.name(),
                            colList: e,
                            header: f
                        })
                    }
                    return r
                },
                undo: function() {
                    var a, c, d, e, f, g, h, i = this,
                        j = !1;
                    if (i.canUndo()) {
                        if (a = i.VQ, c = i.kj, d = i.Wz, e = i.Sz(a.columns), f = 2 === d, g = {
                                sheet: c,
                                sheetName: c.name(),
                                colList: e,
                                header: f,
                                cancel: !1
                            }, c.Wq(ua, g), g && g.cancel === !0) return j;
                        ub(c);
                        try {
                            h = b.bWa(c.name()), c.ITa.undo(a[h]), j = !0
                        } finally {
                            vb(c, !1)
                        }
                        ma[ma.sd]({
                            tc: c.parent
                        }), c.Wq(va, {
                            sheet: c,
                            sheetName: c.name(),
                            colList: e,
                            header: f
                        })
                    }
                    return j
                },
                Sz: function(a) {
                    var b, c, d = [];
                    for (b = 0; b < a.length; b++) c = a[b], d.push(c.col);
                    return d
                },
                xl: function(a) {
                    return Ba.xl(a, this.kj, this.Wz, this.VQ.autoFitType)
                },
                canUndo: function() {
                    return this.VQ.Tz
                }
            }), Fa(Ab, wb);

            function Ab(a, b) {
                var c = this,
                    d = a.parent;
                wb.call(c), c.kj = a, c.VQ = b, c.Wz = b.columnHeader ? 1 : 3, Da(b.autoFitType) || (b.autoFitType = d ? d.options.autoFitType : 0)
            }
            Ea(Ab.prototype, {
                canExecute: function() {
                    var a = this.VQ;
                    return this.kj && a.rows && a.rows.length > 0
                },
                execute: function() {
                    var a, c, d, e, f, g, h, i, j, k, l, m, n = this,
                        o = !1;
                    if (n.canExecute()) {
                        if (a = n.VQ, c = n.kj, d = n.Vz(a.rows), e = n.Wz, f = 1 === n.Wz, g = {
                                sheet: c,
                                sheetName: c.name(),
                                rowList: d,
                                header: f,
                                cancel: !1
                            }, c.Wq(wa, g), g && g.cancel === !0) return o;
                        a.Tz = !0, c.ITa.startTransaction(), ub(c);
                        try {
                            for (h = Ka(c, e), j = 0, k = a.rows.length; j < k; j++) l = a.rows[j].row, 0 <= l && l < h && c.getRowResizable(l, e) && (i = n.Fl(l), i !== c.getRowHeight(l, e) && (c.setRowHeight(l, i, e), o = !0))
                        } finally {
                            vb(c, !1), m = b.bWa(c.name()), a[m] = c.ITa.endTransaction()
                        }
                        ma[ma.sd]({
                            tc: c.parent
                        }), c.Wq(xa, {
                            sheet: c,
                            sheetName: c.name(),
                            rowList: d,
                            header: f
                        })
                    }
                    return o
                },
                undo: function() {
                    var a, c, d, e, f, g, h = this,
                        i = !1;
                    if (h.canUndo()) {
                        if (a = h.VQ, c = h.kj, d = h.Vz(a.rows), e = 1 === h.Wz, f = {
                                sheet: c,
                                sheetName: c.name(),
                                rowList: d,
                                header: e,
                                cancel: !1
                            }, c.Wq(wa, f), f && f.cancel === !0) return i;
                        ub(c);
                        try {
                            g = b.bWa(c.name()), c.ITa.undo(a[g]), i = !0
                        } finally {
                            vb(c, !1)
                        }
                        ma[ma.sd]({
                            tc: c.parent
                        }), c.Wq(xa, {
                            sheet: c,
                            sheetName: c.name(),
                            rowList: d,
                            header: e
                        })
                    }
                    return i
                },
                Vz: function(a) {
                    var b, c, d, e = [];
                    for (b = 0, c = a.length; b < c; b++) d = a[b], e.push(d.row);
                    return e
                },
                Fl: function(a) {
                    return Ba.Fl(a, this.kj, this.Wz, this.VQ.autoFitType)
                },
                canUndo: function() {
                    return this.VQ.Tz
                }
            }), Fa(Bb, wb), fa = ".cellEditAction";

            function Bb(a, b) {
                var c, d, e = this;
                wb.call(e), e.VQ = b, e.kj = a, ga.X3 && b.ranges && 1 === b.endEditType && (c = a.Tq(b.ranges[0]), b.ranges[0] = c, 1 === Ma(c) && 1 === Na(c) && (d = a.Ms(c.row, c.col, 1, 1), d && d.ranges && d.ranges.length > 0 && (b.ranges = [d.ranges[0]])))
            }
            Ea(Bb.prototype, {
                canExecute: function() {
                    var a, b, c = this,
                        d = c.kj,
                        e = c.VQ,
                        f = e.ranges,
                        g = e.row,
                        h = e.col;
                    if (f) {
                        for (a = 0; a < f.length; a++) if (b = f[a], !d.Y3(b.row, b.col, Ma(b), Na(b))) return !1
                    } else if (!d.Y3(g, h, 1, 1)) return !1;
                    return !0
                },
                yA: function(a) {
                    var b, c, d, e, f = this,
                        g = f.VQ,
                        h = g.ranges;
                    if (h) for (b = 0; b < h.length; b++) for (c = h[b], d = c.row; d < c.row + Ma(c); d++) for (e = c.col; e < c.col + Na(c); e++) a(d, e);
                    else a(g.row, g.col)
                },
                undo: function() {
                    var a, c, d, e = this;
                    if (e.canUndo()) {
                        a = e.kj, c = e.VQ, ub(a, !0);
                        try {
                            a.Fu(ta + fa, function(b, c) {
                                "value" === c.propertyName && a.xu(c.row, c.col, c.oldValue, c.newValue)
                            }), d = b.bWa(a.name()), a.ITa.undo(c[d])
                        } catch (a) {
                            return !1
                        } finally {
                            a.Gu(ta + fa), vb(a, !0)
                        }
                        return !0
                    }
                    return !1
                },
                execute: function() {
                    var a, c, d, e, f = this,
                        g = !1;
                    if (f.canExecute()) {
                        a = f.kj, a.ITa.startTransaction(), ub(a, !0);
                        try {
                            a.Fu(ta + fa, function(b, c) {
                                "value" === c.propertyName && a.xu(c.row, c.col, c.oldValue, c.newValue)
                            }), f.VQ.applyResult = f.AA(), g = !0
                        } finally {
                            a.Gu(ta + fa), vb(a, !0), c = b.bWa(a.name()), f.VQ[c] = a.ITa.endTransaction()
                        }
                        d = a.am(), e = new za(d.kt, d.nt, d.width - d.kt, d.height - d.nt), a.repaint(e)
                    }
                    return g
                },
                zA: function(a, b) {
                    return a + "_" + b
                },
                BA: function(a) {
                    var b, c, d, e, f, g, h = this,
                        i = 0,
                        j = h.kj,
                        k = h.VQ,
                        l = k.row,
                        m = k.col,
                        n = k.newValue,
                        o = !k.hasOwnProperty("autoFormat") || k.autoFormat;
                    return ga.X3 && n && n.length > 0 && "=" === n[0] ? j.getDataValidator && j.getDataValidator(l, m) && (b = n.substring(1), "" !== b && b !== j.getFormula(l, m) && (c = j.Cf(), c && (d = c.parse(j.yj(), b, l >= 0 ? l : 0, m >= 0 ? m : 0, !0), d && (e = c.Hg(j.yj(), d, {
                        row: l,
                        col: m
                    }), j.isValid && !j.isValid(l, m, e) && (i = j.Nx(l, m)))))) : (f = h.CA(l, m, n, o, a), g = !j.isValid || j.isValid(l, m, f), g || (i = j.Nx(l, m), j.mm.DA = !0)), i
                },
                AA: function() {
                    var a, b, d, e, f, g, h, i, j, k, l, m = this,
                        n = m.kj,
                        o = m.VQ,
                        p = o.newValue,
                        q = {
                            tka: !1,
                            uka: !1,
                            vka: Ga
                        },
                        r = m.BA(q);
                    if (1 === r || 2 === r) return r;
                    if (b = !o.hasOwnProperty("autoFormat") || o.autoFormat, d = o.row, d = d >= 0 ? d : 0, e = o.col, e = e >= 0 ? e : 0, f = c(33), g = ga.X3 && f && f.Parser) if (h = n.parent, i = h && h.options.allowUserEditFormula, j = n.Cf(), i && j && p && p.length > 0 && "=" === p[0]) try {
                        if (o.ranges && 1 === o.endEditType) return l = o.ranges[0], n.setArrayFormula(l.row, l.col, Ma(l), Na(l), p.substring(1)), r;
                        k = j.parse(n.yj(), p.substring(1), d, e, !0)
                    } catch (a) {
                        throw n.Os(0, "string" == typeof a ? a : a.message), a
                    } else o.ranges && 1 === o.endEditType && (l = o.ranges[0], n.getRange(l.row, l.col, Ma(l), Na(l), 3).clear(1));
                    return k || (p && "'" === p[0] ? m.Uia(d, e, !0, q) : m.Uia(d, e, Ha, q), a = m.CA(d, e, p, b, q)), m.yA(function(b, c) {
                        if (k) try {
                            n._u(b, c, j.unparse(n.yj(), k, b, c), k), n.Wq(sa.UserFormulaEntered, {
                                sheet: n,
                                sheetName: n.name(),
                                row: b,
                                col: c,
                                formula: p.substring(1).toUpperCase()
                            })
                        } catch (a) {
                            throw n.Os(0, "string" == typeof a ? a : a.message), a
                        } else {
                            try {
                                n.hasFormula && n.hasFormula(b, c) && n.setFormula(b, c, Ga)
                            } catch (a) {
                                throw n.Os(0, "string" == typeof a ? a : a.message), a
                            }
                            try {
                                n.uq(b, c, a)
                            } catch (a) {
                                n.setValue(b, c, p)
                            }
                        }
                    }), (q.tka || q.uka) && n.setStyle(d, e, q.vka), r
                },
                canUndo: function() {
                    return 0 === this.VQ.applyResult
                },
                CA: function(a, b, c, d, e) {
                    var f, g, h, i, j, k, l = this,
                        m = l.kj,
                        n = l.VQ,
                        o = m.getActualStyle(a, b),
                        p = {};
                    return f = c && "'" === c[0] ? c.substring(1) : Ba.ul(o, c, d, p, n.editingFormatter), g = p.value, d && g && (h = Ga, (f !== Ga && "General" !== g.formatString() || !o._autoFormatter) && (g.isAuto = !0, h = g), h && (e.tka = !0, i = e.vka || m.Aj(a, b), j = "string" == typeof i, i && !j || (k = new ka, j && (k.parentName = i), i = k), i._autoFormatter = h, e.vka = i)), f
                },
                Uia: function(a, b, c, d) {
                    var e, f = this,
                        g = f.kj,
                        h = d.vka || g.Aj(a, b),
                        i = "string" == typeof h;
                    h && !i || (e = new ka, i && (e.parentName = h), h = e), h.quotePrefix !== c && (d.uka = !0, h.quotePrefix = c, d.vka = h)
                }
            });

            function Cb(a) {
                var b = a.parent,
                    c = b && b.hq;
                c && c.repaint()
            }
            Fa(Db, wb);

            function Db(a, b) {
                var c = this;
                wb.call(c), c.kj = a, c.VQ = b
            }
            Ea(Db.prototype, {
                canUndo: function() {
                    return !!this.VQ.FA
                },
                canExecute: function() {
                    var a = this,
                        b = a.VQ;
                    return a.kj && b.name && b.name !== b.FA
                },
                execute: function() {
                    var a, c = this,
                        d = c.kj,
                        e = c.VQ,
                        f = e.name,
                        g = !1;
                    return c.canExecute() && (e.FA = d.name(), d.ITa.startTransaction(), d.cq(f), Cb(d), a = b.bWa(d.name()), e[a] = d.ITa.endTransaction(), g = !0, e.sheetName = f), g
                },
                undo: function() {
                    var a, c, d, e = this;
                    return !(!e.canUndo() || (a = e.kj, c = e.VQ, !a)) && (d = b.bWa(a.name()), a.ITa.undo(c[d]), Cb(a), c.sheetName = c.FA, !0)
                }
            }), Fa(Eb, wb);

            function Eb(a, b) {
                var c = this;
                wb.call(c), c.kj = a, c.VQ = b
            }
            function Fb(a, b) {
                return !(a.isEditing() === !0 && !a.endEdit()) && (a.suspendPaint(), a.zoom(b), a.resumePaint(), !0)
            }
            Ea(Eb.prototype, {
                canExecute: function() {
                    var a = this;
                    return a.kj && a.kj.parent.options.allowUserZoom && a.kj.zoom() !== a.VQ.zoomFactor
                },
                execute: function() {
                    var a, c, d = this,
                        e = d.VQ,
                        f = !1;
                    return d.canExecute() && (a = d.kj, a.ITa.startTransaction(), f = Fb(a, e.zoomFactor), c = b.bWa(a.name()), e[c] = a.ITa.endTransaction()), f
                },
                undo: function() {
                    var a, c = this.kj;
                    if (this.canUndo()) return !(c.isEditing() === !0 && !c.endEdit()) && (c.suspendPaint(), a = b.bWa(c.name()), c.ITa.undo(this.VQ[a]), c.resumePaint(), !0)
                }
            }), Fa(Gb, wb);

            function Gb(a, b) {
                var c = this;
                wb.call(c), c.kj = a, c.VQ = b
            }
            Ea(Gb.prototype, {
                execute: function() {
                    var a, c, d, e, f, g, h, i, j, k = this;
                    k.canExecute() && (a = k.kj, c = k.VQ.clearRange, a.isDirtySuspended() || (k.VQ.Iu = new sb(a, a.Tq(c), 3)), d = a.Tq(c), e = d.row, f = d.col, g = Ma(d), h = Na(d), h > 0 && g > 0 && (a.ITa.startTransaction(), ub(a), a.getRange(e, f, g, h, 3).clear(1), ma[ma.sd]({
                        tc: a.parent
                    }), vb(a), i = b.bWa(a.name()), k.VQ[i] = a.ITa.endTransaction(), j = k.VQ.Iu, b.Bu(a, e, f, g, h, j ? j.wy() : [], 2)))
                },
                canExecute: function() {
                    var a = this.VQ.clearRange;
                    return this.kj.Y3(a.row, a.col, Ma(a), Na(a))
                },
                canUndo: function() {
                    var a = b.bWa(this.kj.name()),
                        c = this.VQ[a];
                    return b.cWa(c)
                },
                undo: function() {
                    var a, c, d, e = this,
                        f = e.kj;
                    if (e.canUndo() && f && (a = f.Tq(e.VQ.clearRange), Na(a) > 0 && Ma(a) > 0)) {
                        ub(f);
                        try {
                            c = b.bWa(f.name()), f.ITa.undo(e.VQ[c])
                        } finally {
                            vb(f)
                        }
                        return d = e.VQ.Iu, b.Bu(f, a.row, a.col, Ma(a), Na(a), d ? d.wy() : [], 2), !0
                    }
                    return !1
                }
            }), Fa(Hb, wb);

            function Hb(a, b, c) {
                var d, e, f = this;
                if (wb.call(f), f.kj = a, f.VQ = b, !c && (b.MA = [], d = b.ranges, d && d.length > 0)) for (e = 0; e < d.length; e++) b.MA[e] = new Gb(a, {
                    clearRange: d[e]
                })
            }
            Ea(Hb.prototype, {
                canExecute: function() {
                    var a, b, c = this.VQ.MA;
                    if (c) {
                        for (a = 0; a < c.length; a++) if (b = c[a], !b.canExecute()) return !1;
                        return !0
                    }
                    return !1
                },
                execute: function() {
                    var a, b, c, d, e = this;
                    if (e.canExecute() && (a = e.VQ.MA, b = e.kj, a)) {
                        for (ub(b, !0), c = 0; c < a.length; c++) d = a[c], d.execute();
                        return vb(b, !0), !0
                    }
                    return !1
                },
                canUndo: function() {
                    var a, b, c = this.VQ.MA;
                    if (c) {
                        for (a = 0; a < c.length; a++) if (b = c[a], !b.canUndo()) return !1;
                        return !0
                    }
                    return !1
                },
                undo: function() {
                    var a, b, c, d, e = this,
                        f = e.VQ.MA;
                    if (e.canUndo()) {
                        for (a = e.kj, b = f.length - 1; b >= 0; b--) if (c = f[b], ub(a, !0), d = c.undo(), vb(a, !0), !d) return !1;
                        return !0
                    }
                    return !1
                }
            }), b.OA = Hb, Fa(Ib, wb);

            function Ib(a, b) {
                var c = this;
                wb.call(c), c.kj = a, c.VQ = b
            }
            Ea(Ib.prototype, {
                canExecute: function() {
                    var a = this,
                        b = a.VQ,
                        c = b.pasteExtent,
                        d = c.targetRange,
                        e = c.sourceRange;
                    return b.toSheet.Y3(d.row, d.col, Ma(d), Na(d)) && (!c.isCutting || b.fromSheet.Y3(e.row, e.col, Ma(e), Na(e)))
                },
                oUa: function() {
                    var a = this,
                        b = a.VQ.pasteExtent,
                        c = a.VQ.io = {},
                        d = b.isCutting,
                        e = Ib.qx(a.VQ.pasteOption),
                        f = b.sourceRange,
                        g = b.targetRange,
                        h = a.VQ.fromSheet,
                        i = a.VQ.toSheet;
                    h && f && d && !h.isDirtySuspended() && (c.cA = new sb(h, f, e)), i.isDirtySuspended() || (c.fA = new sb(i, g, e))
                },
                VA: function() {
                    return this.VQ.pasteExtent.targetRange
                },
                execute: function() {
                    var a, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r = this;
                    if (r.canExecute()) {
                        if (a = r.VQ.fromSheet, c = r.VQ.toSheet, d = r.VQ.pasteExtent, e = r.VQ.pasteOption, f = d.sourceRange, g = d.targetRange, a && f && !a.pu(f.row, f.col, Ma(f), Na(f), Ka(a), La(a))) return;
                        if (!(c && g && c.l5(g.row, g.col, Ma(g), Na(g), !0))) return;
                        r.oUa(), c.ITa.startTransaction(), a && a !== c && a.ITa.startTransaction(), Ta(c), Va(c), a && Va(a);
                        try {
                            Oa(c) && (h = -1, i = -1, g.row !== -1 ? h = g.row + Ma(g) : f.row === -1 && (h = Ka(a)), j = Ka(c), h > j && r.vTa(f, g) && c.addRows(j, h - j), g.col !== -1 ? i = g.col + Na(g) : f.col === -1 && (i = La(a)), i > La(c) && r.vTa(f, g) && c.setColumnCount(i)), f && Aa.qn(a, f.row, f.col, f.row + Ma(f) - 1, f.col + Na(f) - 1), c.px(a, f, c, g, d.isCutting, d.clipboardText, d.clipboardHtml, e, !d.includeFilteredOutRow)
                        } finally {
                            Wa(c), a && Wa(a), Ua(c), k = b.bWa(c.name()), r.VQ[k] = c.ITa.endTransaction(), a && a !== c && (k = b.bWa(a.name()), r.VQ[k] = a.ITa.endTransaction()), l = r.VQ.io, m = Ib.qx(e), d.isCutting && a && (n = [], a.isDirtySuspended() || (o = new sb(a, f, m), o.uy(l.cA.sy()), l._z = o, n = o.wy()), b.Bu(a, f.row, f.col, Ma(f), Na(f), n, 3)), c && (p = [], c.isDirtySuspended() || (q = new sb(c, g, m), q.uy(l.fA.sy()), l.dA = q, p = q.wy()), b.Bu(c, g.row, g.col, Ma(g), Na(g), p, 3)), f && Aa.Nm()
                        }
                    }
                },
                vTa: function(a, b) {
                    var c, d, e, f, g, h, i;
                    return !a || (c = a.row, d = a.col, e = b.row, f = b.col, g = c === -1 && d !== -1, h = d === -1 && c !== -1, i = c === -1 && d === -1, c !== -1 && d !== -1 || g && e <= 0 || h && f <= 0 || i && e <= 0 && f <= 0)
                },
                undo: function() {
                    var a, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v = this;
                    if (v.canUndo()) {
                        if (a = v.VQ.fromSheet, c = v.VQ.toSheet, d = v.VQ.pasteExtent, e = d.sourceRange, f = d.targetRange, !c || !f) return !1;
                        if (!c.pu(f.row, f.col, Ma(f), Na(f), Ka(c), La(c))) return !1;
                        if (a && e) {
                            if (!a.pu(e.row, e.col, Ma(e), Na(e), Ka(a), La(a))) return !1;
                            if (a && a.name() === c.name() && c.parent && !pa(c.parent.sheets, a)) return !1
                        }
                        g = v.VQ.io, Ta(c);
                        try {
                            h = f.row < 0 ? 0 : f.row, i = f.col < 0 ? 0 : f.col, j = f.row < 0 ? Ka(c) : Ma(f), k = f.col < 0 ? La(c) : Na(f), l = c.name(), m = b.bWa(l), c.ITa.undo(v.VQ[m]), n = 0, o = 0, p = 0, q = 0, a && e && (n = e.row < 0 ? 0 : e.row, o = e.col < 0 ? 0 : e.col, p = e.row < 0 ? Ka(a) : Ma(e), q = e.col < 0 ? La(a) : Na(e)), r = a.name(), l !== r && (m = b.bWa(r), s = v.VQ[m], b.cWa(s) && a.ITa.undo(s)), c && (t = g.dA, b.Bu(c, h, i, j, k, t ? t.wy() : [], 3)), a && (u = g._z, b.Bu(a, n, o, p, q, u ? u.wy() : [], 3))
                        } finally {
                            Ua(c)
                        }
                    }
                    return !0
                }
            }), Ib.qx = function(a) {
                var b = 0;
                return 0 !== a && 1 !== a || (b |= 1), 0 !== a && 2 !== a || (b |= 64, b |= 32), 0 !== a && 3 !== a || (b |= 2), 0 === a && (b |= 32, b |= 16, b |= 256, b |= 4, b |= 512, b |= 128), b
            }, Fa(Jb, wb);

            function Jb(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A = this;
                if (wb.call(A), A.kj = a, A.VQ = b, !c) {
                    if (d = a, e = b.fromSheet, !d) throw Error(Ra().Exp_DestSheetIsNull);
                    if (f = b, g = f.pastedRanges, g && g.length > 0) if (b.MA = [], h = f.fromRanges || [f.fromRange], i = h.length, j = f.isCutting, k = f.clipboardText, l = f.clipboardHtml, m = f.pasteOption, n = {}, o = g[0], !j && e && e.r5(h, n) && o.equals(e.q5(h, o))) {
                        for (p = n.inSameRow, q = n.inSameCol, p ? h = h.sort(function(a, b) {
                            return a.col - b.col
                        }) : q && (h = h.sort(function(a, b) {
                            return a.row - b.row
                        })), r = o.row, s = o.col, t = 0; t < i; t++) u = h[t], v = u.rowCount, w = u.colCount, x = {
                            sourceRange: u,
                            targetRange: la.kf(r, s, v, w),
                            isCutting: j,
                            clipboardText: k,
                            clipboardHtml: l,
                            includeFilteredOutRow: !0
                        }, b.MA[t] = new Ib(a, {
                            fromSheet: e,
                            toSheet: d,
                            pasteExtent: x,
                            pasteOption: m
                        }), p ? s += w : q && (r += v);
                        b.s5 = !0
                    } else for (y = 0; y < g.length; y++) z = {
                        sourceRange: h[0],
                        targetRange: g[y],
                        isCutting: j,
                        clipboardText: k,
                        clipboardHtml: l
                    }, b.MA[y] = new Ib(a, {
                        fromSheet: e,
                        toSheet: d,
                        pasteExtent: z,
                        pasteOption: m
                    })
                }
            }
            Ea(Jb.prototype, {
                execute: function() {
                    var a, b, c, d, e, f, g, h = this,
                        i = h.VQ,
                        j = i.MA,
                        k = !1;
                    if (h.canExecute() && j) {
                        a = h.kj, b = a.parent.getActiveSheet(), ub(b, !0);
                        try {
                            for (c = !1, d = 0; d < j.length; d++) e = j[d], a ? (f = e.VQ.pasteExtent, g = {
                                sheet: a,
                                sheetName: a.name(),
                                cellRange: e.VA(),
                                pasteOption: e.VQ.pasteOption,
                                pasteData: {
                                    text: f.clipboardText,
                                    html: f.clipboardHtml
                                },
                                cancel: !1
                            }, a.Wq(sa.ClipboardPasting, g), g.cancel || (k = e.execute(), delete g.cancel, c = !0, a.Wq(sa.ClipboardPasted, g))) : k = e.execute();
                            c && h.WA()
                        } finally {
                            vb(b, !0)
                        }
                    }
                    return k
                },
                WA: function() {
                    var a, b, c, d, e, f, g = this,
                        h = g.VQ,
                        i = h.MA,
                        j = g.kj;
                    if (j && i) {
                        if (a = j.getSelections(), j.Tr(), h.s5) b = h.pastedRanges[0], j.addSelection(b.row, b.col, Ma(b), Na(b));
                        else if (i.length > 1) for (c = 0; c < i.length; c++) d = i[c], e = d.VA(), j.addSelection(e.row, e.col, Ma(e), Na(e));
                        else i.length > 0 && (f = i[0].VA(), j.addSelection(f.row, f.col, Ma(f), Na(f)), f.contains(j.Jl, j.Kl) || j.Jr(f.row, f.col));
                        j.yu(a, j.getSelections()) && j.Au(a)
                    }
                },
                canExecute: function() {
                    var a, b, c = this.VQ.MA;
                    if (c) {
                        for (a = 0; a < c.length; a++) if (b = c[a], !b.canExecute()) return !1;
                        return !0
                    }
                    return !1
                },
                canUndo: function() {
                    var a, b, c = this.VQ.MA;
                    if (c) {
                        for (a = 0; a < c.length; a++) if (b = c[a], !b.canUndo()) return !1;
                        return !0
                    }
                    return !1
                },
                undo: function() {
                    var a, b, c, d, e = this,
                        f = e.VQ.MA;
                    if (e.canUndo() && f) {
                        a = !0, b = e.kj.parent.getActiveSheet(), ub(b, !0);
                        try {
                            for (c = f.length - 1; c >= 0; c--) d = f[c], a = a && d.undo()
                        } finally {
                            vb(b, !0)
                        }
                        return a
                    }
                    return !1
                }
            }), a.exports = ga
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(42),
                d = c(43),
                e = c(26),
                f = d.KTa,
                g = b.X3 && c(62).Worksheet,
                h = d.kf,
                i = e.j.Fa,
                j = null,
                k = void 0,
                l = Math.min,
                m = Math.max;

            function n() {
                return e.C(b.SR)()
            }
            function o(a, b) {
                return a.getRowCount(b)
            }
            function p(a, b) {
                return a.getColumnCount(b)
            }
            function q(a, b, c) {
                return a.$r(b, c)
            }
            function r(a, b, c) {
                return a.Yr(b, c)
            }
            function s(a, b, c, d) {
                a.setColumnWidth(b, c, d)
            }
            function t(a, b, c, d) {
                a.setRowHeight(b, c, d)
            }
            function u(a, b, c, d) {
                return a.getActualStyle(b, c, d)
            }
            function v(a, b) {
                return a.getDefaultStyle(b)
            }
            function w(a, b, c) {
                a.setDefaultStyle(b, c)
            }
            function x(a, b, c, d, e) {
                a.Pq(b, c, d, e)
            }
            function y(a, b, c, d) {
                throw Error(e.u.Kb(n().Exp_InvalidAndSpace, [a, b, c, d]))
            }
            function z(a, b, c) {
                return b && c.Ps && c.Ps(a)
            }
            function A(a, b, c, d, e, f, g, h) {
                var i, j, k, m, q, r, s, t;
                if (!a) throw Error(n().Exp_SrcIsNull);
                if (!d) throw Error(n().Exp_DestIsNull);
                i = o(a), j = p(a), k = o(d), m = p(d), (b < -1 || b >= i) && y("from row index", b, "-1", i - 1), (c < -1 || c >= j) && y("from column index", c, "-1", j - 1), (e < -1 || e >= k) && y("to row index", e, "-1", k - 1), (f < -1 || f >= m) && y("to column index", f, "-1", m - 1), q = c, c < 0 && (q = 0, h = j), r = f < 0 ? 0 : f, (h < 1 || q + h > j || r + h > m) && y("column count", h, "1", l(j - q, m - r)), s = b, b < 0 && (s = 0, g = i), t = e < 0 ? 0 : e, (g < 1 || s + g > i || t + g > k) && y("row count", g, "1", l(i - s, k - t))
            }
            function B(a) {
                if (!a) return a;
                if ("number" == typeof a || "string" == typeof a || "boolean" == typeof a || i(a)) return a;
                if (a.clone) return a.clone();
                if (a instanceof Date) return new Date(a);
                var b, c, d;
                b = a instanceof Object ? new a.constructor : new a.constructor(a.valueOf());
                for (c in a) a.hasOwnProperty(c) && (d = a[c], a.hasOwnProperty(c) && b[c] !== d && ("object" == typeof d ? b[c] = B(d) : b[c] = d));
                return b.toString = a.toString, b.valueOf = a.valueOf, b
            }
            function C(a, b, c, d, e, f, g, i, j) {
                var l, m, n, o, p, q, r, s, t, u, v = a.getSpans(k, j),
                    w = d.getSpans(k, j),
                    x = [];
                if (v) for (l = 0; l < v.length; l++) m = v[l], n = m.row, o = m.col, p = m.rowCount, q = m.colCount, b === -1 ? c <= o && o + q <= c + i && x.push(h(n, f + o - c, p, q)) : c === -1 ? b <= n && n + p <= b + g && x.push(h(e + n - b, o, p, q)) : b <= n && n < b + g && c <= o && o < c + i && x.push(h(e + n - b, f + o - c, p, q));
                if (w) for (l = 0; l < w.length; l++) m = w[l], n = m.row, o = m.col, s = o >= f && o < f + i, t = n >= e && n < e + g, r = b === -1 ? s : c === -1 ? t : t && s, r && (u = d.findSpan(n, o, j), u && u.row === n && u.col === o && d.do("removeSpan", u, j));
                for (l = 0; l < x.length; l++) d.do("addSpan", x[l], j)
            }
            function D(a, b, c, d, e, f, g, h, i) {
                var j = a.conditionalFormats,
                    k = d.conditionalFormats;
                j && k && (j.XA(b, c, k, e, f, g, h), i && j.YA(b, c, g, h))
            }
            function E(a, b, c, d, e, f, g, h, i) {
                var j, k;
                b < 0 && (b = 0, g = l(o(a), o(d))), e < 0 && (e = 0), c < 0 && (c = 0, h = l(p(a), p(d))), f < 0 && (f = 0), j = !(a === d && a.name() === d.name()), j ? (k = d.ZA, k && (i ? a.ZA.count() > 0 && k.$A(a, b, c, e, f, g, h) : k._A(a, b, c, e, f, g, h))) : (k = a.ZA, k && (i ? k.count() > 0 && k.aB(b, c, e, f, g, h) : k.Zz(b, c, e, f, g, h)))
            }
            function F(a, b, c, d, e, f) {
                var g, h, i;
                b < 0 && (b = 0, e = l(p(a), p(c))), d < 0 && (d = 0), g = a.columnOutlines, h = c.columnOutlines, i = !(a === c && a.name() === c.name()), i ? g && h && h.bB(g, b, d, e, f) : g && g.cB(b, d, e, f)
            }
            function G(a, b, c, d, e, f) {
                var g, h, i;
                b < 0 && (b = 0, e = l(o(a), o(c))), d < 0 && (d = 0), g = !(a === c && a.name() === c.name()), h = a.rowOutlines, i = c.rowOutlines, g ? h && i && i.bB(h, b, d, e, f) : h && h.cB(b, d, e, f)
            }
            function H(a, b, c, d, e, f, g, h, i, j) {
                var k = !(a === d && a.name() === d.name()),
                    l = a.ITa,
                    m = l.zl(j);
                k ? (C(l, b, c, d.ITa, e, f, g, h, j), i && m && l.do("clearSpan", b, c, g, h, j)) : i ? l.do("moveSpan", b, c, e, f, g, h, j) : l.do("copySpan", b, c, e, f, g, h, j)
            }
            function I(a, b, c, d, e, f, g, h, i) {
                var j = b,
                    k = c;
                j < 0 && (j = 0, g = l(o(a), o(d))), e < 0 && (e = 0), k < 0 && (k = 0, h = l(p(a), p(d))), f < 0 && (f = 0), b < 0 && H(a, -1, k, d, -1, f, -1, h, i, 1), c < 0 && H(a, j, -1, d, e, -1, g, -1, i, 2), H(a, j, k, d, e, f, g, h, i)
            }
            function J(a, b, c, d, e, f, g) {
                var h, m, n, v, w, y, z, A, B;
                for (b < 0 && (b = 0, e = l(p(a), p(c))), d < 0 && (d = 0), h = 1, m = 0; m < e; m++)(64 & f) > 0 && (n = q(a, m + b), i(n) || (g && s(a, m + b, a.defaults.colWidth), s(c, m + d, n)), v = a.getColumnVisible(m + b), i(v) || (g && a.setColumnVisible(m + b, !0), c.setColumnVisible(m + d, v)), w = u(a, -1, m + b), w ? (x(c, -1, m + d, w.clone()), g && x(a, -1, m + b, j)) : x(c, -1, m + d, j), w = u(a, -1, m + b, h), w ? (x(c, -1, m + d, w.clone(), h), g && x(a, -1, m + b, j, h)) : x(c, -1, m + d, j, h)), (128 & f) > 0 && (y = a.getTag(-1, m + b), i(y) || (g && a.setTag(-1, m + b, k), c.setTag(-1, m + d, y)));
                for (z = l(o(a, h), o(c, h)), A = 0; A < z; A++) B = r(a, A, h), i(B) || (g && t(a, A, a.defaults.colHeaderRowHeight, h), t(c, A, B, h))
            }
            function K(a, b, c, d, e, f, g, h) {
                var m, n, v, w, y, A, B, C, D;
                for (b < 0 && (b = 0, e = l(o(a), o(c))), d < 0 && (d = 0), m = 2, n = 0; n < e; n++)!h && z(d + n, g, c) || ((64 & f) > 0 && (v = r(a, n + b), i(v) || (h && t(a, n + b, a.defaults.rowHeight), t(c, n + d, v)), w = a.getRowVisible(n + b), i(w) || (h && a.setRowVisible(n + b, !0), c.setRowVisible(n + d, w)), y = u(a, n + b, -1), y ? (x(c, n + d, -1, y.clone()), h && x(a, n + b, -1, j)) : x(c, n + d, -1, j), y = u(a, n + b, -1, m), y ? (x(c, n + d, -1, y.clone(), m), h && x(a, n + b, -1, j, m)) : x(c, n + d, -1, j, m)), (128 & f) > 0 && (A = a.getTag(n + b, -1), i(A) || (h && a.setTag(n + b, -1, k), c.setTag(n + d, -1, A))));
                for (B = l(p(a, m), p(c, m)), C = 0; C < B; C++) D = q(a, C, m), i(D) || (h && s(a, C, a.defaults.rowHeaderColWidth, m), s(c, C, D, m))
            }
            function L(a, b, c, d) {
                var e, f, g;
                a === b && a.name() === b.name() || ((64 & c) > 0 && (e = v(a), w(b, d ? e : e.clone()), e = v(a, 1), w(b, d ? e : e.clone(), 1), e = v(a, 2), w(b, d ? e : e.clone(), 2), d && (w(a, j), w(a, j, 1), w(a, j, 2))), f = b.defaults, g = a.defaults, f.colWidth = g.colWidth, f.rowHeight = g.rowHeight, f.rowHeaderColWidth = g.rowHeaderColWidth, f.colHeaderRowHeight = g.colHeaderRowHeight, d && (g.colWidth = 62, g.rowHeight = 20, g.rowHeaderColWidth = 40, g.colHeaderRowHeight = 20))
            }
            function M(a, b, c, d, e, g, h, j, k, m, n, q) {
                var r, s, t, u, v, w, x, y, A, C, D, E, F, G, H, I, J = !(a === d && a.name() === d.name());
                if (2 === (2 & m) && b < 0) if (x = c, y = g, r = l(o(a, 1), o(d, 1)), s = j, c < 0 && (x = 0, s = p(a)), g < 0 && (y = 0), J) for (t = 0; t < r; t++) for (u = 0; u < s; u++) w = n(a, t, x + u, 1), q(d, t, y + u, B(w), 1);
                else {
                    for (v = new f, t = 0; t < r; t++) for (u = 0; u < s; u++) w = n(a, t, x + u, 1), i(w) || v.set(t, u, B(w));
                    for (t = 0; t < r; t++) for (u = 0; u < s; u++) q(d, t, y + u, v.get(t, u), 1)
                }
                if (1 === (1 & m) && c < 0) if (A = b, C = e, r = h, s = l(p(a, 2), p(d, 2)), b < 0 && (A = 0, r = o(a)), e < 0 && (C = 0), J) for (t = 0; t < r; t++) for (u = 0; u < s; u++) w = n(a, A + t, u, 2), q(d, C + t, u, B(w), 2);
                else {
                    for (v = new f, t = 0; t < r; t++) for (u = 0; u < s; u++) w = n(a, A + t, u, 2), i(w) || v.set(t, u, B(w));
                    for (t = 0; t < r; t++) for (u = 0; u < s; u++) q(d, C + t, u, v.get(t, u), 2)
                }
                if (D = b, E = c, F = e, G = g, H = h, I = j, b < 0 && (D = 0, H = l(o(a), o(d))), c < 0 && (E = 0, I = l(p(a), p(d))), e < 0 && (F = 0), g < 0 && (G = 0), J) {
                    for (t = 0; t < H; t++) if (!z(F + t, k, d)) for (u = 0; u < I; u++) w = n(a, D + t, E + u, 3), q(d, F + t, G + u, B(w), 3)
                } else {
                    v = new f;
                    try {
                        for (t = 0; t < H; t++) for (u = 0; u < I; u++) w = n(a, D + t, E + u, 3), i(w) || v.set(t, u, B(w));
                        for (t = 0; t < H; t++) if (!z(F + t, k, d)) for (u = 0; u < I; u++) q(d, F + t, G + u, v.get(t, u), 3)
                    } catch (a) {}
                }
            }
            function N(a, b, c, d, e, f, g, h, k, l, m) {
                M(a, b, c, d, e, f, g, h, k, l, function(a, b, c, d) {
                    var e, f, g, h, k = 3 === d;
                    return k ? e = a.getValue(b, c, d) : (e = a.ITa.getValue(b, c, d, !0), 1 === d && i(e) && (f = a.wq, f && f.Ou && (g = a.ITa.Jp(!1, 3, c), h = a.options.colHeaderAutoTextIndex, g && (h >= 0 && b === h || h === -1 && b === o(a, d) - 1) && (e = g.displayName || g.name)))), m && (k ? a.uq(b, c, j, d, !1) : a.ITa.do("setValue", b, c, j, d, !0, !0)), e
                }, function(a, b, c, d, e) {
                    i(d) ? a.uq(b, c, j, e, !1) : a.uq(b, c, d, e, !1)
                })
            }
            function O(a, b, c) {
                var d, e, f, g = a.Tq(b),
                    h = g.row,
                    i = g.col,
                    j = g.rowCount,
                    k = g.colCount;
                for (d = 0; d < j; d++) for (e = c[h + d] = c[h + d] || {}, f = 0; f < k; f++) e[i + f] = !0
            }
            function P(a, b, c, d, e, f, g, l, m, n, o) {
                var p, q, r, s, t, u, v = {};
                if (a.tables) for (p = h(b, c, g, l), q = h(e, f, g, l), r = a.tables.all(), t = 0, u = r.length; t < u; t++) s = r[t].range(), p.containsRange(s) ? O(a, s, v) : s.containsRange(p) && s.containsRange(q) && O(a, p, v);
                M(a, b, c, d, e, f, g, l, m, n, function(a, b, c, d) {
                    var e = (3 === d || i(d)) && v[b] && v[b][c],
                        f = a.Dq(b, c, d, k, k, k, k, e);
                    return o && x(a, b, c, j, d), f
                }, function(a, b, c, d, e) {
                    x(a, b, c, d, e)
                })
            }
            function Q(a, b, c, d, e, f, g, h, i, k) {
                var l = a.uja;
                l.Dja.map(function(a) {
                    var b = a.condition();
                    b && b.initExpression()
                }), M(a, b, c, d, e, f, g, h, i, 0, function(a, b, c) {
                    var d = a.getDataValidator(b, c, 3);
                    return d && (k && a.setDataValidator(b, c, j), d.Nja = !0), d
                }, function(a, b, c, d) {
                    a.setDataValidator(b, c, d), d && delete d.Nja
                })
            }
            function R(a, b, c, d, e, f, g, h, i, j) {
                M(a, b, c, d, e, f, g, h, i, 0, function(a, b, c) {
                    var d = a.ITa.Ky,
                        e = d && d.get(b, c);
                    return e && j && d.remove(b, c), e
                }, function(a, b, c, d) {
                    var e = a.ITa.Ky;
                    e && e.Cz(b, c, d)
                })
            }
            function S(a, b, c, d, e, f, g, h, j, l, m) {
                M(a, b, c, d, e, f, g, h, j, l, function(a, b, c, d) {
                    var e = a.getTag(b, c, d);
                    return !i(e) && m && a.setTag(b, c, k), e
                }, function(a, b, c, e, f) {
                    d.setTag(b, c, e, f)
                })
            }
            function T(a, b, c, d, e, f, g, h, i, k) {
                var l = [];
                return M(a, b, c, d, e, f, g, h, i, 0, function(d, e, f) {
                    var g = d.getBindingPath && d.getBindingPath(e, f);
                    return g && l.push({
                        row: e - m(0, b),
                        col: f - m(0, c),
                        value: d.getValue(e, f)
                    }), k && a.setBindingPath && a.setBindingPath(e, f, j), g
                }, function(a, b, c, d) {
                    a.setBindingPath && a.setBindingPath(b, c, d)
                }), l
            }
            function U(a, c, d, e, f, i, k, n, q, r, s, t) {
                var u, v, w, x, y, B, C, H, M, O, U, V, W;
                A(a, c, d, e, f, i, k, n), (64 & q) > 0 && (P(a, c, d, e, f, i, k, n, r, s, t), a.uja && Q(a, c, d, e, f, i, k, n, r, t)), (1 & q) > 0 && (2 & q) > 0 && (u = a.tables, u && (v = u.dB(h(m(0, c), m(0, d), c < 0 ? l(o(a), o(e)) : k, d < 0 ? l(p(a), p(e)) : n), t))), w = b.X3, w && (a.suspendCalcService(), e.suspendCalcService()), x = j, (256 & q) > 0 && (x = T(a, c, d, e, f, i, k, n, r, t));
                try {
                    if ((1 & q) > 0 && (N(a, c, d, e, f, i, k, n, r, s, t), b.X3 && 0 === (2 & q) && e.clearFormula(f, i, k, n, function(a, b) {
                            return !r || !a.Ps || !a.Ps(b)
                        }), (256 & q) > 0)) for (y = x.length, B = f < 0 ? 0 : f, C = i < 0 ? 0 : i, H = 0; H < y; H++) M = x[H], !t && z(B + M.row, r, e) || e.setValue(B + M.row, C + M.col, M.value);
                    O = e.tables, (1 & q) > 0 && (2 & q) > 0 && O && O.eB(v, m(0, c), m(0, d), m(0, f), m(0, i), t), b.X3 && (t ? (g.adjustCustomNameOnMove(a, c, d, e, f, i, k, n), (2 & q) > 0 && g.moveFormula(a, c, d, e, f, i, k, n)) : (2 & q) > 0 && g.copyFormula(a, c, d, e, f, i, k, n, r), (1 & q) > 0 && (2 & q) > 0 && O && O.R3(v))
                } finally {
                    w && (a.resumeCalcService(!1), e.resumeCalcService(!1))
                }
                if ((512 & q) > 0 && D(a, c, d, e, f, i, k, n, t), (4 & q) > 0 && R(a, c, d, e, f, i, k, n, r, t), (128 & q) > 0 && S(a, c, d, e, f, i, k, n, r, s, t), (16 & q) > 0 && E(a, c, d, e, f, i, k, n, t), (8 & q) > 0 && (c < 0 && F(a, d, e, i, n, t), d < 0 && G(a, c, e, f, k, t)), (32 & q) > 0 && (t || 1 !== k || 1 !== n) && I(a, c, d, e, f, i, k, n, t), c < 0 && f <= 0 && J(a, d, e, i, n, q, t), d < 0 && i <= 0 && K(a, c, e, f, k, q, r, t), c < 0 && f <= 0 && d < 0 && i <= 0 && L(a, e, q, t), t && c < 0) for (U = d, V = n, d < 0 && (U = 0, V = l(p(a), p(e))), W = 0; W < V; W++) a.getDataColumnName && a.getDataColumnName(U + W) && a.ITa.do("setItem", !1, 3, U + W, j)
            }
            b.staticMembers = {
                copyTo: function(a, b, c, d, e, f, g, h, i, j, k) {
                    U(a, b, c, d, e, f, g, h, i, j, k, !1)
                },
                moveTo: function(a, b, c, d, e, f, g, h, i) {
                    U(a, b, c, d, e, f, g, h, i, k, 3, !0)
                }
            }, a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e = c(42),
                f = c(44).GC$,
                g = c(43),
                h = c(26).j.Fa,
                i = null,
                j = g.Ul,
                k = j.Ml,
                l = j.nl,
                m = g.Ul.Nl,
                n = g.Ul.Pl,
                o = document,
                p = Math.round,
                q = Math.ceil,
                r = "gc-scroll-container",
                s = "gc-scroll-corner-all",
                t = "gc-scroll-arrow",
                u = "gc-scrollbar-wrapper",
                v = "gc-scroll-bar",
                w = "gc-scroll-arrowUp",
                x = "gc-scroll-arrowDown",
                y = "gc-scroll-arrowLeft",
                z = "gc-scroll-arrowRight",
                A = "gc-scrollbar-vertical",
                B = "gc-scrollbar-horizontal",
                C = "gc-no-user-select",
                D = "width",
                E = "height",
                F = "gc-scrollbar-stateActive ui-state-active",
                G = "left",
                H = "right",
                I = "top",
                J = "bottom",
                K = "margin-left",
                L = "position",
                M = "border",
                N = "padding",
                O = "margin",
                P = "overflow",
                Q = "display",
                R = "outline",
                S = "borderWidth",
                T = "boxSizing",
                U = "margin-top",
                V = ".gcScrollbar",
                W = "mousedown" + V,
                X = "mouseup" + V,
                Y = "mousemove" + V,
                Z = "mouseover" + V,
                $ = "mouseout" + V,
                _ = "mousewheel",
                aa = "DOMMouseScroll",
                ba = "scroll" + V;

            function ca(a) {
                a.preventDefault ? a.preventDefault() : a.returnValue = !1
            }
            b = function() {
                function a(a, b, c, d, e, f, g) {
                    var h = this;
                    h.JB = !1, h.KB = !1, h.LB = i, h.MB = i, h.NB = 300, h.OB = 70, h.PB = a, h.Vo("number" == typeof b ? b : 0), h._v("number" == typeof c ? c : 0), h.dw("number" == typeof d ? d : 0), h.cw("number" == typeof e ? e : 0), h.bw("number" == typeof f ? f : 0), h.QB = "number" == typeof g ? g : 1, h.RB = !1, h.SB = 0, h.Qb = h.bw(), h.ew()
                }
                return g.Zn(a), a.prototype = {
                    constructor: a,
                    Bv: function() {
                        return this.TB
                    },
                    qB: n("smallChange", 1),
                    rB: n("largeChange", 10),
                    dw: n("pageValue", 10, function(a) {
                        a <= 0 && this.dw(1)
                    }),
                    cw: n("maximum", 100, function(a) {
                        a <= 0 && this.cw(0)
                    }),
                    bw: n("minimum", 0, function(a) {
                        a <= 0 && this.bw(0)
                    }),
                    value: function(a) {
                        var b, c = this;
                        return 0 === arguments.length ? c.Qb : ("number" == typeof a && a <= c.cw() && a >= c.bw() && (c.Qb = a, b = (a - c.bw()) * c.UB, c.scrollTo(b, !0)), c)
                    },
                    Vo: n("width", 0),
                    _v: n("height", 0),
                    ew: function() {
                        var a, b, c, d = this,
                            e = d._v(),
                            g = d.Vo(),
                            h = 0,
                            i = 0,
                            j = !1,
                            k = 2,
                            l = "ui-widget ui-corner-all",
                            n = e,
                            o = g - 2 * e,
                            q = n,
                            F = G,
                            V = H,
                            W = y,
                            X = z,
                            Y = B,
                            Z = K,
                            $ = "ui-button ui-state-default ui-corner-bl btn btn-default",
                            _ = "ui-icon ui-icon-triangle-1-w",
                            aa = "gc-scroll-handle ui-button ui-state-default ui-corner-all ui-draggable btn btn-default",
                            ba = "ui-icon ui-icon-grip-solid-vertical",
                            ca = "ui-button ui-state-default ui-corner-br btn btn-default",
                            da = "ui-icon ui-icon-triangle-1-e";
                        d.VB = o, d.PB || (n = g, o = n, q = e - 2 * g, F = I, V = J, W = w, X = x, Y = A, Z = U, $ = "ui-button ui-state-default ui-corner-tr btn btn-default", _ = "ui-icon ui-icon-triangle-1-n", aa = "gc-scroll-handle ui-button ui-state-default ui-corner-all ui-draggable btn btn-default", ba = "ui-icon ui-icon-grip-solid-horizontal", ca = "ui-button ui-state-default ui-corner-br btn btn-default", da = "ui-icon ui-icon-triangle-1-s", d.VB = q);

                        function ea() {
                            d.TB = m("div"), d.WB = f(d.TB), d.WB.css([L, G, I, P, R, M, N, O], ["relative", 0, 0, "hidden", "none", "none", 0, 0]).addClass(r + " " + s + " " + l)
                        }
                        function fa(a) {
                            d.XB = f.Nl("div", [L, Q, S, N, O, T], ["absolute", "inline-block", "1px", 0, 0, "content-box"], t + " " + $, a), d.YB = f.Nl("span", [Q, M, N, O], ["block", "none", 0, 0], W + " " + _, d.XB)
                        }
                        function ga(a) {
                            d.ZB = f.Nl("div", [L, Q, T, M, N, O], ["absolute", "inline-block", "content-box", "none", 0, 0], u + " " + u, a)
                        }
                        function ha(a) {
                            d.$B = f.Nl("div", [L, S, N, O, T], ["absolute", "1px", 0, 0, "content-box"], v + " " + C + " " + aa, a), d._B = f.Nl("span", [Q, M, N, O], ["block", "none", 0, 0], Y + " " + ba, d.$B)
                        }
                        function ia(a) {
                            d.aC = f.Nl("div", [L, Q, S, N, O, T], ["absolute", "inline-block", "1px", 0, 0, "content-box"], t + " " + ca, a), d.bC = f.Nl("span", [Q, M, N, O], ["block", "none", 0, 0], X + " " + da, d.aC)
                        }
                        a = d.VB, b = d.cw() - d.bw(), d.dC = d.dw() * a / (b + d.dw()), d.dC > a && (d.dC = a), d.dC < 10 && (d.dC = 10), c = d.dC, d.UB = 0 === b ? 1 : (a - c) / b, d.PB ? (h = c, i = n) : (h = n, i = c), d.WB || (j = !0, ea()), d.XB || fa(d.WB), d.ZB || ga(d.WB), d.$B || ha(d.ZB), d.aC || ia(d.WB), d.WB.css([D, E], [g, e]), d.XB.css([F, D, E], [0, n - k, n - k]), d.YB.css([D, E], ["100%", "100%"]), d.ZB.css([F, D, E], [n, o, q]), d.$B.css([F, D, E], [d.SB, p(h - k), p(i - k)]), d._B.css([D, E, Z], [n - k, n - k, Math.floor((d.dC - n) / 2)]), d.aC.css([V, D, E], [0, n - k, n - k]), d.bC.css([D, E], ["100%", "100%"]), j && d.eC()
                    },
                    eC: function() {
                        var b = this;

                        function c(a, c) {
                            a.bind(W, function(a) {
                                b.fC(a, c)
                            }).bind(X, function(a) {
                                b.gC(a, c)
                            }).bind(Z, function(a) {
                                b.hC(a, c)
                            }).bind($, function(a) {
                                b.iC(a, c)
                            })
                        }
                        c(b.XB, !0), c(b.aC, !1), b.$B.bind(W, function(a) {
                            b.jC(a)
                        }).bind(Y, function(a) {
                            b.kC(a)
                        }).bind(X, function(a) {
                            b.lC(a)
                        }).bind(Z, function(a) {
                            b.mC(a)
                        }).bind($, function(a) {
                            b.nC(a)
                        }), b.ZB.bind(W, function(a) {
                            var c, d, e = k && k.mozilla;
                            e && (c = (new Date).valueOf(), d = b.oC, b.oC = c, d && c - d < 100) || b.pC(a)
                        }).bind(X, function(a) {
                            b.qC(a)
                        }), b.GB = function(a) {
                            b.sC(a)
                        }, b.WB.bind(_, b.GB), b.WB.bind(aa, b.GB), a.ao(b, "initEvents", b.TB)
                    },
                    dispose: function() {
                        var b = this;

                        function c(a) {
                            a && a.unbind(V)
                        }
                        c(b.aC), c(b.$B), c(b.XB), c(b.ZB), b.WB && (b.GB && (b.WB.unbind(_, b.GB), b.WB.unbind(aa, b.GB)), a.ao(b, "dispose", b.TB), b.WB.unbind(V).remove())
                    },
                    tC: function() {
                        var a = this;
                        a.RB || (f(o).bind(Y, function(b) {
                            a.kC(b)
                        }).bind(X, function(b) {
                            a.lC(b)
                        }), a.RB = !0)
                    },
                    uC: function() {
                        this.RB && (this.RB = !1, f(o).unbind(Y).unbind(X))
                    },
                    fC: function(a, b) {
                        var c, d = 0,
                            e = this,
                            f = !0;
                        e.KB = !0, null === e.LB && (b ? (e.XB.addClass(F), d = 0 - e.qB(), e.vC = 0) : (e.aC.addClass(F), d = e.qB(), e.vC = 1), c = function() {
                            e.scrollTo(e.SB + d * e.UB, !1), 1 === e.QB && (e.LB = setTimeout(c, f ? e.NB : e.OB)), f = !1
                        }, c(), ca(a))
                    },
                    gC: function(a, b) {
                        var c = this,
                            d = b ? c.XB : c.aC;
                        d.removeClass(F), c.wC(), ca(a)
                    },
                    hC: function(a, b) {
                        var c = this,
                            d = b ? c.XB : c.aC;
                        d.addClass("gc-scroll-arrow-hover ui-state-hover"), ca(a)
                    },
                    iC: function(a, b) {
                        var c = this,
                            d = b ? c.XB : c.aC;
                        d.removeClass("gc-scroll-arrow-hover gc-scrollbar-stateActive ui-state-hover ui-state-active"), c.wC(), ca(a)
                    },
                    jC: function(a) {
                        var b, c, d, e, f, g, h = this;
                        0 === a.button && (h.JB = !0, h.xC = {
                            x: a.pageX,
                            y: a.pageY
                        }, h.tC(), h.$B.addClass(F), b = h.$B.offset(), c = h.$B.outerWidth(!0), d = h.$B.outerHeight(!0), e = h.ZB.offset(), f = h.ZB.outerWidth(!0), g = h.ZB.outerHeight(!0), h.yC = {
                            isBeyondEdge: !1,
                            startEdgePosition: {
                                x: e.left + a.pageX - b.left,
                                y: e.top + a.pageY - b.top
                            },
                            endEdgePosition: {
                                x: e.left + f - (c - a.pageX + b.left),
                                y: e.top + g - (d - a.pageY + b.top)
                            }
                        }), ca(a)
                    },
                    kC: function(a) {
                        var b = this;
                        b.JB && (b.zC = {
                            x: a.pageX,
                            y: a.pageY
                        }, b.AC(), b.xC = b.zC, f(o.body).attr("unselectable", "on").addClass(C)), ca(a)
                    },
                    lC: function(a) {
                        var b, c, d, e = this;
                        e.JB = !1, e.vC = 4, e.yC = null, e.WB.trigger(ba, {
                            newValue: e.Qb,
                            oldValue: e.Qb,
                            scrollOrientation: e.PB ? 0 : 1,
                            scrollEventType: e.vC
                        }), b = e.Qb, c = (b - e.bw()) * e.UB, d = "left", e.PB || (d = "top"), e.SB = c, e.$B.css(d, c), e.uC(), f(o.body).removeClass(C), f(o.body).attr("unselectable") && f(o.body).removeAttr("unselectable"), e.$B.removeClass(F), e.vC = 6, e.WB.trigger(ba, {
                            newValue: e.Qb,
                            oldValue: e.Qb,
                            scrollOrientation: e.PB ? 0 : 1,
                            scrollEventType: e.vC
                        }), ca(a)
                    },
                    mC: function(a) {
                        this.$B.addClass("gc-scrollbar-stateHover ui-state-hover"), ca(a)
                    },
                    nC: function(a) {
                        this.$B.removeClass("gc-scrollbar-stateHover ui-state-hover"), ca(a)
                    },
                    sC: function(a) {
                        var b, c, d, e = this;
                        h(a.wheelDelta) && h(a.detail) && (a.wheelDelta = a.originalEvent.wheelDelta, a.detail = a.originalEvent.detail), b = a.detail ? a.detail : a.wheelDelta / -40, c = b / 3 * e.qB() * e.UB, e.vC = c >= 0 ? 1 : 0, e.scrollTo(e.SB + c, !1), e.vC = 6, d = {
                            newValue: e.Qb,
                            oldValue: e.Qb,
                            scrollOrientation: e.PB ? 0 : 1,
                            scrollEventType: e.vC
                        }, e.WB.trigger(ba, d), ca(a)
                    },
                    pC: function(a) {
                        var b, c = this,
                            d = !0,
                            e = a.pageX,
                            f = a.pageY,
                            g = 0,
                            h = c.ZB.offset(),
                            i = c.rB();
                        null === c.MB && (g = c.PB ? e - h.left - c.SB : f - h.top - c.SB, b = function() {
                            var a = 0,
                                j = c.SB;
                            if (a = c.PB ? e - h.left - j : f - h.top - j, a * g < 0 || a >= 0 && a < c.dC) return void c.CC();
                            if (g < 0) c.vC = 2, c.scrollTo(j - i * c.UB, !1);
                            else {
                                if (!(g > 0)) return void c.CC();
                                c.vC = 3, c.scrollTo(j + i * c.UB, !1)
                            }
                            1 === c.QB && (c.MB = setTimeout(b, d ? c.NB : c.OB)), d = !1
                        }, b(), ca(a))
                    },
                    qC: function(a) {
                        this.CC(), ca(a)
                    },
                    CC: function() {
                        var a, b = this;
                        b.MB && clearTimeout(b.MB), b.MB = i, b.vC = 6, a = {
                            newValue: b.Qb,
                            oldValue: b.Qb,
                            scrollOrientation: b.PB ? 0 : 1,
                            scrollEventType: b.vC
                        }, b.WB.trigger(ba, a)
                    },
                    wC: function() {
                        var a, b = this;
                        b.KB && (b.KB = !1, b.LB && clearTimeout(b.LB), b.LB = i, b.vC = 6, a = {
                            newValue: b.Qb,
                            oldValue: b.Qb,
                            scrollOrientation: b.PB ? 0 : 1,
                            scrollEventType: b.vC
                        }, b.WB.trigger(ba, a))
                    },
                    AC: function() {
                        var a, b, c, d, e, f, g, h, i = this,
                            j = i.SB,
                            k = i.zC,
                            l = i.yC;

                        function m(a) {
                            return i.PB ? a.x : a.y
                        }
                        function n(a, b) {
                            i.PB ? a.x = b : a.y = b
                        }
                        if (c = m(k), d = m(i.xC), l && l.isBeyondEdge) {
                            if (e = m(l.startEdgePosition), f = m(l.endEdgePosition), a = c < e, b = c > f, a || b) return;
                            d < e && n(i.xC, e), d > f && n(i.xC, f)
                        }
                        g = c - d, h = j + g, h !== j && (i.vC = 5, i.scrollTo(h, !1))
                    },
                    scrollTo: function(a, b) {
                        var c, d, e, f, g, h = this,
                            i = I,
                            j = h.VB - h.dC;
                        h.PB && (i = G), c = !1, a > j && (a = j, c = !0), a < 0 && (a = 0, c = !0), h.yC && (h.yC.isBeyondEdge = c), d = p(a / h.UB) + h.bw(), e = h.Qb, f = !1, b || (g = {
                            newValue: d,
                            oldValue: e,
                            scrollOrientation: h.PB ? 0 : 1,
                            scrollEventType: h.vC
                        }, h.WB.trigger(ba, g), f = g.ignoreUpdatePosition, g.newValue > h.cw() && (g.newValue = h.cw()), d = g.newValue), h.Qb = d, 5 !== h.vC && (a = (d - h.bw()) * h.UB), h.SB = a, f || h.$B.css(i, a)
                    },
                    hitTest: function(a, b) {
                        var c, d, e, g, h = this,
                            i = 0,
                            j = 0,
                            k = h.$B.outerWidth(),
                            l = h.XB.outerWidth(),
                            m = h.ZB.outerWidth(),
                            n = h.$B.offset(),
                            o = f(h.Bv()).offset(),
                            p = n.left - o.left - 18;
                        return h.PB ? a < i + m + l && a > i + l ? a < i + p + k + l && a > p ? {
                            element: "thumbButton",
                            x: a,
                            y: b
                        } : {
                            element: "trackButton"
                        } : a <= i + l && a > i ? {
                            element: "leftButton",
                            x: a,
                            y: b
                        } : {
                            element: "rightButton",
                            x: a,
                            y: b
                        } : (c = h.$B.outerHeight(), d = h.XB.outerHeight(), e = h.ZB.outerHeight(), g = n.top - o.top - 18, b < j + e + d && b > j + d ? b < j + g + c + d && b > g ? {
                            element: "thumbButton",
                            x: a,
                            y: b
                        } : {
                            element: "trackButton"
                        } : b <= j + d && b > j ? {
                            element: "upButton",
                            x: a,
                            y: b
                        } : {
                            element: "downButton",
                            x: a,
                            y: b
                        })
                    },
                    pia: function() {
                        var a = this;
                        return {
                            x: 0,
                            y: 0,
                            width: a.Vo(),
                            height: a._v()
                        }
                    }
                }, a
            }(), e.hv = b, d = function() {
                function a(a, b) {
                    var c = this;
                    c.fB = !0, c.gB = !0, c.hB = 18, c.iB = a && f(a), c.jB = b && f(b), c.ew(!0)
                }
                return a.prototype = {
                    constructor: a,
                    kB: n("horizontalSmallChange", 10),
                    lB: n("verticalSmallChange", 10),
                    ew: function(a) {
                        var c, d, e, g, h, j, l, m, n, o, r, s, t, u = this;

                        function v() {
                            return f.Nl("div", [L, G, I, M, N, O], ["absolute", 0, 0, "none", 0, 0])
                        }
                        function w(a, c) {
                            var d, e, g, h = c ? u.mB : u.nB;
                            return h ? h : (d = new b(c), e = f.Nl("div"), c ? (u.oB = e, u.mB = d, e.css([L, G, J, M, N, O], ["absolute", 0, 0, "none", 0, 0])) : (u.pB = e, u.nB = d, e.css([L, H, I, M, N, O], ["absolute", 0, 0, "none", 0, 0])), g = (c ? u.mB : u.nB).Bv(), e.append(g), a.append(e), d)
                        }
                        function x(a, b, c, d, e, g) {
                            g ? (u.oB.css([D, E], [b, d]), a.Vo(b), a._v(d)) : (u.pB.css([D, E], [d, b]), a.Vo(d), a._v(b)), a.bw(0), a.cw(e - b), a.dw(b), a.qB(g ? u.kB() : u.lB()), a.rB(b), a.ew(), f(a.Bv()).bind(ba, function(a, b) {
                                c.css(g ? G : I, 0 - b.newValue)
                            }), g ? u.oB.show() : u.pB.show()
                        }
                        function y(a) {
                            u.sB || (u.sB = v(), u.sB.css([P, Q], ["hidden", "inline-block"]), a.append(u.sB))
                        }
                        function z(a) {
                            u.tB || (u.tB = f.Nl("div", L, "relative", i, a))
                        }
                        u.iB && u.jB && (c = u.hB, d = u.jB.width(), e = u.jB.height(), g = u.iB.width(), h = u.iB.height(), j = g - c, l = h - c, m = !1, u.uB || (u.uB = v(), u.uB.css([L, P], ["relative", "hidden"]), m = !0), u.uB.css([D, E], [g, h]), y(u.uB), z(u.sB), a && u.tB.append(u.jB).css([I, G], [0, 0]), k.chrome && (d = p(d), e = p(e), g = q(g), h = q(h)), n = u.vB(d, e, g, h), o = n.wB, r = n.xB, r ? (o || (j += c), s = w(u.uB, !0), x(s, j, u.tB, c, d, !0)) : u.oB && u.oB.hide(), o ? (r || (l += c), t = w(u.uB, !1), x(t, l, u.tB, c, e, !1)) : u.pB && u.pB.hide(), r || o || (j += c, l += c), u.fB = r, u.gB = o, u.yB = j, u.zB = l, u.sB.css([D, E], [j, l]), m && (u.iB.append(u.uB), u.AB()))
                    },
                    BB: function(a) {
                        var b = this,
                            c = b.CB(a),
                            d = c.EB,
                            e = c.FB;
                        !h(d) && b.mB && b.lu(d), !h(e) && b.nB && b.ju(e)
                    },
                    lu: function(a) {
                        var b, c, d = this;
                        d.mB.value(a), b = d.yB, c = d.jB.width(), a >= 0 && a <= c - b && d.tB.css(G, 0 - a)
                    },
                    ju: function(a) {
                        var b, c, d = this;
                        d.nB.value(a), b = d.zB, c = d.jB.height(), a >= 0 && a <= c - b && d.tB.css(I, 0 - a)
                    },
                    vB: function(a, b, c, d) {
                        var e = this.hB,
                            f = c - e,
                            g = d - e,
                            h = {
                                xB: !1,
                                wB: !1
                            };
                        return a > c && (h.xB = !0, h.wB = b > g), b > d && (h.wB = !0, h.xB = a > f), h
                    },
                    CB: function(a) {
                        var b = f(a),
                            c = this.sB,
                            d = this.tB,
                            e, g, h, j, k, l, m, n = {
                                EB: i,
                                FB: i
                            };
                        return a ? (e = b.offset(), g = d.offset(), h = c.offset(), e.leftWidth = e.left + b.outerWidth(), e.topHeight = e.top + b.outerHeight(), h.leftWidth = h.left + c.outerWidth(), h.topHeight = h.top + c.outerHeight(), j = e.left - g.left, e.left < h.left ? n.EB = j : e.leftWidth > h.leftWidth && (k = e.leftWidth - g.left - c.innerWidth(), j < k ? n.EB = j : n.EB = k), l = e.top - g.top, e.top < h.top ? n.FB = l : e.topHeight > h.topHeight && (m = e.topHeight - g.top - c.innerHeight(), l < m ? n.FB = l : n.FB = m), n) : n
                    },
                    AB: function() {
                        var a = this;
                        this.tB && (a.GB = function(b) {
                            a.HB(b)
                        }, a.tB.bind(_, a.GB), a.tB.bind(aa, a.GB))
                    },
                    HB: function(a) {
                        var b, c, d, e, f, g, i, j = this;
                        h(a.wheelDelta) && h(a.detail) && (a.wheelDelta = a.originalEvent.wheelDelta, a.detail = a.originalEvent.detail), b = a.detail ? a.detail : a.wheelDelta / -40, c = b, d = j.nB, e = parseInt(j.tB.css(I)), f = j.zB, g = j.jB.height(), g < f && (g = f), isNaN(e) && (e = 0), i = e - c * j.lB(), i >= 0 && (i = 0), i < 0 && 0 - i > g - f && (i = 0 - (g - f)), i !== e && (j.tB.css(I, i), j.gB && d.value(0 - i)), l(a)
                    }
                }, a
            }(), e.IB = d, a.exports = e
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(42),
                d = c(26).pc,
                e = c(44).GC$,
                f = c(43),
                g = c(52).To,
                h = c(69).DC,
                i = d.ic,
                j = d.ec,
                k = f.Im,
                l = null,
                m = "blank",
                n = "nextButton";
            e.inherit(o, h);

            function o(a) {
                h.call(this, a);
                var b = this;
                b.EC = 13, b.GC = 12, b.HC = 0, b.kw = 30, b.IC = 28, b.JC = 28, b.KC = 28, b.LC = 0, b.MC = "10pt Segoe UI"
            }
            e.extend(o.prototype, {
                NC: function() {
                    var a = this.OC;
                    return a && a.options.tabNavigationVisible ? this.IC : 0
                },
                PC: function() {
                    var a = this.OC;
                    return a && a.options.tabNavigationVisible ? a.Jv() : 0
                },
                QC: function() {
                    return this.JC
                },
                RC: function() {
                    return this.SC ? 0 : this.JC
                },
                TC: function() {
                    return this.SC ? 0 : this.KC
                },
                UC: function() {
                    var a, b, c = this,
                        d = c.OC.sheets,
                        e = c.VC(),
                        f = c.WC,
                        g = c.Dr(),
                        h = g.x + g.width - c.kw - c.TC() - c.RC();
                    for (a = c.gq, b = d.length; a < b; a++) if (d[a].visible() && (e += f[a]), e > h) {
                        e = h;
                        break
                    }
                    return e
                },
                VC: function() {
                    var a = this;
                    return 2 * a.NC() + a.QC() + a.XC()
                },
                XC: function() {
                    var a = this,
                        b = a.OC;
                    return b && b.options.tabNavigationVisible ? a.kw / 2 : 0
                },
                getResizeBarBounds: function() {
                    var a = this,
                        b = a.Dr();
                    return {
                        x: b.x + b.width - a.kw,
                        y: l,
                        width: a.kw,
                        height: l
                    }
                },
                getNavButtonBounds: function() {
                    var a = this;
                    return {
                        x: a.kw / 2,
                        y: l,
                        width: a.NC(),
                        height: l,
                        endIndex: 3,
                        startIndex: 1
                    }
                },
                getSheetTabBounds: function() {
                    var a = this,
                        b = a.Dr(),
                        c = a.RC();
                    return {
                        x: a.VC(),
                        y: l,
                        height: l,
                        secondMoreTabWidth: a.RC(),
                        moreTabPos: b.x + b.width - a.kw - a.TC() - c
                    }
                },
                getPreMoreTabBounds: function() {
                    var a = this;
                    return {
                        x: a.VC() - a.QC(),
                        width: a.QC()
                    }
                },
                YC: function() {
                    var a = this;
                    return a.ZC + a.WC[a.$C] > a._C()
                },
                _C: function() {
                    var a = this;
                    return a.Dr().width - a.kw - a.TC() - a.RC()
                },
                aD: function() {
                    return 6
                },
                Via: function() {
                    return [m, n]
                },
                cD: function() {
                    return this.VC()
                },
                dD: function(a, b) {
                    a.save(), a.beginPath();
                    var c = k.Km(0, "gc-tabStripBackground");
                    this.eD = j(c.backgroundColor), a.fillStyle = c.backgroundColor, a.fillRect(b.x, b.y, b.width, b.height), a.beginPath(), a.strokeStyle = c.borderTopColor, a.moveTo(b.x, b.y + .5), a.lineTo(b.x + b.width, b.y + .5), a.stroke(), a.restore()
                },
                fD: function(a, b, c, d) {
                    var e, f, g = this,
                        h = g.OC.options.newTabVisible,
                        i = g.IC,
                        j = g.RC();
                    c += j, h ? g.KC = i : g.KC = 0, e = b.x + b.width - g.kw - g.TC(), c > e && (c = e, f = e - j, f < d && (f = d, c = f + i), g.gD(a, f, 0, j, b.height)), h && g.hD(a, c, 0, i, b.height, g.iD === -2)
                },
                jD: function(a, b, c, d) {
                    var e = this.QC();
                    this.gD(a, d - e, 0, e, b.height)
                },
                kD: function(a, b, c) {
                    var d = this,
                        e = 5,
                        f = d.NC(),
                        g = d.PC(),
                        h = d.kw / 2 + f / 2,
                        i = g / 2,
                        j = d.lD;
                    d.mD(a, h, i, h + e, i + e, h + e, i - e, !0, l, 1 === j), h += f, d.mD(a, h, i, h - e, i + e, h - e, i - e, !1, l, 2 === j)
                },
                nD: function(a, b) {
                    var c, d, e = this,
                        f = e.kw,
                        g = k.Km(0, "gc-tabStripResizeBarInner");
                    e.OC.options.showHorizontalScrollbar && (a.beginPath(), a.rect(b.x + b.width - f, 0, f, b.height), a.clip(), c = b.x + b.width - f / 2, d = b.y + b.height / 2, a.fillStyle = g.color, a.fillRect(c, d, 2, 2), a.fillRect(c, d - 4, 2, 2), a.fillRect(c, d + 4, 2, 2))
                },
                oD: function(a, b, c, d, e, f, h, i, j) {
                    var l, m, n, o, p, q, r, s = this,
                        t = 0;
                    i && (t = 4), h && (t = 3), l = k.Km(t, "gc-tab-" + k.Jm(t)), m = k.Km(0, "gc-tab-" + k.Jm(0)), a.save(), n = 4, o = 3, h && (a.fillStyle = "white", a.fillRect(b, c, d, e - n)), p = s.pD(a, h, j, l), a.fillStyle = p, a.fillRect(b + o, c + o, d - 2 * o + 1, e - 2 * o), a.beginPath(), a.lineWidth = 1, a.strokeStyle = m && m.borderLeftColor, h ? (a.moveTo(b + .5, c), a.lineTo(b + .5, c + e - n), a.moveTo(b + d + .5, c), a.lineTo(b + d + .5, c + e - n)) : (a.moveTo(b + .5, c + n), a.lineTo(b + .5, c + e - n), a.moveTo(b + d + .5, c + n), a.lineTo(b + d + .5, c + e - n)), a.stroke(), h && (a.beginPath(), a.strokeStyle = l && l.borderBottomColor, a.lineWidth = 2, a.moveTo(b, c + e - n), a.lineTo(b + d + 1, c + e - n), a.stroke()), a.textBaseline = "top", "string" == typeof p && (q = p), a.fillStyle = s.qD(l, q), (i || h) && (a.font = g.Ro(a.font, "bold")), r = s.EC, a.textBaseline = "middle", a.fillText(j, b + r, c + e / 2 - 1), a.restore()
                },
                mD: function(a, b, c, d, e, f, g, h, i, j) {
                    var l, m, n, o, p, q;
                    a.save(), l = this, m = 1, j && (m = 4), h ? (b -= 2, d -= 2, f -= 2, n = l.rw(l.gq), n === -1 && (m = 0)) : (b += 2, d += 2, f += 2, o = l.rD(l.sD()), o === -1 && (m = 0)), p = k.Km(m, "gc-navButton-" + k.Jm(m)), a.strokeStyle = this.tD(p.borderTopColor), a.beginPath(), q = 1, b > d && (q = -1), a.moveTo(b - .5, c), a.lineTo(b - .5, c + 1), a.moveTo(b + q - .5, c - 1), a.lineTo(b + q - .5, c + 2), a.moveTo(b + 2 * q - .5, c - 2), a.lineTo(b + 2 * q - .5, c + 3), a.moveTo(b + 3 * q - .5, c - 3), a.lineTo(b + 3 * q - .5, c + 4), a.stroke(), a.restore()
                },
                hD: function(a, b, c, d, e, f) {
                    var g, h, i;
                    a.save(), a.beginPath(), g = (e - 14) / 2, h = 1, f && (h = 4), i = k.Km(h, "gc-tabStripNewTab-" + k.Jm(h)), a.lineWidth = 1.5, a.strokeStyle = this.tD(i.borderTopColor), a.arc(b + d / 2, c + e / 2, g, 0, 2 * Math.PI), a.stroke(), a.beginPath(), a.lineWidth = 2, a.moveTo(b + d / 2 - 4, c + e / 2), a.lineTo(b + d / 2 + 4, c + e / 2), a.moveTo(b + d / 2, c + e / 2 - 4), a.lineTo(b + d / 2, c + e / 2 + 4), a.stroke(), a.restore()
                },
                gD: function(a, b, c, d, e) {
                    var f, g, h;
                    a.save(), a.beginPath(), f = 1, g = this.lD, 5 !== g && 6 !== g || (f = 4), h = k.Km(f, "gc-navMoreButton-" + k.Jm(f)), a.fillStyle = this.tD(h.borderTopColor), a.fillRect(b + d / 2, c + e / 2, 2, 2), a.fillRect(b + d / 2 - 4, c + e / 2, 2, 2), a.fillRect(b + d / 2 + 4, c + e / 2, 2, 2), a.restore()
                },
                tD: function(a) {
                    var b = j(a),
                        c = this.eD;
                    return b.a <= .01 ? i(c) : d.hc(c, b) ? i(b) : a
                }
            }), b.iv = o, a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(42),
                d = c(26),
                e = c(44).GC$,
                f = c(43),
                g = c(52).To,
                h = d.pc,
                i = f.Ul,
                j = i.wl,
                k = i.bq,
                l = f.En,
                m = f.Events,
                n = f.Vl,
                o = f.Rect,
                p = f.Im,
                q = d.j.Fa,
                r = f.Ul.Nl,
                s = f.Ul.lZa,
                t = b.Bn,
                u = document,
                v = null,
                w = Math.max,
                x = Math.min,
                y = Math.pow,
                z = "px",
                A = "none",
                B = ".gcTab",
                C = "mousedown" + B,
                D = "mousemove" + B,
                E = "mouseup" + B,
                F = "mouseout" + B,
                G = "dblclick" + B,
                H = ".spliter",
                I = "mousemove" + H,
                J = "mouseup" + H,
                K = ".tabNameEditor",
                L = "keydown" + K,
                M = "focus" + K,
                N = "blur" + K,
                O = "canvas",
                P = "2d",
                Q = "resize",
                R = "navButton",
                S = "tab",
                T = "newSheet",
                U = "blank",
                V = "black",
                W = "white",
                X = 4,
                Y = 10,
                Z = "navButton",
                $ = "sheetTab";

            function _() {
                return d.C(b.SR)()
            }
            function aa(a, b, c) {
                a.Wq(m.SheetTabClick, {
                    sheet: b,
                    sheetName: b ? b.name() : v,
                    sheetTabIndex: q(c) ? -1 : c
                })
            }
            function ba(a, b) {
                a.Wq(m.SheetMoving, b)
            }
            function ca(a, b, c, d) {
                a.Wq(m.SheetMoved, {
                    sheet: b,
                    sheetName: b ? b.name() : v,
                    oldIndex: c,
                    newIndex: d
                })
            }
            function da(a) {
                var b = this;
                b.OC = v, b.$C = 0, b.gq = 0, b.ZC = 70, b.lD = -1, b.iD = -1, b.MC = "", b.WC = [], b.uD = -1, b.vD = -1, b.wD = v, b.xD = 0, b.Us(new o(0, 0, 200, 28)), b.Cj = a
            }
            f.Zn(da), da.prototype = {
                ws: function(a) {
                    var b, c = this,
                        d = c.Xs;
                    d && c.no(!0), b = r(O), l.Kn(b, c.OC), b.setAttribute("id", c.Cj), c.yD = c.zD(), a.appendChild(c.yD[0]), a.appendChild(b), c.Xs = b, e(b).bind(C, function(a) {
                        return c.AD(a)
                    }).bind(D, function(a) {
                        return c.BD(a)
                    }).bind(E, function(a) {
                        return c.CD(a)
                    }).bind(F, function(a) {
                        return c.DD(a)
                    }).bind(G, function(a) {
                        return c.ED(a)
                    }), c.fq(), da.ao(c, "setHost")
                },
                Yv: function(a) {
                    var b = this,
                        c = a.options.font;
                    b.OC = a, a && c && c.length > 0 && (b.MC = c)
                },
                Dr: function() {
                    var a = this.Zs;
                    return new o(a.x, a.y, a.width, a.height)
                },
                Us: function(a) {
                    var b = this.Zs = new o(0, 0, 0, 0);
                    b.x = a.x, b.y = a.y, b.width = a.width, b.height = a.height
                },
                TC: function() {
                    return this.KC
                },
                UC: function() {
                    var a = this.Dr();
                    return a.x + a.width - this.kw
                },
                VC: function() {
                    return 0
                },
                fq: function() {
                    var a, b, c, d, f = this,
                        g = f.Ws();
                    g && g.parentNode && (a = e(g.parentNode), 0 !== a.width() && 0 !== a.height() && (b = w(a.width(), 0), c = w(a.height(), 0), g.style.display = A, g.width = b, g.height = c, g.style.display = "", g.style.width = b + z, g.style.height = c + z, b = g.clientWidth || g.width, c = g.clientHeight || g.height, d = f.Dr(), f.Us(new o(d.x, d.y, b, c)), l.Pn(g, b, c), f.repaint()))
                },
                YC: function() {
                    return !1
                },
                _C: function() {
                    return 0
                },
                aD: function() {
                    return 0
                },
                Via: function() {
                    return []
                },
                cD: function() {
                    return 0
                },
                zD: function() {
                    var a = "transparent";
                    return e(r("div")).css({
                        position: "absolute",
                        "border-style": "solid",
                        "border-color": V,
                        "border-width": X + z,
                        display: "none",
                        width: 0,
                        "border-bottom": 0,
                        "border-left-color": a,
                        "border-right-color": a
                    })
                },
                no: function(a) {
                    var b, c = this,
                        d = c.Xs;
                    d && (b = d.parentNode, e(d).unbind(C).unbind(D).unbind(E).unbind(G).unbind(F), b && b.removeChild(d)), e(c.yD).remove(), da.ao(c, "dispose"), a || (c.OC = v)
                },
                hitTest: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r = this,
                        s = r.OC,
                        t = r.Dr(),
                        u = r.getResizeBarBounds();
                    if (s.options.showHorizontalScrollbar && a > u.x && a < t.x + t.width) return {
                        type: "resize",
                        element: Q
                    };
                    for (c = r.getNavButtonBounds(), d = -1, e = c.startIndex, f = c.x, g = c.endIndex, h = ["first", "prevArrow", "nextArrow", "last", "", "prevButton", "nextButton"], i = e; i < g; i++) {
                        if (f < a && a < f + c.width) {
                            d = i, R = h[i];
                            break
                        }
                        f += c.width
                    }
                    if (d !== -1) return {
                        type: Z,
                        element: R,
                        index: i
                    };
                    if (j = r.getPreMoreTabBounds(), f = j.x, k = 0, l = r.rw(r.gq), l !== -1) {
                        if (f <= a && a < f + j.width) return R = h[5], {
                            type: Z,
                            element: R,
                            index: 5,
                            position: f
                        };
                        k = r.LC
                    }
                    if (m = r.getSheetTabBounds(), n = s.sheets, o = r.WC, p = r.HC, q = 0, f = m.x + k, r.gq > -1) for (i = r.gq; i < n.length && i < o.length; i++) if (n[i].visible()) {
                        if (q = o[i], f < a && a < f + q + p) {
                            if (S = s.sheets[i].name(), m.moreTabPos > 0 && a < m.moreTabPos) return {
                                type: $,
                                element: S,
                                index: i,
                                position: f
                            };
                            if (0 === m.moreTabPos) return {
                                type: $,
                                element: S,
                                index: i,
                                position: f
                            }
                        }
                        f += q + p
                    }
                    if (f > m.moreTabPos && m.moreTabPos > 0 && (f = m.moreTabPos), r.rD(r.sD()) !== -1) {
                        if (f < a && a < f + m.secondMoreTabWidth) return R = h[6], {
                            type: Z,
                            element: R,
                            index: 6,
                            position: f
                        }
                    } else if (f < a && a < f + m.secondMoreTabWidth) return {
                        element: U,
                        position: f
                    };
                    return f += m.secondMoreTabWidth, s.options.newTabVisible && f < a && a < f + r.TC() ? {
                        type: $,
                        element: T,
                        position: f,
                        index: -1
                    } : {
                        element: U
                    }
                },
                AD: function(a) {
                    var b, c, d, f, g, h, i, j, k = this,
                        l = {
                            e: a,
                            r: v
                        };
                    return da.ao(k, "preProcessMouseDown", l), b = l.r, q(b) ? (c = e(k.Ws()).offset(), d = a.pageX - c.left, f = a.pageY - c.top, g = k.OC.getActiveSheet(), k.FD && k.GD(g, !1), h = k.hitTest(d, f), i = h.element, 0 === a.button && (i === Q ? (k.HD = !0, k.ID = a.pageX, k.tC()) : i === R ? k.JD(h.index) : i === S ? (k.KD(h.index, h.position), k.LD(a, h)) : i === T && k.MD(h.position), g = k.OC.getActiveSheet(), j = g && g.mm, j && !g.isEditing() && g.zt()), k.ND = !0, !1) : b
                },
                BD: function(a) {
                    var b, c, d, f, g, h, i, j, k, l, m, n, o, p, r, s = this,
                        t = {
                            e: a,
                            r: v
                        };
                    if (da.ao(s, "preProcessMouseMove", t), b = t.r, !q(b)) return b;
                    if (c = s.Xs.style, d = "default", f = "w-resize", s.OD && !s.PD && (g = Math.sqrt(y(s.OD.x - a.pageX, 2) + y(s.OD.y - a.pageY, 2)), g > Y && (s.PD = !0)), s.HD) c.cursor = f, h = a.pageX - s.ID, i = s.OC.xs.clientWidth, j = s.OC, j.options.tabStripRatio = j.Iv() + h / i, k = s.kw / i, l = 1, j.Iv() < k ? (j.options.tabStripRatio = k, s.ID = s.kw) : j.Iv() >= l ? (j.options.tabStripRatio = l, s.ID = i) : s.ID = a.pageX, j.aq();
                    else if (s.PD) s.QD(a.pageX, a.pageY), s.RD(a);
                    else {
                        if (s.lD = -1, s.iD = -1, m = e(s.Ws()).offset(), n = a.pageX - m.left, o = a.pageY - m.top, p = s.hitTest(n, o), r = p.element, "" === r) return c.cursor = d, s.repaint(), !1;
                        r === Q ? c.cursor = f : (c.cursor = d, r === R ? s.lD = p.index : r === S ? s.iD = p.index : r === T && (s.iD = -2)), s.repaint()
                    }
                    return !1
                },
                CD: function(a) {
                    var b, c = this,
                        d = {
                            e: a,
                            r: v
                        };
                    return da.ao(c, "preProcessMouseUp", d), b = d.r, q(b) ? (c.HD && (c.HD = !1, c.OC.aq()), c.SD(), c.PD && (c.PD = !1, c.TD.remove(), c.UD(), c.yD.hide()), c.OD = v, c.VD(), c.uC(), !c.ND || (c.ND = !1, !1)) : b
                },
                DD: function(a) {
                    var b, c, d, e = this,
                        f = {
                            e: a,
                            r: v
                        };
                    return da.ao(e, "preProcessMouseOut", f), b = f.r, q(b) ? (e.VD(), c = e.lD, e.lD = -1, d = e.iD, e.iD = -1, e.lD === c && e.iD === d || e.repaint(), !1) : b
                },
                tC: function() {
                    var a, b = this;
                    b.WD || (e(u).bind(I, function(a) {
                        b.BD(a)
                    }).bind(J, function(a) {
                        b.CD(a)
                    }), a = b.OC.getActiveSheet(), a && (a.XD = !0), b.WD = !0)
                },
                uC: function() {
                    if (this.WD) {
                        this.WD = !1, e(u).unbind(I).unbind(J);
                        var a = this.OC.getActiveSheet();
                        a && delete a.XD
                    }
                },
                JD: function(a, b) {
                    var c, d, e = this;
                    e.VD(), c = e.sD(), c.length <= 0 || (d = 200, a %= 4, 0 === a ? e.YD(c) : 1 === a ? (b || (e.ZD = setTimeout(function() {
                        e.JD(1)
                    }, d)), e.$D(c)) : 2 === a ? (b || (e.ZD = setTimeout(function() {
                        e.JD(2)
                    }, d)), e._D(c)) : 3 === a && e.aE(c))
                },
                KD: function(a, b) {
                    var c, d, e, f = this,
                        g = f.OC;
                    f.$C = a, f.ZC = b, g.suspendPaint(), c = g.getActiveSheet(), d = g.getSheet(a), d && d.isEditing() && d !== c && (e = c.Cw && c.Cw.V4, !d.gv(void 0, void 0, e)) || (aa(g, d, a), f.iw(a), g.resumePaint(), f.repaint())
                },
                MD: function(a) {
                    var b, c, d = this,
                        e = d.OC,
                        f = e.getActiveSheet();
                    if (!d.bE || d.bE(f)) {
                        for (aa(e, v, v), b = e.sheets.length, c = e.vv(e.wv(b)), e.ow(b, 1, c), d.$C = b, d.ZC = a, e.dq(b, 1, !1, !0); d.$C > d.gq && (d.YC() || d.gq < d.jw(-1));) d.hE(d.gq) && (d.ZC -= d.WC[d.gq]), d.gq++;
                        d.repaint()
                    }
                },
                iw: function(a, b) {
                    var c, d, e, f, g;
                    void 0 === b && (b = !0), c = this, d = c.OC, e = d.getActiveSheet(), f = !1, e.Cw && e.Cw.V4 && (f = !0), a !== d.eq && (d.dq(a, 1, f, !0), g = c.jw(c.gq), c.$C > c.gq && c.ZC + c.WC[c.$C] > c._C() && g !== -1 && (c.gq = g)), c.$C < c.gq && (c.gq = c.rw(c.gq))
                },
                cE: function(a, b) {
                    var c, d, f, g, h, i, j, k, l, o = this,
                        p = o.OC,
                        q = o.hitTest(a, b);
                    if (q.element === S) {
                        if (c = o.$C, d = p.sheets[c], p.Wq(m.SheetTabDoubleClick, {
                                sheet: d,
                                sheetName: d.name(),
                                sheetTabIndex: c
                            }), !p.options.tabEditable) return !1;
                        if (f = n.Xl(), f && f.endEdit && !f.endEdit()) return;
                        n.Zl(v), g = o.WC[c], h = e(o.Ws()).offset(), i = p.xv(), j = e(i).offset(), k = r("input"), l = k.style, k.type = "text", k.value = d.name(), k.setAttribute("contentEditable", "true"), k.setAttribute("autocomplete", "off"), l.position = "absolute", l.margin = 0, l.padding = 0, l.left = h.left - j.left + o.ZC + o.EC + z, l.top = h.top - j.top + o.aD() + z, l.width = g - o.EC - o.GC + 2 + z, l.backgroundColor = W, l.borderWidth = "0px", l.outline = A, e(k).appendTo(i), o.FD = k, e(k).addClass("gc-sheetTabEditor").bind(L, function(a) {
                            return 13 === a.keyCode ? (o.GD(d, !1), !1) : 27 === a.keyCode ? (o.GD(d, !0), !1) : void 0
                        }).bind(M, function() {
                            k.selectionStart = 0, k.selectionEnd = k.value.length
                        }).bind(N, function() {
                            o.GD(d, !1)
                        }), k.focus()
                    }
                    return !1
                },
                ED: function(a) {
                    var b, c, d, f, g = this,
                        h = {
                            e: a,
                            r: v
                        };
                    return da.ao(g, "preProcessMouseDbClick", h), b = h.r, q(b) ? (c = e(g.Ws()).offset(), d = a.pageX - c.left, f = a.pageY - c.top, g.cE(d, f)) : b
                },
                GD: function(a, b) {
                    var c, d, f, g, h = this,
                        i = h.FD;
                    i && (e(i).unbind(L).unbind(M).unbind(N), c = i.value, b === !1 && (d = a.name(), c !== d && (!q(c) && "" !== c && k(c, h.OC.sheets, a) ? (f = {
                        sheet: a,
                        oldValue: d,
                        newValue: c,
                        cancel: !1
                    }, a.Wq(m.SheetNameChanging, f), f.cancel === !1 && (a.wu().execute({
                        cmd: "renameSheet",
                        sheetName: d,
                        name: c
                    }), g = {
                        sheet: a,
                        oldValue: d,
                        newValue: c
                    }, a.Wq(m.SheetNameChanged, g))) : a.Wq(m.InvalidOperation, {
                        sheet: a,
                        sheetName: a.name(),
                        invalidType: 5,
                        message: _().Exp_SheetNameInvalid
                    }))), i.parentNode.removeChild(i), delete h.FD)
                },
                dE: function() {
                    return this.OC.options.allowSheetReorder
                },
                LD: function(a, b) {
                    var c = this;
                    c.dE() ? (c.vD = b.index, c.TD = c.eE(c.vD), c.OD = new f.Point(a.pageX, a.pageY), c.tC()) : c.PD = !1
                },
                eE: function(a) {
                    var b, c, d = this.OC.sheets,
                        f = d.length;
                    if (!(a >= f || a < 0)) return b = d[a].name(), b || (b = "sheet"), c = e(r("span")).text(b).css({
                        position: "absolute",
                        cursor: "default",
                        "border-radius": "5px",
                        opacity: ".7"
                    }), c.addClass("ui-widget-header gc-tab-tip-span btn-primary"), c
                },
                VD: function() {
                    var a = this.ZD;
                    a && (clearTimeout(a), this.ZD = v)
                },
                QD: function(a, b) {
                    var c, d, f = this,
                        g = f.TD;
                    g && 0 === e(".gc-tab-tip-span").length && (g.appendTo(u.body), g.hide()), c = g.width(), d = g.height(), g.css({
                        left: a - c / 2,
                        top: b - d / 2
                    }), g.show()
                },
                RD: function(a) {
                    var b = this,
                        c = e(b.Ws()),
                        d = c.position(),
                        f = c.offset(),
                        g = a.pageX - f.left,
                        h = a.pageY - f.top,
                        i = b.hitTest(g, h),
                        j = i.element,
                        k = b.Dr(),
                        l = b.VC(),
                        m = b.OC.sheets.length,
                        n = 100,
                        o = k.x + b._C(),
                        p = b.yD;
                    g > o ? b.wD === v && b.uD < m && (b.wD = setInterval(function() {
                        b._D(b.sD()), b.uD === m ? (b.SD(), p.css({
                            left: d.left + b.fE() - X,
                            top: d.top - X
                        }), p.show()) : (b.uD++, p.hide())
                    }, n)) : g < l ? b.wD === v && b.uD > 0 && (b.wD = setInterval(function() {
                        b.$D(b.sD()), 0 === b.uD ? (b.SD(), p.css({
                            left: d.left + l - X,
                            top: d.top - X
                        }), p.show()) : (b.uD--, p.hide())
                    }, n)) : (b.SD(), j !== S && b.Via().indexOf(j) === -1 || (j !== S || q(i.index) ? b.uD = b.OC.sheets.length : b.uD = i.index, p.css({
                        left: d.left + i.position - X,
                        top: d.top - X
                    }), p.show()))
                },
                fE: function() {
                    var a, b = this,
                        c = b.WC,
                        d = b.sD(),
                        e = b.gE(b.gq, d),
                        f = 0,
                        g = b.VC() + b.LC;
                    for (a = e; a < d.length; a++) f = d[a], g += c[f], g += b.HC;
                    return g
                },
                SD: function() {
                    var a = this.wD;
                    a && (clearInterval(a), this.wD = v)
                },
                UD: function() {
                    var a, b, c, d, e = this,
                        f = e.OC,
                        g = e.uD,
                        h = e.vD,
                        i = -1,
                        j = f.getActiveSheet(),
                        k = h,
                        l = g;
                    if (h < g - 1 && (l = g - 1), g !== -1 && h !== -1 && h !== g && h !== g - 1 && e.yD.isVisible()) {
                        if (a = {
                                sheet: j,
                                sheetName: j.name(),
                                oldIndex: k,
                                newIndex: l,
                                cancel: !1
                            }, ba(f, a), a.cancel) return;
                        if (b = f.sheets, d = b[h], h > g) {
                            for (c = h; c > g; c--) b[c] = b[c - 1];
                            b[g] = d, i = g
                        } else if (h < g - 1) {
                            for (c = h; c < g - 1; c++) b[c] = b[c + 1];
                            b[g - 1] = d, i = g - 1
                        }
                        f.eq = i, e.fq(), ca(f, j, k, l)
                    }
                },
                sD: function() {
                    var a = [],
                        b;
                    for (b = 0; b < this.OC.sheets.length; b++) this.hE(b) && a.push(b);
                    return a
                },
                YD: function(a) {
                    a.length > 0 && this.gq !== a[0] && this.OC.startSheetIndex(a[0])
                },
                $D: function(a) {
                    var b, c;
                    a.length > 0 && (b = this, b.gq > a[0] && (c = b.rw(b.gq), c !== -1 && b.OC.startSheetIndex(c)))
                },
                _D: function(a) {
                    var b, c;
                    a.length > 0 && (b = this, b.gq < a[a.length - 1] && (c = b.rD(a), c !== -1 && b.OC.startSheetIndex(b.jw(b.gq))))
                },
                aE: function(a) {
                    if (a.length > 0 && this.gq < a[a.length - 1]) {
                        var b = this.rD(a);
                        b !== -1 && this.OC.startSheetIndex(b)
                    }
                },
                rD: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l;
                    if (a.length > 0) for (b = this, c = b._C(), d = 0, e = b.WC, h = b.cD(), i = b.gE(b.gq, a), i === -1 && (i = 0), f = a.length - 1; f >= i; f--) if (g = a[f], j = e[g], d += j, f !== a.length - 1 && (d += b.HC), k = h + d, 0 !== f && (k += b.LC), k > c) return l = f + 1 < a.length ? a[f + 1] : a[a.length - 1], b.gq < l ? l : -1;
                    return -1
                },
                rw: function(a) {
                    var b;
                    for (b = a - 1; b >= 0; b--) if (this.hE(b)) return b;
                    return -1
                },
                jw: function(a) {
                    var b, c = this.OC.sheets.length;
                    for (b = a + 1; b < c; b++) if (this.hE(b)) return b;
                    return -1
                },
                gE: function(a, b) {
                    var c;
                    for (c = 0; c <= b.length - 1; c++) if (a === b[c]) return c;
                    return -1
                },
                hE: function(a) {
                    var b = this.OC.sheets[a];
                    return b && b.visible()
                },
                fw: function() {
                    this.xD++
                },
                gw: function() {
                    var a = this;
                    a.xD--, a.xD <= 0 && (a.xD = 0, a.repaint())
                },
                repaint: function(a) {
                    var b = this.Ws();
                    b && b.getContext && this.jp(b.getContext(P), a)
                },
                jp: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, m, n, p, q, s = this;
                    if (!(s.xD > 0)) {
                        if (c = s.Dr(), d = s.Xs, b) {
                            if (b.x >= c.x + c.width) return;
                            if (b.y >= c.y + c.height) return;
                            if (b.x + b.width > c.width && (b.width = c.width - b.x, b.width <= 0)) return;
                            if (b.y + b.height > c.height && (b.height = c.height - b.y, b.height <= 0)) return;
                            if (b.width <= 0 || b.height <= 0) return
                        }
                        if (f = s.buffer, f && (!f || f.width === d.width && f.height === d.height) && (f || f.width === c.width && f.height === c.height) || (f && l.Rn(s.OC, f), s.buffer = f = r(O), l.Kn(f, s.OC), l.Pn(f, c.width, c.height)), !(c.width <= 0 || c.height <= 0 || b && (b.width <= 0 || b.height <= 0))) {
                            e = s.buffer.getContext(P), e.clearRect(0, 0, c.width, c.height), t.Dn(e, -c.x, -c.y), s.iE(e, b), t.Dn(e, c.x, c.y), g = c.x >= 0 ? 0 : -c.x, h = c.y >= 0 ? 0 : -c.y, i = g, j = h, b && (i = c.x + b.x, j = c.y + b.y, c = new o(i, j, b.width, b.height)), g = c.x >= 0 ? c.x : 0, h = c.y >= 0 ? c.y : 0, n = v, p = l.Ln(d), q = l.Mn(d), d && 1 !== p && (i *= p, j *= q, c.x *= p, c.y *= q, c.width *= p, c.height *= q);
                            try {
                                d ? b ? (k = w(c.width - i, 0), m = w(c.height - j, 0)) : (k = x(c.width - i, w(d.width - c.x, 3)), m = x(c.height - j, w(d.height - c.y, 3))) : (i = b.x, j = b.y, k = b.width, m = b.height), d ? (t.Cn(a, 1, 1), a.clearRect(g, h, k, m), a.drawImage(s.buffer, i, j, k, m, g, h, k, m), t.Cn(a, p, q)) : (e = s.buffer.getContext(P), n = e.getImageData(i, j, k, m))
                            } catch (a) {
                                return
                            }!d && n && c.width > 0 && c.height > 0 && a.putImageData(n, g, h)
                        }
                    }
                },
                iE: function(a, b) {
                    var c, d, e, f, h, i, j, k, l, m = this,
                        n = m.OC;
                    if (a && n) {
                        for (c = m.Dr(), a.save(), s(a, m.MC), b ? a.rect(b.x, b.y, b.width, b.height) : a.rect(c.x, c.y, c.width, c.height), a.clip(), a.beginPath(), e = m.VC(), f = e, a.save(), a.font = g.Ro(a.font, "bold"), m.WC = [], i = n.sheets, h = 0; h < i.length; h++) d = Math.round(a.measureText(i[h].name()).width) + m.GC + m.EC, m.WC.push(d);
                        for (a.restore(), j = [], k = m.gq, k > 0 && m.rw(k) >= 0 && (f += m.LC), k < 0 && (k = 0), h = k; h < i.length && (l = i[h].visible(), d = m.WC[h], !(f > c.x + c.width)); h++) j.push({
                            i: h,
                            x: f,
                            w: d,
                            t: i[h].name(),
                            visible: l
                        }), l && (f += d + m.HC);
                        m.dD(a, c), m.fD(a, c, f, e), m.jE(a, c, j, k, e), m.OC && m.OC.options.tabNavigationVisible && m.kD(a, c, e), m.nD(a, c), a.beginPath(), a.restore()
                    }
                },
                dD: function(a, b) {},
                fD: function(a, b, c, d) {},
                jE: function(a, b, c, d, e) {
                    var f, g, h, i, j, k = this,
                        l = k.OC,
                        m = l.sheets,
                        n = k.iD;
                    if (k.$C = l.getActiveSheetIndex(), f = k.$C, m.length > 0) {
                        for (a.save(), a.beginPath(), g = b.x + k._C(), a.rect(e, 0, g - e, b.height), a.clip(), h = c.length - 1; h >= 0; h--) i = c[h], i.i !== f && i.visible && k.oD(a, i.x, 0, i.w, b.height, 5, !1, i.i === n, i.t);
                        j = c[f - d], f >= d && f < m.length && j && j.visible && k.oD(a, j.x, 0, j.w, b.height, 5, !0, !1, j.t), a.restore(), a.save(), a.beginPath(), d > 0 && k.rw(d) >= 0 && k.jD(a, b, d, e), a.restore()
                    }
                },
                jD: function(a, b, c, d) {},
                kD: function(a, b, c) {},
                nD: function(a, b) {},
                mD: function(a, b, c, d, e, f, g, h, i, j) {},
                oD: function(a, b, c, d, e, f, g, h, i) {},
                Ws: function() {
                    return this.Xs
                },
                kE: function(a, b) {
                    var c, d, e, f, g = a.createLinearGradient(b.x, b.y, b.width, b.height),
                        h = p.Km(0, "gc-tabStripBackground"),
                        i = h && h.backgroundImage,
                        k = h && h.backgroundColor;
                    if (i && i.indexOf("linear-gradient") !== -1) for (c = j(i), d = 0, e = c.length; d < e; d++) f = c[d], g.addColorStop(f.point, f.color);
                    else k && (g.addColorStop(0, "#DDDDDD"), g.addColorStop(1, k));
                    return g
                },
                pD: function(a, b, c, d) {
                    var e, g, h, i, k, l, m, n, o, p = this,
                        q = p.Dr(),
                        r = a.createLinearGradient(q.x + .7 * q.height, q.y + 0, .7 * q.height, q.height),
                        s = p.OC.getSheetFromName(c);
                    if ("" === c && p.gq > 0 && (s = p.OC.getSheet(p.gq - 1)), e = s && s.options.sheetTabColor) g = "rgba(0, 0, 0, 0)", a.fillStyle = g, a.fillStyle = f.Rm.Om(s, e), h = a.fillStyle, h !== g && (b ? (r.addColorStop(0, W), r.addColorStop(.45, "#F1F6FD"), r.addColorStop(.9, h), r.addColorStop(1, W)) : r = h);
                    else if (d) if (i = d.backgroundImage, k = d.backgroundColor, i && i.indexOf("linear-gradient") !== -1) for (l = j(i), m = 0, n = l.length; m < n; m++) o = l[m], r.addColorStop(o.point, o.color);
                    else k && r.addColorStop(0, k);
                    return r
                },
                qD: function(a, b) {
                    var c = V;
                    return a && (c = a.color), b && h.dc(h.ec(b)) < 127.5 && (c = W), c
                }
            }, b.DC = da, a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(42),
                d = c(26),
                e = c(43),
                f = c(44).GC$,
                g = c(69).DC,
                h = e.Im,
                i = e.Ul.wl,
                j = null,
                k = Math.min,
                l = "#92A5C7",
                m = "newSheet";

            function n() {
                return d.C(b.SR)()
            }
            f.inherit(o, g);

            function o(a) {
                g.call(this, a);
                var b = this;
                b.EC = 12, b.GC = 8, b.HC = 3, b.kw = 12, b.KC = 48, b.LC = 5, b.MC = "10pt Arial"
            }
            f.extend(o.prototype, {
                NC: function() {
                    var a = this.OC,
                        b = a && a.options,
                        c = 0;
                    return c = b && b.tabNavigationVisible ? a.Wv() * (b.useTouchLayout ? 2 : 1) : 0
                },
                PC: function() {
                    var a = this.OC;
                    return a && a.options.tabNavigationVisible ? a.Wv() : 0
                },
                VC: function() {
                    return 4 * this.NC() + this.lE()
                },
                lE: function() {
                    var a = this,
                        b = a.OC;
                    return b && b.options.tabNavigationVisible ? 2 : 0
                },
                getResizeBarBounds: function() {
                    var a = this,
                        b = a.Dr();
                    return {
                        x: b.x + b.width - a.kw,
                        y: j,
                        width: a.kw,
                        height: j
                    }
                },
                getNavButtonBounds: function() {
                    var a = this;
                    return {
                        x: 0,
                        y: j,
                        width: a.NC(),
                        height: j,
                        endIndex: 4,
                        startIndex: 0
                    }
                },
                getSheetTabBounds: function() {
                    var a = this;
                    return {
                        x: a.VC(),
                        y: j,
                        height: j,
                        secondMoreTabWidth: 0,
                        moreTabPos: 0
                    }
                },
                getPreMoreTabBounds: function() {
                    var a = this;
                    return {
                        x: a.VC(),
                        width: a.HC + a.LC
                    }
                },
                YC: function() {
                    var a = this;
                    return a.ZC + a.WC[a.$C] + a.TC() > a._C()
                },
                _C: function() {
                    return this.Dr().width - this.kw
                },
                aD: function() {
                    return 1
                },
                Via: function() {
                    return [m]
                },
                cD: function() {
                    var a = this,
                        b = a.Dr().height,
                        c = a.VC() + b;
                    return a.OC.options.newTabVisible && (c += a.TC(), c += a.HC), c
                },
                dD: function(a, b) {
                    var c, d, e, f, g, j, k, l;
                    if (a.save(), a.beginPath(), c = a.createLinearGradient(b.x, b.y, b.width, b.height), d = h.Km(0, "gc-tabStripBackground"), e = d && d.backgroundImage, f = d && d.backgroundColor, e && e.indexOf("linear-gradient") !== -1) for (g = i(e), j = 0, k = g.length; j < k; j++) l = g[j], c.addColorStop(l.point, l.color);
                    else f && (c.addColorStop(0, "#DDDDDD"), c.addColorStop(1, f));
                    a.fillStyle = c, a.fillRect(b.x, b.y, b.width, b.height), a.restore()
                },
                fD: function(a, b, c, d) {
                    var e = this,
                        f = e.OC,
                        g = n().NewTab;
                    f.options.newTabVisible && (e.KC = a.measureText(g).width + e.EC, e.oD(a, c, 0, e.TC(), b.height, 5, !1, e.iD === -2, g))
                },
                jD: function(a, b, c, d) {
                    var e = this,
                        f = c - 1,
                        g = e.WC[f];
                    e.oD(a, d + e.LC - g - e.HC, 0, g, b.height, 5, e.$C === f, e.iD === f, "")
                },
                kD: function(a, b, c) {
                    var d, e, f, g, h, i, k = this;
                    a.fillStyle = l, a.fillRect(b.x, b.y, c - 1, b.height), d = 5, e = k.NC(), f = k.PC(), g = e / 2, h = f / 2, i = k.lD, k.mD(a, g, h, g + d, h + d, g + d, h - d, !0, g - d, 0 === i), g += e, k.mD(a, g, h, g + d, h + d, g + d, h - d, !0, j, 1 === i), g += e, k.mD(a, g, h, g - d, h + d, g - d, h - d, !1, j, 2 === i), g += e, k.mD(a, g, h, g - d, h + d, g - d, h - d, !1, g + 4, 3 === i)
                },
                nD: function(a, b) {
                    var c, d = this,
                        e = d.OC,
                        f = d.kw,
                        g = h.Km,
                        i = g(4, "gc-tabStripResizeBarInner"),
                        j = g(0, "gc-tabStripResizeBarOuter");
                    e.options.showHorizontalScrollbar && (c = b.x + b.width - f, a.fillStyle = j.backgroundColor, a.fillRect(c, b.y, f, b.height), a.fillStyle = i.backgroundColor, a.fillRect(c + 1, b.y + 1, f - 2, b.height - 2), a.fillStyle = i.color, a.fillRect(c + f / 2 - 1, b.y + 4, 2, b.height - 8))
                },
                oD: function(a, b, c, d, e, f, g, i, j) {
                    var k, m, n, o, p, q;
                    a.save(), a.beginPath(), a.moveTo(b, c), a.lineTo(b, c + e - f), a.arcTo(b, c + e, b + d, c + e, f), a.lineTo(b + d, c + e), a.lineTo(b + d + e, c), g || a.lineTo(b, c), k = this, m = 0, (g || i) && (m = 4), n = h.Km(m, "gc-tab-" + h.Jm(m)), o = k.pD(a, g || i, j, n), a.fillStyle = o, a.fill(), a.strokeStyle = l, a.stroke(), a.textBaseline = "top", "string" == typeof o && (p = o), a.fillStyle = k.qD(n, p), q = k.EC, a.textBaseline = "middle", a.fillText(j, b + q, c + e / 2), a.restore()
                },
                mD: function(a, b, c, d, e, f, g, l, m, n) {
                    var o, p, q, r, s, t, u, v, w, x, y, z, A;
                    if (a.save(), o = this, p = o.Dr(), q = o.NC(), r = h.Km, s = r(4, "gc-navButton-hover"), t = r(0, "gc-navButton-normal"), u = t && t.backgroundColor, n) a.fillStyle = s.backgroundColor, a.fillRect(b - q / 2 + 2, p.y + 2, q - 4, p.height - 4);
                    else {
                        if (v = t && t.backgroundImage, v && v.indexOf("linear-gradient") !== -1) {
                            for (w = a.createLinearGradient(p.x + .7 * p.height, p.y + 0, .7 * p.height, p.height), x = i(v), y = 0, z = x.length; y < z; y++) A = x[y], w.addColorStop(A.point, A.color);
                            a.fillStyle = w
                        } else u && (a.fillStyle = u);
                        a.fillRect(b - q / 2, p.y + 1, q, p.height - 2)
                    }
                    n ? a.fillStyle = s.color : a.fillStyle = t.color, void 0 !== m && m !== j && a.fillRect(m, k(e, g), 1, Math.max(e, g) - k(e, g)), l ? (b -= 2, d -= 2, f -= 2) : (b += 2, d += 2, f += 2), a.beginPath(), a.moveTo(b, c), a.lineTo(d, e), a.lineTo(f, g), a.lineTo(b, c), a.fill(), a.restore()
                }
            }), b.jv = o, a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a = c(44).GC$,
                b = c(58).Worksheet,
                d = c(53).Style,
                e = c(43);
            a.extend(b.prototype, {
                getFormatter: function(a, b, c) {
                    return this.tq(a, b, "formatter", c)
                },
                setFormatter: function(a, b, c, e) {
                    var f = this.Iq(a, b, e);
                    f || (f = new d), f.formatter = c, this.setStyle(a, b, f, e)
                }
            }), b.$n("formatter", {
                settingText: function(a) {
                    var b, d = e.Ul.tl(a.value),
                        f = c(34),
                        g = f && f.GeneralFormatter;
                    g && d && (b = {}, (new g).getPreferredDisplayFormatter(a.value, b), "number" == typeof b.value && (a.value = b.value))
                }
            })
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e = c(42),
                f = c(53).LineBorder,
                g = c(44).GC$,
                h = void 0,
                i = null,
                j = Math.sqrt,
                k = Math.pow,
                l = Math.min,
                m = g.inherit,
                n = g.isEmptyObject,
                o = {
                    LEFT_TOP: 0,
                    RIGHT_TOP: 1,
                    RIGHT_BOTTOM: 2,
                    LEFT_BOTTOM: 3
                },
                p = {
                    H_TOP_LEFT: 0,
                    H_TOP_Right: 1,
                    V_RIGHT_TOP: 2,
                    V_RIGHT_BOTTOM: 3,
                    H_BOTTOM_RIGHT: 4,
                    H_BOTTOM_LEFT: 5,
                    V_LEFT_BOTTOM: 6,
                    V_LEFT_TOP: 7
                },
                q = function() {
                    function a() {}
                    return a.prototype = {
                        constructor: a,
                        mE: function(a) {
                            var b = this;
                            0 === a._orientation ? (a.nE && (b.oE += a.nE), a.pE && (b.qE += a.pE)) : (a.nE && (b.rE += a.nE), a.pE && (b.sE += a.pE))
                        },
                        jp: function(a) {
                            var b = this.tE || "#9eb6ce",
                                c = this.uE,
                                d = a.lineWidth,
                                e = a.strokeStyle;
                            d === c && e === b || (d !== c && (a.lineWidth = c), e !== b && (a.strokeStyle = b)), this.hWa(a)
                        },
                        hWa: function(a) {
                            var b, c, d = this;
                            d.qE === d.oE || d.sE === d.rE ? (a.beginPath(), d.vE(a), a.stroke()) : (a.save(), b = Math.min(d.qE, d.oE), c = Math.min(d.sE, d.rE), a.rect(b, c, Math.abs(d.oE - d.qE), Math.abs(d.rE - d.sE)), a.clip(), a.beginPath(), d.vE(a), a.stroke(), a.beginPath(), a.restore())
                        },
                        vE: function(a) {
                            var b = this;
                            a.moveTo(b.qE, b.sE), a.lineTo(b.oE, b.rE)
                        }
                    }, a
                }(),
                r = function(a) {
                    m(b, a);

                    function b(b, c, d, e, f, g) {
                        var h, i;
                        a.call(this), h = g % 2, h || (b !== d ? (c -= .5, e -= .5) : (b -= .5, d -= .5)), i = this, i.qE = b, i.sE = c, i.oE = d, i.rE = e, i.tE = f, i.uE = g
                    }
                    return b
                }(q),
                s = function(a) {
                    m(b, a);

                    function b(b, c, d, e, f, g, h) {
                        var i, j;
                        a.call(this), i = g % 2, i || (b !== d ? (c -= .5, e -= .5) : (b -= .5, d -= .5)), j = this, j.qE = b, j.sE = c, j.oE = d, j.rE = e, j.tE = f, j.uE = g, j.wE = h
                    }
                    return b.prototype.vE = function(a) {
                        var c = this;
                        b.yl(a, c.qE, c.sE, c.oE, c.rE, c.wE)
                    }, b.yl = function(a, b, c, d, e, f) {
                        var g, h, i = j(k(d - b, 2) + k(e - c, 2)),
                            m = {
                                x: (d - b) / i,
                                y: (e - c) / i
                            },
                            n = 0,
                            o = 0;
                        for (f = f && f.length ? f : [4, 4]; n < i;) g = l(f[o++ % f.length], i - n), h = o % 2, n += g, h && a.moveTo(b, c), b += g * m.x, c += g * m.y, h && a.lineTo(b, c)
                    }, b
                }(q),
                t = function(a) {
                    m(b, a);

                    function b(b, c, d, e, f, g, h, i) {
                        a.call(this), g ? (b -= 1, d -= 1) : (c -= 1, e -= 1);
                        var j = this;
                        j.qE = b, j.sE = c, j.oE = d, j.rE = e, j.tE = f, j.xE = g, j.uE = 1, j.yE = h, j.zE = i
                    }
                    return b.prototype.vE = function(a) {
                        var b = this,
                            c = b.xE ? 0 : 1,
                            d = b.xE ? 1 : 0;
                        s.yl(a, b.qE - c, b.sE - d, b.oE - c, b.rE - d, b.yE), s.yl(a, b.qE, b.sE, b.oE, b.rE, b.zE)
                    }, b
                }(q),
                u = function(a) {
                    m(b, a);

                    function b(b, c, d, e, f, g) {
                        a.call(this);
                        var h = this;
                        h.qE = b, h.sE = c, h.oE = d, h.rE = e, h.tE = f, h.iWa = g, h.AE = new r(h.qE, h.sE, h.oE, h.rE, f, 1), h.BE = null
                    }
                    return b.prototype.hWa = function(a) {
                        this.AE && this.AE.hWa(a), this.BE && this.BE.hWa(a)
                    }, b.prototype.mE = function(a) {
                        var b = this;
                        b.BE ? (a.pE && b.AE && b.AE.mE(a), a.nE && b.BE.mE(a)) : b.AE && b.AE.mE(a)
                    }, b.prototype.jWa = function(a) {
                        var b, c, d, e, f, g, h, i, j = this;
                        a && a.severX && a.severY ? (b = a.severX || 0, c = a.severY || 0, b = j.iWa ? b : -b, d = parseInt(j.qE + (j.oE - j.qE) / 2), e = parseInt(j.sE + (j.rE - j.sE) / 2), f = d - b, g = e - c, h = d + b, i = e + c, j.AE = new r(j.qE, j.sE, f, g, j.tE, 1), j.BE = new r(h, i, j.oE, j.rE, j.tE, 1)) : (j.AE = new r(j.qE, j.sE, j.oE, j.rE, j.tE, 1), j.BE = null)
                    }, b
                }(q),
                v = function(a) {
                    m(b, a);

                    function b(b, c, d, e, f) {
                        var g, h, i;
                        a.call(this), g = this, h = 0, i = 0, b === d && (h = 1), c === e && (i = 1), 0 === h && 0 === i ? (h = 2, i = 2, b > d ? (g.AE = new u(b - h, c, d, e - i, f, (!1)), g.BE = new u(b, c + i, d + h, e, f, (!1))) : (g.AE = new u(b, c + i, d - h, e, f, (!0)), g.BE = new u(b + h, c, d, e - i, f, (!0)))) : (g.AE = new r(b - h, c - i, d - h, e - i, f, 1), g.BE = new r(b + h, c + i, d + h, e + i, f, 1)), g.tE = f, g.uE = 1
                    }
                    return b.prototype.hWa = function(a) {
                        this.AE.hWa(a), this.BE.hWa(a)
                    }, b.prototype.mE = function(a) {
                        var b = this;
                        a.CE ? 1 === a.CE ? b.AE.mE(a) : 2 === a.CE && b.BE.mE(a) : (b.AE.mE(a), b.BE.mE(a))
                    }, b.prototype.jWa = function() {
                        var a = this,
                            b = {
                                severX: 1,
                                severY: 1
                            };
                        a.AE.jWa(b), a.BE.jWa(b)
                    }, b
                }(q);

            function w(a, b, c, d, e, f) {
                switch (f !== h && f !== i || (f = 1), f) {
                    case 1:
                        return new r(a, b, c, d, e, 1);
                    case 2:
                        return new r(a, b, c, d, e, 2);
                    case 5:
                        return new r(a, b, c, d, e, 3);
                    case 3:
                        return new s(a, b, c, d, e, 1, [3, 1]);
                    case 9:
                        return new s(a, b, c, d, e, 1, [8, 2, 2, 2]);
                    case 4:
                        return new s(a, b, c, d, e, 1, [2, 2]);
                    case 11:
                        return new s(a, b, c, d, e, 1, [9, 3, 3, 3, 3, 3]);
                    case 13:
                        return new t(a, b, c, d, e, a !== c, [11, 1, 5, 1], [10, 2, 4, 2]);
                    case 10:
                        return new s(a, b, c, d, e, 2, [9, 3, 3, 3]);
                    case 12:
                        return new s(a, b, c, d, e, 2, [9, 3, 3, 3, 3, 3]);
                    case 8:
                        return new s(a, b, c, d, e, 2, [9, 3]);
                    case 7:
                        return new s(a, b, c, d, e, 1, [1]);
                    case 6:
                        return new v(a, b, c, d, e)
                }
                return i
            }
            b = function() {
                function a() {}
                return a.DE = function(b, c) {
                    var d, e;
                    return b ? c ? (d = a.EE, e = d[b.style] - d[c.style], 0 === e ? c.level - b.level : e) : 1 : c ? -1 : 0
                }, a.FE = function(a) {
                    if (a) {
                        if (a.isGridLine) return 1;
                        if (a.style) return f.Vo(a.style)
                    }
                    return 0
                }, a.GE = function(a) {
                    return a && 6 === a.style
                }, a.HE = function(a) {
                    return a && 13 === a.style
                }, a.IE = function(b, c) {
                    return b ? c ? a.DE(b.style, c.style) >= 0 ? b : c : b : c
                }, a.JE = function(a, b) {
                    a && a.line && a.line.mE(b)
                }, a.KE = function(b, c) {
                    return b === c ? 0 : b ? c ? b.isGridLine ? c.isGridLine ? 0 : -1 : c.isGridLine ? 1 : a.DE(b.style, c.style) : 1 : -1
                }, a.LE = function(a) {
                    return a && a.style && 6 === a.style.style
                }, a.ME = function(a, b, c, d) {
                    if (a.style && 6 === a.style.style) return !0;
                    var e = 0;
                    return e += b && b.style && 6 === b.style.style ? 1 : 0, e += c && c.style && 6 === c.style.style ? 1 : 0, e += d && d.style && 6 === d.style.style ? 1 : 0, e < 2
                }, a.NE = function(a, b, c, d, e, f) {
                    var g = {
                            _orientation: f ? 1 : 0,
                            pE: 0,
                            nE: 0
                        },
                        h = this.KE(a, c),
                        i = this.KE(a, d);
                    h >= 0 && i >= 0 ? 0 === h && 0 === i ? e !== -1 && 1 === e && (g.nE -= e) : e === -1 ? g.pE -= e : 1 === e && (g.nE -= 2 * e) : i >= 0 ? (g.CE = 2, g.pE += e) : h >= 0 && (g.CE = 1, g.pE += e), this.JE(a, g)
                }, a.OE = function(b, c, d, e, f, g, h, i, j) {
                    var k, l, m, n, o, p, q, r, s, t = {
                            _orientation: i ? 1 : 0,
                            CE: j ? 2 : 1,
                            pE: 0,
                            nE: 0
                        },
                        u = {
                            _orientation: i ? 1 : 0,
                            CE: j ? 1 : 2,
                            pE: 0,
                            nE: 0
                        },
                        v = 1 === g ? e : f,
                        w = 1 === h ? d : c,
                        x = this.LE(w);
                    x ? (k = this.KE(b, v), 0 === k ? (l = this.KE(b, w), 0 === l ? 1 === h && (u.nE -= h) : l > 0 && (h === -1 ? u.pE -= 2 * h : 1 === h && (u.nE -= 2 * h))) : k > 0 ? (m = this.KE(b, w), 0 === m ? 1 === h && (u.nE -= h) : m > 0 && (h === -1 ? u.pE -= 2 * h : 1 === h && (u.nE -= 2 * h))) : (n = this.KE(b, w), 0 === n ? h === -1 ? t.pE += 2 * h : 1 === h && (t.nE += 2 * h) : n > 0 && (h === -1 ? t.pE -= 3 * h : 1 === h && (t.nE -= 3 * h)))) : this.KE(b, v) >= 0 ? h === -1 ? u.pE -= 2 * h : 1 === h && (u.nE -= 2 * h) : h === -1 ? t.pE += 2 * h : 1 === h && (t.nE += 2 * h), o = 1 === g ? 2 : 1, p = 1 === o ? e : f, q = !1, r = 0, this.LE(p) && this.KE(p, b) > 0 && (q = !0, s = a.FE(p), this.KE(p, v) > 0 ? s > 0 && (r = 1 === h && this.LE(d) ? s >= 2 ? 2 : 1 : h === -1 && this.LE(c) ? s >= 3 ? 2 : 1 : 3 === s ? 3 : 2) : r = 3 === s ? 3 : 2), q || this.LE(w) || !(w && !w.isGridLine || p && !p.isGridLine) || (q = !0, r = h === -1 ? 2 : 1), q && (h === -1 ? (t.pE += h * r, u.pE += h * r) : 1 === h && (t.nE += h * r, u.nE += h * r)), (t.pE || t.nE) && this.JE(b, t), (u.pE || u.nE) && this.JE(b, u)
                }, a.PE = function(a, b, c, d, e, f) {
                    if (this.KE(a, c) >= 0 && this.KE(a, d) >= 0) {
                        var g = {
                            _orientation: f ? 1 : 0,
                            pE: 0,
                            nE: 0
                        };
                        e === -1 ? (g.pE -= 2 * e, this.LE(a) && this.KE(b, a) > 0 && (g.pE -= 1)) : 1 === e && (g.nE -= 2 * e, this.LE(a) && this.KE(b, a) > 0 && (g.nE += 1)), this.JE(a, g)
                    }
                }, a.QE = function(b, c, d, e, f, g) {
                    var h, i, j;
                    this.LE(b) && (h = this.IE(d, e), h && !h.isGridLine && (i = a.FE(h), i > 0 && (j = {
                        _orientation: g ? 1 : 0,
                        pE: 0,
                        nE: 0
                    }, f === -1 ? j.pE += i * f : j.nE += i * f, (j.pE || j.nE) && this.JE(b, j))))
                }, a.RE = function(b, c, d, e, f, g, h) {
                    var i, j, k, l, m = a;
                    (c || d || e) && (k = m.IE(d, e), m.ME(b, c, d, e) ? (j = m.KE(k, b)) > 0 ? (i = m.FE(k), m.LE(b) && (m.LE(d) || m.LE(e) || m.LE(c)) || 3 === i && m.JE(b, {
                        _orientation: 0,
                        pE: 1
                    })) : k && j < 0 ? (j = m.KE(b, c)) > 0 ? (i = m.FE(k), 3 === i || 2 === i ? m.JE(b, {
                        _orientation: 0,
                        pE: -2
                    }) : 1 === i && m.JE(b, {
                        _orientation: 0,
                        pE: -1
                    })) : 0 !== j && m.KE(c, k) > 0 && (i = m.FE(k), 3 === i && m.JE(b, {
                        _orientation: 0,
                        pE: 1
                    })) : 0 === j && (!c || m.KE(b, c) > 0) && (i = m.FE(k), 3 === i || 2 === i ? m.JE(b, {
                        _orientation: 0,
                        pE: -2
                    }) : 1 === i && m.JE(b, {
                        _orientation: 0,
                        pE: -1
                    })) : m.JE(b, {
                        _orientation: 0,
                        pE: 1
                    })), (f || g || h) && (l = m.IE(g, h), m.ME(b, f, g, h) ? (j = m.KE(l, b)) > 0 ? (i = m.FE(l), m.LE(b) && (m.LE(g) || m.LE(h) || m.LE(f)) || (3 === i ? m.JE(b, {
                        _orientation: 0,
                        nE: -2
                    }) : 2 !== i && 1 !== i || m.JE(b, {
                        _orientation: 0,
                        nE: -1
                    }))) : j <= 0 && ((j = m.KE(b, f)) > 0 ? (i = m.FE(l), 3 === i && m.JE(b, {
                        _orientation: 0,
                        nE: 1
                    })) : 0 !== j && m.JE(b, {
                        _orientation: 0,
                        nE: -1
                    })) : m.JE(b, {
                        _orientation: 0,
                        nE: -2
                    }))
                }, a.SE = function(b, c, d, e, f, g, h) {
                    var j, k, l, m, n = a;
                    (c || d || e) && (l = n.IE(d, e), n.ME(b, c, d, e) ? (k = n.KE(l, b)) > 0 ? (j = n.FE(l), n.LE(b) && (n.LE(d) || n.LE(e) || n.LE(c)) || 3 === j && n.JE(b, {
                        _orientation: 1,
                        pE: 1
                    })) : k < 0 ? (k = n.KE(b, c)) > 0 ? (j = n.FE(l), 3 === j || 2 === j ? n.JE(b, {
                        _orientation: 1,
                        pE: -2
                    }) : 1 === j && n.JE(b, {
                        _orientation: 1,
                        pE: -1
                    })) : 0 !== k && n.KE(c, l) > 0 && (j = n.FE(l), 3 === j && n.JE(b, {
                        _orientation: 1,
                        pE: 1
                    })) : 0 === k && n.KE(b, c) > 0 && (j = n.FE(l), 3 === j || 2 === j ? n.JE(b, {
                        _orientation: 1,
                        pE: -2
                    }) : 1 === j && n.JE(b, {
                        _orientation: 1,
                        pE: -1
                    })) : n.JE(b, {
                        _orientation: 1,
                        pE: 1
                    })), (f || g || h) && (m = n.IE(g, h), n.ME(b, f, g, h) ? (k = n.KE(b, m)) < 0 ? (j = n.FE(m), n.LE(b) && (n.LE(g) || n.LE(h) || n.LE(f)) || (3 === j || 2 === j ? n.JE(b, {
                        _orientation: 1,
                        nE: -2
                    }) : 1 === j && n.JE(b, {
                        _orientation: 1,
                        nE: -1
                    }))) : m !== i && k >= 0 && ((k = n.KE(b, f)) > 0 ? (j = n.FE(m), 3 === j && n.JE(b, {
                        _orientation: 1,
                        nE: 1
                    })) : 0 !== k && n.JE(b, {
                        _orientation: 1,
                        nE: -1
                    })) : n.JE(b, {
                        _orientation: 1,
                        nE: -2
                    }))
                }, a.TE = function(b, c, d, e, f, g, h, i) {
                    var j, k, l, m, n = a;
                    i ? this.SE(b, c, d, e, f, g, h) : this.RE(b, c, d, e, f, g, h), j = n.LE(d), k = n.LE(e), l = n.LE(c), j && k && l ? n.NE(b, c, d, e, -1, i) : j && !k ? n.OE(b, c, f, d, e, 1, -1, i, !0) : !j && k ? n.OE(b, c, f, d, e, 2, -1, i, !1) : j && k && !l ? n.PE(b, c, d, e, -1, i) : l && n.QE(b, c, d, e, -1, i), j = n.LE(g), k = n.LE(h), m = n.LE(f), j && k && m ? n.NE(b, f, g, h, 1, i) : j && !k ? n.OE(b, c, f, g, h, 1, 1, i, !0) : !j && k ? n.OE(b, c, f, g, h, 2, 1, i, !1) : j && k && !m ? n.PE(b, f, g, h, 1, i) : m && n.QE(b, f, g, h, 1, i)
                }, a.EE = [0, 101, 199, 100, 100, 300, 90, 100, 198, 100, 198, 100, 198, 198], a.kWa = function(a, b) {
                    return !(!a || !b || a.color !== b.color || a.level !== b.level || a.style !== b.style)
                }, a
            }(), d = function() {
                function a(a, b, c, d) {
                    var e = this;
                    e.UE = !1, e.VE = !1, e.kj = a, e.Wz = d, e.WE = b, e.XE = c
                }
                return a.prototype = {
                    constructor: a,
                    YE: function() {
                        var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o = this;
                        if (o.ZE = [], o.$E = [], o._E = [], o.aF = [], o.bF = [], o.cF = {}, o.dF = {}, o.eF = {}, o.fF = {}, o.lWa = {}, o.mWa = {}, o.i$a = {}, a = o.kj, b = o.Wz, c = o.XE, d = o.WE, e = a.Gr(d, b), f = a.Hr(c, b), e && e.length > 0 && f && f.length > 0) {
                            for (g = o.$E, h = e.length, j = 0; j < h; j++) i = e[j], i.height > 0 && g.push(i.row);
                            for (g.push(g[g.length - 1] + 1), k = o._E, l = f.length, n = 0; n < l; n++) m = f[n], m.width > 0 && k.push(m.col);
                            k.push(k[k.length - 1] + 1)
                        }
                        o.UE = !0
                    },
                    gF: function(a, b) {
                        if (b) {
                            var c = {
                                cj: a,
                                hF: b.startColumn,
                                iF: b.endColumn
                            };
                            this.aF.push(c)
                        }
                    },
                    jF: function(a, b, c, d, e, f, g, h, i, j) {
                        var k, l, m, n, o, p, q, r = this;
                        r.UE || r.YE(), h ? r.ZE.push(h) : (g && (k = g.borderLeft, l = g.borderTop, m = g.borderRight, n = g.borderBottom, q = g.backColor, o = g.diagonalDown, p = g.diagonalUp), !q || k || m || l || n || r.bF.push({
                            r: a,
                            c: b,
                            rc: 1,
                            cc: 1
                        }), r.kF(a, b, c, d, e, f, k, l, m, n, o, p, q, !1, !1, i, j))
                    },
                    kF: function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) {
                        var r, s, t, u, v, w = this,
                            x = !1,
                            y = !1,
                            z = !1,
                            A = !1;
                        k && w.lF(a, b, c - 1, d - 1, c + e, d + f, k, w.lWa), l && w.lF(a, b, c + e, d - 1, c - 1, d + f, l, w.mWa), h && (x = w.lF(a, b, c, d - .5, c + e, d - .5, h, w.eF)), g && (y = w.lF(a, b, c - .5, d, c - .5, d + f, g, w.fF)), j && (z = w.lF(a + 1, b, c, d + f - .5, c + e, d + f - .5, j, w.eF)), i && (A = w.lF(a, b + 1, c + e - .5, d, c + e - .5, d + f, i, w.fF)), r = w.kj, m && 0 !== r.ss.Sl(a) && 0 !== r.ss._m(b) || (s = !z && !n, t = !A && !o, u = !x && !n, v = !y && !o, (s || t || u || v) && w.mF(a, b, c, d, e, f, s, t, p, q)), (x || m) && w.nF(a - 1, b, w.cF), (y || m) && w.nF(a, b - 1, w.dF), !m || g || i || h || j || (w.oF(a - 1, b - 1, w.dF, !1), w.oF(a - 1, b - 1, w.cF, !0))
                    },
                    lF: function(a, c, d, e, f, g, h, j) {
                        if (h) {
                            var k = this.pF(a, c, j, !0);
                            return k ? 6 !== k.style.style && (6 === h.style || b.DE(h, k.style) > 0) && (k.line = w(d, e, f, g, h.color, h.style), k.style = h) : (k = this.pF(a, c, j), k.line = w(d, e, f, g, h.color, h.style), k.style = h), k.line !== i
                        }
                        return !1
                    },
                    mF: function(a, b, c, d, e, f, g, h, i, j) {
                        var k, l, m, n, o, p = this,
                            q = 3 === p.Wz,
                            r = p.kj.options.gridline;
                        q && r && (k = r.color, r.showHorizontalGridline && (g && (l = p.pF(a, b, p.cF), l.isGridLine = !0, l.line = w(c, d + f - .5, c + e, d + f - .5, k)), i && (m = p.pF(-1, b, p.cF, !1, !0), m.isGridLine = !0, m.line = w(c, d - .5, c + e, d - .5, k))), r.showVerticalGridline && (h && (n = p.pF(a, b, p.dF), n.isGridLine = !0, n.line = w(c + e - .5, d, c + e - .5, d + f, k)), j && (o = p.pF(a, -1, p.dF, !1, !0), o.isGridLine = !0, o.line = w(c - .5, d, c - .5, d + f, k))))
                    },
                    oF: function(a, b, c, d) {
                        var e, f = this.pF(a, b, c, !0);
                        f && (e = f, e.line && e.line.mE({
                            _orientation: d ? 0 : 1,
                            nE: -1
                        }))
                    },
                    nF: function(a, b, c) {
                        var d, e;
                        a >= 0 && b >= 0 && (d = c[a], d && (e = d[b], e && delete d[b]))
                    },
                    pF: function(a, b, c, d, e) {
                        var f, g;
                        if (!e && (a === -1 || b === -1)) return i;
                        if (f = c[a], !f) {
                            if (d) return i;
                            c[a] = f = {}
                        }
                        if (g = f[b], !g) {
                            if (d) return i;
                            f[b] = g = {}
                        }
                        return g
                    },
                    qF: function() {
                        var a, b, c, d, e, f, g, h = this,
                            i = h.aF,
                            j = i.length,
                            k = h.fF,
                            l = h.dF;
                        for (a = 0; a < j; a++) for (b = i[a], c = b.cj, d = b.hF, e = b.iF, g = d; g < e; g++) f = h.pF(c, g + 1, k, !0), f ? h.nF(c, g + 1, k) : (f = h.pF(c, g, l, !0), f && h.nF(c, g, l))
                    },
                    rF: function() {
                        var a, b, c = this.ZE,
                            d = c.length;
                        if (d > 0) for (b = 0; b < d; b++) a = c[b], this.sF(a)
                    },
                    j$a: function() {
                        var a, b, c, d, e, f, g, h;
                        if (this.i$a = {}, a = this.ZE, b = a.length, b > 0) for (d = 0; d < b; d++) for (c = a[d], e = 0; e < c.rowCount; e++) for (f = e + c.row, this.i$a[f] = this.i$a[f] || {}, g = 0; g < c.colCount; g++) h = g + c.col, this.i$a[f][h] = c
                    },
                    sF: function(a) {
                        var c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s, t = this,
                            u = a.row,
                            v = a.col,
                            w = a.x,
                            x = a.y,
                            y = t.kj.getActualStyle(u, v, t.Wz),
                            z = y ? y.backColor : i,
                            A = w,
                            B = x,
                            C = null,
                            D = !0,
                            E = null,
                            F = !0;
                        if (1 === a.rowCount) {
                            for (h = u, k = t.kj.Sl(h, t.Wz), g = 0; g < a.colCount; g++) m = 0 === g, o = g === a.colCount - 1, j = v + g, l = t.kj.Tl(j, t.Wz), q = t.kj.getActualStyle(h, j, t.Wz), h === a.row && j === a.col && (r = q, C = r.diagonalDown, E = r.diagonalUp), q ? (c = q.borderLeft, d = q.borderTop, e = q.borderRight, f = q.borderBottom, D && (D = b.kWa(C, q.diagonalDown)), F && (F = b.kWa(E, q.diagonalUp))) : c = d = e = f = i, m ? t.kF(h, j, A, B, l, k, c, d, i, f, i, i, z, !1, !0) : o ? t.kF(h, j, A, B, l, k, i, d, e, f, i, i, z, !1, !1) : t.kF(h, j, A, B, l, k, i, d, i, f, i, i, z, !1, !0), A += l;
                            C = D ? C : null, E = F ? E : null, t.kF(a.row, a.col, a.x, a.y, a.width, a.height, i, i, i, i, C, E, i, !0, !0)
                        } else if (1 === a.colCount) {
                            for (j = v, l = t.kj.Tl(j, t.Wz), g = 0; g < a.rowCount; g++) n = 0 === g, p = g === a.rowCount - 1, h = u + g, k = t.kj.Sl(h, t.Wz), q = t.kj.getActualStyle(h, j, t.Wz), h === a.row && j === a.col && (r = q, C = r.diagonalDown, E = r.diagonalUp), q ? (c = q.borderLeft, d = q.borderTop, e = q.borderRight, f = q.borderBottom, D && (D = b.kWa(C, q.diagonalDown)), F && (F = b.kWa(E, q.diagonalUp))) : c = d = e = f = i, n ? t.kF(h, j, A, B, l, k, c, d, e, i, i, i, z, !0, !1) : p ? t.kF(h, j, A, B, l, k, c, i, e, f, i, i, z, !1, !1) : t.kF(h, j, A, B, l, k, c, i, e, i, i, i, z, !0, !1), B += k;
                            C = D ? C : null, E = F ? E : null, t.kF(a.row, a.col, a.x, a.y, a.width, a.height, i, i, i, i, C, E, i, !0, !0)
                        } else {
                            for (g = 0; g < a.rowCount; g++) {
                                for (h = u + g, n = 0 === g, p = g === a.rowCount - 1, k = t.kj.Sl(h, t.Wz), s = 0; s < a.colCount; s++) j = v + s, m = 0 === s, o = s === a.colCount - 1, l = t.kj.Tl(j, t.Wz), q = t.kj.getActualStyle(h, j, t.Wz), h === a.row && j === a.col && (r = q, C = r.diagonalDown, E = r.diagonalUp), q ? (c = q.borderLeft, d = q.borderTop, e = q.borderRight, f = q.borderBottom, D && (D = b.kWa(C, q.diagonalDown)), F && (F = b.kWa(E, q.diagonalUp))) : c = d = e = f = i, n ? m ? t.kF(h, j, A, B, l, k, c, d, i, i, i, i, z, !0, !0) : o ? t.kF(h, j, A, B, l, k, i, d, e, i, i, i, z, !0, !1) : t.kF(h, j, A, B, l, k, i, d, i, i, i, i, z, !0, !0) : p ? m ? t.kF(h, j, A, B, l, k, c, i, i, f, i, i, z, !1, !0) : o ? t.kF(h, j, A, B, l, k, i, i, e, f, i, i, z, !1, !1) : t.kF(h, j, A, B, l, k, i, i, i, f, i, i, z, !1, !0) : m ? t.kF(h, j, A, B, l, k, c, i, i, i, i, i, z, !0, !0) : o && t.kF(h, j, A, B, l, k, i, i, e, i, i, i, z, !0, !1), A += l;
                                A = w, B += k
                            }
                            C = D ? C : null, E = F ? E : null, t.kF(a.row, a.col, a.x, a.y, a.width, a.height, i, i, i, i, C, E, i, !0, !0)
                        }!z || c || e || d || f || t.bF.push({
                            r: u,
                            c: v,
                            rc: a.rowCount,
                            cc: a.colCount
                        })
                    },
                    mE: function() {
                        var a = this,
                            b = !1,
                            c = !1,
                            d = !1,
                            e = !1;
                        n(a.fF) || (b = !0), n(a.eF) || (c = !0), (b || c) && (a.tF(), a.tWa()), n(a.lWa) || (d = !0), n(a.mWa) || (e = !0), (d || e) && a.oWa(), a.bF.length > 0 && a.uF()
                    },
                    k$a: function(a, b, c, d, e) {
                        var f = this,
                            g = this.i$a[a] ? this.i$a[a][b] : null;
                        if (g) switch (e) {
                            case p.H_TOP_LEFT:
                                return f.vF(a, b, c, d);
                            case p.H_TOP_Right:
                                return f.vF(a, b + g.colCount - 1, c, d);
                            case p.V_RIGHT_TOP:
                                return f.vF(a, b + g.colCount, c, d);
                            case p.V_RIGHT_BOTTOM:
                                return f.vF(a + g.rowCount - 1, b + g.colCount, c, d);
                            case p.H_BOTTOM_RIGHT:
                                return f.vF(a + g.rowCount, b + g.colCount - 1, c, d);
                            case p.H_BOTTOM_LEFT:
                                return f.vF(a + g.rowCount, b, c, d);
                            case p.V_LEFT_BOTTOM:
                                return f.vF(a + g.rowCount - 1, b, c, d);
                            case p.V_LEFT_TOP:
                                return f.vF(a, b, c, d)
                        }
                        return f.vF(a, b, c, d)
                    },
                    oWa: function() {
                        var a, c, d, e, f, g, h, i, j, k, l, m, n, o, q, r = this,
                            s = r.$E,
                            t = r._E,
                            u = s.length,
                            v = t.length,
                            w = {},
                            x = {};
                        for (a = 0; a < u; a++) for (d = s[a], c = 0; c < v; c++) e = t[c], n = r.pF(d, e, r.lWa, !1), o = r.pF(d, e, r.mWa, !1), (n || o) && (b.LE(n) && b.LE(o) && (n.line.jWa(), o.line.jWa()), q = [], f = r.k$a(d, e, !1, w, p.H_TOP_LEFT), f && f.line && !f.isGridLine && (q = [1, 1, 2], r.pWa(q, f, n, !0, 1)), j = r.k$a(d, e, !1, w, p.H_TOP_Right), j && j.line && !j.isGridLine && (q = [1, 1, 2], r.pWa(q, j, o, !0, 1)), g = r.k$a(d, e, !0, x, p.V_LEFT_TOP), g && g.line && !g.isGridLine && (q = [1, 1, 2], r.pWa(q, g, n, !0, 0)), k = r.k$a(d, e, !0, x, p.V_LEFT_BOTTOM), k && k.line && !k.isGridLine && (q = [1, 1, 2], r.pWa(q, k, o, !1, 0)), h = r.k$a(d, e, !1, w, p.H_BOTTOM_LEFT), h && h.line && !h.isGridLine && (q = [-1, -2, -2], r.pWa(q, h, o, !1, 1)), l = r.k$a(d, e, !1, w, p.H_BOTTOM_RIGHT), l && l.line && !l.isGridLine && (q = [-1, -2, -2], r.pWa(q, l, n, !1, 1)), i = r.k$a(d, e, !0, x, p.V_RIGHT_TOP), i && i.line && !i.isGridLine && (q = [-1, -2, -2], r.pWa(q, i, o, !0, 0)), m = r.k$a(d, e, !0, x, p.V_RIGHT_BOTTOM), m && m.line && !m.isGridLine && (q = [-1, -2, -2], r.pWa(q, m, n, !1, 0)))
                    },
                    pWa: function(a, c, d, e, f) {
                        var g, h, i = b.LE(c),
                            j = b.HE(c),
                            k = c.line.uE;
                        i && (k = 3), j && (k = 2), g = a[k - 1], d && d.line && (h = {
                            _orientation: f
                        }, e ? h.pE = g : h.nE = g, d.line.mE(h))
                    },
                    uF: function() {
                        var a, b, c, d, e, f, g, h, i, j, k, l, m = this,
                            n = m.bF,
                            o = n.length;
                        for (a = 0; a < o; a++) {
                            for (b = n[a], c = b.r, d = b.c, e = c, f = c - 1, g = d - 1, h = d, b.rc > 1 && (e += b.rc - 1), b.cc > 1 && (h += b.cc - 1), i = !1, j = !1, k = a + 1; k < o && (l = n[k], l.c === h + 1 && l.r === c && (j = !0), l.r === e + 1 && l.c === d && (i = !0), !i || !j) && !(l.r > c + 1 && l.c > d + 1); k++);
                            i || m.oF(e, g, m.cF, !0), j || m.oF(f, h, m.dF, !1)
                        }
                    },
                    tF: function() {
                        var a, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s, t, u = this,
                            v = u.$E,
                            w = u._E,
                            x = v.length,
                            y = w.length,
                            z = {},
                            A = {};
                        for (a = 0; a < x; a++) for (d = v[a], c = 0; c < y; c++) e = w[c], q = 0, r = 0, s = u.pF(d, e, u.fF, !0), s ? q++ : s = u.pF(d, e - 1, u.dF, !0), t = u.pF(d, e, u.eF, !0), t ? r++ : t = u.pF(d - 1, e, u.cF, !0), (s || t) && (f = 0 === a ? i : u.vF(v[a - 1], e, !0, A), f && f.line && !f.isGridLine && (q++, r++), g = 0 === c ? i : u.vF(d, w[c - 1], !1, z), g && g.line && !g.isGridLine && (q++, r++), s && (h = u.vF(d, e, !1, z), h && h.line && !h.isGridLine && q++, a !== x - 1 && (k = u.vF(v[a + 1], e, !0, A), k && k.line && !k.isGridLine && q++), 0 !== c && a !== x - 1 && (l = u.vF(v[a + 1], w[c - 1], !1, z), l && l.line && !l.isGridLine && q++), a !== x - 1 && (m = u.vF(v[a + 1], e, !1, z), m && m.line && !m.isGridLine && q++), q > 0 && (b.GE(s.style) ? b.TE(s, f, g, h, k, l, m, !0) : b.HE(s.style) || b.SE(s, f, g, h, k, l, m))), t && (j = u.vF(d, e, !0, A), j && j.line && !j.isGridLine && r++, c !== y - 1 && (n = u.vF(d, w[c + 1], !1, z), n && n.line && !n.isGridLine && r++), 0 !== a && c !== y - 1 && (o = u.vF(v[a - 1], w[c + 1], !0, A), o && o.line && !o.isGridLine && r++), c !== y - 1 && (p = u.vF(d, w[c + 1], !0, A), p && p.line && !p.isGridLine && r++), r > 0 && (b.GE(t.style) ? b.TE(t, g, f, j, n, o, p, !1) : b.HE(t.style) || b.RE(t, g, f, j, n, o, p))))
                    },
                    l$a: function(a, b, c, d) {
                        var e = this,
                            f = this.i$a[a] ? this.i$a[a][b] : null,
                            g = c ? e.mWa : e.lWa;
                        return f ? a === f.row && b === f.col && d === o.LEFT_TOP ? e.pF(f.row, f.col, g, !1) : a === f.row && b === f.col + f.colCount - 1 && d === o.RIGHT_TOP ? e.pF(f.row, f.col, g, !1) : a === f.row + f.rowCount - 1 && b === f.col + f.colCount - 1 && d === o.RIGHT_BOTTOM ? e.pF(f.row, f.col, g, !1) : a === f.row + f.rowCount - 1 && b === f.col && d === o.LEFT_BOTTOM ? e.pF(f.row, f.col, g, !1) : void 0 : e.pF(a, b, g, !1)
                    },
                    tWa: function() {
                        var a, c, d, e, f, g, h, i, j, k, l, m, n, p, q, r = this,
                            s = r.$E,
                            t = r._E,
                            u = s.length,
                            v = t.length;
                        for (a = 0; a < u; a++) for (d = s[a], c = 0; c < v; c++) e = t[c], p = r.pF(d, e, r.fF, !0), p && p.line && b.LE(p) && (f = r.l$a(d, e, !1, o.LEFT_TOP), g = r.l$a(d, e, !0, o.LEFT_BOTTOM), h = b.LE(f), i = b.LE(g), j = r.l$a(d, e - 1, !1, o.RIGHT_BOTTOM), k = r.l$a(d, e - 1, !0, o.RIGHT_TOP), l = b.LE(j), m = b.LE(k), f && h && (n = {
                            CE: 2,
                            _orientation: 1,
                            pE: 2
                        }, p.line.mE(n)), g && i && (n = {
                            CE: 2,
                            _orientation: 1,
                            nE: -2
                        }, p.line.mE(n)), j && l && (n = {
                            CE: 1,
                            _orientation: 1,
                            nE: -2
                        }, p.line.mE(n)), k && m && (n = {
                            CE: 1,
                            _orientation: 1,
                            pE: 2
                        }, p.line.mE(n))), q = r.pF(d, e, r.eF, !0), q && q.line && b.LE(q) && (f = r.l$a(d, e, !1, o.LEFT_TOP), g = r.l$a(d, e, !0, o.RIGHT_TOP), h = b.LE(f), i = b.LE(g), j = r.l$a(d - 1, e, !1, o.RIGHT_BOTTOM), k = r.l$a(d - 1, e, !0, o.LEFT_BOTTOM), l = b.LE(j), m = b.LE(k), f && h && (n = {
                            CE: 2,
                            _orientation: 0,
                            pE: 2
                        }, q.line.mE(n)), g && i && (n = {
                            CE: 2,
                            _orientation: 0,
                            nE: -2
                        }, q.line.mE(n)), j && l && (n = {
                            CE: 1,
                            _orientation: 0,
                            nE: -2
                        }, q.line.mE(n)), k && m && (n = {
                            CE: 1,
                            _orientation: 0,
                            pE: 2
                        }, q.line.mE(n)))
                    },
                    vF: function(a, b, c, d) {
                        var e, f = d[a];
                        return f || (f = d[a] = {}), e = f[b], e === h && (e = f[b] = this.wF(a, b, c)), e
                    },
                    wF: function(a, b, c) {
                        var d, e, f;
                        if (a === h || a < 0 || b === h || b < 0) return i;
                        if (d = this, e = c ? d.fF : d.eF, f = d.pF(a, b, e, !0), f) return f;
                        if (e = c ? d.dF : d.cF, c) {
                            if (--b < 0) return i
                        } else if (--a < 0) return i;
                        return f = d.pF(a, b, e, !0), f ? f : i
                    },
                    paint: function(a, b) {
                        var c = this;
                        c.UE && (c.VE || (c.j$a(), c.rF(), c.qF(), c.mE(), c.VE = !0), a.save(), a.beginPath(), c.jp(a, b), a.closePath(), a.stroke(), a.restore())
                    },
                    jp: function(a) {
                        this.xF(a), this.yF(a)
                    },
                    xF: function(a) {
                        var b = this;
                        b._d(a, b.cF), b._d(a, b.dF)
                    },
                    yF: function(a) {
                        var b = this;
                        b._d(a, b.eF), b._d(a, b.fF), b._d(a, b.lWa), b._d(a, b.mWa)
                    },
                    _d: function(a, b) {
                        var c, d, e, f;
                        for (c in b) if (b[c]) {
                            e = b[c];
                            for (d in e) e[d] && (f = e[d].line, f && f.jp(a))
                        }
                    }
                }, a
            }(), e.zF = w, e.AF = d, a.exports = e
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d = c(42),
                e = c(58).Worksheet,
                f = c(44).GC$,
                g = c(43),
                h = c(26),
                i = g.Ul,
                j = i.Ml,
                k = i.rl(),
                l = g.Events,
                m = h.j.Fa,
                n = g.Vl,
                o = null,
                p = void 0,
                q = "string";
            d.EditorStatus = {
                ready: 0,
                enter: 1,
                edit: 2
            }, b = {
                startEdit: function(a, b) {
                    var c = this;
                    c.EF(c.Ws(), c.Jl, c.Kl, o, o, a, b)
                },
                editorStatus: function() {
                    return this.Px || 0
                },
                isEditing: function() {
                    var a = this.Px;
                    return 1 === a || 2 === a
                },
                endEdit: function(a) {
                    return this.gv(a)
                },
                gv: function(a, b, c) {
                    var d = this;
                    if (!d.isEditing()) return !0;
                    d.suspendPaint();
                    try {
                        return d.Yoa(a, b, c)
                    } finally {
                        d.resumePaint()
                    }
                },
                Yoa: function(a, b, c) {
                    var d, g, h, i, k, n, p, q, r, s, t, u, v, w = this,
                        x = w.mm,
                        y = w.BF,
                        z = w.name(),
                        A = w.Jl,
                        B = w.Kl,
                        C = w.getCellType(A, B),
                        D = {
                            sheet: w,
                            row: A,
                            col: B,
                            sheetArea: 3
                        };
                    if (C.isImeAware(D) || x.Qq(), y && y.parentNode) {
                        if (g = C.getEditorValue(y, D), h = {
                                sheet: w,
                                sheetName: z,
                                row: A,
                                col: B,
                                editor: y,
                                editingText: g,
                                cancel: !1
                            }, w.Wq(l.EditEnd, h), h.cancel) return;
                        if (w.Wq(l.EditEnding, h), h.cancel) return;
                        if (i = w.parent, k = i && i.CF, document.activeElement === (k && k.qo) && x.Qq(), A >= 0 && B >= 0 && (n = y.Ep, C.isEditingValueChanged(n, g, D) || 1 === b)) if (a) C.setEditorValue(y, n, D), C.selectAll(y, D);
                        else if (p = C.DF, m(p) && (p = !0), q = {
                                cmd: "editCell",
                                sheetName: z,
                                row: A,
                                col: B,
                                newValue: g,
                                autoFormat: p,
                                editingFormatter: y.oja
                            }, 1 === b && (q.ranges = [w.Ix()], q.endEditType = b), w.wu().execute(q), d = q.applyResult, 2 === d) return C.focus(y, D), !1;
                        if (w.$l = !0, C.deactivateEditor(y, D), C.isImeAware(D)) j.msie && 9 === parseFloat(j.version) ? x.Qq() : f(y.parentNode.parentNode).css({
                            width: 0,
                            height: 0,
                            overflow: "hidden",
                            border: "none"
                        });
                        else for (r = w.zo(), s = y; s;) s.parentNode === r ? r.removeChild(s) : s = s.parentNode
                    }
                    return w.Ll = !1, t = {
                        sheet: w,
                        sheetName: z,
                        row: A,
                        col: B,
                        editingText: g
                    }, u = f.extend({}, t), w.Wq(l.EditEnded, t), w.Wq(l.FormulatextboxEditEnded, u), (c === !0 || !u.ignore) && (0 !== w.Px && (v = w.Px, w.Px = 0, w.Cu(v, 0)), e.ao(w, "endEdit"), w.BF = o, 1 !== d)
                },
                FF: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l = this,
                        m = l.hitTest(b, c);
                    !m || m.cellTypeHitInfo && m.cellTypeHitInfo.outlineColumnHitInfo || (d = m.row, e = m.col, d >= 0 && e >= 0 && m.rowViewportIndex >= 0 && m.colViewportIndex >= 0 && !m.resizeInfo && !m.dragInfo && d === l.Jl && e === l.Kl && (f = l.isEditing(), l.EF(a, d, e), !f && l.isEditing() && (g = m.hitTestType, h = l.getCellType(d, e), h.tw && (i = l.getCellRect(d, e, 1 === g ? -1 : p, 2 === g ? -1 : p), j = l.getActualStyle(d, e, g), k = h.h5(b, c, j, i, {
                        sheet: l,
                        row: d,
                        col: e,
                        sheetArea: g
                    }), k && k.isReservedLocation && h.tw(l, d, e, 3)))))
                },
                EF: function(a, b, c, g, h, i, j, p) {
                    var q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H;
                    if (f[f.sd]({
                            tc: this.parent
                        }), !(b < 0 || c < 0) && (q = this, r = q.name(), s = q.options, !q.isEditing() && (t = q.getCellRect(b, c), !(!t || m(t.width) || m(t.height) || m(t.x) || m(t.y) || t.width <= 0 || t.height <= 0) && (u = q.getActualStyle(b, c), (!s.isProtected || u.locked === !1) && (v = q.getCellType(b, c), v && (w = q.mm, w.zt(), x = {
                            sheet: q,
                            row: b,
                            col: c,
                            sheetArea: 3
                        }, y = v.isImeAware(x) ? w.GF : v.a5(x), y && y.firstChild && (z = y.firstChild.firstChild), z)))))) {
                        if (q.BF = z, A = {
                                sheet: q,
                                sheetName: r,
                                row: b,
                                col: c,
                                cancel: !1
                            }, q.Wq(l.EditStarting, A), A.cancel) return void(k.ipad && w.Qq());
                        q.showCell(q.Jl, q.Kl, 3, 3), B = q.getValue(b, c), C = d.X3 && q.getFormula(b, c), D = q.Px, q.HF ? q.Px = 1 : m(B) && m(C) ? q.Px = 1 : q.Px = 2, q.Cu(D, q.Px), E = q.am(), t = q.getCellRect(b, c, g, h), v.isImeAware(x) && w.JF(), v.d5(y, u, t, x), q.KF(v, z, b, c, u, j, p), F = q.zo(), v.isImeAware(x) || F.insertBefore(y, o), v.g5(y, u, t, x), v.isImeAware(x) && i || v.focus(z, x), s.allowCellOverflow && (G = t.clone(), G.y -= 2, G.height += 4, G.x = E.kt, G.width = E.er, q.repaint(G)), e.ao(q, "startEdit", {
                            element: v.getEditingElement()
                        }), i && v.selectAll(z, x), n.Zl(q), H = {
                            sheet: q,
                            sheetName: r,
                            row: b,
                            col: c
                        }, q.Wq(l.EditStarted, H), q.Wq(l.FormulatextboxEditStarted, H)
                    }
                },
                KF: function(a, b, c, e, f, g, h) {
                    var i, j, k, l, n = this,
                        o = d.X3 && n.getFormula(c, e, !0);
                    o && (o = "=" + o), i = o, j = {
                        sheet: n,
                        row: c,
                        col: e,
                        sheetArea: 3,
                        isImeInput: h
                    }, o && 0 !== o.length || (o = n.getValue(c, e), k = n.parent, l = d.X3 && k && k.options.allowUserEditFormula, typeof o === q && f.quotePrefix || o && o.length > 0 && "=" === o[0] && l ? (o = "'" + o, i = o) : (i = o, o = a.kp(b, f, o, j))), b.Ep = o, m(g) || (o = g), a.setEditorValue(b, o, j), b.LF = i
                }
            }, f.extend(e.prototype, b), a.exports = d
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d = c(42),
                e = c(58).Worksheet,
                f = c(26),
                g = c(57).yp,
                h = c(44).GC$,
                i = c(43),
                j = i.Range,
                k = window,
                l = document,
                m = h.each,
                n = i.Ul,
                o = n.Ml,
                p = n.rl(),
                q = n.nl,
                r = n.Nl,
                s = f.u.Kb,
                t = i.kf,
                u = f.j.Fa,
                v = i.Events,
                w = i.Vl,
                x = ".handler",
                y = "mousedown" + x,
                z = "mouseup" + x,
                A = "mousemove" + x,
                B = "mousewheel" + x,
                C = "DOMMouseScroll" + x,
                D = "mouseout" + x,
                E = "dblclick" + x,
                F = null,
                G = void 0,
                H = isNaN,
                I = parseInt,
                J = Math.max,
                K = Math.min,
                L = Math.abs,
                M = Math.ceil,
                N = "function",
                O = "position",
                P = "absolute",
                Q = "border",
                R = "overflow",
                S = "top",
                T = "left",
                U = "width",
                V = "height",
                W = "resize",
                X = "hidden",
                Y = "visible",
                Z = "none",
                $ = "tabindex",
                _ = "gcUIElement",
                aa = "corner",
                ba = "sizeHiddenRow",
                ca = "sizeRow",
                da = "sizeCol",
                ea = "sizeHiddenCol",
                fa = "default",
                ga = p.iphone || p.ipad || p.android,
                ha = function() {
                    return f.C(d.SR)()
                },
                ia = 30;
            e.$n("eventHandler", {
                dispose: function(a) {
                    var b, c, d, e = this;
                    h(e.Ws()).unbind(y).unbind(z).unbind(A).unbind(B).unbind(C).unbind(D).unbind(E), b = e.mm, b && (b.no(), b.MF()), c = e.BF, c && h(c).remove(), d = e.NF, d && d.close(), a !== !1 && (e.OF = F, e.PF = F, e.QF = F, e.RF = F, e.SF = F, e.TF = F, e.mm = F)
                },
                setHost: function(a) {
                    function b(a, b) {
                        a.UF(b)
                    }
                    if (a) {
                        var c = this,
                            d = c.mm;
                        c.OF = function(a) {
                            var b = {
                                e: a,
                                r: F
                            };
                            if (e.ao(c, "preProcessMouseDown", b), !b.r) return d.AD(a)
                        }, c.PF = function(a) {
                            var b = {
                                e: a,
                                r: F
                            };
                            e.ao(c, "preProcessMouseMove", b), b.r || d.RB || d.BD(a)
                        }, c.QF = function(a) {
                            var b = {
                                e: a,
                                r: F
                            };
                            if (e.ao(c, "preProcessMouseUp", b), !b.r && !c.XD) {
                                if (d.RB) return;
                                return d.CD(a)
                            }
                        }, c.RF = function(a) {
                            var b, d, f, g, h, i, j, l, m;
                            if (a = a || k.event, b = {
                                    e: a,
                                    r: F
                                }, e.ao(c, "preProcessMouseWheel", b), !b.r) return d = a.detail ? a.detail : a.wheelDelta / -40, f = 0, (!n.sl() || (g = (new Date).valueOf(), h = a.wheelDeltaY, i = a.wheelDeltaX, L(h) >= L(i) ? i = 0 : h = 0, j = !c.nka || g - c.nka > 200, (o.safari || o.chrome) && (l = o.safari ? -4 : -40, u(h) || (j ? (d = h / l, d = (d >= 0 ? 1 : -1) * M(L(d)), c.oka = 0) : (d = h / l, c.oka += d, d = (d >= 0 ? 1 : -1) * Math.floor(L(c.oka)), c.oka -= d)), u(i) || (j ? (f = i / l, f = (f >= 0 ? 1 : -1) * M(L(f)), c.pka = 0) : (f = i / l, c.pka += f, f = (f >= 0 ? 1 : -1) * Math.floor(L(c.pka)), c.pka -= f))), c.nka = g, 0 !== d || 0 !== f)) && (m = c.parent.ku.Rw(a, I(d, 10) || 0, I(f, 10) || 0), !! m && void 0)
                        }, c.SF = function(a) {
                            var b = {
                                e: a,
                                r: F
                            };
                            if (e.ao(c, "preProcessMouseOut", b), !b.r) return d.DD(a)
                        }, c.TF = function(a) {
                            var f, g, h = {
                                e: a,
                                r: F
                            };
                            e.ao(c, "preProcessMouseDbClick", h);

                            function i(a, b, c, d, e, f) {
                                var g = {
                                    sheet: a,
                                    sheetName: b,
                                    sheetArea: e,
                                    row: c,
                                    col: d
                                };
                                return f && (g.cancel = !1), g
                            }
                            function j(a, b) {
                                var c, d, e = a.kj,
                                    f = b.resizeInfo;
                                return !!f && (f.action === ca || f.action === ba ? (c = [], e.tp(f.index) ? m(e.ITa.getSelections(), function(a, b) {
                                        var d, f;
                                        if (b.col === -1) for (d = e.Tq(b), f = 0; f < Ca(d); f++) c.push({
                                            row: d.row + f
                                        })
                                    }) : c.push({
                                        row: f.index
                                    }), e.wu().execute({
                                        cmd: "autoFitRow",
                                        sheetName: e.name(),
                                        rows: c,
                                        columnHeader: 1 === f.sheetArea
                                    })) : (d = [], e.sp(f.index) ? m(e.ITa.getSelections(), function(a, b) {
                                        var c, f;
                                        if (b.row === -1) for (c = e.Tq(b), f = 0; f < Ba(c); f++) d.push({
                                            col: c.col + f
                                        })
                                    }) : d.push({
                                        col: f.index
                                    }), e.wu().execute({
                                        cmd: "autoFitColumn",
                                        sheetName: e.name(),
                                        columns: d,
                                        rowHeader: 2 === f.sheetArea
                                    })), !0)
                            }
                            h.r || (f = c.yt, f && (g = !1, 3 === ta(f) ? b(d, a) : g = j(d, f), g || c.Wq(v.CellDoubleClick, i(c, c.name(), f.row, f.col, ta(f)))))
                        }, a.bind(y, function(a) {
                            return c.OF(a)
                        }).bind(z, function(a) {
                            return c.QF(a)
                        }).bind(A, function(a) {
                            return c.PF(a)
                        }).bind(B, function(a) {
                            return c.RF(a)
                        }).bind(C, function(a) {
                            return c.RF(a)
                        }).bind(D, function(a) {
                            return c.SF(a)
                        }).bind(E, function(a) {
                            return c.TF(a)
                        })
                    }
                }
            });

            function ja(a, b) {
                var c = 3;
                return ra(b) < 0 && (c = 1), sa(b) < 0 && (c = 2), !(3 === c || !a.vp(b.row, b.col, c, !0))
            }
            function ka(a, b, c) {
                var d, e, f, g, h, j, k, l = !1,
                    m = a.am();
                return b && (d = ra(b), e = sa(b), (d < 0 || e < 0) && (f = a.getCellRect(b.row, b.col, d, e), f && f.width > 0 && f.height > 0 && (g = m.x, h = m.y, (f.x < m.Br + g || f.y < m.Cr + h || f.y >= m.height - m.Bt) && (j = new i.Rect(f.x - 2, f.y - 2, f.width + 4, f.height + 4), k = d < 0 && e < 0 ? m.em() : d < 0 ? m.gm(e) : m.fm(d), j = j.getIntersectRect(k), c.VF(j.x, j.y, j.width, j.height), l = ja(a, b))))), l
            }
            function la(a) {
                return a.isEditing()
            }
            function ma(a) {
                return a.endEdit()
            }
            function na(a) {
                return a.frozenRowCount()
            }
            function oa(a) {
                return a.frozenColumnCount()
            }
            function pa(a, b) {
                return a.getRowCount(b)
            }
            function qa(a, b) {
                return a.getColumnCount(b)
            }
            function ra(a) {
                return a.rowViewportIndex
            }
            function sa(a) {
                return a.colViewportIndex
            }
            function ta(a) {
                return a.hitTestType
            }
            function ua(a) {
                return a.getActiveRowIndex()
            }
            function va(a) {
                return a.getActiveColumnIndex()
            }
            function wa(a) {
                return a.keyCode
            }
            function xa(a) {
                return a.ctrlKey
            }
            function ya(a) {
                return a.shiftKey
            }
            function za(a) {
                return a.altKey
            }
            function Aa(a) {
                return a.metaKey
            }
            function Ba(a) {
                return a.colCount
            }
            function Ca(a) {
                return a.rowCount
            }
            function Da(a, b, c) {
                return {
                    action: a,
                    index: b,
                    sheetArea: c
                }
            }
            d.ImeMode = {
                auto: 1,
                active: 2,
                inactive: 4,
                disabled: 0
            };

            function Ea(a, b, c, d, e, f) {
                var g = {
                    sheet: a,
                    sheetName: b,
                    sheetArea: e,
                    row: c,
                    col: d
                };
                return f && (g.cancel = !1), g
            }
            function Fa(a, b, c, d, e, f) {
                var g = a.kj,
                    h = Ea(g, g.name(), g.Jl, g.Kl, G, !0);
                return g.Wq(v.LeaveCell, h), !(!h || h.cancel !== !0) || (g.Kr(b, c, d, e, f), g.Wq(v.EnterCell, Ea(g, g.name(), b, c)), g.Wq(v.FormulatextboxEnterCell, Ea(g, g.name(), b, c)), void(a.cs && a.cs(b, c)))
            }
            function Ga(a, b, c, d, e, f, g) {
                var h, i = a.kj,
                    j = b.call(i, f.sheetArea);
                return (g && !i.getRowVisible(f.index) || !g && !i.getColumnVisible(f.index)) && (f.index = c.call(a, f.index, f.sheetArea)), h = d.call(j, f.index), h || (h = d.call(j, e)), h
            }
            function Ha(a, b, c, d) {
                var e, f = d ? "movingY" : "movingX",
                    g = d ? "startY" : "startX";
                a[f] = b, a[f] < a[g] && (a[f] = a[g]), e = d ? c.y + c.height : c.x + c.width, a[f] > e && (a[f] = e)
            }
            function Ia(a, b) {
                var c = a.am();
                return na(a) > 0 && b < c.nt + c.fs ? 0 : a.frozenTrailingRowCount() > 0 && b > c.ot ? 2 : 1
            }
            function Ja(a, b) {
                var c = a.am();
                return oa(a) > 0 && b < c.kt + c.hs ? 0 : a.frozenTrailingColumnCount() > 0 && b > c.lt ? 2 : 1
            }
            function Ka(a, b, c) {
                var d = a.Gr(b);
                return d ? d.findNearY(c) : F
            }
            function La(a, b, c) {
                var d = a.Hr(b);
                return d ? d.findNearX(c) : F
            }
            function Ma(a) {
                return !a.options.isProtected || a.options.protectionOptions.allowResizeRows
            }
            function Na(a) {
                return !a.options.isProtected || a.options.protectionOptions.allowResizeColumns
            }
            function Oa(a, b, c) {
                var d, e, f, g, h = c ? a.frozenRowCount() : a.frozenColumnCount(),
                    i = c ? a.lq : a.qq,
                    j = !1,
                    k = i - 1;
                if (h > 0 && h < i) for (e = i; --e >= h;) if (d = c ? a.getRowVisible(e) : a.getColumnVisible(e)) {
                    if (f = c ? a.getRowHeight(e) : a.getColumnWidth(e), e === k && 0 === f) break;
                    if (f > 0) {
                        j = !0;
                        break
                    }
                } else k--;
                for (g = j ? h : b; --g >= 0;) if (d = c ? a.getRowVisible(g) : a.getColumnVisible(g)) return g;
                return -1
            }
            b = function() {
                function a(a) {
                    var b = this;
                    b.WF = 0, b.XF = !1, b.Gma = !1, b.gA = {}, b.kj = a
                }
                return a.prototype = {
                    no: function() {
                        var a = this;
                        a.YF && a.YF.no(), a.ZF && a.ZF.no(), a.$F = F
                    },
                    _F: function() {
                        var a = this;
                        return a.YF || (a.YF = new Pa(a)), a.YF
                    },
                    aG: function() {
                        var a = this;
                        return a.ZF || (a.ZF = new Pa(a)), a.ZF
                    },
                    Vs: function() {
                        return this.kj.Vs()
                    },
                    bG: function() {
                        var a = h(this.kj.Ws()).position();
                        return a || (a = {
                            top: 0,
                            left: 0
                        }), a
                    },
                    AD: function(a) {
                        var b, c, d, e, f, g, h, i, j;
                        return 2 === a.button || (b = this, c = b.kj, b.tC(), o && o.msie && a.offsetX !== G && a.offsetY !== G && (d = 0, e = 0, a.target !== c.Xs && (f = n.Z3(a.target, c.Xs), d = f.EB, e = f.FB), g = a.pageX - (a.offsetX + d), h = a.pageY - (a.offsetY + e), c.Ws().canvasOffset = {
                                top: h,
                                left: g
                            }), i = c.Vs(), j = b.cG(a, a.pageX - i.left, a.pageY - i.top), la(c) || j || b.zt(), c.dG = !0, !1)
                    },
                    tC: function() {
                        var a = this;
                        a.RB || (h(l).bind("mousemove.gcSheet", function(b) {
                            a.BD(b)
                        }).bind("mouseup.gcSheet", function(b) {
                            a.CD(b)
                        }), a.RB = !0)
                    },
                    uC: function() {
                        this.RB && (this.RB = !1, h(l).unbind("mousemove.gcSheet").unbind("mouseup.gcSheet"))
                    },
                    cG: function(a, b, c) {
                        var d, f, g, h, i, k, l, m, n, o = this,
                            p = o.kj,
                            q = p.hitTest(b, c),
                            r = q.row,
                            s = q.col,
                            t = q.dragInfo,
                            w = q.formulaRangeHitInfo,
                            x = q.cellTypeHitInfo,
                            y = {
                                hitInfo: q,
                                e: a,
                                r: F
                            };
                        if (e.ao(p, "processMouseDown", y), !y.r && (d = p.am(), b >= d.x && c >= d.y)) if (p.yt = q, o.eG = !0, q.resizeInfo) {
                            if (!ma(p)) return;
                            o.fG(q)
                        } else if (q.dragMergeInfo) {
                            if (!ma(p)) return;
                            o.Zia && o.Zia(q)
                        } else if (t && t.side && t.side !== aa) {
                            if (!ma(p)) return;
                            o.gG && o.gG(q)
                        } else if (t && t.side === aa) {
                            if (!ma(p)) return;
                            o.hG && o.hG(q)
                        } else if (q.filterButtonHitInfo) ma(p);
                        else if (w) w.inBorder ? o.iG(q) : (w.inTopLeft || w.inTopRight || w.inBottomLeft || w.inBottomRight) && o.jG(q);
                        else if (p.Qs(ra(q) < 0 ? -1 : r, sa(q) < 0 ? -1 : s)) {
                            if (o.kG && o.kG(p, q)) return;
                            if (f = ua(p), g = va(p), x) {
                                if (h = p.getCellType(x.row, x.col, ta(q)), x.sheet || (x.sheet = p), o.Sia(h, x) && (i = x.sheetArea, (u(i) || 3 === i) && (r !== f || s !== g))) {
                                    p.suspendPaint();
                                    try {
                                        if (!ma(p)) return;
                                        if (k = Ea(p, p.name(), f, g, G, !0), p.Wq(v.LeaveCell, k), k && k.cancel === !0) return;
                                        l = p.ITa.getSelections(), m = p.ITa.getSpan(r, s), n = [new j(m.row, m.col, m.rowCount, m.colCount)], p.yu(l, n), p.Sr(r, s, G, G, 1), p.Wq(v.EnterCell, Ea(p, p.name(), r, s)), p.Wq(v.FormulatextboxEnterCell, Ea(p, p.name(), r, s)), p.Au(l), p.Uja = !0, o.cs && o.cs(r, s)
                                    } finally {
                                        p.resumePaint()
                                    }
                                }
                                h.processCellAndPaddingMouseDown(x)
                            }
                            if (x && x.isReservedLocation) return !0;
                            o.lG(a), o.Ala(p, q, r, s)
                        }
                    },
                    Ala: function(a, b, c, d) {
                        var e, f, g = this;
                        try {
                            if (g.mG = b, la(a) && !ma(a)) return
                        } finally {
                            g.mG = F
                        }
                        u(c) || u(d) || (3 === ta(b) && g.cs && g.cs(c, d), e = a.ITa.getSelections(), g.nG(b), f = a.ITa.getSelections(), a.yu(e, f))
                    },
                    Sia: function(a, b) {
                        return a && b && b.isReservedLocation && (!a.activeOnClick || a.activeOnClick())
                    },
                    oG: function(a) {
                        var b, c = this.kj;
                        return !c || (b = c.am(), u(a.x) || u(a.y) || u(a.width) || u(a.height) || a.x + a.width > b.pt + b.er + b.js || a.y + a.height > b.qt + b.jr + b.gs)
                    },
                    pG: function(a, b, c, d) {
                        var e, f, g, i, j, k, l, m, n = this.kj;
                        for (f = 0, g = a.options, i = g.length; f < i; f++) if (j = g[f], j.selected) {
                            e = d[f].value;
                            break
                        }
                        k = !1, n.options.isProtected && (l = n.getActualStyle(b, c), l && (k = l.locked)), u(e) || k || (m = {
                            cmd: "editCell",
                            sheetName: n.name(),
                            row: b,
                            col: c,
                            newValue: e,
                            autoFormat: !0
                        }, n.wu().execute(m)), h(a).hide()
                    },
                    qG: function() {
                        var a, b = this;
                        b.rG && (a = b.rG.sG, 3 !== a && 2 !== a || b.aG().tG(b.uG), 3 !== a && 1 !== a || b._F().tG(b.vG))
                    },
                    wG: function() {
                        var a = this;
                        a.xG && a.yG(), a.$ia && a._ia && a._ia(), a.zG && a.AG && a.AG(), a.BG && a.CG && a.CG(), a.DG && a.EG(), a.FG && a.GG(), a.HG && a.IG()
                    },
                    uG: function(a) {
                        var b, c, d, e, f, g, h, i, j = this,
                            k = j.JG();
                        k || (b = j.rG, c = j.kj, d = b.KG, e = c.getViewportTopRow(d), f = c.getViewportBottomRow(d), a ? f < pa(c) - c.frozenTrailingRowCount() - 1 ? c.mq(c._q(e)) : (g = c.Gr(d), g && g.length > 0 && (h = c.am(), i = g[g.length - 1], i.y + i.height >= h.qt + h.jr && c.mq(c._q(e)))) : e > na(c) && c.mq(c.gr(e))), j.wG()
                    },
                    vG: function(a) {
                        var b, c, d, e, f, g, h, i, j = this,
                            k = j.LG();
                        k || (b = j.kj, c = j.rG, d = c.MG, e = b.getViewportLeftColumn(d), f = b.getViewportRightColumn(d), a ? f < qa(b) - b.frozenTrailingColumnCount() - 1 ? b.rq(b.Zq(e)) : (g = b.Hr(d), g && g.length > 0 && (h = b.am(), i = g[g.length - 1], i.x + i.width >= h.pt + h.er && b.rq(b.Zq(e)))) : e > oa(b) && b.rq(b.br(e))), j.wG()
                    },
                    JG: function() {
                        var a, b, c, d, e, f, g = this.kj,
                            h = g.am(),
                            i = na(g),
                            j = g.frozenTrailingRowCount(),
                            k = this.$F,
                            l = this.rG,
                            m = l.KG;
                        if (0 === m) {
                            if (k.y > h.qt) return g.mq(g._t()), l.KG = 1, !0
                        } else if (1 === m) {
                            if (a = g.Gr(1), a && a.length > 0) {
                                if (b = a[0], i > 0 && k.y < h.qt && b.row <= g._t()) return l.KG = 0, !0;
                                if (b = a[a.length - 1], j > 0 && k.y > h.ot && b.row >= g.ir() && b.y + b.height <= h.ot) return l.KG = 2, !0
                            }
                        } else if (2 === m && (a = g.Gr(1), a && a.length > 0 && k.y < h.ot)) {
                            if (b = a[a.length - 1], b.y + b.height > h.ot) {
                                for (c = h.jr, d = pa(g) - j - 1, e = 0, f = d; f >= i; f--) if (e += g.Sl(f), e > c) {
                                    d = K(f + 1, d);
                                    break
                                }
                                g.mq(g._q(d - 1))
                            }
                            return l.KG = 1, !0
                        }
                        return !1
                    },
                    LG: function() {
                        var a, b, c, d, e, f, g = this.kj,
                            h = g.frozenTrailingColumnCount(),
                            i = oa(g),
                            j = g.am(),
                            k = this.$F,
                            l = this.rG,
                            m = l.MG;
                        if (0 === m) {
                            if (k.x > j.pt) return g.rq(g.$t()), l.MG = 1, !0
                        } else if (1 === m) {
                            if (a = g.Hr(1), a && a.length > 0) {
                                if (b = a[0], i > 0 && k.x < j.pt && b.col <= g.$t()) return l.MG = 0, !0;
                                if (b = a[a.length - 1], h > 0 && k.x > j.lt && b.col >= g.dr() && b.x + b.width <= j.lt) return l.MG = 2, !0
                            }
                        } else if (2 === m && (a = g.Hr(1), a && a.length > 0 && k.x < j.lt)) {
                            if (b = a[a.length - 1], b.x + b.width > j.lt) {
                                for (c = j.er, d = qa(g) - h - 1, e = 0, f = d; f >= i; f--) if (e += g.Tl(f), e > c) {
                                    d = K(f + 1, d);
                                    break
                                }
                                g.rq(g.Zq(d - 1))
                            }
                            return l.MG = 1, !0
                        }
                        return !1
                    },
                    NG: function() {
                        var a, b, c, d, e, f, g, h, i, j = this;
                        (j.OG || j.O3 || j.lV) && (a = j.kj, b = a.am(), c = j.rG, d = c.KG, e = c.MG, f = j.$F, g = F, d >= 0 && e >= 0 ? g = b.Ft(d, e) : d >= 0 ? g = b.fm(d) : e >= 0 && (g = b.gm(e)), g && (h = 0, i = 0, f.x <= g.x ? h = f.x - g.x : f.x >= g.x + g.width && (h = f.x - (g.x + g.width)), f.y <= g.y ? i = f.y - g.y : f.y >= g.y + g.height && (i = f.y - (g.y + g.height)), j._F().PG(j.QG(h)), j.aG().PG(j.QG(i))))
                    },
                    RG: function() {
                        this._F().SG(), this.aG().SG()
                    },
                    fG: function(a) {
                        var b, c, d, e, f, h, i = this,
                            j = g.prototype,
                            k = i.kj,
                            l = a.resizeInfo;
                        l.action === ca || l.action === ba ? (b = Ga(i, k.Jt, i.TG, j.findRow, a.row, l, !0), l.startY = b.y) : (c = Ga(i, k.Kt, i.UG, j.findCol, a.col, l, !1), l.startX = c.x), d = k.parent, e = a.x, f = a.y, d && (h = d.options.showResizeTip, (1 !== h || l.action !== da && l.action !== ea) && (2 !== h || l.action !== ca && l.action !== ba) && 3 !== h || (f - ia < 0 ? f += ia / 2 : f -= ia, d.uw(i.VG(), e, f))), i.isResizing = !0, i.OG = !0
                    },
                    WG: function() {
                        var a, b, c, d, e = this,
                            f = e.kj,
                            g = f.yt,
                            h = g.resizeInfo,
                            i = e.$F,
                            j = i.x,
                            k = i.y,
                            l = f.am();
                        h && e.OG && e.isResizing && (g.x === j && g.y === k || (h.action === ca || h.action === ba ? Ha(h, k, l, !0) : Ha(h, j, l, !1), a = f.yl, b = a.bm(), a.Mx(l.x, l.y, l.width, l.height), a.Pw(b), c = f.parent, c && (d = c.options.showResizeTip, (1 !== d || h.action !== da && h.action !== ea) && (2 !== d || h.action !== ca && h.action !== ba) && 3 !== d || c.ww(e.XG(h)))))
                    },
                    YG: function() {
                        var a, b, c, d, e, f, g, i, j, k, l = this;
                        l.isResizing = !1, l.OG = !1, a = !0, b = l.kj, c = b.yt, d = c.resizeInfo, d && (l.xw(), d.action === ca || d.action === ba ? u(d.movingY) ? a = !1 : (e = J(0, (d.movingY - d.startY) / b.zoom()), f = [], b.tp(d.index) ? h.each(b.ITa.getSelections(), function(a, c) {
                            if (c.col === -1) {
                                var d = b.Tq(c);
                                f.push({
                                    firstRow: d.row,
                                    lastRow: d.row + Ca(d) - 1
                                })
                            }
                        }) : f.push({
                            firstRow: d.index,
                            lastRow: d.index
                        }), g = 1 === d.sheetArea, b.wu().execute({
                            cmd: "resizeRow",
                            sheetName: b.name(),
                            rows: f,
                            size: e,
                            columnHeader: g
                        })) : u(d.movingX) ? a = !1 : (e = J(0, (d.movingX - d.startX) / b.zoom()), i = [], b.sp(d.index) ? h.each(b.ITa.getSelections(), function(a, c) {
                            if (c.row === -1) {
                                var d = b.Tq(c);
                                i.push({
                                    firstCol: d.col,
                                    lastCol: d.col + Ba(d) - 1
                                })
                            }
                        }) : i.push({
                            firstCol: d.index,
                            lastCol: d.index
                        }), j = 2 === d.sheetArea, b.wu().execute({
                            cmd: "resizeColumn",
                            sheetName: b.name(),
                            columns: i,
                            size: e,
                            rowHeader: j
                        })), k = b.hitTest(l.$F.x, l.$F.y), k && l.Tw(k), a || b.repaint())
                    },
                    ZG: function(a, b) {
                        var c, d, e, f, g, h, i, j, k = 0,
                            l = 0,
                            m = 0,
                            n = 0,
                            o = this,
                            p = o.kj,
                            q = p.wq,
                            r = na(p),
                            s = oa(p);
                        if (o.o4 = o.$G = p.ITa.getSelections(), o.ctrl || o.shift || p.Tr(), 0 === ta(a)) {
                            if (!o.shift && (c = r ? p.ar() : p.lq, f = s ? p.$q() : p.qq, g = Fa(o, c, f, 1, 1, b))) return;
                            o.ctrl || p.Tr(), p.Ur(-1, -1, pa(p), qa(p), !0)
                        } else if (1 === ta(a)) {
                            if (!o.shift && (c = r ? p.ar() : p.lq, d = o._G(c, a.col, !1), g = Fa(o, d.row, d.col, 1, sa(a), b))) return;
                            o.shift ? (k = K(p.Kl, a.col), n = L(p.Kl - a.col) + 1, p.Kx(-1, k, pa(p), n, !0)) : p.Ur(-1, p.Kl, pa(p), 1, !0)
                        } else if (2 === ta(a)) {
                            if (!o.shift) {
                                if (h = s ? p.$q() : p.qq, d = o._G(a.row, h, !0), e = p.Jl !== d.row, g = Fa(o, d.row, d.col, ra(a), 1, b)) return;
                                e && q && q.Lx()
                            }
                            o.shift ? (l = K(p.Jl, a.row), m = L(p.Jl - a.row) + 1, p.Kx(l, -1, m, qa(p), !0)) : p.Ur(p.Jl, -1, 1, qa(p), !0)
                        } else if (3 === ta(a)) if (H(a.row) || H(a.col)) la(p) && (j = p.getCellRect(p.Jl, p.Kl, p.Nr, p.Pr), p.yl.VF(j.x, j.y, j.width, j.height));
                        else {
                            if (!o.shift && (p.Jl !== a.row || p.Kl !== a.col)) {
                                if (e = p.Jl !== a.row, g = Fa(o, a.row, a.col, ra(a), sa(a), b)) return;
                                e && q && q.Lx()
                            }
                            o.shift ? p.aH(a.row, a.col, !0) : (i = p.ITa.getSpan(a.row, a.col), p.Ur(i.row, i.col, Ca(i), Ba(i), !0))
                        }
                    },
                    bH: function(a) {
                        if (a && (3 !== ta(a) || !H(a.row) && !H(a.col))) {
                            var b = this;
                            b.OG = !0, b.xG = !0, b.rG = {
                                KG: ra(a),
                                MG: sa(a),
                                sG: ta(a)
                            }, b.qG()
                        }
                    },
                    nG: function(a) {
                        this.ZG(a), this.bH(a)
                    },
                    yG: function() {
                        var a, b = this;
                        b.rG && b.OG && b.DA !== !0 && (a = b.rG.sG, 3 === a ? b.cH() : 2 === a ? b.dH() : 1 === a && b.eH())
                    },
                    cH: function() {
                        var a, b, c, d, e = this,
                            f = e.kj,
                            g = e.fH(),
                            h = e.gH();
                        if (g >= 0 && h >= 0 && f.Qs(g, h)) {
                            if (a = f.ITa.getSelections(), 1 === a.length && (b = f.Jx(g, h, f.Jl, f.Kl), c = a[0], b.equals(c))) return;
                            f.aH(g, h, !0), d = f.ITa.getSelections(), f.yu(a, d), e.NG()
                        }
                    },
                    dH: function() {
                        var a, b, c, d, e, f, g, h, i = this,
                            j = i.kj,
                            k = i.fH();
                        if (k >= 0 && j.Qs(k, -1)) {
                            if (a = K(j.Jl, k), b = J(j.Jl, k) - a + 1, c = -1, d = qa(j), e = j.selectionPolicy(), 0 === e) return;
                            f = j.selectionUnit(), 2 === f && (a = -1, b = -1), g = j.ITa.getSelections(), j.Kx(a, c, b, d, !0), h = j.ITa.getSelections(), j.yu(g, h)
                        }
                        i.NG()
                    },
                    eH: function() {
                        var a, b, c, d, e, f, g, h, i = this,
                            j = i.kj,
                            k = i.gH();
                        if (k >= 0 && j.Qs(-1, k)) {
                            if (a = K(j.Kl, k), b = J(j.Kl, k) - a + 1, c = -1, d = pa(j), e = j.selectionPolicy(), 0 === e) return;
                            f = j.selectionUnit(), 1 === f && (a = -1, b = -1), g = j.ITa.getSelections(), j.Kx(c, a, d, b, !0), h = j.ITa.getSelections(), j.yu(g, h)
                        }
                        i.NG()
                    },
                    hH: function() {
                        var a, b, c, d = this;
                        d.rG = F, d.RG(), d.DA = F, d.OG = !1, d.xG = !1, a = d.kj, a.ITa.getSelections().length < 0 || (a.Uja ? delete a.Uja : (b = !d.$G, b || (c = a.ITa.getSelections(), b = d.zu(d.$G, c)), b && a.Au(d.o4)), d.$G = a.ITa.getSelections())
                    },
                    iH: function() {
                        var a = this.kj,
                            b = Ia(a, this.$F.y),
                            c = this.rG.KG,
                            d = a.Gr(1);
                        return 0 === b && c > 0 && d.length > 0 && d[0].row > a._t() ? b = 1 : 2 === b && c < 2 && d.length > 0 && d[d.length - 1].row < a.ir() && (b = 1), b
                    },
                    jH: function() {
                        var a = this.kj,
                            b = Ja(a, this.$F.x),
                            c = this.rG.MG,
                            d = a.Hr(1);
                        return 0 === b && c > 0 && d.length > 0 && d[0].col > a.$t() ? b = 1 : 2 === b && c < 2 && d.length > 0 && d[d.length - 1].col < a.dr() && (b = 1), b
                    },
                    fH: function() {
                        var a, b, c = this.kj,
                            d = this.$F.y,
                            e = this.iH(),
                            f = Ka(c, e, d);
                        return f ? (a = c.am(), b = f.row, 1 === e && d < a.qt && b > c._t() ? c._q(b - 1) || b : 1 === e && d > a.ot && b > c.hr() ? c.gr(b) || b : b) : -1
                    },
                    gH: function() {
                        var a, b, c = this.kj,
                            d = this.$F.x,
                            e = this.jH(),
                            f = La(c, e, d);
                        return f ? (a = c.am(), b = f.col, 1 === e && d < a.pt && b > c.$t() ? c.Zq(b - 1) || b : 1 === e && d > a.lt && b > c.cr() ? c.br(b) || b : b) : -1
                    },
                    QG: function(a) {
                        var b, c = 0;
                        return H(a) || 0 === a || (b = a < 0, c = M(500 / L(a)), c = J(20, 10 * c), c > 200 && (c = 200), b && (c = -c)), c
                    },
                    TG: function(a, b) {
                        var c = this.kj,
                            d = c.gr(a, b);
                        return d !== F ? d : a
                    },
                    UG: function(a, b) {
                        var c = this.kj,
                            d = c.br(a, b);
                        return d !== F ? d : a
                    },
                    kH: function(a, b, c) {
                        for (var d = this.kj; a > b;) if (a--, d.getRowVisible(a, c)) return a;
                        return a
                    },
                    lH: function(a, b, c) {
                        for (var d = this.kj; a > b;) if (a--, d.getColumnVisible(a, c)) return a;
                        return a
                    },
                    mH: function(a, b, c, d, e) {
                        var g, h, i, j, k, l, m, n = F;
                        return Ma(a) ? (g = this, h = a.Gr(ra(b), d), !h || H(b.row) || H(b.col) || (a.getRowVisible(b.row, d) || (b.row = this.TG(b.row, d)), i = h.findRow(b.row), i && (i.y + i.height - c <= e && e <= i.y + i.height + c ? (n = Da(ca, b.row, d), j = h[h.length - 1].row, j >= 0 && (k = a.ir(d), n.index === k && n.index !== j && i.y + i.height - c / 2 <= e && (n = Da(g.nH(a, j, d), j, d)))) : i.y - c <= e && e <= i.y + c && f.k.Cb(h, i) > 0 && (l = g.kH(b.row, 0, d), n = Da(g.nH(a, l, d), l, d))), !n && 1 === ra(b) && h.length > 0 && (i = h[0], J(0, i.y - c) <= e && e <= i.y + c && (m = Oa(a, b.row, !0), m >= 0 && (n = Da(g.nH(a, m, d), m, d))))), n && !a.getRowResizable(n.index, d) && (n = F), n) : n
                    },
                    nH: function(a, b, c) {
                        var d = a.parent;
                        return d && 1 === d.options.resizeZeroIndicator && a.getRowVisible(b) && 0 === a.Yr(b, c) ? ba : ca
                    },
                    oH: function(a, b, c, d, e) {
                        var g, h, i, j, k, l, m, n = F;
                        return Na(a) ? (g = this, h = a.Hr(sa(b), d), !h || H(b.col) || H(b.row) || (a.getColumnVisible(b.col, d) || (b.col = this.UG(b.col, d)), i = h.findCol(b.col), i && (i.x + i.width - c <= e && e <= i.x + i.width + c ? (n = Da(da, b.col, d), j = h[h.length - 1].col, j >= 0 && (k = a.dr(d), n.index === k && n.index !== j && i.x + i.width - c / 2 <= e && (n = Da(g.pH(a, j, d), j, d)))) : i.x - c <= e && e <= i.x + c && f.k.Cb(h, i) > 0 && (l = g.lH(b.col, 0, d), n = Da(g.pH(a, l, d), l, d))), !n && 1 === sa(b) && h.length > 0 && (i = h[0], J(0, i.x - c) <= e && e <= i.x + c && (m = Oa(a, b.col, !1), m >= 0 && (n = Da(g.pH(a, m, d), m, d))))), n && !a.getColumnResizable(n.index, d) && (n = F), n) : n
                    },
                    pH: function(a, b, c) {
                        var d = a.parent;
                        return d && 1 === d.options.resizeZeroIndicator && a.getColumnVisible(b) && 0 === a.$r(b, c) ? ea : da
                    },
                    ur: function(a, b, c, d) {
                        var e, f, g, h, i, j = this,
                            k = j.kj,
                            l = k.parent,
                            m = k.options,
                            n = m.colHeaderVisible,
                            o = m.rowHeaderVisible,
                            p = F;
                        return l && !l.options.allowUserResize || (g = k.am(), ra(a) < 0 && sa(a) >= 0 && n ? (p = j.oH(k, a, d, 1, b), p || (p = j.mH(k, a, d, 1, c))) : ra(a) >= 0 && sa(a) < 0 && o ? (p = j.mH(k, a, d, 2, c), p || (p = j.oH(k, a, d, 2, b))) : ra(a) < 0 && sa(a) < 0 ? k.ir(2) === F && L(c - g.Cr) <= d ? (h = k.Gr(1), h && h.length > 0 && (e = h[h.length - 1].row, e >= 0 && k.getRowResizable(e, 2) && (p = Da(j.nH(k, e, 2), e, 2)))) : k.dr(1) === F && L(b - g.Br) <= d && (i = k.Hr(1), i && i.length > 0 && (f = i[i.length - 1].col, f >= 0 && k.getColumnResizable(f, 1) && (p = Da(j.pH(k, f, 1), f, 1)))) : ra(a) >= 0 && sa(a) >= 0 && (e = pa(k, 1) - 1, f = qa(k, 2) - 1, e >= 0 && 0 === g.Cr && c <= d && n ? p = Da(j.nH(k, e, 1), e, 1) : f >= 0 && 0 === g.Br && b <= d && o && (p = Da(j.pH(k, f, 2), f, 2)))), p
                    },
                    qH: function(a, b, c, d) {
                        var e, f, g, h, i = this.kj,
                            j = i.am(),
                            k = j.Ft(1, 1);
                        if (1 === b) if (e = i.Hr(b), e && e.length > 0) {
                            if (f = e[e.length - 1], f.x + f.width <= c && c < k.x + k.width) return !0
                        } else if (k.contains(c, d)) return !0;
                        if (1 === a) if (g = i.Gr(a), g && g.length > 0) {
                            if (h = g[g.length - 1], h.y + h.height <= d && d < k.y + k.height) return !0
                        } else if (k.contains(c, d)) return !0;
                        return !1
                    },
                    BD: function(a) {
                        var b = this.Vs();
                        this.sH(a, a.pageX - b.left, a.pageY - b.top)
                    },
                    DD: function() {
                        var a, b, c, d = this.kj,
                            e = d.yt;
                        e && (a = e.cellTypeHitInfo, a && (b = d.getCellType(a.row, a.col, ta(e)), b.processMouseLeave(a))), this.OG || (c = {
                            x: -1e4,
                            y: -1e4,
                            rowViewportIndex: F,
                            colViewportIndex: F,
                            row: -1,
                            col: -1,
                            resizeInfo: F,
                            hitTestType: F
                        }, this.Uw(c))
                    },
                    sH: function(a, b, c) {
                        var d, e, f = this;
                        return f.$F = {
                            e: a,
                            x: b,
                            y: c
                        }, d = f.kj, f.eG && !w.Wl(d) && w.Zl(d), f.eG && f.OG ? void(f.isResizing ? f.WG() : f.$ia ? f._ia && f._ia() : f.zG ? f.AG && f.AG() : f.BG ? f.CG && f.CG() : f.DG ? f.EG() : f.FG ? f.GG() : f.HG ? f.IG() : f.xG && f.yG()) : (e = d.hitTest(b, c), void(e && (f.Tw(e), f.Uw(e))))
                    },
                    Tw: function(a) {
                        var b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r = this,
                            s = r.kj,
                            t = s.Ws();
                        t && (b = s.yt, c = !b || a.row !== b.row || a.col !== b.col || ta(a) !== ta(b) || a.resizeInfo && !b.resizeInfo || !a.resizeInfo && b.resizeInfo || a.resizeInfo && a.resizeInfo.action !== b.resizeInfo.action || a.dragInfo && !b.dragInfo || !a.dragInfo && b.dragInfo || a.dragInfo && a.dragInfo.action !== b.dragInfo.action, b && c && (d = b.cellTypeHitInfo, d && (e = s.getCellType(d.row, d.col, ta(b)), e.processMouseLeave(d))), f = a.resizeInfo, g = a.dragMergeInfo, h = a.dragInfo, j = a.formulaRangeHitInfo, k = a.cellTypeHitInfo, l = s.yl, f ? (m = i.CursorResource, f.action === da ? t.style.cursor = m.ResizeCol : f.action === ca ? t.style.cursor = m.ResizeRow : f.action === ea ? t.style.cursor = m.ResizeHiddenCol : f.action === ba ? t.style.cursor = m.ResizeHiddenRow : t.style.cursor = fa) : g ? g.left || g.right ? t.style.cursor = "w-resize" : (g.top || g.bottom) && (t.style.cursor = "n-resize") : h && "drag" === h.action ? h.side === aa ? t.style.cursor = "crosshair" : h.side ? t.style.cursor = "move" : t.style.cursor = fa : j ? (j.inBorder ? t.style.cursor = "move" : j.inTopLeft ? t.style.cursor = "nw-resize" : j.inTopRight ? t.style.cursor = "ne-resize" : j.inBottomLeft ? t.style.cursor = "sw-resize" : j.inBottomRight && (t.style.cursor = "se-resize"), n = r.isFormulaRangeHoving, o = r.tH, p = o && o.paramRange, q = j.paramRange, r.isFormulaRangeHoving = !0, r.tH = {
                            paramRange: q
                        }, n && q.index === p.index || l.uH()) : (k && (e = s.getCellType(k.row, k.col, ta(a)), k.sheet = s, c && e.processMouseEnter(k), e.processMouseMove(k)), !c && k && k.isReservedLocation || (t.style.cursor = fa), r.isFormulaRangeHoving && (r.isFormulaRangeHoving = !1, r.tH = F, l.uH())))
                    },
                    CD: function(a) {
                        var b, c = this,
                            d = c.kj;
                        return c.uC(), b = d.Vs(), !d.dG || (d.dG = !1, c.vH(a, a.pageX - b.left, a.pageY - b.top), !1)
                    },
                    vH: function(a) {
                        var b, c, d, e = this,
                            f = e.kj,
                            g = w.Xl();
                        e.eG = !1, g && g !== f && g.endEdit && (g.Cw && g.Cw.V4 || (g.endEdit(), g.repaint())), w.Zl(f), e.isResizing ? e.YG() : e.$ia ? e.aja && e.aja() : e.zG ? e.wH && e.wH() : e.BG ? e.xH && e.xH() : e.DG ? e.yH() : e.FG ? e.zH() : e.HG ? e.AH() : f.yt && (b = f.yt, c = b.cellTypeHitInfo, !b.filterButtonHitInfo && !b.resizeInfo && b.row >= 0 && b.col >= 0 && (c && (d = f.getCellType(c.row, c.col, ta(b)), c.sheet || (c.sheet = f), d.processMouseUp(c)), c && c.isReservedLocation || f.Wq(v.CellClick, Ea(f, f.name(), b.row, b.col, ta(b))))), e.hH(), e.lG(a)
                    },
                    UF: function(a) {
                        var b, c, d = this.kj;
                        d.isEditing && (b = d.Ws(), c = d.Vs(), ya(a) || xa(a) || d.FF(b, a.pageX - c.left, a.pageY - c.top))
                    },
                    nm: function(a) {
                        var b, c, d, e, f, g, h, i, j, k = this,
                            l = k.kj;
                        if (l) {
                            if (b = ua(l), c = va(l), d = l.getCellType(b, c), e = {
                                    isEditing: la(l),
                                    sheet: l,
                                    row: b,
                                    col: c,
                                    sheetArea: 3
                                }, f = {
                                    sheet: l,
                                    row: b,
                                    col: c,
                                    sheetArea: 3
                                }, d && d.isReservedKey(a, e)) return void(la(l) || d.processKeyDown(a, f));
                            if (g = l.Cw, g && g.BH(a)) return;
                            if (h = l.parent && l.parent.CF, h && h.BH(a, e)) return
                        }
                        if (i = !(la(l) || xa(a) || Aa(a) || 34 !== wa(a) && 33 !== wa(a) && 37 !== wa(a) && 39 !== wa(a) && 9 !== wa(a) && 13 !== wa(a) && 38 !== wa(a) && 40 !== wa(a)), l.CH && (l.CH = !1, l.yl.DH()), j = k.EH(a), i && j && w.Wl(l)) {
                            if (k.Uoa = new Date, k.FH) return k.GH < 25 && k.GH++, void q(a);
                            k.FH = !0, k.GH = 1, k.HH(a, !0)
                        }
                    },
                    VG: function() {
                        var a, b, c, d, e = this.kj,
                            f = e.yt,
                            g = f.resizeInfo;
                        return g.action === ca || g.action === ba ? (a = e.Jt(g.sheetArea), e.getRowVisible(g.index) || (g.index = this.TG(g.index, g.sheetArea)), b = a.findRow(g.index), b || (b = a.findRow(f.row)), s(ha().Tip_Height, [b.height.toFixed(0)])) : (c = e.Kt(g.sheetArea), e.getColumnVisible(g.index) || (g.index = this.UG(g.index, g.sheetArea)), d = c.findCol(g.index), d || (d = c.findCol(f.col)), s(ha().Tip_Width, [d.width.toFixed(0)]))
                    },
                    XG: function(a) {
                        return a.action === ca || a.action === ba ? s(ha().Tip_Height, [(a.movingY - a.startY).toFixed(0)]) : s(ha().Tip_Width, [(a.movingX - a.startX).toFixed(0)])
                    },
                    HH: function(a, b) {
                        var c = this;
                        if (c.FH) {
                            if (new Date - c.Uoa > 100) return void c.Ux();
                            b || c.EH(a), c.FH && (c.WF = setTimeout(function() {
                                c.HH(a)
                            }, 500 / c.GH))
                        }
                    },
                    IH: function(a, b) {
                        var c, d, e = this.kj,
                            f = e.Ws();
                        if (f) {
                            e.HF = !0;
                            try {
                                c = la(e), e.EF && e.EF(f, e.Jl, e.Kl, F, F, !0, F, b), !c && la(e) && (d = e.getCellType(e.Jl, e.Kl), !d.tw || 32 !== wa(a) || xa(a) || ya(a) || za(a) || d.tw(e, e.Jl, e.Kl, 3), d.JH && d.JH(a))
                            } finally {
                                e.HF = !1
                            }
                        }
                    },
                    EH: function(a) {
                        var b, c, d, f, g, i, j, l, m, n, o, p = this,
                            r = p.kj;
                        if (p.lG(a), la(r) || 27 !== wa(a) || za(a) || xa(a) || ya(a) || !r.KH || (h(r.KH).remove(), r.KH = F), la(r) || 34 !== wa(a) && 33 !== wa(a) && 35 !== wa(a) && 36 !== wa(a) && 38 !== wa(a) && 40 !== wa(a) || q(a), la(r) || 37 !== wa(a) && 39 !== wa(a) || q(a), la(r) && xa(a) && (89 === wa(a) || 90 === wa(a))) return q(a), !1;
                        if (b = r.wu(), c = b.getShortcutKey(wa(a), xa(a), ya(a), za(a), Aa(a)), d = b.getCommands(c)) for (f = 0; f < d.length; f++) if (g = d[f].execute(r.parent, {
                                sheetName: r.name()
                            })) return g.ignoreCancelDefault || q(a), !0;
                        return i = {
                            e: a,
                            r: F
                        }, e.ao(r, "processKeyDown", i), !! i.r || (p.LH(a) && (j = r.Cw, j && j.MH && j.NH(), l = la(r), m = 229 === wa(a) || 0 === wa(a), l || m || (n = k.Yl.Bm(a.target), o = n && "gcAttachedFormulaTextBox" === n.getAttribute(_), o || p.IH(a))), !1)
                    },
                    Ux: function() {
                        var a = this;
                        a.FH = !1, a.WF > 0 && (clearTimeout(a.WF), a.WF = 0)
                    },
                    om: function(a) {
                        var b, c, d, e, f, g, h, i, j = this;
                        if (j.Ux(), b = j.kj) {
                            if (c = ua(b), d = va(b), e = b.getCellType(c, d), f = {
                                    isEditing: la(b),
                                    sheet: b,
                                    row: c,
                                    col: d,
                                    sheetArea: 3
                                }, g = {
                                    sheet: b,
                                    row: c,
                                    col: d,
                                    sheetArea: 3
                                }, e && e.isReservedKey(a, f)) return void(la(b) || e.processKeyUp(a, g));
                            if (h = b.Cw, h && h.BH(a)) return;
                            if (i = b.parent && b.parent.CF, i && i.BH(a)) return
                        }
                        j.lG(a)
                    },
                    pm: function(a) {
                        this.IH(a, !0)
                    },
                    LH: function(a) {
                        return !(xa(a) || za(a) || Aa(a)) && (wa(a) >= 65 && wa(a) <= 90 || wa(a) >= 48 && wa(a) <= 57 || wa(a) >= 96 && wa(a) <= 105 || wa(a) >= 186 && wa(a) <= 192 || wa(a) >= 220 && wa(a) <= 222 || 219 === wa(a) || wa(a) >= 106 && wa(a) <= 111 || 32 === wa(a) || 61 === wa(a) || 173 === wa(a) || 229 === wa(a) || 0 === wa(a) || 8 === wa(a))
                    },
                    lG: function(a) {
                        var b, c, d, e, f, g = this,
                            h = g.kj,
                            i = n.sl(),
                            j = i ? Aa(a) : xa(a);
                        g.ctrl = j && !ya(a), g.shift = ya(a) && !j, h.Hx = !1, 9 === wa(a) && (b = h.ITa.getSelections().length, b > 1 ? h.Hx = !0 : (c = h.Ix(), c && b > 0 && (h.Hx = !(h.Jl === c.row && h.Kl === c.col && h.Lr >= Ca(c) && h.Mr >= Ba(c))))), g.zG === !0 && (d = h.Ix(), e = g.OH, f = g.PH, d.row === -1 || d.col === -1 ? g.OH = ya(a) : g.OH = !1, g.PH = j, e === g.OH && f === g.PH || h.yl.QH && h.yl.QH()), g.RH = j
                    },
                    Vx: function() {
                        var a = this;
                        a.shift = !1, a.ctrl = !1, a.kj.Hx = !1, a.zG = !1, a.OH = !1, a.PH = !1, a.RH = !1
                    },
                    Qw: function(a) {
                        var b, c, d, e, f, g, i, j, k, l, m, n;
                        a && a.sheet ? (b = a.sheet, c = a.editor, d = a.canvasOffset) : (b = this.kj, c = b.BF), la(b) && (e = b.Jl, f = b.Kl, g = b.getCellType(e, f), i = b.am(), j = b.getActualStyle(e, f), k = b.getCellRect(e, f), c && c.parentNode && (l = c.parentNode.parentNode, k && k.width > 0 && k.height > 0 && k.x >= i.kt && k.y >= i.nt && k.x + k.width <= i.lt + i.js && k.y + k.height <= i.ot + i.gs ? (m = {
                            sheet: b,
                            row: e,
                            col: f,
                            sheetArea: 3,
                            canvasOffset: d
                        }, g.g5(l, j, k, m, !0)) : h(l).css({
                            top: -1e4,
                            left: -1e4
                        })), n = b.Cw, n && n.SH())
                    },
                    TH: function(a, b) {
                        var c, d;
                        if (!a) return F;
                        for (c = a.firstChild; c;) {
                            if (c.id === b || c.name === b) return c;
                            if (d = this.TH(c, b)) return d;
                            c = c.nextSibling
                        }
                        return F
                    },
                    zu: function(a, b) {
                        var c, d, e, f = !0;
                        if (a.length === b.length) for (c = 0; c < a.length; c++) {
                            if (d = a[c], e = b[c], d.row !== e.row || d.col !== e.col || Ca(d) !== Ca(e) || Ba(d) !== Ba(e)) {
                                f = !0;
                                break
                            }
                            f = !1
                        }
                        return f
                    },
                    UH: function(a, b, c, d) {
                        var e, f, g, i, j, k = this,
                            l = k.kj,
                            m = {
                                sheet: l,
                                row: b,
                                col: c,
                                sheetArea: 3
                            },
                            n = l.zo(),
                            p = a.isImeAware(m),
                            q = ga ? P : "fixed";
                        return d && k.VH(), p && !k.GF && (e = a.a5(m), k.WH || (k.WH = {
                            overflow: Y,
                            border: Z,
                            position: P
                        }), k.WH.overflow = e.style.overflow, k.WH.border = e.style.border, k.WH.position = e.style.position, h(e).css(O, q).css(R, X).css(S, "0px").css(T, "0px").css(U, "0px").css(V, "0px").css(Q, Z), l.KF && e.firstChild && (f = e.firstChild.firstChild, l.KF(a, f, b, c, l.getActualStyle(b, c)), g = a.getEditorValue(f, m), o.safari && ("" === g || u(g)) && a.setEditorValue(f, " ", m)), n && n.insertBefore(e, F), k.GF = e), k.XH || (e = r("div"), h(e).css(O, q).css(R, X).css(S, "0px").css(T, "0px").css(U, "0px").css(V, "0px"), k.XH = e, i = r("textarea"), h(i).attr(_, "gcSheetFocusInput").attr($, -1).css(O, P).css(R, X).css(Q, Z).css(W, Z), i.value = " ", e.insertBefore(i, F), k.YH = i, j = r("div"), h(j).css(O, P).css(R, X).attr(_, "gcSheetFocusInput").attr($, -1), e.insertBefore(j, F), k.ZH = j, n && n.insertBefore(e, F)), ga && (k.GF && k.$H(l, k.GF), k.$H(l, k.XH)), p ? k.GF : k.YH
                    },
                    JF: function() {
                        var a = this;
                        a.GF && a.WH && h(a.GF).css(R, a.WH.overflow).css(Q, a.WH.border).css(O, a.WH.position)
                    },
                    VH: function() {
                        var a = this;
                        a.GF && (a.GF.parentElement && a.GF.parentElement.removeChild(a.GF), a.GF = F)
                    },
                    zt: function(a) {
                        w.Wl(this.kj) || this._H(!0, !0, a)
                    },
                    Cm: function() {
                        var a = this.ZH;
                        a && a.focus()
                    },
                    Qq: function() {
                        this._H(!0, !0)
                    },
                    aI: function() {
                        this.bI && (clearTimeout(this.bI), this.bI = F)
                    },
                    _H: function(a, b, c) {
                        var d, e, f, g, h, i, j, k, m, n, q;
                        0 === arguments.length && (a = !0), d = this, d.Gma || (d.XF = !1, d.aI(), e = d.kj, f = ua(e), g = va(e), h = e.getCellType(f, g), d.UH(h, f, g, b), i = {
                            sheet: e,
                            row: f,
                            col: g,
                            sheetArea: 3
                        }, j = h.isImeAware(i) && d.GF.firstChild ? d.GF.firstChild.firstChild : d.YH, k = j, b && !o.msie && h.setImeMode(k, e.getActualStyle(f, g).imeMode, i), l.body.focus(), m = function() {
                            var a = function() {
                                try {
                                    h.isImeAware(i) ? (h.focus(k, i), h.selectAll(k, i)) : (j.focus(), j.select())
                                } catch (a) {}
                            };
                            b && o.msie && h.setImeMode(k, e.getActualStyle(f, g).imeMode, i), a()
                        }, n = p, !e.CH && !n.ipad || !a && h.isImeAware(i) ? e._enhanceIme === !1 || c || m() : !la(e) && (o.metroMode || n.ipad || n.iphone || n.android) ? b && (q = d.GF && d.GF.firstChild && d.GF.firstChild.firstChild, h.setImeMode(q, e.getActualStyle(f, g).imeMode, i)) : d.bI = setTimeout(function() {
                            d.aI(), la(e) || e._enhanceIme === !1 || c || m()
                        }, 200), w.Wl(e) || w.Zl(e), d.cs && d.cs(e.Jl, e.Kl))
                    },
                    $H: function(a, b) {
                        var c, d, e, f, g, i, j, l = ua(a),
                            m = va(a),
                            n = a.Nr,
                            o = a.Pr,
                            p = a.getCellRect(l, m, n, o),
                            q = this,
                            r = a.Vs(),
                            s = q.bG(),
                            t = q.GF,
                            u = 0,
                            v = 0,
                            w = 0,
                            x = 0;
                        t && (e = h(t), u = parseInt(e.css(S), 10), v = parseInt(e.css(T), 10), w = parseInt(e.css(V), 10), x = parseInt(e.css(U), 10)), q.oG(p) ? (c = u, d = v) : (c = p.y + s.top - 2, d = p.x + s.left - 2), f = k.pageYOffset - r.top + s.top, g = k.innerHeight + f - w, i = k.pageXOffset - r.left + s.left, j = k.innerWidth + i - x, (H(c) || c < f || c > g) && (c = f), (H(d) || d < i || d > j) && (d = i), h(b).css(S, c).css(T, d)
                    },
                    cI: function(a) {
                        var b, c, d, e, f = this;
                        f.aI(), la(f.kj) || f.XF && l.activeElement === f.ZH || (b = f.kj, a ? (c = a.row, d = a.col) : (c = b.Jl, d = b.Kl), e = b.getCellType(c, d), f.UH(e, c, d, !1), f.ZH.focus(), f.XF = !0)
                    },
                    dI: function(a, b) {
                        var c = this;
                        c.XF && (c.XF = !1, !b && c._H(a))
                    },
                    gx: function(a) {
                        var b = this.kj,
                            c = b.tu();
                        c && (c.ska(a), c.M4(), this.Gma = !0, a && c.N4())
                    },
                    hx: function() {
                        var a = this,
                            b = a.kj.tu();
                        b && b.ska(""), a.Gma = !1, a._H(!0, !1)
                    },
                    MF: function() {
                        var a, b = this;
                        b.aI(), a = b.GF, a && (h(a).remove(), b.GF = G), a = b.XH, a && (h(a).remove(), b.YH = G, b.XH = F, b.ZH = F)
                    },
                    uw: function(a, b, c, d) {
                        var e = this.kj.parent;
                        e && e.uw(a, b, c, d)
                    },
                    ww: function(a, b, c, d) {
                        var e = this.kj.parent;
                        e && e.ww(a, b, c, d)
                    },
                    xw: function() {
                        var a = this.kj.parent;
                        a && a.xw()
                    },
                    Uw: function(a) {
                        var b, c, d, e = this,
                            f = e.kj,
                            g = !1,
                            h = f.yt;
                        h || (g = !0), g || a || (g = !0);

                        function i(a, b) {
                            var c = !1;
                            return a || b ? a && b && (c = a.action === b.action && a.index === b.index && a.sheetArea === b.sheetArea) : c = !0, c
                        }
                        g || (g = a.col !== h.col || a.row !== h.row || sa(a) !== sa(h) || ra(a) !== ra(h) || ta(a) !== ta(h) || !i(a.resizeInfo, h.resizeInfo)), f.yt = a, g && (f.fI = !0, b = f.yl, c = ka(f, h, b), d = ka(f, a, b), c = c || d, f.fI = !1, c && b.im())
                    },
                    _G: function(a, b, c) {
                        var d = this.gI(a, b, c);
                        return this.hI(d)
                    },
                    gI: function(a, b, c) {
                        var d = this.kj.ITa.getSpan(a, b),
                            e = Ca(d),
                            f = Ba(d);
                        return 1 === e && 1 === f ? d : c && 1 === e || !c && 1 === f ? d : (c ? b++ : a++, this.gI(a, b, c))
                    },
                    hI: function(a) {
                        var b, c, d, e = this.kj,
                            f = a.row,
                            g = pa(e);
                        for (b = f; b < g && e.getRowVisible(b) !== !0; b++);
                        for (b < g && (f = b), c = a.col, d = qa(e), b = c; b < d && e.getColumnVisible(b) !== !0; b++);
                        return b < d && (c = b), t(f, c, Ca(a), Ba(a))
                    }
                }, a
            }(), d.iI = b;

            function Pa(a) {
                var b = this;
                b.qo = a, b.jI = F, b.kI = F, b.lI = F, b.Fi = F, b.mI = !1, b.nI = !1
            }
            Pa.prototype = {
                tG: function(a) {
                    typeof a === N && (this.kI = a)
                },
                PG: function(a) {
                    var b, c = this;
                    H(a) || 0 === a ? c.SG() : (c.nI = a > 0, a = L(a), b = c.jI, c.jI = a, b !== a && c.oI())
                },
                oI: function() {
                    var a = this;
                    a.$b(), H(a.jI) || (a.lI = setInterval(function() {
                        a.pI()
                    }, a.jI))
                },
                pI: function() {
                    var a = this,
                        b = a.kI;
                    a.mI = !0, typeof b === N && (a.Fi = b.call(a.qo, a.nI))
                },
                SG: function() {
                    var a = this;
                    a.$b(), a.jI = F, a.lI = F, a.Fi = F, a.mI = !1
                },
                $b: function() {
                    var a = this.lI;
                    a && clearInterval(a)
                },
                no: function() {
                    this.SG()
                }
            }, a.exports = d
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a = c(26),
                b = c(58).Worksheet,
                d = c(53).Style,
                e = c(43),
                f = c(50),
                g = c(44).GC$,
                h = c(52).To,
                i = a.CultureManager,
                j = e.kf,
                k = b._n,
                l = e.Ul.Ol,
                m = g.each,
                n = g.isEmptyObject,
                o = a.D,
                p = a.j.Fa,
                q = "theme",
                r = "string",
                s = parseInt,
                t = isNaN,
                u = void 0;

            function v(a, c, d) {
                var e, f, g = a.ITa,
                    h = g.XTa(),
                    i = g.XTa(1),
                    j = g.YTa(!0),
                    k = g.YTa(!0, 1),
                    l = g.zl(),
                    m = g.zl(1),
                    n = h.getColumnCount();
                for (e = 0; e < c; e++) for (h.setNode(e, -1, i.RTa(e, -1)), j.Kp(e, k.Jp(e)), f = d; f < n; f++) h.setNode(e, f, i.RTa(e, f));
                m.getSpans().forEach(function(a) {
                    l.add(a)
                }), a.frozenRowCount(c), g.dWa(b.Vp, n, 1), g.fWa(!1, 1), g.eWa(1)
            }
            function w(a, c, d) {
                var e, f, g = a.ITa,
                    h = g.XTa(),
                    i = g.XTa(2),
                    j = g.YTa(!1),
                    k = g.YTa(!1, 2),
                    l = g.zl(),
                    m = g.zl(2),
                    n = h.getRowCount();
                for (e = 0; e < c; e++) for (h.setNode(-1, e, i.RTa(-1, e)), j.Kp(e, k.Jp(e)), f = d; f < n; f++) h.setNode(f, e, i.RTa(f, e));
                m.getSpans().forEach(function(a) {
                    l.add(a)
                }), a.frozenColumnCount(c), g.dWa(n, b.Tp, 2), g.fWa(!1, 2), g.eWa(2)
            }
            function x(a, b, c) {
                var d, e, f, g = a.ITa,
                    h = g.XTa(),
                    i = g.XTa(1),
                    k = g.YTa(!1),
                    l = g.YTa(!1, 1),
                    m = g.zl(),
                    n = g.zl(1),
                    o = h.getColumnCount();
                for (i.setRowCount(b), d = 0; d < b; d++) for (i.setNode(d, -1, h.RTa(d, -1)), l.Kp(d, k.Jp(d)), e = c; e < o; e++) i.setNode(d, e, h.RTa(d, e));
                f = m.getSpans(j(0, 0, b, o)), f.forEach(function(a) {
                    n.add(a)
                }), a.frozenRowCount(0)
            }
            function y(a, b, c) {
                var d, e, f, g = a.ITa,
                    h = g.XTa(),
                    i = g.XTa(2),
                    k = g.YTa(!1),
                    l = g.YTa(!1, 2),
                    m = g.zl(),
                    n = g.zl(2),
                    o = h.getRowCount();
                for (i.setColumnCount(b), d = 0; d < b; d++) for (i.setNode(-1, d, h.RTa(-1, d)), l.Kp(d, k.Jp(d)), e = c; e < o; e++) i.setNode(e, d, h.RTa(e, d));
                f = m.getSpans(j(0, 0, o, b)), f.forEach(function(a) {
                    n.add(a)
                }), a.frozenColumnCount(0)
            }
            function z(a, b) {
                switch (a) {
                    case "frozenRowCount":
                    case "frozenColCount":
                    case "frozenTrailingRowCount":
                    case "frozenTrailingColCount":
                    case "activeRow":
                    case "activeCol":
                        return 0 === b;
                    case "rowCount":
                        return 200 === b;
                    case "columnCount":
                        return 20 === b;
                    case "zoomFactor":
                    case "rowHeaderColCount":
                    case "colHeaderRowCount":
                        return 1 === b;
                    case "visible":
                        return b === !0
                }
                return !1
            }
            function A(a, b) {
                return l(a) ? a : b
            }
            function B(a, b, c) {
                l(c) && b.call(a, c, !1)
            }
            g.extend(b.prototype, {
                qI: function(a, b, c, d) {
                    var e, f;
                    a[b] || (a[b] = {}), e = a[b], e[c] || (e[c] = {}), f = e[c], f.value = d
                },
                toJSON: function(a) {
                    var c, d, f, g, i, j, l, r, s, t, u, x, y, A, B, C, D, E = this,
                        F = E.getRowCount(1),
                        G = E.getColumnCount(2),
                        H = a && a.rowHeadersAsFrozenColumns,
                        I = a && a.columnHeadersAsFrozenRows,
                        J = a && a.ignoreStyle;
                    H && G > 0 && E.addColumns(0, G), I && F > 0 && E.addRows(0, F), H && G > 0 && w(E, G, F), I && F > 0 && v(E, F, G), c = E.getRowCount(), d = E.getColumnCount(), f = E.getRowCount(1), g = E.getColumnCount(2), i = {
                        name: E.name(),
                        rowCount: c,
                        columnCount: d,
                        activeRow: E.Jl,
                        activeCol: E.Kl,
                        zoomFactor: E.zoom(),
                        rowHeaderColCount: g,
                        colHeaderRowCount: f,
                        visible: E.visible()
                    }, J || (i.frozenRowCount = E.frozenRowCount(), i.frozenColCount = E.frozenColumnCount(), i.frozenTrailingRowCount = E.frozenTrailingRowCount(), i.frozenTrailingColCount = E.frozenTrailingColumnCount(), i[q] = E.Pm.toJSON()), j = E.ITa, l = j.toJSON(a);
                    for (r in l) i[r] = l[r];
                    k && m(k, function(b, c) {
                        c.toJson && c.toJson.call(E, i, a)
                    }), s = {};
                    for (t in i) o(i, t) && (u = i[t], p(u) || z(t, u) || (s[t] = u));
                    if (m(E.options, function(a, c) {
                            var d, f, g, h = c;
                            "gridline" === a && (h = {}, d = c.color, f = c.showHorizontalGridline, g = c.showVerticalGridline, d && d !== e.Im.Lm("gc-gridlineColor").borderTopColor && (h.color = d), f === !1 && (h.showHorizontalGridline = f), g === !1 && (h.showVerticalGridline = g)), "_ps" === a || p(h) || b.Qp[a] === h || "object" == typeof h && n(h) || (s[a] = h)
                        }), x = [], y = E.Lq, y) {
                        for (A in y) o(y, A) && (B = y[A], B && (C = B.toJSON(), D = B.font, n(C) || (D && (C.font = h.Jo(D)), x.push(C))));
                        x.length > 0 && (s.namedStyles = x)
                    }
                    return s
                },
                fromJSON: function(a, c, e, g, h) {
                    var j, n, p, v, w, z, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, aa, ba, ca, da;
                    if (e && (j = e.noSchema, n = e.version), a) {
                        p = this, v = g && g.ignoreStyle, p.T3(), b.ao(p, "preFromJson"), p.suspendPaint(), w = i.culture(), i.culture(""), z = A(a.rowCount, b.Rp), C = A(a.columnCount, b.Sp);
                        try {
                            if (p.cq(a.name + "", !0), p.setRowCount(z), p.setColumnCount(C), p.Lq = {}, D = a.namedStyles) for (E = 0; E < D.length; E++) F = D[E], G = new d, G.fromJSON(F, j), p.Kq(G);
                            H = p.options;
                            for (I in H) if (o(H, I) && (J = a[I], "protectionOptions" === I ? J = J || a.protectionOption : "allowCellOverflow" === I && (J = l(a[I]) ? a[I] : !n || n >= 11), l(J))) if ("object" == typeof J) for (K in J) o(J, K) && (p.options[I][K] = J[K]);
                            else p.options[I] = J;
                            if (L = A(a.activeRow, p.Jl), M = A(a.activeCol, p.Kl), p.Kr(L, M, u, u, !0), v || (B(p, p.frozenRowCount, a.frozenRowCount), B(p, p.frozenColumnCount, a.frozenColCount), B(p, p.frozenTrailingRowCount, a.frozenTrailingRowCount), B(p, p.frozenTrailingColumnCount, a.frozenTrailingColCount)), !v) {
                                if (N = a.colStyles) for (O in N) t(O) || p.setStyle(-1, s(O, 10), N[O], 3);
                                if (P = a.rowStyles) for (Q in P) t(Q) || p.setStyle(s(Q, 10), -1, P[Q], 3)
                            }
                            R = A(a.rowHeaderColCount, b.Tp), S = A(a.colHeaderRowCount, b.Vp), p.setColumnCount(R, 2), p.setRowCount(S, 1), p.XSa(A(a._zoomFactor || a.zoomFactor, p.zoom())), B(p, p.visible, a.visible), T = p.uja, U = {
                                sheet: p,
                                setValidator: function(a, b, c) {
                                    T && T.vja(a, b, c)
                                },
                                ignoreStyle: v
                            }, V = p.ITa, V.fromJSON(a, j, U), p.defaults = V.defaults, T && T.QV(!0), W = a[q], W && !v && (X = W, typeof X !== r && l(X) && (Y = "_themeColor", Z = "_name", $ = X.themeColor || X[Y], _ = new f.ColorScheme($.name || $[Z]), _.fromJSON($, j), X = new f.Theme(X.name || X.Cj, _, X.headingFont || X.Vaa, X.bodyFont || X.Waa)), p.currentTheme(X)), k && m(k, function(b, d) {
                                var e = d.fromJson;
                                e && e.call(p, a, j, g, !l(c) || c)
                            }), aa = g && g.frozenColumnsAsRowHeaders, ba = g && g.frozenRowsAsColumnHeaders, ca = ba ? a.frozenRowCount : 0, da = aa ? a.frozenColCount : 0, ba && ca > 0 && x(p, ca, da), aa && da > 0 && y(p, da, ca), h || (ca > 0 && p.deleteRows(0, ca), da > 0 && p.deleteColumns(0, da)), p.clearPendingChanges()
                        } finally {
                            i.culture(w), p.resumePaint()
                        }
                    }
                }
            })
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p = c(26).k,
                q = c(58).Worksheet,
                r = c(43),
                s = c(52),
                t = c(57),
                u = c(72),
                v = function() {
                    return c(55)
                },
                w = c(42),
                x = c(26),
                y = w.Bn,
                z = r.Ul,
                A = r.En,
                B = r.mn,
                C = r.Vn,
                D = r.Vl,
                E = r.Rect,
                F = z.ol,
                G = z.fp,
                H = r.Ul.lZa,
                I = r.Events,
                J = r.Rm,
                K = r.kf,
                L = x.j.Fa,
                M = r.Im,
                N = s.Ho,
                O = s.To.No,
                P = t.op,
                Q = t.np,
                R = u.AF,
                S = null,
                T = Math.min,
                U = Math.max,
                V = Math.abs,
                W = Math.floor,
                X = Math.ceil,
                Y = parseInt,
                Z = "black",
                $ = "transparent",
                _ = "rowHeader",
                aa = "columnHeader";

            function ba(a) {
                return a.height
            }
            function ca(a) {
                return a.width
            }
            q.$n("render", {
                init: function() {
                    var a = this;
                    a.yl = new fa(a), a.at = new la(a)
                },
                dispose: function(a) {
                    var b, c = this;
                    a !== !1 && (c.yl = S, b = c.at, b && (b.no(), c.at = S))
                },
                onLayoutChanged: function(a) {
                    var b, c = this,
                        d = c.at;
                    d && (b = a.changeType, "addRows" === b ? d.rI() : "deleteRows" === b ? d.sI() : "addColumns" === b ? d.tI() : "deleteColumns" === b && d.uI())
                }
            }), b = "white";

            function da(a) {
                var b = a.parent;
                return D.Wl(a) || b && !b.options.hideSelection
            }
            function ea(a) {
                var c = a.parent;
                return c && c.options.backColor || b
            }
            function fa(a) {
                this.ad(a)
            }
            fa.prototype = {
                constructor: fa,
                ad: function(a) {
                    this.kj = a
                },
                bm: function() {
                    var a = this.kj,
                        b = S,
                        c = a.Ws();
                    return c && c.getContext && (b = c.getContext("2d")), b
                },
                vI: function() {
                    var a, b = this,
                        c = b.kj,
                        d = c.Dr(),
                        e = c.Xs,
                        f = ca(e),
                        g = ba(e),
                        h = b.wI;
                    return h && ca(h) === f && ba(h) === g || (h && A.Qn(c, h), b.wI = h = r.Ul.Nl("canvas"), h.getContext && (b.xI = h.getContext("2d"), A.Kn(h, S, c), A.Pn(h, ca(d), ba(d)))), a = b.xI, a && (a.beginPath(), H(a, b.Cl(b.Bl())), a.name = "bufferContext"), a
                },
                Bl: function() {
                    return this.yI || (this.yI = N + " " + this.kj.currentTheme().bodyFont()), this.yI
                },
                us: function() {
                    this.yI = S
                },
                zI: function(a) {
                    var b, c = this.kj,
                        d = c.parent,
                        e = d ? d.options.grayAreaBackColor || M.Mm("gc-grayArea").backgroundColor : "gray",
                        f = J.Om(c, e);
                    return a ? (b = d ? d.options.backgroundImage : S, b && (f = $), f) : f
                },
                Cl: function(a) {
                    var b = this.kj,
                        c = b.zoom();
                    return 1 === c ? a : O(a, c).font
                },
                Mx: function(a, b, c, d, e) {
                    var f, g, h, i, j, k = this,
                        l = k.wI,
                        m = k.bm();
                    c <= 0 || d <= 0 || !l || !m || (e || (e = k.kj.Dr()), f = A.Ln(l), g = A.Mn(l), 1 !== f && (a *= f, b *= g, c *= f, d *= g, e = new E(e.x * f, e.y * g, ca(e) * f, ba(e) * g)), h = e.getIntersect(a, b, c, d), h && (h.round(), a = h.x, b = h.y, c = ca(h), d = ba(h), i = ca(l), i && a + c > i && (a = i - c, a < 0 && (c += a, a = 0)), j = ba(l), j && b + d > j && (b = j - d, b < 0 && (d += b, b = 0)), y.Cn(m, 1, 1), m.clearRect(a, b, c, d), m.drawImage(l, a, b, c, d, a, b, c, d), y.Cn(m, f, g)))
                },
                dm: function(a, b) {
                    a && this.Mx(a.x, a.y, ca(a), ba(a), b)
                },
                Ow: function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v;
                    if (c > 0 && d > 0) try {
                        g = this, h = g.kj, i = g.bm(), j = h.Ws(), k = g.vI(), l = g.wI, m = c, n = d, o = e, p = f, q = m, r = n, s = A.Ln(j), t = A.Mn(j), a = W(a * s), b = W(b * t), c = X(c * s), d = X(d * t), o = W(o * s), p = W(p * t), q = X(q * s), r = X(r * t), u = ca(l), v = ba(l), u && a + c > u && (a = u - c, a < 0 && (c += a, a = 0)), v && b + d > v && (b = v - d, b < 0 && (d += b, b = 0)), u && o + q > u && (o = u - q, o < 0 && (q += o, o = 0)), v && p + r > v && (p = v - r, p < 0 && (r += p, p = 0)), y.Cn(i, 1, 1), y.Cn(k, 1, 1), i.clearRect(o, p, q, r), i.drawImage(l, a, b, c, d, o, p, q, r), k.clearRect(o, p, q, r), k.drawImage(j, o, p, q, r, o, p, q, r), y.Cn(i, s, t), y.Cn(k, s, t)
                    } catch (a) {}
                },
                im: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w = this;
                    if (c || (c = w.bm()), e = !1, f = w.kj, g = K(-1, -1, -1, -1), h = f.Hx, i = f.ITa, a && (g = f.options.allowCellOverflow ? K(a.row, 0, a.rowCount, f.getColumnCount()) : K(a.row, a.col, a.rowCount, a.colCount), !h)) {
                        if (g.col >= 0) {
                            for (k = g.col, l = g.col + g.colCount - 1, m = f.getRowCount(1), n = 0; n < m; n++) j = i.findSpan(n, g.col, 1), j && (k = T(j.col, k)), j = i.findSpan(n, g.col + g.colCount - 1, 1), j && (l = U(j.col + j.colCount - 1, l));
                            g.col = k, g.colCount = l - k + 1
                        }
                        if (g.row >= 0) {
                            for (o = g.row, p = g.row + g.rowCount - 1, q = f.getColumnCount(2), r = 0; r < q; r++) j = i.findSpan(g.row, r, 2), j && (o = T(j.row, o)), j = i.findSpan(g.row + g.rowCount - 1, r, 2), j && (p = U(j.row + j.rowCount - 1, p));
                            g.row = o, g.rowCount = p - o + 1
                        }
                    }
                    if (s = f.cm(g), t = ca(s), u = ba(s), t >= 0 || u >= 0) {
                        if (s.x -= 9, s.y -= 9, s.width += 18, s.height += 30, b && (s = s.getIntersectRect(b), !s)) return;
                        v = f.am(), u > 0 && !h && (f.$l = !0, w.jp(c, new E(v.x, U(v.nt, s.y), v.Br, ba(s)), d)), t > 0 && !h && (f.$l = !0, w.jp(c, new E(U(v.kt, s.x), v.y, ca(s), v.Cr), d)), g.row !== -1 || g.col !== -1 || h || (f.$l = !0, w.jp(c, v.em(), d)), t > 0 && u > 0 && w.jp(c, s), e = !0
                    }
                    return e
                },
                VF: function(a, b, c, d, e) {
                    var f, g = this,
                        h = g.kj;
                    h.Xq <= 0 && (f = g.bm(), f && (e || (h.$l = !0), g.jp(f, new E(a, b, c, d))))
                },
                repaint: function(a) {
                    var b, c = this,
                        d = c.kj;
                    d.Xq > 0 || (b = c.bm(), b && (d.$l = !0, c.jp(b, a)))
                },
                jp: function(a, b, c) {
                    var d = this;
                    a && d.kj.Xq <= 0 && (c || d._l(a, b), d.Pw(a, b))
                },
                _l: function(a, b, c) {
                    var d, e, f, g = this,
                        h = g.kj;
                    a && h.Xq <= 0 && (d = g.vI(), e = d ? d : a, f = h.Dr(), b || (b = f), b && b.round(), c && c.round(), h.$l && (h.$l = !1, d && (d.clearRect(b.x, b.y, ca(b), ba(b)), c && d.clearRect(c.x, c.y, ca(c), ba(c)), y.Dn(d, -f.x, -f.y)), g.AI(e, b), c && g.AI(e, c), d && y.Dn(d, f.x, f.y)), d && (g.dm(b), c && g.dm(c)))
                },
                Pw: function(a, b) {
                    var c, d, e, f, g, h = this,
                        i = h.kj,
                        j = i.CH;
                    if (a && !(i.Xq > 0) && (b && b.round(), c = i.am(), !i.fI)) {
                        if (j) {
                            for (d = c.em(), h.dm(d), f = 0; f <= 2; f++) d = c.fm(f), d && 0 !== ca(d) && 0 !== ba(d) && h.dm(d);
                            for (g = 0; g <= 2; g++) d = c.gm(g), d && 0 !== ca(d) && 0 !== ba(d) && h.dm(d)
                        }
                        for (f = 0; f <= 2; f++) for (g = 0; g <= 2; g++) d = c.Ft(f, g), d && 0 !== ca(d) && 0 !== ba(d) && (e = b, (j && (1 !== f || 1 !== g) || i.parent && i.parent.options.allowUserDragMerge) && (h.dm(d), e = d), e && !d.intersectRect(e) || h.BI(a, f, g, e));
                        h.CI(a), q.ao(i, "paintAdornment", {
                            ctx: a,
                            clipRect: b
                        })
                    }
                },
                dD: function(a, b) {
                    var c = this.kj,
                        d = c.parent,
                        e = d ? d.options : {},
                        f = ea(c),
                        g = J.Om(c, f),
                        h = e.backgroundImage;
                    h && (g = $), a.save(), a.fillStyle = g, a.fillRect(b.x, b.y, ca(b), ba(b)), a.restore()
                },
                DI: function(a, b, c, d, e) {
                    var f, g, h, i, j, k, l, m = this,
                        n = m.kj,
                        o = n.options.colHeaderVisible,
                        p = n.options.rowHeaderVisible,
                        q = n.am();
                    for (g = 0; g <= 2; g++) i = q.gm(g), i && (h = b ? i.getIntersectRect(b) : i, h && (c && d && o && (h.y -= e, h.height += e, p || (h.x -= e, h.width += e)), m.EI(a, g, h, c)));
                    for (f = 0; f <= 2; f++) for (j = q.fm(f), j && (h = b ? j.getIntersectRect(b) : j, h && (c && d && p && (h.x -= e, h.width += e, o || (h.y -= e, h.height += e)), m.FI(a, f, h, c))), g = 0; g <= 2; g++) k = q.Ft(f, g), k && (h = b ? k.getIntersectRect(b) : k, h && (c && d && !o && (h.y -= e, h.height += e), c && d && !p && (h.x -= e, h.width += e), m.GI(a, f, g, h, c)));
                    l = q.em(), l && (h = b ? l.getIntersectRect(b) : l, h && m.HI(a, h, c))
                },
                II: function(a) {
                    var b, c, d, e, f, g = this,
                        h = g.kj,
                        i = h.am(),
                        j = i.zr,
                        k = i.Ar,
                        l = i.lt,
                        m = i.ot,
                        n = ca(i),
                        o = ba(i),
                        p = i.qt,
                        q = i.pt,
                        r = h.Gr(1);
                    r.length > 0 ? (b = r[r.length - 1], c = b.y + ba(b), c < m && (a.fillStyle = g.zI(!1), a.fillRect(j, c, n, m - c))) : 0 === r.length && (a.fillStyle = g.zI(!1), a.fillRect(j, p, n, m - p)), d = h.Hr(1), d.length > 0 ? (e = d[d.length - 1], f = e.x + ca(e), f < l && (a.fillStyle = g.zI(!1), a.fillRect(f, k, l - f, o))) : 0 === d.length && (a.fillStyle = g.zI(!1), a.fillRect(q, k, l - q, o))
                },
                JI: function(a, b) {
                    var c = this,
                        d = c.kj,
                        e = d.options,
                        f = e.borderWidth;
                    f > 0 && (a.strokeStyle = e.borderColor, a.lineWidth = f, a.strokeRect(b.x + f / 2, b.y + f / 2, U(0, ca(b) - f), U(0, ba(b) - f)))
                },
                AI: function(a, b) {
                    var c, d = this,
                        e = d.kj;
                    !a || e.Xq > 0 || (B.qn(e, 0, 0, e.getRowCount() - 1, e.getColumnCount() - 1), c = e.Dr(), a.save(), b ? a.rect(b.x, b.y, ca(b), ba(b)) : a.rect(c.x, c.y, ca(c), ba(c)), a.clip(), a.beginPath(), d.dD(a, c), q.ao(e, "paint", {
                        ctx: a,
                        clipRect: b
                    }), d.DI(a, b, !1), d.II(a), d.KI(a), d.JI(a, c), B.Nm(), a.beginPath(), a.restore())
                },
                LI: function(a, b, c, d) {
                    var e, f, g = this,
                        h = g.kj;
                    a && (B.qn(h, 0, 0, h.getRowCount() - 1, h.getColumnCount() - 1), e = h.Dr(), a.save(), c && a.translate(d, d), f = b || new E(e.x, e.y, ca(e), ba(e)), c && (f.x -= d, f.y -= d, f.width += d, f.height += d), a.rect(f.x, f.y, ca(f), ba(f)), a.clip(), a.beginPath(), g.dD(a, e), g.DI(a, f, !0, c, d), B.Nm(), c && a.translate(-d, -d), a.beginPath(), a.restore())
                },
                CI: function(a) {
                    var b, c, d, e, f, g, h, i, j, k = this.kj,
                        l = k.mm,
                        m = k.yt;
                    if (l && l.isResizing && m && (h = m.resizeInfo)) {
                        if (i = k.am(), j = Z, a.save(), a.strokeStyle !== j && (a.strokeStyle = j), 1 !== a.lineWidth && (a.lineWidth = 1), a.beginPath(), "sizeRow" === h.action || "sizeHiddenRow" === h.action) for (c = U(0, h.startY - .5), e = h.movingY - .5, f = i.x + ca(i), b = i.x; b < f; b += 2) a.moveTo(b, c), a.lineTo(b + 1, c), a.moveTo(b, e), a.lineTo(b + 1, e);
                        else for (b = U(0, h.startX - .5), d = h.movingX - .5, g = i.y + ba(i), c = i.y; c < g; c += 2) a.moveTo(b, c), a.lineTo(b, c + 1), a.moveTo(d, c), a.lineTo(d, c + 1);
                        a.stroke(), a.beginPath(), a.restore()
                    }
                },
                HI: function(a, b, c) {
                    var d, e, f, g, h, i, j, k = this.kj;
                    a.beginPath(), d = k.am().em(), e = d.x, f = d.y, g = ca(d), h = ba(d), i = k.getActualStyle(-1, -1, 0), this.SI(a, [{
                        data: S,
                        row: -1,
                        col: -1,
                        x: e,
                        y: f,
                        width: g,
                        height: h,
                        style: i.clone()
                    }], 0, c), j = new R(k, 0, 0, 0), j.jF(0, 0, e, f, g, h), j.paint(a, b)
                },
                KI: function(a) {
                    var b, c, d, e, f, g, h, i, j, k = this.kj,
                        l = k.frozenRowCount(),
                        m = k.frozenColumnCount(),
                        n = k.frozenTrailingRowCount(),
                        o = k.frozenTrailingColumnCount();
                    (l || m || n || o) && (b = k.am(), c = b.pt, d = b.qt, e = b.lt, f = b.ot, g = b.x, h = b.y, i = ca(b), j = ba(b), a.save(), a.strokeStyle = J.Om(k, k.options.frozenlineColor), a.lineWidth = 1, a.beginPath(), m && (a.moveTo(c - .5, h), a.lineTo(c - .5, h + j)), l && (a.moveTo(g, d - .5), a.lineTo(g + i, d - .5)), o && (a.moveTo(e - .5, h), a.lineTo(e - .5, h + j)), n && (a.moveTo(g, f - .5), a.lineTo(g + i, f - .5)), a.stroke(), a.restore())
                },
                EI: function(a, b, c, d) {
                    this.TI(a, -1, b, 1, c, d)
                },
                FI: function(a, b, c, d) {
                    this.TI(a, b, -1, 2, c, d)
                },
                GI: function(a, b, c, d, e) {
                    this.TI(a, b, c, 3, d, e);
                    var f = this.kj.at;
                    f && f.UI(a, d, b, c)
                },
                BI: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A = this,
                        B = A.kj;
                    if (da(B)) {
                        if (!B.addSelection) return;
                        if (e = B.mm, f = B.ITa.getSelections(), g = f.length, d = A.VI(b, c, d), !d) return;
                        if (h = M.Lm("gc-selection"), i = Y(h.zIndex), i > 2007 && A.WI(a, b, c, d), j = A.XI(b, c, f, d), k = j.length, k <= 0) return;
                        for (m = !1, n = 0; n < k; n++) if (l = j[n], !d.containsRect(l)) {
                            m = !0;
                            break
                        }
                        if (a.save(), m && (a.rect(d.x, d.y, ca(d), ba(d)), a.clip()), a.beginPath(), k > 0) for (o = J.Om(B, B.getSelectionBackColor()), a.fillStyle !== o && (a.fillStyle = o), p = 0, q = 0, i > 2007 && (p = 1, q = -3), n = 0; n < k; n++) l = j[n], a.fillRect(l.x + p, l.y + p, ca(l) + q, ba(l) + q);
                        r = B.getCellRect(B.Jl, B.Kl, b, c), r && r.intersectRect(d) && (s = r.x, t = r.y, u = ca(r), v = ba(r), p = 1, q = -2, i > 2007 && (p = 0, q = 0), A.Mx(s + p, t + p, u + q, v + q), g > 1 && (a.strokeStyle = Z, a.lineWidth = 1, a.strokeRect(s + 1.5, t + 1.5, u - 4, v - 4))), a.restore(), a.save(), m && (A.YI(d, B, b, c, i), a.rect(d.x, d.y, ca(d), ba(d)), a.clip()), a.beginPath(), 1 === g && (e && e.BG && e.ZI && e.ZI() && !e.$I && (w = e._I && e._I(), x = B.getRangeRect(b, c, w), y = ca(x), z = ba(x), x && y > 0 && z > 0 && (a.fillStyle = h && h.color, a.fillRect(x.x, x.y, y, z))), l && ca(l) >= 0 && ba(l) >= 0 && A.aJ(a, b, c, l, d)), a.beginPath(), a.restore()
                    }
                },
                YI: function(a, b, c, d, e) {
                    var f, g, h, i, j, k, l, m, n, o, p, q = b.frozenTrailingRowCount(),
                        r = b.frozenTrailingColumnCount(),
                        s = b.getSelections(),
                        t = b.am(),
                        u = b.getRowCount() - q - 1,
                        v = b.getColumnCount() - r - 1,
                        w = b.Hr(1, 3),
                        x = b.Gr(1, 3);
                    1 === s.length && e > 2007 && (f = b.frozenRowCount(), g = b.frozenColumnCount(), h = s[0], i = h.row, j = h.col, k = h.rowCount, l = h.colCount, f > 0 && (i >= f && b.gr(i) < f ? (a.y -= 2, a.height += 2) : i + k <= f && b._q(i + k - 1) === b.lq && (a.height += 2)), g > 0 && (j >= g && b.br(j) < g ? (a.x -= 2, a.width += 2) : j + l <= g && b.Zq(j + l - 1) === b.qq && (a.width += 2)), 0 === i && 0 === j && (a.x -= 2, a.y -= 2, a.width += 2, a.height += 2), i === -1 && (i = 0, k = b.getRowCount()), j === -1 && (j = 0, l = b.getColumnCount()), m = !1, n = !1, o = x.findRow(u), p = w.findCol(v), o && o.y + ba(o) < t.qt + t.jr && (m = !0), p && p.x + ca(p) < t.pt + t.er && (n = !0), m && i + k - 1 === u && (a.height += 2), n && j + l - 1 === v && (a.width += 2))
                },
                WI: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F = this,
                        G = F.kj,
                        H = G.ITa.getSelections(),
                        I = G.am(),
                        J = I.kt,
                        K = I.nt,
                        L = H.length;
                    if (!(L <= 0)) {
                        if (e = H[0], f = e.row, g = e.rowCount, h = e.col, i = e.colCount, f === -1 && (f = 0), h === -1 && (h = 0), g === -1 && (g = G.getRowCount()), i === -1 && (i = G.getColumnCount()), a.save(), a.beginPath(), a.lineWidth = 2, a.strokeStyle = G.getSelectionBorderColor(), j = d.x, k = d.y, l = ca(d), m = ba(d), n = G.frozenRowCount(), 1 !== L || 0 !== n || G.lq <= f || G.lq >= f + g) for (o = F.bJ(c), p = 0, q = o.length; p < q; p++) r = o[p], s = 0, t = 0, u = r.x, v = r.x + ca(r), r.x < j + l && j < r.x + ca(r) && (1 === L && (0 === n && G.lq === f || n > 0 && 0 === f) && (s = -1, t = 1), r.x < j && (s = 0, u = j), r.x + ca(r) > j + l && (t = 0, v = j + l), a.moveTo(u + s - 1, K - 1), a.lineTo(v + t, K - 1), a.stroke());
                        if (w = G.frozenColumnCount(), 1 !== L || 0 !== w || G.qq <= h || G.qq >= h + i) for (x = F.cJ(b), y = 0, z = x.length; y < z; y++) A = x[y], B = 0, C = 0, D = A.y, E = A.y + ba(A), A.y < k + m && k < A.y + ba(A) && (1 === L && (0 === w && G.qq === h || w > 0 && 0 === h) && (B = -1, C = 1), A.y < k && (B = 0, D = k), A.y + ba(A) > k + m && (C = 0, E = k + m), a.moveTo(J - 1, D + B - 1), a.lineTo(J - 1, E + C), a.stroke());
                        a.beginPath(), a.restore()
                    }
                },
                bJ: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m = this.kj,
                        n = m.ITa.getSelections(),
                        o = n.length,
                        p = m.Hr(a),
                        q = [];
                    for (b = 0; b < o; b++) c = n[b], c && (d = c.col, d === -1 ? (e = m.Hr(0, 3), f = m.Hr(1, 3), g = m.Hr(2, 3), h = -1, i = -1, e.length > 0 && (h = e[0].x, i = e[e.length - 1].x + e[e.length - 1].width - h, q.push(new E(h, (-1), i, (-1)))), f.length > 0 && (h = f[0].x, i = f[f.length - 1].x + f[f.length - 1].width - h, q.push(new E(h, (-1), i, (-1)))), g.length > 0 && (h = g[0].x, i = g[g.length - 1].x + g[g.length - 1].width - h, q.push(new E(h, (-1), i, (-1))))) : p && (j = p.findCol(d), k = p.findCol(d + c.colCount - 1), (j || k) && (l = new E((-1), (-1), (-1), (-1)), j ? l.x = j.x : l.x = p[0].x, k ? l.width = k.x + ca(k) - l.x : l.width = p[p.length - 1].x + p[p.length - 1].width - l.x, q.push(l))));
                    return q
                },
                cJ: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m = this.kj,
                        n = m.ITa.getSelections(),
                        o = n.length,
                        p = m.Gr(a),
                        q = [];
                    for (b = 0; b < o; b++) c = n[b], c && (d = c.row, d === -1 ? (e = m.Gr(0, 3), f = m.Gr(1, 3), g = m.Gr(2, 3), h = -1, i = -1, e.length > 0 && (h = e[0].y, i = e[e.length - 1].y + e[e.length - 1].height - h, q.push(new E((-1), h, (-1), i))), f.length > 0 && (h = f[0].y, i = f[f.length - 1].y + f[f.length - 1].height - h, q.push(new E((-1), h, (-1), i))), g.length > 0 && (h = g[0].y, i = g[g.length - 1].y + g[g.length - 1].height - h, q.push(new E((-1), h, (-1), i)))) : p && (j = p.findRow(d), k = p.findRow(d + c.rowCount - 1), (j || k) && (l = new E((-1), (-1), (-1), (-1)), j ? l.y = j.y : l.y = p[0].y, k ? l.height = k.y + ba(k) - l.y : l.height = p[p.length - 1].y + p[p.length - 1].height - l.y, q.push(l))));
                    return q
                },
                aJ: function(a, b, c, d, e) {
                    var f, g, h = this,
                        i = h.kj,
                        j = i.parent,
                        k = i.mm,
                        l = d.x,
                        m = d.y,
                        n = ca(d),
                        o = ba(d);
                    n >= 0 && o >= 0 && (!e || d.intersect(e.x - 1, e.y - 1, ca(e) + 2, ba(e) + 2)) && (a.save(), e && !e.containsRect(d) && (a.rect(e.x, e.y, ca(e), ba(e)), a.clip()), a.beginPath(), a.strokeStyle = J.Om(i, i.getSelectionBorderColor()), a.lineWidth = 2, n > 0 && o > 0 ? (k && k.BG ? (f = k.dJ, 2 === f ? (a.moveTo(l + .5, m - .5), a.lineTo(l + n - 1, m - .5)) : 3 === f ? (a.moveTo(l + .5, m + o - .5), a.lineTo(l + n - 1, m + o - .5)) : 0 === f ? (a.moveTo(l - .5, m + .5), a.lineTo(l - .5, m + o - 1)) : 1 === f && (a.moveTo(l + n - .5, m + .5), a.lineTo(l + n - .5, m + o - 1))) : (g = j && j.Vv, g > 2007 ? a.rect(l - 1, m - 1, n + 1, o + 1) : a.rect(l - .5, m - .5, n, o)), a.stroke(), j && j.options.allowUserDragFill && h.eJ && h.eJ(a, b, c, d, e)) : 0 !== n && 0 !== o || a.strokeRect(l - 1, m - 1, n + 1, o + 1), a.beginPath(), a.restore())
                },
                VI: function(a, b, c) {
                    var d, e, f, g, h = this.kj,
                        i = h.am(),
                        j = i.Ft(a, b);
                    return 1 === b && (d = h.Hr(b), e = d.length > 0 ? d[d.length - 1] : S, e && (j.width = T(ca(j), e.x + ca(e) - i.pt))), 1 === a && (f = h.Gr(a), g = f.length > 0 ? f[f.length - 1] : S, g && (j.height = T(ba(j), g.y + ba(g) - i.qt))), c = c ? c.getIntersect(j.x, j.y, ca(j), ba(j)) : j
                },
                XI: function(a, b, c, d) {
                    var e, f, g, h, i = this.kj,
                        j = i.ITa,
                        k = c.length,
                        l = [];
                    for (h = 0; h < k; h++) f = c[h], f && (e = j.findSpan(f.row, f.col), e && e.containsRange(f) && (f = e), g = i.getRangeRect(a, b, f), g && g.x <= d.x + ca(d) && g.y <= d.y + ba(d) && d.x <= g.x + ca(g) && d.y <= g.y + ba(g) && l.push(g));
                    return l
                },
                fJ: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m, n;
                    if (a.save(), d = b.x, e = b.y, f = ca(b), g = ba(b), h = [6, 6], a.setLineDash) a.beginPath(), a.lineWidth = 2, a.strokeStyle = c, a.setLineDash(h), a.rect(d, e, f - 1, g - 1), a.stroke();
                    else {
                        for (a.beginPath(), a.lineWidth = 2, a.strokeStyle = c, i = h[0], j = h[1], k = d, l = e, m = f; m > 0;) if (m >= i + j) a.moveTo(k, l), a.lineTo(k + i, l), k = k + i + j, m = m - i - j;
                        else {
                            if (m >= i) {
                                a.moveTo(k, l), a.lineTo(k + i, l), m = m - i - j;
                                break
                            }
                            if (m > 0) {
                                a.moveTo(k, l), a.lineTo(k + m, l), m = m - i - j;
                                break
                            }
                        }
                        for (k = d + f - 1, l = e + 1, n = g - 1, m < 0 && (m = V(m), m > j && (a.moveTo(k, l - 2), a.lineTo(k, l + (m - j))), l += m, n -= m); n > 0;) n >= i + j ? (a.moveTo(k, l), a.lineTo(k, l + i), l = l + i + j, n = n - i - j) : n >= i ? (a.moveTo(k, l), a.lineTo(k, l + i), n = n - i - j) : n > 0 && (a.moveTo(k, l), a.lineTo(k, l + n), n = n - i - j);
                        for (k = d + f - 2, l = e + g - 1, m = f - 1, n < 0 && (n = V(n), n > j && (a.moveTo(k + 2, l), a.lineTo(k - (n - j), l)), k -= n, m -= n); m > 0;) if (m >= i + j) a.moveTo(k, l), a.lineTo(k - i, l), k = k - i - j, m = m - i - j;
                        else {
                            if (m >= i) {
                                a.moveTo(k, l), a.lineTo(k - i, l), m = m - i - j;
                                break
                            }
                            if (m > 0) {
                                a.moveTo(k, l), a.lineTo(k - m, l), m = m - i - j;
                                break
                            }
                        }
                        for (k = d, l = e + g - 2, n = g - 1, m < 0 && (m = V(m), m > j && (a.moveTo(k, l + 2), a.lineTo(k, l - (m - j))), l -= m, n -= m); n > 0;) n >= i + j ? (a.moveTo(k, l), a.lineTo(k, l - i), l = l - i - j, n = n - i - j) : n >= i ? (a.moveTo(k, l), l - i === e ? a.lineTo(k, l - i - 1) : a.lineTo(k, l - i), n = n - i - j) : n > 0 && (l > e && (a.moveTo(k, l), a.lineTo(k, l - n)), n = n - i - j);
                        a.stroke()
                    }
                    a.beginPath(), a.restore()
                },
                TI: function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l, m, n, o, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, M, N, O, P, Q, S, T, U, V, W, X;
                    if (L(d) && (d = 3), g = this, h = g.kj, i = h.parent, j = i && i.options.resizeZeroIndicator, k = h.Gr(b, d), l = h.Hr(c, d), m = k.length, n = l.length, !(m < 0 || n < 0)) {
                        for (o = h.Ir(b, c, d), r = o.length > 0, v = h.ss, y = 0, z = 0, A = 0, B = 0, E = new R(h, b, c, d), F = [], G = [], H = 3 === d && h.options.allowCellOverflow, I = [], J = !f && 3 === d && i && i.options.highlightInvalidData, f && 3 === d && (h.options.colHeaderVisible || (K = h.lq, N = h.frozenRowCount(), N > 0 && (O = h.ar(), O < N && (K = O))), h.options.rowHeaderVisible || (M = h.qq, P = h.frozenColumnCount(), P > 0 && (Q = h.$q(), Q < P && (M = Q)))), a.save(), a.beginPath(), e && (a.rect(e.x, e.y, ca(e), ba(e)), a.clip()), S = [], T = -1, U = -1, V = 0; V < m; V++) for (s = k[V], W = 0; W < n; W++) t = l[W], u = r && o.findCell(s.row, t.col), u ? (w = u.row, x = u.col, y = u.x, z = u.y, A = ca(u), B = ba(u)) : (w = s.row, x = t.col, y = t.x, z = s.y, A = ca(t), B = ba(s)), 1 === j && (b === -1 && h.getColumnVisible(x) && 0 === h.$r(x) && ((U < 0 || U !== x - 1) && S.push({
                            x1: y,
                            y1: z,
                            x2: y,
                            y2: z + B,
                            horizontal: !1
                        }), U = x), c === -1 && h.getRowVisible(w) && 0 === h.Yr(w) && ((T < 0 || T !== w - 1) && S.push({
                            x1: y,
                            y1: z,
                            x2: y + A,
                            y2: z,
                            horizontal: !0
                        }), T = w)), e && (y + A <= e.x || y >= e.x + ca(e) || z + B <= e.y || z >= e.y + ba(e)) || 0 !== A && 0 !== B && (u && p.Bb(F, u) || (C = v.ge(w, x, d), D = v.Ym(w, x, d), J && h.isValid && !h.isValid(w, x, C) && I.push({
                            x: y,
                            y: z,
                            width: A,
                            height: B
                        }), E.jF(w, x, y, z, A, B, D, u, K === w, M === x), G.push({
                            data: C,
                            row: w,
                            col: x,
                            x: y,
                            y: z,
                            width: A,
                            height: B,
                            style: D,
                            cellLayout: u
                        }), u && F.push(u)));
                        G.length > 0 && (H && (X = v.Sm(b, c, function() {
                            return new ka(h, b, c)
                        }), g.hJ(X, G, E)), g.SI(a, G, d, f)), q.ao(h, "paintViewport", {
                            ctx: a,
                            rowViewportIndex: b,
                            colViewportIndex: c,
                            sheetArea: d,
                            clipRect: e,
                            isPrinting: f
                        }), E.paint(a, e), S.length > 0 && g.iJ(a, S, 1, 3), I.length > 0 && g.jJ(a, I), a.restore()
                    }
                },
                iJ: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t;
                    if (0 !== b.length) for (e = 0, f = b.length; e < f; e++) g = b[e], h = g.x1, i = g.y1, j = g.x2, k = g.y2, l = g.horizontal, a.beginPath(), a.save(), a.lineWidth = c, a.strokeStyle = this.kJ(a, l, h, i, j, k), a.fillStyle = this.lJ(a, l, h, i, j, k), l ? (m = -3, n = 1, o = -1, p = -2, a.fillRect(h, i + m, j - h - 1, d + 2 * c), y.Dn(a, .5, .5), a.moveTo(h + o, i + m), a.lineTo(j + p, k + m), a.moveTo(h + o, i + n), a.lineTo(j + p, k + n)) : (q = -3, r = 1, s = 0, t = -1, a.fillRect(h + q, i + s, d + 2 * c, k - i - 1), y.Dn(a, .5, .5), a.moveTo(h + q, i + s), a.lineTo(j + q, k + t), a.moveTo(h + r, i + s), a.lineTo(j + r, k + t)), y.Dn(a, -.5, -.5), a.stroke(), a.restore()
                },
                lJ: function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l = b ? _ : aa,
                        m = M.Km(0, "gc-" + l + "-normal"),
                        n = m && m.backgroundColor,
                        o = m && m.backgroundImage;
                    if (!b && o && o.indexOf("linear-gradient") !== -1) for (h = z.wl(o), g = a.createLinearGradient(c, d, e, f), i = 0, j = h.length; i < j; i++) k = h[i], g.addColorStop(k.point, k.color);
                    else n && (g = n);
                    return g
                },
                kJ: function(a, b, c, d, e, f) {
                    var g = a.createLinearGradient(c, d, e, f),
                        h = b ? _ : aa,
                        i = M.Km(0, "gc-" + h + "-normal");
                    return b ? (g.addColorStop(0, i.borderTopColor), g.addColorStop(1, i.borderBottomColor)) : (g.addColorStop(0, i.borderLeftColor), g.addColorStop(1, i.borderRightColor)), g
                },
                jJ: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m, n, o, p;
                    if (b) for (c = b.length, d = 0; d < c; d++) e = b[d], f = e.x - 4, g = e.y - 4, h = ca(e) + 8, i = ba(e) + 8, j = .5522848, k = h / 2 * j, l = i / 2 * j, m = f + h, n = g + i, o = f + h / 2, p = g + i / 2, a.save(), a.lineWidth = 2, a.strokeStyle = "red", a.beginPath(), a.moveTo(f, p), a.bezierCurveTo(f, p - l, o - k, g, o, g), a.bezierCurveTo(o + k, g, m, p - l, m, p), a.bezierCurveTo(m, p + l, o + k, n, o, n), a.bezierCurveTo(o - k, n, f, p + l, f, p), a.closePath(), a.stroke(), a.restore()
                },
                SI: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, p, s, t, u, w, x, y, z, A, B, C, D, E, F, I, J, K, L, M, N, P, Q, R, T, V, W, X = this,
                        Y = X.kj,
                        $ = 3 === c,
                        _ = Y.zoom(),
                        aa = O(X.Bl(), _),
                        da = Y.getDefaultStyle(c),
                        fa = Y.Al(c),
                        ga = Y.conditionalFormats,
                        ha = ea(Y),
                        ia = Y.$q(2),
                        ja = Y.ar(1),
                        ka = Y.vu();
                    for (a.save(), a.beginPath(), a.fillStyle = da && da.foreColor || Z, H(a, aa.font), a.textAlign = $ ? "right" : "center", f = b.length, z = !! v(), A = [], C = {
                        sheet: Y,
                        row: -1,
                        col: -1,
                        fontInfo: S,
                        lineHeight: -1,
                        imageLoader: ka,
                        conditionalFormats: ga,
                        sheetArea: c,
                        parentBackColor: ha
                    }, e = 0; e < f; e++) {
                        if (g = b[e], i = g.data, j = g.row, k = g.col, l = g.x, m = g.y, n = ca(g), o = ba(g), p = g.style, s = g.cellOverflowLayout, t = p.isVerticalText, w = p.font ? O(p.font, _) : aa, D = !p.wordWrap && p.shrinkToFit, E = 0, D && (F = Y.getText(j, k, c), I = p.watermark, I && !F && (F = I), F)) for (J = {
                            value: !1
                        }, K = 0; K < 3 && J.value === !1; K++) if (t) {
                            if (L = F.length * G(w.font), E = U(0, o - 4), 1 !== p.vAlign && p.textIndent && (E = U(0, E - 8 * p.textIndent)), !(E < L)) break;
                            w = O(w.font, E / L, J, !0)
                        } else {
                            if (M = Y.dp(F, w.font), E = U(0, n - 4), 1 !== p.hAlign && p.textIndent && (E = U(0, E - 8 * p.textIndent)), !(E < M)) break;
                            w = O(w.font, E / M, J, !0)
                        }
                        p.font = w.font, n > 0 && o > 0 && (h = p.cellType || fa, l--, m--, n++, o++, $ ? (y = z && Y.getSparkline(j, k), C.sparkline = y) : (u = d ? 0 : X.mJ(j, k, c), C.visualState = u), x = G(w.font), C.lineHeight = x, C.row = j, C.col = k, C.fontInfo = w, C.cellOverflowLayout = s, C.needTopGridline = d && (1 === c && j === ja || 0 === c), C.needLeftGridline = d && (2 === c && k === ia || 0 === c), h.paint(a, i, l, m, n, o, p, C), s && !C.showBarIconOnly && (N = new r.Rect(l, m, n, o), P = h.Ama ? h.Ama(a, N, p, C) : N, A.push({
                            cellType: h,
                            data: i,
                            x: P.x,
                            y: P.y,
                            width: P.width,
                            height: P.height,
                            style: p,
                            options: {
                                sheet: Y,
                                row: j,
                                col: k,
                                fontInfo: w,
                                lineHeight: x,
                                cellOverflowLayout: s,
                                parentBackColor: ha,
                                imageLoader: ka
                            }
                        })))
                    }
                    if (f = A.length, f > 0) for (Q = Y.isEditing(), R = Y.Jl, T = Y.Kl, V = 0; V < f; V++) B = A[V], i = B.data, C = B.options, Q && C.row === R && C.col === T || (W = v(), W && i instanceof W.SparklineExValue || X.BWa(a, B));
                    for (a.restore(), e = 0, f = b.length; e < f; e++) g = b[e], q.ao(Y, "paintCell", {
                        ctx: a,
                        sheetArea: c,
                        cell: g,
                        isPrinting: d
                    })
                },
                BWa: function(a, b) {
                    var c, d, e, f = b.cellType,
                        g = b.data,
                        h = b.x,
                        i = b.y,
                        j = ca(b),
                        k = ba(b),
                        l = b.style,
                        m = b.options;
                    f.Gia && (c = m.cellOverflowLayout, d = c && c.layout, e = new E(d ? d.x : h, d ? d.y : i, d ? d.width : j, d ? d.height : k), f.Gia(a, e, l, m, g)), f.paintValue && f.paintValue(a, g, h, i, j, k, l, m)
                },
                mJ: function(a, b, c) {
                    var d = this.kj,
                        e = 0;
                    return da(d) && (3 === c || L(c) ? !d.isEditing() && d.wt(a, b) ? e = 3 : d.vp(a, b, c) && (e = 2) : (d.vp(a, b, c) && (e = 1, d.wp(a, b, c) && (e = 2)), d.xt(a, b, c) && (e = 4))), e
                },
                hJ: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C = this.kj,
                        D = C.ss,
                        F = b.length,
                        G = {},
                        H = [];
                    for (u = 0; u < F; u++) {
                        if (d = b[u], g = d.row, h = d.col, i = d.x, j = d.y, l = ba(d), q = a.nJ(g), r = q.headingOverflowlayout, s = q.trailingOverflowLayout, !G[g]) {
                            for (v = {}, w = 0; w < q.length; w++) v[q[w].column] = !1;
                            r && (v[r.column] = !1), s && (v[s.column] = !1), G[g] = v
                        }
                        x = G[g], t = q.find(h), t ? (t.column === h ? (k = ca(d), m = t.backgroundWidth, n = t.backgroundLeftWidth < 0 ? i : t.backgroundRightWidth < 0 ? i + k - m : i + k / 2 - t.backgroundLeftWidth, d.cellOverflowLayout = t, x[t.column] && H.push(u)) : x[t.column] || (h = t.column, f = D.Ym(g, h), e = C.getValue(g, h), k = t.columnWidth, m = t.backgroundWidth, y = C.getCellRect(g, t.column), n = t.backgroundLeftWidth < 0 ? y.x : t.backgroundRightWidth < 0 ? y.x + ca(y) - m : y.x + ca(y) / 2 - t.backgroundLeftWidth, p = {
                            data: e,
                            row: g,
                            col: h,
                            x: y.x,
                            y: j,
                            width: k,
                            height: l,
                            style: f,
                            cellOverflowLayout: t
                        }, b.push(p)), t.layout = new E(n, j, m, l), c.gF(g, t), x[t.column] = !0) : r && !x[r.column] && r.contains(h) ? (h = r.column, f = D.Ym(g, h), e = C.getValue(g, h), k = r.columnWidth, m = r.backgroundWidth, z = C.getCellRect(g, r.endColumn), n = z.x + ca(z) - m, p = {
                            data: e,
                            row: g,
                            col: h,
                            x: n,
                            y: j,
                            width: k,
                            height: l,
                            style: f,
                            cellOverflowLayout: r
                        }, b.push(p), r.layout = new E(n, j, m, l), c.gF(g, r), x[r.column] = !0) : s && !x[s.column] && s.contains(h) && (h = s.column, f = D.Ym(g, h), e = C.getValue(g, h), k = s.columnWidth, m = s.backgroundWidth, A = C.getCellRect(g, s.startColumn), n = A.x, o = A.x + m - k, p = {
                            data: e,
                            row: g,
                            col: h,
                            x: o,
                            y: j,
                            width: k,
                            height: l,
                            style: f,
                            cellOverflowLayout: s
                        }, b.push(p), s.layout = new E(n, j, m, l), c.gF(g, s), x[s.column] = !0)
                    }
                    if (H.length > 0) for (B = H.length - 1; B >= 0; B--) b.splice(H[B], 1)
                }
            }, w.oJ = fa, d = 2, e = 100;

            function ga(a, b) {
                var c, d, e = 0;
                return "string" == typeof a && (c = a.split(" ", 4), d = c.length, 1 === d ? e = 2 * Y(c[0]) : 2 === d || 3 === d ? e = 2 * Y(c[1]) : 4 === d && (e = Y(c[1]) + Y(c[3]))), e * b
            }
            function ha(a, b, c, e, f, g) {
                var h, i = e.zoom(),
                    j = b.font,
                    k = b.textIndent;
                return j = j ? O(j, i).font : c, h = C.Xn(a, j) + ia(e, k, f, g) + d, h + ga(b.cellPadding, i)
            }
            function ia(a, b, c, d) {
                if (!L(c) && !L(d) && a.outlineColumn) {
                    var e = a.outlineColumn.LRa(c, d);
                    if (e) return e
                }
                return b ? 8 * b : 0
            }
            function ja(a, b, c, d, e, f, g, h, i) {
                var j, k, l, m, n, o, p, q = a.ss,
                    r = ca(e),
                    s = ca(e),
                    t = e.style,
                    u = e.text,
                    v = t.watermark;
                if (b.findCell(f, g)) return S;
                if (n = t.cellType || c, !n.allowOverflow || !u && !v) return S;
                if (u || (u = v), l = ha(u, t, d, a, f, g), l <= s) return S;
                for (o = g, p = g, k = g + (i ? 1 : -1);
                     (i ? k <= h : k >= h) && !b.findCell(f, k) && (j = q.ge(f, k), L(j)) && (m = q.Ym(f, k), !m.watermark) && (i ? p = k : o = k, s += q._m(k), !(l <= s)); k += i ? 1 : -1);
                return i && p === g || !i && o === g ? S : new P(g, o, p, l, r, s, i ? -1 : s, i ? s : -1)
            }
            function ka(a, b, c) {
                var d = this;
                d.kj = a, d.pJ = a.Hr(c), d.qJ = a.Ir(b, c), d.yI = O(a.yl.Bl(), a.zoom()).font, d.Rq = a.Al(), d.rJ = {}
            }
            ka.prototype = {
                constructor: ka,
                nJ: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v = this,
                        w = v.rJ[a];
                    if (w) return w;
                    if (b = v.kj, c = b.ss, d = v.pJ, e = d.length, m = new Q, e > 0) {
                        for (m.headingOverflowlayout = v.sJ(a), o = d[0].col, p = d[e - 1].col, q = 0; q < e; q++) f = d[q], ca(f) <= 0 || (g = f.col, i = c.ge(a, g), h = c.Ym(a, g), L(i) && !h.watermark || h.shrinkToFit || h.wordWrap || h.isVerticalText || (r = b.conditionalFormats, r && (s = r.oRa(b, a, g, i), t = s.dataBar, u = s.iconSet, t && t.showBarOnly || u && u.showIconOnly) || (j = c._m(g), l = B.vn(b, h, i), k = h.hAlign, 3 === k && (k = F(k, i, h.formatter)), 0 === k ? (n = v.tJ({
                            data: i,
                            style: h,
                            width: j,
                            text: l
                        }, a, g, p), n && m.push(n)) : 2 === k ? (n = v.uJ({
                            data: i,
                            style: h,
                            width: j,
                            text: l
                        }, a, g, o), n && m.push(n)) : 1 === k && (n = v.vJ({
                            data: i,
                            style: h,
                            width: j,
                            text: l
                        }, a, g, o, p), n && m.push(n)))));
                        m.trailingOverflowLayout = v.wJ(a)
                    }
                    return v.rJ[a] = m, m
                },
                tJ: function(a, b, c, d) {
                    var e = this;
                    return ja(e.kj, e.qJ, e.Rq, e.yI, a, b, c, d, !0)
                },
                uJ: function(a, b, c, d) {
                    var e = this;
                    return ja(e.kj, e.qJ, e.Rq, e.yI, a, b, c, d)
                },
                vJ: function(a, b, c, d, e) {
                    var f, g, h, i, j, k, l, m, n, o = this,
                        p = o.kj,
                        q = p.ss,
                        r = o.qJ,
                        s = ca(a),
                        t = ca(a),
                        u = a.style,
                        v = a.text,
                        w = u.watermark;
                    if (r.findCell(b, c)) return S;
                    if (j = u.cellType || o.Rq, !j.allowOverflow || !v && !w) return S;
                    if (v || (v = w), h = ha(v, u, o.yI, p, b, c), h <= t) return S;
                    for (k = c, l = t / 2, g = c - 1; g >= d && !r.findCell(b, g) && (f = q.ge(b, g), L(f)) && (i = q.Ym(b, g), !i.watermark) && (k = g, l += q._m(g), !(h / 2 <= l)); g--);
                    for (m = c, n = t / 2, g = c + 1; g <= e && !r.findCell(b, g) && (f = q.ge(b, g), L(f)) && (m = g, n += q._m(g), !(h / 2 <= n)); g++);
                    return k === m ? S : new P(c, k, m, h, s, l + n, l, n)
                },
                sJ: function(a) {
                    var b, c, d, f, g, h, i, j, k, l = this,
                        m = l.kj,
                        n = m.ss,
                        o = l.pJ,
                        p = o[0].col,
                        q = o[o.length - 1].col,
                        r = m.ITa,
                        s = e,
                        t = p;
                    for (k = 1; k < s; k++) {
                        if (g = t - k, g < 0) return S;
                        if (r.findSpan(a, g)) return S;
                        if (c = n.ge(a, g), d = n._m(g), d > 0 && !L(c)) return b = n.Ym(a, g), f = b.hAlign, 3 === f && (f = F(f, c)), i = B.vn(m, b, c), j = {
                            data: c,
                            style: b,
                            width: d,
                            text: i
                        }, 0 === f ? h = l.tJ(j, a, g, q) : 1 === f && (h = l.vJ(j, a, g, p, q)), h && h.endColumn >= p ? h : S
                    }
                },
                wJ: function(a) {
                    var b, c, d, f, g, h, i, j, k, l = this,
                        m = l.kj,
                        n = m.ss,
                        o = l.pJ,
                        p = o[0].col,
                        q = o[o.length - 1].col,
                        r = m.ITa,
                        s = e,
                        t = m.getColumnCount(),
                        u = q;
                    for (k = 1; k < s; k++) {
                        if (g = u + k, g >= t) return S;
                        if (r.findSpan(a, g)) return S;
                        if (c = n.ge(a, g), d = n._m(g), d > 0 && !L(c)) return b = n.Ym(a, g), f = b.hAlign, 3 === f && (f = F(f, c)), i = B.vn(m, b, c), j = {
                            data: c,
                            style: b,
                            width: d,
                            text: i
                        }, 2 === f ? h = l.uJ(j, a, g, p) : 1 === f && (h = l.vJ(j, a, g, p, q)), h && h.startColumn <= q ? h : S
                    }
                }
            }, w.xJ = ka, f = ".cutCopyIndicator", g = I.CellChanged, h = I.ClipboardChanged, i = I.ValueChanged, j = I.ColumnChanged, k = I.RowChanged, l = I.RangeChanged, m = I.ClipboardPasting, n = I.ClipboardPasted, o = I.DragMerging;

            function la(a) {
                var b = this;
                b.yJ = !1, b.zJ = !1, b.kj = a, b.AJ()
            }
            la.prototype = {
                constructor: la,
                jx: function(a) {
                    var b = this;
                    return 0 === arguments.length ? b.zJ : void(b.zJ = a)
                },
                BJ: function(a) {
                    var b, c = this;
                    return 0 === arguments.length ? c.yJ : void((c.yJ !== a || a) && (c.yJ = a, b = c.kj, b && b.$p()))
                },
                AJ: function() {
                    var a = this,
                        b = a.kj,
                        c = !1,
                        d = "resizable",
                        e = "isVisible";

                    function p() {
                        a.BJ(!1)
                    }
                    b.Fu(h + f, function() {
                        a.BJ(!0)
                    }), b.Fu(i + f, p), b.Fu(g + f, p), b.Fu(j + f, function(a, b) {
                        var c = b.propertyName;
                        c !== d && "width" !== c && c !== e && p()
                    }), b.Fu(k + f, function(a, b) {
                        var c = b.propertyName;
                        c !== d && "height" !== c && c !== e && p()
                    }), b.Fu(l + f, p), b.Fu(m + f, function() {
                        c = a.BJ()
                    }), b.Fu(n + f, function(b, d) {
                        var e, f = d.cellRange,
                            g = d.sheet.tu(),
                            h = g.n5,
                            i = c;
                        if (f && h && g.PA) {
                            if (a.jx()) {
                                for (e = 0; e < h.length; e++) if (h[e].intersect(f.row, f.col, f.rowCount, f.colCount)) {
                                    i = !1;
                                    break
                                }
                            } else i = !1;
                            a.BJ(i)
                        }
                    }), b.Fu(o + f, p)
                },
                UI: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, p, q = this;
                    if (q.yJ && (e = q.kj, f = e.yl, g = e.parent, h = g ? g.options : {}, i = e.tu(), j = i.n5, k = h.cutCopyIndicatorVisible, L(k) && (k = !0), l = J.Om(e, h.cutCopyIndicatorBorderColor || "blue"), k && i.PA === e && j && (m = e.am(), n = m.Ft(c, d), o = f.XI(c, d, j, b), o && n))) {
                        for (a.save(), a.rect(n.x, n.y, ca(n), ba(n)), a.clip(), p = 0; p < o.length; p++) f.fJ(a, o[p], l);
                        a.beginPath(), a.restore()
                    }
                },
                rI: function() {
                    this.BJ(!1)
                },
                sI: function() {
                    this.BJ(!1)
                },
                tI: function() {
                    this.BJ(!1)
                },
                uI: function() {
                    this.BJ(!1)
                },
                ky: function() {
                    this.BJ(!1)
                },
                no: function() {
                    var a = this.kj;
                    a.Gu(g + f), a.Gu(h + f), a.Gu(i + f), a.Gu(j + f), a.Gu(k + f), a.Gu(l + f), a.Gu(m + f), a.Gu(n + f), a.Gu(o + f)
                }
            }, w.CJ = la, a.exports = w
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(42),
                d = c(58).Worksheet,
                e = c(43),
                f = c(26),
                g = c(44).GC$,
                h = e.kf,
                i = e.Im,
                j = e.Vl,
                k = f.j.Fa,
                l = f.k.ac,
                m = null,
                n = Math.max,
                o = Math.min,
                p = "gc-selection";

            function q(a, b) {
                return a.getColumnCount(b)
            }
            function r(a, b) {
                return a.getRowCount(b)
            }
            function s(a) {
                return a.rowCount
            }
            function t(a) {
                return a.colCount
            }
            b.SelectionPolicy = {
                single: 0,
                range: 1,
                multiRange: 2
            }, b.SelectionUnit = {
                cell: 0,
                row: 1,
                column: 2
            }, g.extend(d.prototype, {
                addSelection: function(a, b, c, d) {
                    var e, f, g = this,
                        i = a,
                        j = b,
                        k = c,
                        m = d;
                    i !== -1 && j !== -1 && (e = g.ITa.getSpans(), e && l(e) > 0 && (f = g.su(e, h(a, b, c, d)), i = f.row, j = f.col, k = s(f), m = t(f))), g.ITa.do("addSelection", i, j, k, m), g.$p()
                },
                setSelection: function(a, b, c, d) {
                    this.DJ(a, b, c, d, 2)
                },
                DJ: function(a, b, c, d, e) {
                    var f, g, h, i = this,
                        k = r(i),
                        l = q(i);
                    a >= k && (a = k - 1), b >= l && (b = l - 1), f = n(0, a), g = n(0, b), i.Tr(), h = 2 === e ? j.Wl(i) : 1 === e, i.Kr(f, g, i.Er(f), i.Fr(g), !h), i.addSelection(a, b, c, d)
                },
                getSelections: function() {
                    return this.ITa.getSelections()
                },
                clearSelection: function() {
                    var a = this;
                    a.Tr(), a.Kr(0, 0), d.ao(a, "clearSelection"), a.$p()
                },
                Tr: function() {
                    this.ITa.do("clearSelection")
                },
                Qs: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m, n = this,
                        o = n.options,
                        p = o.protectionOptions,
                        s = p.allowSelectLockedCells !== !1,
                        t = p.allowSelectUnlockedCells !== !1;
                    if (!o.isProtected || s && t) return !0;
                    if (!s && !t) return !1;
                    if (d = c ? c.locked : n.tq(a, b, "locked"), e = b < 0, f = a < 0, s === d && (f || e)) {
                        for (g = f ? r(n) : 1, a = f ? 0 : a, h = e ? q(n) : 1, b = e ? 0 : b, i = n.ITa, j = a + g - 1, k = b + h - 1, l = a; l <= j; l++) for (m = b; m <= k; m++) if (c = i.getStyle(l, m), c && s !== c.locked) return !1;
                        if (f) for (l = a; l <= j; l++) if (c = i.getStyle(l, -1), c && s !== c.locked) return !1;
                        if (e) for (m = b; m <= k; m++) if (c = i.getStyle(-1, m), c && s !== c.locked) return !1
                    }
                    return s === d
                },
                JZa: function(a, b, c, d) {
                    var e, f, g = this;
                    for (a = a < 0 ? 0 : a, b = b < 0 ? 0 : b, e = a; e < a + c; e++) for (f = b; f < b + d; f++) if (g.tq(e, f, "locked")) return !0
                },
                selectionPolicy: function(a) {
                    var b = this,
                        c = b.ITa;
                    return 0 === arguments.length ? c.getSelectionPolicy() : (c.do("setSelectionPolicy", a), b)
                },
                selectionUnit: function(a) {
                    var b = this,
                        c = b.ITa;
                    return 0 === arguments.length ? c.getSelectionUnit() : (c.do("setSelectionUnit", a), b)
                },
                getSelectionBackColor: function() {
                    return this.options.selectionBackColor || i.Lm(p).backgroundColor
                },
                getSelectionBorderColor: function() {
                    return this.options.selectionBorderColor || i.Lm(p).borderTopColor
                },
                e_a: function(a) {
                    return a ? void(this.options.e_a = a) : this.options.e_a;
                },
                EJ: function() {
                    var a, b, c = this,
                        d = c.ITa.getSelections();
                    l(d) > 0 && (a = {
                        selections: d
                    }, b = c.ITa.getActiveSelectedRangeIndex(), 0 !== b && (a.activeSelectedRangeIndex = b), c.FJ = a, c.Tr(), c.yl.im())
                },
                GJ: function() {
                    var a = this,
                        b = a.FJ,
                        c = b && b.selections;
                    c && (a.ITa.do("setSelections", c), a.ITa.do("setActiveSelectedRangeIndex", b.activeSelectedRangeIndex || 0))
                },
                Ax: function(a, b, c) {
                    var d, e, f, g = this,
                        h = g.HJ(a, b, c, g.Rr || 0);
                    h && (d = h.row, e = h.col, f = h.leadingCellCol, g.IJ(d, e) && (g.Qr = d, g.Rr = f, g.Jr(d, e)))
                },
                HJ: function(a, b, c, d) {
                    var e, f, g = this,
                        h = r(g),
                        i = q(g),
                        j = a;
                    return 0 === j && !c || 0 === h || 0 === i ? m : (f = g.JJ(j, d), c || g.KJ(f), j = f.r, e = f.c, j < 0 && c && (e = g.br(e), (e < 0 || k(e)) && (e = g.br(i)), d = e, f = g.JJ(h, e), j = f.r, e = f.c, e === b && j <= a) ? m : {
                        row: j,
                        col: e,
                        leadingCellCol: d
                    })
                },
                Bx: function(a, b, c) {
                    var d, e, f, g = this,
                        h = g.LJ(a, b, c, g.Rr || 0);
                    !h || h.row === a && h.col === b || (d = h.row, e = h.col, f = h.leadingCellCol, g.IJ(d, e) && (g.Qr = d, g.Rr = f, g.Jr(d, e)))
                },
                LJ: function(a, b, c, d) {
                    var e, f, g = this,
                        h = r(g),
                        i = q(g),
                        j = a;
                    if ((j !== h - 1 || c) && 0 !== h && 0 !== i && (f = g.MJ(j, d), c || g.KJ(f), j = f.r, e = f.c, !(j === h && c && (e = g.Zq(e), (e >= i || k(e)) && (e = g.Zq(-1)), d = e, f = g.MJ(-1, e), j = f.r, e = f.c, e === b && j >= a)))) return {
                        row: j,
                        col: e,
                        leadingCellCol: d
                    }
                },
                Dx: function() {
                    var a, b, c = this,
                        d = c.NJ();
                    d && (a = d.row, b = d.col, c.Qr = a, c.Rr = b, c.Jr(a, b))
                },
                NJ: function() {
                    var a, b, c, d, e, f = this,
                        g = f.ir(),
                        h = f.dr(),
                        i = h;
                    if (!g && !i) return m;
                    if (a = f.options, b = a.protectionOptions, c = b.allowSelectLockedCells !== !1, d = b.allowSelectUnlockedCells !== !1, !a.isProtected || c && d) return {
                        row: g,
                        col: i
                    };
                    if (!c && !d) return m;
                    for (; g !== m && g >= 0; g = f.gr(g)) for (i = h; i !== m && i >= 0; i = f.br(i)) if (e = f.tq(g, i, "locked"), c === e) return {
                        row: g,
                        col: i
                    };
                    return m
                },
                Cx: function() {
                    var a, b, c = this,
                        d = c.OJ();
                    d && (a = d.row, b = d.col, c.Qr = a, c.Rr = b, c.Jr(a, b))
                },
                OJ: function() {
                    var a, b, c, d, e, f = this,
                        g = f._q(f.frozenRowCount() - 1),
                        h = f.Zq(f.frozenColumnCount() - 1),
                        i = h,
                        j = f.ir(),
                        k = f.dr();
                    if (g === m || i === m) return m;
                    if (a = f.options, b = a.protectionOptions, c = b.allowSelectLockedCells !== !1, d = b.allowSelectUnlockedCells !== !1, !a.isProtected || c && d) return {
                        row: g,
                        col: i
                    };
                    if (!c && !d) return m;
                    for (; g !== m && g <= j; g = f._q(g)) for (i = h; i !== m && i <= k; i = f.Zq(i)) if (e = f.tq(g, i, "locked"), c === e) return {
                        row: g,
                        col: i
                    };
                    return m
                },
                zx: function(a, b, c) {
                    var d, e, f, g = this,
                        h = g.iy(a, b, c, g.Qr || 0);
                    h && (d = h.row, e = h.col, f = h.leadingCellRow, g.IJ(d, e) && (g.Qr = f, g.Rr = e, g.Jr(d, e)))
                },
                iy: function(a, b, c, d) {
                    var e, f, g, h = this,
                        i = r(h),
                        j = q(h),
                        l = b;
                    if (0 === l && !c || 0 === i || 0 === j) return m;
                    for (f = h.PJ(d, l), g = d, c || h.KJ(f), e = f.r, l = f.c; l < 0 && c;) {
                        if (e = h.gr(e, 3, !0), (e < 0 || k(e)) && (e = h.gr(i, 3, !0)), d = e, f = h.PJ(d, j), e = f.r, l = f.c, e === a && l < b) return m;
                        if (e === a && l === b) {
                            if (d === g) return m;
                            f = h.PJ(d, l), e = f.r, l = f.c
                        }
                    }
                    return {
                        row: e,
                        col: l,
                        leadingCellRow: d
                    }
                },
                KJ: function(a) {
                    var b, c = this,
                        d = !1;
                    a.r < 0 ? a.r = c.ar() : a.r >= r(c) && (a.r = c.ir(), d = !0), a.c < 0 ? a.c = c.$q() : a.c >= q(c) && (a.c = c.dr(), d = !0), d && (b = c.ITa.getSpan(a.r, a.c), b.row !== a.r && (a.r = b.row), b.col !== a.c && (a.c = b.col))
                },
                Fx: function(a, b) {
                    for (var c, d, e = this, f = e.ITa, g = f.getActiveSelectedRangeIndex(), h = -1, i = e.Tq(e.Ix()), j = i.row, k = i.col, l = i.col + t(i) - 1, m = a, n = b; c = e.QJ(m, n), m = c.r, n = c.c, !(n >= k);) {
                        if (h === g && m === a && n <= b) return;
                        m--, m >= j ? n = l + 1 : (d = e.Tq(e.Ix(3)), h = f.getActiveSelectedRangeIndex(), j = d.row, k = d.col, l = d.col + t(d) - 1, m = d.row + s(d) - 1, n = d.col + t(d))
                    }
                    m >= 0 && (e.Jr(m, n), e.Qr = m, e.Rr = n)
                },
                Gx: function(a, b) {
                    for (var c, d, e = this, f = e.ITa, g = f.getActiveSelectedRangeIndex(), h = -1, i = e.Tq(e.Ix()), j = i.col, k = i.row + s(i) - 1, l = i.col + t(i) - 1, m = a, n = b; c = e.RJ(m, n), m = c.r, n = c.c, !(n <= l);) {
                        if (h === g && m === a && n >= b) return;
                        m++, m <= k ? n = j - 1 : (d = e.Tq(e.Ix(4)), h = f.getActiveSelectedRangeIndex(), j = d.col, k = d.row + s(d) - 1, l = d.col + t(d) - 1, m = d.row, n = d.col - 1)
                    }
                    m >= 0 && (e.Jr(m, n), e.Qr = m, e.Rr = n)
                },
                Rs: function(a, b, c) {
                    var d, e, f, g = this,
                        h = g.hy(a, b, c, g.Qr || 0);
                    !h || h.row === a && h.col === b || (d = h.row, e = h.col, f = h.leadingCellRow, g.IJ(d, e) && (g.Qr = f, g.Rr = e, g.Jr(d, e)))
                },
                hy: function(a, b, c, d) {
                    var e, f, g, h = this,
                        i = r(h),
                        j = q(h),
                        l = b;
                    if (l === j - 1 && !c || 0 === i || 0 === j) return m;
                    for (f = h.SJ(d, l), g = d, c || h.KJ(f), e = f.r, l = f.c; l === j && c;) {
                        if (e = h._q(e, 3, !0), (e >= i || k(e)) && (e = h._q(-1, 3, !0)), d = e, f = h.SJ(d, -1), e = f.r, l = f.c, e === a && l > b) return m;
                        if (e === a && l === b) {
                            if (d === g) return m;
                            f = h.SJ(d, l), e = f.r, l = f.c
                        }
                    }
                    return {
                        row: e,
                        col: l,
                        leadingCellRow: d
                    }
                },
                PJ: function(a, b) {
                    for (var c, d, e, f = this, g = b; g >= 0 && (c = a, g--, !(g < 0));) if (d = f.getSpans(h(c, g, 1, 1)), d && l(d) > 0 && (e = d[0], g >= e.col && (g = e.col, c = e.row)), f.IJ(c, g)) return {
                        r: c,
                        c: g
                    };
                    return {
                        r: c,
                        c: g
                    }
                },
                QJ: function(a, b) {
                    for (var c, d, e = this; b >= 0 && (b--, !(b < 0));) {
                        if (c = e.ITa.findSpan(a, b)) {
                            if (d = e.Ix(), !(d.row <= c.row && c.row + s(c) <= d.row + s(d) && d.col <= c.col && c.col + t(c) <= d.col + t(d))) continue;
                            if (c.row !== a || c.col !== b) continue;
                            b >= c.col && (b = c.col, a = c.row)
                        }
                        if (e.IJ(a, b)) return {
                            r: a,
                            c: b
                        }
                    }
                    return {
                        r: a,
                        c: b
                    }
                },
                SJ: function(a, b) {
                    for (var c, d, e, f, g = this, i = q(g), j = b; j < i && (c = a, d = g.ITa.getSpan(c, j), j += t(d), !(j >= i));) if (e = g.getSpans(h(c, j, 1, 1)), e && l(e) > 0 && (f = e[0], j > f.col ? j = n(j, f.col + t(f)) : c = f.row), g.IJ(c, j)) return {
                        r: c,
                        c: j
                    };
                    return {
                        r: c,
                        c: j
                    }
                },
                RJ: function(a, b) {
                    for (var c, d, e, f = this, g = f.ITa, h = q(f); b < h && (c = g.getSpan(a, b), b = c.col + t(c), !(b >= h));) {
                        if (d = g.findSpan(a, b)) {
                            if (e = f.Ix(), !(e.row <= d.row && d.row + s(d) <= e.row + s(e) && e.col <= d.col && d.col + t(d) <= e.col + t(e))) continue;
                            if (d.row !== a || d.col !== b) continue;
                            b > d.col ? b = n(b, d.col + t(d)) : a = d.row
                        }
                        if (f.IJ(a, b)) return {
                            r: a,
                            c: b
                        }
                    }
                    return {
                        r: a,
                        c: b
                    }
                },
                IJ: function(a, b) {
                    var c, d, e, f = this;
                    return !!f.Qs(a, b) && (c = a >= 0 && a < r(f) && b >= 0 && b < q(f) && f.getRowVisible(a) && f.getColumnVisible(b) && f.Sl(a) > 0 && f.Tl(b) > 0, d = !! f.Tx, c === !0 && d === !0 && (e = f.tq(a, b, "tabStop"), e === !1 && (c = !1)), c)
                },
                JJ: function(a, b) {
                    for (var c, d, e = this; a >= 0 && (a--, !(a < 0));) if (c = e.getSpans(h(a, b, 1, 1)), c && l(c) > 0 && (d = c[0], a >= d.row && (a = d.row, b = d.col)), e.IJ(a, b)) return {
                        r: a,
                        c: b
                    };
                    return {
                        r: a,
                        c: b
                    }
                },
                MJ: function(a, b) {
                    for (var c, d, e, f = this, g = r(f); a < g && (c = f.ITa.getSpan(a, b), a += s(c), !(a >= g));) if (d = f.getSpans(h(a, b, 1, 1)), d && l(d) > 0 && (e = d[0], a > e.row ? a = n(a, e.row + s(e)) : b = e.col), f.IJ(a, b)) return {
                        r: a,
                        c: b
                    };
                    return {
                        r: a,
                        c: b
                    }
                },
                Ur: function(a, b, c, d, e) {
                    var f = this;
                    f.ITa.do("addSelection", a, b, c, d), e && f.Xq <= 0 && f.yl.im()
                },
                aH: function(a, b, c) {
                    var d = this,
                        e = d.Jx(a, b, d.Jl, d.Kl),
                        f = e.row,
                        g = e.col,
                        h = s(e),
                        i = t(e),
                        j = d.selectionPolicy(),
                        k = d.selectionUnit();
                    0 !== j && (1 === j && d.ITa.do("clearSelection"), 1 === k ? (g = -1, i = -1) : 2 === k && (f = -1, h = -1), d.Kx(f, g, h, i, c))
                },
                Jx: function(a, c, d, e, f) {
                    var g, h, i, j, m, n = this;
                    return k(d) && (d = n.Jl), k(e) && (e = n.Kl), g = n.ITa, h = g.getSpan(d, e), i = g.getSpan(a, c), f && h.equals(i) ? new b.Range(h.row, h.col, 1, 1) : (j = h.union(i), m = n.getSpans(), m && l(m) > 0 && (j = n.TJ(m, j)), j)
                },
                Kx: function(a, b, c, d, e) {
                    var f, g, i, j = this,
                        k = j.ITa,
                        m = j.Ix();
                    if (l(k.getSelections()) > 0 ? (f = k.getSelections(), f[k.getActiveSelectedRangeIndex()] = h(a, b, c, d), k.do("setSelections", f)) : k.do("addSelection", a, b, c, d), e && j.Xq <= 0) {
                        if (g = j.Ix(), g.row === m.row && g.col === m.col && s(g) === s(m) && t(g) === t(m)) return;
                        i = j.yl, m.containsRange(g) ? i.im(m) : g.containsRange(m) ? i.im(g) : (i.im(m), i.im(g))
                    }
                },
                Sx: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, m = this,
                        n = m.ITa.getSelections();
                    if (!(l(n) <= 0) && (c = m.Ix(), d = m.UJ(c, a, b))) {
                        if (e = d.row, f = d.col, g = s(d), h = t(d), i = m.selectionPolicy(), j = m.selectionUnit(), 0 === i) return;
                        1 === i && m.ITa.do("clearSelection"), 1 === j ? (f = -1, h = -1) : 2 === j && (e = -1, g = -1), m.Kx(e, f, g, h, !0), k = m.ITa.getSelections(), m.mm.zu(n, k) && (m.yu(n, k), m.Au(n))
                    }
                },
                UJ: function(a, b, c, d, e) {
                    var f = this,
                        g = f.Tq(a),
                        h = m;
                    return 37 === b ? h = c ? f.VJ(g, !1, d, e) : f.WJ(g, d, e) : 39 === b ? h = c ? f.XJ(g, !1, d, e) : f.YJ(g, d, e) : 38 === b ? h = c ? f.ZJ(g, !1, d, e) : f.$J(g, d, e) : 40 === b ? h = c ? f._J(g, !1, d, e) : f.aK(g, d, e) : 36 === b ? h = c ? f.bK(g, d, e) : f.cK(g, d, e) : 35 === b ? h = c ? f.dK(g, d, e) : f.eK(g, d, e) : 33 === b ? h = f.fK(g, d, e) : 34 === b && (h = f.gK(g, d, e)), h && (a.row < 0 && (h.row = -1, h.rowCount = f.getRowCount()), a.col < 0 && (h.col = -1, h.colCount = f.getColumnCount())), h
                },
                WJ: function(a, b, c) {
                    for (var d, e, f, g, i, j, k, l, p, q = this, r = a.row, u = a.col, v = s(a), w = t(a), x = u + w - 1, y = 0, z = r + v - 1; x > y;) if (x--, q.IJ(z, x) && (d = q.Jx(z, x, b, c), e = o(r, d.row), f = o(u, d.col), g = n(r + v - 1, d.row + s(d) - 1), i = o(u + w - 1, d.col + t(d) - 1), j = g - e + 1, k = i - f + 1, e !== r || f !== u || j !== v || k !== w)) return l = q.qq, p = q.Kl, u < p ? f <= l && q.rq(f) : u === p && i <= l && q.rq(i), h(e, f, j, k);
                    return m
                },
                VJ: function(a, b, c, d) {
                    var e, f, g, i, j, l, m, p = this,
                        q = a.row,
                        r = a.col,
                        u = p.frozenColumnCount(),
                        v = u ? p.Zq(u - 1) : p.$q(),
                        w = b ? v : p.$q();
                    if (!k(w)) return (u <= 0 || b) && p.rq(w), e = p.Jx(q, w, c, d), f = o(q, e.row), g = o(r, e.col), i = n(q + s(a) - 1, e.row + s(e) - 1), j = o(r + t(a) - 1, e.col + t(e) - 1), l = i - f + 1, m = j - g + 1, h(f, g, l, m)
                },
                YJ: function(a, b, c) {
                    for (var d, e, f, g, i, j, k, l, p, r = this, u = a.row, v = a.col, w = s(a), x = t(a), y = v, z = q(r) - 1, A = u + w - 1; y < z;) if (y++, r.IJ(A, y) && (d = r.Jx(A, y, b, c), e = o(u, d.row), f = n(v, d.col), g = n(u + w - 1, d.row + s(d) - 1), i = n(v + x - 1, d.col + t(d) - 1), j = g - e + 1, k = i - f + 1, e !== u || f !== v || j !== w || k !== x)) return l = r.Aw(), p = r.Kl, v < p ? f >= l && r.rq(r.ks(f, 2)) : v === p && i >= l && r.rq(r.ks(i, 2)), h(e, f, j, k);
                    return m
                },
                XJ: function(a, b, c, d) {
                    var e, f, g, i, j, l, m, p, q = this,
                        r = a.row,
                        u = a.col,
                        v = q.lr();
                    if (!k(v)) return q.rq(v), e = q.dr(), b || (e += q.frozenTrailingColumnCount()), f = q.Jx(r, e, c, d), g = o(r, f.row), i = n(u, f.col), j = n(r + s(a) - 1, f.row + s(f) - 1), l = n(u + t(a) - 1, f.col + t(f) - 1), m = j - g + 1, p = l - i + 1, h(g, i, m, p)
                },
                $J: function(a, b, c) {
                    for (var d, e, f, g, i, j, k, l, p, q = this, r = a.row, u = a.col, v = s(a), w = t(a), x = r + v - 1, y = 0, z = u + w - 1; x > y;) if (x--, q.IJ(x, z) && (d = q.Jx(x, z, b, c), e = o(r, d.row), f = o(u, d.col), g = o(r + v - 1, d.row + s(d) - 1), i = n(u + w - 1, d.col + t(d) - 1), j = g - e + 1, k = i - f + 1, e !== r || f !== u || j !== v || k !== w)) return l = q.lq, p = q.Jl, r < p ? e <= l && q.mq(e) : r === p && g <= l && q.mq(g), h(e, f, j, k);
                    return m
                },
                ZJ: function(a, b, c, d) {
                    var e, f, g, i, j, l, m, p = this,
                        q = a.row,
                        r = a.col,
                        u = p.frozenRowCount(),
                        v = u ? p._q(u - 1) : p.ar(),
                        w = b ? v : p.ar();
                    if (!k(w)) return (u <= 0 || b) && p.mq(w), e = p.Jx(w, r, c, d), f = o(q, e.row), g = o(r, e.col), i = o(q + s(a) - 1, e.row + s(e) - 1), j = n(r + t(a) - 1, e.col + t(e) - 1), l = i - f + 1, m = j - g + 1, h(f, g, l, m)
                },
                aK: function(a, b, c) {
                    for (var d, e, f, g, i, j, k, l, p, q = this, u = a.row, v = a.col, w = s(a), x = t(a), y = u, z = r(q) - 1, A = v + x - 1; y < z;) if (y++, q.IJ(y, A) && (d = q.Jx(y, A, b, c), e = n(u, d.row), f = o(v, d.col), g = n(u + w - 1, d.row + s(d) - 1), i = n(v + x - 1, d.col + t(d) - 1), j = g - e + 1, k = i - f + 1, e !== u || f !== v || j !== w || k !== x)) return l = q.Fw(), p = q.Jl, u < p ? e >= l && q.mq(q.ms(e, 2)) : u === p && g >= l && q.mq(q.ms(g, 2)), h(e, f, j, k);
                    return m
                },
                _J: function(a, b, c, d) {
                    var e, f, g, i, j, l, m, p, q = this,
                        r = a.row,
                        u = a.col,
                        v = q.kr();
                    if (!k(v)) return q.mq(v), e = q.ir(), b || (e += q.frozenTrailingRowCount()), f = q.Jx(e, u, c, d), g = n(r, f.row), i = o(u, f.col), j = n(r + s(a) - 1, f.row + s(f) - 1), l = n(u + t(a) - 1, f.col + t(f) - 1), m = j - g + 1, p = l - i + 1, h(g, i, m, p)
                },
                cK: function(a, b, c) {
                    for (var d, e, f, g, i, j, k, l = this, p = a.row, q = a.col, r = s(a), u = t(a), v = l.frozenColumnCount() - 1, w = l.Kl, x = p + r - 1; v < w;) if (v++, l.IJ(x, v)) {
                        if (q <= v && q + u - 1 === l.Kl) break;
                        return d = l.Jx(x, v, b, c), e = o(p, d.row), f = o(q, d.col), g = n(p + r - 1, d.row + s(d) - 1), i = o(q + u - 1, d.col + t(d) - 1), j = g - e + 1, k = i - f + 1, l.rq(l.$q()), h(e, f, j, k)
                    }
                    return m
                },
                bK: function(a, b, c) {
                    return a = this.VJ(a, !0, b, c), a = this.ZJ(a, !0, b, c)
                },
                eK: function(a, b, c) {
                    for (var d, e, f, g, i, j, k, l = this, p = a.row, r = a.col, u = s(a), v = t(a), w = q(l), x = l.Kl, y = p + u - 1; w > x;) if (w--, l.IJ(y, w)) {
                        if (r + v - 1 >= w && r === l.Kl) break;
                        return d = l.Jx(y, w, b, c), e = o(p, d.row), f = n(r, d.col), g = n(p + u - 1, d.row + s(d) - 1), i = n(r + v - 1, d.col + t(d) - 1), j = g - e + 1, k = i - f + 1, l.rq(l.lr()), h(e, f, j, k)
                    }
                    return m
                },
                dK: function(a, b, c) {
                    return a = this.XJ(a, !0, b, c), a = this._J(a, !0, b, c)
                },
                fK: function(a, b, c) {
                    var d, e, f, g, i, j, p, q, r, u, v = this,
                        w = a.row,
                        x = a.col,
                        y = s(a),
                        z = v.Ew();
                    return k(z) ? m : (d = v.Gr(1), e = v.mq(z), f = -1, e ? f = v._q(w + y - 1 - l(d)) : v.frozenRowCount() <= 0 && (f = v.ar()), f < v.lq ? f = v.lq : f >= v.Fw() && (f = v.gr(v.Fw())), g = v.Jx(f, x, b, c), i = o(w, g.row), j = o(x, g.col), p = o(w + y - 1, g.row + s(g) - 1), q = n(x + t(a) - 1, g.col + t(g) - 1), r = p - i + 1, u = q - j + 1, h(i, j, r, u))
                },
                gK: function(a, b, c) {
                    var d, e, f, g, i, j, p, q, r, u = this,
                        v = a.row,
                        w = a.col,
                        x = s(a),
                        y = u.$x();
                    return k(y) ? m : (d = u.Gr(1), u.mq(y), e = u.gr(v + x - 1 + l(d)), e < u.lq ? e = u.lq : e >= u.Fw() && (e = u.lq >= u.kr() ? u.Fw() : u.gr(u.Fw())), f = u.Jx(e, w, b, c), g = n(v, f.row), i = o(w, f.col), j = n(v + x - 1, f.row + s(f) - 1), p = n(w + t(a) - 1, f.col + t(f) - 1), q = j - g + 1, r = p - i + 1, h(g, i, q, r))
                },
                Ew: function() {
                    var a, b, c, d, e, f = this,
                        g = f.Gr(1);
                    if (!g || l(g) <= 0) return m;
                    for (a = f.frozenRowCount(), b = a ? f._q(a - 1) : f.ar(), c = 0, d = f.lq, e = f.am(); d > b && (d--, c += f.Sl(d), !(c > e.jr)););
                    return d
                },
                zw: function() {
                    var a, b, c, d, e, f = this,
                        g = f.Hr(1);
                    if (!g || l(g) <= 0) return m;
                    for (a = f.frozenColumnCount(), b = a ? f.Zq(a - 1) : f.$q(), c = 0, d = f.qq, e = f.am(); d > b && (d--, c += f.Tl(d), !(c > e.er)););
                    return d
                },
                $x: function() {
                    var a, b, c = this.Gr(1);
                    return c && (a = l(c)) > 0 ? (b = c[a - 1].row, this.ir() <= b ? this.lq : b) : m
                },
                kr: function() {
                    var a, b, c, d, e, f, g = this;
                    if (g.ir() === g.Fw() && (a = g.am(), b = g.Gr(1), b && (c = l(b)) >= 1 && (d = b[c - 1], d.y + d.height <= a.qt + a.jr))) return g.lq;
                    e = g.lq;
                    try {
                        return g.lq = g.ir(), f = g.Ew(), f = g._q(f)
                    } catch (a) {} finally {
                        g.lq = e
                    }
                },
                lr: function() {
                    var a, b, c, d, e, f, g = this;
                    if (g.dr() === g.Aw() && (a = g.am(), b = g.Hr(1), b && (c = l(b)) >= 1 && (d = b[c - 1], d.x + d.width <= a.pt + a.width))) return g.qq;
                    for (a = g.am(), e = 0, f = g.dr(); f > 0 && (e += g.Tl(f), !(e > a.er));) f--;
                    return f > 0 && (f = g.Zq(f)), f
                },
                Fw: function() {
                    var a = this.Gr(1),
                        b;
                    return a && (b = l(a)) > 0 ? a[b - 1].row : m
                },
                Aw: function() {
                    var a = this.Hr(1),
                        b;
                    return a && (b = l(a)) > 0 ? a[b - 1].col : m
                },
                hr: function() {
                    var a, b, c, d = this.Gr(1);
                    return d && (a = l(d)) > 0 ? (b = this.am(), c = a - 1, d[c].y + d[c].height <= b.qt + b.jr ? d[c].row : d[n(c - 1, 0)].row) : m
                },
                cr: function() {
                    var a, b, c, d = this.Hr(1);
                    return d && (a = l(d)) > 0 ? (b = this.am(), c = a - 1, d[c].x + d[c].width <= b.pt + b.er ? d[c].col : d[n(c - 1, 0)].col) : m
                },
                ir: function(a) {
                    k(a) && (a = 3);
                    var b = r(this, a);
                    return 3 !== a && 2 !== a || (b -= this.frozenTrailingRowCount()), this.gr(b, a)
                },
                dr: function(a) {
                    k(a) && (a = 3);
                    var b = q(this, a);
                    return 3 !== a && 1 !== a || (b -= this.frozenTrailingColumnCount()), this.br(b, a)
                },
                TJ: function(a, b) {
                    var c, d, e;
                    if (a) for (c = 0, d = l(a); c < d; c++) if (e = a[c], b.intersect(e.row, e.col, s(e), t(e))) return a.splice(c--, 1), this.TJ(a, b.union(e));
                    return b
                },
                Ix: function(a) {
                    var b, c = this,
                        d = c.ITa,
                        e = l(d.getSelections()),
                        f = h(-1, -1, 0, 0);
                    return e <= 0 ? f : (b = d.getActiveSelectedRangeIndex(), 3 === a ? (b--, b < 0 && (b = e - 1), d.do("setActiveSelectedRangeIndex", b)) : 4 === a && (b++, b >= e && (b = 0), d.do("setActiveSelectedRangeIndex", b)), b = d.getActiveSelectedRangeIndex(), b >= 0 && (f = d.getSelections()[b]), f)
                }
            }), d.$n("selection", {
                init: function() {
                    this.ITa.do("addSelection", 0, 0, 1, 1)
                }
            }), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(42),
                d = c(26),
                e = c(44).GC$,
                f = c(43),
                g = c(58).Worksheet,
                h = d.l.Ra,
                i = d.j.Fa,
                j = "boolean",
                k = "string",
                l = "number";

            function m(a, b, c) {
                for (var d = a[c - b]; d < c;) d = a[d - b];
                return d
            }
            function n(a) {
                return d.pc.bc(d.pc.ec(a))
            }
            function o(a, b) {
                return a instanceof Date && b instanceof Date ? h(a) === h(b) : typeof a === k && typeof b === k ? a.toLowerCase() === b.toLowerCase() : a === b
            }
            function p(a, b, c, d) {
                var e = 0,
                    f, g;
                return i(a) || (f = d ? a.backColor : a.foreColor, i(f) || (f = n(f))), i(b) || (g = d ? b.backColor : b.foreColor, i(g) || (g = n(g))), f = f || "", g = g || "", e = f === g ? 0 : f === c ? 1 : g === c ? -1 : 0
            }
            function q(a, b) {
                var c, d, e, f, g;
                return a instanceof Date && (a = h(a)), b instanceof Date && (b = h(b)), c = typeof a, d = typeof b, e = c === k, f = d === k, g = d === l, c === d || c !== l && !g ? !(c !== j || !f) || (!e || d !== j) && (e && f ? a.toLowerCase() > b.toLowerCase() : a > b) : g
            }
            function r(a, b, c, d, e, f) {
                var g, h, j, k, m, n, r, s, t, u, v, w, x, y = 0,
                    z = e,
                    A = a,
                    B = b;
                if (z) for (g = 0; g < z.length && (z[g] && (h = z[g].ascending, j = z[g].index, 0 <= j && (n = d ? A : j, r = d ? j : A, s = d ? B : j, t = d ? j : B, f ? (k = f[n][r], m = f[s][t]) : (k = c.getValue(n, r), m = c.getValue(s, t)), i(z[g].color) ? (w = i(k) || "" === k || typeof k === l && isNaN(k), x = i(m) || "" === m || typeof m === l && isNaN(m), w || x ? w && x ? y = 0 : w && !x ? y = 1 : !w && x && (y = -1) : y = o(k, m) ? 0 : q(k, m) ? h ? 1 : -1 : h ? -1 : 1) : (u = c.getActualStyle(n, r, 3, !1, !1, !0), v = c.getActualStyle(s, t, 3, !1, !1, !0), y = p(u, v, z[g].color, z[g].isBackColor), h || (y *= -1)))), 0 === y); g++);
                return y
            }
            function s(a, b, c, d, e) {
                var f, g, h, i, j, k, l, m = a.length;
                if (m <= 1) return a;
                for (f = Math.floor(m / 2), g = a[f], h = [], i = [], j = [], k = 0; k < m; k++) l = r(a[k], g, b, c, d, e), l < 0 ? h.push(a[k]) : l > 0 ? i.push(a[k]) : j.push(a[k]);
                return s(h, b, c, d, e).concat(j, s(i, b, c, d, e))
            }
            function t(a, b, c, d, e, f, g, h) {
                var i, j, k, l, m, n = f ? d : e,
                    o = f ? b : c,
                    p = [];
                for (i = 0; i < n; i++) p[i] = o + i;
                if (f) for (k = [], j = p.length - 1; j >= 0; j--) l = p[j], a.Ps && a.Ps(l) && (p.splice(j, 1), k.push({
                    mi: j,
                    Qb: l
                }));
                if (p = s(p, a, f, g, h), f) for (j = k.length - 1; j >= 0; j--) m = k[j], p.splice(m.mi, 0, m.Qb);
                return p
            }
            function u(a, b, c) {
                var d = a.qg(b, c, !1);
                d && d.hasListeners() && d.Yg()
            }
            function v(a, b, d, e) {
                var f, g = c(33),
                    h = g.CalcOperatorAdjustor,
                    i = h.zj(a.xf, a.xf, a.Kf(b, d), b, d, 0, 0);
                a.Rf(b, d, i, e), f = a.qg(b, d, !! i), f && f.og()
            }
            e.extend(g.prototype, {
                sortRange: function(a, c, d, e, h, i) {
                    var j, k, l, n, o, p, q, r, s, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U = this,
                        V = U.getRowCount(),
                        W = U.getColumnCount();
                    if (!b.X3 || U.Vq(a, 0, d, W, !1)) {
                        if (j = U.getSpans(new f.Range(a, c, d, e)), j && j.length > 0) return !1;
                        if (k = U.tables, k && (l = k.s$(a, c, d, e), n = 1 === l.length && l[0].dataRange().equals(f.kf(a, c, d, e)), !(l.length <= 0 || n))) return !1;
                        if (o = U.wq, p = o && o.Ou || n && l[0] && l[0].LZ(), a === -1 && (a = 0), d === -1 && (d = V), c === -1 && (c = 0), e === -1 && (e = W), a < 0 || a >= V || c < 0 || c >= W || d < 0 || a + d > V || e < 0 || c + e > W || !i) return !1;
                        U.suspendPaint(), U.suspendEvent(), b.X3 && U.suspendCalcService();
                        try {
                            if (q = [], p) for (r = [], s = a; s < a + d; s++) for (r[s] = [], w = c; w < c + e; w++) r[s][w] = U.getValue(s, w);
                            if (x = t(U, a, c, d, e, h, i, r)) {
                                for (G = U.ITa, H = b.X3 && U.Bj(), I = b.X3 && U.yj(), J = G.Ky, M = h ? a : c, N = h ? a + d : c + e, P = h ? c : a, Q = h ? c + e : a + d, L = M; L < N; L++) if (K = m(x, M, L), L !== K) for (h ? (y = L, A = K) : (z = L, B = K), O = P; O < Q; O++) h ? (z = O, B = O) : (y = O, A = O), p && (C = r[y][z], D = r[A][B]), J && (E = J.get(y, z), F = J.get(A, B)), H && I && (u(H, y, z), u(H, A, B), H._f(y, z, A, B), v(H, y, z), v(H, A, B)), G.do("swapNode", y, z, A, B), U.uja && U.wja(y, z, A, B), J && J.qUa(E, y, z, F, A, B), p && (r[y][z] = D, r[A][B] = C), q.push({
                                    row: y,
                                    col: z
                                }), q.push({
                                    row: A,
                                    col: B
                                });
                                if (p) {
                                    for (s = a; s < a + d; s++) for (w = c; w < c + e; w++) U.setValue(s, w, r[s][w]);
                                    r = null
                                }
                                if (H) {
                                    for (R = a; R < a + d; R++) for (S = c; S < c + e; S++) T = H.Kf(R, S), T && H.fg(R, S, T, void 0);
                                    U.getCalcService().recalcRange(I, a, c, d, e)
                                }
                                return g.ao(U, "sortRangeChanged", {
                                    column: c,
                                    columnCount: e
                                }), !0
                            }
                            return !1
                        } finally {
                            b.X3 && U.resumeCalcService(!1), U.resumeEvent(), U.resumePaint(), U.Bu(a, c, d, e, q, 4)
                        }
                    }
                },
                hK: function() {
                    var a = this.options;
                    return !a.isProtected || a.protectionOptions.allowSort
                },
                wja: function(a, b, c, d) {
                    var e = this,
                        f = e.getDataValidator(a, b),
                        g = e.getDataValidator(c, d);
                    e.setDataValidator(a, b, g), e.setDataValidator(c, d, f)
                }
            }), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d = c(42),
                e = c(58).Worksheet,
                f = c(53).Style,
                g = c(44).GC$,
                h = c(43).Range,
                i = c(26).j.Fa,
                j = e.prototype;

            function k(a, b) {
                var c = a,
                    d = b;
                return function(a) {
                    var b, e, f = this,
                        g = f.sheet,
                        h = f.row,
                        i = f.col,
                        j = f.sheetArea;
                    if (0 === arguments.length) return c.call(g, h, i, j);
                    if (h >= 0 && i >= 0) for (b = h; b < h + f.rowCount; b++) for (e = i; e < i + f.colCount; e++) l(g, b, e, j) && d.call(g, b, e, a, j);
                    return f
                }
            }
            function l(a, b, c, d) {
                var e = a.getRowCount(d),
                    f = a.getColumnCount(d);
                return c < 0 && 0 <= b && b < e || b < 0 && 0 <= c && c < f || 0 <= b && b < e && 0 <= c && c < f
            }
            function m(a, b, c, d, e, f) {
                var g = this;
                b < 0 && (b = d = -1), c < 0 && (c = e = -1), g.sheet = a, g.row = b, g.rowCount = i(d) ? 1 : d, g.col = c, g.colCount = i(e) ? 1 : e, g.sheetArea = i(f) ? 3 : f
            }
            function n(a, b, c, d, e, g) {
                if (l(a, b, c, g)) {
                    var h = a.Iq(b, c, g);
                    h || (h = new f), h[d] = e, a.setStyle(b, c, h, g)
                }
            }
            b = m.prototype = {
                constructor: m,
                value: k(j.getValue, j.setValue),
                text: k(j.getText, j.setText),
                formula: k(function(a, b) {
                    return d.X3 && this.getFormula(a, b)
                }, function(a, b, c, e) {
                    d.X3 && this.setFormula(a, b, c, e)
                }),
                tag: function(a) {
                    var b = this,
                        c = b.sheet,
                        d = b.row,
                        e = b.col,
                        f = b.rowCount,
                        g = b.colCount,
                        h = b.sheetArea,
                        i, j;
                    if (0 === arguments.length) return c.getTag(d, e, h);
                    if (d >= 0 && e >= 0) for (i = d; i < d + f; i++) for (j = e; j < e + g; j++) c.setTag(i, j, a, h);
                    else if (d >= 0) for (i = d; i < d + f; i++) c.setTag(i, -1, a, h);
                    else if (e >= 0) for (j = e; j < e + g; j++) c.setTag(-1, j, a, h);
                    return b
                },
                width: function(a) {
                    var b, c = this,
                        d = c.sheet,
                        e = c.row,
                        f = c.col,
                        g = c.sheetArea;
                    if (0 !== arguments.length) {
                        if (e < 0) for (b = 0; b < c.colCount; b++) d.setColumnWidth(b + f, a, g);
                        return c
                    }
                    if (e < 0) return d.getColumnWidth(f, g)
                },
                height: function(a) {
                    var b, c = this,
                        d = c.sheet,
                        e = c.row,
                        f = c.col,
                        g = c.sheetArea;
                    if (0 !== arguments.length) {
                        if (f < 0) for (b = 0; b < c.rowCount; b++) d.setRowHeight(b + e, a, g);
                        return c
                    }
                    if (f < 0) return d.getRowHeight(e, g)
                },
                visible: function(a) {
                    var b, c, d = this,
                        e = d.sheet,
                        f = d.row,
                        g = d.col,
                        h = d.sheetArea;
                    if (0 !== arguments.length) {
                        if (g < 0 && f >= 0) for (b = 0; b < d.rowCount; b++) e.setRowVisible(b + f, a, h);
                        else if (g >= 0 && f < 0) for (c = 0; c < d.colCount; c++) e.setColumnVisible(c + g, a, h);
                        return d
                    }
                    return g < 0 && f >= 0 ? e.getRowVisible(f, h) : g >= 0 && f < 0 ? e.getColumnVisible(g, h) : void 0
                },
                resizable: function(a) {
                    var b, c, d = this,
                        e = d.sheet,
                        f = d.row,
                        g = d.col,
                        h = d.sheetArea;
                    if (0 !== arguments.length) {
                        if (g < 0 && f >= 0) for (b = 0; b < d.rowCount; b++) e.setRowResizable(b + f, a, h);
                        else if (g >= 0 && f < 0) for (c = 0; c < d.colCount; c++) e.setColumnResizable(c + g, a, h);
                        return d
                    }
                    return g < 0 && f >= 0 ? e.getRowResizable(f, h) : g >= 0 && f < 0 ? e.getColumnResizable(g, h) : void 0
                },
                tq: function(a) {
                    var b = this;
                    return b.sheet.tq(b.row, b.col, a, b.sheetArea)
                },
                _w: function(a, b) {
                    var c = this,
                        d, e, f = c.sheet,
                        g = c.row,
                        h = c.col,
                        i = c.rowCount,
                        j = c.colCount,
                        k = c.sheetArea;
                    if (g >= 0 && h >= 0) for (d = g; d < g + i; d++) for (e = h; e < h + j; e++) n(f, d, e, a, b, k);
                    else if (g >= 0) for (e = -1, d = g; d < g + i; d++) n(f, d, e, a, b, k);
                    else if (h >= 0) for (d = -1, e = h; e < h + j; e++) n(f, d, e, a, b, k);
                    return c
                },
                styleName: k(j.getStyleName, j.setStyleName),
                clear: function(a) {
                    var b = this;
                    b.sheet.clear(b.row, b.col, b.rowCount, b.colCount, b.sheetArea, a)
                },
                setBorder: function(a, b) {
                    var c, d, e, f, g, i, j, k, l, m, n, o = this,
                        p = o.sheet,
                        q = o.sheetArea;
                    p.suspendPaint();
                    try {
                        if (c = new h(o.row, o.col, o.rowCount, o.colCount), d = p.Tq(c, q), e = d.row, f = d.col, g = d.rowCount, i = d.colCount, l = b.all, m = b.outline, n = b.inside, b.left || l || m) for (j = 0; j < g; j++) p.getCell(e + j, f, q).borderLeft(a);
                        if (b.top || l || m) for (k = 0; k < i; k++) p.getCell(e, f + k, q).borderTop(a);
                        if (b.right || l || m) for (j = 0; j < g; j++) p.getCell(e + j, f + i - 1, q).borderRight(a);
                        if (b.bottom || l || m) for (k = 0; k < i; k++) p.getCell(e + g - 1, f + k, q).borderBottom(a);
                        if (b.diagonalUp) for (j = 0; j < g; j++) for (k = 0; k < i; k++) p.getCell(e + j, f + k, q).diagonalUp(a);
                        if (b.diagonalDown) for (j = 0; j < g; j++) for (k = 0; k < i; k++) p.getCell(e + j, f + k, q).diagonalDown(a);
                        if (b.innerHorizontal || l || n) for (j = 0; j < g - 1; j++) for (k = 0; k < i; k++) p.getCell(e + j, f + k, q).borderBottom(a), p.getCell(e + j + 1, f + k, q).borderTop(a);
                        if (b.innerVertical || l || n) for (k = 0; k < i - 1; k++) for (j = 0; j < g; j++) p.getCell(e + j, f + k, q).borderRight(a), p.getCell(e + j, f + k + 1, q).borderLeft(a)
                    } finally {
                        p.resumePaint()
                    }
                }
            }, g.each(["backColor", "foreColor", "hAlign", "vAlign", "themeFont", "font", "formatter", "borderLeft", "borderTop", "borderRight", "borderBottom", "diagonalDown", "diagonalUp", "locked", "textIndent", "wordWrap", "shrinkToFit", "backgroundImage", "backgroundImageLayout", "cellType", "tabStop", "textDecoration", "imeMode", "watermark", "cellPadding", "labelOptions", "quotePrefix", "isVerticalText"], function(a, c) {
                b[c] = function(a) {
                    return 0 === arguments.length ? this.tq(c) : this._w(c, a)
                }
            }), m.Pl = k, d.CellRange = m, g.extend(j, {
                getRange: function(a, b, c, d, e) {
                    return new m(this, a, b, c, d, e)
                },
                getCell: function(a, b, c) {
                    return i(b) && (b = -1), new m(this, a, b, 1, 1, c)
                }
            }), a.exports = d
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(42),
                d = c(44).GC$,
                e = c(43),
                f = c(33),
                g = c(62).NameInfo,
                h = c(63).Workbook,
                i = c(26),
                j = i.u.Nb,
                k = function() {
                    return i.C(b.SR)()
                },
                l = void 0,
                m = null,
                n = {
                    qv: function(a) {
                        var c = this,
                            d = c.Wu;
                        c.Wu = new f.CalcService, a && d && c.Wu.cloneFrom(d), c.yv = new b.CalcEngine.SpreadSource(c), c.zv = c.Wu.getGlobalSourceModel(c.yv)
                    },
                    addCustomFunction: function(a) {
                        this.Xu(a)
                    },
                    Xu: function(a) {
                        if (!(a && a instanceof f.Functions.Function)) throw Error(k.Exp_InvalidCustomFunction);
                        this.Su[j(a.name)] = a
                    },
                    getCustomFunction: function(a) {
                        return a ? this.Su[j(a)] : l
                    },
                    removeCustomFunction: function(a) {
                        a && (delete this.Su[j(a)], this.iK())
                    },
                    clearCustomFunctions: function() {
                        this.Su = {}
                    },
                    addCustomName: function(a, b, c, d, e) {
                        this.Yu(a, b, c, d, !1, e)
                    },
                    Yu: function(a, b, c, d, e, f) {
                        var h, i, l, n, o;
                        if (!a || !b) throw Error(k().Exp_InvalidCustomName);
                        if (h = this, h.Wu) {
                            if (i = this.getActiveSheet(), l = i ? i.yj() : m, e) try {
                                n = h.Wu.parse(l, b, c, d, !1, !1, !0)
                            } catch (a) {} else n = h.Wu.parse(l, b, c, d);
                            h.Tu[j(a)] = new g(a, n, c, d, f), e || (o = {}, o[a] = a, this.Zu(o, !0))
                        }
                    },
                    getCustomName: function(a) {
                        return a ? this.Tu[j(a)] : l
                    },
                    getCustomNames: function() {
                        var a = [];
                        return d.each(this.Tu, function(b, c) {
                            a.push(c)
                        }), a
                    },
                    removeCustomName: function(a) {
                        if (a) {
                            delete this.Tu[j(a)];
                            var b = {};
                            b[a] = a, this.Zu(b, !1)
                        }
                    },
                    clearCustomNames: function() {
                        var a = this.Tu;
                        this.Tu = {}, this.Zu(a, !1)
                    },
                    Zu: function(a, b) {
                        var c, d;
                        if (a && 0 !== a.length) {
                            c = this.zv;
                            for (d in a) c && c.updateNameCalc(d, b);
                            this.iK()
                        }
                    },
                    iK: function() {
                        if (this.Wu && !this.Wu.IsSuspended()) {
                            var a = this.getActiveSheet();
                            a && (a.suspendPaint(), this.Wu.recalculateAll(), a.resumePaint())
                        }
                    },
                    getCalcService: function() {
                        return this.Wu
                    },
                    Cf: function() {
                        return this.Wu
                    },
                    suspendCalcService: function(a) {
                        this.Wu && this.Wu.suspend(a)
                    },
                    resumeCalcService: function(a) {
                        this.Wu && this.Wu.resume(a)
                    }
                };
            d.extend(h.prototype, n), h.$n("calc", {
                priority: 1e3,
                init: function() {
                    this.Su = {}, this.Tu = {}
                },
                toJson: function(a) {
                    var b, c, e, f = this,
                        g = f.Su;
                    d.isEmptyObject(g) || (a.customFunctions = g), b = [], c = f.getCustomNames(), e = f.Wu, c && e && (d.each(c, function(a, c) {
                        var d = c.getName(),
                            f = c.getRow(),
                            g = c.getColumn(),
                            h = c.getExpression(),
                            i = c.getComment(),
                            j = e.unparse(null, h, f, g, !1, !0),
                            k = {
                                name: d,
                                formula: j,
                                row: f,
                                col: g
                            };
                        i && (k.comment = i), b.push(k)
                    }), b.length > 0 && (a.names = b))
                },
                fromJson: function(a, b, c) {
                    var d, f, g, h, i, j, k, l, m, n, o, p, q, r, s = this,
                        t = s.Wu;
                    if (t && t.suspend(), s.clearCustomNames(), d = a.names) for (f = 0; f < d.length; f++) g = d[f], s.Yu(g.name, g.formula, g.row, g.col, !0, g.comment);
                    if (s.clearCustomFunctions(), h = a.customFunctions) for (i in h) h.hasOwnProperty(i) && (j = h[i], k = e.getTypeFromString(j.typeName), k && (l = new k, l.fromJSON(j, b), s.Xu(l)));
                    if (o = a.sheets, p = [], o) {
                        m = 0;
                        for (q in o)"string" == typeof q && (r = o[q], n = s.getSheetFromName(r.name || q), p.push(n), n.nameFunctionsFromJSON(r, b, c), m++);
                        for (m = 0; m < p.length; m++) p[m].formulaFromJSON(o[p[m].name()], b, c)
                    }
                    t && (a.noRecalc || c && c.doNotRecalculateAfterLoad ? t.resumeWithoutCalc() : t.resume(!0))
                }
            }), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a = c(42),
                b = c(63).Workbook,
                d = c(53).Style,
                e = c(44).GC$,
                f = c(43),
                g = c(26).CultureManager,
                h = c(64),
                i = h.UndoManager,
                j = b._n,
                k = e.each,
                l = f.Ul.Ol,
                m = parseFloat;

            function n(a, b) {
                return a.hasOwnProperty(b)
            }
            function o(a) {
                var b, c, d, e;
                if (!a || "string" != typeof a) return 1;
                if (b = a.split("."), c = b.length, c > 3) return 3;
                if (d = m(b[0]), c <= 2) return isNaN(d) ? 1 : d;
                if (e = m(b[1]), d >= 10) return d;
                if (d >= 3) {
                    if (e >= 20143) return 3;
                    if (e >= 20142) return 2
                }
                return 1
            }
            function p(a, b) {
                var c, d, e, f, g = this,
                    h = b && b.frozenColumnsAsRowHeaders,
                    i = b && b.frozenRowsAsColumnHeaders,
                    j = 0,
                    k = a.sheets;
                if (i || h) for (d in k)"string" == typeof d && (e = k[d], f = l(e.index) ? e.index : e.mi, c = g.sheets[l(f) ? f : j], i && c.deleteRows(0, e.frozenRowCount), h && c.deleteColumns(0, e.frozenColCount), j++)
            }
            e.extend(b.prototype, {
                toJSON: function(c) {
                    var d, g, h, i, l, m, o, p, q, r, s = this,
                        t = {
                            version: f.productInfo.productVersion
                        },
                        u = c && c.rowHeadersAsFrozenColumns,
                        v = c && c.columnHeadersAsFrozenRows,
                        w = u || v;
                    for (w && (d = new b, d.fromJSON(s.toJSON({
                        includeBindingSource: !0
                    })), s = d), s.mv = !0, s.suspendPaint(), s.suspendEvent(), a.X3 && s.Wu.suspend(!0), g = s.startSheetIndex(), g && (t.startSheetIndex = g), k(s.options, function(a, c) {
                        "_ps" !== a && b.Qp[a] !== c && (t[a] = c)
                    }), h = s.getSheetCount(), h !== b.nv && (t.sheetCount = h), i = s.getActiveSheetIndex(), i !== b.ov && (t.activeSheetIndex = i), l = {}, m = 0; m < h; m++) o = s.getSheet(m), l[o.name()] = o.toJSON(c), l[o.name()].index = m;
                    if (e.isEmptyObject(l) || (t.sheets = l), p = [], q = s.Lq, q) {
                        for (r in q) n(q, r) && p.push(q[r]);
                        p.length > 0 && (t.namedStyles = p)
                    }
                    return j && k(j, function(a, b) {
                        b.toJson && b.toJson.call(s, t, c)
                    }), s.mv = !1, a.X3 && s.Wu.resume(!1), s.resumeEvent(), s.resumePaint(), t
                },
                fromJSON: function(c, e) {
                    var h, m, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R;
                    if (c) {
                        h = this, m = o(c.version), q = m < 3, r = {
                            noSchema: q,
                            version: m
                        }, s = f.Vl.Xl(), h.mv = !0, h.suspendPaint(), h.suspendEvent(), t = g.culture(), g.culture("");
                        try {
                            h.T3(), h.pv = new i(h, (-1), h.options.allowUndo), a.X3 && h.qv(!0), a.X3 && h.Wu.suspendAdjust(), h.lv = -1, h.clearSheets(), u = h.options, v = c.canUserEditFormula, l(v) && (u.allowUserEditFormula = v), w = c.allowDragDrop, l(w) && (u.allowUserDragDrop = w), x = c.allowDragFill, l(x) && (u.allowUserDragFill = x);
                            for (y in u) n(u, y) && (z = c[y], l(z) && (u[y] = z));
                            if (A = c.sheetCount, l(A) || (A = b.nv), h.sw(A, 0), h.Lq = {}, B = c.namedStyles) for (C = 0; C < B.length; C++) D = B[C], E = new d, E.fromJSON(D, q), h.Kq(E);
                            if (F = 0, H = c.sheets, K = !1, L = !0, H) for (M in H)"string" == typeof M && (N = H[M], O = l(N.index) ? N.index : N.mi, G = h.sheets[l(O) ? O : F], G.fromJSON(N, !1, r, e, !0), F++, J = N.allowUndo, K ? L = L && J === I : (I = J, K = !0));
                            l(I) && L && (u.allowUndo = I), P = c.activeSheetIndex, l(P) || (P = b.ov), h.dq(P, 0), Q = c.startSheetIndex, l(Q) && h.startSheetIndex(Q), j && k(j, function(a, b) {
                                var d = b.fromJson;
                                d && d.call(h, c, q, e)
                            }), a.X3 && h.Wu.resumeAdjust(), p.call(h, c, e)
                        } finally {
                            a.X3 && h.Wu.resumeAdjust(), g.culture(t), h.mv = !1, R = h.getActiveSheet(), s && R && R.zt(), h.resumeEvent(), h.fq(), h.resumePaint()
                        }
                    }
                }
            })
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, aa = c(58).Worksheet,
                ba = c(44).GC$,
                ca = c(43),
                da = c(54).CellTypes,
                ea = c(26),
                fa = c(42);
            fa.CellTypes || (fa.CellTypes = {}), b = fa.CellTypes, d = ea.j.Fa, e = ca.Vn, f = ca.Events.EditChange, g = ca.Vl, h = ca.Ul, i = h.Nl, j = h.Ml, k = j.msie, l = j.edge, m = j.chrome, n = h.nl, o = h.ol, p = h.Il, q = h.vl, r = h.rl(), s = h.fp, t = h.Voa, u = da.Base, v = da.Context, w = h.Ika, x = h.hZa, y = "left", z = "right", A = "center", B = "gcUIElement", C = "none", D = ".gcEditingInput", E = "width", F = "height", G = "text-align", H = "hidden", I = "word-wrap", J = "overflow", K = "normal", L = "break-word", M = "overflow-y", N = "scroll", O = "word-break", P = "float", Q = window, R = document, S = .337, T = r.iphone || r.ipad || r.android, U = null, V = void 0, W = Math.ceil, X = Math.min, Y = Math.max, Z = parseInt, $ = " ", _ = "​";

            function ga(a) {
                return T || 0 === a
            }
            function ha(a) {
                return ba(ga(a) ? i("textarea") : i("div"))
            }
            function ia(a) {
                return a && "DIV" === a.tagName && "true" === a.contentEditable
            }
            function ja(a) {
                return ia(a) ? k && parseFloat(j.version) < 10 ? h.Woa(a) : a.innerText : a.value
            }
            function ka(a, b) {
                ia(a) ? a.innerText = b : a.value = b
            }
            function la(a) {
                if (ia(a)) {
                    var b = Q.getSelection();
                    b.selectAllChildren(a), b.rangeCount > 0 && b.collapseToEnd()
                } else a.selectionStart = a.selectionEnd = a.value.length
            }
            function ma(a) {
                var b, c;
                return ia(a) ? (b = Q.getSelection(), b.rangeCount > 0 ? (c = b.getRangeAt(0), c.startOffset) : 0) : a.selectionStart
            }
            function na(a) {
                var b, c;
                return ia(a) ? (b = Q.getSelection(), b.rangeCount > 0 ? (c = b.getRangeAt(0), c.endOffset) : 0) : a.selectionEnd
            }
            function oa(a) {
                var b = a.keyCode,
                    c = a.shiftKey,
                    d = {
                        106: 42,
                        107: 43,
                        109: 45,
                        110: 46,
                        111: 47,
                        173: 45
                    },
                    e = {
                        186: 59,
                        187: 61,
                        188: 44,
                        189: 45,
                        190: 46,
                        191: 47,
                        192: 96,
                        219: 91,
                        220: 92,
                        221: 93,
                        222: 39
                    },
                    f = {
                        186: 58,
                        187: 43,
                        188: 60,
                        189: 95,
                        190: 62,
                        191: 63,
                        192: 126,
                        219: 123,
                        220: 124,
                        221: 125,
                        222: 34
                    },
                    g = b;
                return b >= 96 && b <= 105 ? g = b - 48 : d[b] ? g = d[b] : c && f[b] ? g = f[b] : !c && e[b] ? g = e[b] : !c && b >= 65 && b <= 90 && (g = b + 32), g
            }
            function pa(a) {
                return a && "BR" === a.tagName
            }
            function qa(a) {
                return a && "SPAN" === a.tagName
            }
            function ra(a) {
                return a && "DIV" === a.tagName
            }
            function sa(a) {
                return a instanceof Text
            }
            function ta(a) {
                return a === _
            }
            function ua(a) {
                if (a && sa(a)) {
                    var b = a.textContent;
                    if (1 === b.length && ta(b[0])) return !0
                }
                return !1
            }
            function va(a) {
                if (a) {
                    var b = a.childNodes;
                    return qa(a) && 2 === b.length && pa(b[0]) && ua(b[1])
                }
                return !1
            }
            function wa(a, b, c, d) {
                var e = a.substr(0, b),
                    f = a.substr(c, a.length - c);
                return e + d + f
            }
            function xa(a, b, c, d, e, f) {
                var g, h, i, j, k, l = "",
                    m = a.childNodes,
                    n = m.length;
                for (g = 0; g < n; g++) h = m[g], qa(h) ? l += xa(h, b, c, d, e, f) : sa(h) ? (i = b && b.startContainer, j = b && b.endContainer, k = h.textContent, h === i || h === j ? i !== j ? h === i ? (l += wa(k, c, k.length, e), f = !0) : (l += wa(k, 0, d, ""), f = !1) : l += wa(k, c, d, e) : f || (l += k)) : pa(h) && !f && (l += "\n");
                return l
            }
            function ya(a, b, c, d, e) {
                var f, g, h = String.fromCharCode(oa(e));
                return ia(a) ? (f = Q.getSelection(), f.rangeCount > 0 && (g = f.getRangeAt(0), sa(g.startContainer)) ? xa(a, g, c, d, h) : g && g.startOffset === g.endOffset ? b + h : h) : wa(b, c, d, h)
            }
            function za(a, b) {
                for (var c = a && a.previousSibling; c;) {
                    if (b(c)) return c;
                    c = c.lastChild
                }
                return U
            }
            function Aa(a, b) {
                var c, d, e, f, g, h = a.childNodes.length;
                if (!ta(a.textContent[0]) || 0 !== b && 1 !== b) if (0 === b) d = a, a === a.parentNode.firstChild && (d = a.parentNode), e = za(d, va), c = e && e.lastChild;
                else {
                    if (ra(a)) return 1 === h && 1 === b ? c = a.firstChild.firstChild.lastChild : h > 1 && b === h && (c = a.lastChild), ua(c) ? {
                        zeroWidthCharNode: c,
                        previousTextNode: c.previousSibling.previousSibling
                    } : va(c) ? {
                        zeroWidthCharNode: c,
                        previousTextNode: za(d, sa)
                    } : U;
                    !qa(a) || b !== h && b !== h - 1 || (va(a) ? c = a : va(a.lastChild) && (c = a.lastChild))
                } else c = a;
                return c ? (qa(c) ? d = c : sa(c) && (f = c.previousSibling, g = c.parentNode, d = f === g.firstChild ? g : f), {
                    zeroWidthCharNode: c,
                    previousTextNode: za(d, sa)
                }) : U
            }
            function Ba(a, b, c) {
                if (1 === b && qa(c.firstChild) && qa(c.firstChild.firstChild)) {
                    var d = c.firstChild.firstChild.lastChild,
                        e;
                    if (a === c) return e = d.textContent, 1 === e.length && e[0] !== _ && pa(d.previousSibling);
                    if (d === a || pa(d) && a === d.previousSibling) return e = a.textContent, 1 === e.length && e[0] !== _ && pa(a.previousSibling)
                }
                return !1
            }
            function Ca(a, b) {
                var c, d, e, f, g, h, i, m, o, p, q = Q.getSelection();
                if (!(q.rangeCount <= 0)) {
                    if (c = q.anchorNode, d = q.anchorOffset, e = a.target, k && !l && b && Ba(c, d, e)) return f = parseFloat(j.version) < 10 ? xa(e) : e.innerText, g = f.slice(0, -1), e.innerHTML = g.replace(/\r/g, "").replace(/\n/g, "<br>​"), q.selectAllChildren(e), q.rangeCount > 0 && q.collapseToEnd(), void n(a);
                    if (h = Aa(c, d)) {
                        if (i = h.zeroWidthCharNode, m = h.previousTextNode, b) if (qa(i)) i.parentNode.removeChild(i);
                        else {
                            if (i.parentNode.removeChild(i.previousSibling), pa(m)) return void n(a);
                            o = q.getRangeAt(0), o.setStart(i, 0), o.setEnd(i, 1), o.deleteContents()
                        }
                        p = R.createRange(), p.setStartAfter(m), p.setEndAfter(m), p.collapse(!1), q.removeAllRanges(), q.addRange(p), n(a)
                    }
                }
            }
            function Da(a) {
                for (var b, c = a; c;) {
                    if (b = c.parentNode, c !== b.lastChild) return c.nextSibling;
                    c = b
                }
                return U
            }
            function Ea(a) {
                var b, c, d = a.anchorNode,
                    e = a.anchorOffset,
                    f = d.textContent,
                    g = f.length;
                if (e === g) {
                    if (b = Da(d), qa(b) && ta(b.textContent[0])) {
                        for (; qa(b.firstChild);) b = b.firstChild;
                        c = b.childNodes[1]
                    } else pa(b) && ta(b.nextSibling.textContent[0]) && (c = b.nextSibling);
                    return {
                        node: c,
                        offset: 1
                    }
                }
                return U
            }
            function Fa(a, b) {
                var c, d, e, f, g, h = Q.getSelection();
                h.rangeCount <= 0 || (c = Ea(h), c && (d = c.node, e = c.offset, b ? (f = h.getRangeAt(0), f.setStart(d, 0), f.setEnd(d, 1), f.deleteContents(), d.parentNode.removeChild(d.previousSibling)) : (g = R.createRange(), g.setStart(d, e), g.setEnd(d, e), g.collapse(!1), h.removeAllRanges(), h.addRange(g)), n(a)))
            }
            function Ga(a) {
                var b = Ja(a);
                return b && b.indexOf(" ") >= 0 && (b = w(b, " ", $)), b
            }
            function Ha(a, b) {
                var c, d, e, f, h, i, j, k, l, m, o = a.srcElement || a.target;
                o && "gcEditingInput" === o.getAttribute(B) && 13 === a.keyCode && (a.ctrlKey || a.altKey) && (c = g.Xl(), c instanceof aa && (d = c.getCellType(c.Jl, c.Kl), d && (ia(o) ? (e = Q.getSelection(), e.rangeCount > 0 && (f = e.getRangeAt(0), h = R.createElement("span"), h.innerHTML = "<br/>" + _, f.insertNode(h), i = R.createRange(), i.setStartAfter(h), i.setEndAfter(h), i.collapse(!1), e.removeAllRanges(), e.addRange(i))) : (j = o.selectionStart, k = o.value, l = k.substr(0, j), m = k.substr(j, k.length - j), o.value = l + "\n" + m, o.selectionStart = j + 1, o.selectionEnd = j + 1), d.updateEditor(c.BF, U, U, b))), n(a))
            }
            function Ia(a) {
                var b, c = a;
                return c ? c.indexOf(_) < 0 && c.indexOf("\n") < 0 ? c : (b = a.split("\n"), b.forEach(function(a, b, c) {
                    ta(a[0]) && (c[b] = a.substr(1))
                }), b.join("\n")) : c
            }
            function Ja(a) {
                var b, c = a;
                return c ? (b = c.length, b > 0 && "\n" === c[b - 1] && (c += _), c) : c
            }
            function Ka(a) {
                var b, c, d, e, f, g, h = Q.getSelection(),
                    i = !1,
                    j = 0,
                    k = 0;
                if (h.rangeCount > 0) return b = h.getRangeAt(0), c = ma(a), d = na(a), e = b.startContainer, f = b.endContainer, ra(e) && (i = !0, j = c), ra(f) && (k = d), g = La(a, c, d, e, f, i, j, k), g.content
            }
            function La(a, b, c, d, e, f, g, h) {
                var i, j, k, l, m, n, o;
                if (d === e && !f) return {
                    content: Ia(d.textContent.slice(b, c))
                };
                for (i = "", j = g, m = a.childNodes, n = h || m.length, j; j < n; j++) if (o = m[j], qa(o)) {
                    if (k = La(o, b, c, d, e, f, 0, 0), i += k.content, k.startFlag && (f = !0), k.endFlag) {
                        l = !0;
                        break
                    }
                } else if (sa(o) && o === d) i += o.textContent.slice(b, o.textContent.length), f = !0;
                else {
                    if (sa(o) && o === e) {
                        i += o.textContent.slice(0, c), l = !0;
                        break
                    }
                    f && (i += pa(o) ? "\n" : o.innerText || o.textContent)
                }
                return {
                    content: Ia(i),
                    startFlag: f,
                    endFlag: l
                }
            }
            function Ma(a, b) {
                var c, d = a.length,
                    e = [];
                for (c = 0; c < d; c++) e.push(t(a[c], b));
                return e
            }
            function Na(a) {
                var b, c = a.length,
                    d = 0;
                for (b = 0; b < c; b++) d += a[b];
                return d
            }
            function Oa(a, b, c, d) {
                var e, f, g = 0,
                    h = c;
                for (e = 0; e < a.length; e++) m && (h = d[e]), a[e] > b ? (f = W(a[e] / b), g += h * f) : g += h;
                return g
            }
            function Pa(a, b, c) {
                var d = ja(a);
                return d && "=" === d[0] || "" === d && "=" === b[0] || 0 === c && "=" === b[0]
            }
            b.EditorType = {
                textarea: 0,
                editableDiv: 1
            }, ba.inherit(Qa, u);

            function Qa(a) {
                u.call(this), this.allowOverflow = !0, this.typeName = "1", this.editorType = d(a) ? 1 : a
            }
            ba.extend(Qa.prototype, {
                getText: function(a, b) {
                    return a
                },
                paintValue: function(a, b, c, d, e, f, g, h) {
                    var i, j, k, l, n, o = this;
                    return b = o.getText(b, h), i = {}, h.quotePrefix = g.quotePrefix, j = o.format(b, g.formatter || g._autoFormatter, i, h), k = g.labelOptions, l = g.watermark, n = !k || 0 !== k.visibility, l && !j && n ? void o.paintText(a, l, c, d, e, f, g, h, l, i, S) : void((j || i.content && i.content.length) && (1 === g.vAlign && m && d--, o.paintText(a, b, c, d, e, f, g, h, j, i)))
                },
                createEditorElement: function(a, b) {
                    var c, d, e = a && a.sheet && a.sheet.parent && a.sheet.parent.qo,
                        f = q(e) + 1e3;
                    return ba(b).css("z-index", f), c = ha(this.editorType), c.css({
                        font: "normal 11pt calibri",
                        outline: C,
                        resize: C,
                        border: C,
                        padding: "1px",
                        "vertical-align": "top",
                        "min-height": "0px",
                        "box-sizing": "content-box"
                    }).css(I, K).attr({
                        tabindex: -1,
                        autocomplete: "off",
                        contenteditable: !0
                    }).css(J, H).attr(B, "gcEditingInput"), j.safari && c.css("-webkit-user-select", "auto"), d = ia(c[0]), d && (c.css("display", "table-cell"), c.css(O, K)), c[0]
                },
                getEditorValue: function(a, b) {
                    var c, e;
                    return a && (c = ja(a), !d(c) && c.length > 0) ? (e = Ia(c), e = e.replace(/\r\n?/g, "\n"), e.indexOf($) < 0 ? e : w(e, $, " ")) : U
                },
                setEditorValue: function(a, b, c) {
                    var e, f;
                    a && (e = c && c.sheet && c.sheet.HF, f = Ga(b), k ? e && c.isImeInput || ka(a, d(f) ? "" : f) : ka(a, e ? "" : f))
                },
                selectAll: function(a, b) {
                    if (a && a.select) a.select();
                    else {
                        var c = Q.getSelection();
                        c.selectAllChildren(a)
                    }
                },
                focus: function(a, b) {
                    this.isImeAware() && a ? (a.focus(), la(a)) : a.parentNode.parentNode.focus()
                },
                kp: function(a, b, c, d) {
                    var e = a && d && d.sheet,
                        f = {},
                        g = p(b, c, e, f);
                    return a.oja = f.formatter || V, g
                },
                activateEditor: function(a, b, c, e) {
                    var g, h, i, j, m = e && e.sheet;
                    m && (g = this, h = a, h && (i = ba(h), j = ia(h), g._editingElement = h, i.bind("keydown" + D, function(a) {
                        var d, f;
                        try {
                            d = a.keyCode, j && (8 === d ? Ca(a, !0) : 46 === d ? Fa(a, !0) : 37 === d ? Ca(a, !1) : 39 === d && Fa(a, !1)), f = 229 === d || 0 === d, f || g.kK || g.lK(h, b, c, a, e, !0), Ha(a, e)
                        } catch (a) {}
                    }), i.bind("keyup" + D, function(a) {
                        var d = a.keyCode,
                            i = a.ctrlKey,
                            k = a.altKey,
                            l = 229 === d || 0 === d;
                        l || g.kK || (46 !== d && 8 !== d && (90 !== d && 89 !== d || !i || k) || (j && "\n" === h.innerText && ba(h).empty(), g.lK(h, b, c, a, e)), (13 !== d && 9 !== d && 27 !== d || i || k) && m.Wq(f, {
                            sheet: m,
                            sheetName: m.name(),
                            row: m.Jl,
                            col: m.Kl,
                            editingText: g.getEditorValue(h, e)
                        }))
                    }), i.bind("mousedown" + D, function() {
                        1 === m.Px && (m.Px = 2, m.Cu(1, 2))
                    }), i.bind("compositionstart" + D, function() {
                        g.kK = !0, g.nK = ja(h)
                    }), i.bind("compositionupdate" + D, function(a) {
                        g.lK(h, b, c, a ? a : U, e, !0)
                    }), i.bind("compositionend" + D, function(a) {
                        var d, i, j, k;
                        g.lK(h, b, c, a ? a : U, e), g.kK = !1, d = a.keyCode, i = a.ctrlKey, j = a.altKey, k = g.getEditorValue(h, e) || "", g.nK !== k && (d === V || 13 !== d && 9 !== d || i || j) && m.Wq(f, {
                            sheet: m,
                            sheetName: m.name(),
                            row: m.Jl,
                            col: m.Kl,
                            editingText: k
                        })
                    }), j && (i.bind("copy" + D, function(a) {
                        var b = Q.clipboardData,
                            c = a.clipboardData,
                            e = Ka(a.currentTarget);
                        d(e) || (b && b.setData ? (b.setData("text", e), n(a)) : c && c.setData && (c.setData("text/plain", e), n(a)))
                    }), i.bind("paste" + D, function(a) {
                        var d, f, i, m, o, p, q, r = !1;
                        if (j) try {
                            k && !l && Q.clipboardData && Q.clipboardData.getData ? d = Q.clipboardData.getData("text") : a.clipboardData && a.clipboardData.getData && (d = a.clipboardData.getData("text/plain")), d = d.replace(/\r\n?/g, "\n"), d = Ga(d), f = Q.getSelection(), f.rangeCount > 0 && (i = f.getRangeAt(0), m = i.startOffset, o = i.endOffset, m !== o && i.deleteContents(), Pa(h, d, m) || (p = R.createElement("span"), p.innerText = d, i.insertNode(p), q = document.createRange(), q.setStartAfter(p), q.setEndAfter(p), q.collapse(!1), f.removeAllRanges(), f.addRange(q), r = !0))
                        } catch (a) {}
                        g.mK = setTimeout(function() {
                            g.lK(h, b, c, a, e), g.mK && (clearTimeout(g.mK), delete g.mK)
                        }, 10), r && n(a)
                    }))))
                },
                deactivateEditor: function(a, b) {
                    a && ba(a).unbind(D), this._editingElement = U
                },
                getEditingElement: function() {
                    return this._editingElement
                },
                lK: function(a, b, c, f, g, h) {
                    var i, j, l, n, p, q, r, t, u, w, B, D, Q, R, S, T, V, $, _, aa, ca, da, ea, fa, ga, ha, ka, la, oa, pa, qa, ra, sa, ta, ua = g && g.sheet,
                        va = this,
                        wa = a;
                    if (wa && ua && (i = ba(wa), j = ua.yl, l = ja(wa), ua.isEditing())) {
                        if (n = ia(wa), p = U, q = y, t = v.u5, u = 0, w = 0, B = 0, D = 0, b && (u = t(b, 0), w = t(b, 1), B = t(b, 2), D = t(b, 3), p = o(b.hAlign, a.LF), 1 === p ? q = A : 2 === p && (q = z), i.css(G, q), b.foreColor && i.css("color", b.foreColor), r = b.font || j.Bl(), r && (ua.zoom() > 1 && (r = j.Cl(r)), i.css("font", x(r))), b.textDecoration && va.lp(i, b.textDecoration)), Q = Z(i.css("padding-left"), 10) + Z(i.css("padding-right"), 10), R = Z(i.css("padding-top"), 10) + Z(i.css("padding-bottom"), 10), c && (S = ua.am(), T = c.width, c.x + c.width > S.width && (T = S.width - c.x), i.css(E, T - Q).css(F, c.height - R), d(p) || 0 === p ? wa.maxWidth = S.width - c.x - Q - w : 1 === p ? wa.maxWidth = 2 * Y(0, X(S.width - c.x - c.width - Q, c.x - S.Br - Q)) + c.width : 2 === p && (wa.maxWidth = c.x + c.width - S.Br - Q - w), i.css("max-width", wa.maxWidth + "px"), wa.maxHeight = S.height - c.y - R - B, wa.minWidth = Z(wa.style.width, 10), wa.minHeight = Z(wa.style.height, 10)), V = ma(wa), $ = na(wa), h = h && f && f.keyCode && ua.mm.LH(f) && 0 === V && $ === l.length, h = h || ua.HF, _ = h ? "" : l, r = wa.style.font, r || (r = j.Cl(j.Bl())), aa = s(r), !h && f && (ua.mm.LH(f) && 8 !== f.keyCode && (_ = ya(wa, _, V, $, f)), va.kK && (_ = k ? l : va.nK + f.data)), ca = [], ca = b && b.wordWrap ? e.Wn(_, Z(wa.style.width) - Q, r) : _.split(/\r\n|\r|\n/), fa = ca.length, wa.minWidth = X(wa.minWidth, wa.maxWidth), wa.minHeight = X(wa.minHeight, wa.maxHeight), b && b.wordWrap || fa > 0) {
                            if (m ? (ha = Ma(ca, r), ga = Na(ha)) : ga = fa * aa, b && b.wordWrap) i.css(I, L).css(J, H).css("max-width", wa.style.width);
                            else {
                                for (ka = 0, la = [], da = 0; da < fa; da++) ea = W(ua.rt(ca[da], r)), la.push(ea), ka = Y(ka, ea);
                                oa = i.css(I), pa = Z(wa.style.width), b || oa !== L ? ka <= wa.minWidth ? (i.css(E, wa.minWidth).css(I, K).css(J, H), n && i.css(O, K)) : ka > wa.minWidth && ka <= wa.maxWidth ? (i.css(E, ka).css(I, K).css(J, H), n && i.css(O, K)) : ka > wa.maxWidth && (i.css(E, wa.maxWidth - 2).css(I, L).css(J, H), ga = Oa(la, wa.maxWidth, aa, ha)) : ka > pa && (ga = Oa(la, pa, aa, ha))
                            }
                            ga <= wa.minHeight ? i.css(F, wa.minHeight).css(P, C) : ga > wa.minHeight && ga <= wa.maxHeight ? i.css(F, ga).css(P, C) : ga > wa.maxHeight && i.css(F, wa.maxHeight - 1).css(M, N).css(P, y)
                        }
                        p = i.css(G), qa = i.width() - wa.minWidth, d(p) || p === y || (p === A ? i.css(y, wa.originalLeft - qa / 2) : p === z && i.css(y, wa.originalLeft - qa)), b && n && (ra = b.vAlign, 1 === ra ? i.css("vertical-align", "middle") : 2 === ra && i.css("vertical-align", "bottom")), sa = Z(wa.style.height) + R + u + B, ta = Q + D + w, i.css(M) === N ? va.updateEditorContainer(wa, {
                            width: wa.offsetWidth + ta,
                            height: h ? 0 : sa
                        }, b) : va.updateEditorContainer(wa, {
                            width: Z(wa.style.width) + ta,
                            height: sa
                        }, b)
                    }
                },
                updateEditor: function(a, b, c, d) {
                    if (this.lK(a, b, c, U, d), k && a) {
                        var e = ba(a),
                            f = e.width();
                        e.width(f + 1).width(f)
                    }
                },
                updateImeMode: function(a, b, c) {
                    this.isImeAware() && a && v.hp(a, b)
                },
                isReservedKey: function(a, b) {
                    var c = a.srcElement || a.target,
                        d = a.keyCode,
                        e = a.ctrlKey,
                        f = a.altKey,
                        g = a.metaKey;
                    return !!(c && b && b.isEditing && "gcEditingInput" === c.getAttribute(B)) && (13 === d && (e && !a.shiftKey || f) || 90 === d && e && !f || 89 === d && e && !f || 67 === d && (e || g) && !f || 88 === d && (e || g) && !f)
                },
                isImeAware: function(a) {
                    return !0
                },
                toJSON: function() {
                    var a, b = {},
                        c = this;
                    for (a in c) c.hasOwnProperty(a) && "_editingElement" !== a && (b[a] = c[a]);
                    return b
                }
            }), b.Text = Qa, b._o[1] = Qa, a.exports = fa
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l = c(44).GC$.inherit,
                m = c(43),
                n = c(52).To,
                o = c(54).CellTypes,
                p = c(26),
                q = c(42);
            q.CellTypes || (q.CellTypes = {}), b = q.CellTypes, d = m.Im, e = m.Vn, f = m.Ul.wl, g = m.Ul.lZa, h = o.Base, i = o.Context, j = "none", k = Math.floor;

            function r(a, b) {
                return a = a || 0, d.Km(a, "gc-" + b + "-" + d.Jm(a))
            }
            function s(a, b, c, d, e, f) {
                var g = new Image,
                    h = f;
                h = h.replace('url("', ""), h = h.replace('")', ""), g.src = h, a.drawImage(g, b, c, d, e)
            }
            function t(a, b, c, d, e, g, h, k, l) {
                var m, n, o, q, r, t, u;
                if (!p.j.Fa(k)) {
                    if (a.save(), a.beginPath(), 0 === k && g.backColor) m = g.backColor, a.fillStyle !== m && (a.fillStyle = m), a.fillRect(b + 1, c + 1, d - 1, e - 1);
                    else try {
                        if (n = l && l.backgroundColor, o = l && l.backgroundImage, o && o.indexOf("linear-gradient") !== -1) {
                            for (q = f(o), m = a.createLinearGradient(b + d / 2, c, b + d / 2, c + e), r = 0, t = q.length; r < t; r++) u = q[r], m.addColorStop(u.point, u.color);
                            a.fillStyle = m, a.fillRect(b + 1, c + 1, d - 1, e - 1)
                        } else n ? (a.fillStyle = n, a.fillRect(b + 1, c + 1, d - 1, e - 1)) : o && o !== j && s(a, b + 1, c + 1, d - 1, e - 1, o)
                    } catch (a) {}
                    i.ap(a, b, c, d, e, g.backgroundImage, g.backgroundImageLayout, h.imageLoader), a.restore()
                }
            }
            function u(a, b, c, d, e, f, g, h, j, k, l) {
                var n, o, p;
                b && (n = j.visualState || 0, o = r(n, k), t(b, d, e, f, g, h, j, n, o), i.gp(b, d, e, f, g, h, k, o, l, j.needTopGridline, j.needLeftGridline), p = new m.Rect(d, e, f, g), a.i5 && (a.i5(b, p, h, j), p = a.f5(p, h)), p.width > 0 && p.height > 0 && a.paintContent(b, c, p.x, p.y, p.width, p.height, h, j))
            }
            function v(a, b, c, d, e, f) {
                var g, h = {
                        font: b,
                        fillStyle: c
                    },
                    i = d.sheet;
                return 0 !== d.visualState && parseInt(f.zIndex) > 2007 && i.vp(d.row, d.col, e) && (g = i.wp(d.row, d.col, e) ? a(d.visualState, "gc-columnHeader-selected") : a(d.visualState, "gc-columnHeader-highlight"), h.fillStyle = g.color, h.font = n.Ro(h.font, "bold")), h
            }
            function w(a, b, c, d, f, h, i, j, l, n, o) {
                var p, q, r, s, t, u, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W = {},
                    X = a.format(c, j.formatter, W);
                if (X) {
                    if (b.save(), b.beginPath(), p = l.sheet, q = p.rowFilter && p.rowFilter(), r = !! (q && q.Dl(l.row, l.col, n) && q.filterButtonVisible(l.col)), r && (h -= p.oK(new m.Rect(d, f, h, i), n).width), s = {
                            x: d,
                            y: f,
                            width: h,
                            height: i
                        }, t = j.foreColor, t || (t = o.color), t && b.fillStyle !== t && (b.fillStyle = t), u = v(a.getThemeStyle, j.font || b.font, b.fillStyle, l, n, o), g(b, u.font), b.fillStyle = u.fillStyle, w = 0, x = j.textIndent, x > 0 && (w = 8 * x), y = l.fontInfo.fontSize, j.isVerticalText) a.x$a(b, c, d, f, h, i, j, l, X, W, w, s, u.font, y);
                    else if (z = j.hAlign, A = j.vAlign, B = "left", C = 2, C += w, 1 === z ? (C = h / 2, B = "center") : 2 === z && (C = h - 1, C -= w, B = "right"), b.textAlign !== B && (b.textAlign = B), D = 0, E = "alphabetic", F = 2, G = j.wordWrap, H = l.lineHeight, I = [], J = 0, G && (K = h - 3 - w, K -= 1, I = e.Wn(X, K, u.font), J = I.length, J > 1 && 0 !== A && (D = (J - 1) * H)), L = y > 8 ? k((y - 8) / 5 + 2) : 1, M = H / 2 - y / 2 + L - 1, F += H - M, 1 === A ? F = (i - D) / 2 + H / 2 - M : 2 === A && (F = i - D - 2 - M), b.textBaseline !== E && (b.textBaseline = E), N = j.textDecoration, O = s.x, P = s.y, Q = s.width, R = s.height, j.wordWrap) if (b.rect(O, P, Q, R), b.clip(), b.beginPath(), S = f + F, J > 1) for (T = 0; T < J; T++) b.fillText(I[T], d + C, S), N && (U = b.measureText(I[T]).width, a.ip(b, N, d + C, S, U, y, L)), S += H;
                    else a.Oja(b, X, W, d + C, f + F, z, Q, w, N, L, y);
                    else V = b.measureText(X).width, (V > Q || H > R) && (b.rect(O, P, Q, R), b.clip(), b.beginPath()), a.Oja(b, X, W, d + C, f + F, z, Q, w, N, L, y);
                    b.restore()
                }
            }
            l(x, h);

            function x() {
                h.call(this), this.typeName = "2"
            }
            x.prototype.paint = function(a, b, c, d, e, f, g, h) {
                u(this, a, b, c, d, e, f, g, h, "columnHeader", 1)
            }, x.prototype.paintContent = function(a, b, c, d, e, f, g, h) {
                var i = r(h.visualState, "columnHeader");
                w(this, a, b, c, d, e, f, g, h, 1, i)
            }, b.ColumnHeader = x, b._o[2] = x, l(y, h);

            function y() {
                h.call(this), this.typeName = "3"
            }
            y.prototype.paint = function(a, b, c, d, e, f, g, h) {
                u(this, a, b, c, d, e, f, g, h, "rowHeader", 2)
            }, y.prototype.paintContent = function(a, b, c, d, e, f, g, h) {
                var i = r(h.visualState, "rowHeader");
                w(this, a, b, c, d, e, f, g, h, 2, i)
            }, b.RowHeader = y, b._o[3] = y, l(z, h);

            function z() {
                h.call(this), this.typeName = "4"
            }
            z.prototype.paint = function(a, b, c, e, g, h, i, k) {
                var l, m, n, o, p, q, r, t, u, v, w, x, y, z, A, B, C;
                if (a) {
                    a.save(), a.rect(c, e, g, h), a.clip(), a.beginPath(), l = this, m = k.visualState || 0;
                    try {
                        n = l.getThemeStyle(k.visualState, "gc-corner-" + d.Jm(m)), o = n && n.backgroundColor, p = n && n.backgroundImage, o ? (a.fillStyle = o, a.fillRect(c, e, g, h)) : p && p !== j && s(a, c, e, g, h, p)
                    } catch (a) {}
                    if (q = l.getThemeStyle(4, "gc-corner-triangle-" + d.Jm(m)), r = q && q.backgroundImage, t = q && q.backgroundColor, u = a.createLinearGradient(c + g / 2, e, c + g / 2, e + h), r && r.indexOf("linear-gradient") !== -1) {
                        for (v = f(r), w = 0, x = v.length; w < x; w++) y = v[w], u.addColorStop(y.point, y.color);
                        a.fillStyle = u
                    } else t && (u.addColorStop(.125, "#f6fafb"), u.addColorStop(1, t), a.fillStyle = u);
                    z = a.createLinearGradient(c + g, e + 1, c + g, e + h - 2), z.addColorStop(0, q.borderLeftColor), z.addColorStop(1, q.borderRightColor), a.beginPath(), a.strokeStyle = z, a.moveTo(c + g - .5, e), a.lineTo(c + g - .5, e + h), a.stroke(), k.needLeftGridline && (a.beginPath(), a.strokeStyle = q.borderLeftColor, a.moveTo(c + .5, e), a.lineTo(c + .5, e + h), a.stroke()), A = a.createLinearGradient(c, e, c + g - 2, e), A.addColorStop(0, q.borderTopColor), A.addColorStop(1, q.borderBottomColor), a.beginPath(), a.strokeStyle = A, a.moveTo(c, e + h - .5), a.lineTo(c + g, e + h - .5), a.stroke(), k.needTopGridline && (a.beginPath(), a.strokeStyle = q.borderTopColor, a.moveTo(c, e + .5), a.lineTo(c + g, e + .5), a.stroke()), a.beginPath(), B = 3, C = h, g < h && (C = g), a.moveTo(c + g - C + B, e + h - B), a.lineTo(c + g - B, e + h - B), a.lineTo(c + g - B, e + h - C + B), a.fill(), a.restore()
                }
            }, b.Corner = z, b._o[4] = z, a.exports = q
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {
                Exp_NotSupported: "NotSupportException",
                Exp_PasteExtentIsNull: "pasteExtent is null",
                Exp_InvalidPastedArea: "The pasted area should have the same size as the copy or cut area.",
                Exp_ChangePartOfArray: "Cannot change part of an array.",
                Exp_InvalidAndSpace: "Invalid {0}: {1} (must be between {2} and {3}).",
                Exp_SrcIsNull: "The argument 'src' is null",
                Exp_DestIsNull: "The argument 'dest' is null",
                Exp_InvalidCustomFunction: "invalid custom function",
                Exp_InvalidCustomName: "invalid custom name",
                Exp_IndexOutOfRange: "Index is out of range!",
                Exp_InvalidRange: "Invalid range",
                Exp_ArgumentOutOfRange: "ArgumentOutOfRange",
                Exp_PasteSourceCellsLocked: "Source sheet's cells are locked.",
                Exp_InvalidCopyPasteSize: "The copy and paste areas are not the same size.",
                Exp_PasteDestinationCellsLocked: "The cell you are trying to change is protected and therefore read-only.",
                Exp_PasteChangeMergeCell: "Cannot change part of a merged cell.",
                Tip_Row: "Row: ",
                Tip_Column: "Column: ",
                Tip_Height: "Height: {0} pixels",
                Tip_Width: "Width: {0} pixels",
                NewTab: "New...",
                Exp_EmptyNamedStyle: "The name of named style cannot be empty or null",
                Exp_SheetNameInvalid: "The sheet name can not be blank or contains these characters : *, :, [, ], ?, \\, /",
                Exp_ArrayFromulaSpan: "Array formulas are not valid in merged cells.",
                Exp_DestSheetIsNull: "destSheet is null",
                Exp_SheetIsNull: "sheet is null.",
                Exp_OverlappingSpans: "This operation will cause overlapping spans.",
                NeedCanvasSupport: "You need a browser which full supports HTML5 Canvas to run SpreadJS",
                lsru: ["", "6465706c6f796d656e74"],
                lsde: ["", "64657369676e6572"],
                ls1: ["", "506f776572656420627920477261706543697479205370726561642e5368656574732e0d0a596f752063616e206f6e6c79206465706c6f792074686973204556414c554154494f4e2076657273696f6e206c6f63616c6c792e0d0a54656d706f72617279207b317d206b6579732061726520617661696c61626c6520666f722074657374696e672e0d0a456d61696c2075732e73616c6573406772617065636974792e636f6d2e"],
                ls2: ["", "506f776572656420627920477261706543697479205370726561642e5368656574732e0d0a596f75722074656d706f72617279207b317d206b6579206578706972657320696e207b307d206461792873292e"],
                ls3: ["", "4c6963656e7365204e6f7420466f756e640d0a596f75206e65656420612076616c6964206c6963656e7365206b657920746f2072756e205370726561642e5368656574732e0d0a54656d706f72617279206b6579732061726520617661696c61626c6520666f72206576616c756174696f6e2e0d0a496620796f75207075726368617365642061206c6963656e73652c20796f7572206b657920697320696e20796f757220707572636861736520636f6e6669726d6174696f6e20656d61696c2e0d0a456d61696c2075732e73616c6573406772617065636974792e636f6d20696620796f75206e65656420617373697374616e63652e"],
                ls4: ["", "496e76616c6964206c6963656e7365206b65792e20456d61696c2075732e73616c6573406772617065636974792e636f6d20696620796f75206e6565642068656c702e"],
                ls5: ["", "506f776572656420627920477261706543697479205370726561642e5368656574732e0d0a596f75722074656d706f72617279207b317d206b65792068617320657870697265642e0d0a456d61696c2075732e73616c6573406772617065636974792e636f6d20666f722068656c702e"],
                ls6: ["", "506f776572656420627920477261706543697479205370726561642e536865657473204576616c756174696f6e2056657273696f6e0d0a4e6f74204c6963656e73656420666f7220446973747269627574696f6e"]
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            c(86), c(88), c(89), a.exports = c(90)
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f = c(87),
                g = c(26),
                h = f.Ul.Nl,
                i = g.j.Fa,
                j = f.Ul,
                k = j.fp,
                l = j.nl,
                m = f.CellTypes,
                n = m.Context,
                o = m.Base,
                p = f.GC$,
                q = p.each,
                r = j.hZa,
                s = null,
                t = void 0,
                u = Math.max,
                v = parseInt,
                w = "position",
                x = "absolute",
                y = "font",
                z = "left",
                A = "right",
                B = "top",
                C = "alphabetic",
                D = ".gcEditingInput",
                E = "background-color",
                F = "white",
                G = "green",
                H = "div",
                I = "_isFirstMouseUp",
                J = "_mouseupToken";

            function K(a, b, c, d) {
                var e, f = a.ITa;
                f && (f.do("setValueForKey", b, c, I, t, d), e = f.getValueForKey(b, c, J, d), e && (clearTimeout(e), f.do("setValueForKey", b, c, J, t, d)))
            }
            m.CheckBoxTextAlign = {
                top: 0,
                bottom: 1,
                left: 2,
                right: 3
            }, p.inherit(L, o), b = 12, d = {
                caption: "",
                textTrue: "",
                textIndeterminate: "",
                textFalse: "",
                textAlign: 3,
                isThreeState: !1
            };

            function L() {
                var a = this;
                o.call(a), a.typeName = "5", q(d, function(b, c) {
                    a["_" + b] = c
                })
            }
            function M(a) {
                return 5 * a
            }
            function N(a, c, d, e, f) {
                var g = M(f),
                    h = c.hAlign,
                    i = d.x - 1,
                    j = d.width + 1,
                    k = 0,
                    l = 0;
                return 0 === a || 1 === a ? (l = i + g, 1 === h ? l = i + j / 2 - b / 2 : 2 === h && (l = i + j - g - b)) : 2 === a ? (k = b + e, l = i + g + e, 1 === h ? l = i + j / 2 - k / 2 + e : 2 === h && (l = i + j - g - k + e)) : (k = b + e, l = i + g, 1 === h ? l = i + j / 2 - k / 2 : 2 === h && (l = i + j - g - k)), l - i
            }
            function O(a, c, d, e, f) {
                var g = M(f),
                    h = c.vAlign,
                    i = d.y - 1,
                    j = d.height + 1,
                    k = 0,
                    l = 0;
                return 0 === a ? (k = b + e, l = i + g + e, 1 === h ? l = i + j / 2 - k / 2 + e : 2 === h && (l = i + j - g - k + e)) : 1 === a ? (k = b + e, l = i + g, 1 === h ? l = i + j / 2 - k / 2 : 2 === h && (l = i + j - g - k)) : (l = i + g, 1 === h ? l = i + j / 2 - b / 2 : 2 === h && (l = i + j - g - b)), l - i
            }
            function P(a, b, c, d, e) {
                var f = b.getValue(c, d, e),
                    g = a.rK(f),
                    h = {
                        cmd: "editCell",
                        sheetName: b.name(),
                        row: c,
                        col: d,
                        newValue: g,
                        autoFormat: !0
                    };
                b.wu().execute(h), a.tw(b, c, d, e)
            }
            function Q(a, b, c, d, e) {
                var f = e && e.sheet,
                    g = a.getEditorValue(b, e);
                a.setEditorValue(b, g, e), a.updateEditor(b, c, d, e), a.tw(f, f.Jl, f.Kl, e.sheetArea)
            }
            e = {
                paintValue: function(a, c, d, e, g, h, l, m) {
                    var n, o, p, q, r, s, t, u, w, x, y, B, D, E, H, I, J, K, L, M, P;
                    a && (a.save(), a.rect(d, e, g, h), a.clip(), a.beginPath(), n = l.hAlign, o = l.font, p = l.foreColor, q = this, r = q._textAlign, s = q.getText(c, m), t = 0, u = 0, w = m.sheet, w && (t = w.dp(s, o), u = k(o), s && (x = s.split(/\r\n|\r|\n/), u *= x.length)), y = w.zoom(), B = b / 2, D = new f.Rect((++d), (++e), (--g), (--h)), E = v("" + (d + N(r, l, D, t, y))), H = v("" + (e + O(r, l, D, u, y))), I = z, J = E + 1, 1 === n ? (I = "center", J += B) : 2 === n && (I = A, J += 2 * B), o && a.font !== o && j.lZa(a, o), p && (a.fillStyle = p), K = l.textDecoration, L = m.fontInfo.fontSize, M = L > 8 ? Math.floor((L - 8) / 5 + 2) : 1, P = u / 2 - L / 2 + M - 1, a.textBaseline !== C && (a.textBaseline = C), 2 === r ? (a.textAlign = A, a.fillText(s, E + 1 - 2, H + B + u / 2 - P), K && q.ip(a, K, E + 1 - 2, H + B + u / 2 - P, t, L, M)) : 0 === r && (a.textAlign = I, a.fillText(s, J, H - 2 - P), K && q.ip(a, K, J, H - 2 - P, t, u)), a.save(), a.strokeStyle = "black", a.strokeRect(E + .5, H + .5, 2 * B + .05, 2 * B + .05), a.fillStyle = F, a.fillRect(E + 1, H + 1, 2 * B - 1, 2 * B - 1), q._isThreeState && i(c) ? (a.beginPath(), a.fillStyle = G, a.rect(E + 3, H + 3, 2 * (B - 2.5), 2 * (B - 2.5)), a.fill()) : !! c == !0 && (a.beginPath(), a.lineWidth = 2.5, a.moveTo(E + 3, H + B), a.lineTo(E + B, H + 2 * B - 3.5), a.lineTo(E + 2 * B - 1.5, H + 3), a.stroke()), a.restore(), p && (a.fillStyle = p), 3 === r ? (a.textAlign = z, a.fillText(s, E + 1 + 2 * B + 2, H + B + u / 2 - P), K && q.ip(a, K, E + 1 + 2 * B + 2, H + B + u / 2 - P, t, L, M)) : 1 === r && (a.textAlign = I, a.fillText(s, J, H + 2 * B + 2 + u - P), K && q.ip(a, K, J, H + 2 * B + 2 + u - P, t, L, M)), a.restore())
                },
                getText: function(a, b) {
                    return this.sK(a)
                },
                focus: function(a, b) {
                    a && a.parentNode.focus()
                },
                createEditorElement: function(a, c) {
                    var d, e, f, g, i = a && a.sheet && a.sheet.parent && a.sheet.parent.qo,
                        k = j.vl(i) + 1e3;
                    return p(c).css("z-index", k).attr("tabindex", 1).attr("gcUIElement", "gcEditingInput"), d = p(c.firstChild), d.css("overflow", "hidden"), e = p(h("input")), e.attr("type", "checkbox"), d.append(e), f = p(h("span")), f.css(w, x).css(y, r("normal 11pt calibri")).css("cursor", "default").css("white-space", "nowrap"), d.append(f), g = p(h(H)), g.css(w, x).css(E, G).css("width", 2 * (b / 2 - 2.5)).css("height", 2 * (b / 2 - 2.5)), d.append(g), s
                },
                rK: function(a) {
                    var b;
                    return b = this._isThreeState ? !i(a) && ( !! a != !0 || s) : !a
                },
                setEditorValue: function(a, b, c) {
                    var d, e, f, g, h, j, k, l;
                    a && (d = a.parentNode.children, e = d[0], f = d[1], g = d[2], e && f && g && (h = this, j = c && c.sheet, k = j && j.HF, k || (b = h.rK(b)), h._isThreeState ? i(b) ? (l = !1, p(g).show()) : (l = !! b, p(g).hide()) : l = !! b, e.checked = l, p(f).text(h.sK(b))))
                },
                getEditorValue: function(a, b) {
                    if (a) {
                        var c = a.parentNode.children,
                            d = c[0],
                            e = c[1],
                            f = c[2];
                        if (d && e && f && (!this._isThreeState || !p(f).isVisible())) return d.checked
                    }
                    return s
                },
                tw: function(a, b, c, d) {
                    var e = a.parent;
                    e && e.tw(a, b, c, d)
                },
                activateEditor: function(a, b, c, d) {
                    var e, f, g = d && d.sheet;
                    a && g && (e = p(a.parentNode.parentNode), f = this, e.bind("mousedown" + D, function(a) {
                        l(a)
                    }), e.bind("mouseup" + D, function() {
                        Q(f, a, b, c, d)
                    }), e.bind("keydown" + D, function(a) {
                        var b = a.keyCode;
                        if (!a.ctrlKey && !a.shiftKey && !a.altKey) {
                            if (32 === b) return f.tK = !0, l(a), !1;
                            8 === b && l(a)
                        }
                    }), e.bind("keyup" + D, function(e) {
                        !f.tK || 32 !== e.keyCode || e.ctrlKey || e.shiftKey || e.altKey || (f.tK = !1, Q(f, a, b, c, d))
                    }), p(a).bind("click", function(a) {
                        l(a)
                    }))
                },
                updateEditor: function(a, c, d, e) {
                    var f, g, h, i, j, l, m, n, o, q, s, t, u, v, w, x, A, C, D, E, F, G, H, I, J, K, L, M, P, Q = e && e.sheet;
                    a && Q && (f = Q.yl, g = a.parentNode, h = g.children, i = h[0], j = h[1], l = h[2], i && j && l && (p(g).width(d.width).height(d.height), m = p(j), n = m.text(), o = c.foreColor, q = c.font, s = c.hAlign, t = c.textDecoration, o && m.css("color", o), u = q ? q : f.Bl(), v = Q.zoom(), v > 1 && (u = f.Cl(u)), m.css(y, r(u)), w = Q.rt(n, u), x = k(u), n && (A = n.split(/\r\n|\r|\n/), x *= A.length), C = this, D = C._textAlign, E = N(D, c, d, w, v), F = O(D, c, d, x, v), p(i).css("margin-left", E).css("margin-top", F), G = i.offsetLeft, H = i.offsetTop, I = i.offsetWidth, J = i.offsetHeight, K = 0, L = 0, 0 === D ? (K = G, 1 === s ? K = G + b / 2 - w / 2 : 2 === s && (K = G + b - w), L = H - x) : 1 === D ? (K = G, 1 === s ? K = G + b / 2 - w / 2 : 2 === s && (K = G + b - w), L = H + J) : 2 === D ? (K = G - w - 2, L = H + b / 2 - x / 2) : (K = G + I + 2, L = H + b / 2 - x / 2), m.css(z, K).css(B, L), C._isThreeState ? (M = G + (I - l.offsetWidth) / 2, P = H + (J - l.offsetHeight) / 2, p(l).css(z, M).css(B, P).toggle().toggle()) : p(l).hide(), t && C.lp(m, t)))
                },
                sK: function(a) {
                    var b = this,
                        c = b._caption;
                    return b._isThreeState && i(a) ? b._textIndeterminate || c : !! a == !0 ? b._textTrue || c : b._textFalse || c
                },
                getHitInfo: function(a, b, c, d, e) {
                    if (e) {
                        var f = e.sheetArea;
                        if (i(f) || 3 === f) return {
                            x: a,
                            y: b,
                            row: e.row,
                            col: e.col,
                            cellRect: d,
                            sheetArea: 3,
                            isReservedLocation: !0,
                            sheet: e.sheet
                        }
                    }
                    return s
                },
                processMouseDown: function(a) {
                    return !!a && void(a.isReservedLocation && (this.uK = !0))
                },
                processMouseUp: function(a) {
                    var b, c, d, e, f, g = this,
                        h = a && a.sheet;
                    if (h && g.uK && a.isReservedLocation) {
                        if (g.uK = !1, b = a.row, c = a.col, d = a.sheetArea, e = h.ITa.getValueForKey(b, c, I, d), !e) return P(g, h, b, c, d), h.ITa.do("setValueForKey", b, c, I, !0, d), f = setTimeout(function() {
                            K(h, b, c, d)
                        }, 250), h.ITa.do("setValueForKey", b, c, J, f, d), !0;
                        K(h, b, c, d)
                    }
                    return !1
                },
                processMouseLeave: function(a) {
                    return !!a && void(this.uK = !1)
                },
                isReservedKey: function(a, b) {
                    return 32 === a.keyCode && !a.ctrlKey && !a.shiftKey && !a.altKey
                },
                processKeyUp: function(a, b) {
                    return P(this, b.sheet, b.row, b.col, b.sheetArea), !0
                },
                getAutoFitWidth: function(a, c, d, e, f) {
                    var g = this,
                        h = g._textAlign,
                        i = n.cp(a, g.sK(a), d, e, f);
                    return 0 === h || 1 === h ? i = u(i, b) : i += b, i + 5 + 2
                },
                getAutoFitHeight: function(a, c, d, e, f) {
                    var g = this,
                        h = g._textAlign,
                        i = n.ep(a, g.sK(a), d, e, f);
                    return 0 === h || 1 === h ? i += b : i = u(i, b), i + 5
                },
                JH: function(a) {
                    this.isReservedKey(a) && l(a)
                },
                isImeAware: function(a) {
                    return !1
                },
                gQa: function() {},
                toJSON: function() {
                    var a, b = this,
                        c = {
                            typeName: b.typeName
                        };
                    return q(d, function(d, e) {
                        a = b["_" + d], a !== e && (c[d] = a)
                    }), c
                },
                fromJSON: function(a) {
                    var b = this;
                    q(d, function(c) {
                        var d = a[c];
                        i(d) || (b["_" + c] = d)
                    })
                }
            }, q(d, function(a) {
                e[a] = function(b) {
                    return 0 === arguments.length ? this["_" + a] : (this["_" + a] = b, this)
                }
            }), p.extend(L.prototype, e), m.CheckBox = L, m._o[5] = L, a.exports = m
        }()
}, function(a, b) {
    a.exports = GC.Spread.Sheets
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h = c(87),
                i = c(26),
                j = h.Events.SelectionChanged,
                k = i.j.Fa,
                l = h.Ul,
                m = l.nl,
                n = h.CellTypes,
                o = n.Context,
                p = n.Text,
                q = n.Base,
                r = h.GC$,
                s = r.each,
                t = null,
                u = void 0,
                v = "_isFirstMouseUp",
                w = "_mouseupToken";

            function x(a, b, c, d) {
                var e, f = a.ITa;
                f && (f.do("setValueForKey", b, c, v, u, d), e = f.getValueForKey(b, c, w, d), e && (clearTimeout(e), f.do("setValueForKey", b, c, w, u, d)))
            }
            r.inherit(y, q), b = "#707070", d = "#34B4E3", e = ".buttonCellType", f = {
                marginTop: 2,
                marginRight: 2,
                marginBottom: 2,
                marginLeft: 2,
                text: "",
                buttonBackColor: t,
                buttonState: 0
            };

            function y() {
                var a = this;
                q.call(a), a.typeName = "6", s(f, function(b, c) {
                    a["_" + b] = c
                })
            }
            g = {
                paintValue: function(a, c, e, f, g, h, i, j) {
                    var k, l, m, n, o, q, r, s, t, u, v, w, x;
                    a && (k = this, l = k._marginLeft, m = k._marginTop, n = e + l, o = f + m, q = g - l - k._marginRight, r = h - m - k._marginBottom, s = n + q > e && n < e + g && o + r > f && o < f + h, q - 2 > 0 && r - 2 > 0 && s && (a.save(), (n < e || n + q > e + g || o < f || o + r > f + h) && (a.rect(e, f, g, h), a.clip()), a.beginPath(), t = b, t && a.strokeStyle !== t && (a.strokeStyle = t), a.strokeRect(n + .5, o + .5, q - 1, r - 1), v = k._buttonState, w = k._text, 2 === v ? u = d : (u = k._buttonBackColor, u || (x = a.createLinearGradient(e + g / 2, f, e + g / 2, f + h), x.addColorStop(.125, "#F6FAFB"), x.addColorStop(1, "#D2DBEB"), u = x)), a.fillStyle !== u && (a.fillStyle = u), a.fillRect(n + 1, o + 1, q - 2, r - 2), a.restore(), w && p.prototype.paintValue.call(k, a, w, n, o, q, r, i, j)))
                },
                getText: function(a, b) {
                    return a
                },
                tw: function(a, b, c, d) {
                    var e = a.parent;
                    e && e.tw(a, b, c, d)
                },
                getHitInfo: function(a, b, c, d, e) {
                    var f, g, h, i, j, l, m = this;
                    return e && (f = e.sheetArea, (k(f) || 3 === f) && d) ? (g = d.x + m._marginLeft, h = d.x + d.width - m._marginRight, i = d.y + m._marginTop, j = d.y + d.height - m._marginBottom, l = {
                        x: a,
                        y: b,
                        row: e.row,
                        col: e.col,
                        cellRect: d,
                        sheetArea: f,
                        sheet: e.sheet
                    }, g <= a && a <= h && i <= b && b <= j && (l.isReservedLocation = !0), l) : t
                },
                processMouseDown: function(a) {
                    var b = this,
                        c = a && a.sheet;
                    return !(!c || !a.isReservedLocation || b.uK) && (b.uK = !0, b._buttonState = 2, c.repaint(a.cellRect), !0)
                },
                processMouseUp: function(a) {
                    var b, c, d, e, f, g = this,
                        h = a && a.sheet;
                    if (g.uK && h && a.isReservedLocation) {
                        if (g._buttonState = 0, h.repaint(a.cellRect), g.uK = !1, b = a.row, c = a.col, d = a.sheetArea, e = h.ITa.getValueForKey(b, c, v, d), !e) return g.tw(h, b, c, d), h.ITa.do("setValueForKey", b, c, v, !0, d), f = setTimeout(function() {
                            x(h, b, c, d)
                        }, 250), h.ITa.do("setValueForKey", b, c, w, f, d), !0;
                        x(h, b, c, d)
                    }
                    return !1
                },
                processMouseLeave: function(a) {
                    var b = this,
                        c = a && a.sheet;
                    c && b.uK && (b._buttonState = 0, c.repaint(a.cellRect), b.uK = !1)
                },
                processKeyDown: function(a, b) {
                    var c, d = b.sheet,
                        f = this;
                    return !(!d || f.vK) && (c = d.getCellRect(b.row, b.col), f._buttonState = 2, d.repaint(c), d.Fu(j + e, function() {
                            d.Gu(j + e), f.vK = !1, f._buttonState = 0, d.repaint(c)
                        }), f.vK = !0, !0)
                },
                processKeyUp: function(a, b) {
                    var c, d, f, g = b.sheet,
                        h = this;
                    return !(!g || !h.vK) && (c = b.row, d = b.col, f = g.getCellRect(c, d), h._buttonState = 0, g.repaint(f), g.Gu(j + e), h.tw(g, c, d, b.sheetArea), h.vK = !1, !0)
                },
                isReservedKey: function(a, b) {
                    return 32 === a.keyCode && !a.ctrlKey && !a.shiftKey && !a.altKey
                },
                getAutoFitWidth: function(a, b, c, d, e) {
                    var f = this,
                        g = o.cp(a, f._text, c, d, e);
                    return g + f._marginLeft + f._marginRight
                },
                getAutoFitHeight: function(a, b, c, d, e) {
                    var f = this,
                        g = o.ep(a, f._text, c, d, e);
                    return g + f._marginTop + f._marginBottom
                },
                JH: function(a) {
                    this.isReservedKey(a) && m(a)
                },
                isImeAware: function(a) {
                    return !1
                },
                toJSON: function() {
                    var a, b = this,
                        c = {
                            typeName: b.typeName
                        };
                    return s(f, function(d, e) {
                        "buttonState" !== d && (a = b["_" + d], a !== e && (c[d] = a))
                    }), c
                },
                fromJSON: function(a) {
                    var b = this;
                    s(f, function(c) {
                        var d = a[c];
                        k(d) || (b["_" + c] = d)
                    })
                },
                a5: function(a) {},
                gQa: function() {}
            }, s(f, function(a) {
                g[a] = function(b) {
                    return 0 === arguments.length ? this["_" + a] : (this["_" + a] = b, this)
                }
            }), r.extend(y.prototype, g), n.Button = y, n._o[6] = y, a.exports = n
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e = c(87),
                f = c(26),
                g = e.Ul.Nl,
                h = f.j.Fa,
                i = e.Ul,
                j = i.fp,
                k = i.Ml,
                l = k.mozilla,
                m = e.CellTypes,
                n = m.Base,
                o = e.GC$,
                p = o.each,
                q = e.Vn,
                r = null,
                s = Math.max,
                t = Math.min,
                u = Math.floor,
                v = window.open,
                w = "position",
                x = "absolute",
                y = "margin",
                z = "font",
                A = "left",
                B = "top",
                C = "padding",
                D = "border",
                E = "box-sizing",
                F = "background-color",
                G = "content-box",
                H = "default",
                I = "white",
                J = "div",
                K = "hyperlinkInfo";

            function L(a, b) {
                a.removeChild(b)
            }
            m.HyperLinkTargetType = {
                blank: 0,
                self: 1,
                parent: 2,
                top: 3
            }, o.inherit(M, n), b = {
                linkColor: "#0066cc",
                visitedLinkColor: "#3399ff",
                text: "",
                linkToolTip: "",
                target: 0,
                activeOnClick: !0
            };

            function M() {
                var a = this;
                n.call(a), a.typeName = "8", a.yn = M.wK(), p(b, function(b, c) {
                    a["_" + b] = c
                }), a._onAction = function(a) {
                    var b = a && a.sheet,
                        c = a.row,
                        d = a.col,
                        e = a.sheetArea,
                        f = b.getValue(c, d, e),
                        g = N(this._target);
                    f && v(f, g)
                }
            }
            function N(a) {
                return ["_blank", "_self", "_parent", "_top"][a]
            }
            function O(a, b, c, d, e, f) {
                var g = 0,
                    h = 0,
                    i = a.width,
                    j = a.height;
                return g = f = f || 0, 1 === d ? g = (i - b) / 2 : 2 === d && (g = i - b - f), 1 === e ? h = (j - c) / 2 : 2 === e && (h = j - c), {
                    x: g,
                    y: h
                }
            }
            function P(a, b, c, d) {
                var e = R(a, c),
                    f = e.width;
                return f += (1 !== b && !h(d)) == !0 ? d : 0, e.width = f, e
            }
            function Q(a, b, c, d, e, f) {
                var g = R(a, d),
                    h = O(e, g.width, g.height, b, c, f);
                return g.x = h.x, g.y = h.y, g
            }
            function R(a, b) {
                var c = j(b),
                    d = Math.max(0, q.Xn(a, b, !0)),
                    e = a.split(/\r\n|\r|\n/).length * c;
                return {
                    x: 0,
                    y: 0,
                    width: d,
                    height: e
                }
            }
            function S(a, b, c, d, e, f) {
                var g, i, j, k, l, m, n, o, p, r, s, u = e.sheet,
                    v = u.yl;
                if (h(c)) return !1;
                if (f || (g = u.getValue(e.row, e.col, e.sheetArea), h(g) || (f = g + "")), !f) return !1;
                for (f = f.replace(/\s+/g, " "), i = c && c.font ? c.font : v.Bl(), u.zoom() > 1 && (i = v.Cl(i)), j = [f], k = T(c), c.wordWrap && (j = q.Wn(f, d.width - 3 - k, i), f = j.join("\r\n")), l = Q(f, c.hAlign, c.vAlign, i, d, k), m = d.y + l.y, n = 0; n < j.length; n++) if (o = Q(j[n], c.hAlign, c.vAlign, i, d, k), p = d.x + o.x, r = t(p + o.width, d.x + d.width), s = m, m = t(s + o.height, d.y + d.height), p <= a && a < r && s <= b && b < m) return !0;
                return !1
            }
            function T(a) {
                return 8 * (a.textIndent || 0)
            }
            function U(a, b, c, d, e) {
                var f, g, h, i, j, k, l, m, n, o, p, r, s, t = d && d.sheet;
                if (t) {
                    if (f = t.yl, g = b.font || f.Bl(), c > 1 && (g = f.Cl(g)), h = T(b), b.wordWrap || e) {
                        if (b.wordWrap) {
                            if (i = d.row, j = d.col, k = d.sheetArea, l = 0, m = t.ITa.findSpan(i, j, k)) {
                                if (m.row >= i && m.rowCount <= 1 && m.col >= j && j === m.col && (l = t.Tl(j), m.colCount > 1)) for (n = j + 1; n < j + m.colCount; n++) l += t.Tl(n)
                            } else l = t.Tl(j);
                            if (o = q.Wn(a, l - 3 - h, g), e && a.split(/\r\n|\r|\n/).length > 1) {
                                for (p = 0, r = 0; r < o.length; r++) p = Math.max(p, P(o[r], b.hAlign, g, T(b)).width);
                                return p
                            }
                            e || (a = o.join("\r\n"))
                        }
                    } else a = a.replace(/\s+/g, " ");
                    return s = P(a, b.hAlign, g, T(b)), e ? s.width : s.height
                }
                return 0
            }
            d = {
                Eka: function(a, b, c, d, e, f, g, h, i, j) {
                    var m, n, o, p, q, r, s, t, v, w = 1,
                        x = A,
                        y = g.hAlign,
                        z = g.vAlign,
                        B = h.lineHeight,
                        C = i.length;
                    for (w += b, 1 === y ? (w = e / 2, x = "center") : 2 === y && (w = e - 1, w -= b, x = "right"), a.textAlign !== x && (a.textAlign = x), m = 1, n = "alphabetic", o = h.fontInfo.fontSize, p = o > 8 ? u((o - 8) / 5 + 2) : 1, q = B / 2 - o / 2 + p - 1, m += B - q, 1 === z ? B < f && (m = l ? (f - j) / 2 + 1 : k.msie ? (f - j) / 2 + .5 : (f - j) / 2, u(m) !== m && (m += .5), m += B / 2 - q) : 2 === z && (m = f - j - 2.5 - q), a.textBaseline !== n && (a.textBaseline = n), r = d + m, s = 0; s < C; s++) a.fillText(i[s], c + w, r), t = a.measureText(i[s]).width, v = g.textDecoration, v && this.ip(a, v, c + w, r, t, o, p), r += B
                },
                Fka: function(a, b, c, d, f, g, h, i, j) {
                    var k, l, m, n, o, p = h.hAlign,
                        q = h.vAlign,
                        r = i.lineHeight,
                        t = j.length,
                        v = 0,
                        w = 0,
                        x = 0,
                        y = 0;
                    for (2 !== p && (x = 1), 2 === h.vAlign && (y = -2.5), y -= s(0, Math.round(r / 9) - 1), a.strokeStyle !== a.fillStyle && (a.strokeStyle = a.fillStyle), a.lineWidth = 1, a.beginPath(), o = 0; o < t; o++) k = a.measureText(j[o]).width, n = O(new e.Rect(c, d, f, g), k, r * t, p, q, b), l = x + c + n.x, m = l + k, v = y + d + n.y + r, u(v) === v && (v += .5), w = v, a.moveTo(l, v), a.lineTo(m, w), a.stroke(), y += r
                },
                paintValue: function(a, b, c, d, e, f, g, j) {
                    var k, l, m, n, o, p, r, s, t, u, v, w, x, y, z, A, B, C, D = this;
                    if (a && (k = D.getText(b, j), !h(k))) {
                        for (k += "", l = k.split(/\r\n|\r|\n/), m = 0; m < l.length;) l[m] = l[m].replace(/\s+/g, " "), m++;
                        k = l.join("\r\n"), n = !1, o = j.sheet.ITa, p = j.row, r = j.col, s = j.sheetArea, t = o.getValueForKey(p, r, K, s), t && (D.yn === t.id ? n = t.visited : o.do("setValueForKey", p, r, K, void 0, s)), a.save(), a.beginPath(), u = n ? D._visitedLinkColor : D._linkColor, u && a.fillStyle !== u && (a.fillStyle = u), v = g.font, v && a.font !== v && i.lZa(a, v), w = T(g), j.sheet.outlineColumn && j.sheet.outlineColumn.XQa(j.col) && (w = 0), x = g.wordWrap, y = [], z = 0, A = 0, x ? (B = e - 3 - w, B -= 1, y = q.Wn(k, B, v), z = y.length, z > 1 && 0 !== g.vAlign && (C = j.lineHeight, A = (z - 1) * C)) : y.push(k), a.rect(c, d, e, f), a.clip(), a.beginPath(), D.Eka(a, w, c, d, e, f, g, j, y, A), D.Fka(a, w, c, d, e, f, g, j, y), a.restore()
                    }
                },
                getText: function(a, b) {
                    return this._text || a
                },
                tw: function(a, b, c, d) {
                    if (!a.HF) {
                        var e = a.parent;
                        e && e.tw(a, b, c, d)
                    }
                },
                getHitInfo: function(a, b, c, d, e) {
                    var f, g = this;
                    return e && (f = e.sheetArea, (h(f) || 3 === f) && c && d) ? {
                        x: a,
                        y: b,
                        row: e.row,
                        col: e.col,
                        cellStyle: c,
                        cellRect: d,
                        sheetArea: f,
                        isFocusAware: !0,
                        sheet: e.sheet,
                        isReservedLocation: S(a, b, c, d, e, g._text)
                    } : r
                },
                processMouseDown: function(a) {
                    var b = a && a.sheet,
                        c = this;
                    b && !b.isEditing() && a.isReservedLocation && (c.AK = !0)
                },
                processMouseUp: function(a) {
                    var b, c = a && a.sheet;
                    c && !c.isEditing() && (b = this, a.isReservedLocation && b.AK && b.Eia(a), b.AK = !1)
                },
                processMouseMove: function(a) {
                    var b, c = a.row,
                        d = a.col,
                        e = a.sheet,
                        f = this;
                    !e || e.isEditing() && e.getActiveRowIndex() === c && e.getActiveColumnIndex() === d || (b = e.Ws(), a.isReservedLocation ? b && (f.BK(e, a), b.style.cursor = "pointer") : (f.CK(e), b && (b.style.cursor = H)))
                },
                processMouseLeave: function(a) {
                    var b, c = a.sheet,
                        d = this;
                    d.AK = !1, d.CK(c), c && (b = c.Ws(), b && (b.style.cursor = H))
                },
                BK: function(a, b) {
                    var c, d, e, f, g, h, i = this;
                    i._linkToolTip && (c = i.DK(), d = o(c), d.text(i._linkToolTip), e = a.mm.bG(), f = e.left + b.x, g = e.top + b.y + 20, 0 === d.parent().length && (h = a && a.zo(), h && h.insertBefore(c, r), d.css(B, g).css(A, f)))
                },
                CK: function(a) {
                    var b, c = this;
                    c.EK && (b = a && a.zo(), b && c.EK.parentElement === b && L(b, c.EK), c.EK = r)
                },
                DK: function() {
                    var a, b = this;
                    return b.EK || (a = g(J), o(a).css(w, x).css(y, 0).css(C, 2).css(D, "1px #c0c0c0 solid").css("box-shadow", "1px 2px 5px rgba(0,0,0,0.4)").css(E, G).css(F, I).css(z, "9pt Arial"), b.EK = a), b.EK
                },
                isReservedKey: function(a, b) {
                    return 32 === a.keyCode && !a.ctrlKey && !a.shiftKey && !a.altKey
                },
                processKeyUp: function(a, b) {
                    var c = b.sheet,
                        d = this;
                    return !!c && (d.Eia(b), !0)
                },
                getAutoFitWidth: function(a, b, c, d, e) {
                    return U(this._text || a, c, d, e, !0)
                },
                getAutoFitHeight: function(a, b, c, d, e) {
                    return U(this._text || a, c, d, e)
                },
                isImeAware: function(a) {
                    return !1
                },
                Eia: function(a) {
                    var b = a && a.sheet,
                        c = this,
                        d = a.row,
                        e = a.col,
                        f = a.sheetArea,
                        g = c.onClickAction();
                    g.call(this, a), b.ITa.do("setValueForKey", d, e, K, {
                        id: c.yn,
                        visited: !0
                    }, f), b.repaint(b.getCellRect(d, e)), c.tw(b, d, e, f)
                },
                onClickAction: function(a) {
                    return 0 === arguments.length ? this._onAction : (a && (this._onAction = a), this)
                },
                toJSON: function() {
                    var a, c = this,
                        d = {
                            typeName: c.typeName
                        };
                    return p(b, function(b, e) {
                        a = c["_" + b], a !== e && (d[b] = a)
                    }), d
                },
                fromJSON: function(a) {
                    var c = this;
                    p(b, function(b) {
                        var d = a[b];
                        h(d) || (c["_" + b] = d)
                    })
                },
                a5: function(a) {},
                gQa: function() {
                    var a, c = this,
                        d = new M;
                    return p(b, function(b, e) {
                        a = c["_" + b], a !== e && (d["_" + b] = a)
                    }), d._onAction = c._onAction, d
                }
            }, p(b, function(a) {
                d[a] = function(b) {
                    return 0 === arguments.length ? this["_" + a] : (this["_" + a] = b, this)
                }
            }), o.extend(M.prototype, d), M.wK = function() {
                var a = this;
                return h(a.yn) && (a.yn = 0), "id_" + a.yn++
            }, m.HyperLink = M, m._o[8] = M, a.exports = m
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o = c(87),
                p = c(26),
                q = o.Ul.Nl,
                r = p.j.Fa,
                s = o.Ul,
                t = s.nl,
                u = o.CellTypes,
                v = u.Base,
                w = o.GC$,
                x = w.extend,
                y = w.each,
                z = s.hZa,
                A = document,
                B = null,
                C = void 0,
                D = Math.max,
                E = parseInt,
                F = "click",
                G = "keydown",
                H = "mouseover",
                I = "mouseout",
                J = "position",
                K = "absolute",
                L = "font",
                M = "left",
                N = "top",
                O = "gcUIElement",
                P = "tabindex",
                Q = "none",
                R = "width",
                S = "height",
                T = "outline",
                U = "box-sizing",
                V = "color",
                W = "background-color",
                X = "z-index",
                Y = "display",
                Z = "content-box",
                $ = "white",
                _ = "black",
                aa = "title",
                ba = "div",
                ca = "span",
                da = "text",
                ea = "value",
                fa = "border";

            function ga(a, b) {
                a.appendChild(b)
            }
            function ha(a, b) {
                a.removeChild(b)
            }
            function ia(a) {
                return a && a.parentNode.parentNode.comboBox
            }
            u.EditorValueType = {
                text: 0,
                index: 1,
                value: 2
            }, b = 17, d = 20, e = 0, f = 1, g = 1, h = f, i = "EndEdit.gcEditingInput", j = 18, k = "lightgrey", l = "#1E90FF", m = {
                editorValueType: 0,
                items: B,
                itemHeight: 22,
                editable: !1,
                maxDropDownItems: d
            }, w.inherit(ja, v);

            function ja() {
                var a = this;
                v.call(a), a.typeName = "7", a.DF = !1, a.GK = !1, y(m, function(b, c) {
                    "items" === b && (c = []), a["_" + b] = c
                })
            }
            function ka(a, b) {
                return a.hasOwnProperty(b)
            }
            n = {
                isReservedKey: function(a, b) {
                    return this.GK
                },
                paintValue: function(a, c, d, e, f, g, h, i) {
                    var j = this,
                        k = b,
                        l = D(0, f - k - 1);
                    3 === h.hAlign && (h.hAlign = 0), h.wordWrap && (h.wordWrap = !1), l > 0 && g > 0 && v.prototype.paintValue.call(j, a, j.getText(c, i), d, e, l, g, h, i), a.save(), (k > f || k > g) && (a.rect(d, e, f, g), a.clip()), a.beginPath(), a.lineWidth = 2, a.fillStyle = _, a.moveTo(d + f - k + 3, e + (g - 2) / 2 - 2.5), a.lineTo(d + f - k + 6, e + (g - 2) / 2 + 3.5), a.lineTo(d + f - k + 9, e + (g - 2) / 2 - 2.5), a.fill(), a.restore()
                },
                getText: function(a, b) {
                    return a
                },
                createEditorElement: function(a, b) {
                    var c, d = a && a.sheet,
                        e = d && d.parent,
                        f = e && e.qo,
                        g = s.vl(f) + 1e3,
                        h = d.defaults,
                        i = this,
                        j = new la(b, 0, 0, h.colWidth, h.rowHeight, g);
                    return j.editorValueType(i._editorValueType), j.items(i._items), j.itemHeight(i._itemHeight), j.itemCountPerPage(i._maxDropDownItems), j.editable(i._editable), c = j.getComboBox(), Object.defineProperty(c, "comboBox", {
                        value: j,
                        writable: !1
                    }), B
                },
                getEditorValue: function(a, b) {
                    var c = ia(a);
                    return c && (this.DF = !c.HK), c && c.editorValue()
                },
                setEditorValue: function(a, b, c) {
                    var d = ia(a);
                    d && d.editorValue(b)
                },
                focus: function(a, b) {
                    var c = ia(a);
                    c && c.focus()
                },
                selectAll: function(a, b) {
                    var c = ia(a);
                    c && c.selectAll()
                },
                activateEditor: function(a, b, c, d) {
                    var e = this,
                        f = d.sheet,
                        g = ia(a);
                    g && (g.editorValueType(e._editorValueType), g.items(e._items), g.itemHeight(e._itemHeight), g.itemCountPerPage(e._maxDropDownItems), g.editable(e._editable), g.bind(i, function(a, b) {
                        var c, d, e, h, i, j = b.keyCode;
                        if (j) {
                            if (c = f.wu(), d = c.getShortcutKey(j, !1, !1, !1, !1), e = c.getCommands(d)) for (h = 0, i = e.length; h < i; h++) if ("navigationLeft" !== e[h].Cj && "navigationRight" !== e[h].Cj || (f.Px = 1), e[h].execute(f.parent, {
                                    sheetName: f.name()
                                })) return !0
                        } else b.isMouse && g.IK && f.endEdit()
                    })), e.GK = !0
                },
                deactivateEditor: function(a, b) {
                    if (a) {
                        var c = ia(a);
                        c && (c.unbind(i), c.closeDropDownList(), c.IK = !1)
                    }
                    this.GK = !1
                },
                updateEditor: function(a, b, c, d) {
                    var e, f, g = a && d && d.sheet;
                    g && (e = ia(a), b && e && (f = g.yl, e.updateStyle(b.backColor, b.foreColor, f.Cl(b.font || f.Bl()))), c && e && e.updateLocationAndSize(c.x, c.y, c.width, c.height))
                },
                format: function(a, b, c, d) {
                    var e, f, g, h, i, j, k;
                    if (r(a)) return "";
                    if (e = this, f = e._editorValueType, g = e._items, g) if (i = g.length, 1 === f) j = E(a), 0 <= j && j < i && (h = g[j], h !== C && h !== B && (a = ka(h, da) ? h.text : h));
                    else if (2 === f) for (k = 0; k < i; k++) if (h = g[k], h && ka(h, ea) && h.value === a) {
                        a = h.text;
                        break
                    }
                    return v.prototype.format.call(e, a, b, c)
                },
                parse: function(a, b, c) {
                    var d, e, f, g = this,
                        h = g._editorValueType,
                        i = g._items,
                        j = v.prototype.parse.call(g, a, b);
                    if (i) {
                        if (f = i.length, 0 === h) return j;
                        if (1 === h) {
                            for (e = 0; e < f; e++) if (d = i[e], d && ka(d, da) && d.text === j || d === j) return e
                        } else if (2 === h) for (e = 0; e < f; e++) if (d = i[e], d && ka(d, da) && d.text === j) return d.value
                    }
                    return j
                },
                getHitInfo: function(a, c, d, e, f) {
                    var g, h, i, j;
                    return f ? (g = f.sheetArea, h = f.sheet, (r(g) || 3 === g) && e && (i = e.x + e.width, j = {
                        x: a,
                        y: c,
                        row: f.row,
                        col: f.col,
                        cellStyle: d,
                        cellRect: e,
                        sheetArea: g,
                        sheet: h
                    }, i - b <= a && a < i) ? (j.isReservedLocation = !0, j) : B) : B
                },
                processMouseDown: function(a) {
                    var b, c = a.sheet,
                        d = a.sheetArea;
                    (r(d) || 3 === d) && a.isReservedLocation && c && (c.startEdit(), b = ia(c.BF), b && (s.Ml.mozilla && (b.JK = (new Date).valueOf()), b.showDropDownList(), b.IK = !0))
                },
                getAutoFitWidth: function(a, c, d, e, f) {
                    d && d.wordWrap && (d.wordWrap = !1);
                    var g = u.Context.cp(a, c, d, e, f);
                    return g + b
                },
                getAutoFitHeight: function(a, b, c, d, e) {
                    return c && c.wordWrap && (c.wordWrap = !1), u.Context.ep(a, b, c, d, e)
                },
                isImeAware: function(a) {
                    return !0
                },
                gQa: function() {},
                toJSON: function() {
                    var a, b = this,
                        c = {
                            typeName: b.typeName
                        };
                    return y(m, function(d, e) {
                        a = b["_" + d];
                        var f = "items" === d ? a && a.length > 0 : a !== e;
                        f && (c[d] = a)
                    }), c
                },
                fromJSON: function(a) {
                    var b = this;
                    y(m, function(c) {
                        var d = a[c];
                        r(d) || (b["_" + c] = d)
                    })
                }
            }, y(m, function(a) {
                n[a] = function(b) {
                    return 0 === arguments.length ? this["_" + a] : (this["_" + a] = b, this)
                }
            }), x(ja.prototype, n), u.ComboBox = ja, u._o[7] = ja;

            function la(a, c, f, g, h, j) {
                var k, l, m, n, p, s, t, u, v = this;
                v.KK = a, k = a.firstChild, w(a).bind(G, function(a) {
                    v.LK(a)
                }).css(X, j || 0).css(M, c).css(N, f).css(R, g).css(S, h).css("overflow", "visible").attr(O, "gcComboBox"), l = D(0, g - b), v._editable = !1, v.MK = m = q(ba), v.NK = n = q("textarea"), v.PK = m, ga(k, m), ma(m), ma(n), w(n).bind("keyup", function() {
                    var a, b = v.PK.value;
                    v._text = b, a = v.QK(b), v.editorValue(a), v.RK(b), v.SK()
                }).bind(H, function() {
                    v.TK()
                }).bind(I, function() {
                    v.SK()
                }), w(m).bind(F, function() {
                    v.IK ? v.Wq(i, {
                        isMouse: !0
                    }) : v.UK()
                }).bind(H, function() {
                    v.TK()
                }).bind(I, function() {
                    v.SK()
                }), v.VK(0, 0, l, h), p = v.WK = q(ba), ga(k, p), w(p).css(fa, Q).css(J, K).css(W, $).css(U, Z).attr(O, "gcDropDownButton").bind(F, function() {
                    var a, b;
                    !r(v.JK) && (a = v.JK, v.JK = C, b = (new Date).valueOf(), b - a < 100) || (v.IK ? v.Wq(i, {
                        isMouse: !0
                    }) : v.UK())
                }), s = q("canvas"), v.Xs = s, v.XK(l, 0, g - l, h), ga(p, s), t = v.YK = q(ba), ga(k, t), v.ZK = !1, w(t).css(J, K).css(fa, "1px solid").css(W, $).css(X, j || 0).css(T, Q).css(Y, Q).css("cursor", "default").css(U, Z).attr(O, "gcDropDownWindow").attr(P, -1).css(R, g - 2 * e).css(S, h), v.$K(0, h - 2 * e), v._K = 0, u = v.aL = q(ba), ga(t, u), v.bL = new o.IB(t, u), v._itemHeight = 22, v.cL = d, v.dL = -1, v._editorValueType = 0, v._items = []
            }
            function ma(a) {
                w(a).css("margin", 0).css("overflow", "hidden").css("resize", Q).css(J, K).css("padding", g + "px 0px 0px " + f + "px").css(T, Q).css(W, $).css("white-space", "nowrap").css(U, Z).css(fa, Q).attr(O, "gcComboBoxEditor").attr(P, -1)
            }
            x(la.prototype, {
                getComboBox: function() {
                    return this.KK
                },
                updateLocationAndSize: function(a, c, d, f) {
                    var g = this,
                        h = D(0, d - b);
                    g.VK(0, 0, h, f), g.XK(h, 0, d - h, f), g.$K(0, f - 2 * e), g.listWidth(d - 2 * e), g.eL()
                },
                updateStyle: function(a, b, c) {
                    var d = this;
                    c = z(c), w(d.PK).css(W, a).css(V, b).css(L, c), w(d.WK).css(W, a).css(V, b).css(L, c), w(d.YK).css(W, a).css(V, b).css(L, c), w(d.KK).css(W, "transparent")
                },
                editorValueType: function(a) {
                    return 0 === arguments.length ? this._editorValueType : (this._editorValueType = a, this)
                },
                editorValue: function(a) {
                    var b, c = this;
                    return 0 === arguments.length ? c.fL : (a !== c.fL && (c.fL = a, b = c.gL(a), c.text(b), c.RK(b, !0)), c)
                },
                gL: function(a) {
                    var b, c, d, e, f = this,
                        g = f._items,
                        h = g.length,
                        i = f._editorValueType;
                    if (f.HK = !0, 1 === i) c = g[a], b = c && ka(c, da) ? c.text : c, b === C && (b = a, f.HK = !1);
                    else if (0 === i) {
                        for (b = a, d = 0; d < h && (c = g[d], !(c && ka(c, da) && c.text === a || c === a)); d++);
                        d >= h && (f.HK = !1)
                    } else if (2 === i) {
                        for (e = 0; e < h; e++) if (c = g[e], c && ka(c, ea) && c.value === a) {
                            b = c.text;
                            break
                        }
                        e >= h && (b = a, f.HK = !1)
                    }
                    return r(a) && (b = ""), b
                },
                QK: function(a) {
                    var b, c, d, e = this,
                        f = e._items,
                        g = f.length,
                        h = e._editorValueType,
                        i = a;
                    if (1 === h) for (c = 0; c < g; c++) b = f[c], (b && ka(b, da) && b.text === a || b === a) && (i = c);
                    else if (2 === h) for (d = 0; d < g; d++) b = f[d], b && ka(b, da) && b.text === a ? i = b.value : b === a && (i = C);
                    return i
                },
                RK: function(a, b) {
                    var c, d, e, f;
                    if (a) {
                        for (d = this._items, e = d.length, c = 0; c < e && (f = d[c], ka(f, da) && (f = f.text), (b ? f : ("" + f).substr(0, a.length)) !== a); c++);
                        c >= e && (c = -1)
                    } else c = -1;
                    this.hL(c)
                },
                SK: function() {
                    w(this.PK).removeAttr(aa)
                },
                TK: function() {
                    var a = this,
                        b = a.Xn(a._text),
                        c = w(a.PK),
                        d = c.width();
                    b > d + f ? c.attr(aa, a._text) : c.removeAttr(aa)
                },
                VK: function(a, b, c, d) {
                    c -= e, d -= 2 * e, w(this.PK).css(M, a).css(N, b).css(R, c - f).css(S, d - g)
                },
                updateImeMode: function(a, b) {
                    if (this.isImeAware()) {
                        var c = ia(a);
                        c && c.PK && w(c.PK).css("ime-mode", b)
                    }
                },
                editable: function(a) {
                    var b, c, d, e, f, g = this;
                    return 0 === arguments.length ? g._editable : g._editable !== a ? (g._editable = a, b = g.KK.firstChild, c = g.PK, d = w(c), e = {
                        left: E(d.css(M)),
                        top: E(d.css(N)),
                        width: E(d.css(R)),
                        height: E(d.css(S))
                    }, f = {
                        backColor: d.css(W),
                        foreColor: d.css(V),
                        font: c.style.font
                    }, ha(b, c), g.PK = a ? g.NK : g.MK, ga(b, g.PK), w(g.PK).css(W, f.backColor).css(V, f.foreColor).css(L, f.font), g.VK(e.left, e.top, e.width, e.height), g) : void 0
                },
                text: function(a) {
                    var b = this,
                        c = b.PK;
                    return 0 === arguments.length ? b._text : void(a !== b._text && (b._text = a, b._editable ? c.value = a : c.textContent = a))
                },
                focus: function() {
                    var a = this,
                        b = a.PK;
                    b.focus(), a._editable && (b.selectionStart = b.value.length)
                },
                selectAll: function() {
                    var a = this;
                    a._editable && a.PK.select()
                },
                XK: function(a, c, d, f) {
                    var g, h, i, j, k;
                    d -= e, f -= 2 * e, g = this, h = g.Xs, w(g.WK).css(M, a).css(N, c).css(R, d).css(S, f), w(h).attr(R, d).attr(S, f), i = h.width, j = h.height, k = h.getContext("2d"), k.beginPath(), k.lineWidth = 2, k.fillStyle = _, k.moveTo(i - b + 4, (j - 2) / 2 - 2.5), k.lineTo(i - b + 7, (j - 2) / 2 + 3.5), k.lineTo(i - b + 10, (j - 2) / 2 - 2.5), k.fill()
                },
                showDropDownList: function() {
                    var a = this,
                        b = a.bL;
                    a.ZK = !0, w(a.YK).bind(G, function(b) {
                        a.LK(b)
                    }).show(), a.iL = !1, a.jL(), a.eL(), a.iL && (b.lB(w(a.aL.children).height()), b.ew(!1)), a.kL(l), a.lL(a.dL), a.focus()
                },
                closeDropDownList: function() {
                    var a = this;
                    a.ZK = !1, w(a.YK).unbind(G).hide(), a.kL(""), a.focus()
                },
                UK: function() {
                    this.ZK ? this.closeDropDownList() : this.showDropDownList()
                },
                listWidth: function(a) {
                    var b = this,
                        c = w(b.YK);
                    return 0 === arguments.length ? c.width() : void(a > 0 && (c.width(a), b.bL.ew(!1)))
                },
                listHeight: function(a) {
                    var b = this,
                        c = w(b.YK);
                    return 0 === arguments.length ? c.height() : void(a > 0 && (c.height(a), b.bL.ew(!1)))
                },
                $K: function(a, b) {
                    w(this.YK).css(M, a).css(N, b)
                },
                items: function(a) {
                    var b, c, d, e, f, g = this;
                    if (0 === arguments.length) return g._items;
                    if (a) {
                        for (g._items = a, b = g.aL; c = b.firstChild;) ha(b, c);
                        for (g._K = 0, d = 0, e = a.length; d < e; d++) f = a[d], g.mL(ka(f, da) ? f.text : f);
                        return g
                    }
                },
                mL: function(a) {
                    var b = this,
                        c = q(ba),
                        d = q(ca);
                    d.textContent = "" + a, d.style.paddingLeft = h + "px", ga(c, d), ga(b.aL, c), b._K++, w(c).bind(F, function() {
                        var a = w(c).index();
                        b.selectedIndex(a), b.closeDropDownList(), b.Wq(i, {
                            isMouse: !0
                        })
                    }).bind(H, function() {
                        var a = w(c);
                        c.oldBackColor = a.css(W), a.css(W, k)
                    }).bind(I, function() {
                        w(c).css(W, c.oldBackColor || "")
                    })
                },
                nL: function() {
                    var a = this;
                    a.Po = q(ca), w(a.Po).css(Y, Q).css(L, a.YK.style.font).appendTo(A.body)
                },
                oL: function() {
                    ha(A.body, this.Po)
                },
                pL: function(a) {
                    return this.Po.textContent = a, w(this.Po).width() + 2 + h
                },
                kL: function(a) {
                    var b = this,
                        c = b.dL;
                    0 <= c && c < b._K && w(b.aL.children[c]).css(W, a)
                },
                LK: function(a) {
                    var b, c, d, e = this,
                        f = a.keyCode,
                        g = a.which;
                    a.ctrlKey || a.shiftKey || a.altKey || a.metaKey || (37 === g || 39 === g) && e.editable() || (b = e._K, c = e.dL, d = 0, 38 === g || 40 === g ? (c >= 0 && c < b && (d = c + (38 === g ? -1 : 1)), d >= 0 && d < b && e.selectedIndex(d), e.ZK && e.lL(d), t(a)) : 13 === g || 37 === g || 39 === g || 9 === g ? (e.selectedIndex(e.dL), e.closeDropDownList(), e.Wq(i, {
                        keyCode: f
                    }), t(a)) : 27 === g && (e.closeDropDownList(), e.Wq(i, {
                        keyCode: f
                    }), t(a)))
                },
                getSelectedValue: function(a, b, c) {
                    var d, e = b[a];
                    return r(e) || (1 === c ? d = a : 0 === c ? d = ka(e, da) ? e.text : e : 2 === c && ka(e, ea) && (d = e.value)), d
                },
                hL: function(a) {
                    var b = this;
                    b.kL(""), b.dL = a, b.kL(l), b.lL(a)
                },
                selectedIndex: function(a) {
                    var b, c = this;
                    return 0 === arguments.length ? c.dL : void(0 <= a && a < c._K && (c.hL(a), b = c.getSelectedValue(c.dL, c._items, c._editorValueType), r(b) || c.editorValue(b)))
                },
                itemCountPerPage: function(a) {
                    return 0 === arguments.length ? this.cL : void(a > 0 && (this.cL = a))
                },
                Xn: function(a) {
                    this.nL();
                    var b = this.pL(a);
                    return this.oL(), b
                },
                itemHeight: function(a) {
                    return 0 === arguments.length ? this._itemHeight : void(a > 0 && (this._itemHeight = a))
                },
                jL: function() {
                    var a, b, c, d, e, f = this;
                    f.nL(), a = f._items[0], b = D(f._itemHeight, w(f.Po).text(r(a) ? "" : a).height()), w(f.aL.children).css(S, b), d = f._K, e = f.cL, d <= e ? c = d * b : (c = e * b, f.iL = !0), f.listHeight(c), f.oL()
                },
                eL: function() {
                    var a, b, c, d, e, f, g = this;
                    if (g.nL(), a = 0, c = g._items) for (d = 0, e = c.length; d < e; d++) f = c[d], b = g.pL(ka(f, da) ? f.text : f), a < b && (a = b);
                    g.oL(), g.listWidth() < a + j && g.listWidth(a + j)
                },
                lL: function(a) {
                    if (a >= 0 && a < this._K) {
                        var b = this.aL.children[a];
                        this.bL.BB(b)
                    }
                },
                bind: function(a, b, c) {
                    w(this.KK).bind(a, b, c)
                },
                unbind: function(a, b) {
                    w(this.KK).unbind(a, b)
                },
                Wq: function(a, b) {
                    w(this.KK).trigger(a, b)
                }
            }), a.exports = u
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f = {};
            c(92), b = c(93), g(f, b), d = c(94), g(f, d), e = c(95), g(f, e), f.SR = {}, f.SR.en = c(96), a.exports = f;

            function g(a, b) {
                for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c])
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a, b, d, e, f, g, h, i, j, k, l, m, n, o;

            function p(a, b, c) {
                "string" == typeof c && (c = {
                    name: c
                }), a.ITa.do("setItem", !1, 3, b, c);
                var d = c && c.formatter,
                    e = c && c.cellType;
                d && a.setFormatter && a.setFormatter(-1, b, d), e && a.setCellType(-1, b, e), c && c.width && a.setColumnWidth(b, c.width)
            }
            a = c(26), b = c(93).qL, d = a.j.Fa, e = c(87), f = e.Worksheet, g = e.GC$, h = g.isEmptyObject, i = g.extend, j = f.prototype, k = null, l = "bindingPath", m = a.l, n = {
                getDataSource: function() {
                    var a = this.wq;
                    return a ? a.getSource() : k
                },
                setDataSource: function(a, c) {
                    var d, f, g, h, i = this,
                        j = i.wq;
                    if (j && j.getSource() !== a) {
                        if (c && i.vs(), a) {
                            if (j = i.wq, d = j.bind(a, i.ITa.zTa), !d && (i.setRowCountCore(j.getRowCount()), i.autoGenerateColumns && (i.setColumnCount(j.getColumnCount()), f = j.rL()))) for (g = 0, h = f.length; g < h; g++) i.ITa.do("setItem", !1, 3, g, {
                                name: f[g]
                            })
                        } else i.wq = new b(i);
                        i.clearPendingChanges(), e.X3 && i.recalcAll(), i.$p()
                    }
                },
                bindColumn: function(a, b) {
                    var c = this;
                    c.suspendPaint();
                    try {
                        p(c, a, b)
                    } finally {
                        c.resumePaint()
                    }
                },
                bindColumns: function(a) {
                    var b, c, d = this;
                    d.suspendPaint();
                    try {
                        if (a) for (b = a.length, isNaN(b) || d.setColumnCount(b), c = 0; c < b; c++) p(d, c, a[c])
                    } finally {
                        d.resumePaint()
                    }
                },
                getDataItem: function(a) {
                    var b, c, d, e, f, g, h = this,
                        i = h.wq;
                    if (!i || 0 === i.getRowCount()) return k;
                    if (b = h.getColumnCount(), c = {}, d = i.ru(a)) for (e in d) d.hasOwnProperty(e) && "function" != typeof e && (c[e] = d[e]);
                    for (f = 0; f < b; f++) g = h.ITa.Jp(!1, 3, f), g && g.name && g.name.length > 0 && !c[g.name] && (c[g.name] = h.getValue(a, f));
                    return c
                },
                getDataColumnName: function(a) {
                    var b, c = this;
                    return 0 <= a && a < c.getColumnCount() && c.getDataSource() ? (b = c.ITa.Jp(!1, 3, a), b && (b.displayName || b.name)) : k
                },
                getBindingPath: function(a, b) {
                    return this.ITa.getValueForKey(a, b, l)
                },
                setBindingPath: function(a, b, c) {
                    var d = this;
                    return d.ITa.do("setValueForKey", a, b, l, c), d.$p(), d
                }
            }, i(j, n), o = e.CellRange, o.prototype.bindingPath = o.Pl(j.getBindingPath, j.setBindingPath);

            function q(a, b, c, e) {
                var f, g, h, i, j = a.wq;
                for (f = 0; f < c; f++) for (g = 0; g < e; g++) h = j.getValue(f, g).value, d(h) || (i = h, m.Ska(h) && (i = m.Daa(h)), a.qI(b, f, g, i))
            }
            function r(a, b, c, e) {
                var f, g, h, i, j, k = a.options.colHeaderAutoTextIndex;
                for (f = 0; f < c; f++) if (k >= 0 && f === k || k === -1 && f === c - 1) for (g = 0; g < e; g++) h = b[f] && b[f][g] && b[f][g].value, i = a.ITa.Jp(!1, 3, g), d(h) && i && (j = i.displayName || i.name, j && a.qI(b, f, g, j))
            }
            f.$n("binding", {
                init: function() {
                    var a = this;
                    a.autoGenerateColumns = !0, a.wq = new b(a)
                },
                dispose: function(a) {
                    var b = this;
                    a !== !1 && (b.wq = k)
                },
                onLayoutChanged: function(a) {
                    var b, c, d, e, f, g = this,
                        h = a.changeType,
                        i = a.row,
                        j = a.rowCount,
                        l = a.sheetArea,
                        m = g.wq;
                    if ("addingRows" === h) m && m.sL() === !1 ? a.canAdd = !1 : m && m.tL() === !1 && (a.newRow = g.getRowCount());
                    else if ("addRows" === h) m && m.uL(i, j, g.ITa.zTa);
                    else if ("deletingRows" === h) {
                        if (m) if (m.vL() === !1) a.canDelete = !1;
                        else for (g.Ts || (g.Ts = []), b = g.Ts, c = g.ITa, d = m.getRowCount(), e = 0; e < j && i + e < c.getRowCount(); e++) f = k, i + e < d && (f = m.ru(i + e)), b.push({
                                row: i + e,
                                data: f
                            })
                    } else "deleteRows" === h ? m && m.wL(i, j, g.ITa.zTa) : "settingRowCount" === h && (!m.getSource() || m.xL() || 3 !== l && 2 !== l || (a.canSet = !1))
                },
                toJson: function(a, b) {
                    var c, d, e, f = this,
                        g = f.getColumnCount(),
                        i = f.getDataSource();
                    b && b.includeBindingSource && i && (c = a.data.dataTable || {}, q(f, c, f.getRowCount(), g), h(c) || (a.data.dataTable = c), d = a.colHeaderData.dataTable || {}, r(f, d, f.getRowCount(1), g), h(d) || (a.colHeaderData.dataTable = d)), e = f.autoGenerateColumns, e !== !0 && (a.autoGenerateColumns = f.autoGenerateColumns)
                },
                fromJson: function(a, c) {
                    var e, f, g, h, i = this;
                    i.wq = new b(i), c && (e = i.wq, f = a.dataSource, g = a.dataBinding, f && e.bind(f), g && e.fromJSON(g, c)), h = a.autoGenerateColumns, d(h) || (i.autoGenerateColumns = h)
                },
                preFromJson: function() {
                    this.wq = new b(this)
                }
            }), e.lUa.$n("binding", {
                priority: 6e3,
                getValue: function(a) {
                    var b, c = a.row,
                        d = a.col,
                        e = a.sheetArea,
                        f = this.kj.wq;
                    3 === e && f && f.Ou && (b = f.getValue(c, d), a.isValueGet = b.hasBinding, a.value = b.value)
                },
                setValue: function(a) {
                    var b, c, d, e = a.row,
                        f = a.col,
                        g = a.value,
                        h = a.sheetArea,
                        j = this.kj,
                        k = j.wq;
                    3 === h && k && k.Ou && (b = k.getValue(e, f), b.hasBinding && (c = b.value, g !== c && (j.isDirtySuspended() || (d = i({}, j.getDataItem(e)), this.Cp(e, f, {
                        Dp: d,
                        Ep: c
                    }, h)), k.setValue(e, f, g, j.ITa.zTa)), a.isValueSet = !0))
                },
                undo: function(a) {
                    var b, c, d = a.rUa;
                    if (d) for (b = d.length - 1; b >= 0; b--) c = d[b], c.bindingManager.sUa(c)
                }
            })
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(87),
                d = c(26),
                e = b.GC$,
                f = e.isNumeric,
                g = d.j.Fa,
                h = b.Events,
                i = {},
                j = null,
                k = void 0,
                l = "string",
                m = i.yL = {},
                n = "cellBinding",
                o = function() {
                    return d.C(i.SR)()
                };

            function p(a) {
                this.xf = a
            }
            p.prototype = {
                setValue: function(a, b) {
                    z(this.xf, a, b)
                },
                getValue: function(a) {
                    return A(this.xf, a)
                },
                getSource: function() {
                    return this.xf
                }
            }, i.CellBindingSource = p;

            function q(a) {
                this.ad(a)
            }
            q.prototype = {
                bind: function(a, b) {
                    var c, d, f, g, h = this,
                        i = h.kj,
                        j = h.Ou;
                    if (b && h.tUa(b, {
                            type: "bind",
                            oldDataSource: j
                        }), j && (j.lka && (j.subscribe = j.lka, delete j.mka, delete j.lka), y(j.dispose) && j.dispose()), h.zL(h.AL), h.zL(h.BL), h.ad(i), h.Ou = a, a) {
                        if (c = h.CL = v(a), !c) throw Error(o().Exp_NotSupportedDataSource);
                        h.DL = h.EL(), i && e[e.sd]({
                            tc: i.parent
                        }), i && (d = h.AL, f = a.currentPosition, a.subscribe && d.push(a.subscribe(h.FL, h)), f && f.subscribe && d.push(f.subscribe(h.GL, h)), y(a.subscribe) && !a.lka && (g = a.lka = a.subscribe, a.mka = !1, a.subscribe = function(b, c) {
                            var d = [].concat.apply([], arguments),
                                e = function() {
                                    if (!a.mka && y(b)) return b.apply(c, arguments)
                                };
                            return d[0] = e, g.apply(a, d)
                        }), h.Lx()), h.HL = w(a, c)
                    }
                    return s(i, a)
                },
                Lx: function() {
                    var a, b, c, d, e, f = this,
                        g = f.kj,
                        h = f.Ou;
                    if (g && h && (a = f.CL, f.zL(f.BL), b = j, a !== n && (c = g.getActiveRowIndex(), h.currentPosition ? (-1 <= c && c < h.count() && h.currentPosition(c), b = h.currentItem()) : b = f.ru(c)), b)) {
                        d = function() {
                            g && g.repaint()
                        };
                        for (e in b) b[e] && y(b[e].subscribe) && f.BL.push(b[e].subscribe(d, j, j))
                    }
                },
                zL: function(a) {
                    var b, c;
                    if (a) for (b = 0; b < a.length; b++) c = a[b], c && y(c.dispose) && c.dispose()
                },
                getRowCount: function() {
                    var a = this,
                        b = a.Ou,
                        c = a.CL,
                        d = 0;
                    return b && c && c !== n && (d = m[c].getDataLength(b)), d
                },
                getColumnCount: function() {
                    var a, b, c, d = this.HL;
                    return d ? d.length : (a = this.Ou, a && (b = a[0], c = e.getType(b), "null" === c || c === l || "number" === c) ? 1 : 0)
                },
                getSource: function() {
                    return this.Ou
                },
                rL: function() {
                    return this.HL
                },
                Nka: function(a) {
                    this.HL = a
                },
                ru: function(a) {
                    var b = this.Ou,
                        c = this.CL,
                        d = j;
                    return b && c && c !== n && (d = m[c].getDataItem(b, a)), d
                },
                EL: function() {
                    var a, b, c, d = this;
                    if (!d.DL) for (a = d.getRowCount(), b = 0; b < a; b++) if (c = d.ru(b)) {
                        d.DL = c.entityAspect && c.entityType || c.constructor;
                        break
                    }
                    return d.DL
                },
                getValue: function(a, b) {
                    return t(this, a, b)
                },
                setValue: function(a, b, c, d) {
                    var e, f = this;
                    return d && (e = t(f, a, b).value, f.tUa(d, {
                        type: "setValue",
                        row: a,
                        col: b,
                        oldValue: e
                    })), u(f, a, b, c)
                },
                sL: function() {
                    var a = m[this.CL];
                    return a && a.canAdd && a.canAdd()
                },
                tL: function() {
                    var a = m[this.CL];
                    return a && a.canInsert && a.canInsert()
                },
                vL: function() {
                    var a = m[this.CL];
                    return a && a.canRemove && a.canRemove()
                },
                uL: function(a, b, c) {
                    var d, e, f = this,
                        g = f.Ou;
                    !g || a > f.getRowCount() || (d = f.CL, e = f.EL(), d && d !== n && !f.IL && (f.JL = !0, c && f.tUa(c, {
                        type: "addItems",
                        row: a,
                        rowCount: b
                    }), m[d].addItems(g, a, b, e), f.JL = !1))
                },
                wL: function(a, b, c) {
                    var d, e = this,
                        f = e.CL,
                        g = e.getRowCount(),
                        h = e.Ou;
                    !h || a >= g || f && f !== n && !e.IL && (e.JL = !0, d = m[f].removeItems(h, a, b), c && d && d.length > 0 && e.tUa(c, {
                        type: "removeItems",
                        row: a,
                        removedItems: d
                    }), e.JL = !1)
                },
                uUa: function(a, b) {
                    var c = this,
                        d = c.Ou,
                        e = c.CL;
                    m[e].undoRemoveItems(d, a, b)
                },
                xL: function(a) {
                    return x(a || this.Ou)
                },
                ad: function(a) {
                    var b = this;
                    b.Ou = j, b.CL = "", b.DL = j, b.HL = j, b.AL = [], b.BL = [], b.qia = j, b.kj = a, r(a)
                },
                FL: function(a) {
                    var b, c, d, e, f = this,
                        h = f.kj;
                    if (h && !f.JL) {
                        if (a) {
                            if (f.IL = !0, !isNaN(a.length) && (h.setRowCountCore(a.length), b = h.ITa, g(f.HL) && 0 === b.VTa(!1, 3) && (f.HL = w(f.Ou), h.setColumnCount(f.getColumnCount()), c = f.rL()))) for (d = 0, e = c.length; d < e; d++) b.do("setItem", !1, 3, d, {
                                name: c[d]
                            });
                            f.IL = !1
                        }
                        h.$p()
                    }
                },
                GL: function() {
                    var a, b = this,
                        c = b.kj,
                        d = b.Ou;
                    c && d && d.currentPosition && (a = d.currentPosition(), c.Jl !== a && (c.Sr(a, c.Kl, k, k, 2), c.$p()))
                },
                tUa: function(a, b) {
                    var c = a.rUa;
                    c || (c = a.rUa = []), b.bindingManager = this, c.push(b)
                },
                sUa: function(a) {
                    var b = this,
                        c = a.type,
                        d = a.row;
                    "bind" === c ? b.bind(a.oldDataSource) : "setValue" === c ? b.setValue(d, a.col, a.oldValue) : "addItems" === c ? b.wL(d, a.rowCount) : "removeItems" === c && b.uUa(d, a.removedItems)
                },
                toJSON: function() {
                    var a, b = this.Ou;
                    return b ? (a = this.CL, b = a === n ? b.getSource() : m[a].toJSON(b), {
                        type: a,
                        source: b
                    }) : j
                },
                fromJSON: function(a) {
                    var b, c, d = a && a.source;
                    d && (b = a.type, c = b === n ? new p(d) : m[b].fromJSON(d), c && this.bind(c))
                }
            }, i.qL = q;

            function r(a) {
                var b = a && a.wq;
                b && b.xL() && a.Wq(h.ResetBinding, {
                    sheet: a
                })
            }
            function s(a, b) {
                var c = a && a.wq;
                return !(!c || !c.xL(b)) && (a.clearPendingChanges(), a.Wq(h.InitBinding, {
                        sheet: a,
                        data: b
                    }), !0)
            }
            function t(a, b, c) {
                var d, e, f, g, h, i, k, l, o, p = a,
                    q = p.Ou,
                    r = {
                        value: j,
                        hasBinding: !1
                    };
                if (!q) return r;
                if (d = p.kj, e = p.CL, e === n) {
                    if (h = d ? d.getBindingPath(b, c) : j) return {
                        value: q.getValue(h),
                        hasBinding: !0
                    }
                } else {
                    if (b < 0 || a.getRowCount() <= b) return r;
                    if (i = d ? d.getColumnCount() : a.getColumnCount(), c < 0 || i <= c) return r;
                    if (d ? (p.qia || (p.qia = d.ITa.Hp(!1, 3)), f = p.qia[c], f && (g = f.name)) : a.HL && (g = a.HL[c]), e) return k = m[e], l = f && f.value, o = y(l) ? l : j, k.getValue(q, o, g, b, c)
                }
                return r
            }
            function u(a, b, c, d) {
                var e, f, g, h, i, k, l, o, p, q = a,
                    r = q.Ou,
                    s = !1;
                if (!r) return s;
                if (e = q.kj, f = q.CL, f === n) i = e ? e.getBindingPath(b, c) : j, i && (r.setValue(i, d), s = !0);
                else {
                    if (b < 0 || a.getRowCount() <= b) return s;
                    if (k = e ? e.getColumnCount() : a.getColumnCount(), c < 0 || k <= c) return s;
                    e ? (q.qia || (q.qia = e.ITa.Hp(!1, 3)), g = q.qia[c], g && (h = g.name)) : a.HL && (h = a.HL[c]), f && (l = m[f], o = g && g.value, p = y(o) ? o : j, s = l.setValue(r, p, h, b, c, d))
                }
                return s
            }
            function v(a) {
                var b = j;
                return a && (x(a) ? b = n : e.each(m, function(c, d) {
                    if (d.isDataSource(a)) return b = c, !1
                })), b
            }
            function w(a, b) {
                return a && b && b !== n ? m[b].getProperties(a) : j
            }
            function x(a) {
                return p && a instanceof p
            }
            function y(a) {
                return a instanceof Function
            }
            function z(a, b, c) {
                var d, e, f, h;
                if (a && b) for (d = b.split("."), e = d.length, f = 0; f < e && (h = d[f], a); f++) f === e - 1 ? y(a[h]) ? a[h](c) : a[h] = c : y(a[h]) ? (g(a[h]()) && a[h]({}), a = a[h]()) : (g(a[h]) && (a[h] = {}), a = a[h])
            }
            i.KL = z;

            function A(a, b) {
                var c, d, e, f;
                if (!a || !b) return j;
                c = b.split("."), d = c.length, e = 0;
                do
                    if (f = c[e], a = y(a[f]) ? a[f]() : a[f], g(a)) return j;
                while (++e < d);
                return a
            }
            i.LL = A;

            function B() {}
            B.prototype = {
                isDataSource: function(a) {
                    return e.isArray(a)
                },
                getDataLength: function(a) {
                    return a.length
                },
                getDataItem: function(a, b) {
                    return a[b]
                },
                addItems: function(a, b, c, d) {
                    var e, f;
                    for (e = 0; e < c; e++) f = j, d && (f = d.createEntity ? d.createEntity() : new d), a.splice(b, 0, f)
                },
                removeItems: function(a, b, c) {
                    var d = this.getDataLength(a);
                    if (b < d) return a.splice(b, Math.min(c, d - b))
                },
                undoRemoveItems: function(a, b, c) {
                    for (var d = 0, e = c.length; d < e; d++) a.splice(b + d, 0, c[d])
                },
                getProperties: function(a) {
                    var b, c, d = a.length,
                        e = j;
                    if (d > 0) {
                        e = [], b = a[0];
                        for (c in b) y(b[c]) || e.push(c)
                    }
                    return e
                },
                getValue: function(a, b, c, d, e) {
                    var h = j,
                        i = !1,
                        k = this.getDataItem(a, d);
                    return g(k) || (b ? (h = b(k), i = !0) : c ? (h = A(k, c), i = !0) : (typeof k === l || f(k)) && 0 === e && (h = k, i = !0)), {
                        value: h,
                        hasBinding: i
                    }
                },
                setValue: function(a, b, c, d, e, h) {
                    var i = !1,
                        j = this.getDataItem(a, d);
                    return g(j) || (b ? (b(j, h), i = !0) : c ? (z(j, c, h), i = !0) : (typeof j === l || f(j)) && 0 === e && (a[d] = h, i = !0)), i
                },
                fromJSON: function(a) {
                    return a
                },
                toJSON: function(a) {
                    return a
                }
            }, m.defaultBindingSource = new B, a.exports = i
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(26),
                d = c(93),
                e = b.j.Fa,
                f = null;

            function g() {}
            g.prototype = {
                isDataSource: function(a) {
                    var b = window.wijmo;
                    return b && b.data && b.data.isDataView && b.data.isDataView(a)
                },
                getDataLength: function(a) {
                    return a.count()
                },
                getDataItem: function(a, b) {
                    return a.item(b)
                },
                addItems: function(a, b, c, d) {
                    if (d) for (var e = 0; e < c; e++) a.mka = !0, a.add(d.createEntity ? d.createEntity() : new d), a.mka = !1, a.commitEdit()
                },
                removeItems: function(a, b, c) {
                    var d, e, f, g, h = this.getDataLength(a);
                    if (b < h) {
                        for (d = [], e = Math.min(c, h - b), f = 0; f < e; f++) g = a.item(b), a.remove(g), d.push(g);
                        return d
                    }
                },
                undoRemoveItems: function(a, b, c) {
                    var d, e, f = a.getSource();
                    for (d = 0, e = c.length; d < e; d++) f.splice(b + d, 0, c[d]);
                    a.refresh()
                },
                getProperties: function(a) {
                    var b, c = 0,
                        d = f,
                        e = a.getProperties();
                    if (e && e.length > 0) for (c = e.length, d = [], b = 0; b < c; b++) d.push(e[b].name);
                    return d
                },
                canInsert: function() {
                    return !1
                },
                getValue: function(a, b, c, d, g) {
                    var h = f,
                        i = !1,
                        j = this.getDataItem(a, d);
                    return e(j) || (b ? (h = b(j), i = !0) : c && (h = a.getProperty(j, c), i = !0)), {
                        value: h,
                        hasBinding: i
                    }
                },
                setValue: function(a, b, c, d, f, g) {
                    var h = !1,
                        i = this.getDataItem(a, d);
                    return e(i) || (b ? (b(i, g), h = !0) : c && (a.setProperty(i, c, g), h = !0)), h
                },
                fromJSON: function(a) {
                    return a
                },
                toJSON: function(a) {
                    return a.local
                }
            }, d.yL.dataViewBinding = new g, a.exports = d
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d = c(87),
                e = c(26),
                f = c(93),
                g = e.j.Fa,
                h = d.GC$,
                i = h.isFunction,
                j = h.getType,
                k = h.isNumeric,
                l = null,
                m = "string",
                n = window.ko;

            function o() {}
            o.prototype = {
                isDataSource: function(a) {
                    return n && n.isObservable(a)
                },
                getDataLength: function(a) {
                    return a().length
                },
                getDataItem: function(a, b) {
                    return a()[b]
                },
                addItems: function(a, b, c, d) {
                    var e, f;
                    for (e = 0; e < c; e++) f = l, d && (f = d.createEntity ? d.createEntity() : new d), a.splice(b, 0, f)
                },
                removeItems: function(a, b, c) {
                    var d = this.getDataLength(a);
                    if (b < d) return a.splice(b, Math.min(c, d - b))
                },
                undoRemoveItems: function(a, b, c) {
                    for (var d = 0, e = c.length; d < e; d++) a.splice(b + d, 0, c[d])
                },
                getProperties: function(a) {
                    var b, c, d = a(),
                        e = d.length,
                        f = [];
                    if (e > 0) {
                        b = d[0];
                        for (c in b) i(b[c]) ? n && n.isObservable(b[c]) && f.push(c) : f.push(c)
                    }
                    return f
                },
                getValue: function(a, b, c, d, e) {
                    var h = l,
                        i = !1,
                        n = this.getDataItem(a, d);
                    return g(n) || (b ? (h = b(n), i = !0) : c ? (h = f.LL(n, c), i = !0) : (j(n) === m || k(n)) && 0 === e && (h = n, i = !0)), {
                        value: h,
                        hasBinding: i
                    }
                },
                setValue: function(a, b, c, d, e, h) {
                    var i = !1,
                        l = this.getDataItem(a, d);
                    return g(l) || (b ? (b(l, h), i = !0) : c ? (f.KL(l, c, h), i = !0) : (j(l) === m || k(l)) && 0 === e && (a()[d] = h, i = !0)), i
                },
                fromJSON: function(a) {
                    return n ? n.observableArray(a) : l
                },
                toJSON: function(a) {
                    return a()
                }
            }, f.yL.koBinding = new o, n && (b = n.bindingHandlers, b["gc-spread-sheets"] = b["gcspread-sheets"] = b.wijspread = {
                init: function(a, b, c, e) {
                    var f, g, i, j, k, l, n, o, p, q, r, s;
                    if (!h(a).data("workbook") && (f = b(), g = f && f.sheets, i = new d.Workbook(h("#" + a.id)[0], f), g)) {
                        for (l = g.length, n = i.getSheetCount(); n < l;) j = i.vv(i.wv(n)), i.ow(n, 0, j), n = i.getSheetCount();
                        for (o = 0; o < l; o++) j = i.getSheet(o), k = g[o], p = k.name, q = k.autoGenerateColumns, r = k.data, s = k.columns, typeof p === m && p.length > 0 && j.cq(p), "boolean" == typeof q && (j.autoGenerateColumns = q), r && j.setDataSource(r), s && s.length > 0 && (j.autoGenerateColumns = !1, j.bindColumns(s))
                    }
                },
                update: function(a, b, c, d) {}
            }), a.exports = f
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {
                Exp_NotSupportedDataSource: "The data source is not supported!"
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            a.exports = c(98)
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(87),
                d = c(26).q,
                e = null,
                f = Math.max,
                g = "string",
                h = {};

            function i(a, b, c) {
                if (!a) return !1;
                if (a = "" + a, b = "" + b, 0 === c) return a.indexOf(b) > -1;
                var e = (2 & c) > 0,
                    f = (1 & c) > 0,
                    g = (4 & c) > 0,
                    h;
                return g ? (h = e ? d.zb(b, !1, !0) : d.ub(b), b = h ? h : b, h = f ? d.sb(b) : d.qb(b), h.test(a)) : (f && (b = b.toLowerCase(), a = a.toLowerCase()), e ? b === a : a.indexOf(b) >= 0)
            }
            function j(a, b, c, d, f, g, h, i) {
                var j = e,
                    k = a + 1,
                    l = b + 1;
                return 0 === c ? l >= 0 && l <= i ? j = {
                    r: a,
                    c: l
                } : k >= 0 && k <= g && (j = {
                    r: k,
                    c: d ? h : 0
                }) : k <= g ? j = {
                    r: k,
                    c: b
                } : l <= i && (j = {
                    r: d ? f : 0,
                    c: l
                }), j
            }
            b.Worksheet.prototype.search = function(a) {
                var c, d, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B;
                if (!a) return e;
                if (c = this, d = a.sheetArea, k = a.searchString, l = a.searchTarget, m = a.searchFlags, n = c.getRowCount(d), o = c.getColumnCount(d), p = new h.SearchResult, !k || 0 === l || n <= 0 && o <= 0) return p;
                for (q = f(0, a.rowStart), r = f(0, a.columnStart), s = a.rowEnd, t = a.columnEnd, u = (8 & m) > 0, (s < 0 || !u) && (s = n - 1), (t < 0 || !u) && (t = o - 1), v = a.findBeginRow, w = a.findBeginColumn, x = v < 0 ? q : v, y = w < 0 ? r : w; x >= 0 && y >= 0;) {
                    if (z = c.getCell(x, y, d), (1 & l) > 0 && (A = z.text(), "" !== A && i(A, k, m) && (p.searchFoundFlag |= 1, p.foundString = A)), b.X3 && (8 & l) > 0 && (A = z.formula(), typeof A === g && "" !== A && i(A, k, m) && (p.searchFoundFlag |= 8, p.foundString = A)), (4 & l) > 0 && (A = z.tag(), typeof A === g && "" !== A && i(A, k, m) && (p.searchFoundFlag |= 4, p.foundString = A)), 0 !== p.searchFoundFlag) return p.foundRowIndex = x, p.foundColumnIndex = y, p;
                    if (B = j(x, y, a.searchOrder, u, q, s, r, t), !B) break;
                    x = B.r, y = B.c
                }
                return p
            }, b.Workbook.prototype.search = function(a) {
                var b, c, d, f, g, i, j, k, l;
                if (!a) return e;
                if (b = this, c = 0, d = b.getSheetCount(), f = new h.SearchResult, !a.searchString || a.searchTarget === c || d <= 0) return f;
                if (a.startSheetIndex === -1 && (a.startSheetIndex = 0), a.endSheetIndex === -1 && (a.endSheetIndex = d - 1), k = a.startSheetIndex, l = a.endSheetIndex, l >= k && 0 <= k && k < d && 0 <= l && l < d) for (g = k; g <= l; g++) if (i = b.getSheet(g), j = i.search(a), j && j.searchFoundFlag !== c) return j.foundSheetIndex = g, j;
                return f
            }, h.SearchCondition = function() {
                return {
                    startSheetIndex: -1,
                    endSheetIndex: -1,
                    searchString: e,
                    searchFlags: 0,
                    searchOrder: 0,
                    searchTarget: 1,
                    sheetArea: 3,
                    rowStart: -1,
                    columnStart: -1,
                    rowEnd: -1,
                    columnEnd: -1,
                    findBeginRow: -1,
                    findBeginColumn: -1
                }
            }, h.SearchResult = function() {
                return {
                    searchFoundFlag: 0,
                    foundSheetIndex: -1,
                    foundRowIndex: -1,
                    foundColumnIndex: -1,
                    foundString: e
                }
            }, h.SearchFlags = {
                none: 0,
                ignoreCase: 1,
                exactMatch: 2,
                useWildCards: 4,
                blockRange: 8
            }, h.SearchOrder = {
                zOrder: 0,
                nOrder: 1
            }, h.SearchFoundFlags = {
                none: 0,
                cellText: 1,
                cellTag: 4,
                cellFormula: 8
            }, a.exports = h
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            c(100);
            var b = c(101);
            b.SR = {}, b.SR.en = c(102), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p = c(26),
                q = c(87),
                r = q.Commands,
                s = r.ActionBase,
                t = q.GC$,
                u = "outlineColumn",
                v = "removeColumnOutline",
                w = "expandColumnOutline",
                x = "expandColumnOutlineForLevel",
                y = "outlineRow",
                z = "removeRowOutline",
                A = "expandRowOutline",
                B = "expandRowOutlineForLevel",
                C = p.j.Fa;

            function D(a) {
                var b = a.kj;
                return a.ML ? b.rowOutlines : b.columnOutlines
            }
            function E(a) {
                var b, c, d, e, f, g = this,
                    h = !1;
                return (a ? g.canExecute() : g.canUndo()) && (b = g.kj, c = g.VQ.index, d = g.VQ.count, e = D(g), b && e && !C(c) && !C(d) && (f = a ? e.group : e.ungroupRange, g.Lz(b, !0), f.call(e, c, d), g.Mz(b, !0), h = !0)), h
            }
            b = function(a) {
                t.inherit(b, a);

                function b(b, c, d) {
                    var e = this;
                    a.call(e), e.kj = b, e.VQ = c, e.ML = d
                }
                var c = {
                    execute: function() {
                        return E.call(this, !0)
                    },
                    undo: function() {
                        return E.call(this, !1)
                    }
                };
                return t.extend(b.prototype, c), b
            }(s), d = function(a) {
                t.inherit(b, a);

                function b(b, c) {
                    a.call(this, b, c, !1)
                }
                return b
            }(b), e = function(a) {
                t.inherit(b, a);

                function b(b, c) {
                    a.call(this, b, c, !0)
                }
                return b
            }(b), f = function(a) {
                t.inherit(b, a);

                function b(b, c, d) {
                    var e = this;
                    a.call(e), e.kj = b, e.VQ = c, e.ML = d
                }
                var c = {
                    execute: function() {
                        var a, b, c, d = this,
                            e = d.kj,
                            f = !1;
                        return d.canExecute() && (a = d.VQ.index, b = d.VQ.count, c = D(d), e && c && !C(a) && !C(b) && ((c.getLevel(a) >= 0 || c.getLevel(a + b - 1) >= 0) && (d.Lz(e, !0), c.ungroupRange(a, b), d.Mz(e, !0)), f = !0)), f
                    },
                    undo: function() {
                        var a, b, c, d = this,
                            e = !1,
                            f = d.kj;
                        return d.canUndo() && (a = d.VQ.index, b = d.VQ.count, c = D(d), f && c && !C(a) && !C(b) && (d.Lz(f, !0), c.group(a, b), d.Mz(f, !0), e = !0)), e
                    }
                };
                return t.extend(b.prototype, c), b
            }(s), g = function(a) {
                t.inherit(b, a);

                function b(b, c) {
                    a.call(this, b, c, !1)
                }
                return b
            }(f), h = function(a) {
                t.inherit(b, a);

                function b(b, c) {
                    a.call(this, b, c, !0)
                }
                return b
            }(f);

            function F(a, b, c, d, e) {
                var f = 0,
                    g;
                for (g = b; g <= c && g < d; g++) f += e.call(a, g) * a.zoom();
                return f
            }
            function G(a, b, c, d, e) {
                var f = 0,
                    g;
                for (g = b; g < d && f < c; g++) b++, f += e.call(a, g) * a.zoom();
                return b >= d ? d - 1 : b
            }
            function H(a, b, c, d, e) {
                if (b < d) return d;
                if (b > e) return e;
                for (var f = b; f <= e; f++) if (c.call(a, f)) return f;
                return -1
            }
            function I(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n, o, p, q = this,
                    r = q.kj,
                    s = c.index,
                    t = b ? r.getRowCount() : r.getColumnCount(),
                    u = void 0;
                s < 0 || s >= t || (d = D(q), e = 1 === d.direction(), f = b ? r.frozenRowCount() : r.frozenColumnCount(), g = b ? r.getRowHeight : r.getColumnWidth, h = b ? r.getViewportTopRow : r.getViewportLeftColumn, i = b ? r.getViewportHeight : r.getViewportWidth, j = h.call(r, 1), n = d.find(e ? s - 1 : s + 1, c.level), n && (o = e ? n.start : s, p = e ? s : n.end, e ? (a ? o = s : o < f && (o = f), o < j && (j = o), k = i.call(r, 1), l = F(r, j, p, t, g), l > k && (j = G(r, j, l - k, t, g)), m = H(r, j, g, f, t - 1)) : (a ? p = s : p >= t && (p = t - 1), o < j ? m = H(r, o, g, f, t - 1) : (k = i.call(r, 1), l = F(r, j, p, t, g), l > k && (m = H(r, o, g, f, t - 1)))), b && m !== u ? (r.lq = m, r.os()) : b || m === u || (r.qq = m, r.qs())))
            }
            function J(a) {
                var b, c, d, e, f, g = this,
                    h = !1;
                return (a ? g.canExecute() : g.canUndo()) && (b = g.kj, c = g.VQ, d = D(g), e = c.collapsed, f = c.index, !b || !d || C(e) || C(f) || C(c.level) || (g.Lz(b, !0), a || (e = !e), d.setCollapsed(f, e), I.call(g, e, g.ML, c), g.Mz(b, !0), h = !0)), h
            }
            i = function(a) {
                t.inherit(b, a);

                function b(b, c, d) {
                    var e = this;
                    a.call(e), e.kj = b, e.VQ = c, e.ML = d
                }
                var c = {
                    execute: function() {
                        return J.call(this, !0)
                    },
                    undo: function() {
                        return J.call(this, !1)
                    }
                };
                return t.extend(b.prototype, c), b
            }(s), j = function(a) {
                t.inherit(b, a);

                function b(b, c) {
                    a.call(this, b, c, !1)
                }
                return b
            }(i), k = function(a) {
                t.inherit(b, a);

                function b(b, c) {
                    a.call(this, b, c, !0)
                }
                return b
            }(i), l = function(a) {
                t.inherit(b, a);

                function b(b, c, d) {
                    var e = this;
                    a.call(e), e.kj = b, e.VQ = c, e.ML = d
                }
                var c = {
                    execute: function() {
                        var a, b, c, d, e = this,
                            f = e.kj,
                            g = !1;
                        if (e.canExecute() && (b = e.VQ.level, c = D(e), f && c && !C(b))) {
                            for (f.ITa.startTransaction(), e.Lz(f, !0), a = 0; a < b; a++) c.expand(a, !0);
                            c.expand(b, !1), e.Mz(f, !0), d = r.bWa(f.name()), e.VQ[d] = f.ITa.endTransaction(), g = !0
                        }
                        return g
                    },
                    undo: function() {
                        var a, b, c, d = this,
                            e = !1;
                        return d.canUndo() && (a = d.kj, b = r.bWa(a.name()), c = d.VQ[b], a && c && (d.Lz(a, !0), a.ITa.undo(c), e = !0, d.Mz(a, !0))), e
                    }
                };
                return t.extend(b.prototype, c), b
            }(s), m = function(a) {
                t.inherit(b, a);

                function b(b, c) {
                    a.call(this, b, c, !1)
                }
                return b
            }(l), n = function(a) {
                t.inherit(b, a);

                function b(b, c) {
                    a.call(this, b, c, !0)
                }
                return b
            }(l), o = r.h4, r[u] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return o(a, d, b, c)
                }
            }, r[y] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return o(a, e, b, c)
                }
            }, r[v] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return o(a, g, b, c)
                }
            }, r[z] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return o(a, h, b, c)
                }
            }, r[w] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return o(a, j, b, c)
                }
            }, r[A] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return o(a, k, b, c)
                }
            }, r[x] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return o(a, m, b, c)
                }
            }, r[B] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return o(a, n, b, c)
                }
            }, r.SL = function(a) {
                a.register(u, r[u]), a.register(y, r[y]), a.register(v, r[v]), a.register(z, r[z]), a.register(w, r[w]), a.register(A, r[A]), a.register(x, r[x]), a.register(B, r[B])
            }, a.exports = r
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h = c(26),
                i = c(87),
                j = c(100),
                k = {},
                l = null,
                m = void 0,
                n = Math.max,
                o = Math.min,
                p = i.GC$,
                q = p.each,
                r = i.Im.Lm,
                s = i.Rect,
                t = h.k,
                u = t._b,
                v = t.$b,
                w = t.ac,
                x = i.Ul.Ol,
                y = h.j.Fa,
                z = i.Ul.Pl,
                A = i.Ul.fp,
                B = "rangegroup",
                C = "gc-group",
                D = C + "-box",
                E = "rgh",
                F = "cgh",
                G = "rg",
                H = "cg",
                I = function() {
                    return h.C(k.SR)()
                },
                J = {
                    Gt: function() {
                        var a, b, c, d, e, f, g, h = this,
                            i = h.TL;
                        return i ? i : (a = {
                            x: 0,
                            y: 0,
                            width: 0,
                            height: 0,
                            rowMaxLevel: -1,
                            colMaxLevel: -1
                        }, b = h.rowOutlines, c = h.columnOutlines, d = 17, e = 4, f = o(d, d * h.zoom()), h.showRowOutline() && b && !b.iT() && (g = b.getMaxLevel(), g >= 0 && (a.width = f * (g + 2) + e, a.rowMaxLevel = g)), h.showColumnOutline() && c && !c.iT() && (g = c.getMaxLevel(), g >= 0 && (a.height = f * (g + 2) + e, a.colMaxLevel = g)), h.TL = a, a)
                    },
                    showRowOutline: z("showRowOutline", !0, function() {
                        this.$p()
                    }),
                    showColumnOutline: z("showColumnOutline", !0, function() {
                        this.$p()
                    })
                };
            p.extend(i.Worksheet.prototype, J);

            function K(a, b) {
                a.Wq(i.Events.RangeGroupStateChanging, b)
            }
            function L(a, b) {
                a.Wq(i.Events.RangeGroupStateChanged, b)
            }
            function M(a, b) {
                var c, d, e, f;
                a.isEditing && a.isEditing() || (c = b.info.index, d = b.what === E, e = d ? "expandRowOutlineForLevel" : "expandColumnOutlineForLevel", f = O(a, d, -1, c, !0), K(a, f), f && f.cancel === !1 && (a.wu().execute({
                    cmd: e,
                    sheetName: a.name(),
                    level: c
                }), L(a, O(a, d, -1, c, !1))))
            }
            function N(a, b) {
                var c, d, e, f, g, h, i;
                a.isEditing && a.isEditing() || (c = b.what === G, T(c, a) && (d = b.info, e = d.index, f = e, g = d.level, i = c ? "expandRowOutline" : "expandColumnOutline", 1 === d.lineDirection ? e-- : e++, h = O(a, c, e, g, !0), K(a, h), h && h.cancel === !1 && (a.wu().execute({
                    cmd: i,
                    sheetName: a.name(),
                    index: f,
                    level: g,
                    collapsed: d.isExpanded
                }), L(a, O(a, c, e, g, !1)))))
            }
            function O(a, b, c, d, e) {
                var f = {
                    sheet: a,
                    sheetName: a.name(),
                    isRowGroup: b,
                    index: c,
                    level: d
                };
                return e && (f.cancel = !1), f
            }
            function P(a, b) {
                var c, d, e, f, g = this,
                    h = g.Gt(),
                    i = h.width,
                    j = h.height;
                return i || j ? (c = g.am(), d = new s(h.x, h.y, i, c.height), e = new s(h.x, h.y, c.width, j), d.contains(a, b) || e.contains(a, b) ? (f = Q(g, a, b, h.rowMaxLevel, !0), f || (f = Q(g, a, b, h.colMaxLevel, !1)), f || {
                    what: "empty",
                    info: l
                }) : l) : l
            }
            function Q(a, b, c, d, e) {
                var f, g, h = new ga(a, e, d),
                    i = h.WL(b, c, e);
                if (i) return {
                    what: e ? E : F,
                    info: i
                };
                for (f = R(a, e, d), g = 0; g <= 2; g++) if (i = f[g].XL(b, c, e)) return {
                    what: e ? G : H,
                    info: i
                };
                return l
            }
            function R(a, b, c) {
                var d = [new fa(a, b, 0, c), new fa(a, b, 1, c), new fa(a, b, 2, c)],
                    e;
                for (e = 0; e <= 2; e++) d[e].YL();
                return d
            }
            function S(a, b) {
                var c = b ? a.width : a.height;
                return n(0, (c - 2 * this.PADDING) / (this.ZL + 2))
            }
            function T(a, b) {
                return a ? b.rowOutlines : b.columnOutlines
            }
            k.OutlineDirection = {
                backward: 0,
                forward: 1
            }, k.OutlineState = {
                expanded: 0,
                collapsed: 1
            }, b = function() {
                function a(a, b, c, d) {
                    var e = this;
                    e.children = [], e.parent = l, e.model = a, e.start = b, e.end = c, e.level = d
                }
                return a.prototype = {
                    state: function(a) {
                        var b = this,
                            c = b.model;
                        return arguments.length ? void(c && c.expandGroup(b, 0 === a)) : c ? c.getState(b) : 0
                    },
                    contains: function(a) {
                        return this.start <= a && a <= this.end
                    },
                    addChild: function(a) {
                        a && (this.children.push(a), a.parent = this)
                    }
                }, a
            }(), k.OutlineInfo = b;

            function U(a, b, c) {
                var d, e, f, g;
                if (c > 0) {
                    for (d = a.items, g = [], e = 0; e < c; e++) g.push(l);
                    if (a.items = d = d.slice(0, b).concat(g, d.slice(b)), a.V3 <= 0 && b > 0 && (f = d[b - 1])) for (e = 0; e < c; e++) d[b + e] = new ea(f);
                    $(a)
                }
            }
            function V(a, b, c) {
                c > 0 && (a.items.splice(b, c), $(a))
            }
            function W(a, c, d) {
                var e, f, g, h, i, j, k = l,
                    m = a.items;
                for (f = c, h = w(m); f < h && (e = m[f], !e || e.level < d || (k || (k = new b(a, f, f, d)), e.level > d && (g = W(a, f, d + 1), f = g.index, k.addChild(g.g)), f > k.end && (k.end = f), !a.isGroupEnd(f, d))); f++);
                if (k) for (i = k.end + 1, j = k.start; j < i; j++) m[j].groupInfo || (m[j].groupInfo = k);
                return {
                    g: k,
                    index: f
                }
            }
            function X(a, b) {
                return b >= -1 && b < w(a.items)
            }
            function Y(a, b, c) {
                var d, e, f = a && a.items;
                if (f) for (d = f[b] && f[b].groupInfo; d;) {
                    if (e = d.level, e === c) return d;
                    if (!(e > c)) break;
                    d = d.parent
                }
                return l
            }
            function Z(a, b) {
                switch (a) {
                    case "head":
                    case "tail":
                        return b === l;
                    case "direction":
                        return 1 === b;
                    case "itemsData":
                        return 0 === w(b);
                    default:
                        return !1
                }
            }
            function $(a) {
                a.Zka = l, a.refresh()
            }
            function _(a, b) {
                !b && a.Wka || (a.Zka = a.createRangeGroup(), ba(a))
            }
            function aa(a) {
                a.Wka && !a.Zka && (a.Zka = a.createRangeGroup())
            }
            function ba(a, b) {
                a.groupChangeHandler && a.groupChangeHandler(b)
            }
            function ca(a, b, c) {
                if (da(a, b), !X(a, b + c - 1)) throw Error(I().Exp_InvalidCount)
            }
            function da(a, b) {
                if (!X(a, b)) throw Error(I().Exp_InvalidIndex)
            }
            d = function() {
                function a(a, b, c) {
                    var d = this;
                    d.head = l, d.tail = l, d.Zka = l, d.items = Array(a), d.V3 = 0, d.wz = !0, d.kj = b, d.ML = c
                }
                return a.prototype = {
                    direction: z("direction", 1),
                    group: function(a, b) {
                        var c = this,
                            d, e;
                        for (ca(c, a, b), c.kj.ITa.vUa(c.ML), d = 0; d < b; d++) e = a + d, c.items[e] ? c.items[e].level++ : c.items[e] = new ea;
                        c.Wka && c.Zka && (c.Zka = l), _(c), c.wz = !1
                    },
                    Lia: function() {
                        this.Wka = !0, this.Zka = l
                    },
                    Mia: function() {
                        this.Wka = !1, this.refresh()
                    },
                    ungroupRange: function(a, b) {
                        var c = this,
                            d, e;
                        for (ca(c, a, b), c.kj.ITa.vUa(c.ML), d = 0; d < b; d++) e = c.items[a + d], e && e.level > -1 && e.level--;
                        _(c)
                    },
                    ungroup: function() {
                        var a = this,
                            b = w(a.items);
                        a.kj.ITa.vUa(a.ML), a.items = Array(b), _(a), a.wz = !0
                    },
                    expand: function(a, b) {
                        var c, d, e, f, g;
                        if (a < -1) throw Error(I().Exp_InvalidLevel);
                        for (c = this, d = c.items, c.kj.ITa.vUa(c.ML), aa(c), f = 0, g = d.length; f < g; f++) d[f] && (e = c.find(f, a), e && c.expandGroup(e, b))
                    },
                    expandGroup: function(a, b) {
                        if (!a) throw Error(I().Exp_GroupInfoIsNull);
                        var c = this,
                            d = c.direction(),
                            e = -1;
                        c.kj.ITa.vUa(c.ML), 0 === d ? e = a.start - 1 : 1 === d && (e = a.end + 1), c.setCollapsed(e, !b)
                    },
                    Xr: function(a) {
                        return !X(this, a) || !this.isCollapsed(a)
                    },
                    isCollapsed: function(a) {
                        var b = this.items[a];
                        return !!(b && b.viewCollapsed && b.level > -1)
                    },
                    find: function(a, b) {
                        var c = this,
                            d;
                        return aa(c), b === -1 ? d = c.Zka : (da(c, a), d = Y(c, a, b)), d
                    },
                    getLevel: function(a) {
                        var b = this.items[a];
                        return b ? b.level : -1
                    },
                    getCollapsed: function(a) {
                        var b = this.items[a];
                        return !!b && !! b.collapsed
                    },
                    B4: function(a, b, c, d) {
                        var e, f;
                        for (e = b; e <= c; e++) f = a[e], f || (f = a[e] = new ea, f.level = -1), f.viewCollapsed = d
                    },
                    setCollapsed: function(a, b) {
                        var c, d, e, f, g, h, i = this,
                            j = !1,
                            k = i.items;
                        if (i.kj.ITa.vUa(i.ML), aa(i), a < 0 ? (c = i.head, c || (c = i.head = new ea)) : a < w(k) ? (c = k[a], c || (c = k[a] = new ea, c.level = -1)) : (c = i.tail, c || (c = i.tail = new ea)), d = 1 === i.direction(), c.collapsed !== b && (c.collapsed = b, j = !0, i.E4(a, b)), j && (a += d ? -1 : 1, f = [], g = i.find(a, i.getLevel(a)))) {
                            for (h = g.start; h <= g.end; h++) f.push(h);
                            e = {
                                indexes: f
                            }
                        }
                        ba(i, e)
                    },
                    dPa: function(a, b) {
                        var c, d = this.items;
                        d[a] ? d[a].collapsed !== b && (d[a].collapsed = b) : (c = d[a] = new ea, c.level = -1, c.collapsed = b)
                    },
                    E4: function(a, b) {
                        var c, d, e, f, g, h, i, j, k, l = this,
                            m = l.items,
                            n = 1 === l.direction(),
                            o = n ? -1 : 1,
                            p = a + o,
                            q = Y(l, p, l.getLevel(p));
                        if (q) if (b) c = n ? q.end + 1 : q.start - 1, l.dPa(c, !0), l.B4(m, q.start, q.end, !0);
                        else {
                            for (d = !1, e = q.parent; e;) {
                                if (f = n ? e.end + 1 : e.start - 1, m[f] && m[f].collapsed && m[f].level > -1) {
                                    d = !0;
                                    break
                                }
                                e = e.parent
                            }
                            if (!d) for (c = n ? q.end + 1 : q.start - 1, l.dPa(c, !1), l.B4(m, q.start, q.end, !1), g = [q], h = 0; h >= 0;) if (i = g[h--], f = n ? i.end + 1 : i.start - 1, m[f] && m[f].collapsed && m[f].level !== -1) l.B4(m, i.start, i.end, !0);
                            else for (j = i.children, k = 0; j && k < j.length; k++) g[++h] = j[k]
                        }
                    },
                    getMaxLevel: function() {
                        var a = -1,
                            b = this.items,
                            c;
                        return q(b, function(b, d) {
                            d && (c = d.level, c > a && (a = c))
                        }), a
                    },
                    cB: function(a, b, c, d) {
                        var e, f, g, h, i;
                        if (!(c <= 0 || a === b)) {
                            for (e = this, e.kj.ITa.vUa(e.ML), a < 0 && (a = 0), b < 0 && (b = 0), f = [], g = e.items, h = u(g, a - 1); h >= 0 && h < a + c;) i = new ea(g[h]), f.push({
                                index: h - a,
                                value: i
                            }), h = u(g, h);
                            d && v(g, a, c), v(g, b, c), q(f, function(a, c) {
                                g[b + c.index] = c.value
                            }), $(e)
                        }
                    },
                    bB: function(a, b, c, d, e) {
                        var f, g, h, i = this;
                        if (i.kj.ITa.vUa(i.ML), b < 0 && (b = 0), c < 0 && (c = 0), f = [], a) for (g = u(a.items, b - 1); g >= 0 && g < b + d;) f[g - b] = new ea(a.items[g]), g = u(a.items, g);
                        if (v(i.items, c, d), f.length > 0) for (h in f) f.hasOwnProperty(h) && (i.items[c + h] = f[h]);
                        e && v(a.items, b, d)
                    },
                    refresh: function() {
                        this.wz || _(this)
                    },
                    VL: function(a) {
                        var b, c, d = this,
                            e = d.items,
                            f = w(e),
                            g = a - f;
                        if (g < 0) e.splice(a, -g);
                        else if (b = e[f - 1]) for (c = 0; c < g; c++) e.push(new ea(b));
                        else d.items = e.concat(Array(g));
                        $(d)
                    },
                    getState: function(a) {
                        var b = this,
                            c = b.items,
                            d, e = b.direction(),
                            f = -1;
                        return 0 === e ? f = a.start - 1 : 1 === e && (f = a.end + 1), d = f < 0 ? b.head : f < w(c) ? c[f] : b.tail, d && d.collapsed ? 1 : 0
                    },
                    Ez: function(a, b) {
                        var c = this,
                            d = c.items;
                        a < 0 ? (c.head || (c.head = new ea), c.head.level = b) : a < w(d) ? (d[a] || (d[a] = new ea), d[a].level = b) : (c.tail || (c.tail = new ea), c.tail.level = b), $(c)
                    },
                    suspendAdding: function() {
                        this.V3++
                    },
                    resumeAdding: function() {
                        this.V3--
                    },
                    createRangeGroup: function() {
                        for (var a, c, d = this, e = d.items, f = w(d.items), g = new b(d, 0, f - 1, (-1)), h = 0; h < f;) e[h] && (e[h].groupInfo = l), h++;
                        for (h = 0; h < f;) e[h] ? (a = W(d, h, 0), c = a.g, h = a.index + 1, c && c.level > -1 && g.addChild(c)) : h++;
                        return g
                    },
                    isGroupEnd: function(a, b) {
                        var c, d, e, f, g, h, i = this,
                            j = i.items,
                            k = a + 1;
                        return !X(i, k) || (!(c = j[k]) || (d = c.level, e = j[a].level, f = !1, d < e && (g = e - d, h = e - b, h >= 0 && h < g && (f = !0)), f))
                    },
                    hitTest: function(a, b, c) {
                        return P.call(a, b, c)
                    },
                    jp: function(a, b, c, d) {
                        var e, f, g, h, i, j, k, l = a.Gt(),
                            m = a.am(),
                            n = a.ss,
                            o = l.width,
                            p = l.height;
                        if (o || p) {
                            if (e = d ? o : m.width, f = d ? m.height : p, g = d ? l.rowMaxLevel : l.colMaxLevel, h = d ? n.bn : n.dn, b.save(), b.beginPath(), !c || c.intersect(l.x, l.y, e, f)) for (i = new ga(a, d, g), i._L(b), j = h.call(a.ss, function() {
                                return R(a, d, g)
                            }), k = 0; k <= 2; k++) j[k].aM(b);
                            b.beginPath(), b.restore()
                        }
                    },
                    UL: function(a, b) {
                        if (b) {
                            var c = b.what;
                            c === E || c === F ? M(a, b) : c !== G && c !== H || N(a, b)
                        }
                    },
                    iT: function() {
                        return this.wz
                    },
                    fromJSON: function(a, b) {
                        var c, d, e, f, g, h, i, j, k, l, m, n = b && b.ignoreStyle;
                        if (a && !n) for (c = this, d = c.items, e = a.itemsData, f = a.direction, g = a.head, h = a.tail, l = [], q(e, function(a, b) {
                            if (i = b.index, j = b.info, i >= 0 && j) {
                                for (k = 0; k < b.count && !(i + k >= w(d)); k++) b.info.collapsed && l.push(b), d[i + k] = new ea(j);
                                c.wz = !1
                            }
                        }), y(f) || c.direction(f), g && (c.head = g), h && (c.tail = h), _(c, !0), m = 0; m < l.length; m++) c.E4(l[m].index, !0)
                    },
                    toJSON: function(a) {
                        var b, c, d, e, f, g, h, i, j, k = a && a.ignoreStyle;
                        if (!k) {
                            for (b = this, c = [], d = b.items, f = -1, e = 0; e < w(d); e++) g = c[f], h = d[e], h && (f >= 0 && e === g.count + g.index && h.level === g.info.level && h.collapsed === g.info.collapsed ? c[f].count++ : c[++f] = {
                                index: e,
                                count: 1,
                                info: {
                                    level: h.level,
                                    collapsed: h.collapsed
                                }
                            });
                            return i = {
                                itemsData: c,
                                direction: b.direction(),
                                head: b.head,
                                tail: b.tail
                            }, j = {}, q(i, function(a, b) {
                                Z(a, b) || (j[a] = b)
                            }), p.isEmptyObject(j) ? m : j
                        }
                    }
                }, a
            }(), k.Outline = d;

            function ea(a) {
                return {
                    level: a ? a.level : 0,
                    collapsed: !! a && a.collapsed,
                    viewCollapsed: !! a && a.viewCollapsed
                }
            }
            function fa(a, b, c, d) {
                var e = this;
                e.PADDING = 2, e.LINE_SIZE = 2, e.START_LINE_SIZE = 6, e.bM = [], e.cM = [], e.dM = [], e.kj = a, e.ML = b, e.eM = c, e.ZL = x(d) ? d : T(b, a).getMaxLevel()
            }
            fa.prototype = {
                YL: function() {
                    var a, b = this;
                    b.ZL !== -1 && (a = b.fM(0, b.ML), q(a, function(a, c) {
                        b.gM(c)
                    }))
                },
                gM: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, m, p, r, s, t, u, v, x, y = this,
                        z = y.kj,
                        A = y.ML,
                        B = T(A, z).direction(),
                        C = 1 === B,
                        D = 0 === B,
                        E = y.hM(!0, A),
                        F = y.hM(!1, A),
                        G = a.start,
                        H = a.end,
                        I = a.level;
                    if (C ? b = H + 1 : D && (b = G - 1), 0 === a.state()) {
                        if (c = !0, d = a.parent, d && (D && G === d.start || C && H === d.end) && (c = !1), c && y.iM(!0, I, b, E, F, B), G <= F && H >= E) {
                            for (e = n(E, G), f = o(F, H), c && (g = {
                                start: e,
                                end: f,
                                level: I,
                                startLine: l
                            }, (C && e === G || D && f === H) && (g.startLine = !0), y.bM.push(g)), j = [], k = a.children, h = e; h <= f; h++) j.push(!1);
                            for (q(k, function(a, b) {
                                var c = b.start,
                                    d = b.end,
                                    f;
                                if (1 === b.state()) for (i = c; i <= d; i++) j[i - e] = !0;
                                f = C ? d + 1 : d - 1, j[f - e] = !0, y.gM(b)
                            }), m = !0, h = 0; h < w(k); h++) {
                                if (p = k[h], r = p.start, s = p.end, t = r === G, u = s === H, t && u) {
                                    m = !1;
                                    break
                                }
                                if (C && u || D && t) for (i = r; i <= s; i++) j[i - e] = !0
                            }
                            if (m) for (v = e; v <= f; v++) j[v - e] || (x = {
                                index: v,
                                level: I + 1
                            }, y.cM.push(x))
                        }
                    } else 1 === a.state() && y.iM(!1, I, b, E, F, B)
                },
                iM: function(a, b, c, d, e, f) {
                    var g = {
                        isExpanded: a,
                        level: b
                    };
                    a && (g.paintLine = !0), c >= d && c <= e && (g.index = c, g.lineDirection = f, this.dM.push(g))
                },
                jM: function(a) {
                    var b = this,
                        c = b.kj,
                        d = b.eM;
                    return b.ML ? c.Gr(d).findRow(a) : c.Hr(d).findCol(a)
                },
                aM: function(a) {
                    var b, c, d, e, f, g, h, i = this;
                    i.ZL !== -1 && (b = i.kj.Gt(), c = i.ML, d = S.call(i, b, c), d && (e = i.START_LINE_SIZE, f = i.PADDING, g = i.LINE_SIZE, h = n(0, (d - e) / 2) + f, a.save(), a.fillStyle = r(C).color, i.kM(a, i.cM, c, b, d, h, g), i.lM(a, i.bM, c, b, d, h, g, e), i.mM(a, i.dM, c, b, d, h, g, f), a.beginPath(), a.restore()))
                },
                kM: function(a, b, c, d, e, f, g) {
                    var h, i, j = this;
                    q(b, function(b, k) {
                        var l, m, o, p = j.jM(k.index);
                        p && (l = c ? p.y : p.x, m = (c ? p.height : p.width) - g, m >= 0 && (h = l + n(0, m / 2), i = k.level * e + f, c ? (o = h, h = i + .5, i = o) : i += .5, a.fillRect(d.x + h, d.y + i, g, g)))
                    })
                },
                lM: function(a, b, c, d, e, f, g, h) {
                    var i, j, k, l, m, p, q, r, s, t, u, v, x = this,
                        y = x.kj,
                        z = T(c, y).direction();
                    for (i = 0; i < w(b); i++) {
                        j = b[i], k = j.start, l = j.end;
                        do m = x.jM(k), k++;
                        while (!m && k <= l);
                        do p = x.jM(l), l--;
                        while (!p && l >= k);
                        (m || p) && (m ? p || (p = m) : m = p, q = c ? m.y : m.x, r = j.level * e + f, s = c ? g : n(0, p.x + p.width - m.x), t = c ? n(0, p.y + p.height - m.y) : g, 1 === z && (q += 1), c ? (u = q, q = r + .5, r = u) : r += .5, a.fillRect(d.x + q, d.y + r, s, t), j.startLine && (v = o(h, e - g), v > 0 && (0 === z && (c ? r = r + t - g : q = q + s - g), c && r >= m.y && r < p.y + p.height ? a.fillRect(d.x + q, d.y + r, v, g) : !c && q >= m.x && q < p.x + p.width && a.fillRect(d.x + q, d.y + r, g, v))))
                    }
                },
                mM: function(a, b, c, d, e, f, g, h) {
                    var i, j, k, l, m, p, q, s, t, u, v, x, y, z, A, B, E, F, G, H, I = this;
                    for (i = 0; i < w(b); i++) j = b[i], k = I.jM(j.index), k && (l = c ? k.height : k.width, l <= 0 || (m = n(0, (l - e) / 2), s = (c ? k.y : k.x) + m, t = j.level * e + h, u = o(e, l), v = e, z = l - u, c ? (A = s, s = t, t = A, B = u, u = v, v = B, x = .5, y = 0) : (x = 0, y = .5), a.strokeStyle = r(D).borderTopColor, a.lineWidth = 1, a.fillStyle = r(D).backgroundColor, a.fillRect(d.x + s, d.y + t, u, v), p = d.x + s + x, q = d.y + t + y, a.strokeRect(p, q, u, v), a.fillStyle = r(C).color, I.nM(a, j.isExpanded, p, q, u, v), j.paintLine && z > 0 && (s = c ? k.y : k.x, t = j.level * e + f, E = 0 === j.lineDirection, F = c ? g : m, G = c ? m : g, c ? (H = s, s = t, t = H, E && (t += m + v, G = z - m)) : E && (s += m + u, F = z - m), a.fillRect(d.x + s + x, d.y + t + y, F, G))))
                },
                nM: function(a, b, c, d, e, f) {
                    b || a.fillRect(c + e / 2 - 1, d + 4, 2, f - 8), a.fillRect(c + 4, d + f / 2 - 1, e - 8, 2)
                },
                fM: function(a, b) {
                    var c, d, e, f = this,
                        g = f.kj,
                        h = [],
                        i = -1,
                        j = -1,
                        k = T(b, g),
                        l = b ? g.Gr : g.Hr,
                        m = l.call(g, f.eM),
                        p = w(m);
                    for (p && (d = m[0], e = m[p - 1], i = n(0, (b ? d.row : d.col) - 1), j = b ? o(g.getRowCount(), e.row + 2) : o(g.getColumnCount(), e.col + 2)); i < j;) c = k.find(i, a), c ? (i = c.end + 1, h.push(c)) : i++;
                    return h
                },
                hM: function(a, b) {
                    var c = -1,
                        d = this,
                        e = d.kj,
                        f = d.eM,
                        g = e.frozenRowCount(),
                        h = e.frozenColumnCount(),
                        i = e.frozenTrailingRowCount(),
                        j = e.frozenTrailingColumnCount(),
                        k = e.getRowCount(),
                        l = e.getColumnCount();
                    return 0 === f ? c = a ? 0 : (b ? g : h) - 1 : 1 === f ? c = a ? b ? g : h : (b ? k - i : l - j) - 1 : 2 === f && (c = a ? b ? k - i : l - j : (b ? k : l) - 1), c
                },
                oM: function(a) {
                    a && this.kj.CH && (a.x -= 2, a.y -= 2, a.width += 4, a.height += 4)
                },
                XL: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, m, p, q, r, t, u, v, x, y, z = this,
                        A = z.ZL;
                    if (A < 0) return l;
                    if (d = z.kj, e = d.Gt(), f = S.call(z, e, c), !f) return l;
                    for (g = z.dM, j = 0; j < w(g); j++) if (k = g[j], m = k.index, p = k.level * f + z.PADDING, q = z.jM(m), q && (h = c ? q.height : q.width, !(h <= 0) && (r = o(f, h), t = f, u = (c ? q.y : q.x) + n(0, (h - f) / 2), v = p, c && (x = r, r = t, t = x, y = u, u = v, v = y), i = new s(e.x + u + .5, e.y + v + .5, r, t), z.oM(i), i.contains(a, b)))) return k;
                    return l
                }
            };

            function ga(a, b, c) {
                var d = this;
                d.PADDING = 2, d.kj = a, d.ML = b, d.ZL = x(c) ? c : T(b, a).getMaxLevel()
            }
            ga.prototype = {
                _L: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m, o, p, q, s, t, u, v, w, x, y, z, B, E, F, G, H = this,
                        I = H.kj,
                        J = H.ZL;
                    if (!(J < 0) && (b = H.ML, c = I.Gt(), d = S.call(H, c, b), d && (e = J + 2, f = H.PADDING, g = I.options, h = c.width, i = c.height, j = c.x, k = c.y, l = I.am(), m = l.width, o = l.height, p = l.Cr, q = l.Br, s = l.zr, t = l.Ar, a.fillStyle = r(C).backgroundColor, a.strokeStyle = r(D).borderTopColor, a.font = "8.25pt Arial", a.lineWidth = 1, a.fillRect(j, k, b ? h : m, b ? o : i), a.strokeRect(j - .5, k - .5, b ? h : m + 1, b ? o + 1 : i), b ? a.strokeRect(j - .5, t - .5, h, p) : a.strokeRect(s - .5, k - .5, q, i), u = (b ? p : q) - d, w = n(0, (b ? t : s) + u / 2), x = f, b && (z = w, w = x, x = z), v = b ? g.colHeaderVisible : g.rowHeaderVisible, v && u >= 0))) for (y = 0; y < e; y++) B = d - 1, F = j + w, G = k + x, b ? F += .5 : G += .5, a.fillStyle = r(D).backgroundColor, a.fillRect(F, G, B, B), a.strokeRect(F, G, B, B), a.fillStyle = r(D).color, E = A(a.font), H.pM(a, F, G, B, d, y + 1, E), b ? w += d : x += d
                },
                pM: function(a, b, c, d, e, f, g) {
                    var h = "" + f,
                        i = a.measureText(h).width;
                    i <= d && g <= e && (a.textBaseline = "middle", a.fillText(h, b + (d - i) / 2, c + d / 2))
                },
                WL: function(a, b, c) {
                    var d, e, f, g = this,
                        h = g.kj,
                        i = g.ZL;
                    return i < 0 ? l : (d = i + 2, e = h.am(), f = h.options, c ? g.qM(h, a, b, c, f.colHeaderVisible, e.Cr, e.Ar, d) : g.qM(h, a, b, c, f.rowHeaderVisible, e.Br, e.zr, d))
                },
                qM: function(a, b, c, d, e, f, g, h) {
                    var j, k, m, o, p, q = this,
                        r = a.Gt(),
                        s = S.call(q, r, d),
                        t = f - s;
                    if (s && e && t >= 0) for (j = n(0, g + t / 2), k = q.PADDING, d && (p = j, j = k, k = p), o = 0; o < h; o++) {
                        if (m = new i.Rect(r.x + j, r.y + k, s, s), m.contains(b, c)) return {
                            index: o
                        };
                        d ? j += s : k += s
                    }
                    return l
                }
            }, e = i.lUa;

            function ha(a) {
                return a && new ea(a)
            }
            function ia(a) {
                return {
                    items: a.items.map(ha),
                    head: ha(a.head),
                    tail: ha(a.tail),
                    wz: a.wz,
                    direction: a.direction()
                }
            }
            function ja(a, b) {
                a.items = b.items.map(ha), a.head = ha(b.head), a.tail = ha(b.tail), a.wz = b.wz, a.direction(b.direction), _(a, !0)
            }
            p.extend(e.prototype, {
                vUa: function(a) {
                    var b = this,
                        c = b.zTa;
                    c && (c.wUa || (c.wUa = []), a && !c.wUa[0] ? c.wUa[0] = ia(b.xUa) : a || c.wUa[1] || (c.wUa[1] = ia(b.yUa)))
                },
                zUa: function(a) {
                    var b, c;
                    a && (b = this, c = a[0], c && ja(b.xUa, c), c = a[1], c && ja(b.yUa, c))
                }
            }), e.$n("RANGE_GROUP", {
                init: function() {
                    var a = this,
                        b = a.kj;
                    a.yUa = new d(a.getColumnCount(), b, (!1)), a.xUa = new d(a.getRowCount(), b, (!0))
                },
                undo: function(a) {
                    var b = a.wUa;
                    b && (this.zUa(b), this.kj.$p())
                }
            }), f = {
                init: function() {
                    var a = this;
                    a.rowOutlines = a.ITa.xUa, a.columnOutlines = a.ITa.yUa, a.rowOutlines.groupChangeHandler = function(b) {
                        var c, d, e, f = b && b.indexes;
                        f && a.recalcRows && a.recalcRows(f), a.au(), c = a.charts, c && (f ? (d = f[0], e = f[f.length - 1]) : (d = 0, e = a.getRowCount() - 1), c.tTa(d, e, !0))
                    }, a.columnOutlines.groupChangeHandler = function(b) {
                        var c, d, e, f;
                        a.bu(), c = b && b.indexes, d = a.charts, d && (c ? (e = c[0], f = c[c.length - 1]) : (e = 0, f = a.getColumnCount() - 1), d.tTa(e, f, !1))
                    }, a.Wr.push(a.rowOutlines), a.Zr.push(a.columnOutlines)
                },
                dispose: function() {
                    var a = this;
                    p(a.Ws()).unbind("mousedown.group")
                },
                setHost: function(a) {
                    if (a) {
                        var b = this;
                        a.bind("mousedown.group", function(a) {
                            var c, d = b.Vs(),
                                e = P.call(b, a.pageX - d.left, a.pageY - d.top);
                            e && (c = e.what, c === G || c === E ? b.rowOutlines.UL(b, e) : c !== H && c !== F || b.columnOutlines.UL(b, e))
                        })
                    }
                },
                onPaintSuspend: function(a) {
                    var b = this;
                    a.suspend ? (b.rowOutlines.Lia(), b.columnOutlines.Lia()) : (b.rowOutlines.Mia(), b.columnOutlines.Mia())
                },
                onLayoutChanged: function(a) {
                    var b = this,
                        c = a.changeType,
                        d = a.row,
                        e = a.rowCount,
                        f = a.col,
                        g = a.colCount,
                        h = a.sheetArea,
                        i = b.rowOutlines,
                        j = b.columnOutlines,
                        k = this.ITa;
                    "addRows" === c ? (k.vUa(!0), U(i, d, e)) : "deleteRows" === c ? (k.vUa(!0), V(i, d, e)) : "addColumns" === c ? (k.vUa(!1), U(j, f, g)) : "deleteColumns" === c ? (k.vUa(!1), V(j, f, g)) : "invalidateLayout" === c ? b.TL = l : "setColumnCount" === c ? (k.vUa(!1), 3 !== h && 1 !== h || j.VL(g)) : "setRowCount" !== c || 3 !== h && 2 !== h || (k.vUa(!0), i.VL(e))
                },
                paint: function(a) {
                    var b = a.ctx,
                        c = a.clipRect,
                        d = this,
                        e = d.rowOutlines,
                        f = d.columnOutlines;
                    e && e.jp(d, b, c, !0), f && f.jp(d, b, c, !1)
                },
                fromJson: function(a, b, c) {
                    if (a) {
                        var d = this,
                            e, f = a.showRowRangeGroup,
                            g = a.showColumnRangeGroup,
                            h = x(f) ? f : a.showRowOutline,
                            i = x(g) ? g : a.showColumnOutline;
                        y(h) || d.showRowOutline(h), y(i) || d.showColumnOutline(i), e = a.rowRangeGroup || a.rowOutlines, e && d.rowOutlines.fromJSON(e, c), e = a.colRangeGroup || a.columnOutlines, e && d.columnOutlines.fromJSON(e, c)
                    }
                },
                toJson: function(a, b) {
                    var c, d = this,
                        e = d.rowOutlines,
                        f = d.columnOutlines,
                        g = d.showRowOutline();
                    g !== !0 && (a.showRowOutline = g), c = d.showColumnOutline(), c !== !0 && (a.showColumnOutline = c), a.rowOutlines = e ? e.toJSON(b) : m, a.columnOutlines = f ? f.toJSON(b) : m
                }
            }, i.Worksheet.$n(B, f), g = {
                init: function() {
                    j.SL(this.commandManager())
                }
            }, i.Workbook.$n(B, g), a.exports = k
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {
                Exp_InvalidIndex: "Invalid index",
                Exp_InvalidCount: "Invalid count",
                Exp_InvalidLevel: "Invalid level",
                Exp_GroupInfoIsNull: "groupInfo is null"
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(104);
            b.SR = {}, b.SR.en = c(105), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s = {},
                t = c(26),
                u = c(87),
                v = t.j.Fa,
                w = u.Go,
                x = u.GC$,
                y = x.extend,
                z = x.isEmptyObject,
                A = x.inherit,
                B = u.Ul,
                C = B.Nl,
                D = u.Im,
                E = u.Rect,
                F = u.Vl,
                G = u.En,
                H = u.kf,
                I = u.Events,
                J = u.zp,
                K = u.yp,
                L = B.nl,
                M = B.Ml.mozilla,
                N = B.rl(),
                O = N.ipad || N.iphone,
                P = null,
                Q = void 0,
                R = Math.abs,
                S = Math.min,
                T = Math.max,
                U = Math.pow,
                V = Math.atan2,
                W = Math.PI,
                X = Math.round,
                Y = Math.sqrt,
                Z = Math.atan,
                $ = Math.log,
                _ = Math.floor,
                aa = 100,
                ba = "touch",
                ca = "none",
                da = "MSPointerDown",
                ea = "MSPointerMove",
                fa = "MSPointerUp",
                ga = "pointerdown",
                ha = "pointermove",
                ia = "pointerup",
                ja = "touchstart",
                ka = "touchmove",
                la = "touchend",
                ma = "MSPOINTER_TYPE_TOUCH",
                na = isNaN,
                oa = parseInt,
                pa = parseFloat,
                qa = window,
                ra = document,
                sa = qa.Yl,
                ta = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB",
                ua = "AAAAAElFTkSuQmCC",
                va = u.Bn;

            function wa() {
                return t.C(s.SR)()
            }
            function xa(a) {
                return a.height
            }
            function ya(a) {
                return a.width
            }
            function za(a) {
                clearInterval(a)
            }
            function Aa() {
                return (new Date).valueOf()
            }
            function Ba(a, b) {
                var c, d, e, f, g, h, i, j;
                return !(!a || !b) && (c = 13, d = 15, e = c, f = c, g = d, h = d, i = a.X - b.X, j = a.Y - b.Y, R(i) < e && R(j) < f && Y(i * i + j * j) < S(g, h))
            }
            function Ca(a) {
                return a.getActiveSheet()
            }
            function Da(a) {
                return a.getSelections()
            }
            function Ea(a) {
                return a.frozenTrailingColumnCount()
            }
            function Fa(a) {
                return a.frozenTrailingRowCount()
            }
            function Ga(a, b) {
                return a.getColumnCount(b)
            }
            function Ha(a, b) {
                return a.getRowCount(b)
            }
            b = 400, d = 1e3, e = 20;

            function Ia(a) {
                var b = x(a).offset(),
                    c = ra.body,
                    d = 0,
                    e = 0;
                return b && (d = b.top + c.clientTop || 0, e = b.left + c.clientLeft || 0), {
                    FB: d,
                    EB: e
                }
            }
            function Ja() {
                var a = this;
                a.rM = [], a.sM = {
                    length: 0
                }, a.tM = new Pa, a.uM = new Qa
            }
            y(Ja.prototype, {
                vM: function(a) {
                    this.tM.vM = a
                },
                wM: function(a) {
                    this.tM.wM = a
                },
                xM: function(a) {
                    var b = this;
                    b.tM.xM = function(c) {
                        if (a) {
                            a(c);
                            var d = b.yM;
                            d && d.zM()
                        }
                    }
                },
                AM: function(a) {
                    this.tM.AM = a
                },
                BM: function(a) {
                    this.tM.BM = a
                },
                CM: function(a) {
                    this.uM.CM = a
                },
                DM: function(a) {
                    this.uM.DM = a
                },
                EM: function(a) {
                    this.uM.EM = a
                },
                FM: function(a) {
                    this.GM = a
                },
                HM: function(a) {
                    this.IM = a
                },
                JM: function(a, b) {
                    var c = b ? b.KM : this.LM.KM;
                    return B.Z3(a, c)
                },
                MM: function(a, b) {
                    var c, d, e, f, g, h, i = this,
                        j = b.pointerType,
                        k = b.target,
                        l = b.offsetX,
                        m = b.offsetY;
                    j !== b[ma] && j !== ba || (c = i.JM(k, a), d = c.EB, e = c.FB, f = i.NM(a, k, b.pointerId, new Ra(l + d, m + e), b.timeStamp), f && L(b), "sheet" === i.LM.OM && (g = b.pageX - (l + d), h = b.pageY - (m + e), i.LM.KM.canvasOffset = {
                        top: h,
                        left: g
                    }))
                },
                PM: function(a) {
                    var b, c, d = this,
                        e = a.pointerType,
                        f = a.pointerId;
                    if (e === a[ma] || e === ba) {
                        if (d.sM[f] === Q) return !1;
                        b = d.JM(a.target), c = d.aB(f, new Ra(a.offsetX + b.EB, a.offsetY + b.FB), a.timeStamp), c && L(a)
                    }
                },
                QM: function(a) {
                    var b, c, d = this,
                        e = a.pointerType,
                        f = a.pointerId;
                    if (e === a[ma] || e === ba) {
                        if (d.sM[f] === Q) return !1;
                        b = d.JM(a.target), c = d.RM(f, new Ra(a.offsetX + b.EB, a.offsetY + b.FB)), c && L(a)
                    }
                },
                SM: function(a) {
                    var b, c, d = this,
                        e = a.pointerType,
                        f = a.pointerId;
                    if (e === a[ma] || e === ba) {
                        if (d.sM[f] === Q) return !1;
                        b = d.JM(a.target), c = d.TM(f, new Ra(a.offsetX + b.EB, a.offsetY + b.FB)), c && L(a)
                    }
                },
                UM: function(a, b) {
                    var c, d, e, f = Ia(a.KM),
                        g = b.changedTouches,
                        h = !1;
                    for (c = 0; c < g.length; c++) d = g[c], e = M ? Aa() : b.timeStamp, h = this.NM(a, b.target, d.identifier, new Ra(d.pageX - f.EB, d.pageY - f.FB), e) || h;
                    h && L(b)
                },
                VM: function(a) {
                    var b, c, d, e = this,
                        f = Ia(e.LM.KM),
                        g = a.changedTouches,
                        h = !1;
                    for (b = 0; b < g.length; b++) c = g[b], d = M ? Aa() : a.timeStamp, h = e.aB(c.identifier, new Ra(c.pageX - f.EB, c.pageY - f.FB), d) || h;
                    h && L(a)
                },
                WM: function(a) {
                    var b, c, d = this,
                        e = Ia(d.LM.KM),
                        f = a.changedTouches,
                        g = !1;
                    for (b = 0; b < f.length; b++) c = f[b], g = d.RM(c.identifier, new Ra(c.pageX - e.EB, c.pageY - e.FB)) || g;
                    g && L(a)
                },
                XM: function(a) {
                    var b, c, d = this,
                        e = Ia(d.LM.KM),
                        f = a.changedTouches,
                        g = !1;
                    for (b = 0; b < f.length; b++) c = f[b], g = d.TM(c.identifier, new Ra(c.pageX - e.EB, c.pageY - e.FB)) || g;
                    g && L(a)
                },
                YM: function(a) {
                    var b, c, d = this,
                        e = d.LM,
                        f = d.ZM;
                    e !== f && (b = x(e.KM).offset(), c = x(f.KM).offset(), a.X += b.left - c.left, a.Y += b.top - c.top)
                },
                $M: function(a) {
                    var b, c, d, e, f, g = this,
                        h = g.rM;
                    for (g.ZM = P, g.yM = P, c = 0; c < h.length; c++) if (h[c] === a) {
                        if (d = h[c], e = P, f = P, d._M && !d._M()) {
                            for (c = 0; c < h.length; c++) if (b = h[c], b !== d && b.aN >= 0 && b.aN < d.aN && (!b._M || b._M())) {
                                e = b;
                                break
                            }
                            if (e === P) return !1
                        }
                        if (d.bN && !d.bN()) {
                            for (c = 0; c < h.length; c++) if (b = h[c], b !== d && b.aN >= 0 && b.aN < d.aN && (!b.bN || b.bN())) {
                                f = b;
                                break
                            }
                            if (f === P) return !1
                        }
                        e === P && (e = d), f === P && (f = d), g.LM = d, g.ZM = e, g.cN = f, g.vM(f.dN || P), g.wM(e.eN || P), g.BM(e.fN || P), g.AM(e.gN || P), g.xM(e.hN || P), g.CM(f.iN || P), g.DM(f.jN || P), g.EM(f.kN || P), g.FM(e.GM || P), g.HM(e.IM || P), e.lN && (g.yM = d.lN);
                        break
                    }
                    return !0
                },
                NM: function(a, b, c, d, e) {
                    var f = this;
                    return f.sM[c] === Q && (!(0 === f.sM.length && !f.$M(a, b)) && ( !! f.ZM && (f.sM.length >= f.ZM.mN || (!f.yM || !f.yM.nN()) && (f.YM(d), f.yM && 0 === f.sM.length && f.yM.oN(), f.sM[c] = {
                            id: c,
                            time: Aa(),
                            position: d
                        }, f.sM.length++, f.tM.pN(b, c, d, e), f.tM.qN(c, d, f.sM.length, e), 1 === f.sM.length && f.uM.qN(d), 1 === f.sM.length && f.GM && f.GM({
                            rN: d
                        }), !0))))
                },
                aB: function(a, b, c) {
                    var d = this;
                    return d.sM[a] !== Q && ((!d.yM || !d.yM.sN()) && (d.YM(b), d.sM[a] = {
                            id: a,
                            time: Aa(),
                            position: b
                        }, d.tM.tN(a, b, c), !0))
                },
                RM: function(a, b) {
                    var c = this;
                    return c.sM[a] !== Q && (delete c.sM[a], c.sM.length--, (!c.yM || !c.yM.uN()) && (c.YM(b), c.tM.vN(a), c.tM.wN(a), 0 === c.sM.length && (c.uM.vN(b), c.uM.wN(b)), 0 === c.sM.length && c.IM && c.IM({
                            rN: b
                        }), c.yM && 0 === c.sM.length && 0 === c.tM._process && c.yM.zM(), !0))
                },
                TM: function(a, b) {
                    return this.RM(a, b)
                },
                xN: function(a, b) {
                    var c, d, e, f, g, h = this,
                        i = "." + a.OM,
                        j = ".gcSheet",
                        k = da + j,
                        l = ea + j + i,
                        m = fa + j + i,
                        n = "MSPointerCancel" + j + i,
                        o = "MSLostPointerCapture" + j + i,
                        p = ga + j,
                        q = ha + j + i,
                        r = ia + j + i,
                        s = "LostPointerCapture" + j + i,
                        u = "pointercancel" + j + i,
                        w = ja + j,
                        y = ka + j,
                        z = la + j,
                        A = "touchcancel" + j;

                    function C() {
                        x(ra).bind(l, F).bind(m, G).bind(q, F).bind(r, G).bind(n, H).bind(o, H).bind(s, H).bind(u, H)
                    }
                    function D() {
                        x(ra).unbind(l).unbind(q).unbind(m).unbind(r).unbind(n).unbind(u).unbind(o).unbind(s)
                    }
                    function E(b) {
                        C(), h.MM(a, b)
                    }
                    function F(a) {
                        h.PM(a)
                    }
                    function G(a) {
                        h.QM(a), 0 === h.sM.length && D()
                    }
                    function H(a) {
                        h.SM(a), 0 === h.sM.length && D()
                    }
                    c = a.KM, d = h.rM, e = t.k.Cb(d, a), e >= 0 && b || e < 0 && !b || (f = B._Va(), b ? f ? (g = c.style, v(g.msTouchAction) || (g.msTouchAction = ca), v(g.touchAction) || (g.touchAction = ca), x(c).bind(k, E).bind(p, E)) : (x(c).bind(w, function(b) {
                        h.UM(a, b)
                    }), x(c).bind(y, function(a) {
                        h.VM(a)
                    }).bind(z, function(a) {
                        h.WM(a)
                    }).bind(A, function(a) {
                        h.XM(a)
                    })) : f ? x(c).unbind(k).unbind(p) : x(c).unbind(w).unbind(y).unbind(z).unbind(A), b ? d.push(a) : d.splice(e, 1))
                },
                no: function() {
                    var a, b = this,
                        c = b.rM;
                    for (a = c.length - 1; a >= 0; a--) b.xN(c[a], !1)
                }
            });

            function Ka(a, b) {
                var c = V(b.Y, b.X) - V(a.Y, a.X);
                return c > W ? c -= 2 * W : c < -W && (c += 2 * W), c
            }
            function La(a, b) {
                return Y((b.X - a.X) * (b.X - a.X) + (b.Y - a.Y) * (b.Y - a.Y))
            }
            function Ma(a, b, c) {
                var d = new Ra(c._Center.X, c._Center.Y),
                    e = new Ra(b.X - d.X, b.Y - d.Y),
                    f = new Ra(a.X - d.X, a.Y - d.Y),
                    g = S(1, U(La(b, d) / c._Radius, 4)),
                    h = Ka(e, f);
                return na(h) ? 0 : h * g
            }
            function Na(a) {
                return R(a) <= 2.220446049250313e-16
            }
            function Oa(a, b) {
                var c = !1,
                    d = !1,
                    e;
                return 0 !== a && (e = Z(b / a) / W * 180, e < 20 && (c = !0)), 0 === a ? d = !0 : (e = Z(b / a) / W * 180, e > 75 && e < 105 && (d = !0)), {
                    yN: c,
                    zN: d
                }
            }
            function Pa() {
                var a = this;
                a.AN = 0, a.BN = 0, a.CN = 1, a.DN = 0, a.EN = 0, a._process = 0, a.FN = 511, a.GN = new Za, a.HN = 20, a.IN = new Ta
            }
            y(Pa.prototype, {
                pN: function(a, b, c, d) {
                    var e, f = this;
                    3 === f._process && f.JN(!0), f.KN = 2 === f._process && 1 === f.GN.MN(), f.NN = a, e = {}, e.Np = b, e.ON = c, e.PN = c, f.GN.QN(e), f.RN = d, f.GN.MN() > 1 && (f.SN = !1, f.TN = !1, 1 === f._process && f.UN())
                },
                qN: function(a, b, c) {
                    0 === this._process && 1 === c && this.VN(this.GN.WN(0).PN)
                },
                tN: function(a, b, c) {
                    var d, f, g, h, i, j, k, l = this;
                    if (0 !== l.FN && l.GN.XN(a)) {
                        if (1 === l._process && 1 === l.GN.MN()) {
                            if (d = l.YN(), !l.ZN(1) && !l.ZN(2) && !d) return;
                            if (f = l.GN.$N(a).PN, Ba(b, f)) return;
                            g = R(b.X - f.X), h = R(b.Y - f.Y), l._N(g, h)
                        }
                        if (!(c - l.RN < e)) {
                            if (l.GN.$N(a).aO = b, i = l.GN.MN(), i > 1) for (j = 0; j < i; j++) if (k = l.GN.WN(j), !k.aO) return;
                            for (l.bO(c), l.RN = c, i = l.GN.MN(), j = 0; j < i; j++) k = l.GN.WN(j), k.ON = k.aO, k.aO = P
                        }
                    }
                },
                wN: function() {
                    var a = this;
                    a.cO && (a.dO(a.cO), a.cO = P)
                },
                vN: function(a) {
                    var b = this;
                    b.GN.XN(a) && (b.GN.eO(a), 2 === b._process ? 0 === b.GN.MN() && (b.ZN(64) || b.ZN(256) || b.ZN(128) ? b.fO() : b.JN(!0)) : 2 === b._process || 3 === b._process ? b.JN(!0) : 1 === b._process && b.JN(!1))
                },
                bO: function(a) {
                    var b, c, d, e, f, g = this,
                        h = g.gO(),
                        i = h.hO,
                        j = h.iO,
                        k = h.SH,
                        l = g.jO(),
                        m = l.kO,
                        n = l.eb,
                        o = l.lO;
                    if (g.AN += i, g.BN += j, g.CN *= n, g.DN += m, g.EN += o, b = {}, b.lO = o, b.kO = m, b.mO = a - g.RN, b.hO = i, b.iO = j, g.IN.nO(b), g.oO = k, 1 === g._process || 2 === g._process) {
                        if (1 === g._process && (c = g.UN())) return;
                        if (d = new Ya, d.pO = o, d.qO = m, d.rO = n, d.sO = new Ra(i, j), e = new Ua(g.IN), f = new ab(g.NN, g.tO(), d, (!1), k, e), g.uO(f), f.vO) return void g.JN(!0)
                    }
                },
                UN: function() {
                    var a, b = this;
                    return b._process = 2, a = new cb(b.NN, b.GN.MN(), b.tO(), b.GN.WN(0).PN), b.wO(a), !! a.vO && (b.JN(!0), !0)
                },
                _N: function(a, b) {
                    var c = Oa(a, b);
                    this.SN = c.yN, this.TN = c.zN
                },
                gO: function() {
                    var a = 0,
                        b = 0,
                        c = this.xO(),
                        d = c.yO,
                        e = c.zO,
                        f = new Ra(d.X, d.Y);
                    return a = d.X - e.X, b = d.Y - e.Y, {
                        hO: a,
                        iO: b,
                        SH: f
                    }
                },
                jO: function() {
                    var a, b = this,
                        c = 0,
                        d = 1,
                        e = 0;
                    return b.ZN(16) && 1 === b.GN.MN() && b.YN() && (c = Ma(b.GN.WN(0).aO, b.GN.WN(0).ON, b.AO)), b.GN.MN() > 1 && (a = b.BO(), c = a.kO, d = a.eb, e = a.lO), c = c / W * 180, {
                        kO: c,
                        eb: d,
                        lO: e
                    }
                },
                BO: function() {
                    var a, b, c, d, e, f, g, h, i, j, k, l = this,
                        m = l.xO(),
                        n = m.yO,
                        o = m.zO,
                        p = l.YN(),
                        q = p ? l.AO._Center : new Ra(0, 0),
                        r = 0,
                        s = 1,
                        t = 0,
                        u = 0,
                        v = 0,
                        w = 0,
                        x = 0,
                        y = l.GN.MN();
                    for (a = 0; a < y; a++) b = l.GN.WN(a), c = b.aO, d = b.ON, e = La(c, n), f = La(d, o), g = p ? new Ra(d.X - q.X, d.Y - q.Y) : new Ra(d.X - o.X, d.Y - o.Y), h = p ? new Ra(c.X - q.X, c.Y - q.Y) : new Ra(c.X - n.X, c.Y - n.Y), i = La(d, q), j = La(c, q), f >= l.HN && e >= l.HN && (v++, w += e, x += f, (!p || i >= l.HN) && j >= l.HN && (k = Ka(g, h), r += k, u++));
                    return u > 0 && l.ZN(16) ? r /= u : r = 0, v > 0 && l.ZN(32) ? (l.KN || (s = w / x), t = (w - x) / v, l.CO = w / v) : l.CO = 0, {
                        kO: r,
                        eb: s,
                        lO: t
                    }
                },
                ZN: function(a) {
                    return 0 !== (this.FN & a)
                },
                xO: function() {
                    var a, b, c, d, e, f, g = 0,
                        h = 0,
                        i = 0,
                        j = 0,
                        k = this.GN,
                        l = k.MN();
                    for (a = 0; a < l; a++) b = k.WN(a), c = b.ON, d = b.aO, g += c.X, h += c.Y, i += d.X, j += d.Y;
                    return e = new Ra(g / l, h / l), f = new Ra(i / l, j / l), {
                        yO: f,
                        zO: e
                    }
                },
                YN: function() {
                    var a = this.AO;
                    return a && !na(a._Radius)
                },
                VN: function(a) {
                    var b = this,
                        c = new db(b.NN, b.FN, P, a);
                    return c.DO = 511, b.EO(c), b.FO = c.DO, 0 === c.DO ? (b.JN(!1), !1) : (b.FN = c.DO, b.AO = c.GO, b._process = 1, !0)
                },
                JN: function(a) {
                    var b, c = this,
                        d = 3 === c._process;
                    c._process = 0, c.HO && (za(c.HO), c.HO = P), a && (b = new _a(c.NN, c.tO(), d, Sa(c.oO), new Ua(c.IN)), 3 === c._process ? c.cO = b : c.dO(b)), c.IN.IO(), c.GN.IO(), c.AO = P, c.AN = 0, c.BN = 0, c.CN = 1, c.DN = 0, c.EN = 0, c.SN = !1, c.TN = !1, c.FN = 0
                },
                fO: function() {
                    var a, b, c = this,
                        d = {},
                        e = new Ua(c.IN);
                    return d.JO = c.ZN(64) ? e.KO().X : 0, d.LO = c.ZN(64) ? e.KO().Y : 0, d.MO = c.ZN(256) ? e.pO() : 0, d.NO = c.ZN(128) ? e.OO() : 0, 0 === d.JO && 0 === d.LO && 0 === d.MO && 0 === d.NO ? void c.JN(!0) : (d.PO = new Xa(d.JO, d.LO), d.QO = new Va(d.MO), d.RO = new Wa(d.NO), e = new Ua(P, d.JO, d.LO, d.NO, d.MO), a = new bb(c.NN, c.tO(), new Ya, e, d.QO, d.RO, d.PO), c.SO(a), d.PO = a.TO, d.QO = a.QO, d.RO = a.RO, d.PO.UO <= 0 && d.PO.VO <= 0 && d.PO.WO(.003), d.QO.XO() <= 0 && d.QO.WO(.002), d.RO.XO() <= 0 && d.RO.WO(.003), b = Aa(), d.YO = b, d.ZO = b, d.$O = 0, d._O = 0, c._process = 3, void(c.HO = setInterval(function() {
                        try {
                            c.aP(d)
                        } catch (a) {}
                    }, 20)))
                },
                aP: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m, n, o = this,
                        p = Aa(),
                        q = p - a.ZO;
                    if (0 !== q) {
                        if (b = a.JO, c = a.LO, d = a.MO, e = a.NO, a.JO = o.bP(q, a.PO.UO, a.JO), a.LO = o.bP(q, a.PO.VO, a.LO), a.MO = o.bP(q, a.QO.XO(), a.MO), a.NO = o.bP(q, a.RO.XO(), a.NO), b = (b + a.JO) / 2, c = (c + a.LO) / 2, d = (d + a.MO) / 2, e = (e + a.NO) / 2, a.ZO = p, f = !1, Na(b) && Na(c) && Na(d) && Na(e) && (f = !0), g = q * b, h = q * c, i = q * d, j = q * e, k = 1, o.CO > 0 && (o.CO + 2 * i < 0 && (i = -o.CO / 2 + 1), 0 !== o.CO && (k = (o.CO + 2 * i) / o.CO)), o.EN += i, o.DN += j, o.AN += g, o.BN += h, o.CN *= k, o.CO += i, o.oO = new Ra(o.oO.X + g, o.oO.Y + h), a.$O += g, a._O += h, f) {
                            if (g = X(a.$O), h = X(a._O), Na(g) && Na(h)) return void o.JN(!0)
                        } else R(a.$O) >= 1 && (g = a.$O, a.$O -= g), R(a._O) >= 1 && (h = a._O, a._O -= h);
                        return l = new Ya, l.sO = new Ra(g, h), l.rO = k, l.pO = i, l.qO = j, m = new Ua(P, a.JO, a.LO, a.NO, a.MO), n = new ab(o.NN, o.tO(), l, (!0), Sa(o.oO), m), o.uO(n), n.vO ? void o.JN(!0) : void(f && o.JN(!0))
                    }
                },
                bP: function(a, b, c) {
                    if (Na(c)) return 0;
                    var d;
                    return d = c < 0 ? c + b * a : c - b * a, (d < 0 && c > 0 || d > 0 && c < 0) && (d = 0), d
                },
                tO: function() {
                    var a = this,
                        b = new Ya;
                    return b.pO = a.EN, b.qO = a.DN, b.rO = a.CN, b.sO = new Ra(a.AN, a.BN), b
                },
                cP: function(a, b, c, d) {
                    var e, f = this,
                        g = new Ya,
                        h = new Ya,
                        i = 0,
                        j = 0,
                        k = 0,
                        l = 0,
                        m = f.ZN(4) && f.SN,
                        n = f.ZN(8) && f.TN;
                    return !f.ZN(1) || n || a && !f.ZN(64) || (g.sO.X = b.sO.X, h.sO.X = c.sO.X, i = d.KO().X), !f.ZN(2) || m || a && !f.ZN(64) || (g.sO.Y = b.sO.Y, h.sO.Y = c.sO.Y, j = d.KO().Y), !f.ZN(32) || a && !f.ZN(256) ? (g.rO = b.rO, h.rO = 1) : (g.rO = b.rO, g.pO = b.pO, h.rO = c.rO, h.pO = c.pO, l = d.pO()), !f.ZN(16) || a && !f.ZN(128) || (g.qO = b.qO, h.qO = c.qO, k = d.OO()), e = new Ua(P, i, j, k, l), new $a(g, h, e)
                },
                EO: function(a) {
                    this.vM && a && this.vM(a)
                },
                wO: function(a) {
                    this.wM && a && this.wM(a)
                },
                dO: function(a) {
                    var b, c = this;
                    c.xM && a && (b = c.cP(!1, a.dP, a.dP, a.eP), a.dP = b.dP, a.eP = b.eP, c.xM(a))
                },
                SO: function(a) {
                    var b, c = this;
                    c.AM && a && (b = c.cP(!1, a.dP, a.fP, a.eP), a.dP = b.dP, a.fP = b.fP, a.eP = b.eP, c.AM(a))
                },
                uO: function(a) {
                    var b, c = this;
                    c.BM && a && (b = c.cP(a.gP, a.dP, a.fP, a.eP), a.dP = b.dP, a.fP = b.fP, a.eP = b.eP, c.BM(a))
                }
            });

            function Qa() {}
            y(Qa.prototype, {
                qN: function(a) {
                    var c, d = this;
                    d._pointerCount++, d._pointerCount > 1 || (c = Aa(), d.hP && Ba(a, d.hP) && c - d.iP < b ? d.Jb++ : (d.hP = a, d.Jb = 1), d.jP = a, d.iP = c)
                },
                wN: function() {
                    var a = this;
                    a.cO && (a.cO instanceof eb ? a.kP(a.cO) : a.cO instanceof fb && a.lP(a.cO), a.cO = P)
                },
                vN: function(a) {
                    var b, c = this;
                    c._pointerCount--, c._pointerCount > 0 || (b = Aa(), Ba(a, c.jP) ? b - c.iP > d ? c.cO = new fb(c.jP) : c.Jb > 1 ? (c.Jb = 0, c.mP(new gb(c.hP)), c.hP = P) : c.cO = new eb(c.jP) : c.hP = P)
                },
                nP: function() {
                    this.hP = P
                },
                kP: function(a) {
                    this.CM && a && this.CM(a)
                },
                mP: function(a) {
                    this.DM && a && this.DM(a)
                },
                lP: function(a) {
                    this.EM && a && this.EM(a)
                }
            });

            function Ra(a, b) {
                this.X = a, this.Y = b
            }
            function Sa(a) {
                return new Ra(a ? X(a.X) : -1, a ? X(a.Y) : -1)
            }
            s.oP = Ra;

            function Ta() {
                var a = this;
                a.Jb = 0, a.oI = 0, a.pP = 10, a.qP = []
            }
            y(Ta.prototype, {
                rP: function(a) {
                    var b, c, d, e, f, g, h = this;
                    if (0 === h.Jb) return 0;
                    for (b = 0, c = (1 + h.Jb) * h.Jb / 2, d = h.Jb - 1; d >= 0; d--) e = 0, f = h.sP(d), 0 === a ? e = f.hO : 1 === a ? e = f.iO : 2 === a ? e = f.lO : 3 === a && (e = f.kO), g = h.tP(e, f.mO), g *= d + 1, b += g;
                    return b / c
                },
                tP: function(a, b) {
                    return a / b
                },
                sP: function(a) {
                    return this.qP[this.uP(a)]
                },
                vP: function() {
                    return this.qP[this.Jb - 1]
                },
                nO: function(a) {
                    var b, c, d = this;
                    for (10 === d.Jb && d.wP(), d.Jb++, d.qP[d.uP(d.Jb - 1)] = a, b = e * d.pP, c = 0; c < d.Jb; c++) a.mO - d.qP[c].mO > b && (d.wP(), c--)
                },
                wP: function() {
                    var a = this;
                    a.oI++, a.oI === a.pP && (a.oI = 0), a.Jb--
                },
                IO: function() {
                    this.Jb = 0
                },
                uP: function(a) {
                    return (this.oI + a) % this.pP
                }
            });

            function Ua(a, b, c, d, e) {
                var f = this;
                a ? f.qP = a : (f.xP = new Ra(b, c), f.yP = d, f.lO = e)
            }
            y(Ua.prototype, {
                KO: function() {
                    var a = this;
                    return a.xP || (a.xP = new Ra(a.qP.rP(0), a.qP.rP(1))), a.xP
                },
                OO: function() {
                    var a = this;
                    return v(a.yP) && (a.yP = a.qP.rP(3)), a.yP
                },
                pO: function() {
                    var a = this;
                    return v(a.lO) && (a.lO = a.qP.rP(2)), a.lO
                }
            });

            function Va(a) {
                this.zP = a, this.AP = 0
            }
            y(Va.prototype, {
                XO: function() {
                    var a = this,
                        b = a._DesiredExpansion,
                        c = a._DesiredDeceleration,
                        d = a.zP;
                    return na(b) || 0 === b ? na(c) ? a.AP : c : .5 * d * d / b
                },
                WO: function(a) {
                    this.AP = a
                }
            });

            function Wa(a) {
                this.zP = a, this.AP = 0
            }
            y(Wa.prototype, {
                XO: function() {
                    var a = this,
                        b = a._DesiredRotation,
                        c = a._DesiredDeceleration,
                        d = a.zP;
                    return na(b) || 0 === b ? na(c) ? a.AP : c : .5 * d * d / b
                },
                WO: function(a) {
                    this.AP = a
                }
            });

            function Xa(a, b) {
                var c = this;
                c.BP = a, c.CP = b, c.UO = 0, c.VO = 0, c.AP = 0, c.DP = Y(a * a + b * b)
            }
            y(Xa.prototype, {
                EP: function() {
                    var a = this,
                        b = a._DesiredDisplacement,
                        c = a.DP,
                        d = a.BP,
                        e = a.CP,
                        f = a.XO();
                    na(b) || 0 === b ? na(f) || 0 === f ? (a.UO = 0, a.VO = 0) : (a.UO = f * R(d) / c, a.VO = f * R(e) / c) : (a.UO = .5 * c * R(d) / b, a.VO = .5 * c * R(e) / b)
                },
                XO: function() {
                    var a = this,
                        b = a._DesiredDeceleration;
                    return na(b) && na(a._DesiredDisplacement) ? a.AP : b
                },
                WO: function(a) {
                    this.AP = a, this.EP()
                }
            });

            function Ya() {
                var a = this;
                a.sO = new Ra(0, 0), a.rO = 0, a.qO = 0, a.pO = 0
            }
            function Za() {
                this.FP = []
            }
            y(Za.prototype, {
                XN: function(a) {
                    var b, c, d = this.FP;
                    for (b = 0; b < d.length; b++) if (c = d[b], c.Np === a) return !0;
                    return !1
                },
                QN: function(a) {
                    this.FP.push(a)
                },
                eO: function(a) {
                    var b, c = this.FP;
                    for (b = 0; b < c.length; b++) if (c[b].Np === a) {
                        c.splice(b, 1);
                        break
                    }
                },
                MN: function() {
                    return this.FP.length
                },
                WN: function(a) {
                    return this.FP[a]
                },
                $N: function(a) {
                    var b, c, d = this.FP;
                    for (b = 0; b < d.length; b++) if (c = d[b], c.Np === a) return c;
                    return P
                },
                IO: function() {
                    var a = this.FP;
                    a.splice(0, a.length)
                }
            });

            function $a(a, b, c) {
                var d = this;
                d.dP = a, d.fP = b, d.eP = c
            }
            function _a(a, b, c, d, e) {
                var f = this;
                f.GP = a, f.dP = b, f.gP = c, f.rN = d, f.eP = e
            }
            function ab(a, b, c, d, e, f) {
                var g = this;
                g.GP = a, g.dP = b, g.fP = c, g.gP = d, g.rN = e, g.eP = f
            }
            function bb(a, b, c, d, e, f, g) {
                var h = this;
                h.GP = a, h.dP = b, h.fP = c, h.eP = d, h.QO = e, h.RO = f, h.TO = g
            }
            function cb(a, b, c, d) {
                var e = this;
                e.GP = a, e.HP = b, e.dP = c, e.rN = d
            }
            function db(a, b, c, d) {
                var e = this;
                e.GP = a, e.DO = b, e.GO = c, e.rN = d
            }
            function eb(a) {
                this.rN = a
            }
            function fb(a) {
                this.rN = a
            }
            function gb(a) {
                this.rN = a
            }
            function hb(a, b) {
                var c = a * b;
                return c > 4 ? c = 4 : c < .5 && (c = .5), c
            }
            function ib(a) {
                this.kj = a
            }
            y(ib.prototype, {
                IP: function(a, b) {
                    var c = this.Xs;
                    return c ? a === G.Nn(c) && b === G.On(c) || G.Pn(c, a, b) : (c = C("canvas"), G.Kn(c, P, this.kj), G.Pn(c, a, b)), c
                },
                JP: function(a, b, c, d) {
                    var e = this,
                        f = G.Nn(a),
                        g = G.On(a),
                        h = e.IP(f, g),
                        i = h.getContext("2d"),
                        j = G.Ln(h),
                        k = G.Mn(h);
                    va.Cn(i, 1, 1), i.drawImage(a, 0, 0, ya(h), xa(h), 0, 0, ya(h), xa(h)), va.Cn(i, j, k), e.Xs = h, e.KP = b, e.LP = c, e.MP = d
                },
                NP: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m, n = this,
                        o = n.kj,
                        p = G.Nn(a),
                        q = G.On(a),
                        r = Ea(o),
                        s = Fa(o),
                        t = r > 0 ? 1 : 0,
                        u = s > 0 ? 1 : 0,
                        v = n.LP,
                        w = o.Gt && o.Gt() || {
                                x: 0,
                                y: 0,
                                width: 0,
                                height: 0
                            },
                        x = n.KP,
                        y = o.am(),
                        z = b / n.MP,
                        A = a.getContext("2d"),
                        B = G.Ln(a),
                        C = G.Mn(a),
                        D = n.Xs;
                    A.save(), A.fillStyle = c, A.fillRect(0, 0, p, q), l = o.rowOutlines, m = o.columnOutlines, l && l.jp(o, A, P, !0), m && m.jp(o, A, P, !1), d = v.x + ya(v), e = v.y + xa(v), f = x.lt - d - t, g = x.ot - e - u, h = w.x + ya(w), i = w.y + xa(w), j = f * z, k = g * z, d *= B, e *= C, f *= B, g *= C, h *= B, i *= C, j *= B, k *= C, va.Cn(A, 1, 1), A.drawImage(D, d, e, f, g, h, i, j, k), r > 0 && (d = x.lt - t, e = v.y + xa(v), f = x.js + t, g = x.ot - e - u, h = y.lt - t, i = w.y + xa(w), j = y.js + t, k = g * z, d *= B, e *= C, f *= B, g *= C, h *= B, i *= C, j *= B, k *= C, A.drawImage(D, d, e, f, g, h, i, j, k)), s > 0 && (d = v.x + ya(v), e = x.ot - u, f = x.lt - d - t, g = x.gs + u, h = w.x + ya(w), i = y.ot - u, j = f * z, k = y.gs + u, d *= B, e *= C, f *= B, g *= C, h *= B, i *= C, j *= B, k *= C, A.drawImage(D, d, e, f, g, h, i, j, k)), r > 0 && s > 0 && (d = x.lt - t, e = x.ot - u, f = x.js + t, g = x.gs + u, h = y.lt - t, i = y.ot - u, j = y.js + t, k = y.gs + u, d *= B, e *= C, f *= B, g *= C, h *= B, i *= C, j *= B, k *= C, A.drawImage(D, d, e, f, g, h, i, j, k)), va.Cn(A, B, C), A.restore()
                },
                OP: function() {
                    var a = this,
                        b = a.kj,
                        c = b.zoom(),
                        d = b.yl.vI();
                    d && a.JP(d.canvas, b.am(), b.Gt && b.Gt() || {
                        x: 0,
                        y: 0,
                        width: 0,
                        height: 0
                    }, c)
                },
                PP: function(a) {
                    var b, c, d, e = this,
                        f = e.kj;
                    f.endEdit() && (b = hb(a, e.MP), f.zoom() !== b && (f.Wq(I.UserZooming, {
                        sheet: f,
                        sheetName: f.name(),
                        oldZoomFactor: f.zoom(),
                        newZoomFactor: b
                    }), f.XSa(b), f.invalidateLayout(), c = f.yl, d = c.bm(), d && e.NP(d.canvas, b, c.zI(!1)), f.QP && f.QP(P, b), f.RP && f.RP(P)))
                },
                SP: function(a) {
                    var b = this,
                        c = b.kj;
                    c.XSa(hb(a, b.MP)), c.oq = !0, c.jq = !0, c.$p()
                }
            }), s.TP = ib, f = 200, g = 20;

            function jb(a, b, c) {
                var d = c,
                    e = 0,
                    f = 0,
                    g = a.ss,
                    h, i, j = a.am().qt,
                    k = a.jt(1).findRow(d);
                if (k) if (b > 0) {
                    for (h = a.Rt(-1), e = j - k.y; d > h && e < b;) d--, e += g.Sl(d);
                    f = b - e
                } else if (b < 0) {
                    for (i = a.ns(), e = -(k.y + xa(k) - j); d < i && e > b;) d++, e -= g.Sl(d);
                    f = b - e
                }
                return {
                    cj: d,
                    UP: f
                }
            }
            function kb(a, b, c) {
                var d = c,
                    e = 0,
                    f = 0,
                    g, h, i = a.ss,
                    j = a.am().pt,
                    k = a.it(1).findCol(d);
                if (k) if (b > 0) {
                    for (g = a.Ot(-1), e = j - k.x; d > g && e < b;) d--, e += i._m(d);
                    f = b - e
                } else if (b < 0) {
                    for (h = a.ps(), e = -(k.x + ya(k) - j); d < h && e > b;) d++, e -= i._m(d);
                    f = b - e
                }
                return {
                    dj: d,
                    UP: f
                }
            }
            function lb(a, b) {
                return oa(-b / (a / b + 1) + b)
            }
            function mb(a, b) {
                return oa(b * (-b / (a - b) - 1))
            }
            function nb(a, b, c, d, e, f) {
                a.fillStyle = b, a.fillRect(c, d, e, f)
            }
            function ob(a, b, c, d, e) {
                var f, g, h, i, j, k = D.Km(0, "gc-columnHeader-normal"),
                    l = k && k.backgroundImage,
                    m = k && k.backgroundColor;
                if (l && l.indexOf("linear-gradient") !== -1) for (g = B.wl(l), f = a.createLinearGradient(b + d / 2, c, b + d / 2, c + e), h = 0, i = g.length; h < i; h++) j = g[h], f.addColorStop(j.point, j.color);
                else m && (f = m);
                return f
            }
            function pb() {
                var a = D.Km(0, "gc-rowHeader-normal");
                return a && a.backgroundColor
            }
            function qb(a, b) {
                var c, d, e, f, g, h, i, j, k, l, m, n, o, p = a.am(),
                    q = a.yl,
                    r = q.zI(!1),
                    s = q.bm(),
                    t = q.vI(),
                    u = a.jt(1),
                    v = p.zr,
                    w = ya(p),
                    x = a.Rt(-1),
                    y = u.findRow(x);
                y && (c = p.qt, d = y.y - c - 1, d > 0 && (b ? (e = p.Br, f = pb(), nb(s, f, v, c, e - 1, d + 1), nb(t, f, v, c, e - 1, d + 1), nb(s, r, v + e, c, w - e, d), nb(t, r, v + e, c, w - e, d)) : (nb(s, r, v, c, w, d), nb(t, r, v, c, w, d)))), g = a.Rt(Ha(a), !0), h = u.findRow(g), h && (c = h.y + xa(h), d = p.ot - c - 1, d > 0 && (nb(s, r, v, c, w, d), nb(t, r, v, c, w, d))), i = a.it(1), c = p.Ar, d = xa(p), j = a.Ot(-1), k = i.findCol(j), k && (v = p.pt, w = k.x - v - 1, w > 0 && (b ? (l = p.Cr, m = ob(s, v, c, w + 1, l - 1), nb(s, m, v, c, w + 1, l - 1), nb(t, m, v, c, w + 1, l - 1), nb(s, r, v, c + l, w, d - l), nb(t, r, v, c + l, w, d - l)) : (nb(s, r, v, c, w, d), nb(t, r, v, c, w, d)))), n = a.Ot(Ga(a), !0), o = i.findCol(n), o && (v = o.x + ya(o), w = p.lt - v - 1, w > 0 && (nb(s, r, v, c, w, d), nb(t, r, v, c, w, d)))
            }
            function rb(a, b, c, d, e, f) {
                a.beginPath(), a.strokeStyle = b, a.moveTo(c, d), a.lineTo(e, f), a.stroke()
            }
            function sb(a, b) {
                var c, d, e, f, g, h = a.am(),
                    i = a.yl,
                    j = a.options.gridline.color,
                    k = D.Km(0, "gc-columnHeader-normal"),
                    l = k && k.borderBottomColor,
                    m = i.bm(),
                    n = a.jt(1),
                    o = h.zr,
                    p = ya(h),
                    q = a.Rt(-1),
                    r = n.findRow(q);
                r && (c = h.qt, d = r.y - c, d > 0 && (rb(m, j, o, r.y - .5, o + p, r.y - .5), b && rb(m, l, h.kt - .5, c, h.kt - .5, r.y))), e = a.it(1), c = h.Ar, d = xa(h), f = a.Ot(-1), g = e.findCol(f), g && (o = h.pt, p = g.x - o, p > 0 && (rb(m, j, g.x - .5, c, g.x - .5, c + d), b && rb(m, l, o, h.nt - .5, g.x, h.nt - .5)))
            }
            function tb(a, b) {
                var c = 0;
                return a || (c |= 1), b || (c |= 2), c
            }
            function ub(a) {
                this.kj = a
            }
            function vb(a, b) {
                for (var c, d = new K, e = a.ss, f = a.am(), g = T(a.frozenColumnCount(), a.qq), h = Ga(a) - Ea(a), i = f.pt + b, j = f.er - b; j > 0 && g < h; g++) c = e._m(g), d.push(new J((-1), g, i, (-1), c, (-1))), i += c, j -= c;
                return d
            }
            function wb(a, b) {
                for (var c, d = new K, e = a.ss, f = a.am(), g = T(a.frozenRowCount(), a.lq), h = Ha(a) - Fa(a), i = f.qt + b, j = f.jr - b; j > 0 && g < h; g++) c = e.Sl(g), d.push(new J(g, (-1), (-1), i, (-1), c)), i += c, j -= c;
                return d
            }
            function xb(a, b) {
                var c = 0;
                return c |= 0 !== a ? 1 : 0, c |= 0 !== b ? 2 : 0
            }
            y(ub.prototype, {
                VP: function(a) {
                    var b = this.kj,
                        c = b.bs;
                    c.viewport || (c.viewport = {}), c.viewport[1] = vb(b, a)
                },
                WP: function(a) {
                    var b = this.kj,
                        c = b.as;
                    c.viewport || (c.viewport = {}), c.viewport[1] = wb(b, a)
                },
                XP: function() {
                    var a = this.kj,
                        b = a.bs.viewport,
                        c = a.as.viewport;
                    a.invalidateLayout(), a.bs.viewport = b, a.as.viewport = c
                },
                ju: function(a, b, c, d) {
                    var e, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v = this,
                        w = v.kj,
                        x = w.lq,
                        y = jb(w, a, x),
                        z = y.cj,
                        A = y.UP;
                    if (w.lq = z, w.Xq > 0) return !1;
                    if (e = w.Dr(), h = w.am(), i = h.qt, j = h.jr, k = e ? e.x : h.x, l = ya(h), a < 0) v.YP = 0, v.ZP = 0, r = w.jt(1), r && r.length > 0 && (p = r.findRow(z)), p && (q = r[r.length - 1], q.row >= z && (m = 2, n = i + R(a), o = S(i + j, q.y + xa(q)) - n, o >= 0 && (o -= m, v.WP(A - xa(p)), c.x = k, c.y = n, c.width = l, c.height = o, c.tx = k, c.ty = i, d.x = k, d.y = i + o, d.width = l, d.height = j - o)));
                    else if (a > 0) {
                        if (s = w.Rt(-1), z === s && A > 0) if (v.YP > 0 && v.ZP > 0) {
                            if (t = v.YP + a, u = lb(t, f), a = u - v.ZP, A = u, a <= 0) return b;
                            if (b && u >= g) return !0;
                            v.YP = t, v.ZP = u
                        } else {
                            if (A >= f && (a -= A - (f - 1), A = f - 1, a <= 0)) return b;
                            if (t = mb(A, f), u = A, b && u >= g) return !0;
                            v.YP = t, v.ZP = u
                        } else v.YP = 0, v.ZP = 0;
                        a < j && (m = 2, n = i, o = j - a, Fa(w) > 0 && (o -= 1), v.WP(A), c.x = k, c.y = n, c.width = l, c.height = o, c.tx = k, c.ty = n + a, d.x = k, d.y = n, d.width = l, d.height = a + m)
                    }
                    return !1
                },
                lu: function(a, b, c, d) {
                    var e, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v = this,
                        w = v.kj,
                        x = w.qq,
                        y = kb(w, a, x),
                        z = y.dj,
                        A = y.UP;
                    if (w.qq = z, w.Xq > 0) return !1;
                    if (e = w.Dr(), h = w.am(), i = h.pt, j = h.er, k = e ? e.y : h.y, l = xa(h), a < 0) v.$P = 0, v._P = 0, t = w.it(1), t && t.length > 0 && (r = t.findCol(z)), r && (s = t[t.length - 1], s.col >= z && (m = 2, n = i + R(a), o = S(i + j, s.x + ya(s)) - n, o >= 0 && (o -= m, v.VP(A - ya(r)), c.x = n, c.y = k, c.width = o, c.height = l, c.tx = i, c.ty = k, d.x = i + o, d.y = k, d.width = j - o, d.height = l)));
                    else if (a > 0) {
                        if (u = w.Ot(-1), z === u && A > 0) if (v.$P > 0 && v._P > 0) {
                            if (p = v.$P + a, q = lb(p, f), a = q - v._P, A = q, a <= 0) return b;
                            if (b && q >= g) return !0;
                            v.$P = p, v._P = q
                        } else {
                            if (A >= f && (a -= A - (f - 1), A = f - 1, a <= 0)) return b;
                            if (p = mb(A, f), q = A, b && q >= g) return !0;
                            v.$P = p, v._P = q
                        } else v.$P = 0, v._P = 0;
                        a < j && (m = 2, n = i, o = j - a, Ea(w) > 0 && (o -= 1), v.VP(A), c.x = n, c.y = k, c.width = o, c.height = l, c.tx = n + a, c.ty = k, d.x = n, d.y = k, d.width = a + m, d.height = l)
                    }
                    return !1
                },
                aQ: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, p, q, r = this,
                        s = r.kj,
                        t = !0,
                        u = !0,
                        v = s.yl,
                        w = v.bm(),
                        x = 0 !== (2 & c),
                        y = 0 !== (1 & c);
                    if (y || x) return i = s.Dr(), j = s.am(), k = i ? i.y : j.y, l = xa(j), m = i ? i.x : j.x, n = ya(j), x && (f = {}, e = {}, t = r.ju(b, d, e, f), v.Ow(e.x, e.y, ya(e), xa(e), e.tx, e.ty)), y && (g = {}, h = {}, u = r.lu(a, d, g, h), v.Ow(g.x, g.y, ya(g), xa(g), g.tx, g.ty), x || (f = h)), o = s.parent, o && !o.options.scrollbarShowMax && (y && (s.oq = !0), x && (s.jq = !0)), r.XP(), p = s.rowOutlines && !s.rowOutlines.iT() ? 1 : 0, q = s.columnOutlines && !s.columnOutlines.iT() ? 1 : 0, y && x ? v._l(w, new E(f.x, f.y, ya(f), xa(f) + p), new E(h.x, h.y, ya(h) + q, xa(h))) : v._l(w, new E(f.x, f.y, ya(f) + q, xa(f) + p)), v.Pw(w, new E(m, k, n, l)), sb(s, !0), qb(s, !0), r.bQ(y, x), t && u
                },
                bQ: function(a, b) {
                    var c, d = this.kj;
                    b && d.os(), a && d.qs(), d.mm.Qw(), c = d.ITa.Ky, c && c.cQ()
                },
                dQ: function(a, b, c) {
                    function d(a, b, c, d) {
                        return a /= c, U(.75, a) * d * (b ? 1 : -1)
                    }
                    function e(a, b, c) {
                        return a = R(a), a /= c, $(a) / $(.75) * b
                    }
                    var g = this,
                        h = g.kj,
                        i = f,
                        j = 10,
                        k = 20,
                        l = 100,
                        m = e(a, j, i),
                        n = e(b, j, i),
                        o = a,
                        p = b,
                        q = 0,
                        r = 0,
                        s = !1,
                        t = !1;
                    g.jI = setInterval(function() {
                        var e, f, u, v, w;
                        return s && t ? (h.ss.jn(), e = h.parent, e && !e.options.scrollbarShowMax && (h.oq = !0, h.jq = !0), h.ss.kn(), h.$p(), h.qs(), h.os(), za(g.jI), void(g.jI = P)) : (m += k, n += k, void(m > l && n > l ? (g.aQ(a - q, b - r, tb(s, t), c), s = !0, t = !0) : (m > l && !s && (g.aQ(a - q, 0, 1, c), s = !0), n > l && !t && (g.aQ(0, b - r, 2, c), t = !0), f = d(m, a > 0, j, i), u = d(n, b > 0, j, i), v = _(o - f), w = _(p - u), g.aQ(v, w, tb(s, t), c), o = f, p = u, q += v, r += w)))
                    }, k)
                },
                qG: function(a) {
                    var b = this,
                        c = b.kj,
                        d = c.ss;
                    b.jI && (d.kn(), za(b.jI), b.jI = P), b.$P = 0, b._P = 0, b.YP = 0, b.ZP = 0, b.eQ = c.lq, b.fQ = c.qq, a && d.hn()
                },
                NG: function(a, b) {
                    var c = oa(a.X),
                        d = oa(a.Y),
                        e = xb(c, d);
                    return this.aQ(c, d, e, b)
                },
                gQ: function(a) {
                    var b, c, d, e, f, g, h, i, j = this,
                        k = j.kj,
                        l = k.am(),
                        m = l.pt,
                        n = l.qt,
                        o = k.lq,
                        p = k.qq,
                        q = k.it(1),
                        r = k.ps();
                    q && q.length > 0 && (b = q.findCol(p), p < r && b && b.x + ya(b) - m < ya(b) / 2 && p++), c = k.jt(1), e = k.ns(), c && c.length > 0 && (d = c.findRow(o), o < e && d && d.y + xa(d) - n < xa(d) / 2 && o++), f = 0, g = 0, q && q.length > 0 && (b = q.findCol(p), f = m - b.x), c && c.length > 0 && (d = c.findRow(o), g = n - d.y), h = j.eQ, o !== h && k.mq(o), i = j.fQ, p !== i && k.rq(p), j.dQ(f, g, a)
                }
            });

            function yb(a, b, c, d, e) {
                var f, g, h, i, j, k = a.parent,
                    l = a.mm,
                    m = a.options,
                    n = b.rowViewportIndex,
                    o = b.colViewportIndex,
                    p = Da(a),
                    q = P;
                return a.CH && p.length > 0 && (f = p[p.length - 1], g = f.row, h = f.row + f.rowCount - 1, i = f.col, j = f.col + f.colCount - 1, k && !k.options.allowUserResize || (g !== -1 && i === -1 && n >= 0 && o < 0 && m.rowHeaderVisible ? (q = l.mH(a, b, e, 2, d), !q || "sizeRow" !== q.action && "sizeHiddenRow" !== q.action || 2 !== q.sheetArea || q.index === h || (q = P)) : g === -1 && i !== -1 && n < 0 && o >= 0 && m.colHeaderVisible && (q = l.oH(a, b, e, 1, c), !q || "sizeCol" !== q.action && "sizeHiddenCol" !== q.action || 1 !== q.sheetArea || q.index === j || (q = P)))), q
            }
            function zb(a, b, c, d) {
                var e, f, g, h, i, j, k, l, m;
                if (0 === a.selectionPolicy()) return P;
                for (e = b.hitTestType, f = Ub(a), g = Da(a), h = 3, a.CH && g.length > 0 && (i = g[g.length - 1], i.row !== -1 && i.col !== -1 ? h = 3 : i.row !== -1 ? h = 2 : i.col !== -1 && (h = 1)), j = 0; j < f.length; j++) if (k = f[j], k && (k.x -= ya(k), k.y -= xa(k), k.width *= 3, k.height *= 3, k.contains(c, d))) return v(b.row) && (l = a.jt(1), l && l.length > 0 && (b.row = l[l.length - 1].row)), v(b.col) && (m = a.it(1), m && m.length > 0 && (b.col = m[m.length - 1].col)), {
                    x: c,
                    y: d,
                    type: h,
                    isHeader: !1,
                    isFirstIndicator: 0 === j
                };
                return 1 === e ? {
                    x: c,
                    y: d,
                    type: 1,
                    isHeader: !0
                } : 2 === e ? {
                    x: c,
                    y: d,
                    type: 2,
                    isHeader: !0
                } : P
            }
            function Ab(a, b, c, d) {
                var e, f, g, h, i, j, k, l, m, n, o, p, q = P,
                    r = b.rowViewportIndex,
                    s = b.colViewportIndex;
                if (v(r) || v(s)) return q;
                if (e = a.parent, f = a.Ix(), r >= 0 && s >= 0 && 1 === a.ITa.getSelections().length) {
                    if (g = a.Tq(f), h = Ea(a), i = Fa(a), j = Ga(a) - h, k = Ha(a) - i, 1 === s && h > 0 && g.col < j && g.col + g.colCount > j && (l = a.Hr(s), l && l.length > 0 && (m = l[l.length - 1], c > m.x + ya(m)))) return q;
                    if (1 === r && i > 0 && g.row < k && g.row + g.rowCount > k && (n = a.Gr(r), n && n.length > 0 && (o = n[n.length - 1], d > o.y + xa(o)))) return q
                }
                return p = Rb(a), p && (q || (p.x -= ya(p), p.y -= xa(p), p.width *= 3, p.height *= 3, p.contains(c, d) && (q = {
                    action: "drag",
                    side: "corner"
                })), e && e.options.allowUserDragFill || q && "corner" === q.side && (q.side = P)), q
            }
            function Bb(a, b, c, d) {
                var e, f, g, h, i, j, k, l, m = !1,
                    n = a.ITa.getSelections();
                for (e = 0, f = n.length; e < f; e++) {
                    if (g = n[e], h = 3 === d || v(d), h && (g = a.Tq(g)), i = g.row, j = g.col, k = g.rowCount, l = g.colCount, h) m = i <= b && b < i + k && j <= c && c < j + l;
                    else if (2 === d) m = j === -1 && i <= b && b < i + k;
                    else if (1 === d) m = i === -1 && j <= c && c < j + l;
                    else if (0 === d) return m;
                    if (m) break
                }
                return m
            }
            function Cb(a, b, c, d) {
                if (!b) {
                    var e = Da(a),
                        f = e[e.length - 1];
                    c ? 3 === d ? (a.Jl = f.row + f.rowCount - 1, a.Kl = f.col + f.colCount - 1) : 2 === d ? (a.Jl = f.row + f.rowCount - 1, a.Kl = 0) : 1 === d && (a.Jl = 0, a.Kl = f.col + f.colCount - 1) : 3 === d ? (a.Jl = f.row, a.Kl = f.col) : 2 === d ? (a.Jl = f.row, a.Kl = 0) : 1 === d && (a.Jl = 0, a.Kl = f.col)
                }
            }
            function Db(a, b, c, d) {
                var e = Da(a),
                    f = e[e.length - 1];
                (b || c) && (3 === d ? (a.Jl = f.row, a.Kl = f.col) : 2 === d ? (a.Jl = f.row, a.Kl = 0) : 1 === d && (a.Jl = 0, a.Kl = f.col))
            }
            function Eb(a) {
                var b = this;
                b.KN = !1, b.hQ = new ib(a), b.iQ = new ub(a), b.kj = a
            }
            y(Eb.prototype, {
                jQ: function(a) {
                    var b = this,
                        c = b.kj,
                        d = c.am(),
                        e = d.pt,
                        f = d.qt,
                        g = d.lt,
                        h = d.ot,
                        i = a.rN,
                        j = 0,
                        k = b.kQ(i.X, i.Y),
                        l = k.dragInfo,
                        m = k.x,
                        n = k.y;
                    k && (k.resizeInfo || l && "corner" === l.side || k.selectionHitInfo) ? (j |= 2, j |= 1) : (f <= n && n < h && (j |= 2), e <= m && m < g && (j |= 1), j |= 96, c.parent && (j |= 12)), a.DO = j
                },
                lQ: function(a) {
                    var b, c, d, e, f = this,
                        g = a.rN,
                        h = f.kj,
                        i = h.parent,
                        j = h.mm,
                        k = h.yl,
                        l = f.kQ(g.X, g.Y),
                        m = l.dragInfo,
                        n = l.selectionHitInfo;
                    if (h.yt = l, l.resizeInfo) {
                        if (!h.endEdit()) return;
                        j.fG(l)
                    } else if (m && "corner" === m.side) j.hG && j.hG(l);
                    else if (n) {
                        if (!h.endEdit()) return;
                        b = n.isHeader, c = n.isFirstIndicator, d = n.type, b && j.ZG(l, !0), e = l.hitTestType, l.hitTestType = d, j.bH(l), l.hitTestType = e, Cb(h, b, c, d), h.mQ = !1, k.DH()
                    } else h.nQ && (h.nQ().oQ = !1), h.mQ = !1, k.DH(), a.HP > 1 && i && i.options.allowUserZoom ? (f.KN = !1, f.hQ.OP()) : (f.KN = !0, f.iQ.qG(1 === a.HP))
                },
                pQ: function(a) {
                    var b, c, d, e, f = this,
                        g = a.rN,
                        h = f.kj,
                        i = h.mm,
                        j = h.yt,
                        k = g.X,
                        l = g.Y;
                    if (j) if (b = j.dragInfo, c = j.selectionHitInfo, j.resizeInfo) i.$F = {
                        e: a,
                        x: k,
                        y: l
                    }, i.WG();
                    else if (b && "corner" === b.side) i.$F = {
                        e: a,
                        x: k,
                        y: l
                    }, i.CG && i.CG();
                    else if (c || i.xG) {
                        if (c) {
                            if (!i.rG || !i.OG) return;
                            if (i.DA === !0) return;
                            d = c.type, i.$F = {
                                e: a,
                                x: k,
                                y: l
                            }, 3 === d ? i.cH() : 2 === d ? i.dH() : 1 === d && i.eH()
                        }
                    } else f.KN ? a.vO = f.iQ.NG(a.fP.sO, a.gP) : (e = a.dP.rO, f.hQ.PP(e))
                },
                qQ: function(a) {
                    var b, c, d, e = this,
                        f = e.kj,
                        g = f.mm;
                    f.mQ = !0, b = f.yt, c = b.selectionHitInfo, b.resizeInfo ? g.YG() : b.dragInfo && g.BG ? (g.xH && g.xH(), f.parent.touchToolStrip.rQ()) : c || g.xG ? (g.hH(), c && Db(f, c.isHeader, c.isFirstIndicator, c.type), f.yl.im()) : (f.nQ && (f.nQ().oQ = !0), e.KN ? e.iQ.gQ(a.gP) : (d = a.dP.rO, e.hQ.SP(d)))
                },
                sQ: function(a) {
                    var c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, w, x, y, z, A, B, C = this,
                        D = a.rN,
                        E = C.kj,
                        F = E.parent,
                        G = !1;
                    if (E.Uja = Q, C.tQ(), E.uQ && E.uQ(), c = E.ITa.Ky, c && c.vQ(), d = E.mm, e = C.kQ(D.X, D.Y, !0), f = e.filterButtonHitInfo, g = e.hitTestType, h = e.row, i = e.col, j = e.outlineHitInfo) E.isEditing() || (k = j.what, l = E.rowOutlines, m = E.columnOutlines, "rg" === k || "rgh" === k ? l && l.UL(E, j) : "cg" !== k && "cgh" !== k || m && m.UL(E, j));
                    else if (E.yt = e, f) {
                        if (!E.endEdit()) return;
                        n = f.rowFilter, n && n.openFilterDialog(f)
                    } else if (e.resizeInfo);
                    else if (E.Qs(e.rowViewportIndex < 0 ? -1 : h, e.colViewportIndex < 0 ? -1 : i)) {
                        if (E.wQ && !d.BG && F.touchToolStrip.rQ(), o = E.getActiveRowIndex(), p = E.getActiveColumnIndex(), q = e.cellTypeHitInfo) {
                            if (r = E.getCellType(q.row, q.col, g), q.sheet || (q.sheet = E), C.Sia(r, q)) if (s = q.sheetArea, !v(s) && 3 !== s || h === o && i === p) E.yl.DH();
                            else {
                                if (E.suspendPaint(), !E.endEdit()) return;
                                if (t = {
                                        sheet: E,
                                        sheetName: E.name(),
                                        row: o,
                                        col: p,
                                        cancel: !1
                                    }, E.Wq(I.LeaveCell, t), t && t.cancel === !0) return;
                                u = E.ITa.getSelections(), w = E.ITa.getSpan(h, i), x = [H(w.row, w.col, w.rowCount, w.colCount)], E.yu(u, x), y = q.isReservedLocation && q.isFocusAware, E.Sr(h, i, Q, Q, y ? 0 : 1), z = {
                                    sheet: E,
                                    sheetName: E.name(),
                                    row: h,
                                    col: i
                                }, E.Wq(I.EnterCell, z), E.Wq(I.FormulatextboxEnterCell, z), E.Au(u), E.Uja = !0, d.cs && d.cs(h, i), E.resumePaint(), G = !0
                            }
                            r.processCellAndPaddingMouseDown(q), r.processMouseUp(q)
                        }
                        if (q && q.isReservedLocation) return !0;
                        E.Wq(I.CellClick, {
                            sheet: E,
                            sheetName: E.name(),
                            sheetArea: g,
                            row: e.row,
                            col: e.col
                        });
                        try {
                            if (d.mG = e, E.isEditing() && o === E.getActiveRowIndex() && p === E.getActiveColumnIndex() && !E.endEdit()) return
                        } finally {
                            d.mG = P
                        }
                        if (v(h) || v(i)) return;
                        3 === g && d.cs && d.cs(h, i), Bb(E, h, i, g) && !G ? C.xQ = setTimeout(function() {
                            var a = {
                                    x: e.x,
                                    y: e.y,
                                    handled: !1
                                },
                                b = F.touchToolStrip;
                            E.Wq(I.TouchToolStripOpening, a), a.handled || b.open(e.x, e.y - aa), C.tQ()
                        }, b + 20) : (A = E.ITa.getSelections(), d.ZG(e), B = E.ITa.getSelections(), E.yu(A, B), d.hH())
                    }
                },
                Sia: function(a, b) {
                    return !(a && a.activedOnClick && !a.activedOnClick() && b.isReservedLocation)
                },
                yQ: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m, n = this,
                        o = n.kj,
                        p = a.rN;
                    if (n.tQ(), d = o.yt, d && (o.Wq(I.CellDoubleClick, {
                            sheet: o,
                            sheetName: o.name(),
                            sheetArea: d.hitTestType,
                            row: d.row,
                            col: d.col
                        }), e = d.resizeInfo)) if (f = o.ITa.getSelections(), "sizeRow" === e.action || "sizeHiddenRow" === e.action) {
                        if (g = [], o.tp(e.index)) {
                            for (b = 0; b < f.length; b++) if (c = f[b], c.col === -1) for (c = o.Tq(c), h = 0; h < c.rowCount; h++) g.push({
                                row: c.row + h
                            })
                        } else g.push({
                            row: e.index
                        });
                        o.wu().execute({
                            cmd: "autoFitRow",
                            sheetName: o.name(),
                            rows: g,
                            columnHeader: 1 === e.sheetArea
                        })
                    } else {
                        if (i = [], o.sp(e.index)) {
                            for (b = 0; b < f.length; b++) if (c = f[b], c.row === -1) for (c = o.Tq(c), j = 0; j < c.colCount; j++) i.push({
                                col: c.col + j
                            })
                        } else i.push({
                            col: e.index
                        });
                        o.wu().execute({
                            cmd: "autoFitColumn",
                            sheetName: o.name(),
                            columns: i,
                            rowHeader: 2 === e.sheetArea
                        })
                    } else k = n.kQ(p.X, p.Y, !0), !(k && k.row >= 0 && k.col >= 0 && k.rowViewportIndex >= 0 && k.colViewportIndex >= 0) || k.resizeInfo || o.options.isProtected && o.tq(k.row, k.col, "locked") || (o.Tr(), l = o.Er(k.row), m = o.Fr(k.col), o.Kr(k.row, k.col, l, m, !0), o.addSelection(k.row, k.col, 1, 1), o.mm.dI(!1, !0), o.EF(o.Ws(), k.row, k.col))
                },
                zQ: function(a) {
                    var b, c = this,
                        d = c.kj,
                        e = a.rN,
                        f = c.kQ(e.X, e.Y);
                    d.isEditing() ? f.row === d.Jl && f.col === d.Kl || d.mm.cI(f) : (c._target = f, b = c.kQ(e.X, e.Y, !0), b && b.cellTypeHitInfo && b.cellTypeHitInfo.isEditting || d.mm.cI(b))
                },
                AQ: function() {
                    var a, b, c, d, e = this,
                        f = e.kj;
                    f.isEditing() || (a = e._target, b = !0, a && (c = a.cellTypeHitInfo, c && c.isReservedLocation ? b = !1 : (d = f.getCellType(a.row, a.col), d && d.isEditting() && (b = !1))), b && f.mm.dI(!0))
                },
                kQ: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s = this,
                        t = s.kj;
                    return t.am(), d = {
                        x: a,
                        y: b,
                        rowViewportIndex: P,
                        colViewportIndex: P,
                        row: -1,
                        col: -1,
                        resizeInfo: P,
                        hitTestType: P,
                        outlineHitInfo: P,
                        filterButtonHitInfo: P,
                        dragInfo: P,
                        cellTypeHitInfo: P,
                        selectionHitInfo: P
                    }, e = t.rowOutlines, f = t.columnOutlines, e && (g = e.hitTest(t, a, b)), !g && f && (g = f.hitTest(t, a, b)), g ? d.outlineHitInfo = g : (h = t.nr(b), i = t.or(a), d.rowViewportIndex = h, d.colViewportIndex = i, d.row = t.pr(b, h), d.col = t.qr(a, i), h >= 0 && h <= 2 && i >= 0 && (j = t.rr(h, i, Q, d.row, d.col), j && (d.row = j.row, d.col = j.col)), d.hitTestType = t.sr(h, i), k = yb(t, d, a, b, 10), m = t.xr, n = m && m.hitTest(d, a, b), n || (p = t.tables, q = p && p.find(d.row, d.col), r = q && q.xr, n = r && r.hitTest(d, a, b)), t.wQ ? (l = Ab(t, d, a, b), d.dragInfo = l) : k ? d.resizeInfo = k : n ? d.filterButtonHitInfo = n : c ? d.cellTypeHitInfo = t.yr(d, a, b) : (o = zb(t, d, a, b), d.selectionHitInfo = o)), d
                },
                tQ: function() {
                    var a = this,
                        b = a.xQ;
                    b && (clearTimeout(b), a.xQ = P)
                }
            });

            function Fb(a, b, c) {
                var d = this;
                d.BQ = c, d.yM = new Kb(b), d.CQ = new Eb(b), d.DQ = new Lb(a, "sheet", d.yM, 100, 10), d.BQ.xN(d.DQ, !0)
            }
            y(Fb.prototype, {
                EQ: function() {
                    var a = this,
                        b = a.CQ,
                        c = a.DQ;
                    c.dN = function(a) {
                        return b.jQ(a)
                    }, c.eN = function(a) {
                        return b.lQ(a)
                    }, c.fN = function(a) {
                        return b.pQ(a)
                    }, c.hN = function(a) {
                        return b.qQ(a)
                    }, c.iN = function(a) {
                        return b.sQ(a)
                    }, c.jN = function(a) {
                        return b.yQ(a)
                    }, c.GM = function(a) {
                        return b.zQ(a)
                    }, c.IM = function(a) {
                        return b.AQ(a)
                    }
                },
                FQ: function() {
                    var a = this,
                        b = a.DQ;
                    b && (a.BQ.xN(b, !1), b.dN = P, b.eN = P, b.fN = P, b.gN = P, b.hN = P, b.iN = P, b.jN = P, b.kN = P, b.GM = P, b.IM = P, a.DQ = P)
                },
                GQ: function(a) {
                    return this.yM.GQ(a)
                },
                HQ: function(a) {
                    return this.yM.HQ(a)
                },
                IQ: function(a) {
                    return this.yM.IQ(a)
                }
            }), h = "gc-toolstrip-button", i = "gc-toolstrip-text", j = "gc-toolstrip-image", k = "gc-toolstrip-item", l = "gc-touch-sperate-line", m = "height", n = "width", o = "px", p = "button", A(Gb, w);

            function Gb(a, b) {
                var c, d = this;
                w.call(d, b, B.vl(a.qo)), d.JQ = 32, d.KQ = 45, d.LQ = {}, d.MQ = !1, d.OC = a, c = d.yo(), d.NQ = c, c.addClass("gc-toolstrip-default ui-state-default well"), c.appendTo(d.zo()), c.hide(), d.OQ(), d.PQ(), d.QQ()
            }
            y(Gb.prototype, {
                open: function(a, b) {
                    var c, d, e, f, g = this,
                        h = Ca(g.OC);
                    if (h && (F.Zl(P, !0), g.NQ.css({
                            left: a,
                            top: b
                        }), g.Ao(), g.MQ = !0, g.Do(), !z(g.LQ))) {
                        c = g.LQ;
                        for (d in c) c.hasOwnProperty(d) && (e = c[d], f = !e.RQ || e.RQ.call(g), f ? x("#" + d).show() : x("#" + d).hide())
                    }
                },
                add: function(a) {
                    var b, c, d, e;
                    a && (b = this, c = b.LQ, a instanceof Jb ? (d = a.name(), d && (c[d] = a, b.SQ(a.TQ(l, b.KQ + o)))) : a instanceof Ib && (e = a.name(), b.getItem(e) || (c[e] = a, b.SQ(a.TQ(j, b.JQ + o, i, h)))))
                },
                getItem: function(a) {
                    return this.LQ[a]
                },
                getItems: function() {
                    var a, b = this,
                        c = [],
                        d = b.LQ;
                    if (!z(d)) {
                        for (a in d) d.hasOwnProperty(a) && c.push(d[a]);
                        return c
                    }
                    return P
                },
                remove: function(a) {
                    var b, c = this;
                    return c.getItem(a) ? (x("#" + a).parent().remove(), b = c.LQ[a], delete c.LQ[a], b) : P
                },
                clear: function() {
                    var a = this;
                    a.NQ && (a.NQ.find("td." + k).remove(), a.LQ = {})
                },
                close: function() {
                    var a, b, c = this;
                    sa.Hm(), c.NQ && c.NQ.hide(), c.MQ = !1, c.Eo(), a = Ca(c.OC), a && (a.zt(), b = Da(a), b.length > 0 && !a.wQ && b[0].row === -1 && b[0].col === -1 && a.Tr())
                },
                imageAreaHeight: function(a) {
                    var b = this;
                    return 0 === arguments.length ? b.JQ : (a > 0 && (b.JQ = a, b.NQ.find("span." + j).css(m, a + o)), b)
                },
                itemHeight: function(a) {
                    var b = this,
                        c = b.NQ.find("button." + h);
                    return 0 === arguments.length ? pa(c.css(m)) : (a > 0 && c.css(m, a + o), b)
                },
                itemWidth: function(a) {
                    var b, c, d = this,
                        e = d.NQ.find("button." + h);
                    return 0 === arguments.length ? pa(e.css(n)) : (a > 0 && (b = "min-width", c = pa(e.css(b)), c > a && e.css(b, a + o), e.css(n, a + o)), d)
                },
                separatorHeight: function(a) {
                    var b = this;
                    return 0 === arguments.length ? b.KQ : (a > 0 && (b.KQ = a, b.NQ.find("div." + l).css(m, a + o)), b)
                },
                OQ: function() {
                    var a = "table",
                        b = this,
                        c = x(C(a)).css({
                            padding: 0,
                            display: a
                        }).attr({
                            cellspacing: 0,
                            cellpadding: 0
                        });
                    b.UQ = x(C("tr")).appendTo(c), c.appendTo(b.NQ)
                },
                no: function() {
                    var a = this,
                        b = a.NQ;
                    b && (a.MQ && sa.Hm(), b.remove(), a.Eo(), a.NQ = P)
                },
                QQ: function() {
                    var a = this;
                    a.NQ.bind("click", function(b) {
                        var c, d, e, f = b.target,
                            g = f.tagName.toLowerCase();
                        g === p ? c = f.id : (d = f.parentElement, d && d.tagName.toLowerCase() === p && (c = d.id)), e = a.LQ[c], c && e && e.VQ.call(a)
                    })
                },
                SQ: function(a) {
                    this.NQ && a && x(C("td")).append(a).appendTo(this.UQ).addClass(k)
                },
                PQ: function() {
                    var a, b, c, d, e, f, g;

                    function h(a) {
                        for (var b = 0, c = a + b; ra.getElementById(c);) b++, c = a + b;
                        return c
                    }
                    a = "gAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAA", b = {
                        0: ta + a + "A8ElEQVRIS92VwQ3CMAxFe+qZERiHY8dgDI4cYYNOhDhwY4ayQviW4q/Eddu0KRe+9CQ72P8rEpAmhPBT3ENLd76EiPv5HO5hSmK+KYTFsz+04A4G9NZ0hAizn7jTos2MFRYYugFZQlscoFzRZsYKCwwNulAqnZddtJmxwiIZ3oT6WFh4S2tQHwsLb2kN6mNh4S2tQX0sLLwly4IyY4WFZ2gReV/ZhBOQH2ddgKcYwBAc7R/weL0ZgqO6gGPXE1E0JlBdwJx2CUhvkCL63xvw33QKUc0N+B5MIaq5gb5o8kotBszJDShFlkvQ+ZHBvoTmC+fiVfoq/m86" + ua,
                        1: ta + a + "BkklEQVRIS7WTUXECQRBEcYCFOIiESAAH/OYPCcQBEogDJCABCUhAwqXf1QzVM0cojko+Xt3ObG/33t7eYhiGf6UU68+vneD5Mu4HpZDgKja+YCYH94NSSHAUg3glZC9k8zgAYwLmhuS6o/tBKUJ8CTGsoveIsin3g1LEAkxzAd/kXbihwxwatGys+EEpEAT5LR6FuDmMb+t+UAoEwVL44h7CvB8lGxrn3A9KkaLAj8pDMD9HL/v0ZgfAQfSAk/WgXAT3g1K4MPCj2AoPhNvRJO4HpejigF1jxtjNy9Ek7gel6GIjfzoP+Ihewf2gFPcWNNL817/c/aAUKXpbfy/FXlzFIM6gOYy3Gp+iz/xBPHeLQGLAMI2PNmYOw1uojZfdCyYNCXexiGcGpiljdp9hsBGjvnvBpCHhRbgBZChjAgj0eXrX7gWThoR992lAMGOOLMfJuIHuBZMGQuE75KN66Cpq14xH2L1g0kixyLNm3I8sNbwJulHfvWDSkJArmou4hlxXeh4AvBEBuZnnbtHfMix+AHqkr6wgQ4Q7" + ua,
                        2: ta + a + "A3UlEQVRIS72PwQ3CMAxFOwrjcOyZCTgyAjfWYCJO3JiCCVL/iFSO9W0MDTzpqYob+ztTKeWn0uJIadE6H8/ljXsR96q6tzt4YogH/olPcQ2R8mp3CHRBwO3+6EKkvNodcDkSgyyoAx0iRz/AA/8Op0sdtJuv1Va3Ct8FYHgL8dgUAGxIe41+kRAH6CbdaGW86nFAhnaXLSLEAbqJCbxlUgEZ2DIgFaCbmMBbJhWQgS0DUgG6iQm8ZVIBGTYFsK21oN3F1yrEARnsIM/u8JeAT9S9nrQ4UlocKS2Os0wLtkPMdu9POt0AAAAASUVORK5CYII=",
                        3: ta + "UAAAAXCAIAAABrvZPKAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIdJREFUOE/tzEEKgCAQheEOWLdx351adYc8Qgs3rbuAUC9nkkF0BKNN9CMy0Xx25llf8Edr7d57j/tlP4wTHf4W/b7gsT0vLs7Sz9bFWfM9nrDXE9ITphlVPO512wkkM++FNF86vBfKeKR43rjLe5QwOvxPVPSoipHmkY5RxSMFo7rXY9+eMSdet07b6c/bnwAAAABJRU5ErkJggg=="
                    }, c = this, d = b[0], e = b[1], f = b[2], g = b[3], c.WQ = new Ib(h("wijspread_toolstrip_paste"), wa().ToolStrip_PasteText, d, c.XQ), c.YQ = new Ib(h("wijspread_toolstrip_cut"), wa().ToolStrip_CutText, e, c.ZQ), c.$Q = new Ib(h("wijspread_toolstrip_copy"), wa().ToolStrip_CopyText, f, c._Q), c.aR = new Ib(h("wijspread_toolstrip_autofill"), wa().ToolStrip_AutoFillText, g, c.bR, c.cR), c.add(c.WQ), c.add(c.YQ), c.add(c.$Q), c.add(new Jb(c.cR)), c.add(c.aR)
                },
                cR: function() {
                    var a, b, c, d = Ca(this.OC);
                    if (!d) return !1;
                    for (a = Da(d), b = 0; b < a.length; b++) if (c = a[b], c.row === -1 && c.col === -1) return !1;
                    return !0
                },
                bR: function() {
                    var a, b;
                    this.close(), a = Ca(this.OC), a && (b = Da(a).length, b <= 1 && (a.wQ = !0, a.yl.im()))
                },
                rQ: function() {
                    var a = Ca(this.OC);
                    a && (a.wQ = !1, a.yl.im())
                },
                _Q: function() {
                    var a = Ca(this.OC);
                    a && (this.dR = a.ux(!0)), this.close()
                },
                ZQ: function() {
                    var a = Ca(this.OC);
                    a && (this.dR = a.sx(!0)), this.close()
                },
                XQ: function() {
                    var a = this,
                        b = a.dR,
                        c = Ca(a.OC);
                    c && !v(b) && c.vx({
                        pasteHtml: b.copyHtml,
                        pasteText: b.copyText
                    }), a.close()
                },
                eR: function() {
                    var a = this,
                        b = "span." + i;
                    x("#" + a.WQ.Cj).find(b).text(wa().ToolStrip_PasteText), x("#" + a.YQ.Cj).find(b).text(wa().ToolStrip_CutText), x("#" + a.$Q.Cj).find(b).text(wa().ToolStrip_CopyText), x("#" + a.aR.Cj).find(b).text(wa().ToolStrip_AutoFillText)
                }
            }), s.TouchToolStrip = Gb;

            function Hb(a, b, c) {
                var d, e = C("span"),
                    f = ra.body;
                return e.className = c, e.style.font = a, e.style.cssFloat = "left", e.textContent = b, f.insertBefore(e, P), d = x(e).width(), f.removeChild(e), d
            }
            function Ib(a, b, c, d, e) {
                this.MC = "normal 12px Arial";
                var f = this;
                f.Cj = a, f._text = b, f.fR = c, d && (f.VQ = d), e && (f.RQ = e)
            }
            y(Ib.prototype, {
                name: function(a) {
                    var b = this;
                    return 0 === arguments.length ? b.Cj : (x("#" + b.Cj).attr("id", a), x("#" + b.Cj + "Text").attr("id", a + "Text"), x("#" + b.Cj + "Image").attr("id", a + "Image"), b.Cj = a, b)
                },
                text: function(a) {
                    var b = this;
                    return 0 === arguments.length ? b._text : (b._text = a, x("#" + b.name() + "Text").text(a), b)
                },
                font: function(a) {
                    var b = this,
                        c = x("#" + b.name() + "Text");
                    return 0 === arguments.length ? b.MC : (b.MC = a, c.css("font", a), b)
                },
                foreColor: function(a) {
                    var b = this,
                        c = x("#" + b.name() + "Text");
                    return 0 === arguments.length ? b.Nra ? b.Nra : c.css("color") : (c.css("color", a), b)
                },
                image: function(a) {
                    var b = this;
                    return 0 === arguments.length ? b.fR : (b.fR = a, x("#" + b.name() + "Image").css("background-image", "url(" + a + ")"), b)
                },
                TQ: function(a, b, c, d) {
                    var e, f, g, h, i = this,
                        j = i.name(),
                        k = i.font(),
                        l = i.text(),
                        m = x(C("span"));
                    return m.attr("id", j + "Image"), m.addClass(a), m.css({
                        "background-image": "url(" + i.image() + ")",
                        "background-repeat": "no-repeat",
                        display: "block",
                        height: b,
                        "background-position-x": "50%"
                    }), e = x(C("span")), e.attr("id", j + "Text"), e.addClass(c), e.css("font", k), e.text(l), f = Hb(k, l, c), g = 60, f > g && (g = f), h = x(C(p)), h.attr("type", p), h.attr("id", j), h.addClass(d + " gc-toolstrip-button-style ui-state-default ui-widget btn btn-default"), h.css({
                        "box-sizing": "content-box",
                        border: "0px",
                        padding: "4px",
                        margin: "3px",
                        width: g + o
                    }), h.append(m), h.append(e), h[0]
                }
            }), s.TouchToolStripItem = Ib;

            function Jb(a) {
                function b() {
                    for (var a = "separator", b = 0, c = a + ("" + b); ra.getElementById(c);) b++, c = a + ("" + b);
                    return c
                }
                this.Cj = b(), a && (this.RQ = a)
            }
            y(Jb.prototype, {
                name: function() {
                    return this.Cj
                },
                TQ: function(a, b) {
                    var c = x(C("div"));
                    return c.attr("id", this.name()), c.addClass(a), c.css({
                        width: "1px",
                        height: b,
                        display: "inline-block;",
                        "background-color": "#CCC",
                        "margin-left": "5px",
                        "margin-right": "5px",
                        opacity: .6
                    }), c[0]
                }
            }), s.TouchToolStripSeparator = Jb;

            function Kb(a) {
                this.tc = a
            }
            y(Kb.prototype, {
                oN: function() {
                    this.gR = 2, this.tc.CH = !0
                },
                zM: function() {
                    this.gR = 0, this.hR = Aa()
                },
                nN: function() {
                    return 1 === this.gR
                },
                uN: function() {
                    return 1 === this.gR
                },
                sN: function() {
                    return 1 === this.gR
                },
                GQ: function() {
                    var a = this;
                    if (2 === a.gR) return !0;
                    if (a.hR) {
                        if (Aa() - a.hR <= 200) return a.iR++, !0;
                        a.hR = 0, a.iR = 0, a.gR = 1
                    } else a.gR = 1;
                    return a.tc.CH = !1, !1
                },
                HQ: function() {
                    var a = this;
                    return a.iR ? (a.iR--, !0) : 2 === a.gR || (a.gR = 0, !1)
                },
                IQ: function() {
                    return 2 === this.gR
                }
            }), s.jR = Kb;

            function Lb(a, b, c, d, e) {
                var f = this;
                f.KM = a, f.lN = c, f.OM = b, f.mN = d, f.aN = e
            }
            s.kR = Lb;

            function Mb() {}
            y(Mb.prototype, {
                lR: function(a, b) {
                    var c, d, e = a,
                        f = e.touches,
                        g = e.targetTouches,
                        h = e.changedTouches;
                    e.isPrimary !== !1 && (f && f.length >= 1 && g && g.length >= 1 && (f[0].clientX !== g[0].clientX || f[0].clientY !== g[0].clientY) || (L(a), c = v(h) ? e : h[0], d = ra.createEvent("MouseEvents"), d.initMouseEvent(b, !0, !0, qa, 1, c.screenX, c.screenY, c.clientX, c.clientY, !1, !1, !1, !1, 0, P), a.target.dispatchEvent(d)))
                },
                NM: function(a) {
                    var b, c = a.pointerType;
                    if (!c || c === a[ma] || c === ba) {
                        if (b = a.data, b.mR) return;
                        b.mR = !0, b.nR = !1, b.lR(a, "mouseover"), b.lR(a, "mousemove"), b.lR(a, "mousedown")
                    }
                },
                aB: function(a) {
                    var b, c = a.pointerType;
                    if (!c || c === a[ma] || c === ba) {
                        if (b = a.data, !b.mR) return;
                        b.nR = !0, b.lR(a, "mousemove")
                    }
                },
                RM: function(a) {
                    var b, c = a.pointerType;
                    if (!c || c === a[ma] || c === ba) {
                        if (b = a.data, !b.mR) return;
                        b.lR(a, "mouseup"), b.lR(a, "mouseout"), b.nR || b.lR(a, "click"), b.mR = !1
                    }
                },
                oR: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m, n, o = this,
                        p = c.charAt(0);
                    "." !== p && (c = "." + c), d = da + c, e = ea + c, f = fa + c, g = ga + c, h = ha + c, i = ia + c, j = ja + c, k = ka + c, l = la + c, m = B._Va(), b ? m ? (n = a.style, v(n.msTouchAction) || (n.msTouchAction = ca), v(n.touchAction) || (n.touchAction = ca), x(a).bind(d, o, o.NM).bind(g, o, o.NM), x(ra).bind(e, o, o.aB).bind(h, o, o.aB).bind(f, o, o.RM).bind(i, o, o.RM)) : x(a).bind(j, o, o.NM).bind(k, o, o.aB).bind(l, o, o.RM) : m ? (x(a).unbind(d).unbind(g), x(ra).unbind(e).unbind(h).unbind(f).unbind(i)) : x(a).unbind(j).unbind(k).unbind(l)
                }
            }), s.pR = Mb, q = "newSheet";

            function Nb(a) {
                this.hq = a
            }
            y(Nb.prototype, {
                Eda: function(a) {
                    var b, c = [];
                    for (b = 0; b < a.sheets.length; b++) c.push(a.sheets[b].name());
                    return c
                },
                lQ: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m = this,
                        n = a.rN,
                        o = m.hq,
                        p = Ca(o.OC);
                    o.FD && o.GD(p, !1), b = "resize", c = m.Eda(o.OC), d = o.hitTest(n.X, n.Y), e = d.element, e === b ? (o.HD = !0, o.ID = n.X) : (c.indexOf(e) >= 0 || e === q || "" === e) && (f = o.Xs, g = G.Nn(f), h = G.On(f), i = m.IP(g, h), j = i.getContext("2d"), k = G.Ln(i), l = G.Mn(i), va.Cn(j, 1, 1), j.drawImage(f, 0, 0, ya(i), xa(i), 0, 0, ya(i), xa(i)), va.Cn(j, k, l), m.Xs = i, m.qR = o.gq, m.rR = o.VC(), m.sR = o.UC(), m.KC = o.TC(), o.SC = !0), m.tR = o.jw(-1), m.uR = o.rD(o.sD())
                },
                pQ: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, w, x, y, z, A, B, C, F, H, I = this,
                        J = a.rN.X,
                        K = I.hq;
                    if (K.HD) b = J - K.ID, c = K.OC, d = c.options, e = c.xs.clientWidth, d.tabStripRatio = c.Iv() + b / e, f = K.kw / e, g = 1, c.Iv() < f ? (d.tabStripRatio = f, K.ID = K.kw) : c.Iv() >= g ? (d.tabStripRatio = g, K.ID = e) : K.ID = J;
                    else {
                        if (h = I.Xs, i = I.qR, !h || v(i)) return;
                        j = I.tR, k = I.uR, l = I.KC, m = I.rR, n = I.sR, o = a.dP.sO.X, p = I.vR(o, i), K.gq = p.gq, q = p.Vo, o > 0 && i === j && K.gq === j ? q = 0 : o < 0 && i === k && K.gq === k && (q = 0), o > 0 && o > q + l ? o = q + l : o < 0 && o < q - l && (o = q - l), 0 !== o && (r = K.Xs, s = r.getContext("2d"), t = G.Ln(r), u = G.Mn(r), s.save(), s.clearRect(0, 0, G.Nn(r), G.On(r)), w = K.Dr(), K.dD(s, w), y = 0, A = xa(w), o > 0 ? (x = m, B = x + o, z = n - B, z > 0 && (va.Cn(s, 1, 1), s.drawImage(h, x * t, y, z * t, A * u, B * t, y, z * t, A * u), va.Cn(s, t, u)), C = o - q, n - m <= o && (C = 0), z = q, x = m, z > 0 && (va.Dn(s, C, 0), K.iE(s, new E(x, y, z, A)), va.Dn(s, -C, 0))) : o < 0 && (B = m, x = B + R(o), z = n - x, z > 0 && (va.Cn(s, 1, 1), s.drawImage(h, x * t, y, z * t, A * u, B * t, y, z * t, A * u), va.Cn(s, t, u)), C = o - q, n - m <= R(o) && (C = 0), z = R(q), x = n - z, z > 0 && (va.Dn(s, C, 0), K.iE(s, new E(x, y, z, A)), va.Dn(s, -C, 0))), va.Cn(s, 1, 1), x = 0, z = m, s.drawImage(h, x * t, y, z * t, A * u, x * t, y, z * t, A * u), F = D.Lm(""), H = oa(F.zIndex), H > 2007 && (x = n, z = w.x + ya(w) - K.kw - x, s.drawImage(h, x * t, y, z * t, A * u, x * t, y, z * t, A * u)), x = ya(w) - K.kw, z = K.kw, s.drawImage(h, x * t, y, z * t, A * u, x * t, y, z * t, A * u), va.Cn(s, t, u), s.restore())
                    }
                },
                qQ: function() {
                    var a = this.hq;
                    a.HD ? (a.HD = !1, a.OC.aq()) : (a.SC = Q, a.repaint())
                },
                sQ: function(a) {
                    var b, c, d, e, f, g = this.hq,
                        h = g.OC,
                        i = a.rN,
                        j = Ca(h);
                    g.FD && g.GD(j, !1), b = ["first", "prevArrow", "nextArrow", "last", "", "prevButton", "nextButton"], c = this.Eda(h), d = g.hitTest(i.X, i.Y), e = d.element, h.mv = !0;
                    try {
                        b.indexOf(e) >= 0 ? g.JD(d.index, !0) : c.indexOf(e) >= 0 ? g.KD(d.index, d.position) : e === q && g.MD(d.position)
                    } finally {
                        h.mv = !1, f = Ca(h), f !== j && (f.CH = !0, f.zt())
                    }
                },
                yQ: function(a) {
                    return this.hq.cE(a.rN.X, a.rN.Y)
                },
                IP: function(a, b) {
                    var c = this.Xs;
                    return c ? a === G.Nn(c) && b === G.On(c) || G.Pn(c, a, b) : (c = C("canvas"), G.Kn(c, this.hq.OC), G.Pn(c, a, b)), c
                },
                vR: function(a, b) {
                    var c = this,
                        d = c.hq,
                        e = d.WC,
                        f = c.tR,
                        g = c.uR,
                        h = b,
                        i = 0;
                    if (a > 0) {
                        for (; h >= f && !(i > a);) i += e[h], h--;
                        h < f && (h = f)
                    } else if (a < 0 && g !== -1) {
                        for (; h <= g && !(i < a);) i -= e[h], h++;
                        h > g && (h = g)
                    }
                    return {
                        gq: h,
                        Vo: i
                    }
                }
            });

            function Ob(a, b, c) {
                var d, e, f = this;
                f.yM = new Kb(f), f.DQ = new Lb(a, "tabStrip", f.yM, 1, (-1)), f.BQ = c, f.CQ = new Nb(b), d = f.CQ, e = f.DQ, e.eN = function(a) {
                    return d.lQ(a)
                }, e.fN = function(a) {
                    return d.pQ(a)
                }, e.hN = function(a) {
                    return d.qQ(a)
                }, e.iN = function(a) {
                    return d.sQ(a)
                }, e.jN = function(a) {
                    return d.yQ(a)
                }
            }
            y(Ob.prototype, {
                EQ: function() {
                    var a = this,
                        b = a.BQ;
                    b && b.xN(a.DQ, !0)
                },
                FQ: function() {
                    var a = this,
                        b = a.BQ;
                    b && b.xN(a.DQ, !1)
                },
                GQ: function(a) {
                    return this.yM.GQ(a)
                },
                HQ: function(a) {
                    return this.yM.HQ(a)
                },
                IQ: function(a) {
                    return this.yM.IQ(a)
                }
            });

            function Pb(a, b, c, d) {
                var e = a.vu();
                e.ko(b) ? c.drawImage(e.lo(b), d.x, d.y, ya(d), xa(d)) : e.fo(b)
            }
            function Qb(a, b) {
                var c, d, e, f, g, h, i, j, k, l, m, n, o, p = a.am(),
                    q = 16,
                    r = Da(a);
                a.CH && r.length > 0 && (g = r[r.length - 1], h = g.row, i = g.row + g.rowCount - 1, j = g.col, k = g.col + g.colCount - 1, l = a.parent, m = "AAAAAQCAYAAAAf8/9hAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADs", l && !l.options.allowUserResize || (h !== -1 && j === -1 && a.getRowResizable(i) ? (n = a.Er(i), c = ta + m + "MAAA7DAcdvqGQAAABaSURBVDhPY/z//z8DLsDIyAiWBKphBAtgAUxQGgPANIMAMhsdYDUAmwZchtDOC8SCgTcA5DfcgUAEoNwFo7GAPQxwJVtsYYHVBdgU4gpInF5A1oBLMwMDAwMApuAtD6Z7YxQAAAAASUVORK5CYII=", d = a.getCellRect(i, Ga(a, 2) - 1, n, -1), f = p.fm(n), f.y <= d.y && d.y + xa(d) <= f.y + xa(f) && (e = new E(p.kt - q, d.y + xa(d) - q / 2, q, q))) : h === -1 && j !== -1 && a.getColumnResizable(k) && (o = a.Fr(k), c = ta + m + "IAAA7CARUoSoAAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAE1JREFUOE/ljtEKACAIA/v/nzZ9mFhsJPRocLEuGS4zk/iJyyP/D6gE0wrYoCqoLoUafPl8fEBln3ulSscfErk65TMjMFRBhUowosDWBoHpba8+C7w0" + ua, d = a.getCellRect(Ha(a, 1) - 1, k, -1, o), f = p.gm(o), f.x <= d.x && d.x + ya(d) <= f.x + ya(f) && (e = new E(d.x + ya(d) - q / 2, p.nt - q, q, q))), c && e && Pb(a, c, b, e)))
            }
            function Rb(a) {
                var b, c, d, e, f = P,
                    g = Da(a),
                    h = g.length;
                return a.CH && h > 0 && (b = g[h - 1], c = a.cm(b), d = 17, e = 20, f = new E(c.x + ya(c) - d, c.y + xa(c), d, e)), f
            }
            function Sb(a, b, c) {
                var d = a.Er(b),
                    e = a.Fr(c),
                    f = a.jt(d),
                    g = a.it(e),
                    h = 0,
                    i = 0,
                    j = 0,
                    k = 0;
                return f.length > 0 && (h = f[0].row, i = f[f.length - 1].row), g.length > 0 && (j = g[0].col, k = g[g.length - 1].col), H(h, j, i - h + 1, k - j + 1)
            }
            function Tb(a, b, c) {
                var d, e, f, g = a.Er(b),
                    h = a.Fr(c),
                    i = a.am(),
                    j = i.Ft(g, h),
                    k = !1,
                    l = a.it(h),
                    m = c === -1 ? l[0] : l.findCol(c);
                return m && (k = j.x <= m.x && m.x + ya(m) <= j.x + ya(j)), d = !1, e = a.jt(g), f = b === -1 ? e[0] : e.findRow(b), f && (d = j.y <= f.y && f.y + xa(f) <= j.y + xa(j)), k && d
            }
            function Ub(a) {
                var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, F, G, H, I = Da(a),
                    J = [];
                if (a.CH && I.length > 0) for (b = I[I.length - 1], c = a.cm(b), d = 8, e = a.am(), f = b.row, g = b.row + b.rowCount - 1, h = b.col, i = b.col + b.colCount - 1, j = Sb(a, f, h), k = Sb(a, g, i), l = j.row, m = k.row + k.rowCount - 1, n = j.col, o = k.col + k.colCount - 1, r = g === m && Tb(a, m, -1), s = i === o && Tb(a, -1, o), b.row !== -1 && b.col !== -1 ? (n <= h && h <= o && l <= f && f <= m && (J[0] = new E(c.x - d, c.y - d, 2 * d, 2 * d)), (n <= i && i < o || s) && (l <= g && g < m || r) && (J[1] = new E(c.x + ya(c) - d, c.y + xa(c) - d, 2 * d, 2 * d))) : b.row !== -1 ? (p = e.Ft(1, 0), q = e.Ft(1, 1), t = p.x + (ya(p) + ya(q)) / 2 - d, u = Ga(a) - 1 - Ea(a), v = a.it(1), w = v.findCol(u), w && (x = a.it(0), y = x[0] || v[0], y && (t = y.x + (w.x + ya(w) - y.x) / 2 - d)), l <= f && f <= m && (J[0] = new E(t, c.y - d, 2 * d, 2 * d)), (l <= g && g < m || r) && (J[1] = new E(t, c.y + xa(c) - d, 2 * d, 2 * d))) : b.col !== -1 && (p = e.Ft(0, 1), q = e.Ft(1, 1), z = p.y + (xa(p) + xa(q)) / 2 - d, A = Ha(a) - 1 - Fa(a), B = a.jt(1), C = B.findRow(A), C && (D = a.jt(0), F = D[0] || B[0], F && (z = F.y + (C.y + xa(C) - F.y) / 2 - d)), n <= h && h <= o && (J[0] = new E(c.x - d, z, 2 * d, 2 * d)), (n <= i && i < o || s) && (J[1] = new E(c.x + ya(c) - d, z, 2 * d, 2 * d))), H = J.length - 1; H >= 0; H--) G = J[H], (!G || G.x < 0 || G.y < 0) && (J[H] = P);
                return J
            }
            function Vb(a, b, c) {
                var d, e, f, g, h = a.parent;
                if (F.Wl(a) || h && !h.options.hideSelection) {
                    if (a.isEditing() || !b || 0 === a.selectionPolicy()) return;
                    if (d = Ub(a), e = d.length, e > 0) {
                        for (c.save(), c.fillStyle = a.e_a() || "white", c.strokeStyle = a.getSelectionBorderColor(), g = 0; g < e; g++) f = d[g], f && (c.beginPath(), c.arc(f.x + ya(f) / 2, f.y + xa(f) / 2, ya(f) / 2, 0, 2 * Math.PI, !1), c.fill(), c.stroke());
                        c.restore()
                    }
                }
            }
            function Wb(a, b) {
                var c, d = Rb(a);
                d && (c = ta + "EAAAATCAIAAAD5x3GmAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwwAADsMBx2 + oZAAAAGhJREFUOE / djkEOwCAIBHk6P98u1lKo1diEU + dggOyAAkC + YPl / Onx3WDmiytm4aulQoKba + 4uiO77YhHDH5SqnRa0If / Nhq0fnjPob2h5oVXJI0rJA3h1ya1kgU4f4nQfVzozk7APgAIEqATZbalz1" + ua, Pb(a, c, b, d))
            }
            u.oJ.prototype.DH = function() {
                var a = this,
                    b = a.kj,
                    c = Da(b),
                    d = c.length;
                b.Xq <= 0 && d > 0 && a.im(c[d - 1], Q, Q, !0)
            }, u.Worksheet.$n(ba, {
                init: function() {
                    this.wQ = !1, this.mQ = !0
                },
                setHost: function(a) {
                    var b = this,
                        c = b.parent,
                        d = c && c.BQ || new Ja,
                        e = new Fb(a[0], b, d);
                    e.EQ(), b.wR = e
                },
                dispose: function(a) {
                    var b = this;
                    b.wR && b.wR.FQ(), a !== !1 && (b.wR = P)
                },
                startEdit: function() {
                    this.yl.DH()
                },
                paintAdornment: function(a) {
                    var b = this,
                        c = a.ctx;
                    b.CH && (b.options.isProtected || Qb(b, c), b.wQ ? Wb(b, c) : Vb(b, b.mQ, c))
                },
                preProcessMouseDown: function(a) {
                    var b = a.e,
                        c = this.wR;
                    (O || c.GQ(b)) && (L(b), a.r = !0)
                },
                preProcessMouseMove: function(a) {
                    var b = a.e,
                        c = this.wR;
                    (O || c.IQ(b)) && (L(b), a.r = !0)
                },
                preProcessMouseUp: function(a) {
                    var b = a.e,
                        c = this.wR;
                    (O || c.HQ(b)) && (L(b), a.r = !0)
                },
                preProcessMouseDbClick: function(a) {
                    (O || this.CH) && (a.r = !0)
                },
                preProcessMouseOut: function(a) {
                    O && (a.r = !0)
                },
                preProcessMouseWheel: function(a) {
                    O && (a.r = !0)
                }
            }), u.Workbook.$n(ba, {
                init: function() {
                    this.BQ = new Ja
                },
                setHost: function() {
                    var a = this;
                    a.touchToolStrip = new Gb(a, a.xv())
                },
                dispose: function() {
                    var a = this,
                        b = a.BQ,
                        c = a.touchToolStrip;
                    b && b.no(), c && (c.no(), a.touchToolStrip = P)
                },
                onCultureChanged: function() {
                    var a = this.touchToolStrip;
                    a && a.eR()
                }
            }), u.DC.$n(ba, {
                setHost: function() {
                    var a = this,
                        b = new Ob(a.Xs, a, a.OC.BQ);
                    b.EQ(), a.wR = b
                },
                dispose: function() {
                    var a = this,
                        b = a.wR;
                    b && (b.FQ(), a.wR = P)
                },
                preProcessMouseDown: function(a) {
                    var b = this.wR,
                        c = a.e;
                    (O || b.GQ(c)) && (L(c), a.r = !1)
                },
                preProcessMouseMove: function(a) {
                    var b = this.wR,
                        c = a.e;
                    (O || b.IQ(c)) && (L(c), a.r = !1)
                },
                preProcessMouseUp: function(a) {
                    var b = this.wR,
                        c = a.e;
                    (O || b.HQ(c)) && (L(c), a.r = !1)
                },
                preProcessMouseDbClick: function(a) {
                    var b = Ca(this.OC);
                    (O || b.CH) && (a.r = !1)
                },
                preProcessMouseOut: function(a) {
                    O && (a.r = !1)
                }
            }), r = ".gcScrollbar", u.hv.$n(ba, {
                initEvents: function(a) {
                    var b = this.xR = new Mb;
                    b.oR(a, !0, r)
                },
                dispose: function(a) {
                    var b = this.xR;
                    b && b.oR(a, !1, r)
                }
            }), a.exports = s
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {
                ToolStrip_PasteText: "Paste",
                ToolStrip_CutText: "Cut",
                ToolStrip_CopyText: "Copy",
                ToolStrip_AutoFillText: "AutoFill"
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(107);
            c(109), c(108), c(110), b.SR = {}, b.SR.en = c(112), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l = c(87),
                m = c(26),
                n = m.j.Fa,
                o = c(108),
                p = l.Rect,
                q = l.Point,
                r = l.Events,
                s = l.Rm,
                t = m.j.Ma,
                u = l.Ul,
                v = u.Pl,
                w = u.Ol,
                x = u.Nl,
                y = u.Rl,
                z = o.yR,
                A = document,
                B = m.D,
                C = function() {
                    return m.C(a.exports.SR)()
                },
                D = l.GC$,
                E = null,
                F = void 0,
                G = Math.ceil,
                H = Math.floor,
                I = Math.max,
                J = Math.min,
                K = Math.abs,
                L = "div",
                M = "on",
                N = "z-index",
                O = "move",
                P = "unselectable",
                Q = 1,
                R = "border",
                S = 9007199254740992,
                T = "floatingObjects",
                U = ".gcFloatingObject",
                V = "name",
                W = "x",
                X = "y",
                Y = "width",
                Z = "height",
                $ = "start",
                _ = $ + "Row",
                aa = $ + "RowOffset",
                ba = $ + "Column",
                ca = $ + "ColumnOffset",
                da = "end",
                ea = da + "Row",
                fa = da + "RowOffset",
                ga = da + "Column",
                ha = da + "ColumnOffset",
                ia = "isSelected",
                ja = "isLocked",
                ka = "isVisible",
                la = "canPrint",
                ma = "dynamicSize",
                na = "dynamicMove",
                oa = "fixedPosition",
                pa = "allowResize",
                qa = "allowMove",
                ra = 700,
                sa = 701,
                ta = "position",
                ua = "absolute",
                va = "background",
                wa = "gc-no-user-select",
                xa = "gc-floatingobject-selected",
                ya = "gc-floatingobject-unselected",
                za = "gc-floatingobject-resize-indicator-select",
                Aa = "gc-floatingobject-resize-indicator-unSelect",
                Ba = "gc-floatingobject-content-container",
                Ca = "gc-floatingobject-container",
                Da = "gc-floatingobject-moving-container",
                Ea = "gc-floatingobject-moving-div",
                Fa = ".gc-floatingobject-resize-indicator",
                Ga = "gc-floatingobject-resize-indicator",
                Ha = "gc-floatingobject-absolute",
                Ia = "gc-floatingobject-top",
                Ja = "gc-floatingobject-middle",
                Ka = "gcfloatingobject-bottom",
                La = "gc-floatingobject-left",
                Ma = "gc-floatingobject-center",
                Na = "gc-floatingobject-right",
                Oa = "div." + Ga,
                Pa = Oa + "." + Ia + "." + La,
                Qa = Oa + "." + Ja + "." + La,
                Ra = Oa + "." + Ka + "." + La,
                Sa = Oa + "." + Ia + "." + Ma,
                Ta = Oa + "." + Ka + "." + Ma,
                Ua = Oa + "." + Ia + "." + Na,
                Va = Oa + "." + Ja + "." + Na,
                Wa = Oa + "." + Ka + "." + Na,
                Xa = "content",
                Ya = "gc-no-user-select",
                Za = "100%",
                $a = "gc-floatingobject-background-cover",
                _a = ".fos",
                ab = function() {
                    var a = this;
                    a.uQ = function() {
                        var a = this.wr;
                        a && a.zR().forEach(function(a) {
                            a.isSelected(!1)
                        })
                    }, a.AR = function() {
                        var a = this,
                            b = a.wr;
                        b && (b.isNeedToUpdateLayout = !0)
                    }, a.BR = function() {
                        var a = this,
                            b = a.parent,
                            c = a.tv,
                            d = b && b.tv;
                        return c || (c = a.tv = d ? d : {
                            fromSheet: E,
                            isCutting: !1
                        }), c
                    }, a.ex = function() {
                        var a = this,
                            b = a.BR(),
                            c = b && b.fromSheet;
                        c && (c.CR = E), b.fromSheet = E, b.isCutting = !1
                    }, a.DR = function(a) {
                        var b = this.options;
                        return !b.isProtected || !a.isLocked() || b.protectionOptions.allowEditObjects
                    }, a.ER = function(a) {
                        var b = this.options;
                        return !b.isProtected || !a.isLocked() || b.protectionOptions.allowEditObjects
                    }, a.isPasteFloatingObject = function() {
                        var a = this, b = a.BR().fromSheet, c = this.CR;
                        return !c && b && (c = b.CR), c && !c.isEmpty()
                    }
                };
            ab.call(l.Worksheet.prototype);

            function bb(a) {
                var b, c, d, e, f, g, h, i = a.FR;
                if (i) {
                    for (b = 0, d = i.length; b < d; b++) if (f = i[b]) {
                        for (c = 0, e = f.length; c < e; c++) g = f[c], g && g.no();
                        f.length = 0
                    }
                    i.length = 0, a.FR = E
                }
                h = a.wr, h && h.no()
            }
            function cb(a, b, c) {
                a.zR().forEach(function(a) {
                    a.rI(b, c)
                })
            }
            function db(a, b, c) {
                var d, e, f = [];
                for (a.zR().forEach(function(d) {
                    gb(b, -1, b + c - 1, a.sheet().getColumnCount(), d) && (d.dynamicMove() || d.dynamicSize()) ? f.push(d) : d.GR(b, c)
                }), d = 0, e = f.length; d < e; d++) a.Fb(f[d].name())
            }
            function eb(a, b, c) {
                a.zR().forEach(function(a) {
                    a.tI(b, c)
                })
            }
            function fb(a, b, c) {
                var d, e, f = [];
                for (a.zR().forEach(function(d) {
                    gb(-1, b, a.sheet().getRowCount(), b + c - 1, d) && (d.dynamicMove() || d.dynamicSize()) ? f.push(d) : d.HR(b, c)
                }), d = 0, e = f.length; d < e; d++) a.Fb(f[d].name())
            }
            function gb(a, b, c, d, e) {
                var f = e[_](),
                    g = e[ba](),
                    h = e[ea](),
                    i = e[ga]();
                return a <= f && b <= g && c >= h && d >= i
            }
            function hb(a, b) {
                var c = this;
                return b || (b = {}), D.each(a, function(a, d) {
                    var e = c[d],
                        f = e.call(c);
                    e.isDefault(f) || (b[d] = f)
                }), b
            }
            function ib(a, b) {
                if (b) {
                    var c = this;
                    D.each(a, function(a, d) {
                        b[d] !== F && c[d].call(c, b[d], !1)
                    })
                }
            }
            function jb(a) {
                var b = a;
                return function(a, c) {
                    var d = this,
                        e = d.sheet();
                    b === Xa && (d.KR = !0), e && e.$p(), d.onPropertyChanged(b, a, c)
                }
            }
            function kb(a) {
                var b = a;
                return function(a, c) {
                    var d = this,
                        e = d.sheet();
                    e && (mb(d), e.$p()), d.onPropertyChanged(b, a, c)
                }
            }
            function lb(a) {
                var b = a;
                return function(a, c) {
                    var d = this,
                        e = d.sheet();
                    e && (zb(d), e.$p()), d.onPropertyChanged(b, a, c)
                }
            }
            function mb(a) {
                var b, c, d, e, f = a.sheet();

                function g(b, c, d, e, g) {
                    var h = 0,
                        i = b.call(a);
                    return h = c.call(a, f, 0, i), nb.call(a, b, d, e, !0, g), h += d.call(a)
                }
                f && (b = g(a[_], ob, a[aa], f.getRowHeight, aa), c = g(a[ba], pb, a[ca], f.getColumnWidth, ca), d = a.x(), e = a.y(), d === c && e === b || (a.x(c, !1), a.y(b, !1), a.onPropertyChanged("position", new q(c, b), new q(d, e))))
            }
            function nb(a, b, c, d, e) {
                var f = this,
                    g = b.call(f),
                    h = c.call(f.sheet(), a.call(f), 3),
                    i = f.LR;
                h > 0 && h--, g > h ? (i[e] || (i[e] = g), b.call(f, h, !1)) : i[e] && (i[e] < h ? (b.call(f, i[e], !1), i[e] = F) : (d && h < i[e] || !d && g < i[e]) && b.call(f, h, !1))
            }
            function ob(a, b, c, d) {
                var e, f = 0;
                for (e = b; e < c && (f += a.getRowHeight(e, 3), !(f > d)); e++);
                return f
            }
            function pb(a, b, c, d) {
                var e, f = 0;
                for (e = b; e < c && (f += a.getColumnWidth(e, 3), !(f > d)); e++);
                return f
            }
            function qb(a) {
                var b = a.sheet();

                function c(b, c, d, e, f) {
                    var g = sb(a, b, c),
                        h = g.index;
                    e.call(a, g.offset, !1), g.offset === -1 && (h += 1, e.call(a, 0), h === f && (h = f - 1)), d.call(a, h, !1)
                }
                b && (c(!0, a.y(), a[_], a[aa], b.getRowCount()), c(!1, a.x(), a[ba], a[ca], b.getColumnCount()))
            }
            function rb(a) {
                var b = a.sheet();

                function c(b, c, d, e) {
                    var f = sb(a, b, c);
                    d.call(a, f.index, !1), e.call(a, f.offset, !1)
                }
                b && (c(!0, a.y() + a[Z](), a[ea], a[fa]), c(!1, a.x() + a[Y](), a[ga], a[ha]))
            }
            function sb(a, b, c) {
                var d, e = 0,
                    f = 0,
                    g = a.sheet(),
                    h = b ? g.getRowCount() : g.getColumnCount(),
                    i = 0;
                for (i = 0; i < h; i++) {
                    if (d = b ? g.getRowHeight(i, 3) : g.getColumnWidth(i, 3), e += d, f = e - c, f > 0) {
                        f = f > 0 ? d - f : -1;
                        break
                    }
                    if (0 === f) {
                        f = 0, i += 1;
                        break
                    }
                }
                return i >= h && (i = h - 1, f = 0), {
                    offset: f,
                    index: i
                }
            }
            function tb(a, b) {
                ub(b, vb(a))
            }
            function ub(a, b) {
                a && (a.style.zIndex = b + "")
            }
            function vb(a) {
                var b = a.PR;
                return n(b) && (b = a.Cka), b
            }
            function wb(a, b) {
                a.PR = b, a.qo.forEach(function(a) {
                    for (var c = a.parentElement; c.className.indexOf(Ca) === -1;) c = c.parentElement;
                    ub(c, b)
                })
            }
            function xb(a, b) {
                n(a.PR) && (a.Cka += b)
            }
            function yb(a, b) {
                this.kj = a, this.g3 = b
            }
            D.extend(yb.prototype, {
                add: function(a, b, c, d, e, f) {
                    var g = this,
                        i;
                    return "1" === g.g3 ? i = new h.Picture(a, b, c, d, e, f) : "0" === g.g3 && (i = a), g.kj.wr.Sb(i), i
                },
                get: function(a) {
                    return this.kj.wr.NR(a)
                },
                remove: function(a) {
                    this.kj.wr.Fb(a)
                },
                clear: function() {
                    return this.kj.wr.$b(this.g3)
                },
                all: function() {
                    return this.kj.wr.zR(this.g3)
                },
                zIndex: function(a, b) {
                    return this.kj.wr.PR(a, b)
                },
                tTa: function(a, b, c) {
                    this.kj.wr.zR().forEach(function(d) {
                        var e = c ? d.startRow() : d.startColumn(),
                            f = c ? d.endRow() : d.endColumn();
                        b < e || a > f || zb(d)
                    })
                }
            }), b = function() {
                function a(a) {
                    var c = this;
                    c.sheet(a), b(c), c.QR = {}
                }
                function b(a) {
                    var b = a.sheet();
                    b && (D(A.body).bind("scroll" + U, function() {
                        var a = b.parent.getActiveSheet();
                        a.wr && b.QP(a.Dr())
                    }), b.Fu(r.ColumnChanged + U, function(b, d) {
                        var e = d.propertyName;
                        e !== Y && e !== ka || c(a)
                    }), b.Fu(r.RowChanged + U, function(b, d) {
                        var e = d.propertyName;
                        e !== Z && e !== ka || c(a)
                    }), b.Fu(r.ColumnWidthChanged + U, function() {
                        c(a)
                    }), b.Fu(r.RowHeightChanged + U, function() {
                        c(a)
                    }))
                }
                function c(a) {
                    var b = a.sheet();
                    a.isNeedToUpdateLayout = !0, b.QP && b.QP(b.Dr())
                }
                function d(a, b) {
                    if (a.QR[b]) throw Error(C().Exp_FloatingObjectHasSameNameError)
                }
                function f(a, b, c) {
                    return c && c.width > 0 && c.height > 0 && (c.x === a || c.y === b || c.contains(a, b))
                }
                var g = {
                    sheet: v("sheet", F),
                    Dka: function(a) {
                        this.zR().forEach(function(b) {
                            xb(b, a)
                        })
                    },
                    Sb: function(a) {
                        var b, c = this,
                            e = c.sheet();
                        if (e.suspendPaint(), b = a.name(), !b) throw Error(C().Exp_FloatingObjectNameEmptyError);
                        d(c, b), e.ITa.AUa(), c.Dka(-1), a.sheet(e), c.QR[b] = a, e.Zoa(a), e.resumePaint()
                    },
                    NR: function(a) {
                        return this.QR[a]
                    },
                    Fb: function(a, b) {
                        var c, d, e, f = this;
                        return !!a && (c = f.sheet(), d = f.NR(a), c.ITa.AUa(), c.suspendPaint(), b ? (e = {
                                sheet: c,
                                sheetName: c.name(),
                                floatingObject: d,
                                cancel: !1
                            }, c.Wq(r.FloatingObjectRemoving, e), e.cancel === !1 && (delete f.QR[a], c.Wq(r.FloatingObjectRemoved, {
                                sheet: c,
                                sheetName: c.name(),
                                floatingObject: d
                            }))) : delete f.QR[a], c.resumePaint(), !0)
                    },
                    U3: function(a, b) {
                        var c, e = this,
                            f = e.sheet();
                        if (f.suspendPaint(), !b) throw Error(C().Exp_FloatingObjectNameEmptyError);
                        d(e, b), c = e.QR[a], delete e.QR[a], e.QR[b] = c, c.onNameChanged && c.onNameChanged(a, b), f.resumePaint()
                    },
                    $b: function(a) {
                        var b = this,
                            c = b.sheet();
                        c.suspendPaint(), D.each(this.QR, function(c, d) {
                            a && a !== d.g3 || b.Fb(d.name())
                        }), c.resumePaint()
                    },
                    zR: function(a) {
                        var b = [];
                        return D.each(this.QR, function(c, d) {
                            a && a !== d.g3 || b.push(d)
                        }), b
                    },
                    PR: function(a, b) {
                        var c = isNaN(b),
                            d = this.NR(a);
                        if (d) {
                            if (c) return vb(d);
                            wb(d, b)
                        }
                        if (c) return -1
                    },
                    toJSON: function() {
                        var a = [];
                        return this.zR().forEach(function(b) {
                            var c, d;
                            b instanceof e && b.hga() && (c = b.toJSON(), d = b.PR, isNaN(d) || (c.zIndex = d), a.push(c))
                        }), a
                    },
                    fromJSON: function(a, b) {
                        var c, d, f, g, i, j, k, m = this;
                        if (a && 0 !== a.length) for (c = 0; c < a.length; c++) d = a[c], d && (i = d.floatingObjectType, j = u.Ol(i) ? i + "" : d.typeName, g = "0" === j ? e : "1" === j ? h.Picture : l.getTypeFromString(j), g && (f = new g, f.fromJSON(d, b), m.Sb(f), k = d.zIndex, n(k) || (f.PR = k)))
                    },
                    no: function() {
                        D(A.body).unbind("scroll" + U);
                        var a = this.sheet();
                        a && (a.Gu(r.ColumnChanged + U), a.Gu(r.RowChanged + U), a.Gu(r.ColumnWidthChanged + U), a.Gu(r.RowHeightChanged + U))
                    },
                    hitTest: function(a, b) {
                        var c, d, e, g, h = this.sheet(),
                            i = h.am(),
                            j = E;
                        if (i) for (c = 0; c <= 2; c++) for (d = 0; d <= 2; d++) if (e = i.Ft(c, d), e && e.contains(a, b) && (g = h.IR && h.IR(c, d), g && g.jS.each(function(c) {
                                var d = c.YR;
                                d && d.isVisible() && h.DR(d) && f(a, b, c.Tka) && (j ? vb(j.floatingObject) < vb(d) && (j.floatingobject = d) : j = {
                                    x: a,
                                    y: b,
                                    floatingObject: d
                                })
                            }), j)) return j;
                        return j
                    },
                    FS: function() {
                        for (var a = "FloatingObject", b = 1, c = a + ("" + b); this.NR(c);) b++, c = a + ("" + b);
                        return c
                    }
                };
                return D.extend(a.prototype, g), a
            }();

            function zb(a) {
                var b, c, d, e, f = a.sheet();

                function g(b, c, d, e, g, h, i) {
                    var j, k = 0,
                        l = b.call(a),
                        m = c.call(a);
                    return k = d.call(a, f, l, m), l === m ? (nb.call(a, c, h, e, !1, i), k = h.call(a) - g.call(a)) : (j = e.call(f, l, 3), j > 0 && (k -= g.call(a)), nb.call(a, c, h, e, !1, i), k += h.call(a)), k
                }
                f && (b = g(a[_], a[ea], ob, f.getRowHeight, a[aa], a[fa], fa), c = g(a[ba], a[ga], pb, f.getColumnWidth, a[ca], a[ha], ha), c < 0 && (c = 0), b < 0 && (b = 0), d = a[Y](), d !== c && (a[Y](c, !1), a.onPropertyChanged(Y, c, d)), e = a[Z](), e !== b && (a[Z](b, !1), a.onPropertyChanged(Z, b, e)))
            }
            d = ["dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"];

            function Ab(a) {
                return d.indexOf(a) >= 0
            }
            function Bb(a) {
                var b, c, d;
                if (w(a) && ("string" != typeof a || "" === a)) throw Error(C().Exp_FloatingObjectNameEmptyError);
                return b = this, a !== b.name() && (c = b.sheet(), !c || (d = c.wr.NR(a), !d))
            }
            e = function() {
                var a, b = [V, W, X, Y, Z, _, aa, ba, ca, ea, fa, ga, ha, la, ia, ja, ka, na, ma, oa, pa, qa],
                    c = [
                        ["sheet", E, function() {
                            k(this)
                        }],
                        [V, F, function(a, b) {
                            var c, d, e = this,
                                f = e.sheet();
                            f && (c = f.wr, d = c.NR(b), d === e && c.U3(b, a)), e.onPropertyChanged("name", a, b)
                        },
                            Bb],
                        [W, 0, f(W, !1)],
                        [X, 0, f(X, !1)],
                        [Z, 0, f(Z, !0)],
                        [Y, 0, f(Y, !0)],
                        [_, F, kb(_)],
                        [aa, 0, kb(aa)],
                        [ba, F, kb(ba)],
                        [ca, 0, kb(ca)],
                        [ea, F, lb(ea)],
                        [fa, 0, lb(fa)],
                        [ga, F, lb(ga)],
                        [ha, 0, lb(ha)],
                        [ia, !1, jb(ia)],
                        [ja, !0, e(ja)],
                        [la, !0, e(la)],
                        [ka, !0, jb(ka)],
                        [na, !0, function(a, b) {
                            e(na).call(this, a, b)
                        }, function(a) {
                            return "boolean" == typeof a && (a || this.dynamicSize(!1, !1), !this.fixedPosition())
                        }],
                        [ma, !0, function(a, b) {
                            e(ma).call(this, a, b)
                        }, function(a) {
                            return "boolean" == typeof a && this.dynamicMove() && !this.fixedPosition()
                        }],
                        [oa, !1, function(a, b) {
                            var c = this;
                            a && (c.dynamicMove(!1, !1), c.dynamicSize(!1, !1)), c.onPropertyChanged(oa, a, b)
                        }],
                        [pa, !0, jb(pa)],
                        [qa, !0, jb(qa)]
                    ];

                function d(a, b, c, d, e) {
                    var f = this;
                    f.LR = {
                        startRowOffset: F,
                        startColumnOffset: F,
                        endRowOffset: F,
                        endColumnOffset: F
                    }, f.typeName = "0", f.g3 = "0", f.name(a), f.x(b ? b : 0, !1), f.y(c ? c : 0, !1), f[Y](d ? d : 0, !1), f[Z](e ? e : 0, !1), f.qo = [], f.KR = !1, f.Cka = ra
                }
                function e(a) {
                    return function(b, c) {
                        this.onPropertyChanged(a, b, c)
                    }
                }
                function f(a, b) {
                    return function(c, d) {
                        var e = this,
                            f = e.sheet();
                        f && (b && i(e), j(e), p(e), f.$p()), e.onPropertyChanged(a, c, d)
                    }
                }
                function g(a, b, c, d) {
                    var e = this,
                        f = a.call(e),
                        g = b.call(e);
                    c <= f ? e.dynamicMove() && (a.call(e, f + d), b.call(e, g + d)) : c < g && e.dynamicSize() && b.call(e, g + d)
                }
                function h(a, b, c, d, e, f, g) {
                    var h, i, j = this,
                        k = a.call(j),
                        l = c.call(j);
                    e <= k ? g < k ? j.dynamicMove() && (a.call(j, k - f), c.call(j, l - f)) : g < l && (h = g - k + 1, i = l - k + 1 - h, j.dynamicMove() && (a.call(j, e), b.call(j, 0)), j.dynamicSize() && c.call(j, e + i - 1)) : e <= l && (g < l ? j.dynamicSize() && c.call(j, l - f) : j.dynamicSize() && (c.call(j, e), d.call(j, 0)))
                }
                function i(a) {
                    var b = m(a, a[Z]()),
                        c = o(a, a[Y]());
                    a[Y]() > c && a[Y](c, !1), a[Z]() > b && a[Z](b, !1)
                }
                function j(a) {
                    var b, c, d = a.x() + a[Y](),
                        e = o(a, d);
                    d > e && a.x(I(0, e - a[Y]()), !1), a.x() < 0 && a.x(0, !1), b = a.y() + a[Z](), c = m(a, b), b > c && a.y(I(0, c - a[Z]()), !1), a.y() < 0 && a.y(0, !1)
                }
                function k(a) {
                    var b, c, d, e;
                    i(a), j(a), b = a[_](), c = a[ba](), n(b) || n(c) ? qb(a) : mb(a), d = a[ea](), e = a[ga](), n(d) || n(e) ? rb(a) : zb(a)
                }
                function m(a, b) {
                    var c, d = a.sheet();
                    return d ? (c = d.getRowCount(), ob(d, 0, c, b)) : S
                }
                function o(a, b) {
                    var c, d = a.sheet();
                    return d ? (c = d.getColumnCount(), pb(d, 0, c, b)) : S
                }
                function p(a) {
                    qb(a), rb(a)
                }
                return a = {
                    constructor: d,
                    position: function(a) {
                        var b, c, d = this,
                            e = d.sheet();
                        return 0 === arguments.length ? new q(d.x(), d.y()) : (b = d.x(), c = d.y(), !t(a, q) || b === a.x && c === a.y || (d.x(a.x, !1), d.y(a.y, !1), j(d), p(d), e && e.$p(), d.onPropertyChanged("position", a, new q(b, c))), d)
                    },
                    content: v(Xa, E, jb(Xa)),
                    cloneContent: function() {
                        var a, b, c = this.content();
                        return c ? (c.cloneNode ? a = c.cloneNode(!0) : (b = x(L), b.innerHTML = c.outerHTML, a = b.firstChild), D(a).removeAttr("id")[0]) : E
                    },
                    refreshContent: function(a) {
                        var b, c, d, e, f, g, h = this;
                        h.KR && a && (b = D(a), b.empty(), c = h.cloneContent(), d = Za, e = Za, f = "", g = "", c && c.style && (f = c.style.width, g = c.style.height), "" !== f && (d = f), "" !== g && (e = g), c !== E ? (D(c).css({
                            width: d,
                            height: e
                        }).addClass($a).addClass(wa).attr(P, M).appendTo(a), b.css(va, "")) : b.css(va, ""), h.KR = !1)
                    },
                    toJSON: function() {
                        var a, c = this,
                            d = hb.call(c, b),
                            e = c.LR;
                        for (a in e) n(e[a]) || (d[a] = e[a]);
                        return d.typeName = c.typeName, d[Xa] = D(x(L)).append(c.cloneContent()).html(), d
                    },
                    fromJSON: function(a, c) {
                        var d, e;
                        a && (d = this, d.TR = !0, ib.call(this, b, a, c), n(a[_]) && p(d), a.content && (e = x(L), e.innerHTML = a.content, d.content(D(e.firstChild)[0])), d.TR = F)
                    },
                    clone: function() {
                        var a = this,
                            b = l.getTypeFromString(a.typeName),
                            c = b ? new b : new d,
                            e = JSON.stringify(a.toJSON());
                        return c.fromJSON(JSON.parse(e)), c.content(a.cloneContent()), c
                    },
                    onPropertyChanged: function(a, b, c) {
                        var d, e = this;
                        e.TR || (d = e.sheet(), d && (d.ITa.BUa(e, a, c), e.Wq({
                            sheet: d,
                            sheetName: d.name(),
                            floatingObject: e,
                            propertyName: a
                        })))
                    },
                    Wq: function(a) {
                        var b, c = this.sheet();
                        c && (c.Wq(r.FloatingObjectChanged, a), a.propertyName === ia && (b = {
                            sheet: a.sheet,
                            sheetName: a.sheetName,
                            floatingObject: a.floatingObject
                        }, c.Wq(r.FloatingObjectSelectionChanged, b)))
                    },
                    rI: function(a, b) {
                        var c = this;
                        a = G(a), b = G(b), g.call(c, c[_], c[ea], a, b)
                    },
                    GR: function(a, b) {
                        var c = this,
                            d = a + b - 1;
                        h.call(c, c[_], c[aa], c[ea], c[fa], a, b, d)
                    },
                    tI: function(a, b) {
                        var c = this;
                        a = G(a), b = G(b), g.call(c, c[ba], c[ga], a, b)
                    },
                    HR: function(a, b) {
                        var c, d = this;
                        a = G(a), b = G(b), c = a + b - 1, h.call(d, d[ba], d[ca], d[ga], d[ha], a, b, c)
                    },
                    getHost: function(a, b) {
                        var c, d, e = this.qo.concat();
                        if (!n(a) && !n(b)) {
                            for (c = 0; c < e.length; c++) if (d = e[c], d.rowViewportIndex === a && d.columnViewportIndex === b) return d;
                            return E
                        }
                        return e
                    },
                    UR: function(a, b, c) {
                        var d = this.qo;
                        a && d.indexOf(a) < 0 && (a.rowViewportIndex = b, a.columnViewportIndex = c, d.push(a))
                    },
                    VR: function(a) {
                        var b = this.qo,
                            c = b.indexOf(a);
                        c >= 0 && b.splice(c, 1)
                    },
                    WR: function(a, b) {
                        var c, d, e, f, g, h, i = x(L);
                        return D(i).addClass(Ya).addClass(Ba).attr(P, M).css(ta, ua), c = this.cloneContent(), d = Za, e = Za, f = "", g = "", h = c && c.style, h && (f = h.width, g = h.height), "" !== f && (d = f), "" !== g && (e = g), c !== E && D(c).css({
                            width: d,
                            height: e
                        }).addClass($a).addClass(Ya).attr(P, M).appendTo(i), this.UR(i, a, b), i
                    },
                    hga: function() {
                        return !0
                    },
                    no: function(a) {},
                    Toa: function() {
                        mb(this), zb(this)
                    }
                }, D.each(c, function(b, c) {
                    a[c[0]] = v(c[0], c[1], c[2], c[3])
                }), d.prototype = a, d
            }(), f = function() {
                var a = $ + "X",
                    b = $ + "Y",
                    c = $ + "Width",
                    d = $ + "Height",
                    e = da + "X",
                    f = da + "Y",
                    g = $ + "TopRow",
                    h = $ + "LeftColumn",
                    i = "left",
                    j = "center",
                    k = "right",
                    m = "top",
                    n = m + i,
                    o = m + j,
                    t = m + k,
                    v = "middle",
                    w = v + i,
                    z = v + k,
                    C = "bottom",
                    G = C + i,
                    S = C + j,
                    T = C + k,
                    V = "-resize",
                    W = "cursor",
                    X = "mousemove",
                    aa = "mouseup";

                function ca(a, b) {
                    this.XR = "";
                    var c = this;
                    c.YR = a, c.name = a ? a.name() : "", c.kj = b, c.RB = !1, c.ZR = !1
                }
                l.Zn(ca);

                function fa(e, f, g) {
                    var h = e.$R,
                        i, j, k, l;
                    switch (f) {
                        case n:
                            i = J(h[a] + h[c], g.x), j = J(h[b] + h[d], g.y), k = K(g.x - h[a] - h[c]), l = K(g.y - h[b] - h[d]);
                            break;
                        case o:
                            i = h[a], j = J(h[b] + h[d], g.y), k = h[c], l = K(g.y - h[b] - h[d]);
                            break;
                        case t:
                            i = J(h[a], g.x), j = J(h[b] + h[d], g.y), k = K(g.x - h[a]), l = K(g.y - h[b] - h[d]);
                            break;
                        case w:
                            i = J(h[a] + h[c], g.x), j = h[b], k = K(g.x - h[a] - h[c]), l = h[d];
                            break;
                        case z:
                            i = J(h[a], g.x), j = h[b], k = K(g.x - h[a]), l = h[d];
                            break;
                        case G:
                            i = J(h[a] + h[c], g.x), j = J(h[b], g.y), k = K(g.x - h[a] - h[c]), l = K(g.y - h[b]);
                            break;
                        case S:
                            i = h[a], j = J(h[b], g.y), k = h[c], l = K(g.y - h[b]);
                            break;
                        case T:
                            i = J(h[a], g.x), j = J(h[b], g.y), k = K(g.x - h[a]), l = K(g.y - h[b])
                    }
                    return new p(i, j, k, l)
                }
                function ha(a) {
                    var b = D(a),
                        c = b.position();
                    return new p(c.left, c.top, b[Y](), b[Z]())
                }
                function ia(a, b, c, d, e, f) {
                    D(a).css([m, i, Y, Z], [
                        [d - 1],
                        [c - 1], e, f]).addClass(Ea).appendTo(b)
                }
                function ja(a, b) {
                    if (!a._R) return E;
                    var c = {
                        inMoving: !1
                    };
                    return D(b.target).attr("resizeDirection") || (c.inMoving = !0), c
                }
                function ka(a) {
                    var b, c, d, e, f, g = a,
                        h = g.kj,
                        i = g.WE,
                        j = g.aS,
                        k = h.frozenTrailingRowCount(),
                        l = h.frozenTrailingColumnCount(),
                        m = h.am(),
                        n = m.Ft(i, j),
                        o = g.YR,
                        p = o[_](),
                        q = o[ba](),
                        r = o[ea](),
                        s = o[ga](),
                        t = h.frozenRowCount(),
                        u = h.frozenColumnCount(),
                        v = h.getRowCount(3) - k - 1,
                        w = h.getColumnCount(3) - l - 1;
                    return i === Q ? (t > 0 && (b = h.getViewportTopRow(i), (p < t || b === t) && (n.y -= m.fs, n[Z] += m.fs)), k > 0 && (c = h.getViewportBottomRow(i), r > v && c === v && (n[Z] += m.gs))) : i === Q - 1 ? (b = h.getViewportTopRow(i + 1), (r >= b || b === t) && (f = m.Ft(i + 1, j), n[Z] += f[Z])) : i === Q + 1 && (c = h.getViewportBottomRow(i - 1), (p <= c || c === v) && (f = m.Ft(i - 1, j), n.y = f.y, n[Z] += f[Z])), j === Q ? (u > 0 && (d = h.getViewportLeftColumn(j), (q < u || d === u) && (n.x -= m.hs, n[Y] += m.hs)), h.frozenTrailingColumnCount() > 0 && (e = h.getViewportRightColumn(j), (s > w || e === w) && (n[Y] += m.js))) : j === Q - 1 ? (d = h.getViewportLeftColumn(j + 1), (s >= d || d === u) && (f = m.Ft(i, j + 1), n[Y] += f[Y])) : j === Q + 1 && (e = h.getViewportRightColumn(j - 1), (q <= e || e === w) && (f = m.Ft(i, j - 1), n.x = f.x, n[Y] += f[Y])), n
                }
                function la(a, b, c, d, e) {
                    var f = ha(a);
                    D(a).css([m, i, Y, Z], [f.y + c, f.x + b, f[Y] + d, f[Z] + e])
                }
                function ma(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p = a;
                    if (p.bS) {
                        b = p.$F, c = ka(p), d = p.cS, e = p.$R, f = e.direction, b = new q(b.x - c.x, b.y - c.y), g = fa(p, f, b), e.endX = g.x, e.endY = g.y, e.endWidth = g[Y], e.endHeight = g[Z], h = ha(d), i = g.y - h.y, j = g.x - h.x, k = g[Y] - h[Y], l = g[Z] - h[Z], la(d, j, i, k, l), m = p.dS;
                        for (n in m) B(m, n) && (o = m[n], la(o.moveResizeDiv, j, i, k, l))
                    }
                }
                function na(a, b) {
                    var c, d = a.kj;
                    d && (c = d.RF(b), c === !1 && u.nl(b))
                }
                function oa(c) {
                    var d, i, j, k, l, m, n, o = c,
                        p = o.kj,
                        q = o.eS;
                    if (q) {
                        if (d = y(p, q[g], p.getViewportTopRow(o.WE), !0), i = y(p, q[h], p.getViewportLeftColumn(o.aS), !1), j = q[e] - q[a] + (q[e] > q[a] ? i : -1 * i), k = q[f] - q[b] + (q[f] > q[b] ? d : -1 * d), 0 === j && 0 === k) return;
                        l = [], l.push(o.YR.name()), m = o.dS;
                        for (n in m) B(m, n) && l.push(n);
                        p.wu().execute({
                            cmd: "dragCopyFloatingObjects",
                            sheetName: p.name(),
                            floatingObjects: l,
                            offsetX: j,
                            offsetY: k
                        })
                    }
                }
                function pa(c) {
                    var d, i, j, k, l, m, n, o = c,
                        p = o.kj,
                        q = o.eS,
                        r = p.zoom();
                    if (q) {
                        d = y(p, q[g], p.getViewportTopRow(o.WE), !0), i = y(p, q[h], p.getViewportLeftColumn(o.aS), !1), j = q[e] - q[a] + (q[e] > q[a] ? i : -1 * i), k = q[f] - q[b] + (q[f] > q[b] ? d : -1 * d), j /= r, k /= r, l = [], l.push(o.YR.name()), m = o.dS;
                        for (n in m) B(m, n) && l.push(n);
                        p.wu().execute({
                            cmd: "moveFloatingObjects",
                            sheetName: p.name(),
                            floatingObjects: l,
                            offsetX: j,
                            offsetY: k
                        })
                    }
                }
                function qa(c) {
                    var d, i, j, k, l, m, n, o, p, q = c,
                        r = q.kj,
                        s = r.zoom(),
                        t = q.YR,
                        u = q.$R;
                    if (u) {
                        d = y(r, u[g], r.getViewportTopRow(q.WE), !0), i = y(r, u[h], r.getViewportLeftColumn(q.aS), !1), j = u[e] - u[a] + (u[e] > u[a] ? i : -1 * i), j /= s, k = u[f] - u[b] + (u[f] > u[b] ? d : -1 * d), k /= s, l = (u.endWidth + i) / s - t[Y](), m = (u.endHeight + d) / s - t[Z](), n = [], n.push(t.name()), o = q.dS;
                        for (p in o) B(o, p) && n.push(p);
                        r.wu().execute({
                            cmd: "resizeFloatingObjects",
                            sheetName: r.name(),
                            floatingObjects: n,
                            offsetX: j,
                            offsetY: k,
                            offsetWidth: l,
                            offsetHeight: m
                        })
                    }
                }
                function Oa(a, b, c) {
                    var d, e, f, g, h, i = a,
                        j = i.cS;
                    if (j) {
                        d = c.x - b.x, e = c.y - b.y, Xa(j, d, e), f = i.dS;
                        for (g in f) B(f, g) && (h = f[g], Xa(h.moveResizeDiv, d, e))
                    }
                }
                function Xa(a, b, c) {
                    var d = D(a),
                        e = D(a).position();
                    d.css([m, i], [e[m] + c, e[i] + b])
                }
                function Ya(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m = a,
                        n = m.eS;
                    n && (b = m.YR, c = m.kj, d = c.am(), e = d[Y] - d.Br - d.zr, f = d[Z] - d.Cr - d.Ar, g = n.startX, h = n.startY, i = b.position().x, j = b.position().y, k = b[Y](), l = b[Z](), i + n.endX - g < 0 && (n.endX = g - i), j + n.endY - h < 0 && (n.endY = h - j), i + k + n.endX - g > e && (n.endX = e + g - i - k), j + l + n.endY - h > f && (n.endY = f + h - j - l), n.startTopRow = c.getViewportTopRow(m.WE), n.startLeftColumn = c.getViewportLeftColumn(m.aS))
                }
                function Za(a) {
                    var b, c, d, e, f, g = a,
                        h = g.$R;
                    h && (b = g.kj, c = b.am(), d = c[Y] - c.Br - c.zr, e = c[Z] - c.Cr - c.Ar, f = new p(h.endX, h.endY, h.endWidth, h.endHeight), f = f.getIntersect(0, 0, d, e), h.endX = f.x, h.endY = f.y, h.endWidth = f[Y], h.endHeight = f[Z], h.startTopRow = b.getViewportTopRow(g.WE), h.startLeftColumn = b.getViewportLeftColumn(g.aS))
                }
                function $a(a) {
                    var b, c, d, e, f, g, h, i, j = x(L),
                        k = D(j),
                        l = a;
                    return k.addClass(Ca).addClass(wa).attr(P, M).css(N, ra).bind("mousedown", function(a) {
                        l.AD(a)
                    }).bind(X, function(a) {
                        l.BD(a)
                    }).bind(aa, function(a) {
                        l.CD(a)
                    }), j.addEventListener("mousewheel", function(a) {
                        na(l, a)
                    }, !1), j.addEventListener("DOMMouseScroll", function(a) {
                        na(l, a)
                    }, !1), b = D(x(L)).addClass(Ga + " " + Ia + " " + La + " " + Ha), c = D(x(L)).addClass(Ga + " " + Ia + " " + Ma + " " + Ha), d = D(x(L)).addClass(Ga + " " + Ia + " " + Na + " " + Ha), e = D(x(L)).addClass(Ga + " " + Ja + " " + La + " " + Ha), f = D(x(L)).addClass(Ga + " " + Ja + " " + Na + " " + Ha), g = D(x(L)).addClass(Ga + " " + Ka + " " + La + " " + Ha), h = D(x(L)).addClass(Ga + " " + Ka + " " + Ma + " " + Ha), i = D(x(L)).addClass(Ga + " " + Ka + " " + Na + " " + Ha), k.append(b).append(c).append(d).append(e).append(f).append(g).append(h).append(i), ca.ao(l, "init", j), j
                }
                function _a(a) {
                    var b, c, d, e, f, g, h, j, k = a,
                        l = k.hS && k._R;
                    if (l && !k.cS) {
                        b = k.iS = x(L), k.cS = x(L), k.dS = {}, k.gS.jS.each(function(a) {
                            var b, c = a.YR;
                            c && c.name() !== k.YR.name() && c.isSelected() && !k.dS[c.name()] && (b = a._R, k.dS[c.name()] = {
                                offsetX: b.x - l.x,
                                offsetY: b.y - l.y,
                                height: b[Z],
                                width: b[Y],
                                moveResizeDiv: x(L)
                            })
                        }), c = ka(k), d = D(b), d.css([N, m, i, Y, Z, va], [sa, c.y, c.x, c[Y], c[Z], "rgba(255,255,255,0.01)"]).addClass(Da).bind(X, function(a) {
                            k.BD(a)
                        }).bind(aa, function(a) {
                            k.CD(a)
                        }), e = l.y - c.y, f = l.x - c.x, ia(k.cS, b, f, e, l[Y], l[Z]), g = k.dS;
                        for (h in g) B(g, h) && (j = g[h], ia(j.moveResizeDiv, k.iS, f + j.offsetX, e + j.offsetY, j[Y], j[Z]));
                        k.Ks && D(k.Ks).append(k.iS)
                    }
                }
                function ab(a) {
                    var b = a;
                    b.RB || (D(A).bind(X + U, function(a) {
                        b.BD(a)
                    }).bind(aa + U, function(a) {
                        b.CD(a)
                    }), b.RB = !0)
                }
                function bb(a) {
                    var b = a;
                    b.RB && (b.RB = !1, D(A).unbind(X + U).unbind(aa + U))
                }
                function cb(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m, p, q, r, s, u = D(Fa, b);
                    u.removeClass(Aa), c = a, d = ha(c.hS), e = c.kS, f = c.YR, c.lS && (e = c.lS), g = ca.mS, h = ha(e), i = h.x, j = h.y, k = d[Z] - h.y - h[Z], l = d[Y] - h.x - h[Y], m = 0, p = g + 2, q = H(g / 2 + 1), "1" === f.typeName && (r = f.borderWidth(), s = f.borderStyle(), Ab(s) || (r = 0), r >= q && (m = r - q), k = d[Z] - j - h[Z] - r, l = d[Y] - i - h[Y] - r, i += r, j += r), i > 0 ? (db(c, j > 0, Pa, m, m, F, F, "nw" + V, n), db(c, d[Z] > 0, Qa, m, (h[Z] - p) / 2 + j, F, F, "w" + V, w), db(c, k > 0, Ra, m, F, F, m, "ne" + V, G)) : (eb(c, Pa), eb(c, Qa), eb(c, Ra)), db(c, j > 0, Sa, (h[Y] - p) / 2 + i, m, F, F, "n" + V, o), db(c, k > 0, Ta, (h[Y] - p) / 2 + i, F, F, m, "n" + V, S), l > 0 ? (db(c, j > 0, Ua, F, m, m, F, "sw" + V, t), db(c, d[Z] > 0, Va, F, (h[Z] - p) / 2 + j, m, F, "w" + V, z), db(c, k > 0, Wa, F, F, m, m, "se" + V, T)) : (eb(c, Ua), eb(c, Va), eb(c, Wa)), c.ZR = !0
                }
                function db(a, b, c, d, e, f, g, h, j) {
                    var l, n = a,
                        o = D(c, n.hS);
                    b ? (l = ca.mS, o.css([i, m, k, C, Y, Z, W], [d, e, f, g, l, l, h]).addClass(za).attr("resizeDirection", j)) : eb(n, c)
                }
                function eb(a, b) {
                    D(b, a.hS).removeClass(za).addClass(Aa)
                }
                function fb(a, b) {
                    D(Fa, b).removeClass(za).addClass(Aa), a.ZR = !1
                }
                function gb(a) {
                    var b, c, d, e, f, g = a,
                        h = g.YR,
                        i = h.src(),
                        j = h.pictureStretch(),
                        k = s.Om(h.sheet(), h.backColor()),
                        l = g.kS;
                    i && l && (b = D(l), g.XR !== i && (g.XR = i, b.css([va + "-image", va + "-repeat"], ["url('" + i + "')", "no-repeat"])), b.css(va + "-color", k), j !== E && j !== F && h.oS && (c = h.getOriginalWidth(), d = h.getOriginalHeight(), e = b[Y](), f = b[Z](), u.ql(l, e, f, c, d, j)))
                }
                function hb(a, b, c) {
                    var d, e, f, g, h = a.lS,
                        j = a.YR,
                        l = j.borderWidth(),
                        n = j.borderStyle(),
                        o = s.Om(j.sheet(), j.borderColor()),
                        p = j.borderRadius(),
                        q = 0,
                        r = H(ca.mS / 2 + 1);
                    Ab(n) || (l = 0), l < r && (q = r - l), d = q, e = q, f = q, g = q, r = I(l, r), b.x < 0 ? d += b.x - r : (d += b.x < r ? b.x - r : 0, g = c[Y] - d - b[Y] - 2 - 2 * l), b.y < 0 ? e += b.y - r : (e += b.y < r ? b.y - r : 0, f = c[Z] - e - b[Z] - 2 - 2 * l), D(h).css([ta, i, m, C, k, R + "-width", R + "-style", R + "-color", R + "-radius"], [ua, d, e, f, g, l, n, o, p])
                }
                return ca.prototype = {
                    AD: function(a) {
                        var b, c, d, e, f, g, h, i, j, k, m = this,
                            n = m.kj,
                            o = m.YR,
                            p = n.ITa.Ky,
                            r = m.WE,
                            s = m.aS;
                        if (n.ER(o) && n.endEdit() && (n.zt(!0), b = {
                                e: a,
                                r: E
                            }, ca.ao(m, "preProcessMouseDown", b), !b.r)) {
                            if (0 === a.button || 2 === a.button) {
                                if (c = o.isSelected(), a.ctrlKey || a.shiftKey ? o.isSelected(!c) : c || (n.uQ(), o.isSelected(!0)), c || l.Vl.Zl(n), p && p.vQ(), n.EJ(), 2 === a.button) return;
                                if (d = n.mm, e = n.Vs(), f = new q(a.pageX - e.left, a.pageY - e.top), g = ja(m, a), !o.allowMove() && (!o.allowResize() || g.inMoving)) return;
                                m.$F = f, m.pS = !0, m.bS = g, g.inMoving ? (h = {}, h.startTopRow = n.getViewportTopRow(r), h.startLeftColumn = n.getViewportLeftColumn(s), h.startX = f.x, h.startY = f.y, m.eS = h) : (_a(m), i = {}, j = ha(m.cS), i.startX = j.x, i.startY = j.y, i.startWidth = j[Y], i.startHeight = j[Z], i.startTopRow = n.getViewportTopRow(r), i.startLeftColumn = n.getViewportLeftColumn(s), i.cursor = a.target.style.cursor, i.direction = D(a.target).attr("resizeDirection"), m.$R = i), ab(m), k = n.hitTest(f.x, f.y), d.rG = {
                                    KG: k.rowViewportIndex,
                                    MG: k.colViewportIndex,
                                    sG: k.hitTestType
                                }, d.$F = f, d.qG(), d.O3 = !0
                            }
                            return !1
                        }
                    },
                    BD: function(a) {
                        var b, c, d, e, f = this,
                            g = f.kj,
                            h = f.hS,
                            i = f.iS;
                        if (g.ER(f.YR) && (b = {
                                e: a,
                                r: E
                            }, ca.ao(f, "preProcessMouseMove", b), !b.r)) return g.dG ? (h && D(h).css(W, "default"), !0) : (c = g.mm, d = g.Vs(), e = new q(a.pageX - d.left, a.pageY - d.top), f.pS && (f.bS.inMoving ? (f.qS = !0, _a(f), Oa(f, f.$F, e), D(i).css(W, O)) : f.YR.allowResize() && (f.kv = !0, ma(f), D(i).css(W, f.$R[W])), (f.qS || f.kv) && (f.$F = e, c.$F = e, c.NG(), D(A.body).addClass(wa).attr(P, M))), !1)
                    },
                    CD: function(a) {
                        var b, c, d, e, f, g = this,
                            h = g.kj,
                            i = h.mm,
                            j = g.YR,
                            k = g.hS,
                            l = g.bS;
                        if (h.ER(j) && (b = {
                                e: a,
                                r: E
                            }, ca.ao(g, "preProcessMouseUp", b), !b.r)) return h.dG ? (D(k).css(W, O), !0) : (i.O3 = !1, i.RG(), c = h.Vs(), d = new q(a.pageX - c.left, a.pageY - c.top), e = g.eS, e && (e.endX = d.x, e.endY = d.y), l && (f = j.fixedPosition(), l.inMoving && g.qS ? (f && Ya(g), a.ctrlKey ? oa(g) : pa(g)) : g.kv && (f && Za(g), qa(g)), D(A.body).removeClass(wa)), g.rS(), !1)
                    },
                    rS: function() {
                        var a = this;
                        a.$R = E, a.eS = E, a.dS = E, D(a.iS).remove(), a.cS = E, a.pS = !1, bb(a), a.qS = !1, a.kv = !1
                    },
                    YR: function() {
                        return this.YR
                    },
                    yl: function(a, b) {
                        var c, d, e, f, g, h, j, k, l = this,
                            n = l.YR,
                            o = l.kj;
                        if (n) {
                            if (c = !1, l.sS = a, d = l.hS, !d) {
                                if (a.width <= 0 || a.height <= 0) return;
                                d = l.hS = $a(l), tb(n, d), e = o.parent, e && (f = l.Ks = e.xv(), f && D(f).append(d))
                            }
                            g = l.kS, g || (g = l.kS = n.WR(l.WE, l.aS), "1" === n.typeName ? (l.lS = x(L), D(l.lS).addClass(wa + " " + Ba).attr(P, M), d.appendChild(l.lS), l.lS.appendChild(g)) : (d.appendChild(g), c = !0)), l.lS && (hb(l, b, a), b.x = 0, b.y = 0), h = D(g), j = n.isLocked() && o.options.isProtected, D(d).css([m, i, Y, Z], [a.y, a.x, a[Y], a[Z]]), h.css([m, i, Y, Z, W], [b.y, b.x, b[Y], b[Z], j ? "default" : O]), l.Tka = a, n.refreshContent && n.refreshContent(g), l.lS && gb(l), n.isSelected() ? (h.removeClass(ya).addClass(xa), n.allowResize() ? cb(l, d) : l.ZR && fb(l, d)) : (h.removeClass(xa).addClass(ya), fb(l, d)), c && (k = g.firstChild, o.Wq(r.FloatingObjectLoaded, {
                                sheet: o,
                                sheetName: o.name(),
                                floatingObject: n,
                                element: k
                            }))
                        }
                    },
                    no: function() {
                        var a = this,
                            b = a.YR,
                            c = a.hS,
                            d = a.iS,
                            e = a.kS;
                        ca.ao(a, "dispose"), e && b.VR && (b.VR(e), b.no(!1)), c && (D(c).remove(), a.hS = E), d && (D(d).remove(), a.iS = E)
                    }
                }, ca.mS = 7, ca
            }(), g = function() {
                function a(a) {
                    this.kj = a, this.jS = new z
                }
                function b(a) {
                    a.zR().forEach(function(a) {
                        a.dynamicMove() ? mb(a) : qb(a), a.dynamicSize() ? zb(a) : rb(a)
                    })
                }
                function c(a, b, c) {
                    var d, e, f, g, h, i, j, k = a.kj,
                        l = k.it(c),
                        m = 0,
                        n = 0,
                        o = 0,
                        q = 0;
                    return l && l.length > 0 && (d = l[0], e = l[l.length - 1], m = d.x, o = e.x + e[Y] - m), f = k.jt(b), f && f.length > 0 && (g = f[0], h = f[f.length - 1], n = g.y, q = h.y + h[Z] - n), i = k.am(), j = i.Ft(b, c), j.getIntersect(m, n, o, q) || new p(0, 0, 0, 0)
                }
                function d(a, c, d, e) {
                    var f, g, h, i, j, k, l, m, n = a,
                        o = n.kj,
                        p = new z,
                        q = o.wr;
                    return q.isNeedToUpdateLayout && (b(q), q.isNeedToUpdateLayout = !1), f = o.am(), g = o.ss, h = o.it(d), i = o.jt(c), h.length <= 0 || i.length <= 0 ? p : (j = h[0], k = h[h.length - 1], l = i[0], m = i[i.length - 1], q.zR().forEach(function(a) {
                        var b, c, d, n, o, q, r, s, t, u, v, w, x;
                        if (a && a.isVisible()) {
                            if (a.fixedPosition()) d = a.position(), b = d.x * e + f.kt, c = d.y * e + f.nt;
                            else {
                                if (n = a[ba](), o = h.findCol(n)) b = o.x;
                                else if (n < j.col) for (b = j.x, q = j.col - 1; q >= n; q--) b -= g._m(q);
                                else for (b = k.x + k[Y], r = k.col + 1; r <= n; r++) b += g._m(r);
                                if (b += a[ca]() * e, s = a[_](), t = i.findRow(s), t) c = t.y;
                                else if (s < l.row) for (c = l.y, u = l.row - 1; u >= s; u--) c -= g.Sl(u);
                                else for (c = m.y + m[Z], v = m.row + 1; v <= s; v++) c += g.Sl(v);
                                c += a[aa]() * e
                            }
                            w = H(a[Y]() * e), x = H(a[Z]() * e), p.push({
                                name: a.name(),
                                x: b,
                                y: c,
                                width: w,
                                height: x
                            })
                        }
                    }), p)
                }
                return a.prototype = {
                    no: function() {
                        var a = this.jS;
                        a.each(function(a) {
                            a.no()
                        }), a.empty()
                    },
                    yl: function(a, b, e) {
                        var g, h, i, j, k, l, m, n, o, q;
                        if (!(a < 0 || b < 0)) {
                            for (g = this, h = g.kj, i = g.jS, j = h.wr, k = d(g, a, b, e), l = [], i.each(function(a) {
                                k.find(a.name) || l.push(a)
                            }), m = 0, n = l.length; m < n; m++) o = l[m], o.gS = E, i.remove(o.name), o.no();
                            q = h.parent && h.parent.options.useTouchLayout, f.mS = q ? 11 : 7, k.each(function(d) {
                                var e, k, l, m, n, o, q, r, s, t, u, v, w, x, y, z, A, B = j.NR(d.name),
                                    C = H(f.mS / 2 + 1);
                                B && "1" === B.typeName && (e = B.borderWidth(), k = B.borderStyle(), Ab(k) || (e = 0), e > C && (C = e)), l = c(g, a, b), m = 1, n = d.x - C - m, o = d.y - C - m, q = d[Y] + 2 * C + 2 * m, r = d[Z] + 2 * C + 2 * m, s = I(l.y, o), t = I(l.x, n), u = r, v = q, w = C, x = C, y = -1 * C - m, w = o - s + w, x = n - t + x, w <= 0 ? (u += w, u += y) : w < C && w > 0 && (u -= C - w), x <= 0 ? (v += x, v += y) : x < C && x > 0 && (v -= C - x), z = i.find(d.name), z || (z = new f(j.NR(d.name), h), z.gS = g, i.push(z)), z._R = d, z.WE = a, z.aS = b, A = new p(l.x, l.y, l[Y], l[Z]), z.yl(new p(t, s, v, u).getIntersectRect(A) || new p(t, s, 0, 0), new p(x, w, d[Y], d[Z]))
                            })
                        }
                    }
                }, a
            }(), h = {
                FloatingObject: e,
                FloatingObjectCollection: yb,
                tS: f,
                uS: jb,
                vS: ib,
                wS: hb
            }, D.extend(h, o), i = {
                init: function() {
                    var a = this,
                        b = a.$oa = [];
                    a.Zoa = function(a) {
                        b.forEach(function(b) {
                            b.Wva && b.Wva(a)
                        })
                    }, a.wr = a.ITa.wr, a.pictures = new yb(a, "1"), a.floatingObjects = new yb(a, "0")
                },
                dispose: function(a) {
                    var b = this;
                    bb(b), D.each(b.wr.zR(), function(b, c) {
                        c.no(a)
                    }), D(b.Ws()).unbind("mousedown.fos"), b.unbind(r.TableFiltered + _a), b.unbind(r.RangeFiltered + _a)
                },
                setHost: function(a) {
                    if (a) {
                        var b = this;
                        a.bind("mousedown" + _a, function() {
                            b.uQ()
                        }), b.bind(r.TableFiltered + _a, function() {
                            b.AR()
                        }), b.bind(r.RangeFiltered + _a, function() {
                            b.AR()
                        })
                    }
                },
                onLayoutChanged: function(a) {
                    var b = a.changeType,
                        c = a.row,
                        d = a.rowCount,
                        e = a.col,
                        f = a.colCount,
                        g = this.wr;
                    "addRows" === b ? cb(g, c, d) : "deleteRows" === b ? db(g, c, d) : "addColumns" === b ? eb(g, e, f) : "deleteColumns" === b && fb(g, e, f)
                },
                paint: function(a) {
                    var b = this,
                        c = a.clipRect;
                    b.QP || (b.IR = function(a, c) {
                        var d, e;
                        return b.FR || (b.FR = []), d = b.FR[a], d || (b.FR[a] = []), e = b.FR[a][c], e || (b.FR[a][c] = new g(b)), e = b.FR[a][c]
                    }, b.QP = function(a, b) {
                        var c, d, e, f, g, h = this;
                        if (!h.fI && h.wr) for (c = h.am(), b !== E && void 0 !== b || (b = h.zoom()), e = 0; e <= 2; e++) for (f = 0; f <= 2; f++) d = c.Ft(e, f), d && (g = h.IR(e, f), g && g.yl(e, f, b))
                    }), b.QP(c)
                },
                lastNonNullRowAndCol: function() {
                    var a = 0,
                        b = 0,
                        c = this.wr;
                    return c && c.zR().forEach(function(c) {
                        c && (c[ea]() > a && (a = c[ea]()), c[ga]() > b && (b = c[ga]()))
                    }), {
                        lastNonNullRow: a,
                        lastNonNullCol: b
                    }
                },
                toJson: function(a, b) {
                    var c, d = b && b.ignoreStyle;
                    d || (c = this.wr.toJSON(), c.length > 0 && (a.floatingObjects = c))
                },
                fromJson: function(a, c, d) {
                    var e, f, g, h = d && d.ignoreStyle;
                    h || (e = this, e.wr = new b(e), e.ITa.wr = e.wr, f = a && a.floatingObjectArray, g = c ? f && f.floatingObjects : a.floatingObjects, g && e.wr.fromJSON(g, c))
                },
                preProcessMouseDown: function() {
                    this.uQ()
                },
                processKeyDown: function(a) {
                    var b, c, d, e, f = this.wr;
                    if (f) for (b = f.zR(), d = b.length, c = 0; c < d; c++) if (e = b[c], e.isSelected()) return void(a.r = !0)
                }
            }, l.Worksheet.$n(T, i), j = {
                init: function() {
                    l.Commands.JR(this.commandManager())
                }
            }, l.Workbook.$n(T, j), k = l.lUa, D.extend(k.prototype, {
                BUa: function(a, b, c) {
                    var d, e = this.zTa;
                    e && (d = e.CUa, d || (d = e.CUa = []), d.push({
                        type: "property",
                        floatingObject: a,
                        name: b,
                        value: c
                    }))
                },
                AUa: function() {
                    var a, b, c, d = this.zTa;
                    d && (a = d.CUa, a || (a = d.CUa = []), b = {}, c = this.wr, D.each(c.QR, function(a, c) {
                        b[a] = c
                    }), a.push({
                        type: "collection",
                        floatingObjects: b
                    }))
                },
                DUa: function(a) {
                    var b, c, d, e, f, g;
                    if (a) for (b = this.wr, c = a.length - 1; c >= 0; c--) d = a[c], "collection" === d.type ? b.QR = d.floatingObjects : "property" === d.type && (e = d.floatingObject, f = d.name, g = d.value, e[f](g))
                }
            }), k.$n(T, {
                init: function() {
                    this.wr = new b(this.kj)
                },
                undo: function(a) {
                    var b = a.CUa;
                    b && this.DUa(b)
                }
            }), a.exports = h
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j = c(87),
                k = c(26),
                l = j.GC$,
                m = l.isArray,
                n = j.Commands,
                o = k.k.ac,
                p = n.ActionBase,
                q = null,
                r = Math.min,
                s = k.j.Fa,
                t = "unSelectAllFloatingObjects",
                u = "deleteFloatingObjects",
                v = "navigationNextFloatingObject",
                w = "navigationPreviousFloatingObject",
                x = "cutFloatingObjects",
                y = "copyFloatingObjects",
                z = "pasteFloatingObjects",
                A = "dragCopyFloatingObjects",
                B = "selectAllFloatingObjects",
                C = "moveFloatingObjects",
                D = "moveFloatingObjectsUp",
                E = "moveFloatingObjectsDown",
                F = "moveFloatingObjectsLeft",
                G = "moveFloatingObjectsRight",
                H = "resizeFloatingObjects",
                I = "isSelected",
                J = "name",
                K = n.h4,
                L = function() {
                    function a(a) {
                        return "string" == typeof a[J] ? a[J] : a[J]()
                    }
                    function b() {
                        this.rM = {}
                    }
                    return b.prototype = {
                        push: function(b) {
                            this.rM[a(b)] = b
                        },
                        remove: function(a) {
                            delete this.rM[a]
                        },
                        find: function(a) {
                            return this.rM[a]
                        },
                        empty: function() {
                            delete this.rM, this.rM = {}
                        },
                        each: function(a) {
                            var b, c = this.rM;
                            for (b in c) c.hasOwnProperty(b) && a(c[b])
                        },
                        isEmpty: function() {
                            var a, b = this.rM;
                            for (a in b) if (b.hasOwnProperty(a)) return !1;
                            return !0
                        }
                    }, b
                }();

            function M(a) {
                var b = a.wr,
                    c = !1;
                return b && b.zR().forEach(function(a) {
                    a && a[I]() && (c = !0)
                }), c
            }
            function N(a, b) {
                var c = o(b),
                    d, e;
                if (o(b) > 0) for (d = 0; d < c; d++) e = a.wr.NR(b[d]), e && e.isSelected(!0)
            }
            b = function(a) {
                l.inherit(b, a);

                function b() {
                    a.call(this)
                }
                var c = {
                    init: function(a, b) {
                        var c = this;
                        c.kj = a, c.VQ = b
                    },
                    canExecute: function() {
                        return !!M(this.kj)
                    },
                    canUndo: function() {
                        var a = n.bWa(this.kj.name()),
                            b = this.VQ[a],
                            c = b && b.CUa;
                        return !!(c && o(c) > 0) || (c = b && b.EUa, !! (c && o(c) > 0))
                    }
                };
                return l.extend(b.prototype, c), b
            }(p), d = function(a) {
                l.inherit(b, a);

                function b(b, c) {
                    a.call(this), this.init(b, c)
                }
                var c = {
                    constructor: b,
                    execute: function() {
                        var a, b, c, d, e, f, g = this,
                            h = !1,
                            i = g.kj,
                            j = g.VQ,
                            k = j.floatingObjects;
                        if (g.canExecute() && m(k)) {
                            for (i.ITa.startTransaction(), g.Lz(i, !0), a = i.wr, b = 0, c = o(k); b < c; b++) d = a.NR(k[b]), d && (e = i.slicers, g.zS(d) && e && e.vV(d[J]()), a.Fb(k[b], !0), d[I](!1));
                            i.GJ(), g.Mz(i, !0), f = n.bWa(i.name()), j[f] = i.ITa.endTransaction(), h = o(k) > 0
                        }
                        return h
                    },
                    undo: function() {
                        var a, b = this,
                            c = b.VQ,
                            d = b.kj;
                        return !!b.canUndo() && (b.Lz(d, !0), a = n.bWa(d.name()), d.ITa.undo(c[a]), d.EJ(), b.Mz(d, !0), !0)
                    },
                    zS: function(a) {
                        return a && "Slicer" === a.typeName
                    }
                };
                return l.extend(b.prototype, c), b
            }(b), e = function(a) {
                l.inherit(b, a);

                function b(b, c) {
                    var d = this;
                    a.call(d), d.init(b, c)
                }
                var c = {
                    constructor: b,
                    canExecute: function() {
                        return !0
                    },
                    execute: function() {
                        var a, b, c, d, e, f, g = this,
                            h = !1,
                            i = g.VQ,
                            k = i.floatingObjects,
                            l = g.kj;
                        if (g.canExecute() && m(k)) {
                            for (l.ITa.startTransaction(), g.Lz(l, !0), a = l.wr, b = 0, c = o(k); b < c; b++) d = a.NR(k[b]), e = d.position(), d.position(new j.Point(e.x + i.offsetX, e.y + i.offsetY));
                            g.Mz(l, !0), f = n.bWa(l.name()), i[f] = l.ITa.endTransaction(), h = o(k) > 0
                        }
                        return h
                    },
                    undo: function() {
                        var a, b = this,
                            c = b.kj;
                        return !!b.canUndo() && (b.Lz(c, !0), a = n.bWa(c.name()), c.ITa.undo(b.VQ[a]), b.Mz(c, !0), !0)
                    }
                };
                return l.extend(b.prototype, c), b
            }(b), f = function(a) {
                l.inherit(b, a);

                function b(b, c) {
                    var d = this;
                    a.call(d), d.init(b, c)
                }
                var c = {
                    execute: function() {
                        var a, b, c, d, e, f, g = this,
                            h = !1,
                            i = g.VQ,
                            k = i.floatingObjects,
                            l = g.kj;
                        if (N(l, k), g.canExecute() && m(k)) {
                            for (l.ITa.startTransaction(), g.Lz(l, !0), a = l.wr, b = 0, c = o(k); b < c; b++) d = a.NR(k[b]), e = d.position(), d.width(d.width() + i.offsetWidth), d.height(d.height() + i.offsetHeight), d.position(new j.Point(e.x + i.offsetX, e.y + i.offsetY));
                            g.Mz(l, !0), f = n.bWa(l.name()), i[f] = l.ITa.endTransaction(), h = o(k) > 0
                        }
                        return h
                    },
                    undo: function() {
                        var a, b = this,
                            c = b.kj;
                        return !!b.canUndo() && (b.Lz(c, !0), a = n.bWa(c.name()), c.ITa.undo(b.VQ[a]), b.Mz(c, !0), !0)
                    }
                };
                return l.extend(b.prototype, c), b
            }(b), g = function(a) {
                l.inherit(b, a);

                function b() {
                    var b = this;
                    a.call(b), b.kj = q
                }
                var c = {
                    canExecute: function() {
                        var a = this,
                            b = a.VQ.floatingObjects;
                        return !!(o(b) > 0 && a.ES(b))
                    },
                    canUndo: function() {
                        var a = n.bWa(this.kj.name()),
                            b = this.VQ[a],
                            c = b && b.CUa;
                        return !!(c && o(c) > 0)
                    },
                    ES: function(a) {
                        var b, c, d, e = this,
                            f = e.kj,
                            g = f.wr;
                        for (b = 0, c = o(a); b < c; b++) if (d = g.NR(a[b]), d && !f.ER(d)) return !1;
                        return !0
                    },
                    zS: function(a) {
                        return a && "Slicer" === a.typeName
                    }
                };
                return l.extend(b.prototype, c), b
            }(p), h = function(a) {
                l.inherit(b, a);

                function b(b, c) {
                    var d = this;
                    a.call(d), d.OFFSET = 15, d.kj = b, d.VQ = c, s(c.clipboardFloatingObjectData) && (c.clipboardFloatingObjectData = c.fromSheet.CR)
                }
                var c = {
                    execute: function() {
                        var a, b, c, d, e, f, g, h, i, k, l, m, p, q, s, t, u, v, w, x, y, z, A, B, C, D, E = this,
                            F = E.VQ,
                            G = F.floatingObjects;
                        if (E.canExecute()) {
                            for (a = E.kj, b = F.fromSheet, a.ITa.startTransaction(), E.Lz(a, !0), c = [], d = a.wr, e = F.clipboardFloatingObjectData, void 0 === F.Jl && (M(a) && d.zR().forEach(function(a) {
                                a && a[I]() && c.push(a)
                            }), F.Jl = E.kj.getActiveRowIndex(), F.GS = E.kj.getActiveColumnIndex()), M(a) && d.zR().forEach(function(a) {
                                a && a[I]() && a[I](!1)
                            }), f = [], i = Number.MAX_VALUE, k = i, l = i, m = [], g = 0, h = o(G); g < h; g++) p = e.find(G[g]).position(), k = r(k, p.x), l = r(l, p.y), m.push(new j.Point(p.x - k, p.y - l));
                            if (q = 0, s = 0, c.length) t = i, u = i, c.forEach(function(a) {
                                if (a) {
                                    var b = a.position();
                                    t = r(t, b.x), u = r(u, b.y)
                                }
                            }), q = t < i ? t + E.OFFSET : 0, s = u < i ? u + E.OFFSET : 0;
                            else {
                                for (v = 0; v < F.Jl; v++) s += a.Yr(v, 3);
                                for (w = 0; w < F.GS; w++) q += a.$r(w, 3)
                            }
                            for (g = 0, h = o(G); g < h; g++) x = m[g], f.push(new j.Point(q + x.x, s + x.y));
                            for (y = F.isCutting, z = b.wr, g = 0, h = o(G); g < h; g++) C = e.find(G[g]), A = C.clone(a), A.sheet(a), B = !y || z.NR(G[g]) || d.NR(G[g]) ? E.zS(A) ? a.slicers.HS(A[J]()) : d.FS() : C.name(), A[J](B), E.zS(A) && (a.slicers.Cz(A), A.width(C.width()), A.height(C.height())), A.isVisible(!0), A.position(f[g]), A[I](!0), d.Sb(A);
                            return E.Mz(a, !0), D = n.bWa(a.name()), F[D] = a.ITa.endTransaction(), !0
                        }
                        return !1
                    },
                    undo: function() {
                        var a, b, c = this;
                        return !!c.canUndo() && (a = c.kj, c.Lz(a, !0), b = n.bWa(a.name()), a.ITa.undo(c.VQ[b]), c.Mz(a, !0), !0)
                    }
                };
                return l.extend(b.prototype, c), b
            }(g), i = function(a) {
                l.inherit(b, a);

                function b(a, b) {
                    var c = this;
                    c.kj = a, c.VQ = b
                }
                var c = {
                    constructor: b,
                    execute: function() {
                        var a, b, c, d, e, f, g, h, i, k = this,
                            l = !1,
                            m = k.VQ,
                            p = m.floatingObjects,
                            q = k.kj;
                        if (k.canExecute()) {
                            for (q.ITa.startTransaction(), k.Lz(q, !0), a = q.wr, b = 0, c = o(p); b < c; b++) d = a.NR(p[b]), d && (e = d.clone(q), e.sheet(q), f = d.position(), e.position(new j.Point(f.x + m.offsetX, f.y + m.offsetY)), e[J](a.FS()), e[I](!0), d[I](!1), k.zS(e) && q.slicers && (g = e, h = q.slicers.HS(g.columnName()), g[J](h), q.slicers.Cz(g)), a.Sb(e));
                            k.Mz(q, !0), i = n.bWa(q.name()), m[i] = q.ITa.endTransaction(), l = !0
                        }
                        return l
                    },
                    undo: function() {
                        var a, b = this,
                            c = b.kj;
                        return !!b.canUndo() && (b.Lz(c, !0), a = n.bWa(c.name()), c.ITa.undo(b.VQ[a]), b.Mz(c, !0), !0)
                    }
                };
                return l.extend(b.prototype, c), b
            }(g);

            function O(a) {
                var b = [];
                return a.wr.zR().forEach(function(a) {
                    a[I]() && b.push(a[J]())
                }), b
            }
            function P(a, b, c) {
                var d, e, f, g, h = a.BR(),
                    i = h.fromSheet;
                for (h.fromSheet = a, h.isCutting = c, d = new L, e = 0, f = 0; f < o(b); f++) g = a.wr.NR(b[f]), g && (d.push(g), e++);
                return i && (i.CR = q), a.CR = d, e > 0
            }
            n[t] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = n.bT(a, b);
                    return !!M(c) && (c.suspendPaint(), c.uQ(), c.GJ(), c.resumePaint(), !0)
                }
            }, n[B] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = n.bT(a, b);
                    c.suspendPaint(), c.wr.zR().forEach(function(a) {
                        a[I](!0)
                    }), c.resumePaint()
                }
            }, n[u] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    var e, f = n.bT(a, b);
                    return c || (b.cmd || (b.cmd = u), b.floatingObjects || (e = O(f), b.floatingObjects = e)), o(b.floatingObjects) > 0 && K(a, d, b, c)
                }
            }, n[v] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c, d, e, f, g, h, i, j = n.bT(a, b);
                    if (M(j)) {
                        for (j.suspendPaint(), g = j.wr.zR(), h = g.length, f = 0; f < h; f++) {
                            if (i = g[f], d || (d = i), c) {
                                e = i;
                                break
                            }
                            i && i[I]() && (c = i)
                        }
                        return j.uQ(), e || (e = d), e && e[I](!0), j.resumePaint(), !0
                    }
                    return !1
                }
            }, n[w] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c, d, e, f, g, h, i = n.bT(a, b);
                    if (M(i)) {
                        for (i.suspendPaint(), f = i.wr.zR(), g = f.length, e = 0; e < g; e++) if (h = f[e], c || (c = h), c[I]()) d = h;
                        else if (h[I]() || (d = h), h[I]()) break;
                        return d && (i.uQ(), d[I](!0)), i.resumePaint(), !0
                    }
                    return !1
                }
            }, n[x] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c, d = n.bT(a, b),
                        e = [];
                    return d.wr.zR().forEach(function(a) {
                        a[I]() && e.push(a[J]())
                    }), o(e) > 0 && (P(d, e, !0), c = {
                        cmd: u,
                        sheetName: d.name(),
                        floatingObjects: e
                    }, d.wu().execute(c))
                }
            }, n[y] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = n.bT(a, b),
                        d = [];
                    return c.wr.zR().forEach(function(a) {
                        a[I]() && d.push(a[J]())
                    }), P(c, d, !1)
                }
            }, n[z] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    var d, e, f, g, i = n.bT(a, b);
                    return !i.isEditing() && (d = i.BR(), e = d.fromSheet, !! (f = e && e.CR) && (g = [], f.each(function(a) {
                            g.push(a[J]())
                        }), 0 !== o(g) && (!i.Js && (c || (b.cmd || (b.cmd = z), b.floatingObjects || (b.floatingObjects = g, b.fromSheet = e, b.isCutting = d.isCutting)), o(b.floatingObjects) > 0 && K(a, h, b, c)))))
                }
            }, n[A] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return K(a, i, b, c)
                }
            };

            function Q(a) {
                return function(b, c) {
                    var d, e, f = n.bT(b, c),
                        g = 0;
                    return 0 === a ? g = -1 : 2 === a && (g = 1), d = 0, 1 === a ? d = -1 : 3 === a && (d = 1), e = O(f), o(e) > 0 && f.wu().execute({
                        cmd: C,
                        sheetName: f.name(),
                        floatingObjects: e,
                        offsetX: g,
                        offsetY: d
                    })
                }
            }
            n[F] = Q(0), n[D] = Q(1), n[G] = Q(2), n[E] = Q(3), n[C] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return (0 !== b.offsetX || 0 !== b.offsetY) && K(a, e, b, c)
                }
            }, n[H] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return K(a, f, b, c)
                }
            }, n.JR = function(a) {
                var b = j.Ul.sl(),
                    c = !b,
                    d = b;
                a.register(t, n[t], 27, !1, !1, !1, !1), a.register(B, n[B], 65, c, !1, !1, d), a.register(u, n[u], b ? 8 : 46, !1, !1, !1, !1), a.register(v, n[v], 9, !1, !1, !1, !1), a.register(w, n[w], 9, !1, !0, !1, !1), a.register(x, n[x], 88, c, !1, !1, d), a.register(y, n[y], 67, c, !1, !1, d), a.register(A, n[A]), a.register(z, n[z], 86, c, !1, !1, d), a.register(C, n[C]), a.register(D, n[D], 38, !1, !1, !1, !1), a.register(E, n[E], 40, !1, !1, !1, !1), a.register(F, n[F], 37, !1, !1, !1, !1), a.register(G, n[G], 39, !1, !1, !1, !1), a.register(H, n[H])
            }, a.exports = {
                yR: L,
                FloatingObjectUndoActionBase: b,
                DeleteFloatingObjectUndoAction: d,
                MovingFloatingObjectUndoAction: e,
                ResizingFloatingObjectUndoAction: f,
                FloatingObjectCopyPasteUndoAction: g,
                ClipboardPasteFloatingObjectUndoAction: h,
                DragCopyFloatingObjectUndoAction: i
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(87),
                d = c(107),
                e = b.Ul.Nl,
                f = b.Ul.Pl,
                g = d.FloatingObject,
                h = d.vS,
                i = d.wS,
                j = d.uS,
                k = b.GC$,
                l = null,
                m = void 0,
                n = function(a) {
                    var c, d, g, n, o, p, q, r, s, t;
                    k.inherit(v, a);

                    function u(a) {
                        return "number" == typeof a && !isNaN(a)
                    }
                    c = "src", d = "backColor", g = "pictureStretch", n = "borderRadius", o = "borderWidth", p = "borderStyle", q = "borderColor", r = [c, d, n, o, p, q, g], s = [
                        [c, m, function(a, b) {
                            var d = this;
                            d.oS = !1, w(d), d.srccallback || (d.srccallback = j(c)), d.srccallback.call(d, a, b)
                        }],
                        [d, l, j(d)],
                        [n, -1, j(n), u],
                        [o, 1, j(o), u],
                        [p, "none", function(a, b) {
                            var c = this;
                            c.nS(a) || c.borderWidth(0), c.bscallback || (c.bscallback = j(p)), c.bscallback.call(c, a, b)
                        }],
                        [q, l, j(q)],
                        [g, 0, j(g)]
                    ];

                    function v(b, c, d, e, f, g) {
                        var h = this;
                        a.call(h, b, d, e, f, g), h.typeName = "1", h.g3 = "1", h.bt = l, h.oS = !1, h.JS = !1, "string" == typeof c && (h.JS = !f || !g, h.src(c))
                    }
                    function w(a) {
                        var c, d, e = a,
                            f = e.src(),
                            g = e.sheet();
                        e.bt || (e.bt = new b.oo(function() {
                            w(e)
                        })), c = e.bt;
                        try {
                            c.ko(f) ? (e.oS = !0, d = c.lo(f), e.KS = d.width, e.LS = d.height, e.JS && (e.width(d.width, !0), e.height(d.height, !0), e.JS = !1), g && g.repaint()) : c.fo(f)
                        } catch (a) {}
                    }
                    return t = {
                        onPropertyChanged: function(a, b, c) {
                            var d, e = this;
                            e.TR || (d = e.sheet(), d && (d.ITa.BUa(e, a, c), this.Wq({
                                sheet: d,
                                sheetName: d.name(),
                                picture: e,
                                propertyName: a
                            })))
                        },
                        toJSON: function() {
                            var b = this,
                                c = a.prototype.toJSON.call(this);
                            return i.call(b, r, c), delete c.content, c
                        },
                        fromJSON: function(b, c) {
                            if (b) {
                                var d = this;
                                d.TR = !0, a.prototype.fromJSON.call(d, b, c), h.call(d, r, b, c), d.oS = !1, w(d), d.TR = m
                            }
                        },
                        clone: function() {
                            var a = new v,
                                b = JSON.stringify(this.toJSON());
                            return a.fromJSON(JSON.parse(b)), a
                        },
                        getOriginalWidth: function() {
                            return this.KS
                        },
                        getOriginalHeight: function() {
                            return this.LS
                        },
                        nS: function(a) {
                            var b = ["dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"];
                            return b.indexOf(a) >= 0
                        },
                        WR: function(a, b) {
                            var c = e("div");
                            return k(c).addClass("gc-floatingobject-content-container").addClass("gc-no-user-select").attr("unselectable", "on").css("position", "absolute"), this.UR(c, a, b), c
                        },
                        Wq: function(a) {
                            var c, d = this.sheet();
                            d && (d.Wq(b.Events.PictureChanged, a), "isSelected" === a.propertyName && (c = {
                                sheet: a.sheet,
                                sheetName: a.sheetName,
                                picture: a.picture
                            }, d.Wq(b.Events.PictureSelectionChanged, c)))
                        },
                        no: function(a) {
                            self.bt && a !== !1 && (self.bt.no(), self.bt = l)
                        }
                    }, k.each(s, function(a, b) {
                        t[b[0]] = f(b[0], b[1], b[2], b[3])
                    }), k.extend(v.prototype, t), v
                }(g);
            d.Picture = n, a.exports = d
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a = c(111);
            a && !
                function() {
                    var b = c(87),
                        d = b.GC$,
                        e = d.extend,
                        f = b.Ul.nl,
                        g = a.jR,
                        h = a.kR;

                    function i(a, b, c) {
                        var d, e, f = this;
                        f.yM = new g(f), f.DQ = new h(a, "FL_" + b.name, f.yM, 2, 200), f.BQ = c, f.CQ = new j(a, b), d = f.CQ, e = f.DQ, e._M = function() {
                            return b.YR.isSelected()
                        }, e.bN = function() {
                            return !0
                        }, e.dN = function(a) {
                            return d.jQ(a)
                        }, e.eN = function(a) {
                            return d.lQ(a)
                        }, e.fN = function(a) {
                            return d.pQ(a)
                        }, e.hN = function(a) {
                            return d.qQ(a)
                        }, e.iN = function(a) {
                            return d.sQ(a)
                        }
                    }
                    e(i.prototype, {
                        EQ: function() {
                            var a = this,
                                b = a.BQ;
                            b && b.xN(a.DQ, !0)
                        },
                        FQ: function() {
                            var a = this,
                                b = a.BQ;
                            b && b.xN(a.DQ, !1)
                        },
                        GQ: function(a) {
                            return this.yM.GQ(a)
                        },
                        HQ: function(a) {
                            return this.yM.HQ(a)
                        },
                        IQ: function(a) {
                            return this.yM.IQ(a)
                        }
                    });

                    function j(b, c) {
                        var d = this;
                        d.MS = c, d.YR = c.YR, d.NS = b, d.hQ = new a.TP(c.kj)
                    }
                    e(j.prototype, {
                        OS: function(b) {
                            var c, e = new a.oP(b.X, b.Y),
                                f = d(this.NS).offset();
                            return f && (c = document.body, e.X += f.left + c.clientLeft || 0, e.Y += f.top + c.clientTop || 0), e
                        },
                        jQ: function(a) {
                            a.DO = 3
                        },
                        lQ: function(a) {
                            var b = this,
                                c = b.OS(a.rN);
                            b.MS.AD({
                                target: a.GP,
                                isTouch: !0,
                                button: 0,
                                pageX: c.X,
                                pageY: c.Y,
                                stopPropagation: function() {}
                            }), b.hQ.OP()
                        },
                        pQ: function(a) {
                            var b, c = this,
                                d = a.dP.rO,
                                e = c.MS.kj,
                                f = e.parent;
                            1 !== d && f && f.options.allowUserZoom ? (e.mm.O3 = !1, c.MS.rS(), c.hQ.PP(d)) : (b = c.OS(a.rN), c.MS.BD({
                                isTouch: !0,
                                button: 0,
                                pageX: b.X,
                                pageY: b.Y,
                                stopPropagation: function() {}
                            }))
                        },
                        qQ: function(a) {
                            var b, c = this,
                                d = a.dP.rO,
                                e = c.MS.kj,
                                f = e.parent;
                            1 !== d && f && f.options.allowUserZoom ? c.hQ.SP(d) : (b = c.OS(a.rN), this.MS.CD({
                                isTouch: !0,
                                button: 0,
                                pageX: b.X,
                                pageY: b.Y,
                                stopPropagation: function() {}
                            }))
                        },
                        sQ: function() {
                            var a, c;
                            try {
                                a = this, c = a.MS.kj, c.suspendPaint(), a.YR.isSelected() || (c.uQ(), a.YR.isSelected(!0), b.Vl.Zl(c)), c.clearSelection()
                            } finally {
                                c.resumePaint()
                            }
                        }
                    }), c(107).tS.$n("touch", {
                        init: function(a) {
                            var b = this,
                                c = b.wR = new i(a, b, b.kj.parent.BQ);
                            c.EQ()
                        },
                        dispose: function() {
                            var a = this.wR;
                            a && a.FQ()
                        },
                        preProcessMouseDown: function(a) {
                            var b = a.e,
                                c = this.wR;
                            c && !b.isTouch && c.GQ(b) && (f(b), a.r = !0)
                        },
                        preProcessMouseMove: function(a) {
                            var b = a.e,
                                c = this.wR;
                            c && !b.isTouch && c.IQ(b) && (f(b), a.r = !0)
                        },
                        preProcessMouseUp: function(a) {
                            var b = a.e,
                                c = this.wR;
                            c && !b.isTouch && c.HQ(b) && (f(b), a.r = !0)
                        }
                    })
                }()
        }()
}, function(a, b) {
    a.exports = GC.Spread.Sheets.Touch
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {
                Exp_FloatingObjectHasSameNameError: "The current worksheet already has a floating object with the same name.",
                Exp_FloatingObjectNameEmptyError: "Floating object must have name"
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            a.exports = c(114), c(116)
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h = c(87),
                i = c(26),
                j = c(33),
                k = c(115),
                l = {},
                m = h.GC$,
                n = m.isEmptyObject,
                o = h.Worksheet,
                p = h.KTa,
                q = h.kf,
                r = i.j.Fa,
                s = i.k,
                t = s.Fb,
                u = s.ac,
                v = s.Bb,
                w = k.Vd,
                x = k.SparklineRender,
                y = null,
                z = void 0,
                A = Math.max,
                B = Number.MAX_VALUE,
                C = h.lUa;
            m.extend(C.prototype, {
                FUa: function(a) {
                    var b, c, d, e = this,
                        f = e.zTa,
                        g = arguments[1];
                    if (f) {
                        switch (f.GUa || (f.GUa = []), b = {
                            type: a
                        }, a) {
                            case 0:
                                c = g, d = c && c.sparkline ? c.sparkline : y, b.HUa = {
                                    row: c.row,
                                    col: c.col,
                                    sparkline: d
                                };
                                break;
                            case 12:
                            case 1:
                            case 2:
                            case 3:
                            case 4:
                            case 5:
                            case 6:
                            case 7:
                            case 8:
                            case 9:
                            case 10:
                            case 11:
                            case 13:
                            case 14:
                            case 15:
                            case 16:
                                b.HUa = g
                        }
                        f.GUa.push(b)
                    }
                },
                IUa: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, l, m, n, o = this,
                        p = a.HUa;
                    switch (a.type) {
                        case 12:
                            p.sparkline ? (p.sparkline.row = p.row, p.sparkline.column = p.col, o.ZA.JUa(p.row, p.col, p.sparkline)) : o.ZA.JUa(p.row, p.col, y);
                            break;
                        case 0:
                            o.ZA.JUa(p.row, p.col, p.sparkline), p.sparkline && !o.ZA.contains(p.sparkline.group()) && o.ZA.add(p.sparkline.group());
                            break;
                        case 1:
                            for (f = u(p), g = 0; g < f; g++) c = p[g].row, d = p[g].col, e = o.ZA.KUa(c, d), 0 === g && e.cb.count() === f && o.ZA.remove(e.cb), this.ZA.add(e.group(p[g].group).cb);
                            break;
                        case 2:
                            for (h = [], i = 0; i < u(p); i++) h.push(o.ZA.KUa(p[i].row, p[i].col));
                            o.ZA.kj.groupSparkline(h);
                            break;
                        case 3:
                            b = o.ZA.KUa(p.row, p.col), b.sparklineType(p.sparklineType);
                            break;
                        case 4:
                            b = o.ZA.KUa(p.row, p.col), b.setting(p.setting);
                            break;
                        case 5:
                            p.sparkline.data(p.data);
                            break;
                        case 15:
                            b = o.ZA.KUa(p.row, p.col), b.dataSheetName(p.dataSheetName);
                            break;
                        case 6:
                            b = o.ZA.KUa(p.row, p.col), b.dataOrientation(p.dataOrientation);
                            break;
                        case 7:
                            b = o.ZA.KUa(p.row, p.col), b.displayDateAxis(p.displayDateAxis);
                            break;
                        case 8:
                            k = p.rangeInfo, j = k ? q(k.row, k.col, k.rowCount, k.colCount) : k, p.group.dateAxisData(j);
                            break;
                        case 16:
                            p.group.dateAxisDataSheetName(p.dateAxisDataSheetName);
                            break;
                        case 9:
                            p.group.dateAxisOrientation(p.dateAxisOrientation);
                            break;
                        case 10:
                            for (l = p.group.PS, l.forEach(function(a) {
                                o.ZA.vZa(a)
                            }), p.group.PS = p.PS, m = p.group.PS, n = 0; n < u(m); n++) m[n].group(p.group);
                            m.forEach(function(a) {
                                o.ZA.tZa(a)
                            });
                            break;
                        case 11:
                            b = o.ZA.KUa(p.row, p.col), b.group(p.group);
                            break;
                        case 13:
                            t(o.ZA.groups(), p), o.ZA.wZa(p);
                            break;
                        case 14:
                            o.ZA.groups().push(p), o.ZA.xZa(p)
                    }
                },
                LUa: function(a) {
                    var b, c = u(a);
                    for (b = c - 1; b >= 0; b--) this.IUa(a[b])
                },
                MUa: function(a, b) {
                    this.ZA.rI(a, b)
                },
                NUa: function(a, b) {
                    this.ZA.GR(a, b)
                },
                OUa: function(a, b) {
                    this.ZA.tI(a, b)
                },
                PUa: function(a, b) {
                    this.ZA.HR(a, b)
                },
                QUa: function(a, b, c, d) {
                    this.ZA.clear(a, b, c, d)
                },
                yZa: function() {
                    var a = this.zTa;
                    return a ? (a.zZa || (a.zZa = []), a.zZa) : y
                }
            }), C.$n("sparkline", {
                init: function() {
                    var a = this.kj;
                    this.ZA = new F(a, a)
                },
                undo: function(a) {
                    var b, c, d = a.GUa;
                    d && this.LUa(d), b = this.kj, c = a.zZa, c && c.forEach(function(a) {
                        var c = b.parent.getSheetFromName(a.sheetName).ITa;
                        c.undo(a.changes)
                    })
                }
            }), b = {
                init: function() {
                    this.ZA = this.ITa.ZA
                },
                dispose: function(a) {
                    a !== !1 && (this.ZA = y)
                },
                onLayoutChanged: function(a) {
                    var b, c = a.changeType,
                        d = a.row,
                        e = a.rowCount,
                        f = a.col,
                        g = a.colCount,
                        h = this.ITa;
                    "addRows" === c ? h.MUa(d, e) : "deleteRows" === c ? h.NUa(d, e) : "addColumns" === c ? h.OUa(f, g) : "deleteColumns" === c ? h.PUa(f, g) : "clear" === c && (b = a.type, 3 === a.sheetArea && 16 === (16 & b) && h.QUa(d, f, e, g))
                },
                toJson: function(a, b) {
                    var c = b && b.ignoreStyle;
                    c || (a.sparklineGroups = this.ZA.toJSON())
                },
                fromJson: function(a, b, c) {
                    var d = c && c.ignoreStyle,
                        e = this,
                        f = e.ZA,
                        g = a.sparklineGroupManager,
                        h = b ? g && g.groups : a.sparklineGroups;
                    h && !d && f.RUa(h, b)
                },
                setName: function(a) {
                    var b = a.oldName,
                        c = a.newName;
                    this.ZA.jOa(b, c)
                }
            }, o.$n("sparkline", b);

            function D(a, b) {
                var c = h.CalcEngine.formulaToRanges(a, b, 0, 0),
                    d = c[0],
                    e = d && d.ranges && d.ranges[0];
                return e ? {
                    range: e,
                    sheetName: d.sheetName
                } : y
            }
            d = {
                getSparkline: function(a, b) {
                    return this.ZA ? this.ZA.KUa(a, b) : y
                },
                setSparkline: function(a, b, c, d, e, f, g, h) {
                    var i, j, k, l, m, n, o = this,
                        p = o.ZA;
                    if (!p) return y;
                    if ("string" == typeof c) {
                        if (j = D(o, c), !j) return y;
                        c = j.range, i = j.sheetName
                    }
                    if (k = new T(a, b, c, d, e, f), i && i !== o.name() && k.dataSheetName(i), g && !r(h)) {
                        if ("string" == typeof g) {
                            if (m = D(o, g), !m) return y;
                            g = m.range, l = m.sheetName
                        }
                        k.dateAxisData(g), l && l !== o.name() && k.dateAxisDataSheetName(l), k.dateAxisOrientation(h), k.group().displayDateAxis = !0
                    }
                    return n = o.getSparkline(a, b), o.removeSparkline(a, b), E.call(o, a, b, n, k), o.$p(), k
                },
                removeSparkline: function(a, b) {
                    var c, d, e, f = this,
                        g = f.ZA;
                    g && (c = f.getSparkline(a, b), d = {
                        row: a,
                        col: b,
                        sparkline: c
                    }, f.ITa.FUa(0, d), c && (e = c.group(), e.remove(c), e.count() <= 0 && g.remove(e), E.call(f, a, b, c, y)), f.$p())
                },
                groupSparkline: function(a) {
                    var b, c, d, e, f, g, h = this,
                        i = h.ZA;
                    if (!i) return y;
                    for (b = y, c = [], d = h.ITa.zTa !== z, e = 0; e < a.length; e++) f = a[e], f && (d && c.push({
                        group: f.group().clone(),
                        row: f.row,
                        col: f.column
                    }), b ? (g = f.group(), g.remove(f), b.add(f), g.count() <= 0 && i.remove(g)) : b = f.group());
                    return h.$p(), h.ITa.FUa(1, c), b
                },
                ungroupSparkline: function(a) {
                    var b, c, d, e, f, g, h = this,
                        i = h.ZA;
                    if (i && a) {
                        for (b = [], c = [], d = h.ITa.zTa !== z, b = b.concat(a.PS), e = 0; e < b.length; e++) f = b[e], f && (d && c.push({
                            row: f.row,
                            col: f.column
                        }), a.remove(f), g = a.clone(), g.add(f), i.add(g));
                        i.remove(a), h.ITa.FUa(2, c), h.$p()
                    }
                }
            };

            function E(a, b, c, d) {
                var e = this,
                    f = e.ZA;
                f.JUa(a, b, d), d && f.add(d.group()), e.Bq("sparkline", a, b, 3, c, d)
            }
            m.extend(o.prototype, d);

            function F(a, b) {
                this.Ub = [], this.kj = a, this.evaluator = b, this.xn = {}, this.qZa = [], this.rZa = []
            }
            function G(a, b) {
                return a + "_" + b
            }
            F.prototype = {
                constructor: F,
                RUa: function(a, b) {
                    var c = this;
                    c.fromJSON(a, b), c.groups().forEach(function(a) {
                        a.PS.forEach(function(a) {
                            c.SUa(a)
                        })
                    })
                },
                SUa: function(a) {
                    a && this.JUa(a.row, a.column, a)
                },
                JUa: function(a, b, c) {
                    if (this.kj.ITa.zTa) {
                        var d = {
                            row: a,
                            col: b,
                            sparkline: this.KUa(a, b)
                        };
                        this.kj.ITa.FUa(12, d)
                    }
                    c ? this.xn[G(a, b)] = c : delete this.xn[G(a, b)]
                },
                KUa: function(a, b) {
                    return this.xn[G(a, b)] || y
                },
                groups: function(a) {
                    return 0 === arguments.length ? this.Ub : void(this.Ub = a)
                },
                add: function(a) {
                    var b = this;
                    b.kj.ITa.FUa(13, a), b.groups().push(a), a.ZA = b, a.QS(), b.xZa(a)
                },
                xZa: function(a) {
                    var b = this;
                    b.sZa(a), a.all().forEach(function(a) {
                        b.tZa(a)
                    })
                },
                remove: function(a) {
                    var b = this;
                    b.kj.ITa.FUa(14, a), t(b.groups(), a), b.wZa(a)
                },
                wZa: function(a) {
                    var b = this;
                    b.uZa(a), a.all().forEach(function(a) {
                        b.vZa(a)
                    })
                },
                contains: function(a) {
                    return v(this.groups(), a)
                },
                count: function() {
                    return this.groups().length
                },
                rI: function(a, b) {
                    J(this.Ub, a, b, !0, this), K(a, b, !0, this.rZa, this.qZa, this.kj.ITa.yZa())
                },
                tI: function(a, b) {
                    J(this.Ub, a, b, !1, this), K(a, b, !1, this.rZa, this.qZa, this.kj.ITa.yZa())
                },
                GR: function(a, b) {
                    O(this.Ub, a, b, !0, this), P(a, b, !0, this.rZa, this.qZa, this.kj.ITa.yZa())
                },
                HR: function(a, b) {
                    O(this.Ub, a, b, !1, this), P(a, b, !1, this.rZa, this.qZa, this.kj.ITa.yZa())
                },
                jOa: function(a, b) {
                    this.rZa.forEach(function(c) {
                        c.dateAxisDataSheetName() === a && c.dateAxisDataSheetName(b)
                    }), this.qZa.forEach(function(c) {
                        c.dataSheetName() === a && c.dataSheetName(b)
                    })
                },
                tZa: function(a) {
                    var b, c, d = this.kj,
                        e = a.dataSheetName();
                    e && e !== d.name() && (b = d.parent.getSheetFromName(e), b && (c = b.ZA.qZa, c.indexOf(a) < 0 && c.push(a)))
                },
                vZa: function(a) {
                    var b, c, d, e = a.dataSheetName();
                    e && (b = this.kj.parent.getSheetFromName(e), b && (c = b.ZA.qZa, d = c.indexOf(a), d >= 0 && c.splice(d, 1)))
                },
                sZa: function(a) {
                    var b, c, d = this.kj,
                        e = a.dateAxisDataSheetName();
                    e && e !== d.name() && (b = d.parent.getSheetFromName(e), b && (c = b.ZA.rZa, c.indexOf(a) < 0 && c.push(a)))
                },
                uZa: function(a) {
                    var b, c, d, e = a.dateAxisDataSheetName();
                    e && (b = this.kj.parent.getSheetFromName(e), b && (c = b.ZA.rZa, d = c.indexOf(a), d >= 0 && c.splice(d, 1)))
                },
                clear: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n = this;
                    if (0 === arguments.length) {
                        for (e = n.Ub, f = u(e) - 1; f > -1; f--) if (g = e[f]) {
                            for (h = g.count() - 1; h > -1; h--) i = g.PS[h], n.JUa(i.row, i.column, y), g.remove(i);
                            n.remove(g)
                        }
                    } else for (j = a; j < a + c; j++) for (k = b; k < b + d; k++) l = n.RS(j, k), l && (n.JUa(l.row, l.column, y), m = l.group(), m.remove(l), 0 === m.count() && n.remove(m))
                },
                RS: function(a, b) {
                    var c, d, e, f, g = this.Ub;
                    for (c = 0; c < g.length; c++) for (d = g[c], e = 0; e < d.count(); e++) if (f = d.PS[e], f && f.row === a && f.column === b) return f;
                    return y
                },
                Zz: function(a, b, c, d, e, f, g) {
                    var h, i, j, k, l, m, n, o, q, s, t, u, v = this,
                        w = v.kj;
                    if (w) {
                        for (h = new p, i = c - a, j = d - b, m = w.getRowCount(), n = w.getColumnCount(), o = w.ZA, k = 0; k < e; k++) if (!(g && w.Ps && w.Ps(c + k))) for (l = 0; l < f; l++) q = w.getSparkline(a + k, b + l), q && (s = q.clone(), s.row = c + k, s.column = d + l, t = s.dateAxisData(), !r(t) && v.SS(t, i, j, m, n) && s.dateAxisData(t.offset(j, i)), u = s.data(), !r(u) && v.SS(u, i, j, m, n) && s.data(u.offset(j, i)), v.add(s.group()), h.set(k, l, s));
                        for (k = 0; k < e; k++) if (!(g && w.Ps && w.Ps(c + k))) for (l = 0; l < f; l++) o.JUa(c + k, d + l, h.get(k, l))
                    }
                },
                SS: function(a, b, c, d, e) {
                    var f, g, h, i, j = this.TS(a);
                    return !!j && (f = A(j.row, 0), g = A(j.col, 0), h = j.row < 0 ? d : j.rowCount, i = j.col < 0 ? e : j.colCount, !(f + b < 0 || g + c < 0 || f + h + b > d || g + i + c > e))
                },
                aB: function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l = this.kj;
                    if (l) {
                        for (this.US(a, b, c, d, e, f), g = l.ZA, h = new p, i = 0; i < e; i++) for (j = 0; j < f; j++) k = l.getSparkline(a + i, b + j), k && (k.row = c + i, k.column = d + j, h.set(i, j, k)), g.JUa(a + i, b + j, y);
                        for (i = 0; i < e; i++) for (j = 0; j < f; j++) l.removeSparkline(c + i, d + j), g.JUa(c + i, d + j, h.get(i, j))
                    }
                },
                US: function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l, m, n, o, p = this,
                        r = q(a, b, e, f),
                        s = c - a,
                        t = d - b,
                        u = p.Ub;
                    for (g = 0; g < u.length; g++) for (h = u[g], i = h.PS, j = 0; j < i.length; j++) k = i[j], k && (l = k.dateAxisData(), m = p.TS(l), m && r.containsRange(m) && r.contains(k.row, k.column) && k.dateAxisData(l.offset(t, s)), n = k.data(), o = p.TS(n), o && r.containsRange(o) && r.contains(k.row, k.column) && k.data(n.offset(t, s)))
                },
                TS: function(a) {
                    return a
                },
                _A: function(a, b, c, d, e, f, g, h) {
                    var i, j, k, l, m, n, o, p, q, s, t, u = this,
                        v = u.kj;
                    if (v) {
                        if (a === v) return void u.Zz(b, c, d, e, f, g);
                        for (i = d - b, j = e - c, k = v.ZA, l = v.getRowCount(), m = v.getColumnCount(), n = 0; n < f; n++) if (!(h && v.Ps && v.Ps(d + n))) for (o = 0; o < g; o++) p = a.getSparkline(b + n, c + o), p ? (q = p.clone(), q.row = d + n, q.column = e + o, s = q.dateAxisData(), !r(s) && u.SS(s, i, j, l, m) && q.dateAxisData(s.offset(j, i)), t = q.data(), !r(t) && u.SS(t, i, j, l, m) && q.data(t.offset(j, i)), u.add(q.group()), k.JUa(d + n, e + o, q)) : k.JUa(d + n, e + o, y)
                    }
                },
                $A: function(a, b, c, d, e, f, g) {
                    var h, i, j, k, l, m, n, o = this,
                        p = o.kj;
                    if (p) {
                        if (a === p) return void o.aB(b, c, d, e, f, g);
                        for (h = a.ZA, i = p.ZA, o.VS(a, b, c, d, e, f, g), j = 0; j < f; j++) for (k = 0; k < g; k++) l = a.getSparkline(b + j, c + k), l ? (l.row = d + j, l.column = e + k, m = l.group(), n = m.clone(), m.remove(l), m.count() <= 0 && h.remove(m), n.add(l), o.add(n), i.JUa(d + j, e + k, l)) : i.JUa(d + j, e + k, y), h.JUa(b + j, c + k, y)
                    }
                },
                VS: function(a, b, c, d, e, f, g) {
                    var h, i, j, k, l, m, n, o, p, r, s, t, u = this,
                        v = u.kj;
                    if (a && v) {
                        if (a === v) return void u.US(b, c, d, e, f, g);
                        for (h = q(b, c, f, g), i = d - b, j = e - c, k = a.ZA.Ub, l = 0; l < k.length; l++) for (m = k[l], n = 0; n < m.PS.length; n++) o = m.PS[n], o && (p = o.dateAxisData(), r = u.TS(p), r && h.containsRange(r) && h.contains(o.row, o.column) && o.dateAxisData(p.offset(j, i)), s = o.data(), t = u.TS(s), t && h.containsRange(t) && h.contains(o.row, o.column) && o.data(s.offset(j, i)))
                    }
                },
                toJSON: function() {
                    var a, b = this.Ub,
                        c = [];
                    for (a = 0; b && a < b.length; a++) c.push(b[a].toJSON());
                    return 0 === c.length ? z : c
                },
                fromJSON: function(a, b) {
                    var c, d, e;
                    for (this.Ub.length = 0, this.xn = {}, c = 0; a && c < a.length; c++) d = a[c], e = new R, e.fromJSON(d, b), this.add(e)
                }
            };

            function H(a, b, c) {
                return c ? a > c.row + c.rowCount - 1 ? c : a > c.row ? q(c.row, c.col, c.rowCount + b, c.colCount) : q(c.row + b, c.col, c.rowCount, c.colCount) : y
            }
            function I(a, b, c) {
                return c ? a > c.col + c.colCount - 1 ? c : a > c.col ? q(c.row, c.col, c.rowCount, c.colCount + b) : q(c.row, c.col + b, c.rowCount, c.colCount) : y
            }
            function J(a, b, c, d, e) {
                var f, g, h, i, j, k, l, m, n, o, q, r, s, t, u = new p;
                for (f = 0; f < a.length; f++) for (g = a[f], h = g.PS, g.displayDateAxis && (j = g.dateAxisData(), i = d ? H(b, c, j) : I(b, c, j), g.dateAxisData(i)), k = 0; k < h.length; k++) l = h[k], m = d ? l.row : l.column, b <= m && (u.set(f, k, l), e.JUa(l.row, l.column, y), d ? l.row += c : l.column += c), o = l.data(), n = d ? H(b, c, o) : I(b, c, o), l.data(n);
                for (q = 0; q < a.length; q++) for (r = a[q], s = r.PS, t = 0; t < s.length; t++) e.SUa(u.get(q, t))
            }
            function K(a, b, c, d, e, f) {
                var g, h, i, j, k, l, m, n, o, p, q, r, s, t;
                for (g = 0; g < d.length; g++) h = d[g], h.displayDateAxis && (i = h.OW(), j = i.ITa, k = !1, f && !j.zTa && (j.zTa = [], k = !0), m = h.dateAxisData(), l = c ? H(a, b, m) : I(a, b, m), h.dateAxisData(l), k && (f.push({
                    sheetName: i.name(),
                    changes: j.zTa
                }), j.zTa = z));
                for (n = 0; n < e.length; n++) o = e[n], p = o.bT(), q = p.ITa, r = !1, f && !q.zTa && (q.zTa = [], r = !0), t = o.data(), s = c ? H(a, b, t) : I(a, b, t), o.data(s), r && (f.push({
                    sheetName: p.name(),
                    changes: q.zTa
                }), q.zTa = z)
            }
            function L(a, b, c) {
                var d = N(c.col, c.col + c.colCount - 1, a, a + b - 1);
                return d ? q(c.row, d.start, c.rowCount, d.end - d.start + 1) : y
            }
            function M(a, b, c) {
                var d = N(c.row, c.row + c.rowCount - 1, a, a + b - 1);
                return d ? q(d.start, c.col, d.end - d.start + 1, c.colCount) : y
            }
            function N(a, b, c, d) {
                var e, f, g, h, i, j, k = -1;
                if (d < a) return g = d - c + 1, k = a - g, e = b - g, {
                    start: k,
                    end: e
                };
                if (c > b) return k = a, e = b, {
                    start: k,
                    end: e
                };
                if (c <= a) {
                    for (h = b - a + 1, i = 0, f = a; f <= d && f <= b; f++) i++;
                    return k = c, e = k + h - i - 1, {
                        start: k,
                        end: e
                    }
                }
                for (j = 0, f = a; f <= b; f++) k === -1 && (f < c || f > d) && (k = f), (f < c || f > d) && j++;
                return k !== -1 && j > 0 ? (e = k + j - 1, {
                    start: k,
                    end: e
                }) : y
            }
            function O(a, b, c, d, e) {
                var f, g, h, i, j, k, l, m, n, o, q, s, t, v, w = new p,
                    x = a.length,
                    z = 0;
                for (f = x - 1; f > -1; f--) {
                    if (g = a[f], g.displayDateAxis) {
                        if (i = g.dateAxisData(), h = d ? M(b, c, i) : L(b, c, i), r(h)) {
                            g.clear(), e.remove(g);
                            continue
                        }
                        g.dateAxisData(h)
                    }
                    for (j = [], j = j.concat(g.PS), k = u(j), z = A(k, z), l = k - 1; l > -1; l--) m = j[l], n = d ? m.row : m.column, n >= b && n < b + c ? (g.remove(m), e.JUa(m.row, m.column, y)) : (b <= n && (e.JUa(m.row, m.column, y), d ? m.row -= c : m.column -= c, w.set(f, l, m)), q = m.data(), o = d ? M(b, c, q) : L(b, c, q), r(o) ? g.remove(m) : m.data(o));
                    g.count() <= 0 && e.remove(g)
                }
                for (t = 0; t < x; t++) for (v = 0; v < z; v++) s = w.get(t, v), s && e.SUa(s)
            }
            function P(a, b, c, d, e, f) {
                var g, h, i, j, k, l, m, n, o, p, q, s, t, u, v, w, x = d.length;
                for (g = x - 1; g > -1; g--) h = d[g], h.displayDateAxis && (i = h.OW(), j = i.ITa, k = !1, f && !j.zTa && (j.zTa = [], k = !0), m = h.dateAxisData(), l = c ? M(a, b, m) : L(a, b, m), r(l) ? (h.clear(), h.ZA.remove(h)) : h.dateAxisData(l), k && (f.push({
                    sheetName: i.name(),
                    changes: j.zTa
                }), j.zTa = z));
                for (n = e.length, o = n - 1; o > -1; o--) p = e[o], q = p.bT(), s = q.ITa, t = !1, f && !s.zTa && (s.zTa = [], t = !0), v = p.data(), u = c ? M(a, b, v) : L(a, b, v), r(u) ? (w = p.group(), w.remove(p), w.count() <= 0 && w.ZA.remove(w)) : p.data(u), t && (f.push({
                    sheetName: q.name(),
                    changes: s.zTa
                }), s.zTa = z)
            }
            l.EmptyValueStyle = {
                gaps: 0,
                zero: 1,
                connect: 2
            }, l.SparklineAxisMinMax = {
                individual: 0,
                group: 1,
                custom: 2
            }, e = i.pc.bc(255, 149, 179, 215), f = i.pc.bc(255, 36, 64, 98), g = {
                axisColor: "black",
                firstMarkerColor: e,
                highMarkerColor: "Blue",
                lastMarkerColor: e,
                lowMarkerColor: "Blue",
                markersColor: f,
                negativeColor: "Brown",
                seriesColor: f,
                displayEmptyCellsAs: 0,
                rightToLeft: !1,
                displayHidden: !1,
                displayXAxis: !1,
                showFirst: !1,
                showHigh: !1,
                showLast: !1,
                showLow: !1,
                showNegative: !1,
                showMarkers: !1,
                manualMax: 0,
                manualMin: 0,
                maxAxisType: 0,
                minAxisType: 0,
                lineWeight: 1
            };

            function Q(a) {
                var b, c = this;
                c.options = {};
                for (b in g) g.hasOwnProperty(b) && (c.options[b] = a && a[b] ? a[b] : g[b]);
                c.WS = y
            }
            Q.prototype = {
                constructor: Q,
                clone: function() {
                    return new Q(this.options)
                },
                toJSON: function() {
                    var a, b = this,
                        c = b.options,
                        d = {};
                    for (a in c) g[a] !== c[a] && (d[a] = c[a]);
                    return n(d) ? z : d
                }
            }, l.SparklineSetting = Q, l.SparklineType = {
                line: 0,
                column: 1,
                winloss: 2
            }, l.DataOrientation = {
                vertical: 0,
                horizontal: 1
            };

            function R(a, b) {
                var c = this;
                c.displayDateAxis = !1, c.ZA = y, c.PS = [], c.XS = y, c.YS = 1, c.setting = b, c.sparklineType = a
            }
            function S(a, b) {
                var c = !1;
                return "setting" === a || "axisReference" === a ? c = b === y : "displayDateAxis" === a ? c = b === !1 : "axisOrientation" === a ? c = 1 === b : "sparklines" === a && (c = 0 === b.length), c
            }
            R.prototype = {
                constructor: R,
                OW: function() {
                    var a = this,
                        b;
                    return a.ZA && (b = a.ZA.kj), b
                },
                TUa: function() {
                    var a, b = this,
                        c = b.OW();
                    c && c.ITa.zTa && (a = {
                        group: b,
                        PS: b.PS.concat()
                    }, c.ITa.FUa(10, a))
                },
                add: function(a) {
                    var b, c = this;
                    a && (c.TUa(), c.PS.push(a), a.group(c), c.QS(), b = c.ZA, b && b.tZa(a), c.onGroupChanged())
                },
                clear: function() {
                    this.TUa();
                    var a = this.ZA;
                    a && this.PS.forEach(function(b) {
                        a.vZa(b)
                    }), this.PS = []
                },
                all: function() {
                    return this.PS
                },
                remove: function(a) {
                    var b, c = this,
                        d = c.PS;
                    return c.TUa(), t(d, a), a.onSparklineChanged(), a.cb = c.clone(), c.QS(), b = c.ZA, b && b.vZa(a), c.onGroupChanged(), d
                },
                contains: function(a) {
                    return v(this.PS, a)
                },
                onGroupChanged: function() {
                    var a, b, c = this.PS;
                    if (c) for (a = 0; a < c.length; a++) b = c[a], b && b.onSparklineChanged()
                },
                clone: function() {
                    var a = this,
                        b = a.setting ? a.setting.clone() : y,
                        c = new R(a.sparklineType, b);
                    return c.displayDateAxis = a.displayDateAxis, c.XS = a.XS, c.nZa = a.nZa, c.YS = a.YS, c
                },
                dateAxisData: function(a) {
                    var b, c, d, e, f = this;
                    return 0 === arguments.length ? f.XS : (b = f.OW(), b && b.ITa.zTa && (c = f.XS ? {
                        row: f.XS.row,
                        col: f.XS.col,
                        rowCount: f.XS.rowCount,
                        colCount: f.XS.colCount
                    } : y, d = {
                        group: f,
                        rangeInfo: c
                    }, b.ITa.FUa(8, d)), e = f.XS, f.XS = a, void(e !== a && f.onGroupChanged()))
                },
                dateAxisDataSheetName: function(a) {
                    var b, c, d, e = this;
                    return 0 === arguments.length ? e.nZa : (b = e.nZa, c = e.OW(), c && c.ITa.zTa && (d = {
                        group: e,
                        dateAxisDataSheetName: b
                    }, c.ITa.FUa(16, d)), b !== a && (b && c && c.ZA.uZa(e), e.nZa = a, a && c && c.ZA.sZa(e), e.onGroupChanged()), e)
                },
                dateAxisOrientation: function(a) {
                    var b, c, d, e = this;
                    return 0 === arguments.length ? e.YS : (b = e.OW(), b && b.ITa.zTa && (c = {
                        group: e,
                        dateAxisOrientation: e.YS
                    }, b.ITa.FUa(9, c)), d = e.YS, e.YS = a, void(d !== a && e.onGroupChanged()))
                },
                count: function() {
                    return this.PS.length
                },
                QS: function() {
                    var a, b, c, d, e, f, g, h, i = this,
                        j = i.setting,
                        k = i.PS;
                    if (j && (a = j.options, a.groupMaxValue = -B, a.groupMinValue = B, b = 1 === a.maxAxisType, c = 1 === a.minAxisType, b || c)) for (d = 0; d < k.length; d++) e = k[d], f = i.ZS(e), g = f.min, h = f.max, b && a.groupMaxValue < h && (a.groupMaxValue = h), c && a.groupMinValue > g && (a.groupMinValue = g)
                },
                ZS: function(a) {
                    var b, c, d, e, f, g, h = -B,
                        i = B,
                        j = a.data();
                    if (j) for (b = a.bT(), c = b && b.parent.getSheetFromName(a.dataSheetName()), d = a.$S(j, a.dataOrientation(), !1, c || b), e = 0; e < d.length; e++) f = d[e], f === w && (f = 0), "number" == typeof f && (g = f, h = h < g ? g : h, i = i > g ? g : i);
                    return {
                        min: i,
                        max: h
                    }
                },
                toJSON: function() {
                    var a, b, c, d = this,
                        e = {
                            setting: d.setting ? d.setting.toJSON() : y,
                            displayDateAxis: d.displayDateAxis,
                            sparklineType: d.sparklineType,
                            axisOrientation: d.YS,
                            sparklines: d.PS.map(function(a) {
                                return a.toJSON()
                            })
                        },
                        f = d.XS;
                    f && (e.axisReference = {
                        row: f.row,
                        col: f.col,
                        rowCount: f.rowCount,
                        colCount: f.colCount,
                        sheetName: d.nZa
                    }), a = {};
                    for (b in e) e.hasOwnProperty(b) && (c = e[b], S(b, c) || (a[b] = c));
                    return n(a) ? z : a
                },
                fromJSON: function(a, b) {
                    var c, d, e, f, g, h, i, j, k;
                    if (a && (c = this, d = a.displayDateAxis, e = a.sparklineType, f = a.axisReference, g = a.axisOrientation, h = a.sparklines, c.setting = new Q(a.setting), r(d) || (c.displayDateAxis = d), r(e) || (c.sparklineType = e), r(f) || (c.XS = q(f.row, f.col, f.rowCount, f.colCount), c.nZa = f.sheetName), r(g) || (c.YS = g), h)) for (c.PS = [], i = 0, j = h.length; i < j; i++) k = new T, k.fromJSON(h[i], b), c.add(k)
                }
            }, l.SparklineGroup = R;

            function T(a, b, c, d, e, f) {
                var g = this;
                g.row = a, g.column = b, g._S = d, g.aT = c, g.cb = new R(e, f), g.cb.add(g)
            }
            T.prototype = {
                constructor: T,
                group: function(a) {
                    var b, c, d, e, f = this;
                    return 0 === arguments.length ? (b = f.cb, b || (b = new R, b.add(f), f.cb = b), b) : (c = f.cb, d = f.bT(), d && d.ITa.zTa && (e = {
                        row: f.row,
                        col: f.column,
                        group: c
                    }, d.ITa.FUa(11, e)), a !== c && (c && c.remove(f), f.cb = a, a && !a.contains(f) && a.add(f), f.onSparklineChanged()), d && d.$p(), f)
                },
                sparklineType: function(a) {
                    var b, c, d, e, f = this;
                    return 0 === arguments.length ? f.group().sparklineType : (b = f.group(), c = b.sparklineType, c !== a && (b.sparklineType = a, d = f.bT(), d && d.ITa.zTa && (e = {
                        row: f.row,
                        col: f.column,
                        sparklineType: c
                    }, d.ITa.FUa(3, e)), f.onSparklineChanged(), d && d.$p()), f)
                },
                onSparklineChanged: function() {
                    var a = this,
                        b = a.bT();
                    b && b.Wq(h.Events.SparklineChanged, {
                        sheet: b,
                        sheetName: b.name(),
                        sparkline: a
                    })
                },
                setting: function(a) {
                    var b, c, d = this,
                        e = d.group(),
                        f = d.bT(),
                        g = f && f.ITa.zTa;
                    return 0 === arguments.length ? b = g ? m.extend(!0, {}, e.setting) : e.setting : (g && (c = {
                        row: d.row,
                        col: d.column,
                        setting: m.extend(!0, {}, e.setting)
                    }, f.ITa.FUa(4, c)), e.setting = a, f && f.$p(), d)
                },
                data: function(a) {
                    var b, c, d = this;
                    return 0 === arguments.length ? d.aT : (b = d.bT(), b && b.ITa.zTa && (c = {
                        row: d.row,
                        col: d.column,
                        sparkline: d,
                        data: m.extend(!0, {}, d.aT)
                    }, b.ITa.FUa(5, c)), d.aT !== a && (d.aT = a, d.onSparklineChanged()), b && b.$p(), d)
                },
                dataSheetName: function(a) {
                    var b, c, d, e = this;
                    return 0 === arguments.length ? e.oZa : (b = e.oZa, c = e.bT(), c && c.ITa.zTa && (d = {
                        row: e.row,
                        col: e.column,
                        dataSheetName: b
                    }, c.ITa.FUa(15, d)), b !== a && (b && c && c.ZA.vZa(e), e.oZa = a, a && c && c.ZA.tZa(e), e.onSparklineChanged()), e)
                },
                dataOrientation: function(a) {
                    var b, c, d = this;
                    return 0 === arguments.length ? d._S : (b = d.bT(), b && b.ITa.zTa && (c = {
                        row: d.row,
                        col: d.column,
                        dataOrientation: d._S
                    }, b.ITa.FUa(6, c)), d._S !== a && (d._S = a, d.onSparklineChanged()), b && b.$p(), d)
                },
                dateAxisData: function(a) {
                    var b = this,
                        c = b.group();
                    return 0 === arguments.length ? c.dateAxisData() : (c.dateAxisData(a), b)
                },
                dateAxisDataSheetName: function(a) {
                    var b = this,
                        c = b.group();
                    return 0 === arguments.length ? c.dateAxisDataSheetName() : (c.dateAxisDataSheetName(a), b)
                },
                dateAxisOrientation: function(a) {
                    var b = this,
                        c = b.group();
                    return 0 === arguments.length ? c.dateAxisOrientation() : (c.dateAxisOrientation(a), b)
                },
                displayDateAxis: function(a) {
                    var b, c, d = this,
                        e = d.group();
                    return 0 === arguments.length ? e.displayDateAxis : (b = d.bT(), b && b.ITa.zTa && (c = {
                        row: d.row,
                        col: d.column,
                        displayDateAxis: e.displayDateAxis
                    }, b.ITa.FUa(7, c)), e.displayDateAxis = a, d)
                },
                clone: function() {
                    var a = this,
                        b = new T;
                    return b.row = a.row, b.column = a.column, b.data(a.data()), b.dataSheetName(a.dataSheetName()), b.dataOrientation(a.dataOrientation()), b.group(a.group().clone()), b
                },
                paintSparkline: function(a, b, c, d, e) {
                    var f = this,
                        g = f.bT(),
                        i = g.parent.getSheetFromName(f.dataSheetName()),
                        j = g.parent.getSheetFromName(f.dateAxisDataSheetName()),
                        k = {
                            sparklineType: f.sparklineType(),
                            displayDateAxis: f.displayDateAxis(),
                            zoomFactor: g.zoom(),
                            values: f.$S(f.data(), f.dataOrientation(), !1, i || g),
                            dateValues: f.$S(f.dateAxisData(), f.dateAxisOrientation(), !0, j || g),
                            settings: f.setting(),
                            getColor: function(a) {
                                if (g && a) {
                                    var b = h.Rm.Om(g, a);
                                    if (b) return b
                                }
                                return a
                            }
                        };
                    (new x).paint(a, k, b, c, d, e)
                },
                $S: function(a, b, c, d) {
                    var e = this,
                        f = e.setting().options.displayHidden;
                    return T.cT(z, d, f, a, b, c)
                },
                bT: function() {
                    var a = this.group(),
                        b = a && a.ZA;
                    return b ? b.kj : y
                },
                toJSON: function() {
                    var a = this;
                    return {
                        row: a.row,
                        col: a.column,
                        orientation: a._S,
                        data: {
                            row: a.aT.row,
                            rowCount: a.aT.rowCount,
                            col: a.aT.col,
                            colCount: a.aT.colCount,
                            sheetName: a.oZa
                        }
                    }
                },
                fromJSON: function(a) {
                    var b, c, d, e, f, g;
                    a && (b = this, c = a.row, d = a.col, e = a.orientation, f = a.data, r(c) || (b.row = c), r(d) || (b.column = d), r(e) || (b._S = e), f && (g = f, b.aT = q(g.row, g.col, g.rowCount, g.colCount), b.oZa = g.sheetName))
                }
            }, T.cT = function(a, b, c, d, e, f) {
                var g, h, k, l, m, n = "number",
                    o = [],
                    p = 1 === e;
                if (b && d) for (g = 0, h = p ? d.colCount : d.rowCount; g < h; g++) k = p ? 0 : g, l = p ? g : 0, m = a ? a[k][l] : b.getValue(d.row + k, d.col + l), m instanceof j.CalcError || (!c && (b.getRowHeight(d.row + k) <= 0 || b.getColumnWidth(d.col + l) <= 0) ? m = NaN : r(m) || (f ? m = typeof m === n ? i.l.Xb(m) : Date.parse(m) : typeof m !== n && (m = w)), o.push(m));
                return o
            }, l.Sparkline = T, a.exports = l
        }()
}, function(a, b) {
    a.exports = GC.Spread.Sparklines
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e = c(33),
                f = c(87),
                g = c(115),
                h = c(114),
                i = c(26),
                j = h,
                k = e && e.Convert.Fh,
                l = e && e.Functions,
                m = l && l.Function,
                n = l && l.bi,
                o = i.j.Fa,
                p = f.GC$,
                q = f.Workbook,
                r = p.inherit,
                s = p.extend,
                t = g.SparklineRender,
                u = g.SparklineExRenders,
                v = null,
                w = isNaN,
                x = parseFloat,
                y = NaN,
                z = "PIESPARKLINE",
                A = "AREASPARKLINE",
                B = "SCATTERSPARKLINE",
                C = "BULLETSPARKLINE",
                D = "SPREADSPARKLINE",
                E = "STACKEDSPARKLINE",
                F = "HBARSPARKLINE",
                G = "VBARSPARKLINE",
                H = "VARISPARKLINE",
                I = "BOXPLOTSPARKLINE",
                J = "CASCADESPARKLINE",
                K = "PARETOSPARKLINE",
                L = "MONTHSPARKLINE",
                M = "YEARSPARKLINE",
                N = "LINESPARKLINE",
                O = "COLUMNSPARKLINE",
                P = "WINLOSSSPARKLINE";

            function Q(a) {
                return 0 === a
            }
            function R(a) {
                return 0 === a || 2 === a
            }
            function S(a) {
                var b, c, d, e, f, g, h = [];
                if (k(a)) for (b = 0, c = a.getRangeCount(); b < c; b++) for (d = a.getRowCount(b), e = a.getColumnCount(b), f = 0; f < d; f++) for (g = 0; g < e; g++) h.push(a.getValue(b, f, g));
                return h
            }
            function T(a, b) {
                var c, d, e, f, g, h = [];
                if (k(a) && (c = a.getRangeCount(), c > b)) for (d = a.getRowCount(b), e = a.getColumnCount(b), f = 0; f < d; f++) for (h[f] = [], g = 0; g < e; g++) h[f].push(a.getValue(b, f, g));
                return h
            }
            function U(a) {
                var b;
                return k(a) ? b = a.getValue(0, 0, 0) : o(a) || (b = a), b
            }
            b = j.SparklineExValue = function(a, b) {
                this.name = a, this.value = b
            }, b.prototype.toString = function() {
                return ""
            };

            function V() {
                var a, c, d = this.createFunction();
                d && (a = d.name, c = d.evaluate, d.evaluate = function() {
                    var d = c.call(this, arguments);
                    return d ? new b(a, d) : v
                }, this.Cj = a, a && !l.findGlobalFunction(a) && (l.ci[a] = d)), this.typeName = ""
            }
            s(V.prototype, {
                name: function() {
                    return this.Cj
                },
                createFunction: function() {
                    return v
                },
                paint: function(a, b, c, d, e, f, g) {},
                toJSON: function() {
                    var a, b = {};
                    for (a in this) this.hasOwnProperty(a) && (b[a] = this[a]);
                    return b
                },
                fromJSON: function(a) {
                    if (a) for (var b in a) o(a[b]) || (this[b] = a[b])
                }
            }), j.SparklineEx = V;

            function W() {
                V.call(this)
            }
            r(W, V), s(W.prototype, {
                createFunction: function() {
                    var a = new m(z, 1, 255);
                    return a.evaluate = function(a) {
                        var b = a[0],
                            c = S(b);
                        return c.length <= 0 && !o(b) && c.push(b), {
                            values: c,
                            colors: Array.prototype.slice.call(a, 1)
                        }
                    }, a.acceptsReference = Q, a
                },
                paint: u[z]
            }), j.PieSparkline = W;

            function X() {
                V.call(this)
            }
            r(X, V), s(X.prototype, {
                createFunction: function() {
                    var a = new m(A, 1, 7);
                    return a.evaluate = function(a) {
                        return {
                            points: S(a[0]),
                            mini: a[1],
                            maxi: a[2],
                            line1: a[3],
                            line2: a[4],
                            colorPositive: a[5],
                            colorNegative: a[6]
                        }
                    }, a.acceptsReference = Q, a
                },
                paint: u[A]
            }), j.AreaSparkline = X;

            function Y() {
                V.call(this)
            }
            r(Y, V), s(Y.prototype, {
                createFunction: function() {
                    var a = new m(B, 1, 18);
                    return a.evaluate = function(a) {
                        var b = T(a[0], 0),
                            c = T(a[1], 0);
                        return {
                            points1: b,
                            points2: c,
                            minX: a[2],
                            maxX: a[3],
                            minY: a[4],
                            maxY: a[5],
                            hLine: a[6],
                            vLine: a[7],
                            xMinZone: a[8],
                            xMaxZone: a[9],
                            yMinZone: a[10],
                            yMaxZone: a[11],
                            tags: a[12],
                            drawSymbol: a[13],
                            drawLines: a[14],
                            color1: a[15],
                            color2: a[16],
                            dash: a[17]
                        }
                    }, a.acceptsReference = function(a) {
                        return 0 === a || 1 === a
                    }, a
                },
                paint: u[B]
            }), j.ScatterSparkline = Y;

            function Z() {
                V.call(this)
            }
            r(Z, V), s(Z.prototype, {
                createFunction: function() {
                    var a = new m(C, 3, 9);
                    return a.evaluate = function(a) {
                        return {
                            measure: U(a[0]),
                            target: U(a[1]),
                            maxi: U(a[2]),
                            good: U(a[3]),
                            bad: U(a[4]),
                            forecast: U(a[5]),
                            tickUnit: U(a[6]),
                            colorScheme: a[7],
                            vertical: a[8]
                        }
                    }, a.acceptsReference = function(a) {
                        return 0 <= a && a <= 6
                    }, a
                },
                paint: u[C]
            }), j.BulletSparkline = Z;

            function $() {
                V.call(this)
            }
            r($, V), s($.prototype, {
                createFunction: function() {
                    function a(a) {
                        var b, c, d, e, f = [];
                        for (c = 0, d = 0, e = a.length; c < e; c++) b = x(a[c]), !w(b) && isFinite(b) && (f[d++] = b);
                        return f
                    }
                    function b(a) {
                        var b, c, d, e, f, g = {};
                        for (b = 0, d = a.length; b < d; b++) c = a[b], g[c] ? g[c]++ : g[c] = 1;
                        e = [];
                        for (f in g) g.hasOwnProperty(f) && e.push({
                            key: x(f),
                            value: g[f]
                        });
                        return e.sort(function(a, b) {
                            return a.key - b.key
                        })
                    }
                    var c = new m(D, 1, 7);
                    return c.evaluate = function(c) {
                        var d, e, f, g, h, i, j, k, l = S(c[0]),
                            m = [];
                        if (!o(l) && (l = a(l), m = b(l), d = c[4], 3 === d)) for (e = 0, f = m.length; e < f; e++) {
                            for (g = m[e], h = g.value, i = [], j = Math.max(100, 10 * h), k = 0; k < j + h - 1; k++) i.push(Math.random());
                            g.randomNumbers = i
                        }
                        return {
                            spreadData: m,
                            showAverage: c[1],
                            scaleStart: c[2],
                            scaleEnd: c[3],
                            style: d,
                            colorScheme: c[5],
                            vertical: c[6]
                        }
                    }, c.acceptsReference = Q, c
                },
                paint: u[D]
            }), j.SpreadSparkline = $;

            function _() {
                V.call(this)
            }
            r(_, V), s(_.prototype, {
                createFunction: function() {
                    var a = new m(E, 1, 13);
                    return a.evaluate = function(a) {
                        return {
                            points: S(a[0]),
                            colorRange: S(a[1]),
                            labelRange: S(a[2]),
                            maximum: a[3],
                            targetRed: a[4],
                            targetGreen: a[5],
                            targetBlue: a[6],
                            targetYellow: a[7],
                            color: a[8],
                            highlightPosition: a[9],
                            vertical: a[10],
                            textOrientation: a[11],
                            textSize: a[12]
                        }
                    }, a.acceptsReference = function(a) {
                        return 0 <= a && a <= 2
                    }, a
                },
                paint: u[E]
            }), j.StackedSparkline = _;

            function aa() {
                V.call(this)
            }
            r(aa, V), s(aa.prototype, {
                createFunction: function() {
                    var a = new m(F, 1, 2);
                    return a.evaluate = function(a) {
                        return {
                            value: U(a[0]),
                            colorScheme: a[1]
                        }
                    }, a.acceptsReference = Q, a
                },
                paint: u[F]
            }), j.HBarSparkline = aa;

            function ba() {
                V.call(this)
            }
            r(ba, V), s(ba.prototype, {
                createFunction: function() {
                    var a = new m(G, 1, 2);
                    return a.evaluate = function(a) {
                        return {
                            value: U(a[0]),
                            colorScheme: a[1]
                        }
                    }, a.acceptsReference = Q, a
                },
                paint: u[G]
            }), j.VBarSparkline = ba;

            function ca() {
                V.call(this)
            }
            r(ca, V), s(ca.prototype, {
                createFunction: function() {
                    var a = new m(H, 1, 10);
                    return a.evaluate = function(a) {
                        return {
                            variance: U(a[0]),
                            reference: U(a[1]),
                            mini: U(a[2]),
                            maxi: U(a[3]),
                            mark: U(a[4]),
                            tickUnit: U(a[5]),
                            legend: a[6],
                            colorPositive: a[7],
                            colorNegative: a[8],
                            vertical: a[9]
                        }
                    }, a.acceptsReference = function(a) {
                        return 0 <= a && a <= 5
                    }, a
                },
                paint: u[H]
            }), j.VariSparkline = ca;

            function da() {
                V.call(this)
            }
            r(da, V), s(da.prototype, {
                createFunction: function() {
                    function a(a, b) {
                        return k(a) && !w(b) && 0 <= b && b <= 100 ? n.PERCENTILE.evaluate(a, b / 100) : y
                    }
                    function b(a) {
                        return k(a) ? n.STDEVP.evaluate(a) : y
                    }
                    var c = new m(I, 1, 10);
                    return c.evaluate = function(c) {
                        var d = c[0];
                        return {
                            points: S(d),
                            boxPlotClass: c[1],
                            showAverage: c[2],
                            scaleStart: U(c[3]),
                            scaleEnd: U(c[4]),
                            acceptableStart: U(c[5]),
                            acceptableEnd: U(c[6]),
                            colorScheme: c[7],
                            style: c[8],
                            vertical: c[9],
                            perc02: a(d, 2),
                            perc09: a(d, 9),
                            perc10: a(d, 10),
                            perc90: a(d, 90),
                            perc91: a(d, 91),
                            perc98: a(d, 98),
                            q1: a(d, 25),
                            q3: a(d, 75),
                            median: a(d, 50),
                            stDev: b(d)
                        }
                    }, c.acceptsReference = Q, c
                },
                paint: u[I]
            }), j.BoxPlotSparkline = da;

            function ea() {
                V.call(this)
            }
            r(ea, V), s(ea.prototype, {
                createFunction: function() {
                    var a = new m(J, 1, 8);
                    return a.evaluate = function(a) {
                        return {
                            points: S(a[0]),
                            pointIndex: U(a[1]),
                            labels: S(a[2]),
                            minimum: U(a[3]),
                            maximum: U(a[4]),
                            colorPositive: a[5],
                            colorNegative: a[6],
                            vertical: a[7]
                        }
                    }, a.acceptsReference = R, a.acceptsArray = R, a
                },
                paint: u[J]
            }), j.CascadeSparkline = ea;

            function fa() {
                V.call(this)
            }
            r(fa, V), s(fa.prototype, {
                createFunction: function() {
                    var a = new m(K, 1, 8);
                    return a.evaluate = function(a) {
                        return {
                            points: S(a[0]),
                            pointIndex: U(a[1]),
                            colorRange: S(a[2]),
                            target: U(a[3]),
                            target2: U(a[4]),
                            highlightPosition: U(a[5]),
                            label: a[6],
                            vertical: a[7]
                        }
                    }, a.acceptsReference = R, a.acceptsArray = R, a
                },
                paint: u[K]
            }), j.ParetoSparkline = fa;

            function ga() {
                V.call(this)
            }
            r(ga, V), s(ga.prototype, {
                createFunction: function() {
                    var a = new m(L, 3, 7);
                    return a.evaluate = function(a) {
                        var b, c, d, e, f, g, h, i, j, l = a[0],
                            m = a[1],
                            n = a[2],
                            o = n;
                        for (k(n) && (o = T(n, 0)), b = a[3], c = [], k(b) && (c = T(b, 0)), d = [], e = [], f = 0, g = o.length; f < g; f++) h = o[f], h && (i = h[0], i && i.getFullYear() === l && i.getMonth() + 1 === m && (j = i.getDate() - 1, d[j] = h[1], c.length > 0 && (e[j] = c[f][0])));
                        return c.length > 0 ? {
                            year: l,
                            month: m,
                            values: d,
                            colors: e
                        } : {
                            year: l,
                            month: m,
                            values: d,
                            emptyColor: b,
                            startColor: a[4],
                            middleColor: a[5],
                            endColor: a[6]
                        }
                    }, a.acceptsReference = function(a) {
                        return 2 === a || 3 === a
                    }, a
                },
                paint: u[L]
            }), j.MonthSparkline = ga;

            function ha() {
                V.call(this)
            }
            r(ha, V);

            function ia(a, b) {
                switch (b) {
                    case 2:
                        var c = a % 4 === 0 && a % 100 !== 0 || a % 400 === 0;
                        return c ? 29 : 28;
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        return 30;
                    default:
                        return 31
                }
            }
            function ja(a) {
                var b, c = a.getFullYear(),
                    d = a.getMonth(),
                    e = a.getDate();
                for (b = 1; b < d + 1; b++) e += ia(c, b);
                return e
            }
            s(ha.prototype, {
                createFunction: function() {
                    var a = new m(M, 2, 6);
                    return a.evaluate = function(a) {
                        var b, c, d, e, f, g, h, i, j, l = a[0],
                            m = a[1],
                            n = m;
                        for (k(m) && (n = T(m, 0)), b = a[2], c = [], k(b) && (c = T(b, 0)), d = [], e = [], f = 0, g = n.length; f < g; f++) h = n[f], h && (i = h[0], i && i.getFullYear() === l && (j = ja(i) - 1, d[j] = h[1], c.length > 0 && (e[j] = c[f][0])));
                        return c.length > 0 ? {
                            year: l,
                            values: d,
                            colors: e
                        } : {
                            year: l,
                            values: d,
                            emptyColor: b,
                            startColor: a[3],
                            middleColor: a[4],
                            endColor: a[5]
                        }
                    }, a.acceptsReference = function(a) {
                        return 1 === a || 2 === a
                    }, a
                },
                paint: u[M]
            }), j.YearSparkline = ha;

            function ka(a, b) {
                function c(a) {
                    var b, c, d, e, f, g = {},
                        h = !1,
                        i = !0,
                        j = "",
                        k = "";
                    if (a) {
                        for (a = a.substr(1, a.length - 2), b = 0, c = a.length; b < c; b++) d = a.charAt(b), ":" === d ? i = !1 : "," !== d || h ? "'" === d || '"' === d || ("(" === d ? h = !0 : ")" === d && (h = !1), i ? j += d : k += d) : (g[j] = k, j = "", k = "", i = !0);
                        j && (g[j] = k);
                        for (e in g) g.hasOwnProperty(e) && (f = g[e], o(f) || ("TRUE" === f.toUpperCase() ? g[e] = !0 : "FALSE" === f.toUpperCase() ? g[e] = !1 : !w(f) && isFinite(f) && (g[e] = x(f))))
                    }
                    return g
                }
                function d(a) {
                    return new f.Range(a.getRow(0), a.getColumn(0), a.getRowCount(0), a.getColumnCount(0))
                }
                var e = new m(a, 2, 5);
                return e.evaluate = function(a) {
                    var e, f, g, i, j, l, m, n, p, q, r, s, t, u = a[0];
                    if (k(u) && (e = u.getRangeCount(), e > 0)) {
                        f = d(u), g = u.getSource().getSheet().name(), i = a[1], j = a[2], k(j) && (n = j.getSource().getSheet().name(), e = j.getRangeCount(), e > 0 && (l = d(j), m = a[3])), p = c(a[4] || "{}"), q = {
                            ac: "axisColor",
                            fmc: "firstMarkerColor",
                            hmc: "highMarkerColor",
                            lastmc: "lastMarkerColor",
                            lowmc: "lowMarkerColor",
                            mc: "markersColor",
                            nc: "negativeColor",
                            sc: "seriesColor",
                            deca: "displayEmptyCellsAs",
                            rtl: "rightToLeft",
                            dh: "displayHidden",
                            dxa: "displayXAxis",
                            sf: "showFirst",
                            sh: "showHigh",
                            slast: "showLast",
                            slow: "showLow",
                            sn: "showNegative",
                            sm: "showMarkers",
                            mmax: "manualMax",
                            mmin: "manualMin",
                            maxat: "maxAxisType",
                            minat: "minAxisType",
                            lw: "lineWeight"
                        };
                        for (r in q) q.hasOwnProperty(r) && p.hasOwnProperty(r) && (p[q[r]] = p[r]);
                        return s = new h.SparklineSetting(p), t = s.options, 1 === t.maxAxisType && (t.maxAxisType = 0), 1 === t.minAxisType && (t.minAxisType = 0), {
                            data: f,
                            dataSheetName: g,
                            dataOrientation: i,
                            dateAxisData: l,
                            dateAxisDataSheetName: n,
                            dateAxisOrientation: m,
                            sparklineType: b,
                            displayDateAxis: l && !o(m),
                            setting: s,
                            values: T(u, 0),
                            dateValues: T(j, 0)
                        }
                    }
                }, e.acceptsReference = R, e
            }
            function la(a, b, c, d, e, g, i) {
                var j = h.Sparkline.cT,
                    k = i.sheet,
                    l = k.parent.getSheetFromName(b.dataSheetName),
                    m = k.parent.getSheetFromName(b.dateAxisDataSheetName),
                    n = b.setting,
                    o = n.options.displayHidden,
                    p = {
                        sparklineType: b.sparklineType,
                        displayDateAxis: b.displayDateAxis,
                        zoomFactor: i.zoomFactor,
                        values: j(b.values, l || k, o, b.data, b.dataOrientation),
                        dateValues: j(b.dateValues, m || k, o, b.dateAxisData, b.dateAxisOrientation, !0),
                        settings: n,
                        getColor: function(a) {
                            if (k && a) {
                                var b = f.Rm.Om(k, a);
                                if (b) return b
                            }
                            return a
                        }
                    };
                (new t).paint(a, p, c, d, e, g)
            }
            function ma() {
                V.call(this)
            }
            r(ma, V), s(ma.prototype, {
                createFunction: function() {
                    return ka(N, 0)
                },
                paint: la
            }), j.LineSparkline = ma;

            function na() {
                V.call(this)
            }
            r(na, V), s(na.prototype, {
                createFunction: function() {
                    return ka(O, 1)
                },
                paint: la
            }), j.ColumnSparkline = na;

            function oa() {
                V.call(this)
            }
            r(oa, V), s(oa.prototype, {
                createFunction: function() {
                    return ka(P, 2)
                },
                paint: la
            }), j.WinlossSparkline = oa, d = {};

            function pa(a) {
                a && (d[a.name()] = a)
            }
            m && (pa(new W), pa(new X), pa(new Y), pa(new Z), pa(new $), pa(new _), pa(new aa), pa(new ba), pa(new ca), pa(new da), pa(new ea), pa(new fa), pa(new ga), pa(new ha), pa(new ma), pa(new na), pa(new oa)), s(q.prototype, {
                addSparklineEx: function(a) {
                    this.dT || (this.dT = {});
                    var b = this.dT;
                    a && (b[a.name()] = a)
                },
                getSparklineEx: function(a) {
                    var b, c = d[a];
                    return c ? c : (b = this.dT, b && b[a])
                },
                removeSparklineEx: function(a) {
                    var b = this.dT;
                    b && (b[a] = void 0)
                }
            }), q.$n("sparklineEx", {
                toJson: function(a) {
                    var b, c, d, e = this.dT,
                        f = [];
                    if (e) {
                        for (b in e) e.hasOwnProperty(b) && (c = e[b], d = c.toJSON(), d && d.typeName && f.push(d));
                        f.length > 0 && (a.sparklineExs = f)
                    }
                },
                fromJson: function(a) {
                    var b, c, d, e, g = a.sparklineExs;
                    if (g) for (b = 0; b < g.length; b++) c = g[b], d = f.getTypeFromString(c.typeName), d && (e = new d, e.fromJSON(c), this.addSparklineEx(e))
                }
            }), a.exports = j
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(118);
            c(119), c(120), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q = c(87),
                r = q.Commands,
                s = q.Worksheet,
                t = null,
                u = void 0,
                v = Math.max,
                w = Math.min,
                x = Math.floor,
                y = Math.atan2,
                z = Math.abs,
                A = "default",
                B = q.GC$,
                C = B.extend,
                D = q.Ul.Nl,
                E = c(26),
                F = E.k,
                G = "comment",
                H = q.Vl,
                I = q.En,
                J = q.Ul,
                K = q.Events,
                L = J.nl,
                M = J.Rl,
                N = J.Voa,
                O = parseFloat,
                P = E.u,
                Q = q.Bn,
                R = document,
                S = "mouse",
                T = "move",
                U = S + "down",
                V = S + T,
                W = S + "up",
                X = S + "wheel",
                Y = "DOMMouseScroll",
                Z = "left",
                $ = "top",
                _ = "right",
                aa = "bottom",
                ba = "width",
                ca = "height",
                da = "position",
                ea = "absolute",
                fa = "overflow",
                ga = "visible",
                ha = "z-index",
                ia = "hidden",
                ja = "box-sizing",
                ka = "content-box",
                la = "padding",
                ma = "px",
                na = "div",
                oa = ".comment",
                pa = ".floatBlockCanvas",
                qa = ".hostContainer",
                ra = ".lineCanvasContainer",
                sa = ".host",
                ta = ".editor",
                ua = "gc-spread-",
                va = "className",
                wa = "cursor",
                xa = "text",
                ya = 701,
                za = 898,
                Aa = "gc-no-user-select",
                Ba = " ",
                Ca = "unselectable",
                Da = "on",
                Ea = "comment_editor",
                Fa = "comment_indicator",
                Ga = "font-family",
                Ha = "font-style",
                Ia = "font-size",
                Ja = "font-weight",
                Ka = "color",
                La = "background-" + Ka,
                Ma = xa + "-align",
                Na = xa + "-decoration",
                Oa = "textArea",
                Pa = ".lineCanvas",
                Qa = ".commentDocument",
                Ra = "-resize",
                Sa = "line-height";

            function Ta(a, b) {
                return new q.Point(a, b)
            }
            function Ua(a, b, c, d) {
                return new q.Rect(a, b, c, d)
            }
            function Va(a) {
                return a.height
            }
            function Wa(a) {
                return a.width
            }
            function Xa(a, b) {
                var c = a.options;
                return !c.isProtected || c.protectionOptions.allowEditObjects || b && !b.locked()
            }
            C(s.prototype, {
                RP: function(a) {
                    var b, c, d, e, f, g = this,
                        h = g.nQ();
                    if (!g.fI) for (b = g.am(), d = 0; d <= 2; d++) for (e = 0; e <= 2; e++) c = b.Ft(d, e), c && 0 !== Wa(c) && 0 !== Va(c) && (a && !c.intersectRect(a) || (f = g.ITa.Ky, h && f && h.fT(f)))
                }
            }), b = q.CellRange, b.prototype.comment = function(a) {
                var b = this,
                    c = b.sheet,
                    d = b.row,
                    e = b.col;
                return 0 === arguments.length ? c.ITa.Ky.get(d, e) : (a instanceof j && c.ITa.Ky.Cz(d, e, a), b)
            }, d = function(a, b) {
                var c = a.Vs(),
                    d = a.hitTest(b.pageX - c.left, b.pageY - c.top);
                d && _a(a, d)
            }, e = function(a, b) {
                var c = b.ITa.Ky;
                b.bind(K.TopRowChanged + oa, function() {
                    c.cQ()
                }), b.bind(K.LeftColumnChanged + oa, function() {
                    c.cQ()
                }), a.bind(U + oa, function() {
                    c.vQ()
                }).bind(X + oa, function(a) {
                    d(b, a)
                }).bind(V + oa, function(a) {
                    d(b, a)
                })
            }, f = function(a, b) {
                b.unbind(oa), a.unbind(oa)
            };

            function Ya(a, b, c, d, e) {
                var f, g, h, i, j, k, l = this,
                    m = l.ITa.Ky;
                if (a && m) for (g = m.all(), h = 0; h < g.length; h++) f = g[h], i = f.nT, j = f.oT, i === b && j === c || i >= b && i < b + d && j >= c && j < c + e && m.remove(i, j);
                f = m.get(b, c), f && (k = m.pT(f), k && k.qT())
            }
            function Za() {
                var a = this,
                    b = a.nQ();
                b && b.rT(a)
            }
            function $a(a, b, c) {
                var d = this,
                    e = d.nQ();
                e && e.sT(a, b, c)
            }
            function _a(a, b) {
                var c, d = -1,
                    e = -1;
                if (b && b.rowViewportIndex >= 0 && b.colViewportIndex >= 0 && (d = b.row, e = b.col), a.parent) {
                    if (d < 0 || e < 0) return;
                    c = a.ITa.Ky.get(d, e), a.ITa.Ky.tT(c)
                }
            }
            function ab(a, b) {
                return a && a.getRowHeight(b)
            }
            function bb(a, b) {
                return a && a.getColumnWidth(b)
            }
            function cb(a, b) {
                return a && a.getViewportLeftColumn(b)
            }
            function db(a, b) {
                return a && a.getViewportTopRow(b)
            }
            K.CommentChanged = "CommentChanged", g = {
                active: 1,
                edit: 2,
                normal: 3
            }, h = {
                alwaysShown: 1,
                hoverShown: 2
            }, i = function() {
                function a(a, b, c, d) {
                    var e = this;
                    arguments.length <= 1 ? e[$] = e[_] = e[aa] = e[Z] = a || 0 : (e[$] = a, e[_] = b, e[aa] = c, e[Z] = d)
                }
                return a.prototype = {
                    constructor: a,
                    clone: function() {
                        var b = this;
                        return new a(b[$], b[_], b[aa], b[Z])
                    },
                    toString: function() {
                        var a = this,
                            b = "",
                            c = [$, _, aa, Z];
                        return c.forEach(function(c) {
                            b += a[c] + ma + Ba
                        }), b.trim()
                    }
                }, a
            }(), j = function() {
                var a, b, c, d;

                function e(a) {
                    var b = this;
                    b.nT = -1, b.oT = -1, b.text(a || ""), b.zIndex(za)
                }
                a = [];

                function f(b, c, d) {
                    return a.push(b), q.Ul.Pl(b, c, g(b), d)
                }
                function g(a) {
                    var b = a;
                    return function(a, c) {
                        var d = this,
                            e = d.kj;
                        e && (e.ITa.UUa({
                            type: "property",
                            comment: d,
                            name: b,
                            value: c
                        }), e.Xq <= 0 && e.RP(), e.Wq(K.CommentChanged, {
                            sheet: e,
                            sheetName: e.name(),
                            comment: d,
                            propertyName: b
                        }))
                    }
                }
                return b = [
                    [xa, ""],
                    ["location", Ta(9, -18)],
                    [ba, 160, function(a) {
                        return a > 0
                    }],
                    [ca, 100, function(a) {
                        return a > 0
                    }],
                    ["fontFamily", "Arial"],
                    ["fontStyle", "normal"],
                    ["fontSize", "9pt", function(a) {
                        return /^\d+pt$/.test(a) && parseInt(a) > 0
                    }],
                    ["fontWeight", "normal"],
                    ["textDecoration", 0],
                    ["foreColor", "black"],
                    ["locked", !0],
                    ["lockText", !0],
                    ["horizontalAlign", 0],
                    ["autoSize", !1],
                    ["dynamicSize", !0, function(a) {
                        return "boolean" == typeof a && this.dynamicMove()
                    }],
                    ["dynamicMove", !0, function(a) {
                        return a || this.dynamicSize(!1), !0
                    }],
                    ["backColor", "#FFFFE1"],
                    ["opacity", 1, function(a) {
                        return a >= 0 && a <= 1
                    }],
                    ["borderWidth", 1, function(a) {
                        return a >= 1
                    }],
                    ["borderStyle", "solid"],
                    ["borderColor", "black"],
                    ["padding"],
                    ["showShadow", !1],
                    ["displayMode", 2],
                    ["commentState", 3],
                    ["zIndex", -1],
                    ["ignoreDefaultLocation", !1]
                ], c = {
                    clone: function() {
                        var b = this,
                            c = new e;
                        return a.forEach(function(a) {
                            var d = b[a]();
                            b[a].isDefault && b[a].isDefault(d) || c[a](d && d.clone ? d.clone() : d)
                        }), c.kj = b.kj, c.nT = b.nT, c.oT = b.oT, c
                    },
                    toJSON: function() {
                        var b = this,
                            c = {
                                rowIndex: b.nT,
                                colIndex: b.oT
                            };
                        return a.forEach(function(a) {
                            var d = b[a]();
                            b[a].isDefault && b[a].isDefault(d) || (c[a] = d && d.clone ? d.clone() : d)
                        }), c
                    },
                    fromJSON: function(b) {
                        if (b) {
                            var c = this;
                            a.forEach(function(a) {
                                var d = b[a];
                                d !== u && ("location" === a ? c.location(new q.Point(d.x, d.y), !1) : "padding" === a ? c.padding(new i(d.top, d.right, d.bottom, d.left), !1) : c[a](d, !1))
                            }), b.rowIndex !== u && (c.nT = b.rowIndex), b.colIndex !== u && (c.oT = b.colIndex)
                        }
                    }
                }, b.forEach(function(a) {
                    c[a[0]] = f(a[0], a[1], a[2])
                }), d = c.zIndex, c.zIndex = function() {
                    var a, b, c = d.apply(this, arguments);
                    return 0 === arguments.length && c === za && (a = this.kj.comments.wTa, b = this.mi, c = za - (a - 1 - b)), c
                }, C(e.prototype, c), e
            }(), k = function() {
                function a(a, b) {
                    var c, d = this,
                        e = a && a.kj;
                    d.WE = 1, d.aS = 1, d.kT = a, d.vT(), d._zoomFactor = e.zoom(), d.wT = b, d.BF = b.xT, d.ad(), c = d.yT(d.zT(), a.width(), a.height()), d.AT = Ta(c.x, c.y), d.BT(), d.CT()
                }
                q.Zn(a);

                function b(a, b, c, d, e) {
                    var f = Ua(b, c, d, d);
                    f.cursor = e, a.push(f)
                }
                function c(a, b, c, d) {
                    B(a.DT).css(b, c), B(a.ET).css(b, d)
                }
                function d(a, b) {
                    var c, d = a.length,
                        e = 0;
                    for (c = 0; c < d; c++) e += N(a[c], b);
                    return e
                }
                return a.prototype = {
                    constructor: a,
                    ad: function() {
                        var b = this,
                            c = b.kT.kj;
                        b.FT = ua + "floatBlockCanvas", b.GT = ua + "host-container", b.HT = ua + "host", b.IT = ua + "lineCanvas", b.JT = D(na), B(b.JT).addClass(ua + "floatBlockCanvas-container").css([da, fa, ja], [ea, ia, ka]), b.DT = D("canvas"), I.Kn(b.DT, null, c), B(b.DT).addClass(b.FT).css([Z, $, da], [0, 0, ea]), b.ET = D(na), B(b.ET).addClass(b.GT).css([da, ja, fa], [ea, ka, ia]), b.qo = D(na), B(b.qo).addClass(b.HT + Ba + Aa).css([Z, $, ba, ca, da, "word-wrap", "word-break", "white-space", fa, ja, Ca, Sa], [0, 0, "100%", "100%", ea, "break-word", "normal", "pre-wrap", ia, ka, Da, "normal"]), B(b.ET).append(b.qo), B(b.JT).append(b.DT).append(b.ET), b.KT = D(na), B(b.KT).addClass(ua + "lineCanvas-container").css([da, fa, "pointer-events"], [ea, ia, "none"]), b.LT = D("canvas"), I.Kn(b.LT, t, c), B(b.LT).addClass(b.IT).css([Z, _, da], [0, 0, ea]), B(b.KT).append(b.LT), b.MT = [], b.NT = 7, b.qS = !1, b.kv = !1, a.ao(b, "init", [b.DT, b.qo])
                    },
                    OT: function() {
                        var a = this,
                            b = a.kT.kj;
                        !a.PT && b && (a.PT = b.nQ().PT), a.PT && (a.PT.appendChild(a.KT), a.QT(), a.PT.appendChild(a.JT), a.RT(a.DT, pa), a.RT(a.ET, qa), a.ST() ? a.TT() : a.UT(), a.AT = a.zT(), a.VT())
                    },
                    WT: function() {
                        var a = this;
                        a.JT && a.KT && a.PT && (a.XT(a.DT, pa), a.XT(a.ET, qa), a.YT(), a.ZT(), a.$T(), B(a.JT).remove(), B(a.KT).remove())
                    },
                    _T: function() {
                        return this.kT.width() * this._zoomFactor
                    },
                    aU: function() {
                        return this.kT.height() * this._zoomFactor
                    },
                    zT: function() {
                        var a = this,
                            b = a.kT;
                        return b !== a.wT.bU || 3 !== b.commentState() || b.ignoreDefaultLocation() ? a.cU(b.location()) : (b._3 = a.cU(Ta(9, -18)), b._3)
                    },
                    cU: function(a) {
                        var b, c, d = this,
                            e = d.kT,
                            f = e && e.kj,
                            g = d._zoomFactor,
                            h = Ta(0, 0);
                        return f && (b = d.dU(f, e.nT, e.oT, d.WE, d.aS), b.x !== t && void 0 !== b.x && b.y !== t && void 0 !== b.y && Wa(b) && Va(b) && (c = f.am(), h.x = b.x + Wa(b) + a.x * g - c.Br, h.y = b.y + a.y * g - c.Cr)), h
                    },
                    dU: function(a, b, c, d, e) {
                        var f, g, h, i = this,
                            j = Ua(0, 0, 0, 0),
                            k = a.am(),
                            l = db(a, d),
                            m = cb(a, e),
                            n = i._zoomFactor,
                            o = M(a, m, c, !1),
                            p = M(a, l, b, !0);
                        return b >= l ? j.y = p : j.y = -p, c >= m ? j.x = o : j.x = -o, f = a.getSpan(b, c), f !== u && f !== t ? (j.height = M(a, b, b + f.rowCount, !0), j.width = M(a, c, c + f.colCount, !1)) : (j[ca] = ab(a, b) * n, j[ba] = bb(a, c) * n), j.x += k.Br, j.y += k.Cr, g = k.hs, h = k.fs, 1 === d ? j.y += h : 2 === d && (j.y += h + k.jr), 1 === e ? j.x += g : 2 === e && (j.x += g + k.er), j
                    },
                    eU: function(a) {
                        var b, c, d = this,
                            e = d.kT,
                            f = e && e.kj,
                            g = d._zoomFactor,
                            h = Ta(0, 0);
                        return f && (b = d.dU(f, e.nT, e.oT, d.WE, d.aS), b.x !== t && b.x !== u && b.y !== t && b.y !== u && Wa(b) && Va(b) && (c = f.am(), h.x = (a.x - (b.x + Wa(b) - c.Br)) / g, h.y = (a.y - (b.y - c.Cr)) / g)), h
                    },
                    fU: function() {
                        var a = this;
                        a.AT = a.zT(), a.BT(), a.CT(), a.VT()
                    },
                    gU: function() {
                        var a = this;
                        a.AT = a.zT(), a.CT()
                    },
                    hU: function() {
                        var a, b = this,
                            c = b.kT;
                        c.dynamicMove() ? c.dynamicSize() ? b.iU() : (b.jU(), b.CT()) : (b.BT(), b.CT(), a = b.eU(b.AT === c._3 ? b.zT() : b.AT), c.location(a))
                    },
                    qT: function() {
                        var a = this;
                        a.AT = a.zT(), a.VT()
                    },
                    jU: function() {
                        var a = this,
                            b = a.kT,
                            c = a.kU();
                        a.AT = c, b.location(a.eU(c), !1), a.VT()
                    },
                    kU: function() {
                        var a, b, c, d, e, f, g, h = this,
                            i = h.kT,
                            j = i && i.kj,
                            k = h._zoomFactor,
                            l = cb(j, h.aS),
                            m = db(j, h.WE),
                            n = 0;
                        for (a = 0; a < h.aS; a++) n += j.getViewportWidth(a);
                        for (b = M(j, l, h.lU, !1), l < h.lU ? n += b : n -= b, c = bb(j, h.lU), c < h.mU && (h.mU = c), n += h.mU * k, d = 0, e = 0; e < h.aS; e++) d += j.getViewportHeight(e);
                        return f = M(j, m, h.nU, !0), m < h.nU ? d += f : d -= f, g = ab(j, h.nU), g < h.oU && (h.oU = g), d += h.oU * k, Ta(n, d)
                    },
                    pU: function() {
                        var a, b, c, d, e = this,
                            f = e.kT,
                            g = f && f.kj,
                            h = M(g, e.lU, e.mT, !1),
                            i = bb(g, e.lU);
                        i < e.mU && (e.mU = i), a = bb(g, e.mT), a < e.qU && (e.qU = a), h = h - e.mU + e.qU, b = M(g, e.nU, e.lT, !0), c = ab(g, e.nU), c < e.oU && (e.oU = c), d = ab(g, e.lT), d < e.rU && (e.rU = d), b = b - e.oU + e.rU, f.width(h), f.height(b)
                    },
                    iU: function() {
                        var a = this;
                        a.pU(), a.jU()
                    },
                    BT: function() {
                        var a, b, c, d, e, f, g, h, i, j, k, l = this,
                            m = l.kT,
                            n = m && m.kj,
                            o = l._zoomFactor;
                        if (l.AT) {
                            for (a = cb(n, l.aS), b = db(n, l.WE), 0 === l.aS ? c = l.AT.x : 1 === l.aS ? c = l.AT.x - n.getViewportWidth(0) : 2 === l.aS && (c = l.AT.x - (n.getViewportWidth(0) + n.getViewportWidth(1))), 0 === l.WE ? d = l.AT.y : 1 === l.WE ? d = l.AT.y - n.getViewportHeight(0) : 2 === l.WE && (d = l.AT.y - (n.getViewportHeight(0) + n.getViewportHeight(1))), e = Ta(c, d), f = 0, g = 0, h = a; h < n.getColumnCount(); h++) {
                                if (i = bb(n, h) * o, !(f + i < e.x)) {
                                    l.lU = h, l.mU = (e.x - f) / o;
                                    break
                                }
                                f += i
                            }
                            for (j = b; j < n.getRowCount(); j++) {
                                if (k = ab(n, j) * o, !(g + k < e.y)) {
                                    l.nU = j, l.oU = (e.y - g) / o;
                                    break
                                }
                                g += k
                            }
                        }
                    },
                    CT: function() {
                        var a, b, c, d, e, f, g, h, i, j, k, l = this,
                            m = l.kT,
                            n = m && m.kj,
                            o = l._zoomFactor;
                        if (l.AT) {
                            for (a = cb(n, l.aS), b = db(n, l.WE), 0 === l.aS ? c = l.AT.x + l._T() : 1 === l.aS ? c = l.AT.x + l._T() - n.getViewportWidth(0) : 2 === l.aS && (c = l.AT.x + l._T() - (n.getViewportWidth(0) + n.getViewportWidth(1))), 0 === l.WE ? d = l.AT.y + l.aU() : 1 === l.WE ? d = l.AT.y + l.aU() - n.getViewportHeight(0) : 2 === l.WE && (d = l.AT.y + l.aU() - (n.getViewportHeight(0) + n.getViewportHeight(1))), e = Ta(c, d), f = 0, g = 0, h = a; h < n.getColumnCount(); h++) {
                                if (i = bb(n, h) * o, !(f + i < e.x)) {
                                    l.mT = h, l.qU = (e.x - f) / o;
                                    break
                                }
                                f += i
                            }
                            for (j = b; j < n.getRowCount(); j++) {
                                if (k = ab(n, j) * o, !(g + k < e.y)) {
                                    l.lT = j, l.rU = (e.y - g) / o;
                                    break
                                }
                                g += k
                            }
                        }
                    },
                    rI: function(a, b) {
                        var c = this,
                            d = c.kT;
                        a <= c.nU ? d.dynamicMove() && (c.nU += b, c.lT += b) : a > c.nU && a <= c.lT && d.dynamicSize() && (c.lT += b), c.iU()
                    },
                    tI: function(a, b) {
                        var c = this,
                            d = c.kT;
                        a <= c.lU ? d.dynamicMove() && (c.lU += b, c.mT += b) : a > c.lU && a <= c.mT && d.dynamicSize() && (c.mT += b), c.iU()
                    },
                    GR: function(a, b) {
                        var c = this,
                            d = c.kT,
                            e = a + b - 1;
                        a < c.nU ? e < c.nU ? d.dynamicMove() && (c.nU -= b, c.lT -= b) : e < c.lT && d.dynamicMove() && (d.dynamicSize() ? c.lT -= b : c.lT -= c.nU - a + 1, c.nU = a, c.oU = 0) : a <= c.lT && (e < c.lT ? d.dynamicSize() && (c.lT -= b) : d.dynamicSize() && (c.lT = a, c.rU = 0)), c.iU()
                    },
                    HR: function(a, b) {
                        var c = this,
                            d = c.kT,
                            e = a + b - 1;
                        a < c.lU ? e < c.lU ? d.dynamicMove() && (c.lU -= b, c.mT -= b) : e < c.mT && d.dynamicMove() && (d.dynamicSize() ? c.mT -= b : c.mT -= c.lU - a + 1, c.lU = a, c.mU = 0) : a <= c.mT && (e < c.mT ? d.dynamicSize() && (c.mT -= b) : d.dynamicSize() && (c.mT = a, c.qU = 0)), c.iU()
                    },
                    VT: function() {
                        var a, b = this,
                            c = b.kT,
                            d = c.kj;
                        b.sU() && (a = d.zoom(), b._zoomFactor !== a ? (b._zoomFactor = a, b.AT = b.kU()) : (b._zoomFactor = a, b.AT !== c._3 || 1 !== c.displayMode() && 2 !== c.commentState() || (b.AT = b.zT())), b.vT(), b.tU(), b.uU(), b.vU(), b.wU(), J.Ml.chrome && b.xU())
                    },
                    tU: function() {
                        var a = this,
                            b = a.kT.kj,
                            c = b.parent && b.parent.options.useTouchLayout;
                        c ? a.NT = 11 : a.NT = 7
                    },
                    vT: function() {
                        var a = this,
                            b = a.kT,
                            c = b.kj;
                        a.WE = c.Er(b.nT), a.aS = c.Fr(b.oT)
                    },
                    uU: function() {
                        var a = this,
                            b = a.kT,
                            c = 2 === b.commentState() ? a.BF : a.qo;
                        a.yU(), a.zU(c), a.AU(c), a.BU(c), a.CU()
                    },
                    AU: function(a) {
                        var b = this,
                            c = b.kT;
                        a === b.qo && (a.innerHTML = P.Ob(c.text()))
                    },
                    BU: function(a) {
                        var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s = this,
                            t = s.kT,
                            u = 2 === t.commentState() || 1 === t.displayMode() ? s.zT() : s.AT,
                            x = s._zoomFactor;
                        u && (b = s.kv ? s.yT(u, t.width(), t.height()) : s.yT(u), s.DU(b), d = Wa(b) * x, e = Va(b) * x, f = b.x, g = b.y, h = f + d, i = g + e, j = s.NT, k = s.EU(s.WE, s.aS), f < k.x ? (c(s, Z, f - k.x, f + j - k.x), d += f - k.x, f = k.x) : (c(s, Z, 0, j), h > k.x + Wa(k) && (d += k.x + Wa(k) - 1 - h)), d = w(Wa(k) - 1, d), g < k.y ? (c(s, $, g - k.y, g + j - k.y), e += g - k.y, g = k.y) : (c(s, $, 0, j), i > k.y + Va(k) && (e += k.y + Va(k) - 1 - i)), e = w(Va(k) - 1, e), B(s.JT).css({
                            left: f,
                            top: g,
                            width: d,
                            height: e
                        }), l = d, m = e, I.Pn(s.DT, l, m), n = v(0, l - 2 * (j + t.borderWidth())), o = v(0, m - 2 * (j + t.borderWidth())), B(s.ET).css({
                            width: n,
                            height: o
                        }), p = n, q = o, r = t.padding(), r && (p -= Math.ceil(O(r.left) + O(r.right)), q -= Math.ceil(O(r.top) + O(r.bottom))), B(a).css({
                            width: v(0, p),
                            height: v(0, q)
                        }))
                    },
                    DU: function(a) {
                        var b, c, d, e, f = this,
                            g = f.kT,
                            h = f.AT;
                        a.x === h.x && a.y === h.y && Wa(a) === g.width() && Va(a) === g.height() || (b = f.eU(Ta(a.x, a.y)), c = Wa(a), d = Va(a), e = g.location(), b.x === e.x && b.y === e.y || g.location(b, !1), c !== g.width() && g.width(c, !1), d !== g.height() && g.height(d, !1), g.dynamicMove() && (f.AT = Ta(a.x, a.y)))
                    },
                    CU: function() {
                        var a = this,
                            b = a.kT,
                            c = b && b.kj;
                        Xa(c) ? (a.RT(a.DT, pa), a.RT(a.ET, qa), a.QT(), a.UT(), a.TT()) : (b.locked() ? (a.XT(a.DT, pa), a.FU(a.DT), a.XT(a.ET, qa), a.FU(a.ET), a.DT.style.cursor = A, a.ET.style.cursor = A) : (a.RT(a.DT, pa), a.RT(a.ET, qa)), b.lockText() ? (a.YT(), a.FU(a.qo), a.$T(), a.FU(a.BF), (b.locked() || 1 !== b.commentState()) && b.commentState(3), a.qo.style.cursor = b.locked() ? A : T) : (a.UT(), a.TT()), a.QT())
                    },
                    yU: function() {
                        var a = this,
                            b = a.kT,
                            c = a.wT,
                            d = b && b.kj;
                        switch (b.commentState()) {
                            case 1:
                                c.GU(b), a.ST() && a.HU(), d.getSelections().length > 0 && d.EJ(), H.Zl(d);
                                break;
                            case 2:
                                c.GU(b), a.ST() || a.IU(), d.getSelections().length > 0 && d.EJ(), H.Zl(t);
                                break;
                            case 3:
                                b === c.JU() && (c.vQ(), 0 === d.getSelections().length && d.GJ())
                        }
                    },
                    zU: function(a) {
                        var b, c, d, e, f;

                        function g(a, b, c) {
                            var d, e;
                            return c ? (d = E.pc, e = d.ec(a), e.a = b, d.bc(e)) : a
                        }
                        b = this, c = b.kT, d = B(a), d.css("font-family", c.fontFamily()).css("font-style", c.fontStyle()).css("font-size", parseInt(c.fontSize()) * b._zoomFactor + "pt").css("font-weight", c.fontWeight()), d.css("text-decoration", q.To.So(c.textDecoration())), e = {
                            0: "left",
                            1: "center",
                            2: "right",
                            3: "general"
                        }, d.css("text-align", e[c.horizontalAlign()]), c.padding() ? d.css(la, "" + c.padding()) : d.css(la, "0px"), d.css("background-color", g(c.backColor(), c.opacity(), a === b.qo)).css("color", c.foreColor()), B(b.ET).css("border-width", c.borderWidth()).css("border-style", c.borderStyle()).css("border-color", c.borderColor()), f = b.wT.KU(c), B(b.KT).css(ha, f), B(b.JT).css(ha, f)
                    },
                    xU: function() {
                        var a, b, c, d = this,
                            e = this.kT.kj,
                            f = B(d.ET);
                        e && f && (a = e.Vs(), b = a.left - Math.floor(a.left) >= .5 ? .5 : 0, c = a.top - Math.floor(a.top) >= .5 ? .5 : 0, f.css(Z, O(f.css(Z)) + b), f.css($, O(f.css($)) + c))
                    },
                    vU: function() {
                        var a, b, c, d, e, f, g, h, i, j = this,
                            k = j.kT,
                            l = k.kj,
                            m = j.dU(l, k.nT, k.oT, j.WE, j.aS),
                            n = l.am(),
                            o = m.x + Wa(m) - n.Br,
                            p = m.y - n.Cr,
                            q = Ta(o, p),
                            r = B(j.JT).position(),
                            s = B(j.ET).position(),
                            t = B(j.ET);
                        a = r.left + s.left > q.x ? Ta(r.left + s.left, r.top + s.top) : r.top + s.top + t.height() < q.y ? Ta(r.left + s.left + t.width(), r.top + s.top + t.height()) : Ta(r.left + s.left + t.width(), r.top + s.top), b = j.NT, c = z(q.x - a.x) + 2 * b, d = z(q.y - a.y) + 2 * b, e = w(q.x, a.x) - b, f = w(q.y, a.y) - b, g = e + c, h = f + d, i = j.EU(j.WE, j.aS), e < i.x && (c -= i.x - e, e = i.x), g > i.x + Wa(i) && (c -= g - (i.x + Wa(i))), c = w(Wa(i), c), f < i.y && (d -= i.y - f, f = i.y), h > i.y + Va(i) && (d -= h - (i.y + Va(i))), d = w(Va(i), d), B(j.KT).css(Z, e).css($, f).css(ba, c).css(ca, d), I.Pn(j.LT, c, d), q.x = q.x - e, q.y = q.y - f, a.x = a.x - e, a.y = a.y - f, j.LU(q, a)
                    },
                    LU: function(a, b) {
                        var c, d, e, f = this;
                        f.MU || (f.MU = f.LT.getContext("2d")), c = f.MU, d = f.kT.borderColor(), c.strokeStyle = d, c.clearRect(0, 0, I.Nn(f.LT), I.On(f.LT)), c.beginPath(), c.moveTo(a.x, a.y), c.lineTo(b.x, b.y), c.stroke(), c.save(), Q.Dn(c, a.x, a.y), c.fillStyle = d, c.beginPath(), e = y(b.y - a.y, b.x - a.x), c.rotate(e), c.moveTo(0, 0), c.lineTo(7, -4), c.lineTo(7, 4), c.lineTo(0, 0), c.fill(), Q.Dn(c, -a.x, -a.y), c.closePath(), c.restore()
                    },
                    wU: function() {
                        var a, b, c, d, e, f, g, h = this,
                            i = h.kT,
                            j = i.kj;
                        h.NU = h.kT.commentState(), h.OU || (h.OU = h.DT.getContext("2d")), a = h.OU, b = I.Nn(h.DT), c = I.On(h.DT), d = B(h.ET).outerWidth(), e = B(h.ET).outerHeight(), f = h.NT, a.clearRect(0, 0, b, c), h.kT.showShadow() && (h.QU(a, b, c), g = 2 * (f + 2), a.clearRect(f, f, b - g, c - g), h.PU(a, f, d, e)), Xa(j, i) && h.RU(a, f, b, c, d, e), a.restore()
                    },
                    PU: function(a, b, c, d) {
                        a.fillRect(b + 2, d + b, c, 2), a.fillRect(c + b, b + 2, 2, d)
                    },
                    QU: function(a, b, c) {
                        var d, e, f;
                        switch (this.NU) {
                            case 1:
                                for (a.beginPath(), e = 0; e < c; e++) for (d = e % 2 === 0 ? 1 : 3; d < b;) a.moveTo(d, e), a.lineTo(d + 1, e + 1), d += 4;
                                a.stroke(), a.closePath();
                                break;
                            case 2:
                                for (a.beginPath(), d = 0, e = 0, f = 4; d < b + c;) a.moveTo(d + f, 0), a.lineTo(0, e + f), d += f, e += f;
                                a.stroke(), a.closePath()
                        }
                    },
                    RU: function(a, c, d, e, f, g) {
                        var h = this,
                            i = h.MT;
                        1 !== h.NU && 2 !== h.NU || (i.splice(0, i.length), b(i, 0, 0, c, "nw" + Ra), b(i, d - c, 0, c, "ne" + Ra), b(i, 0, e - c, c, "sw" + Ra), b(i, d - c, e - c, c, "se" + Ra), g >= 3 * c ? (b(i, 0, x(e / 2 - c / 2), c, "w" + Ra), b(i, d - c, x(e / 2 - c / 2), c, "e" + Ra)) : (i.push(t), i.push(t)), f >= 3 * c ? (b(i, x(d / 2 - c / 2), 0, c, "n" + Ra), b(i, x(d / 2 - c / 2), e - c, c, "s" + Ra)) : (i.push(t), i.push(t)), a.restore(), a.fillStyle = "white", a.strokeStyle = "#939393", a.linewidth = 1, Q.Dn(a, .5, .5), B.each(i, function(b, c) {
                            if (c) {
                                var d = c.x,
                                    e = c.y,
                                    f = Wa(c),
                                    g = Va(c);
                                a.beginPath(), a.fillRect(d, e, f - 1, g - 1), a.strokeRect(d, e, f - 1, g - 1), a.stroke(), a.closePath()
                            }
                        }), Q.Dn(a, -.5, -.5))
                    },
                    SU: function() {
                        var a, b, c, d = this,
                            e = d.EU(d.WE, d.aS);
                        d.TU ? B(d.TU).remove() : d.TU = D(na), a = B(d.TU), b = B(d.ET), a.addClass("gc-spread-moveResizeContainer").css([da, Z, $, ba, ca, "border"], [ea, d.AT.x + d.NT - e.x, d.AT.y + d.NT - e.y, b.outerWidth() - 2, b.outerHeight() - 2, "gray solid thin"]), d.UU ? B(d.UU).remove() : d.UU = D(na), c = B(d.UU), c.bind("mousemove", function(a) {
                            d.BD(a)
                        }).bind(W, function(a) {
                            d.CD(a)
                        }).css([da, fa, $, Z, ba, ca, "background", ha], [ea, ia, e.y, e.x, Wa(e), Va(e), "rgba(255,255,255,0.01)", 901]), c.append(d.TU), d.PT && d.PT.appendChild(d.UU)
                    },
                    VU: function(a) {
                        var b, c, d, e, f, g, h, i, j, k = this,
                            l = k.NT,
                            m = k._zoomFactor,
                            n = k.wT,
                            o = n.WU;
                        if (o.XU) {
                            if (b = k.YU(), c = a.pageX / m - o.x + b.x, d = a.pageY / m - o.y + b.y, 0 === c && 0 === d) return;
                            e = k.EU(k.WE, k.aS), g = B(k.TU), o.ZU < 0 ? (h = o.$U.x + c, i = o.$U.y + d, f = k.cU(Ta(h, i)), g.css([Z, $], [f.x + l - e.x, f.y + l - e.y])) : (j = k._U(c, d, o.ZU), f = k.cU(Ta(j.x, j.y)), g.css([Z, $, ba, ca], [f.x + l - e.x, f.y + l - e.y, Wa(j) * m - 2 * l - 2, Va(j) * m - 2 * l - 2]))
                        }
                    },
                    IU: function() {
                        var a, b = this,
                            c = b.kT;
                        b.ST() || (a = b.wT.xT, B(b.qo).remove(), b.YT(), B(a).remove(), B(b.ET).append(a), b.aV(a), b.BU(a), B(a).focus(), a.selectionStart = a.value.length, b.TT(), 2 !== c.commentState() && c.commentState(2))
                    },
                    HU: function() {
                        var b, c = this,
                            d = c.kT,
                            e = d.kj;
                        c.ST() && (b = c.wT.xT, c.$T(), B(b).remove(), B(c.ET).append(c.qo), c.aV(c.qo), c.UT(), a.ao(c, "detachEditor", c.qo), 2 === d.commentState() && d.commentState(3), B(b).val() !== d.text() && e.wu().execute({
                            cmd: "changeComment",
                            sheetName: e.name(),
                            row: d.nT,
                            col: d.oT,
                            oldValue: d.text(),
                            newValue: B(b).val(),
                            propertyName: xa
                        }))
                    },
                    bV: function(a) {
                        var b = this,
                            c = b.kT.kj,
                            d = -1;
                        return 0 === a || 2 === a ? d = c.getViewportHeight(a) : 1 === a && (d = M(c, c.getViewportBottomRow(0) + 1, db(c, 2) + 1, !0)), d
                    },
                    cV: function(a) {
                        var b = this,
                            c = b.kT.kj,
                            d = -1;
                        return 0 === a || 2 === a ? d = c.getViewportWidth(a) : 1 === a && (d = M(c, c.getViewportRightColumn(0) + 1, cb(c, 2) + 1, !1)), d
                    },
                    EU: function(a, b) {
                        var c = this,
                            d = c.kT.kj,
                            e = d.am(),
                            f = e.Ft(a, b);
                        return 0 === a && 0 === b || 0 === a && 2 === b || 2 === a && 0 === b || 2 === a && 2 === b ? f = Ua(0, 0, e.hs + e.er + e.js, e.fs + e.jr + e.gs) : 0 === a && 1 === b || 2 === a && 1 === b ? f = Ua(e.hs, 0, e.er, e.fs + e.jr + e.gs) : 1 === a && 0 === b || 1 === a && 2 === b ? f = Ua(0, e.fs, e.hs + e.er + e.js, e.jr) : 1 === a && 1 === b && (f = Ua(e.hs, e.fs, e.er, e.jr)), f
                    },
                    aV: function(a) {
                        var b = this,
                            c = b.kT,
                            d = B(a);
                        a !== b.BF && a !== b.qo || (a === b.BF ? a.value = c.text() : a.innerHTML = P.Ob(c.text()), d.css([Ga, Ha, Ia, Ja, Ka, La, Ma, Na], [c.fontFamily(), c.fontStyle(), c.fontSize(), c.fontWeight(), c.foreColor(), c.backColor(), c.horizontalAlign(), c.textDecoration()]), c.padding() ? d.css(la, "" + c.padding()) : d.css(la, "0px"))
                    },
                    sU: function() {
                        return this.JT && this.JT.parentNode
                    },
                    ST: function() {
                        var a = this;
                        return a.sU() && a.kT === a.wT.JU() && B(a.ET).find(Oa).length > 0
                    },
                    dV: function() {
                        var a, b = this,
                            c = b.kT.kj,
                            d = t;
                        return b.sU() && (a = c.am(), d = Ua(b.AT.x + a.zr + a.Br, b.AT.y + a.Ar + a.Cr, b._T(), b.aU())), d
                    },
                    eV: function() {
                        var a, b, c, d, e, f, g, h = this,
                            i = h.kT,
                            j = h._zoomFactor;
                        return h.sU() && (a = h.dV()) ? (f = (h.NT + i.borderWidth()) * j, g = f, b = a.x + f, c = a.y + g, d = Wa(a) - 2 * f, e = Va(a) - 2 * g, Ua(b, c, d, e)) : t
                    },
                    fV: function(a) {
                        var b, c = this,
                            d = c.kT,
                            e = d.kj,
                            f = a.target,
                            g = c.wT.WU,
                            h = f.style,
                            i = A;
                        g.XU ? f[va] !== c.HT && f[va] !== c.FT && f[va] !== c.IT && f[va] !== ua + "floatPanel" || (i = g.ZU >= 0 ? "crosshair" : T) : f[va] === c.HT ? !Xa(e) && d.lockText() ? d.locked() || (i = T) : i = xa : f[va] !== c.FT && f[va] !== c.GT || Xa(e, d) && (b = c.gV(a), i = b >= 0 && b < c.MT.length ? c.MT[b].cursor : T), h[wa] = i
                    },
                    hV: function(b) {
                        var c, d = this,
                            e = d.kT,
                            f = e && e.kj;
                        if (f.endEdit() && (f.uQ && f.uQ(), c = {
                                e: b,
                                r: t
                            }, a.ao(d, "preProcessMouseDownEdit", c), !c.r)) return d.wT.GU(e), e.commentState(2), d.CD(b), L(b)
                    },
                    iV: function(b) {
                        var c, d, e, f, g, h = this,
                            i = h.kT,
                            j = i && i.kj,
                            k = h._zoomFactor,
                            l = h.wT,
                            m = l.WU;
                        j.endEdit() && (j.uQ && j.uQ(), c = {
                            e: b,
                            r: t
                        }, a.ao(h, "preProcessMouseDownDragResize", c), c.r || (m.x = b.pageX / k, m.y = b.pageY / k, m.$U = Ua(i.location().x, i.location().y, i.width(), i.height()), m.ZU = h.gV(b), h.tC(), m.XU = !0, h.fV(b), l.GU(i), i.commentState(1), Xa(j, i) && (h.eS = {}, h.eS.jV = db(j, h.WE), h.eS.kV = cb(j, h.aS), h.SU(), m.ZU < 0 ? h.qS = !0 : h.kv = !0), d = j.mm, e = j.Vs(), f = Ta(b.pageX - e.left, b.pageY - e.top), g = j.hitTest(f.x, f.y), d.rG = {
                            KG: g.rowViewportIndex,
                            MG: g.colViewportIndex,
                            sG: g.hitTestType
                        }, d.$F = f, d.qG(), d.lV = !0, b.stopPropagation()))
                    },
                    yT: function(a, b, c) {
                        var d, e, f, g, h, i, j, k, l, m, n = this,
                            o = n.kT,
                            p = o && o.kj,
                            q = n.NT,
                            r = n._zoomFactor,
                            s = n.aS,
                            t = n.WE,
                            u = n.EU(t, s),
                            v = void 0 !== b ? b * r : n._T(),
                            w = void 0 !== c ? c * r : n.aU(),
                            x = a.x,
                            y = a.y,
                            A = p.am(),
                            B = n.dU(p, 0, 0, t, s),
                            C = a.x + (0 - (B.x - A.Br)) + v - q,
                            D = a.y + (0 - (B.y - A.Cr)) + w - q,
                            E = 0,
                            F = 0,
                            G = 0,
                            H = 0;
                        return 0 === s ? (E = 0 - q, G = Wa(A) - A.Br) : 1 === s ? (d = M(p, p.getViewportRightColumn(0) + 1, cb(p, 1), !1), E = u.x - q - d, e = n.cV(2), G = e) : 2 === s && (E = 0 - q, G = 0), x < E && (n.kv ? v -= E - x : C += E - x, x = E), 1 !== s && 2 !== s || (G += M(p, 0, p.getColumnCount(), !1, C)), C > G && (n.kv ? v -= C - G : n.qS ? x -= C - G : (f = n.wT.bU && !o.ignoreDefaultLocation() ? 9 : o.location().x, g = 2 * z(f) + bb(p, o.oT) + o.width(), h = x - g, h > E ? x = h : x < G ? v -= C - G : (h = x - g, i = C - g, i > E ? h < E ? (v -= E - h, x = E) : x = h : (h = x - (C - G), h < E ? (v -= E - h, x = E) : x = h)))), 0 === t ? (F = 0 - q, H = Va(A) - A.Cr) : 1 === t ? (j = M(p, p.getViewportBottomRow(0) + 1, db(p, 1), !0), F = u.y - q - j, k = n.bV(2), H = k) : (F = 0 - q, H = 0), y < F && (n.kv ? w -= F - y : D += F - y, y = F), 1 !== t && 2 !== t || (H += M(p, 0, p.getRowCount(), !0, D)), D > H && (n.kv ? w -= D - H : n.qS ? y -= D - H : D > H && (l = D - H, m = y - l, m < F ? (w -= F - m, y = F) : y = m)), Ua(x, y, v / r, w / r)
                    },
                    YU: function() {
                        var a = this,
                            b = a.kT.kj,
                            c = a.eS,
                            d = c.jV,
                            e = c.kV,
                            f = db(b, a.WE),
                            g = cb(b, a.aS),
                            h = M(b, d, f, !0),
                            i = M(b, e, g, !1),
                            j = e < g ? i : -i,
                            k = d < f ? h : -h;
                        return Ta(j, k)
                    },
                    mV: function(a) {
                        var b, c, d, e, f, g, h, i, j, k, l = this,
                            m = l.kT,
                            n = m && m.kj,
                            o = l._zoomFactor,
                            p = l.wT,
                            q = p.WU,
                            s = r.ChangeComment;
                        if (q.XU) {
                            if (b = l.YU(), c = a.pageX / o - q.x + b.x, d = a.pageY / o - q.y + b.y, 0 === c && 0 === d) return;
                            q.ZU < 0 ? (h = q.$U.x + c, i = q.$U.y + d, e = l.cU(Ta(h, i)), f = l.yT(e), g = l.eU(Ta(f.x, f.y)), g.x === m.location().x && g.x === m.location().y || n.wu().execute({
                                cmd: "changeComment",
                                sheetName: n.name(),
                                row: m.nT,
                                col: m.oT,
                                oldValue: m.location().clone(),
                                newValue: g,
                                propertyName: "location"
                            })) : (m.autoSize(!1), j = l._U(c, d, q.ZU), e = l.cU(Ta(j.x, j.y)), f = l.yT(e, Wa(j), Va(j)), g = l.eU(Ta(f.x, f.y)), k = [], g.x === m.location().x && g.y === m.location().y || k.push(new s(n, {
                                cmd: "changeComment",
                                sheetName: n.name(),
                                row: m.nT,
                                col: m.oT,
                                oldValue: m.location().clone(),
                                newValue: g,
                                propertyName: "location"
                            })), Wa(f) !== m.width() && k.push(new s(n, {
                                cmd: "changeComment",
                                sheetName: n.name(),
                                row: m.nT,
                                col: m.oT,
                                oldValue: m.width(),
                                newValue: f.width,
                                propertyName: ba
                            })), Va(f) !== m.height() && k.push(new s(n, {
                                cmd: "changeComment",
                                sheetName: n.name(),
                                row: m.nT,
                                col: m.oT,
                                oldValue: m.height(),
                                newValue: f.height,
                                propertyName: ca
                            })), k.length > 0 && n.wu().execute({
                                cmd: "changeCommentTransaction",
                                sheetName: n.name(),
                                commands: k
                            }))
                        }
                    },
                    BD: function(b) {
                        var c, d, e, f, g, h, i = this,
                            j = i.kT.kj;
                        if (this.fV(b), !(j.getSelections() && j.getSelections().length > 0 || (c = {
                                e: b,
                                r: t
                            }, a.ao(i, "preProcessMouseMove", c), c.r))) return d = i.wT, e = b.target, f = j.mm, g = j.Vs(), h = Ta(b.pageX - g.left, b.pageY - g.top), e && d.WU.XU && (i.TU && i.VU(b), 1 === i.WE && (f.$F.y = h.y), 1 === i.aS && (f.$F.x = h.x), f.NG()), L(b)
                    },
                    CD: function(b) {
                        var c, d, e, f, g = this,
                            h = g.kT.kj;
                        if (!(h.getSelections() && h.getSelections().length > 0 || (c = {
                                e: b,
                                r: t
                            }, a.ao(g, "preProcessMouseUp", c), c.r))) return d = b.target, e = g.wT, f = h.mm, f.lV = !1, f.RG(), d && (g.mV(b), g.UU && (B(g.UU).remove(), g.UU = null, g.qS = !1, g.kv = !1), g.uC(), e.WU.XU = !1, g.fV(b)), L(b)
                    },
                    gV: function(a) {
                        var b, c, d, e, f, g = this,
                            h = g.MT;
                        if (h.length > 0 && (1 === g.NU || 2 === g.NU)) for (b = a.target, c = a.pageX - B(b).offset().left, d = a.pageY - B(b).offset().top, e = 0; e < h.length; e++) if (f = h[e], f && f.contains(c, d)) return e;
                        return -1
                    },
                    _U: function(a, b, c) {
                        var d, e, f = this,
                            g = -1,
                            h = -1;
                        switch (c) {
                            case 0:
                                g = 0, h = 0;
                                break;
                            case 1:
                                g = 2, h = 0;
                                break;
                            case 2:
                                g = 0, h = 2;
                                break;
                            case 3:
                                g = 2, h = 2;
                                break;
                            case 4:
                                g = 0, h = 1;
                                break;
                            case 5:
                                g = 2, h = 1;
                                break;
                            case 6:
                                g = 1, h = 0;
                                break;
                            case 7:
                                g = 1, h = 2
                        }
                        return d = f.nV(a, g), e = f.oV(b, h), Ua(d.x, e.y, d.w, e.h)
                    },
                    nV: function(a, b) {
                        var c, d, e = this,
                            f = 2 * e.NT,
                            g = e.wT.WU,
                            h = Wa(g.$U) - f;
                        return 0 === b ? h -= a : 2 === b && (h += a), c = g.$U.x, h >= 0 ? 0 === b && (c += a) : 0 === b ? c += Wa(g.$U) - f : 2 === b && (c += h), d = Wa(g.$U), 1 !== b && (d = z(h) + f), {
                            x: c,
                            w: d
                        }
                    },
                    oV: function(a, b) {
                        var c, d, e = this,
                            f = 2 * e.NT,
                            g = e.wT.WU,
                            h = Va(g.$U) - f;
                        return 0 === b ? h -= a : 2 === b && (h += a), c = g.$U.y, h >= 0 ? 0 === b && (c += a) : 0 === b ? c = Va(g.$U) - f : 2 === b && (c += h), d = Va(g.$U), 1 !== b && (d = z(h) + f), {
                            y: c,
                            h: d
                        }
                    },
                    FU: function(a) {
                        var b, c, d = this,
                            e = d.kT.kj;
                        if (a) {
                            switch (b = u, a) {
                                case d.DT:
                                    b = pa;
                                    break;
                                case d.ET:
                                    b = qa;
                                    break;
                                case d.KT:
                                    b = ra;
                                    break;
                                case d.qo:
                                    b = sa;
                                    break;
                                case d.BF:
                                    b = ta
                            }
                            b && (B(a).unbind(X + b).unbind(Y + b), c = function(a) {
                                e.RF(a), L(a)
                            }, B(a).bind(X + b, c).bind(Y + b, c))
                        }
                    },
                    RT: function(a, b) {
                        var c, d = this,
                            e = d.kT,
                            f = e && e.kj;
                        d.XT(a, b), c = function(a) {
                            f && f.RF(a)
                        }, B(a).bind(U + b, function(a) {
                            d.iV(a)
                        }).bind(V + b, function(a) {
                            d.BD(a)
                        }).bind(W + b, function(a) {
                            d.CD(a)
                        }).bind(X + b, c).bind(Y + b, c)
                    },
                    XT: function(a, b) {
                        B(a).unbind(b)
                    },
                    QT: function() {
                        var a, b, c = this,
                            d = c.kT,
                            e = d && d.kj,
                            f = c.wT;
                        c.ZT(), e && (a = e.Vs(), b = function(a) {
                            e.RF(a)
                        }, B(c.LT).bind(U + Pa, function(b) {
                            var d, g, h = e.ITa.Ky.hitTest(b.pageX - a.left, b.pageY - a.top);
                            h ? (d = h.comment, g = f.pT(d), h.area === Ea ? g.hV(b) : h.area === Fa && g.iV(b), B(g.JT).css(ha, parseInt(B(c.KT).css(ha) + 1))) : e.OF(b)
                        }).bind(V + Pa, function(b) {
                            var d, g, h, i = e.ITa.Ky.hitTest(b.pageX - a.left, b.pageY - a.top),
                                j = c.LT.style;
                            i ? (d = i.comment, g = f.pT(d), g.BD(b), i.area === Ea ? j.cursor = xa : i.area === Fa && (j.cursor = T)) : (e.PF(b), c.wT.tT(t), h = e.Ws(), h && (j.cursor = h.style.cursor))
                        }).bind(W + Pa, function(b) {
                            var c, d, g = e.ITa.Ky.hitTest(b.pageX - a.left, b.pageY - a.top);
                            g ? (c = g.comment, d = f.pT(c), d.CD(b)) : e.QF(b)
                        }).bind("dblclick" + Pa, function(a) {
                            e.TF(a)
                        }).bind(X + Pa, b).bind(Y + Pa, b))
                    },
                    ZT: function() {
                        var a = this;
                        B(a.LT).unbind(Pa)
                    },
                    UT: function() {
                        var a, b = this,
                            c = b.kT,
                            d = c && c.kj;
                        2 !== c.commentState() && b.qo && (b.YT(), a = function(a) {
                            d && d.RF(a)
                        }, B(b.qo).bind(U + sa, function(a) {
                            b.hV(a)
                        }).bind(V + sa, function(a) {
                            b.BD(a)
                        }).bind(W + sa, function(a) {
                            b.CD(a)
                        }).bind(X + sa, a).bind(Y + sa, a))
                    },
                    YT: function() {
                        var a = this,
                            b = a.kT;
                        2 !== b.commentState() && a.qo && B(a.qo).unbind(sa)
                    },
                    TT: function() {
                        var a, b = this,
                            c = b.kT,
                            d = c && c.kj,
                            e = b.BF;
                        2 === c.commentState() && e && (this.$T(), a = function(a) {
                            d && (d.RF(a), J.nl(a))
                        }, B(e).bind(U + ta, function(a) {
                            a.stopPropagation()
                        }).bind(V + ta, function(a) {
                            a.stopPropagation()
                        }).bind(W + ta, function(a) {
                            a.stopPropagation()
                        }).bind(X + ta, a).bind(Y + ta, a).bind("input" + ta, function() {
                            c.autoSize() && b.pV()
                        }).bind("keydown" + ta, function(a) {
                            27 !== a.keyCode && 9 !== a.keyCode || (c.commentState(1), L(a), H.Zl(d))
                        }).bind("focusout" + ta, function() {
                            B(e).val() !== c.text() && d.wu().execute({
                                cmd: "changeComment",
                                sheetName: d.name(),
                                row: c.nT,
                                col: c.oT,
                                oldValue: c.text(),
                                newValue: B(e).val(),
                                propertyName: xa
                            })
                        }))
                    },
                    pV: function() {
                        var a, b, c, e, f, g, h, i, j, k, l, m, n, o, p, q, r = this,
                            s = r.kT,
                            t = s && s.kj;
                        if (2 === s.commentState() ? (a = r.BF, b = a.value.split("\n")) : (a = r.qo, b = P.Pb(a.innerHTML).split("\n")), c = B(a).height(), e = B(a).width(), h = 0, i = a.style, j = "", i.font ? (h = d(b, j), j += i.font) : (s.fontStyle() && (j += Ba + s.fontStyle()), s.fontWeight() && (j += Ba + s.fontWeight()), s.fontSize() && (j += Ba + s.fontSize()), s.fontFamily() && (j += Ba + s.fontFamily()), h = d(b, j)), k = h, l = 5, b && b.length > 0) {
                            for (f = k, m = 0, n = 0; n < b.length; n++) o = t.rt(b[n], j), m < o && (m = o);
                            g = v(m, l)
                        } else f = k, g = l;
                        B(a).css(ca, f).css(ba, g), 2 === s.commentState() && s.text(a.value), r.qV = !0, p = f - c, 0 !== p && s.height(s.height() + p), q = g - e, 0 !== q && s.width(s.width() + q), r.qV = !1
                    },
                    $T: function() {
                        var a = this,
                            b = a.BF;
                        b && B(b).unbind(ta)
                    },
                    tC: function() {
                        var a = this,
                            b = a.wT.WU;
                        b.XU || (B(R).bind(V + Qa, function(b) {
                            a.BD(b)
                        }).bind(W + Qa, function(b) {
                            a.CD(b)
                        }), b.XU = !0)
                    },
                    uC: function() {
                        var a = this.wT.WU;
                        a.XU && (a.XU = !1, B(R).unbind(Qa))
                    }
                }, a
            }(), l = function() {
                function a(a) {
                    var b = this;
                    b.kj = a, b.WU = {
                        XU: !1,
                        x: 0,
                        y: 0,
                        $U: t,
                        ZU: -1
                    }, b.xT = t, b.bU = t, b.rV = t, b.sV = [], b.wTa = 0, b.jT = [], b.tV(), b.uV(), b.xn = {}
                }
                return a.prototype = {
                    constructor: a,
                    dispose: function() {
                        var a = this,
                            b = a.all();
                        b.forEach(function(b) {
                            a.hT(b)
                        }), a.Uka()
                    },
                    add: function(a, b, c) {
                        var d, e, f = this,
                            g = f.kj,
                            h = g.getSpan(a, b);
                        return !h || h.row === a && h.col === b ? (d = f.get(a, b), e = "string" == typeof c ? new j(c) : c, f.Cz(a, b, e), g.Bq("comment", a, b, 3, d, e), e) : t
                    },
                    Cz: function(a, b, c) {
                        var d = this,
                            e = d.kj,
                            f = d.sV;
                        d.vV(a, b), c && (e.ITa.UUa({
                            type: "add",
                            row: a,
                            col: b
                        }), c.nT = a, c.oT = b, c.kj = e, f.push(c), c.mi = d.wTa, d.wTa++, d.JUa(a, b, c), e.$p())
                    },
                    get: function(a, b) {
                        return this.xn[a + "_" + b] || t
                    },
                    JUa: function(a, b, c) {
                        this.xn[a + "_" + b] = c
                    },
                    VUa: function(a, b, c) {
                        var d = a.nT,
                            e = a.oT;
                        this.get(d, e) === a && this.JUa(d, e, u), this.kj.ITa.UUa({
                            type: "rowcol",
                            comment: a,
                            row: d,
                            col: e
                        }), a.nT = b, a.oT = c, this.JUa(b, c, a)
                    },
                    remove: function(a, b) {
                        var c = this,
                            d = c.vV(a, b),
                            e = c.kj;
                        d && (e.Bq(G, a, b, 3, d, u), e.$p())
                    },
                    vV: function(a, b) {
                        var c = this,
                            d = c.kj,
                            e = c.get(a, b);
                        return e && (d.ITa.UUa({
                            type: "remove",
                            row: a,
                            col: b,
                            comment: e
                        }), c.hT(e), F.Fb(c.sV, e), F.Fb(c.jT, c.pT(e)), c.JUa(a, b, u)), e
                    },
                    clear: function(a) {
                        var b, c, d, e, f = this,
                            g = f.kj,
                            h = f.sV;
                        for (g.suspendPaint(), b = h.length - 1; b >= 0; b--) c = h[b], d = c.nT, e = c.oT, (!a || d >= a.row && d < a.row + a.rowCount && e >= a.col && e < a.col + a.colCount) && f.remove(d, e);
                        g.resumePaint()
                    },
                    all: function() {
                        return this.sV.concat()
                    },
                    qUa: function(a, b, c, d, e, f) {
                        (a || d) && (a && this.VUa(a, e, f), d && this.VUa(d, b, c))
                    },
                    getOuterContainer: function(a) {
                        var b = this.pT(a);
                        return b ? b.JT : t
                    },
                    tV: function() {
                        var a = D(Oa);
                        B(a).addClass("gc-comment-editor").css(Z, 0).css($, 0).css(da, ea).css("margin", 0).css(la, 0).css("word-wrap", "break-word").css("word-break", "normal").css(fa, ia).css("resize", "none").css("outline", "none").css("border", "0px").css(ja, ka).css(Sa, "normal").attr("autocomplete", "off").attr("gcUIElement", "gcEditingInput"), this.xT = a
                    },
                    uV: function() {
                        var a = this,
                            b = a.kj;
                        b && (b.Fu(K.ColumnChanged + oa, function(b, c) {
                            var d = c.propertyName;
                            d !== ba && "isVisible" !== d || a.wV()
                        }), b.Fu(K.RowChanged + oa, function(b, c) {
                            var d = c.propertyName;
                            d !== ca && "isVisible" !== d || a.wV()
                        }), b.Fu(K.ColumnWidthChanged + oa, function() {
                            a.wV()
                        }), b.Fu(K.RowHeightChanged + oa, function() {
                            a.wV()
                        }), b.Fu(K.CommentChanged + oa, function(b, c) {
                            var d, e, f, g;
                            c && (d = c.propertyName, e = c.comment, f = a.pT(e), f && (g = ["autoSize", "text", "fontFamily", "fontStyle", "fontSize", "fontWeight", "padding"], "location" === d ? f.fU() : d === ba || d === ca ? f.gU() : g.indexOf(d) >= 0 && e.autoSize() && !f.qV && f.pV()))
                        }))
                    },
                    Uka: function() {
                        var a = this,
                            b = a.kj;
                        b && b.Gu(oa)
                    },
                    pT: function(a) {
                        var b, c, d = this,
                            e = d.jT;
                        if (a) for (b = 0; b < e.length; b++) if (c = e[b], c.kT === a) return c;
                        return t
                    },
                    iT: function() {
                        return 0 === this.sV.length
                    },
                    xV: function() {
                        var a, b, c, d = this,
                            e = d.sV;
                        if (e.length > 0) {
                            for (a = e[0].zIndex(), b = 1; b < e.length; b++) c = e[b], a < c.zIndex() && (a = c.zIndex());
                            return a
                        }
                        return 0
                    },
                    rI: function(a, b) {
                        var c, d, e, f, g = this,
                            h = g.sV,
                            i = g.jT;
                        for (c = 0; c < h.length; c++) d = h[c], a <= d.nT && g.VUa(d, d.nT + b, d.oT);
                        for (e = 0; e < i.length; e++) f = i[e], f.sU() && f.rI(a, b)
                    },
                    tI: function(a, b) {
                        var c, d, e, f, g = this,
                            h = g.sV,
                            i = g.jT;
                        for (c = 0; c < h.length; c++) d = h[c], a <= d.oT && g.VUa(d, d.nT, d.oT + b);
                        for (e = 0; e < i.length; e++) f = i[e], f.sU() && f.tI(a, b)
                    },
                    GR: function(a, b) {
                        var c, d, e, f, g, h = this,
                            i = h.sV,
                            j = h.jT;
                        for (c = i.length - 1; c >= 0; c--) d = i[c], e = d.nT, f = d.oT, e >= a && e < a + b && h.remove(e, f);
                        for (c = 0; c < i.length; c++) d = i[c], a < d.nT && h.VUa(d, d.nT - b, d.oT);
                        for (c = 0; c < j.length; c++) g = j[c], g.sU() && g.GR(a, b)
                    },
                    HR: function(a, b) {
                        var c, d, e, f, g, h = this,
                            i = h.sV,
                            j = h.jT;
                        for (c = i.length - 1; c >= 0; c--) d = i[c], e = d.nT, f = d.oT, f >= a && f < a + b && h.remove(e, f);
                        for (c = 0; c < i.length; c++) d = i[c], a < d.oT && h.VUa(d, d.nT, d.oT - b);
                        for (c = 0; c < j.length; c++) g = j[c], g.sU() && g.HR(a, b)
                    },
                    JU: function() {
                        return this.rV
                    },
                    GU: function(a) {
                        var b = this;
                        a && a !== b.rV && (b.vQ(), b.rV = a)
                    },
                    vQ: function() {
                        var a, b = this,
                            c = b.rV;
                        c && (a = b.pT(c), !a || a.qS || a.kv || (a.ST() && a.HU(), c.commentState(3), b.rV = t))
                    },
                    Ao: function(a) {
                        var b = this,
                            c = b.pT(a),
                            d = !1;
                        c || (d = !0, c = new k(a, b), b.jT.push(c)), c.OT(), d && a.autoSize() && !c.qV && c.pV()
                    },
                    tT: function(a) {
                        var b = this,
                            c = b.rV;
                        if (c) if (1 === c.displayMode()) {
                            if (2 === c.commentState()) return
                        } else if (2 === c.commentState() || 1 === c.commentState()) return;
                        a !== b.bU && (b.bU && b.hT(b.bU), a && 2 === a.displayMode() ? b.WU.XU || a.yV || (b.bU = a, a.yV = setTimeout(function() {
                            b.Ao(a)
                        }, 200)) : b.bU = t)
                    },
                    hT: function(a) {
                        var b = this,
                            c = b.pT(a);
                        c && c.sU() && (c.WT(), a === b.rV && b.kj.GJ()), clearTimeout(a.yV), delete a.yV
                    },
                    zV: function() {
                        B(this.kj.nQ().PT).show()
                    },
                    AV: function() {
                        B(this.kj.nQ().PT).hide()
                    },
                    BV: function(a, b, c) {
                        var d, e = this.pT(a);
                        return !(!e || !(d = e.dV())) && d.contains(b, c)
                    },
                    CV: function(a, b, c) {
                        var d, e = this.pT(a);
                        return !(!e || !(d = e.eV())) && d.contains(b, c)
                    },
                    hitTest: function(a, b) {
                        var c, d, e = this,
                            f = t;
                        for (c = 0; c < e.sV.length; c++) d = e.sV[c], Xa(e.kj, d) && e.BV(d, a, b) && (f ? d.zIndex() > f.zIndex() && (f = d) : f = d);
                        return f ? {
                            x: a,
                            y: b,
                            comment: f,
                            area: e.CV(f, a, b) ? Ea : Fa
                        } : t
                    },
                    KU: function(a) {
                        var b = this,
                            c = b.xV();
                        return a === b.bU ? c + 2 : a === b.rV ? c + 1 : a.zIndex()
                    },
                    wV: function() {
                        this.jT.forEach(function(a) {
                            a.hU()
                        })
                    },
                    cQ: function() {
                        this.jT.forEach(function(a) {
                            a.qT()
                        })
                    },
                    fromJSON: function(a, b) {
                        var c, d, e, f = this;
                        if (a && 0 !== a.length) for (f.wTa = 0, c = 0; c < a.length; c++) d = a[c], e = new j, e.fromJSON(d, b), 3 !== e.commentState() && (f.rV = e), f.kj.ITa.Ky.Cz(e.nT, e.oT, e)
                    },
                    toJSON: function() {
                        var a, b, c = this.sV;
                        if (!c || 0 === c.length) return u;
                        for (a = [], b = 0; b < c.length; b++) a.push(c[b].toJSON());
                        return 0 === a.length ? u : a
                    }
                }, a
            }(), m = function() {
                function a(a) {
                    var b = this;
                    b.kj = t, b.oQ = !0, b.PT = b.DV(), a.appendChild(b.PT)
                }
                return a.prototype = {
                    constructor: a,
                    DV: function() {
                        var a = D(na);
                        return B(a).addClass("gc-comment-layoutPanel" + Ba + Aa).css([da, Z, $, ca, ba, fa, ha, Ca], [ea, 0, 0, 0, 0, ga, ya, Da]), a
                    },
                    rT: function(a) {
                        var b, c, d, e = this;
                        a.ITa.Ky.iT() || (b = a.am(), B(e.PT).css(Z, b.x + b.Br).css($, b.y + b.Cr), e.kj !== a && (e.kj && (c = e.kj.ITa, d = c.Ky.JU(), d && 2 === d.commentState() && d.commentState(1)), e.kj = a))
                    },
                    sT: function(a, b, c) {
                        var d, e, f = c.row,
                            g = c.col,
                            h = c.x,
                            i = c.y,
                            j = Wa(c),
                            k = Va(c),
                            l = this;
                        3 === b && l.kj && (d = l.kj.ITa.Ky.get(f, g), d && (e = 6, a && j > 0 && k > 0 && (a.save(), a.rect(h, i, j, k), a.clip(), a.fillStyle = "red", a.beginPath(), a.moveTo(h + j - e, i), a.lineTo(h + j, i), a.lineTo(h + j, i + e), a.lineTo(h + j - e, i), a.fill(), a.restore())))
                    },
                    fT: function(a) {
                        var b, c, d, e, f, g, h;
                        if (!this.oQ) return void a.AV();
                        for (a.zV(), b = this.kj, c = a.all(), d = 0; d < c.length; d++) e = c[d], f = a.pT(e), this.EV(a, e) ? (1 === e.displayMode() && e === a.bU && (a.bU = t), f && f.sU() ? f.VT() : a.Ao(e)) : f && f.sU() && a.hT(e);
                        g = a.JU(), g && (h = a.pT(g), h && h.sU() && b.getSelections().length > 0 && b.ITa.do("clearSelection"))
                    },
                    EV: function(a, b) {
                        var c = a.kj;
                        if (c && bb(c, b.oT) && ab(c, b.nT)) switch (b.displayMode()) {
                            case 1:
                                return !0;
                            case 2:
                                if (3 !== b.commentState()) return a && b !== a.bU && (a.bU = b), !0;
                                if (b === a.bU) return !0
                        }
                        return !1
                    }
                }, a
            }(), n = q.lUa, B.extend(n.prototype, {
                UUa: function(a) {
                    var b, c = this.zTa;
                    c && (b = c.WUa, b || (b = c.WUa = []), b.push(a))
                },
                XUa: function(a) {
                    var b, c, d, e, f, g, h;
                    if (a) for (b = this, c = b.Ky, d = a.length - 1; d >= 0; d--) e = a[d], f = e.comment, "add" === e.type ? c.vV(e.row, e.col) : "remove" === e.type ? c.Cz(e.row, e.col, e.comment) : "property" === e.type ? (g = e.name, h = e.value, f[g](h)) : "rowcol" === e.type && c.VUa(f, e.row, e.col)
                }
            }), n.$n("comments", {
                init: function() {
                    this.Ky = new l(this.kj)
                },
                undo: function(a) {
                    var b = a.WUa;
                    b && this.XUa(b)
                }
            }), o = {
                init: function() {
                    var a = this;
                    a.comments = a.ITa.Ky, a.nQ = function() {
                        var b = a.parent;
                        if (b) return b.gT || (b.gT = new m(b.xv())), b.gT.kj = a, a.parent.gT
                    }
                },
                dispose: function() {
                    var a = this.ITa.Ky;
                    a && a.dispose(), f(this, B(this.Ws()))
                },
                setHost: function(a) {
                    a && e(a, this)
                },
                onLayoutChanged: function(a) {
                    var b = this,
                        c = b.ITa.Ky,
                        d = a.changeType,
                        e = a.row,
                        f = a.rowCount,
                        g = a.col,
                        h = a.colCount;
                    "addRows" === d ? c.rI(e, f) : "deletingRows" === d ? c.GR(e, f) : "addColumns" === d ? c.tI(g, h) : "deletingColumns" === d ? c.HR(g, h) : 3 === a.sheetArea && ("clear" === d ? 4 === (4 & a.type) && c.clear(new q.Range(e, g, f, h)) : "addSpan" === d ? Ya.call(b, !0, e, g, f, h) : "removeSpan" === d && Ya.call(b, !1, e, g))
                },
                paint: function(a) {
                    this.ITa.Ky.iT() || (Za.call(this), this.RP(a.clipRect))
                },
                paintCell: function(a) {
                    a.isPrinting || 3 !== a.sheetArea || $a.call(this, a.ctx, a.sheetArea, a.cell)
                },
                toJson: function(a, b) {
                    var c = b && b.ignoreStyle;
                    c || (a.comments = this.ITa.Ky.toJSON())
                },
                fromJson: function(a, b, c) {
                    var d, e = c && c.ignoreStyle;
                    e || a && (d = b ? a.commentManager : a.comments, d && this.ITa.Ky.fromJSON(d, b))
                },
                lastNonNullRowAndCol: function() {
                    var a, b, c, d, e = 0,
                        f = 0,
                        g = this.ITa.Ky;
                    if (g && (a = g.jT, a && a.length > 0)) for (b = 0, c = a.length; b < c; b++) d = a[b], d && d.kT && (d.lT > e && (e = d.lT), d.mT > f && (f = d.mT));
                    return {
                        lastNonNullRow: e,
                        lastNonNullCol: f
                    }
                },
                clearSelection: function() {
                    this.ITa.Ky.vQ()
                },
                processKeyDown: function(a) {
                    var b = this,
                        c = b.ITa.Ky.JU();
                    c && b.mm.LH(a.e) && (c.commentState(2), a.r = !0)
                }
            }, s.$n("comments", o), p = {
                init: function() {
                    r.uT(this.commandManager())
                }
            }, q.Workbook.$n("comments", p), a.exports = {
                CommentState: g,
                DisplayMode: h,
                Padding: i,
                Comment: j,
                GV: k
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h = c(87),
                i = h.Commands,
                j = h.GC$,
                k = h.Events,
                l = c(26).j.Fa,
                m = c(118),
                n = i.ActionBase,
                o = "deleteComment",
                p = "deleteCommentByKey",
                q = "deactivateComment",
                r = "moveCommentUp",
                s = "moveCommentDown",
                t = "moveCommentLeft",
                u = "moveCommentRight",
                v = "changeComment",
                w = "changeCommentTransaction",
                x = null,
                y = i.h4;

            function z(a, b, c) {
                var d, e = !1,
                    f = a.ITa.Ky.JU();
                return f ? (d = f.location(), a.wu().execute({
                    cmd: v,
                    sheetName: a.name(),
                    row: f.nT,
                    col: f.oT,
                    oldValue: d.clone(),
                    newValue: new h.Point(d.x + b, d.y + c),
                    propertyName: "location"
                })) : e
            }
            function A(a) {
                var b = a.comment;
                b && (l(a.row) || l(a.col)) && (a.row = b.nT, a.col = b.oT)
            }
            b = function(a) {
                j.inherit(b, a);

                function b(b, c) {
                    a.call(this), A(c), this.kj = b, this.VQ = c
                }
                var c = {
                    execute: function() {
                        var a, b, c, d, e, f, g = this;
                        return !!g.canExecute() && (a = g.kj, g.Lz(a, !0), b = a.comments.get(g.VQ.row, g.VQ.col), c = a.ITa, d = c.Ky, e = {
                                sheet: a,
                                sheetName: a.name(),
                                comment: b,
                                cancel: !1
                            }, a.Wq(k.CommentRemoving, e), e.cancel || (c.startTransaction(), d.remove(b.nT, b.oT), d.rV = x, a.GJ(), a.Wq(k.CommentRemoved, {
                                sheet: a,
                                sheetName: a.name(),
                                comment: b
                            }), f = i.bWa(a.name()), g.VQ[f] = c.endTransaction()), g.Mz(a, !0), !0)
                    },
                    undo: function() {
                        var a, b = this,
                            c = b.kj;
                        return b.Lz(c, !0), a = i.bWa(c.name()), c.ITa.undo(b.VQ[a]), c.EJ(), b.Mz(c, !0), !0
                    }
                };
                return j.extend(b.prototype, c), b
            }(n), d = function(a) {
                j.inherit(b, a);

                function b(b, c) {
                    a.call(this), A(c), this.kj = b, this.VQ = c
                }
                var c = {
                    execute: function() {
                        var a, b = this,
                            c = b.VQ,
                            d = b.kj,
                            e = d.comments.get(c.row, c.col);
                        return !(!b.canExecute() || !e) && (b.Lz(d, !0), a = c.propertyName, e[a](c.newValue), "location" === a && (c.displayMode ? e.displayMode(c.displayMode) : c.displayMode = e.displayMode()), b.Mz(d, !0), !0)
                    },
                    undo: function() {
                        var a, b = this,
                            c = b.VQ,
                            d = b.kj;
                        return b.Lz(d, !0), a = d.comments.get(c.row, c.col), !! a && (a[c.propertyName](c.oldValue), b.Mz(d, !0), !0)
                    }
                };
                return j.extend(b.prototype, c), b
            }(n), i.ChangeComment = d;

            function B(a, b) {
                var c, d, e;
                if ((b ? a.canUndo() : a.canExecute()) && (c = a.KV)) {
                    for (d = 0; d < c.length; d++) e = c[d], e && (b ? e.undo() : e.execute());
                    return !0
                }
                return !1
            }
            e = function(a) {
                j.inherit(b, a);

                function b(b, c) {
                    var d, e, f = this;
                    if (a.call(f), f.KV = [], f.kj = b, f.VQ = c, d = c.commands) for (e = 0; e < d.length; e++) f.add(d[e])
                }
                var c = {
                    execute: function() {
                        return B(this, !1)
                    },
                    undo: function() {
                        return B(this, !0)
                    },
                    add: function(a) {
                        this.KV.push(a)
                    }
                };
                return j.extend(b.prototype, c), b
            }(n), i[p] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = i.bT(a, b),
                        d = c.ITa.Ky.JU();
                    return !!d && c.wu().execute({
                            cmd: o,
                            sheetName: c.name(),
                            row: d.nT,
                            col: d.oT
                        })
                }
            }, i[q] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = i.bT(a, b),
                        d = c.ITa.Ky;
                    return !!d.JU() && (d.vQ(), c.GJ(), c.repaint(), !0)
                }
            }, i[r] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = i.bT(a, b);
                    return z(c, 0, -1)
                }
            }, i[s] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = i.bT(a, b);
                    return z(c, 0, 1)
                }
            }, i[t] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = i.bT(a, b);
                    return z(c, -1, 0)
                }
            }, i[u] = {
                canUndo: !1,
                execute: function(a, b) {
                    var c = i.bT(a, b);
                    return z(c, 1, 0)
                }
            }, i[o] = {
                canUndo: !0,
                execute: function(a, c, d) {
                    return y(a, b, c, d)
                }
            }, i[v] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return y(a, d, b, c)
                }
            }, i[w] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return y(a, e, b, c)
                }
            }, f = function(a) {
                var b = h.Ul.sl();
                a.register(p, i[p], b ? 8 : 46, !1, !1, !1, !1), a.register(q, i[q], 27, !1, !1, !1, !1), a.register(r, i[r], 38, !1, !1, !1, !1), a.register(s, i[s], 40, !1, !1, !1, !1), a.register(t, i[t], 37, !1, !1, !1, !1), a.register(u, i[u], 39, !1, !1, !1, !1), a.register(o, i[o]), a.register(v, i[v]), a.register(w, i[w])
            }, i.uT = f, g = {
                CommentDeleteUndoAction: b,
                CommentPropertyUndoAction: d
            }, j.extend(m, g), a.exports = m
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a = c(111);
            a && !
                function() {
                    var b = c(87),
                        d = b.GC$,
                        e = d.extend,
                        f = b.Ul.nl,
                        g = a.jR,
                        h = a.kR;

                    function i(a, b, c) {
                        var d, e, f = this,
                            i = f.kT = b.kT;
                        f.yM = new g(f), f.DQ = new h(a, "Comment" + i.nT + i.oT, f.yM, 2, 200), f.BQ = c, f.CQ = new j(a, b), d = f.CQ, e = f.DQ, e._M = function() {
                            return 3 !== f.kT.commentState()
                        }, e.bN = function() {
                            return !0
                        }, e.dN = function(a) {
                            return d.jQ(a)
                        }, e.eN = function(a) {
                            return d.lQ(a)
                        }, e.fN = function(a) {
                            return d.pQ(a)
                        }, e.hN = function(a) {
                            return d.qQ(a)
                        }, e.iN = function(a) {
                            return d.sQ(a)
                        }
                    }
                    e(i.prototype, {
                        EQ: function() {
                            var a = this,
                                b = a.BQ;
                            b && b.xN(a.DQ, !0)
                        },
                        FQ: function() {
                            var a = this,
                                b = a.BQ;
                            b && b.xN(a.DQ, !1)
                        },
                        GQ: function(a) {
                            return this.yM.GQ(a)
                        },
                        HQ: function(a) {
                            return this.yM.HQ(a)
                        },
                        IQ: function(a) {
                            return this.yM.IQ(a)
                        }
                    });

                    function j(b, c) {
                        var d = this;
                        d.NS = b, d.LV = c, d.kT = c.kT, d.kj = d.kT.kj, d.hQ = new a.TP(d.kj)
                    }
                    e(j.prototype, {
                        OS: function(b) {
                            var c, e = new a.oP(b.X, b.Y),
                                f = d(this.NS).offset();
                            return f && (c = document.body, e.X += f.left + c.clientLeft || 0, e.Y += f.top + c.clientTop || 0), e
                        },
                        jQ: function(a) {
                            a.DO = 35
                        },
                        lQ: function(a) {
                            var b = this,
                                c = b.OS(a.rN);
                            b.LV.iV({
                                target: a.GP,
                                isTouch: !0,
                                button: 0,
                                pageX: c.X,
                                pageY: c.Y,
                                stopPropagation: function() {}
                            }), b.hQ.OP()
                        },
                        pQ: function(a) {
                            var b, c, e = this,
                                f = a.dP.rO,
                                g = e.kj,
                                h = g.parent;
                            1 !== f && h && h.options.allowUserZoom ? (g.mm.lV = !1, b = e.LV, d(b.TU).remove(), e.hQ.PP(f)) : (c = e.OS(a.rN), e.LV.BD({
                                target: a.GP,
                                isTouch: !0,
                                button: 0,
                                pageX: c.X,
                                pageY: c.Y,
                                stopPropagation: function() {}
                            }))
                        },
                        qQ: function(a) {
                            var b, c = this,
                                d = a.dP.rO,
                                e = c.kj,
                                f = e.parent;
                            1 !== d && f && f.options.allowuserZoom ? c.hQ.SP(d) : (b = c.OS(a.rN), c.LV.CD({
                                target: a.GP,
                                isTouch: !0,
                                button: 0,
                                pageX: b.X,
                                pageY: b.Y,
                                stopPropagation: function() {}
                            }))
                        },
                        sQ: function() {
                            var a = this,
                                b = a.kT,
                                c = a.kj;
                            try {
                                c.suspendPaint(), 3 === b.commentState() ? b.commentState(1) : 1 === b.commentState() && b.commentState(2)
                            } finally {
                                c.resumePaint()
                            }
                        }
                    });

                    function k(a, b, c) {
                        var d, e, f = this,
                            i = f.kT = b.kT;
                        f.yM = new g(f), f.DQ = new h(a, "Comment" + i.nT + i.oT, f.yM, 2, 200), f.BQ = c, f.CQ = new l(a, b), d = f.CQ, e = f.DQ, e._M = function() {
                            return 3 !== f.kT.commentState()
                        }, e.bN = function() {
                            return !0
                        }, e.dN = function(a) {
                            return d.jQ(a)
                        }, e.eN = function(a) {
                            return d.lQ(a)
                        }, e.fN = function(a) {
                            return d.pQ(a)
                        }, e.hN = function(a) {
                            return d.qQ(a)
                        }, e.iN = function(a) {
                            return d.sQ(a)
                        }
                    }
                    e(k.prototype, {
                        EQ: function() {
                            var a = this,
                                b = a.BQ;
                            b && b.xN(a.DQ, !0)
                        },
                        FQ: function() {
                            var a = this,
                                b = a.BQ;
                            b && b.xN(a.DQ, !1)
                        },
                        GQ: function(a) {
                            return this.yM.GQ(a)
                        },
                        HQ: function(a) {
                            return this.yM.HQ(a)
                        },
                        IQ: function(a) {
                            return this.yM.IQ(a)
                        }
                    }), d.inherit(l, j);

                    function l(a, b) {
                        j.call(this, a, b)
                    }
                    l.prototype.lQ = function(a) {
                        var b = this,
                            c = b.OS(a.rN);
                        b.LV.hV({
                            target: a.GP,
                            isTouch: !0,
                            button: 0,
                            pageX: c.X,
                            pageY: c.Y,
                            stopPropagation: function() {}
                        }), b.hQ.OP()
                    }, c(118).GV.$n("touch", {
                        init: function(a) {
                            var b = this,
                                c = b.kT.kj,
                                d = c.parent.BQ;
                            b.wR = new i(a[0], b, d), b.wR.EQ(), b.MV = new k(a[1], b, d), b.MV.EQ()
                        },
                        detachEditor: function(a) {
                            var b = this,
                                c = b.kT.kj;
                            b.MV = new k(a, b, c.parent.BQ), b.MV.EQ()
                        },
                        preProcessMouseDownEdit: function(a) {
                            var b = a.e,
                                c = this.MV;
                            c && !b.isTouch && c.GQ(b) && (f(b), a.r = !0)
                        },
                        preProcessMouseDownDragResize: function(a) {
                            var b = a.e,
                                c = this.wR;
                            c && !b.isTouch && c.GQ(b) && (f(b), a.r = !0)
                        },
                        preProcessMouseMove: function(a) {
                            var b = a.e,
                                c = b.isTouch,
                                d = this.wR,
                                e = this.MV;
                            d && !c && d.IQ(b) && (f(b), a.r = !0), e && !c && e.IQ(b) && (f(b), a.r = !0)
                        },
                        preProcessMouseUp: function(a) {
                            var b = a.e,
                                c = b.isTouch,
                                d = this.wR,
                                e = this.MV;
                            d && !c && d.HQ(b) && (f(b), a.r = !0), e && !c && e.HQ(b) && (f(b), a.r = !0)
                        }
                    })
                }()
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(122);
            b.SR = {}, b.SR.en = c(123), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t = {},
                u = c(26),
                v = c(87),
                w = c(33),
                x = v.GC$,
                y = u.u,
                z = null,
                A = void 0,
                B = "undefined",
                C = "string",
                D = Math.min,
                E = Math.max,
                F = Math.abs,
                G = Math.floor,
                H = Math.ceil,
                I = w.Convert,
                J = I.Na,
                K = I.Pa,
                L = I.Th,
                M = u.u,
                N = M.Db,
                O = M.kb,
                P = M.jb,
                Q = M.Bb,
                R = u.j.Fa,
                S = u.q,
                T = u.F,
                U = v.Ul,
                V = U.a_a,
                W = U.d_a,
                X = v.X3,
                Y = v.Style,
                Z = u.pc,
                $ = Z.bc,
                _ = v.kf,
                aa = v.Range,
                ba = u.l,
                ca = u.k,
                da = ca.Fb,
                ea = ca.Cb,
                fa = ca.ac,
                ga = w.Functions,
                ha = w.pf,
                ia = v.Rm,
                ja = function() {
                    return u.C(t.SR)()
                },
                ka = function(a) {
                    var b = a.row < 0 ? w.BAND_INDEX_CONST : a.row,
                        c = a.col < 0 ? w.BAND_INDEX_CONST : a.col;
                    return new w.uf(z, z, b, c, b + a.rowCount - 1, c + a.colCount - 1)
                },
                la = function(a) {
                    var b;
                    if (a instanceof w.Expression) b = a;
                    else if (a instanceof aa) b = ka(a);
                    else {
                        if (!J(a)) throw ja().Exp_NotSupport;
                        a = K(a), isNaN(a) || (b = new w.Expression(2), b.value = a)
                    }
                    return b
                };

            function ma(a, b, c) {
                var d, e;
                for (d = 0; d < a.length; d++) if (e = a[d], e.contains(b, c)) return e
            }
            function na(a) {
                return a.rowCount
            }
            function oa(a) {
                return a.colCount
            }
            b = function(a, b, c, d) {
                var e = a,
                    f = b,
                    g = function(a, b) {
                        var g, h, i = this;
                        return i.hasOwnProperty("_ps") || (i._ps = {}), g = i._ps, 0 === arguments.length ? g[e] !== A ? d ? d.call(i, g[e]) : g[e] : f : (g[e] !== a && (h = g[e] !== A ? g[e] : f, g[e] = a, b !== !1 && c && c.call(i, a, h)), i)
                    };
                return g.isDefault = function(a) {
                    return a === f
                }, g
            }, d = function(a, b, c) {
                var d = this;
                return c || (c = {}), b || (b = d), x.each(b, function(b, e) {
                    var f, g = d[e];
                    R(g) || (f = g.call(d), "formula" === e ? (d.getFormulaString ? f = d.getFormulaString(a, A, A, !0) : d.condition() && d.condition().getFormulaString && (f = d.condition().getFormulaString(a, A, A, !0)), f && (c[e] = f)) : "iconCriteria" === e || "icons" === e ? c[e] = f : ba.Ska(f) ? c[e] = ba.Daa(f) : f && f.toJSON ? c[e] = f.toJSON(a) : R(f) || g.isDefault(f) || (c[e] = f))
                }), c
            }, e = function(a, b, c, d) {
                if (c) {
                    var e = this,
                        f;
                    b || (b = e), x.each(b, function(b, g) {
                        var h, i, l, m, n, o, p, r, s, t;
                        if (f = c[g], !R(f)) if ("ranges" === g) {
                            for (h = [], i = 0; i < f.length; i++) l = f[i], h.push(_(l.row, l.col, na(l), oa(l)));
                            e.ranges(h, !1)
                        } else if ("style" === g) e.style(new Y, !1), e.style().fromJSON(f, d);
                        else if ("iconCriteria" === g) for (m = f.length, n = 0; n < m; n++) o = f[n], e.NV[n] = new q(o.isGreaterThanOrEqualTo, o.iconValueType, o.iconValue);
                        else if ("icons" === g) for (p = f.length, r = 0; r < p; r++) s = f[r], e.BZa[r] = {
                            iconSetType: s.iconSetType,
                            iconIndex: s.iconIndex
                        };
                        else "iconSetType" === g ? e[g](f, !0) : "item1" === g || "item2" === g ? (e[g](k(), !1), e[g]().fromJSON(f, a)) : "expected" === g ? x.getType(f) === C && 5 === c.conType ? "/OADate(" === f.substr(0, 8) ? e[g](ba.Rka(f), !1) : e[g](new Date(f)) : e[g](f, !1) : "condition" === g ? (t = new j, t.fromJSON(f, a), e.condition(t, !1)) : x.getType(f) === C && "/OADate(" === f.substr(0, 8) ? e[g](ba.Rka(f), !1) : e[g](f, !1)
                    })
                }
            };

            function pa(a, b, c) {
                switch (a) {
                    case 0:
                        return b === c;
                    case 1:
                        return b !== c;
                    case 2:
                        return b > c;
                    case 3:
                        return b >= c;
                    case 4:
                        return b < c;
                    case 5:
                        return b <= c;
                    default:
                        return !1
                }
            }
            f = v.lUa, x.extend(f.prototype, {
                YUa: function() {
                    var a = this,
                        b = a.zTa;
                    b && !b.ZUa && (b.ZUa = a.U5.AW.map(function(a) {
                        return {
                            rule: a,
                            ranges: a.ranges().slice()
                        }
                    }))
                },
                $Ua: function(a) {
                    var b = this.U5,
                        c = this.kj;
                    c.suspendPaint(), a && (b.AW = a.map(function(a) {
                        var b = a.rule;
                        return b.ranges(a.ranges), b
                    }), b.QV()), c.resumePaint()
                },
                _Ua: function(a, b) {
                    this.YUa(), this.U5.rI(a, b)
                },
                aVa: function(a, b) {
                    this.YUa(), this.U5.GR(a, b)
                },
                bVa: function(a, b) {
                    this.YUa(), this.U5.tI(a, b)
                },
                cVa: function(a, b) {
                    this.YUa(), this.U5.HR(a, b)
                },
                dVa: function() {
                    this.YUa(), this.U5.Nm()
                },
                eVa: function() {
                    this.YUa(), this.U5.QV()
                }
            }), f.$n("conditionalFormat", {
                init: function() {
                    this.U5 = new s(this.kj)
                },
                undo: function(a) {
                    var b = a.ZUa;
                    b && this.$Ua(b)
                }
            }), g = {
                init: function() {
                    this.conditionalFormats = this.ITa.U5
                },
                dispose: function(a) {
                    if (a !== !1) {
                        var b = this.conditionalFormats;
                        b && b.OV()
                    }
                },
                onLayoutChanged: function(a) {
                    var b = a.changeType,
                        c = a.row,
                        d = na(a),
                        e = a.col,
                        f = oa(a),
                        g = a.sheetArea,
                        h = this.ITa;
                    "addRows" === b ? h._Ua(c, d) : "deleteRows" === b ? h.aVa(c, d) : "addColumns" === b ? h.bVa(e, f) : "deleteColumns" === b ? h.cVa(e, f) : "clear" === b ? h.dVa() : "setColumnCount" !== b && "setRowCount" !== b || 3 !== g && 1 !== g || h.eVa()
                },
                toJson: function(a, b) {
                    var c = this.conditionalFormats,
                        d = b && b.ignoreStyle;
                    c && !d && (a.conditionalFormats = c.toJSON(this))
                },
                fromJson: function(a, b, c) {
                    var d = c && c.ignoreStyle;
                    a && a.conditionalFormats && !d && this.conditionalFormats.fromJSON(a.conditionalFormats, this, b)
                }
            }, v.Worksheet.$n("conditionalFormat", g), t.GeneralComparisonOperators = {
                equalsTo: 0,
                notEqualsTo: 1,
                greaterThan: 2,
                greaterThanOrEqualsTo: 3,
                lessThan: 4,
                lessThanOrEqualsTo: 5
            }, t.LogicalOperators = {
                or: 0,
                and: 1
            }, t.ComparisonOperators = {
                equalsTo: 0,
                notEqualsTo: 1,
                greaterThan: 2,
                greaterThanOrEqualsTo: 3,
                lessThan: 4,
                lessThanOrEqualsTo: 5,
                between: 6,
                notBetween: 7
            }, t.TextComparisonOperators = {
                contains: 0,
                doesNotContain: 1,
                beginsWith: 2,
                endsWith: 3
            }, t.TextCompareType = {
                equalsTo: 0,
                notEqualsTo: 1,
                beginsWith: 2,
                doesNotBeginWith: 3,
                endsWith: 4,
                doesNotEndWith: 5,
                contains: 6,
                doesNotContain: 7
            }, t.ColorCompareType = {
                backgroundColor: 0,
                foregroundColor: 1
            }, t.CustomValueType = {
                empty: 0,
                nonEmpty: 1,
                error: 2,
                nonError: 3,
                formula: 4
            }, t.DateCompareType = {
                equalsTo: 0,
                notEqualsTo: 1,
                before: 2,
                beforeEqualsTo: 3,
                after: 4,
                afterEqualsTo: 5
            }, t.Top10ConditionType = {
                top: 0,
                bottom: 1
            }, t.DateOccurringType = {
                today: 0,
                yesterday: 1,
                tomorrow: 2,
                last7Days: 3,
                thisMonth: 4,
                lastMonth: 5,
                nextMonth: 6,
                thisWeek: 7,
                lastWeek: 8,
                nextWeek: 9,
                nextQuarter: 10,
                thisQuarter: 11,
                lastQuarter: 12,
                nextYear: 13,
                thisYear: 14,
                lastYear: 15
            }, t.QuarterType = {
                quarter1: 0,
                quarter2: 1,
                quarter3: 2,
                quarter4: 3
            }, t.AverageConditionType = {
                above: 0,
                below: 1,
                equalOrAbove: 2,
                equalOrBelow: 3,
                above1StdDev: 4,
                below1StdDev: 5,
                above2StdDev: 6,
                below2StdDev: 7,
                above3StdDev: 8,
                below3StdDev: 9
            }, t.ScaleValueType = {
                number: 0,
                lowestValue: 1,
                highestValue: 2,
                percent: 3,
                percentile: 4,
                automin: 5,
                formula: 6,
                automax: 7
            }, t.BarDirection = {
                leftToRight: 0,
                rightToLeft: 1
            }, t.DataBarAxisPosition = {
                automatic: 0,
                cellMidPoint: 1,
                none: 2
            }, t.IconSetType = {
                threeArrowsColored: 0,
                threeArrowsGray: 1,
                threeTriangles: 2,
                threeStars: 3,
                threeFlags: 4,
                threeTrafficLightsUnrimmed: 5,
                threeTrafficLightsRimmed: 6,
                threeSigns: 7,
                threeSymbolsCircled: 8,
                threeSymbolsUncircled: 9,
                fourArrowsColored: 10,
                fourArrowsGray: 11,
                fourRedToBlack: 12,
                fourRatings: 13,
                fourTrafficLights: 14,
                fiveArrowsColored: 15,
                fiveArrowsGray: 16,
                fiveRatings: 17,
                fiveQuarters: 18,
                fiveBoxes: 19,
                noIcons: 20
            }, t.IconValueType = {
                number: 1,
                percent: 4,
                formula: 7,
                percentile: 5
            }, h = {
                relationCondition: 0,
                numberCondition: 1,
                textCondition: 2,
                colorCondition: 3,
                formulaCondition: 4,
                dateCondition: 5,
                dateExCondition: 6,
                textLengthCondition: 7,
                top10Condition: 8,
                uniqueCondition: 9,
                averageCondition: 10,
                cellValueCondition: 11,
                areaCondition: 12
            }, t.ConditionType = h, i = {
                conditionRuleBase: 0,
                cellValueRule: 1,
                specificTextRule: 2,
                formulaRule: 3,
                dateOccurringRule: 4,
                top10Rule: 5,
                uniqueRule: 6,
                duplicateRule: 7,
                averageRule: 8,
                twoScaleRule: 10,
                threeScaleRule: 11,
                dataBarRule: 12,
                iconSetRule: 13
            }, t.RuleType = i, function() {
                var a;
                for (a in h) h[a] !== A && (h[h[a]] = a);
                for (a in i) i[a] !== A && (i[i[a]] = a)
            }(), j = function() {
                var a, c, f, g, i, j, l, m = ["conType", "compareType", "item1", "item2", "ignoreBlank", "expected", "formula", "treatNullValueAsZero", "integerValue", "forceValue2Text", "useWildCards", "ignoreCase", "customValueType", "expectTypeId", "type", "ranges", "isPercent", "regex"];

                function n(a, b) {
                    var c, d;
                    b || (b = {}), c = b.formula, d = this, d.offsetRow = 0, d.offsetCol = 0, d.conType("string" == typeof a ? t.ConditionType[a] : a), R(b.compareType) || d.RV(b.compareType), R(b.expected) || d.expected(b.expected), R(c) || d.formula("string" == typeof c ? N(x.trim(c), "=") : c), R(b.item1) || d.item1(b.item1), R(b.item2) || d.item2(b.item2), R(b.customValueType) || d.customValueType(b.customValueType), R(b.type) || d.type(b.type), d.ranges(b.ranges), d.Lf = z, d.TV = z
                }
                return a = function(a) {
                    return new Date(a.getFullYear(), a.getMonth(), a.getDate(), 0, 0, 0, 0)
                }, c = function(a) {
                    return new Date(a.getFullYear(), a.getMonth(), a.getDate(), 23, 59, 59, 999)
                }, f = function(a, b) {
                    a.setDate(b)
                }, g = function(a) {
                    return a.getDate()
                }, i = function(a, b) {
                    return a.getYear() === b.getYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate()
                }, j = function(a, b) {
                    var d = c(a);
                    return b > d
                }, l = function(b, c) {
                    var d = a(b);
                    return c < d
                }, n.prototype = {
                    conType: b("conType", z),
                    ranges: b("ranges", z, function(a) {
                        var b = this.item1(),
                            c = this.item2();
                        b && b.ranges && b.ranges(a), c && c.ranges && c.ranges(a)
                    }),
                    context: function(a) {
                        if (1 === arguments.length) {
                            this.xc = a;
                            var b = this.item1(),
                                c = this.item2();
                            b && b.context && b.context(a), c && c.context && c.context(a)
                        }
                        return this.xc
                    },
                    b_a: function(a) {
                        var b = this,
                            c = b.item1(),
                            d = b.item2();
                        a ? b.e$a = !0 : b.d$a = !0, c && c.b_a(a), d && d.b_a(a)
                    },
                    c_a: function() {
                        var a = this,
                            b = a.item1(),
                            c = a.item2();
                        delete a.e$a, delete a.d$a, b && b.c_a(), c && c.c_a()
                    },
                    initExpression: function(a, b, c) {
                        var d, e, f, g, h, i = this.item1(),
                            j = this.item2();
                        i && i.initExpression && i.initExpression(), j && j.initExpression && j.initExpression(), a = a || this.xc, d = this.Yw, a && d && !this.Lf && (this.ranges() ? (e = W(this.ranges()), b = e.r, c = e.c) : (b = b || 0, c = c || 0), f = a.getCalcService(), g = a.yj(), f && g && (h = !1, this.e$a && (h = !this.d$a), this.Lf = f.parse(g, d, b, c, A, !0, h)))
                    },
                    expression: function(a, b, c, d) {
                        var e, f, g;
                        return 1 === arguments.length ? (this.Lf = a, b = b || this.xc, a ? b && (this.ranges() ? (e = W(this.ranges()), c = e.r, d = e.c) : (c = c || 0, d = d || 0), f = b.getCalcService(), g = b.yj(), f && g && (this.Yw = f.unparse(g, a, c, d))) : this.Yw = a, this.Lf) : (this.Lf || this.initExpression(b, c, d), this.Lf)
                    },
                    getFormulaString: function(a, b, c, d) {
                        var e, f, g;
                        return a = a || this.xc, e = this.Lf, f = this.Yw, a && f ? (e || (this.initExpression(a, b, c), e = this.Lf), g = W(this.ranges()), b = R(b) ? g.r : b, c = R(c) ? g.c : c, a.getCalcService().unparse(a.yj(), e, b, c, A, !! d)) : f
                    },
                    ignoreBlank: b("ignoreBlank", !1),
                    compareType: b("compareType", A),
                    expected: b("expected", A),
                    formula: function(a, b, c) {
                        if ("string" != typeof a) {
                            var d = this.item1(),
                                e = this.item2();
                            return 0 === c && d && d.formula ? d.formula(a, b, c) : 1 === c && e && e.formula ? e.formula(a, b, c) : this.getFormulaString(A, a, b)
                        }
                        this.Yw = a, this.Lf = z
                    },
                    item1: b("item1", z),
                    item2: b("item2", z),
                    treatNullValueAsZero: b("treatNullValueAsZero", !1),
                    integerValue: b("integerValue", !1),
                    forceValue2Text: b("forceValue2Text", !1),
                    useWildCards: b("useWildCards", !0),
                    regex: b("regex", z),
                    ignoreCase: b("ignoreCase", !1),
                    customValueType: b("customValueType", A),
                    expectTypeId: b("expectTypeId", 0),
                    type: b("type", z),
                    isPercent: b("isPercent", !1),
                    adjustOffset: function(a, b) {
                        var c = this,
                            d = c.item1();
                        d && d.adjustOffset && d.adjustOffset(a, b), d = c.item2(), d && d.adjustOffset && d.adjustOffset(a, b), c.offsetRow = a, c.offsetCol = b
                    },
                    relationConditionEvaluate: function(a, b, c, d, e) {
                        var f, g, h = this;

                        function i(d, e) {
                            if (a && d && 3 === d.conType()) {
                                var f = a.getActualStyle(b, c);
                                f && (0 === d.RV() ? e = f.backColor : 1 === d.RV() && (e = f.foreColor))
                            }
                            return e
                        }
                        function j(a, b) {
                            if (a) return a.ignoreBlank(h.ignoreBlank()), arguments.length < 5 ? i(a, d) : b
                        }
                        function k(d, e) {
                            return !R(d) && d.evaluate(a, b, c, e)
                        }
                        return f = j(h.item1(), d), g = j(h.item2(), e), k(h.item1(), f) + k(h.item2(), g) > h.RV()
                    },
                    cellValueConditionEvaluate: function(a, b, c, d) {
                        var e = this.getExpected(a, b, c);
                        return !(e !== z || !a || !a.lRa) || this.cellValueConditionCheckCondition(e, d)
                    },
                    cellValueConditionCheckCondition: function(a, b) {
                        var c, d, e, f = this,
                            g = 0,
                            h = !1;
                        if (R(b) && R(a)) switch (f.RV()) {
                            case 0:
                            case 3:
                            case 5:
                                return !0;
                            case 1:
                            case 2:
                            case 4:
                                return !1;
                            default:
                                return !1
                        }
                        return "boolean" == typeof a ? pa(f.RV(), b, a) : (c = {}, R(b) ? f.treatNullValueAsZero() ? h = !0 : g = b : "boolean" != typeof b && L(b, c) && (g = c.value, h = !isNaN(g)), h ? (d = 0, e = !1, L(a, c) && (d = c.value, e = !0), e ? pa(f.RV(), g, d) : 1 === f.RV()) : "string" == typeof b ? "string" == typeof a ? pa(f.RV(), b, a) : 1 === f.RV() : !! R(b) && 1 === f.RV())
                    },
                    numberConditionEvaluate: function(a, b, c, d) {
                        var e = this.numberConditionGetExpected(a, b, c);
                        return !(e !== z || !a || !a.lRa) || (this.integerValue() && (e = isNaN(e) ? z : e > 0 ? G(e) : H(e)), this.numberConditionCheckCondition(e, d))
                    },
                    numberConditionCheckCondition: function(a, b) {
                        var c, d, e = this;
                        if ((R(b) || "" === b) && e.ignoreBlank()) return !0;
                        if (isNaN(b)) return !1;
                        if (R(a)) {
                            if (e.ignoreBlank()) return !0;
                            a = 0
                        }
                        try {
                            c = parseFloat(b)
                        } catch (a) {
                            return !1
                        }
                        return !(e.integerValue() && (d = c - G(c) === 0, !d)) && pa(e.RV(), c, a)
                    },
                    numberConditionGetExpected: function(a, b, c) {
                        var d, e = this;
                        return e.Yw && e.Yw.length > 0 ? (d = a.Cf(), d ? d.evaluate(a.yj(), e.expression(z, a), b, c) : e.expected()) : e.expected()
                    },
                    textConditionEvaluate: function(a, b, c, d) {
                        var e, f, g, h = this,
                            i = h.compareType(),
                            j = h.useWildCards(),
                            k = h.ignoreCase();

                        function l(a, b) {
                            return j ? h.testByRegular(b, a, "^", "$") : k ? a.toLowerCase() === b.toLowerCase() : a === b
                        }
                        function m(a, b) {
                            return j ? h.testByRegular(b, a, "^", "") : O(b, a, k)
                        }
                        function n(a, b) {
                            return j ? h.testByRegular(b, a, "", "$") : P(b, a, k)
                        }
                        function o(a, b) {
                            return j ? h.testByRegular(b, a, "", "") : Q(b, a === A || a === z ? "" : a, k)
                        }
                        if (!h.forceValue2Text() && T(d, Date)) return 2 !== i && 4 !== i && 6 !== i && (3 === i || 5 === i || 7 === i);
                        if (e = R(d) ? "" : "" + d, h.ignoreBlank() && "" === e) return !0;
                        if (f = this.getExpected(a, b, c), g = R(f) ? "" : "" + f, h.hasWildcard(g) && "number" == typeof d) return 3 === i || 7 === i || 5 === i || 1 === i;
                        switch (i) {
                            case 0:
                                return l(g, e);
                            case 1:
                                return !l(g, e);
                            case 2:
                                return m(g, e);
                            case 3:
                                return !m(g, e);
                            case 4:
                                return n(g, e);
                            case 5:
                                return !n(g, e);
                            case 6:
                                return o(g, e);
                            case 7:
                                return !o(g, e);
                            default:
                                return !1
                        }
                    },
                    hasWildcard: function(a) {
                        return a.indexOf("*") > -1 || a.indexOf("?") > -1
                    },
                    testByRegular: function(a, b, c, d) {
                        if (this.regex()) return S.qb(this.regex()).test(a);
                        var e = S.ub(b);
                        return e || (e = b), e = c + e + d, this.ignoreCase() ? S.sb(e).test(a) : S.qb(e).test(a)
                    },
                    colorConditionEvaluate: function(a, b, c, d) {
                        var e, f, g, h;

                        function i(a) {
                            return R(a) || "" === a ? z : Z.ec(a)
                        }
                        if (e = this, f = i(e.expected()), R(f) || "" === f) {
                            if (e.ignoreBlank() || R(f) && R(d)) return !0
                        } else if (g = i(d), (R(g) || "" === g) && a && a.getDefaultStyle && (h = a.getDefaultStyle(), 0 === e.RV() ? g = h.backColor : 1 === e.RV() && (g = h.foreColor)), !R(g) && "" !== g) return g.a === f.a && g.r === f.r && g.g === f.g && g.b === f.b;
                        return !1
                    },
                    formulaConditionEvaluate: function(a, b, c, d) {
                        var e, f, g, h;
                        if (!X) return !1;
                        if (e = this, 4 === e.customValueType()) return f = e.getExpected(a, b, c), !(!e.ignoreBlank() || !R(f) && "" !== f) || (g = {}, !! I.Uh(f, g) && g.value);
                        switch (h = I.vf, e.customValueType()) {
                            case 0:
                                return R(d) || "" === d;
                            case 1:
                                return !R(d) && "" !== d;
                            case 2:
                                return h(d);
                            case 3:
                                return !h(d);
                            default:
                                return !1
                        }
                    },
                    formulaConditionGetExpected: function(a, b, c) {
                        var d, e, f, g, h, i, j, k, l, m, n = this;
                        if (n.Yw && n.Yw.length > 0) {
                            if (d = a.Cf(), !d) return n.expected();
                            if (e = d.Hg(a.yj(), n.expression(A, a), ha(b, c), !0), I.Fh(e)) {
                                for (f = e.getRowCount(0), g = e.getColumnCount(0), h = [], i = 0; i < f; i++) for (h[i] = [], j = 0; j < g; j++) h[i][j] = e.getValue(0, i, j);
                                e = h
                            } else if (I.Ca(e)) {
                                for (f = e.getRowCount(), g = e.getColumnCount(), h = [], i = 0; i < f; i++) for (h[i] = [], j = 0; j < g; j++) h[i][j] = e.getValue(i, j);
                                e = h
                            }
                            return T(e, Array) ? (f = fa(e), g = fa(e[0]), 1 === f && 1 === g ? e[0][0] : (k = ma(n.ranges(), b, c), l = b - k.row, m = c - k.col, l < f && m < g ? e[l][m] : w.Errors.NotAvailable)) : e
                        }
                        return n.expected()
                    },
                    dateConditionEvaluate: function(a, b, c, d) {
                        var e, f, g = this;
                        if ((R(d) || "" === d) && g.ignoreBlank()) return !0;
                        if (!T(d, Date)) return 1 === g.RV();
                        if (e = z, f = this.getExpected(a, b, c), T(f, Date) ? e = f : "string" == typeof f ? e = ba.Qa(f) : "number" == typeof f && (e = ba.Xb(f)), R(e)) return !!g.ignoreBlank();
                        switch (g.RV()) {
                            case 0:
                                return i(e, d);
                            case 1:
                                return !i(e, d);
                            case 4:
                                return j(e, d);
                            case 5:
                                return j(e, d) || i(e, d);
                            case 2:
                                return l(e, d);
                            case 3:
                                return l(e, d) || i(e, d);
                            default:
                                return !1
                        }
                    },
                    dateExConditionEvaluate: function(a, b, c, d) {
                        var e = this.A4(a, b, c);
                        return !R(e) && this.dateExConditionCheckCondition(e, d)
                    },
                    getExConditionDateScope: function(b) {
                        var d, e, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, A, B, C, D, E, F, G, H, I, J, K, L, M, N = z,
                            O = z,
                            P = new Date,
                            Q = new Date(P.getFullYear(), P.getMonth(), P.getDate(), P.getHours(), P.getMinutes(), P.getSeconds(), P.getMilliseconds());
                        switch (b) {
                            case 3:
                                f(Q, g(Q) - 6), N = a(Q), O = c(P);
                                break;
                            case 1:
                                f(Q, g(Q) - 1), N = a(Q), O = c(Q);
                                break;
                            case 0:
                                N = a(P), O = c(P);
                                break;
                            case 2:
                                f(Q, g(Q) + 1), N = a(Q), O = c(Q);
                                break;
                            case 8:
                                d = P, f(d, g(P) - P.getDay() - 7), e = Q, e.setDate(g(Q) - Q.getDay() - 1), N = a(d), O = c(e);
                                break;
                            case 7:
                                h = P, f(h, g(P) - P.getDay()), i = Q, f(i, g(Q) - Q.getDay() + 6), N = a(h), O = c(i);
                                break;
                            case 9:
                                j = P, f(j, g(P) - P.getDay() + 7), k = Q, f(k, g(Q) - Q.getDay() + 13), N = a(j), O = c(k);
                                break;
                            case 5:
                                l = P, f(l, 1), l.setMonth(P.getMonth() - 1), m = Q, f(m, 0), N = a(l), O = c(m);
                                break;
                            case 4:
                                n = P, f(n, 1), o = Q, f(o, 1), o.setMonth(Q.getMonth() + 1), f(o, 0), N = a(n), O = c(o);
                                break;
                            case 6:
                                p = P, f(p, 1), p.setMonth(P.getMonth() + 1), q = Q, f(q, 1), q.setMonth(Q.getMonth() + 2), f(q, 0), N = a(p), O = c(q);
                                break;
                            case 10:
                                r = P, s = r.getMonth(), t = s % 3, r.setMonth(s - t + 3), r.setDate(1), u = Q, u.setMonth(s - t + 6), v = 2 === u.getMonth() || 11 === u.getMonth() ? 31 : 30, u.setDate(v), N = a(r), O = c(u);
                                break;
                            case 11:
                                w = P, x = w.getMonth(), y = x % 3, w.setMonth(x - y), w.setDate(1), A = Q, A.setMonth(x - y + 3), B = 2 === A.getMonth() || 11 === A.getMonth() ? 31 : 30, A.setDate(B), N = a(w), O = c(A);
                                break;
                            case 12:
                                C = P, D = C.getMonth(), E = D % 3, C.setMonth(D - E - 3), C.setDate(1), F = Q, F.setMonth(D - E), G = 2 === F.getMonth() || 11 === F.getMonth() ? 31 : 30, F.setDate(G), N = a(C), O = c(F);
                                break;
                            case 13:
                                H = P, H.setFullYear(H.getFullYear() + 1), H.setMonth(0), H.setDate(1), I = Q, I.setFullYear(I.getFullYear() + 1), I.setMonth(11), I.setDate(31), N = a(H), O = c(I);
                                break;
                            case 14:
                                J = P, J.setMonth(0), J.setDate(1), K = Q, K.setMonth(11), K.setDate(31), N = a(J), O = c(K);
                                break;
                            case 15:
                                L = P, L.setFullYear(L.getFullYear() - 1), L.setMonth(0), L.setDate(1), M = Q, M.setFullYear(M.getFullYear() - 1), M.setMonth(11), M.setDate(31), N = a(L), O = c(M)
                        }
                        return {
                            from: N,
                            to: O
                        }
                    },
                    dateExConditionCheckCondition: function(a, b) {
                        var c, d, e, f, h, i, j, l, m, n, o, p;

                        function q(a, b) {
                            switch (a) {
                                case 0:
                                    return b.getMonth() >= 0 && b.getMonth() <= 2;
                                case 1:
                                    return b.getMonth() >= 3 && b.getMonth() <= 5;
                                case 2:
                                    return b.getMonth() >= 6 && b.getMonth() <= 8;
                                case 3:
                                    return b.getMonth() >= 9 && b.getMonth() <= 11;
                                default:
                                    return !1
                            }
                        }
                        if (c = this, d = b, c.ignoreBlank() && (R(d) || "" === d)) return !0;
                        try {
                            d = I.Wh(d)
                        } catch (a) {
                            return !1
                        }
                        if (f = c.expectTypeId(), 0 === f) {
                            if (h = this.getExConditionDateScope(a), i = h.from, j = h.to, !R(i) && !R(j)) return l = k(5, 5, i, z), m = k(5, 3, j, z), n = k(0, 1, z, z, z, z, z, l, m), n.evaluate(z, 0, 0, d)
                        } else if (e = c.A4(z, 0, 0), !R(e)) {
                            if (1 === f) return e === d.getFullYear();
                            if (2 === f) return q(e, d);
                            if (3 === f) return e === d.getMonth();
                            if (4 === f) return e === d.getDay();
                            if (5 === f) return e === g(d);
                            if (6 === f) return o = new Date, p = new Date, o.setMonth(0, 1), o.setHours(0, 0, 0, 0), p.setHours(23, 59, 59, 59), o <= d && d <= p
                        }
                        return !1
                    },
                    textLengthConditionEvaluate: function(a, b, c, d) {
                        var e, f;
                        return R(d) || "" === d ? this.ignoreBlank() : (e = R(d) ? 0 : ("" + d).length, f = this.A4(a, b, c), "number" == typeof f && pa(this.RV(), e, f))
                    },
                    top10ConditionEvaluate: function(a, b, c, d) {
                        var e, f, g, h = this;
                        if (R(d) || "" === d) return h.ignoreBlank();
                        if (e = h.A4(a, b, c), !R(e) && (f = h.getTopValues(a, e, h.ranges()))) {
                            g = 0;
                            try {
                                g = h.Pa(d)
                            } catch (a) {
                                return !1
                            }
                            if (ca.Bb(f, g)) return !0
                        }
                        return !1
                    },
                    A4: function(a, b, c) {
                        var d = this.getExpected(a, b, c);
                        return d = parseInt(d, 10), isNaN(d) || !isFinite(d) ? z : d
                    },
                    adjustRange: function(a, b) {
                        return _(a.row, a.col, Math.min(na(a), b.getRowCount()), Math.min(oa(a), b.getColumnCount()))
                    },
                    getTopValues: function(a, b, c) {
                        var d, e, f, g, h, i, j, k, l, m = 0 === this.type() ? 1 : -1,
                            n = [];
                        if (!c) return n;
                        for (d = this.UV(a, c), e = fa(d), j = 0; j < e; j++) for (f = this.adjustRange(d[j], a), k = 0; k < na(f); k++) for (g = k + f.row, l = 0; l < oa(f); l++) h = l + f.col, i = this.Pa(a.getValue(g, h)), R(i) || n.push(i);
                        return n.sort(function(a, b) {
                            return (b - a) * m
                        }), fa(n) > b && (n = n.slice(0, b)), n
                    },
                    Pa: function(a) {
                        return ("number" == typeof a || T(a, Date)) && X ? K(a) : z
                    },
                    uniqueConditionEvaluate: function(a, b, c, d) {
                        var e, f, g, h, i = this,
                            j = d;
                        return R(j) || "" === j ? i.ignoreBlank() : (X && J(j) && (j = K(j)), e = this.getExpected(a, b, c), f = {}, I.Uh(e, f), g = f.value, !R(g) && (h = i.getDuplicated(a, i.ranges()), !R(h) && ca.Bb(h, j) ? g === !0 : g !== !0))
                    },
                    getDuplicated: function(a, b) {
                        var c, d, e, f, g, h, i, j, k, l = [],
                            m = [],
                            n = this.UV(a, b);
                        if (n) {
                            for (c = fa(n), d = 0; d < c; d++) for (e = n[d], e = this.adjustRange(e, a), f = 0; f < na(e); f++) for (g = f + e.row, h = 0; h < oa(e); h++) i = h + e.col, j = a.getValue(g, i, 3), !R(j) && X && J(j) && (j = K(j)), l.push(j);
                            k = {}, x.each(l, function(a, b) {
                                k[b] = 0
                            }), x.each(l, function(a, b) {
                                k[b]++
                            }), x.each(l, function(a, b) {
                                k[b] > 1 && m.push(b)
                            }), k = A
                        }
                        return m
                    },
                    VV: function(a, b) {
                        var c, d = a.length;
                        for (c = 0; c < d; c++) if (a[c].key === b) return !0;
                        return !1
                    },
                    averageConditionEvaluate: function(a, b, c, d) {
                        var e, f, g, h, i, j, k, l;
                        if (!X) return !1;
                        if (e = this, e.ignoreBlank() && (R(d) || "" === d)) return !0;
                        if (e.WV(), f = this.getExpected(a, b, c), g = {}, h = L(f, g) ? g.value : NaN, i = z, j = e.TV ? e.XV(a, e.TV, b, c) : z, R(j) || (g = {}, i = L(j, g) ? g.value : NaN), J(d) && (k = K(d), !isNaN(h))) switch (l = isNaN(i), e.type()) {
                            case 0:
                                return k > h;
                            case 1:
                                return k < h;
                            case 2:
                                return k >= h;
                            case 3:
                                return k <= h;
                            case 4:
                                return !l && k > h + i;
                            case 5:
                                return !l && k < h - i;
                            case 6:
                                return !l && k > h + 2 * i;
                            case 7:
                                return !l && k < h - 2 * i;
                            case 8:
                                return !l && k > h + 3 * i;
                            case 9:
                                return !l && k < h - 3 * i;
                            default:
                                return !1
                        }
                        return !1
                    },
                    WV: function() {
                        var a = this;
                        a.ranges() && (a.Lf = a.YV("AVERAGE", a.ranges()), a.type() >= 4 && a.type() <= 9 && (a.TV = a.YV("STDEV", a.ranges())))
                    },
                    YV: function(a, b) {
                        var c, d, e, f;
                        if (!X) return z;
                        if (c = ga.findGlobalFunction(a)) {
                            for (d = [], e = fa(b), f = 0; f < e; f++) d[f] = la(b[f]);
                            return w.Jh(c, d)
                        }
                        return z
                    },
                    averageConditionGetExpected: function(a, b, c) {
                        var d = a.Cf();
                        return d ? d.Hg(a.yj(), this.expression(A, a), ha(b, c), !1) : z
                    },
                    XV: function(a, b, c, d) {
                        var e = a.Cf();
                        return e ? e.Hg(a.yj(), b, ha(c, d), !1) : z
                    },
                    ZV: function(a, b) {
                        var c, d;
                        for (d = 0; d < fa(b); d++) c = b[d], T(c, Array) && fa(c) > 0 ? fa(b) > 1 ? a.push(c[0]) : a.push.apply(a, c) : a.push(c)
                    },
                    getValidList: function(a, b, c) {
                        var d, e, f = [],
                            g = this.getValidListImp(a, b, c);
                        for (d = 0, e = fa(g); d < e; d++) f.push(g[d].value);
                        return f
                    },
                    getValidListImp: function(a, b, c) {
                        var d, e, f, g, h, i, j = this,
                            k = [];
                        if (j.Yw && j.Yw.length > 0) d = j.getExpected(a, b, c), T(d, Array) ? j.ZV(k, d) : k.push(d);
                        else if (j.expected() && j.expected().length > 0 && (e = j.expected(), f = e.split(","))) for (g = 0; g < fa(f); g++) h = f[g], R(h) || (i = x.trim(h), "" !== i && k.push({
                            text: i,
                            value: i
                        }));
                        return k
                    },
                    areaConditionEvaluate: function(a, b, c, d) {
                        var e, f, g, h, i, j;

                        function k(a, b) {
                            return T(a, Date) && T(b, Date) ? a.valueOf() === b.valueOf() : a === b
                        }
                        if (e = this, R(d) || "" === d) return e.ignoreBlank() === !0;
                        for (f = e.getValidList(a, b, c), g = 0; g < fa(f); g++) {
                            if (h = f[g], R(h) && R(d)) return !0;
                            if (e.Yw) {
                                if (k(h, d)) return !0
                            } else if (i = a.getActualStyle(b, c), j = U.ul(i, h, !0), k(j, d)) return !0
                        }
                        return !1
                    },
                    areaConditionGetExpected: function(a, b, c) {
                        var d, e, f, g, h, i, j, k, l, m, n, o = this,
                            p = [];
                        if (o.Yw) {
                            if (j = a.Cf(), !j) return p;
                            if (k = j.Hg(a.yj(), o.expression(A, a), ha(b, c), !0), I.Fh(k)) for (d = k.getRowCount(0), e = k.getColumnCount(0), l = k.getRow(0), m = k.getColumn(0), n = k.xf && k.xf.kj, f = 0; f < d; f++) for (p[f] = [], g = 0; g < e; g++) h = k.getValue(0, f, g), i = n ? n.getText(l + f, m + g) : h, p[f][g] = {
                                value: h,
                                text: i
                            };
                            else if (I.Ca(k)) for (d = k.getRowCount(), e = k.getColumnCount(), f = 0; f < d; f++) for (p[f] = [], g = 0; g < e; g++) h = k.getValue(f, g), p[f][g] = {
                                value: h,
                                text: h
                            }
                        } else p.push({
                            value: o.expected(),
                            text: o.expected()
                        });
                        return p
                    },
                    reset: function() {
                        var a = this;
                        switch (a.ignoreBlank(!1), a.RV(1), a.item1(z), a.item2(z), a.value1 = z, a.value2 = z, a.style(z), a.stopIfTrue(!1), a.priority(1), a.expected(z), a.RV(0), a.integerValue(!1), a.operator = 0, a.text = "", a.RV(0), a.useWildCards(!0), a.ignoreCase(!1), a.forceValue2Text(!1), a.customValueType(0), a.Lf = z, a.type(0), this.expectTypeId(0), a.ranges(z), a.isPercent(!1), a.regex(z), a.conType()) {
                            case 0:
                                a.ignoreBlank(!1), a.RV(1);
                                break;
                            case 1:
                                a.RV(0), a.integerValue(!1);
                                break;
                            case 2:
                                a.RV(0), a.useWildCards(!0), a.forceValue2Text(!1);
                                break;
                            case 3:
                                a.RV(0);
                                break;
                            case 4:
                                a.customValueType(0), a.TV = z;
                                break;
                            case 5:
                                a.RV(0);
                                break;
                            case 6:
                                a.expectTypeId(0);
                                break;
                            case 7:
                                a.RV(0);
                                break;
                            case 8:
                                a.type(0);
                                break;
                            case 10:
                                a.type(0);
                                break;
                            case 11:
                                a.operator = 6;
                                break;
                            case 12:
                        }
                    },
                    evaluate: function(a, b, c, d) {
                        var e = this.conType();
                        return !R(e) && this[h[e] + "Evaluate"](a, b, c, d)
                    },
                    getExpectedNormal: function(a, b, c, d, e, f) {
                        var g, h = this,
                            i = h.Yw,
                            j = h.expected();
                        return i ? (g = a.Cf(), g ? g.Hg(a.yj(), h.expression(A, a), ha(b, c), !1, f) : j) : j
                    },
                    getExpected: function(a, b, c) {
                        var d = this;
                        switch (d.conType()) {
                            case 2:
                                return d.getExpectedNormal(a, b, c, b - d.offsetRow, c - d.offsetCol, !1);
                            case 5:
                            case 6:
                            case 7:
                            case 9:
                            case 11:
                                return d.getExpectedNormal(a, b, c, b - d.offsetRow, c - d.offsetCol, !1);
                            case 8:
                                return d.getExpectedNormal(a, b, c, b, c);
                            case 0:
                                return z;
                            case 1:
                                return d.numberConditionGetExpected(a, b, c);
                            case 3:
                                return z;
                            case 4:
                                return d.formulaConditionGetExpected(a, b, c);
                            case 10:
                                return d.averageConditionGetExpected(a, b, c);
                            case 12:
                                return d.areaConditionGetExpected(a, b, c);
                            default:
                                return z
                        }
                    },
                    UV: function(a, b) {
                        var c, d, e, f = [];
                        for (c = 0, d = fa(b); c < d; c++) e = a.Tq(b[c]), f.push(e);
                        return f
                    },
                    getExpressions: function() {
                        var a = [],
                            b = this;
                        return 0 === b.conType() ? (b.item1() && b.item1().getExpressions && (a = b.item1().getExpressions()), b.item2() && b.item2().getExpressions && (a = a.concat(b.item2().getExpressions())), a) : (b.Lf || b.initExpression(), b.Lf ? [b.Lf] : [])
                    },
                    setExpressions: function(a) {
                        var b = this,
                            c;
                        return 0 === b.conType() ? (b.item1() && b.item1().setExpressions && (c = b.item1().getExpressions().length, b.item1().setExpressions(a.slice(0, c))), void(b.item2() && b.item2().setExpressions && b.item2().setExpressions(a.slice(c)))) : void b.expression(a[0])
                    },
                    toJSON: function(a) {
                        return d.call(this, a, m)
                    },
                    fromJSON: function(a, b, c) {
                        if (a) {
                            var d = this;
                            e.call(d, b, m, a, c), d.b_a(!0), d.initExpression(), d.c_a()
                        }
                    }
                }, n.prototype.RV = n.prototype.compareType, n.fromSource = function(a) {
                    return k(12, z, a, z)
                }, n.fromFormula = function(a) {
                    return k(12, z, "", a)
                }, n.fromDay = function(a) {
                    var b = k(6, z, a);
                    return b.expectTypeId(5), b
                }, n.fromMonth = function(a) {
                    var b = k(6, z, a);
                    return b.expectTypeId(3), b
                }, n.fromQuarter = function(a) {
                    var b = k(6, z, a);
                    return b.expectTypeId(2), b
                }, n.fromWeek = function(a) {
                    var b = k(6, z, a);
                    return b.expectTypeId(4), b
                }, n.fromYear = function(a) {
                    var b = k(6, z, a);
                    return b.expectTypeId(1), b
                }, n
            }(), t.Condition = j, k = function(a, b, c, d, e, f, g, h, i) {
                return new j(a, {
                    compareType: b,
                    expected: c,
                    formula: d,
                    customValueType: e,
                    type: f,
                    ranges: g,
                    item1: h,
                    item2: i
                })
            }, t.$V = k, l = function() {
                function a(a, b, c) {
                    var d = this;
                    d.ruleType(a), d.style(b), d.ranges(c)
                }
                var c = {
                    ruleType: b("ruleType", z),
                    ranges: b("ranges", z, function(a) {
                        var b = this.condition();
                        b && b.ranges() && b.ranges(a)
                    }),
                    condition: b("condition", z),
                    style: b("style", z),
                    priority: b("priority", 1),
                    stopIfTrue: b("stopIfTrue", !1),
                    evaluate: function(a, b, c, d) {
                        var e, f, g = this;
                        return g.contains(b, c) ? (g.initCondition(), e = {
                            baseRow: 0,
                            baseCol: 0
                        }, g.getBaseCoordinate(e), g.condition().adjustOffset(b - e.baseRow, c - e.baseCol), f = z, g.condition().evaluate(a, b, c, d) && (f = g.getExpected()), g.condition().adjustOffset(0, 0), f) : z
                    },
                    contains: function(a, b) {
                        var c, d, e, f = this.ranges();
                        if (f) for (c = fa(f), e = 0; e < c; e++) if (d = f[e], d.contains(a, b)) return !0;
                        return !1
                    },
                    createCondition: function() {
                        return null
                    },
                    initCondition: function(a) {
                        var b = this.condition();
                        b || (b = this.createCondition(), b && (b.ranges(this.ranges()), this.condition(b)), a && this.context(a), this.context() && b && b.context(this.context()))
                    },
                    context: function(a) {
                        return 1 === arguments.length && (this.xc = a, this.condition() && this.condition().context(a)), this.xc
                    },
                    getExpected: function() {
                        return this.style()
                    },
                    reset: function() {
                        var a = this;
                        a.ranges(z), a.condition(z), a.style(z), a.stopIfTrue(!1), a.priority(1)
                    },
                    intersects: function(a, b, c, d) {
                        var e, f, g, h = this.ranges();
                        if (h) for (e = fa(h), g = 0; g < e; g++) if (f = h[g], f.intersect(a, b, c, d)) return !0;
                        return !1
                    },
                    isScaleRule: function() {
                        return !1
                    },
                    getBaseCoordinate: function(a) {
                        var b, c, d, e, f;
                        if (a.baseRow = Number.MAX_VALUE, a.baseCol = Number.MAX_VALUE, b = this, b.ranges() && fa(b.ranges()) > 0) for (c = 0; c < fa(b.ranges()); c++) d = b.ranges()[c], e = d.row, f = d.col, e = e === -1 ? 0 : e, f = f === -1 ? 0 : f, a.baseRow = D(e, a.baseRow), a.baseCol = D(f, a.baseCol);
                        else a.baseRow = 0, a.baseCol = 0
                    },
                    _V: function(a, b, c) {
                        var d, e, f, g, h, i = this,
                            j = c ? b : 0,
                            k = c ? 0 : b;
                        if (i.ranges()) for (d = fa(i.ranges()), e = 0; e < d; e++) f = i.ranges()[e], g = c ? f.row : f.col, h = c ? na(f) : oa(f), g !== -1 && (g >= a ? i.ranges()[e] = _(f.row + j, f.col + k, na(f), oa(f)) : a < g + h && (i.ranges()[e] = _(f.row, f.col, na(f) + j, oa(f) + k)))
                    },
                    rI: function(a, b) {
                        this._V(a, b, !0)
                    },
                    tI: function(a, b) {
                        this._V(a, b, !1)
                    },
                    aW: function(a, b, c) {
                        var d, e, f, g, h, i, j, k, l, m, n = this,
                            o = c ? a : 0,
                            p = c ? 0 : a,
                            q = c ? b : 0,
                            r = c ? 0 : b;
                        if (n.ranges()) {
                            for (d = [], e = fa(n.ranges()), f = 0; f < e; f++) g = n.ranges()[f], h = c ? g.row : g.col, i = c ? na(g) : oa(g), h !== -1 && (h > a ? h + i <= a + b ? d.push(g) : n.ranges()[f] = _(g.row - q, g.col - r, na(g), oa(g)) : a < h + i && (j = _(g.row, g.col, na(g) - D(g.row + na(g) - o, q), oa(g) - D(g.col + oa(g) - p, r)), 0 === oa(j) || 0 === na(j) ? d.push(g) : n.ranges()[f] = j));
                            for (k = fa(d), l = 0; l < k; l++) m = d[l], da(n.ranges(), m)
                        }
                    },
                    GR: function(a, b) {
                        this.aW(a, b, !0)
                    },
                    HR: function(a, b) {
                        this.aW(a, b, !1)
                    },
                    toJSON: function(a) {
                        return d.call(this, a)
                    },
                    fromJSON: function(a, b, c) {
                        a && (e.call(this, b, z, a, c), this.initCondition(b), this.f_a())
                    },
                    f_a: function() {
                        var a = this.condition();
                        a && V(a)
                    }
                };
                return x.extend(a.prototype, c), a
            }(), t.ConditionRuleBase = l, m = function(a) {
                var c, f;
                x.inherit(g, a), c = ["ruleType", "style", "operator", "text", "formula", "type", "rank", "priority", "stopIfTrue", "ranges"];

                function g(b, c, d, e, f, g, h, i, j, k) {
                    a.call(this, b, d);
                    var l = this;
                    l.ranges(c), l.operator(e), l.value1("string" == typeof f ? x.trim(f) : f), l.value2("string" == typeof g ? x.trim(g) : g), l.text(h), l.formula(i), l.type(j), l.rank(k)
                }
                return f = {
                    operator: b("operator", z),
                    value1: function(a, b) {
                        var c, d;
                        return 1 !== arguments.length ? (c = this.condition(), c && (d = c.formula(a, b, 0), d && d.length > 0) ? "=" + N(x.trim("" + d), "=") : this._Qa) : void(this._Qa = a)
                    },
                    value2: function(a, b) {
                        var c, d;
                        return 1 !== arguments.length ? (c = this.condition(), c && (d = c.formula(a, b, 1), d && d.length > 0) ? "=" + N(x.trim("" + d), "=") : this.aRa) : void(this.aRa = a)
                    },
                    text: b("text", z),
                    formula: function(a, b) {
                        var c = this,
                            d = c.condition();
                        return "string" != typeof a ? d && d.formula(a, b) || c.Yw : (c.Yw = a, void(d && d.formula(a)))
                    },
                    type: b("type", z),
                    rank: b("rank", z),
                    priority: b("priority", 1),
                    cellValueRuleCreateCondition: function() {
                        var a, b, c, d, e, f, g, h, i = this,
                            j = i.value1(),
                            l = i.value2(),
                            m = i.ranges(),
                            n = i.bW(j) ? N(j, "=") : z,
                            o = i.bW(l) ? N(l, "=") : z,
                            p = i.operator();
                        return 6 === p ? (a = k(11, 3, j, n, A, A, m), a.treatNullValueAsZero(!0), b = k(11, 5, l, o, A, A, m), b.treatNullValueAsZero(!0), e = k(0, 1, z, z, z, z, m, a, b), c = k(11, 5, j, n, A, A, m), c.treatNullValueAsZero(!0), d = k(11, 3, l, o, A, A, m), d.treatNullValueAsZero(!0), f = k(0, 1, z, z, z, z, m, c, d), k(0, 0, z, z, z, z, m, e, f)) : 7 === p ? (a = k(11, 4, j, n, A, A, m), a.treatNullValueAsZero(!0), b = k(11, 2, l, o, A, A, m), a.treatNullValueAsZero(!0), e = k(0, 0, z, z, z, z, m, a, b), c = k(11, 2, j, n, A, A, m), c.treatNullValueAsZero(!0), d = k(11, 4, l, o, A, A, m), d.treatNullValueAsZero(!0), f = k(0, 0, z, z, z, z, m, c, d), k(0, 1, z, z, z, z, m, e, f)) : (g = p, h = k(11, g, j, n, A, A, m), h.treatNullValueAsZero(!0), h)
                    },
                    bW: function(a) {
                        return !R(a) && "=" === a[0]
                    },
                    specificTextRuleCreateCondition: function() {
                        var a, b, c, d, e = this.operator();
                        switch (e) {
                            case 2:
                                a = 2;
                                break;
                            case 3:
                                a = 4;
                                break;
                            case 0:
                                a = 6;
                                break;
                            case 1:
                                a = 7;
                                break;
                            default:
                                a = 0
                        }
                        return b = this.text(), c = z, b && "=" === b[0] && (c = b), d = k(2, a, b, c, A, A, this.ranges()), d.ignoreCase(!0), d.useWildCards(2 !== e && 3 !== e), d
                    },
                    formulaRuleCreateCondition: function() {
                        var a = this,
                            b = a.ranges();
                        return k(4, z, z, a.Yw, 4, b)
                    },
                    dateOccurringRuleCreateCondition: function() {
                        return k(6, z, this.type(), z, z, A, this.ranges())
                    },
                    top10RuleCreateCondition: function() {
                        return k(8, z, this.rank(), z, z, this.type(), this.ranges())
                    },
                    uniqueRuleCreateCondition: function() {
                        return k(9, z, !1, z, z, z, this.ranges())
                    },
                    duplicateRuleCreateCondition: function() {
                        return k(9, z, !0, z, z, z, this.ranges())
                    },
                    averageRuleCreateCondition: function() {
                        return k(10, z, z, z, z, this.type(), this.ranges())
                    },
                    createCondition: function() {
                        return this[i[this.ruleType()] + "CreateCondition"]()
                    },
                    reset: function() {
                        var a = this;
                        switch (a.ranges(z), a.condition(z), a.style(z), a.stopIfTrue(!1), a.priority(1), a.operator(6), a.value1(z), a.value2(z), a.text(""), a.formula(z), a.type(0), a.rank(10), a.ruleType()) {
                            case 1:
                                a.operator(6);
                                break;
                            case 2:
                                a.operator(0);
                                break;
                            case 4:
                                a.style(0);
                                break;
                            case 5:
                                a.type(0), a.rank(10);
                                break;
                            case 8:
                                a.type(0)
                        }
                    },
                    toJSON: function(a) {
                        var b = d.call(this, a, c),
                            e = this.value1(),
                            f = this.value2();
                        return R(e) || (b.value1 = e), R(f) || (b.value2 = f), b
                    },
                    fromJSON: function(a, b, d) {
                        e.call(this, b, c, a, d), R(a.value1) || this.value1(a.value1), R(a.value2) || this.value2(a.value2), this.initCondition(b), this.f_a()
                    }
                }, x.extend(g.prototype, f), g
            }(l), t.NormalConditionRule = m, n = function() {
                function a(a, b) {
                    this.type = a, this.value = b
                }
                return a
            }(), t.ScaleValue = n, o = function(a) {
                var c, f;
                x.inherit(g, a), c = ["ruleType", "ranges", "minType", "minValue", "minColor", "maxType", "maxValue", "maxColor", "midType", "midValue", "midColor", "priority"];

                function g(b, c, d, e, f, g, h, i, j, k, l) {
                    var m, n, o, p, q, r, s, t, u, v;
                    a.call(this, b, z, l), m = this, m.lowestValueCached = z, m.highestValueCached = z, m.cached = !1, m.cW = z, n = c, o = d, p = e, q = f, r = g, s = h, t = i, u = j, v = k, arguments.length <= 1 && (n = 1, o = z, p = $(255, 248, 105, 107), q = 4, r = 50, s = $(255, 255, 235, 132), t = 2, u = z, v = $(255, 99, 190, 123)), m.minColor(p), m.minValue(o), m.minType(n), m.midColor(s), m.midValue(r), m.midType(q), m.maxColor(v), m.maxValue(u), m.maxType(t)
                }
                return f = {
                    stopIfTrue: function() {
                        return !1
                    },
                    minValue: b("minValue", z),
                    minType: b("minType", 5),
                    minColor: b("minColor", z),
                    midValue: b("midValue", 50, z, function(a) {
                        var b = this;
                        if (b.lh) {
                            if (2 === b.midType()) return b.dW(b.lh);
                            if (1 === b.midType()) return b.eW(b.lh)
                        }
                        return a
                    }),
                    midType: b("midType", z),
                    midColor: b("midColor", z),
                    maxType: b("maxType", 7),
                    maxValue: b("maxValue", z),
                    maxColor: b("maxColor", z),
                    isScaleRule: function() {
                        return !0
                    },
                    createCondition: function() {
                        return z
                    },
                    fW: function(a) {
                        var b = k(8, z, z, z, z, 1).getTopValues(a, 1, this.ranges());
                        return fa(b) > 0 ? b[0] : z
                    },
                    gW: function(a) {
                        var b = k(8, z, z, z, z, 0).getTopValues(a, 1, this.ranges());
                        return fa(b) > 0 ? b[0] : z
                    },
                    hW: function(a) {
                        var b, c, d = [],
                            e = fa(a);
                        for (c = 0; c < e; c++) b = a[c], d.push(_(b.row, b.col, na(b), oa(b)));
                        return d
                    },
                    iW: function() {
                        var a, b, c, d = this.cW,
                            e = this.ranges();
                        if (!d) return this.cW = this.hW(e), !1;
                        if (a = fa(d), b = fa(e), a !== b) return !0;
                        for (c = 0; c < b; c++) if (!d[c].equals(e[c])) return !0;
                        return !1
                    },
                    jW: function(a) {
                        var b = this;
                        b.iW() && (b.Nm(), b.cW = b.hW(b.ranges())), b.cached === !1 && (b.lowestValueCached = b.fW(a), b.highestValueCached = b.gW(a), b.cached = !0)
                    },
                    Nm: function() {
                        this.lowestValueCached = z, this.highestValueCached = z, this.cached = !1
                    },
                    kW: function(a, b, c, d) {
                        var e, f;
                        return d && (e = a.Cf()) ? (f = e.parse(a.yj(), d, b, c), e.Hg(a.yj(), f, ha(b, c), !1)) : z
                    },
                    bW: function(a) {
                        return a && "=" === a[0]
                    },
                    lW: function(a) {
                        return R(a) || "" === a ? z : "=" === a[0] ? a.substr(1) : a
                    },
                    mW: function(a, b, c, d) {
                        if (this.bW(d)) return this.kW(a, b, c, this.lW("" + d));
                        var e = {};
                        return L(d, e) ? e.value : NaN
                    },
                    dW: function(a) {
                        return this.jW(a), this.highestValueCached
                    },
                    eW: function(a) {
                        return this.jW(a), this.lowestValueCached
                    },
                    nW: function(a, b, c, d) {
                        var e, f, g = this.mW(a, b, c, d);
                        return !isNaN(g) && 0 <= g && g <= 100 && (e = this.eW(a), f = this.dW(a), typeof e !== B && e !== z && typeof f !== B && f !== z) ? e + (f - e) * g / 100 : z
                    },
                    oW: function(a, b, c, d) {
                        var e, f, g, h, i, j, k, l, m, n, o = this.mW(a, b, c, d);
                        if (!isNaN(o) && 0 <= o && o <= 100) {
                            for (e = 0, f = this.ranges(), g = fa(f), h = 0; h < g; h++) i = this.YV("PERCENTILE", [a.Tq(f[h]), o / 100]), j = a.Cf(), k = j.unparse(z, i, b, c), l = j.parse(a.yj(), k, b, c), m = j.Hg(a.yj(), l, ha(b, c), !1), n = {}, e += L(m, n) ? n.value : 0;
                            return e / g
                        }
                        return z
                    },
                    pW: function(a, b, c, d, e) {
                        var f, g, h = this;
                        switch (d) {
                            case 6:
                                return h.bW(e) || (e = "=" + e), h.mW(a, b, c, e);
                            case 2:
                                return h.dW(a);
                            case 1:
                                return h.eW(a);
                            case 0:
                                return h.mW(a, b, c, e);
                            case 3:
                                return h.nW(a, b, c, e);
                            case 4:
                                return h.oW(a, b, c, e);
                            case 7:
                                return f = h.dW(a), f < 0 ? 0 : f;
                            case 5:
                                return g = h.eW(a), g > 0 ? 0 : g;
                            default:
                                return z
                        }
                    },
                    qW: function(a, b, c) {
                        return a === b && a === c ? 1 : a <= b ? 0 : a >= c ? 1 : (a - b) / (c - b)
                    },
                    rW: function(a, b, c) {
                        var d, e, f, g, h, i;
                        return 0 <= a && a <= 1 ? (d = Z.ec(b), e = Z.ec(c), f = d.a * (1 - a) + e.a * a, g = d.r * (1 - a) + e.r * a, h = d.g * (1 - a) + e.g * a, i = d.b * (1 - a) + e.b * a, $(parseFloat(f / 255), parseInt(g, 10), parseInt(h, 10), parseInt(i, 10))) : z
                    },
                    YV: function(a, b) {
                        var c, d, e, f;
                        if (!X) return z;
                        if (c = ga.findGlobalFunction(a)) {
                            for (d = [], e = fa(b), f = 0; f < e; f++) d[f] = la(b[f]);
                            return new w.Jh(c, d)
                        }
                        return z
                    },
                    rI: function(b, c) {
                        a.prototype.rI.call(this, b, c), this.Nm()
                    },
                    tI: function(b, c) {
                        a.prototype.tI.call(this, b, c), this.Nm()
                    },
                    GR: function(b, c) {
                        a.prototype.GR.call(this, b, c), this.Nm()
                    },
                    HR: function(b, c) {
                        a.prototype.HR.call(this, b, c), this.Nm()
                    },
                    scaleEvaluate: function(a, b, c, d) {
                        var e, f, g, h, i = this;
                        if (i.jW(a), i.contains(b, c)) {
                            if (R(d)) return z;
                            try {
                                if (e = K(d), f = i.pW(a, b, c, i.minType(), i.minValue()), g = i.pW(a, b, c, i.midType(), i.midValue()), h = i.pW(a, b, c, i.maxType(), i.maxValue()), f > h) return z;
                                if (isNaN(g)) {
                                    if (!isNaN(f) && !isNaN(h)) return i.qW(e, f, h)
                                } else if (!isNaN(f) && !isNaN(h)) return e < f ? 0 : e >= h ? 2 : f <= e && e <= g ? i.qW(e, f, g) : 1 + i.qW(e, f, h)
                            } catch (a) {
                                return z
                            }
                        }
                        return z
                    },
                    twoScaleRuleEvaluate: function(a, b, c, d) {
                        var e, f, g, h, i;
                        if (!R(d)) {
                            if (e = {}, f = J(d) && L(d, e) ? e.value : NaN, isNaN(f)) return z;
                            if (g = this, h = g.pW(a, b, c, g.minType(), g.minValue()), i = g.pW(a, b, c, g.maxType(), g.maxValue()), !R(h) && !R(i)) return e = g.qW(f, h, i), g.rW(e, g.minColor(), g.maxColor())
                        }
                        return z
                    },
                    threeScaleRuleEvaluate: function(a, b, c, d) {
                        var e, f, g, h, i, j = this;
                        if (j.lh = a, !R(d)) {
                            if (e = {}, f = J(d) && L(d, e) ? e.value : NaN, isNaN(f)) return z;
                            if (g = j.pW(a, b, c, j.minType(), j.minValue()), h = j.pW(a, b, c, j.midType(), j.midValue()), i = j.pW(a, b, c, j.maxType(), j.maxValue()), !R(g) && !R(i) && !R(h)) return g > i ? z : f <= g || g === i ? f >= i ? j.maxColor() : j.minColor() : f >= i ? j.maxColor() : f <= h ? (e = j.qW(f, g, h), j.rW(e, j.minColor(), j.midColor())) : (e = j.qW(f, h, i), j.rW(e, j.midColor(), j.maxColor()))
                        }
                        return z
                    },
                    evaluate: function(a, b, c, d) {
                        return this[i[this.ruleType()] + "Evaluate"](a, b, c, d)
                    },
                    ad: function() {
                        var a = this;
                        a.minValue(z), a.minType(1), a.midValue(50), a.midType(4), a.maxValue(z), a.maxType(2), 10 === a.ruleType() && (a.minColor($(0, 255, 255, 255)), a.maxColor($(255, 99, 190, 123))), 11 === a.ruleType() && (a.midValue(50), a.midType(4), a.minColor($(255, 248, 105, 107)), a.midColor($(255, 255, 235, 132)), a.maxColor($(255, 99, 190, 123)))
                    },
                    reset: function() {
                        var a = this;
                        a.ranges(z), a.condition(z), a.style(z), a.ad(), a.lh = z, a.stopIfTrue(!1), a.priority(1)
                    },
                    toJSON: function(a) {
                        return d.call(this, a, c)
                    },
                    fromJSON: function(a, b, d) {
                        e.call(this, b, c, a, d), this.initCondition(b), this.f_a()
                    }
                }, x.extend(g.prototype, f), g
            }(l), t.ScaleRule = o, p = function(a) {
                var c, f;
                x.inherit(g, a), c = ["ruleType", "ranges", "gradient", "color", "showBorder", "borderColor", "dataBarDirection", "negativeFillColor", "useNegativeFillColor", "negativeBorderColor", "useNegativeBorderColor", "axisPosition", "axisColor", "showBarOnly", "minType", "minValue", "maxType", "maxValue", "priority"];

                function g(b, c, d, e, f, g) {
                    var h = b,
                        i = c,
                        j = d,
                        k = e,
                        l = f;
                    0 === arguments.length && (h = 5, i = z, j = 7, k = z, l = $(255, 99, 142, 198)), a.call(this, 12, h, i, z, z, z, z, j, k, z, g), this.ad(l)
                }
                return f = {
                    gradient: b("gradient", !0),
                    color: b("color", z),
                    showBorder: b("showBorder", !1),
                    borderColor: b("borderColor", "black"),
                    dataBarDirection: b("dataBarDirection", 0),
                    negativeFillColor: b("negativeFillColor", "red"),
                    useNegativeFillColor: b("useNegativeFillColor", !0),
                    negativeBorderColor: b("negativeBorderColor", "black"),
                    useNegativeBorderColor: b("useNegativeBorderColor", !1),
                    axisPosition: b("axisPosition", 0),
                    axisColor: b("axisColor", "black"),
                    showBarOnly: b("showBarOnly", !1),
                    ad: function(a) {
                        var b = this;
                        b.gradient(!0), b.color(a), b.showBorder(!1), b.borderColor("black"), b.dataBarDirection(0), b.negativeFillColor("red"), b.useNegativeFillColor(!0), b.negativeBorderColor("black"), b.useNegativeBorderColor(!1), b.axisPosition(0), b.axisColor("black"), b.showBarOnly(!1)
                    },
                    reset: function() {
                        var a = this;
                        a.ranges(z), a.condition(z), a.style(z), a.ad($(255, 99, 142, 198)), a.stopIfTrue(!1), a.priority(1), a.minValue(z), a.minType(5), a.midValue(z), a.midType(z), a.maxValue(z), a.maxType(7), a.minColor(z), a.midColor(z), a.maxColor(z)
                    },
                    sW: function(a, b, c, d) {
                        var e, f, g, h, i = this,
                            j = d ? i.maxType() : i.minType(),
                            k = d ? i.maxValue() : i.minValue();
                        if (6 !== j && 4 !== j) return i.pW(a, b, c, j, k);
                        for (f = 0; f < fa(i.ranges()); f++) if (i.ranges()[f].intersect(b, -1, 1, -1) && (e = i.ranges()[f])) return g = e.row, h = e.col, g = g === -1 ? 0 : g, h = h === -1 ? 0 : h, i.pW(a, g, h, j, k)
                    },
                    tW: function(a, b, c, d) {
                        return d = 0, a >= c && a > b ? [1, d] : a <= b && a < c ? [0, d] : c === b ? [.5, d] : [(a - b) / (c - b), d]
                    },
                    uW: function(a, b, c, d) {
                        var e, f, g;
                        return d = .5, e = F(c - b), c > 0 && b >= 0 ? c === b ? [.5, d] : a >= c ? [.5, d] : a <= b ? [b / c * .5, d] : [.5 * F(a / c), d] : c > 0 && b < 0 ? (f = c > F(b) ? .5 : c / e, g = c > F(b) ? b / e : -.5, a > 0 ? a >= c ? [f, d] : [a / c * f, d] : a < 0 ? a <= b ? [g, d] : [a / b * g, d] : [0, d]) : c <= 0 && b < 0 ? c === b ? [-.5, d] : a >= c ? [-c / b * .5, d] : a <= b ? [-.5, d] : [-a / b * .5, d] : 0 === c && 0 === b ? [0, d] : (d = -1, [-1, d])
                    },
                    vW: function(a, b, c, d) {
                        var e, f, g, h = F(b),
                            i = F(c),
                            j = F(c - b),
                            k = b < 0 ? -1 : 1;
                        return c > 0 && b >= 0 || c <= 0 && b < 0 ? (e = E(h, i), f = D(h, i), g = F(a), d = b < 0 ? 1 : 0, g <= f && g < e ? [0, d] : g >= e && g > f ? [k, d] : f === e ? [.5 * k, d] : [k * (F(a) - f) / j, d]) : c > 0 && b < 0 ? (d = F(b) / j, 0 === a ? [0, d] : a >= c ? [1 - d, d] : [E(a, b) / j, d]) : 0 === c && 0 === b ? (d = .5, 0 === a ? [0, d] : [.5 * k, d]) : (d = -1, [-1, d])
                    },
                    wW: function(a, b, c, d) {
                        var e = this;
                        return 0 === e.axisPosition() ? e.vW(a, b, c, d) : 1 === e.axisPosition() ? e.uW(a, b, c, d) : e.tW(a, b, c, d)
                    },
                    evaluate: function(a, b, c, d) {
                        var e, f, g, h, i, j, k, l, m, n, o, p;
                        if (!R(d)) {
                            if (e = {}, f = J(d, !0) && L(d, e) ? e.value : NaN, isNaN(f)) return z;
                            if (g = this, h = g.sW(a, b, c, !1), i = g.sW(a, b, c, !0), T(h, Date) && (h = ba.Ra(h)), T(i, Date) && (i = ba.Ra(i)), !R(h) && !R(i)) return h > i && (j = i, i = h, h = j), l = g.wW(f, h, i, k), !l || fa(l) < 2 ? z : (m = l[0], k = l[1], n = f < 0 && g.useNegativeFillColor() ? g.negativeFillColor() : g.color(), o = f < 0 && g.useNegativeBorderColor() ? g.negativeBorderColor() : g.borderColor(), p = g.axisColor(), n = ia.Om(a, n), o = ia.Om(a, o), p = ia.Om(a, p), {
                                fillColor: n,
                                borderColor: o,
                                showBorder: g.showBorder(),
                                axisColor: p,
                                isGradient: g.gradient(),
                                direction: g.dataBarDirection(),
                                axisLocation: k,
                                scale: m,
                                showBarOnly: g.showBarOnly()
                            })
                        }
                        return z
                    },
                    toJSON: function(a) {
                        return d.call(this, a, c)
                    },
                    fromJSON: function(a, b, d) {
                        e.call(this, b, c, a, d), this.initCondition(b), this.f_a()
                    }
                }, x.extend(g.prototype, f), g.paintDataBar = function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l, m, n, o, p, q, r, s, t, u = new v.Rect(c + 2, d + 2, e - 4, f - 4),
                        w = u.x,
                        x = u.y,
                        y = G(F(u.width * b.scale)),
                        z = u.height;
                    if (0 === b.axisLocation) b.scale <= 0 && (y = 0);
                    else if (1 === b.axisLocation) b.scale < 0 ? w = w + u.width - y : y = 0;
                    else {
                        for (g = G(u.width * b.axisLocation + w) + .5, h = u.y, i = 1, j = f - 2, a.lineWidth = i, a.strokeStyle = b.axisColor, a.beginPath(), k = 0; k <= j; k += 2) 1 === b.direction ? (a.moveTo(2 * c + e - g, h + k), a.lineTo(2 * c + e - g, h + k + 1)) : (a.moveTo(g, h + k), a.lineTo(g, h + k + 1));
                        a.stroke(), b.scale > 0 ? w = g + i : b.scale < 0 ? w = g - y : y = 0
                    }
                    b.showBorder && (w = G(w) + .5, y -= 1, x += .5, z -= 1), l = w, m = w + y, 1 === b.direction && (l = 2 * c + e - w - y, m = 2 * c + e - w), y >= 0 && z >= 0 && (n = b.fillColor, b.isGradient && (o = .9, n = a.createLinearGradient(l, x, m, x), p = Z.ec(b.fillColor), q = $(p.a, G(255 * o + p.r * (1 - o)), G(255 * o + p.g * (1 - o)), G(255 * o + p.b * (1 - o))), r = b.scale < 0 ? 1 - o : o, s = b.fillColor, t = b.scale < 0 ? 1 : 0, 1 === b.direction ? (n.addColorStop(r, s), n.addColorStop(t, q)) : (n.addColorStop(r, q), n.addColorStop(t, s))), a.fillStyle = n, a.fillRect(l, x, y, z), b.showBorder && y > 0 && z > 0 && (a.strokeStyle = b.borderColor, a.strokeRect(l, x, y, z)))
                }, g
            }(o), t.DataBarRule = p, q = function() {
                function a(a, b, c) {
                    this.isGreaterThanOrEqualTo = a, this.iconValueType = b, this.iconValue = c
                }
                return a
            }(), t.IconCriterion = q, r = function(a) {
                var c, f;
                x.inherit(g, a), c = ["ruleType", "ranges", "iconSetType", "iconCriteria", "showIconOnly", "reverseIconOrder", "priority", "icons"];

                function g(b, c) {
                    var d = b;
                    0 === arguments.length && (d = 0), a.call(this, 13, z, z, z), this.ranges(c), this.ad(d)
                }
                return f = {
                    xW: function(a) {
                        var b = this;
                        b.iconSetType(a, !1), b.iconSetType() >= 0 && b.iconSetType() <= 9 ? (b.NV = [], b.NV[0] = new q((!0), 4, 33), b.NV[1] = new q((!0), 4, 67), b.BZa = [], b.BZa[0] = {
                            iconSetType: a,
                            iconIndex: 0
                        }, b.BZa[1] = {
                            iconSetType: a,
                            iconIndex: 1
                        }, b.BZa[2] = {
                            iconSetType: a,
                            iconIndex: 2
                        }) : b.iconSetType() >= 10 && b.iconSetType() <= 14 ? (b.NV = [], b.NV[0] = new q((!0), 4, 25), b.NV[1] = new q((!0), 4, 50), b.NV[2] = new q((!0), 4, 75), b.BZa = [], b.BZa[0] = {
                            iconSetType: a,
                            iconIndex: 0
                        }, b.BZa[1] = {
                            iconSetType: a,
                            iconIndex: 1
                        }, b.BZa[2] = {
                            iconSetType: a,
                            iconIndex: 2
                        }, b.BZa[3] = {
                            iconSetType: a,
                            iconIndex: 3
                        }) : b.iconSetType() >= 15 && b.iconSetType() <= 19 ? (b.NV = [], b.NV[0] = new q((!0), 4, 20), b.NV[1] = new q((!0), 4, 40), b.NV[2] = new q((!0), 4, 60), b.NV[3] = new q((!0), 4, 80), b.BZa = [], b.BZa[0] = {
                            iconSetType: a,
                            iconIndex: 0
                        }, b.BZa[1] = {
                            iconSetType: a,
                            iconIndex: 1
                        }, b.BZa[2] = {
                            iconSetType: a,
                            iconIndex: 2
                        }, b.BZa[3] = {
                            iconSetType: a,
                            iconIndex: 3
                        }, b.BZa[4] = {
                            iconSetType: a,
                            iconIndex: 4
                        }) : b.iconSetType() > 19 && (b.NV = [], b.BZa = [])
                    },
                    ad: function(a) {
                        this.showIconOnly(!1), this.reverseIconOrder(!1), this.xW(a)
                    },
                    yW: function(a) {
                        var b = fa(this.NV) + 1;
                        return this.reverseIconOrder() && b > 2 ? b - 1 - a : a
                    },
                    pW: function(a, b, c, d) {
                        var e = this,
                            f = e.NV[d];
                        if (f) switch (f.iconValueType) {
                            case 7:
                                return e.mW(a, b, c, f.iconValue);
                            case 1:
                                return e.mW(a, b, c, f.iconValue);
                            case 4:
                                return e.nW(a, b, c, f.iconValue);
                            case 5:
                                return e.oW(a, b, c, f.iconValue);
                            default:
                                return z
                        }
                    },
                    evaluate: function(a, b, c, d) {
                        var e, f, g, h, i, j, k, l, m, n, o, p, q = this,
                            r = d;
                        if (R(r)) return z;
                        if (e = {}, f = J(d, !0) && "boolean" != typeof r && L(d, e) ? e.value : NaN, isNaN(f)) return z;
                        if (g = 0, h = q.iconSetType(), i = q.NV, h >= 15 ? g = 5 : h >= 10 ? g = 4 : h >= 0 && (g = 3), !i) return 0;
                        for (k = 0, l = g - 1; l > 0; l--) if (l < fa(i) + 1 && (j = i[l - 1], !R(j && j.iconValue) && (m = q.pW(a, b, c, l - 1), !R(m) && (n = j.isGreaterThanOrEqualTo ? f >= m : f > m, f < Number.MAX_VALUE && n)))) {
                            k = l;
                            break
                        }
                        return o = q.yW(k), p = q.BZa, p ? {
                            iconSetType: p[o] ? p[o].iconSetType : t.IconSetType.noIcons,
                            iconIndex: p[o] ? p[o].iconIndex : 0,
                            showIconOnly: q.showIconOnly()
                        } : {
                            iconSetType: t.IconSetType.noIcons,
                            iconIndex: 0,
                            showIconOnly: q.showIconOnly()
                        }
                    },
                    reset: function() {
                        var a = this;
                        a.ranges(z), a.condition(z), a.style(z), a.showIconOnly(!1), a.reverseIconOrder(!1), a.iconSetType(0, !1), a.NV = z, a.stopIfTrue(!1), a.priority(1), a.minColor(z), a.minValue(z), a.minType(5), a.midColor(z), a.midValue(z), a.midType(z), a.maxColor(z), a.maxValue(z), a.maxType(7), a.BZa = z
                    },
                    iconSetType: b("iconSetType", 0, function(a) {
                        this.xW(a)
                    }),
                    icons: function(a) {
                        return 1 === arguments.length && (this.BZa = a), this.BZa
                    },
                    reverseIconOrder: b("reverseIconOrder", !1),
                    showIconOnly: b("showIconOnly", !1),
                    iconCriteria: function() {
                        return this.NV
                    },
                    toJSON: function(a) {
                        return d.call(this, a, c)
                    },
                    fromJSON: function(a, b, d) {
                        e.call(this, b, c, a, d), this.initCondition(b), this.f_a()
                    }
                }, x.extend(g.prototype, f), g.paintIconSet = function(a, b, c, d, e, f, h, i) {
                    var j, k = c + 1,
                        l = d + 2,
                        m = 16,
                        n = 16;
                    b.showIconOnly && (1 === h.hAlign ? k = c + e / 2 - m / 2 : 2 === h.hAlign && (k = c + e - m - 2)), 1 === h.vAlign ? l = d + f / 2 - n / 2 : 2 === h.vAlign && (l = d + f - n - 2);

                    function o() {
                        var b, c = arguments,
                            d = c[0],
                            e = c[1],
                            f = c[2],
                            g = c[3],
                            h = c[4];
                        i.ko(d) ? (b = i.lo(d), 5 === fa(c) ? a.drawImage(b, e, f, g, h) : a.drawImage(b, e, f, g, h, c[5], c[6], c[7], c[8])) : i.fo(d)
                    }
                    if (b.iconSetType !== t.IconSetType.noIcons) {
                        j = g.getIcon(b.iconSetType, b.iconIndex);
                        try {
                            j && i && ("string" === x.getType(j) ? o(j, k, l, m, n) : o(j.image, j.x, j.y, j.w, j.h, k, l, m, n))
                        } catch (a) {}
                    }
                }, g.zW = function() {
                    return "data:image/png;base64, ";
                }, g.getIcon = function(a, b) {
                    var c, d, e, f, h, i, j = [
                            [160, 180, 80, z, z],
                            [100, 120, 140, z, z],
                            [900, 920, 880, z, z],
                            [820, 840, 860, z, z],
                            [780, 1e3, 420, z, z],
                            [680, 940, 400, z, z],
                            [800, 1020, 440, z, z],
                            [740, 1040, 400, z, z],
                            [720, 980, 380, z, z],
                            [700, 960, 360, z, z],
                            [160, 40, 60, 80, z],
                            [100, 0, 20, 140, z],
                            [220, 340, 460, 760, z],
                            [600, 620, 640, 660, z],
                            [200, 680, 940, 400, z],
                            [160, 40, 180, 60, 80],
                            [100, 0, 120, 20, 140],
                            [580, 600, 620, 640, 660],
                            [480, 500, 520, 540, 560],
                            [240, 260, 280, 300, 320]
                        ],
                        k = "0,",
                        l = ",16,16";
                    for (c = 0; c < fa(j); c++) for (d = 0; d < fa(j[c]); d++) e = j[c][d], e !== z && (j[c][d] = k + e + l);
                    return f = g.zW(), j[a] ? (h = j[a][b], h ? (i = h.split(","), {
                        image: f,
                        x: i[0],
                        y: i[1],
                        w: i[2],
                        h: i[3]
                    }) : z) : z
                }, g
            }(o), t.IconSetRule = r;

            function qa(a) {
                return "string" == typeof a && (a = x.trim(a), "=" !== a[0] && (a = '="' + y.Gb(a, '"', '""') + '"')), a
            }
            s = function() {
                function a(a) {
                    this.AW = [], this.BW = z, this.DW = {}, this.WS = a
                }
                function b(a, b) {
                    if (b) for (var c = 0; c < b.length; c++) a.push(b[c])
                }
                var c = {
                    getRule: function(a) {
                        return this.AW[a]
                    },
                    count: function() {
                        return fa(this.AW)
                    },
                    w4: function() {
                        return this.AW
                    },
                    UV: function(a) {
                        var b, c, d = [],
                            e = this.WS,
                            f = fa(a);
                        for (b = 0; b < f; b++) c = e.Tq(a[b]), d.push(c);
                        return d
                    },
                    EW: function(a) {
                        var b, c, d, e, f = [],
                            g = this.WS;
                        for (b = 0, c = fa(a); b < c; b++) d = a[b], e = new aa(d.row, d.col, na(d), oa(d)), 0 === d.row && na(d) === g.getRowCount() && (e.row = -1), 0 === d.col && oa(d) === g.getColumnCount() && (e.col = -1), f.push(e);
                        return f
                    },
                    QV: function() {
                        if (this.DW = {}, this.AW) for (var a = 0; a < fa(this.AW); a++) this.FW(this.AW[a])
                    },
                    OV: function() {
                        this.DW = {}
                    },
                    FW: function(a) {
                        var b, c, d, e, f, g, h, i, j, k, l, m, n = this,
                            o = n.DW,
                            p = n.UV(a.ranges()),
                            q = n.WS,
                            r = q.getRowCount(),
                            s = q.getColumnCount();
                        for (f = 0; f < fa(p); f++) for (g = p[f], h = g.row, i = g.col, j = na(g), k = oa(g), h + j - 1 >= r && (j = r - h), i + k - 1 >= s && (k = s - i), l = 0; l < j; l++) for (d = l + h, b = o[d], b || (o[d] = b = {}), m = 0; m < k; m++) e = m + i, c = b[e], c || (b[e] = c = []), c.push(a)
                    },
                    GW: function(a) {
                        var b, c, d, e, f, g, h, i, j, k, l = this.DW,
                            m = this.UV(a.ranges());
                        for (f = 0; f < fa(m); f++) for (g = m[f], h = 0; h < na(g); h++) if (d = h + g.row, b = l[d]) for (i = 0; i < oa(g); i++) if (e = i + g.col, c = b[e]) {
                            for (j = [], k = 0; k < fa(c); k++) c[k] !== a && j.push(c[k]);
                            0 === fa(j) && (j = A), b[e] = j
                        }
                    },
                    HW: function(a, b, c, d) {
                        var e, f, g, h, i, j = this.DW;
                        for (h = 0; h < c; h++) if (e = h + a, g = j[e]) for (i = 0; i < d; i++) f = i + b, g[f] = A
                    },
                    addSpecificTextRule: function(a, b, c, d) {
                        var e = new m(2, d, c, a, z, z, b);
                        return this.addRule(e)
                    },
                    addCellValueRule: function(a, b, c, d, e) {
                        var f = new m(1, e, d, a, qa(b), qa(c));
                        return this.addRule(f)
                    },
                    addDateOccurringRule: function(a, b, c) {
                        var d = new m(4, c, b, z, z, z, z, z, a);
                        return this.addRule(d)
                    },
                    addFormulaRule: function(a, b, c) {
                        var d = new m(3, c, b, z, z, z, z, a);
                        return this.addRule(d)
                    },
                    addTop10Rule: function(a, b, c, d) {
                        var e = new m(5, d, c, z, z, z, z, z, a, b);
                        return this.addRule(e)
                    },
                    addUniqueRule: function(a, b) {
                        var c = new m(6, b, a);
                        return this.addRule(c)
                    },
                    addDuplicateRule: function(a, b) {
                        var c = new m(7, b, a);
                        return this.addRule(c)
                    },
                    addAverageRule: function(a, b, c) {
                        var d = new m(8, c, b, z, z, z, z, z, a);
                        return this.addRule(d)
                    },
                    add3ScaleRule: function(a, b, c, d, e, f, g, h, i, j) {
                        var k;
                        return k = 0 === arguments.length ? new o(11) : new o(11, a, b, c, d, e, f, g, h, i, j), this.addRule(k)
                    },
                    add2ScaleRule: function(a, b, c, d, e, f, g) {
                        var h;
                        return h = 0 === arguments.length ? new o(10) : new o(10, a, b, c, z, z, z, d, e, f, g), this.addRule(h)
                    },
                    addDataBarRule: function(a, b, c, d, e, f) {
                        var g;
                        return g = 0 === arguments.length ? new p : new p(a, b, c, d, e, f), this.addRule(g)
                    },
                    addIconSetRule: function(a, b) {
                        var c = new r(a, b);
                        return this.addRule(c)
                    },
                    addRule: function(a) {
                        var b, c = this,
                            d = c.WS;
                        if (d) {
                            if (!a) throw Error(ja().Exp_RuleIsNull);
                            for (d.ITa.YUa(0, a), b = 0; b < fa(c.AW); b++) c.AW[b].priority(c.AW[b].priority() + 1);
                            return a.priority(1), c.AW.push(a), a.context(d), c.FW(a), d.$p(), a
                        }
                    },
                    removeRule: function(a) {
                        var b = this,
                            c = b.WS;
                        c && (a && (c.ITa.YUa(1, a), b.GW(a), da(b.AW, a)), c.$p())
                    },
                    IW: function(a, b, c, d, e) {
                        var f, g, h, i, j, k, l, m, n, o, p, q, r;
                        return a.intersect(b, c, d, e) ? (f = a.row, g = a.row + na(a) - 1, h = a.col, i = a.col + oa(a) - 1, j = b, k = b + d - 1, l = c, m = c + e - 1, n = [], f !== -1 && h !== -1 && j !== -1 && l !== -1 && (l - h > 0 && (o = _(f, h, na(a), l - h), n.push(o)), i - m > 0 && (p = _(f, m + 1, na(a), i - m), n.push(p)), j - f > 0 && (q = _(f, E(l, h), j - f, D(m, i) - E(l, h) + 1), n.push(q)), g - k > 0 && (r = _(k + 1, E(l, h), g - k, D(m, i) - E(l, h) + 1), n.push(r))), fa(n) > 0 ? n : z) : [a]
                    },
                    removeRuleByRange: function(a, b, c, d) {
                        var e, f, g, h, i, j, k, l, m, n, o, p = this,
                            q = p.WS;
                        if (q) {
                            if (e = [], p.AW) for (q.ITa.YUa(2), p.HW(a, b, c, d), f = 0, g = fa(p.AW); f < g; f++) if (h = p.AW[f], h && h.ranges() && h.intersects(a, b, c, d)) {
                                for (i = [], j = p.UV(h.ranges()), k = 0, l = fa(j); k < l; k++) m = p.IW(j[k], a, b, c, d), m && (i = i.concat(m));
                                fa(i) > 0 ? h.ranges(p.EW(i)) : e.push(h)
                            }
                            for (n = 0, o = fa(e); n < o; n++) da(p.AW, e[n]);
                            q.$p()
                        }
                    },
                    clearRule: function() {
                        var a = this,
                            b = a.WS;
                        b && (b.ITa.YUa(2), a.AW.length = 0, a.QV(), b.$p())
                    },
                    getRules: function(a, c) {
                        var d, e, f, g, h = this.AW;
                        return 0 === arguments.length || 0 === fa(h) ? h : (a = a === A ? -1 : a, c = c === A ? -1 : c, d = this.DW, e = [], a !== -1 && c !== -1 ? (g = d[a], g && (f = g[c], b(e, f))) : a === -1 ? x.each(d, function(a, d) {
                            f = d[c], b(e, f)
                        }) : (g = d[a], g && x.each(d, function(a, c) {
                            b(e, c)
                        })), e)
                    },
                    containsRule: function(a, b, c) {
                        return !(!a || !ca.Bb(this.AW, a)) && a.contains(b, c)
                    },
                    _V: function(a, b, c) {
                        var d, e, f, g = this;
                        if (g.AW && g.WS) for (d = fa(g.AW), e = 0; e < d; e++) f = g.AW[e], f && (c ? f.rI(a, b) : f.tI(a, b));
                        this.QV()
                    },
                    rI: function(a, b) {
                        this._V(a, b, !0)
                    },
                    tI: function(a, b) {
                        this._V(a, b, !1)
                    },
                    aW: function(a, b, c) {
                        var d, e, f, g = this;
                        if (g.AW && g.WS) for (d = fa(g.AW), e = d - 1; e >= 0; e--) f = g.AW[e], f && (c ? f.GR(a, b) : f.HR(a, b), f.ranges().length <= 0 && (g.GW(f), g.AW.splice(e, 1)));
                        this.QV()
                    },
                    GR: function(a, b) {
                        this.aW(a, b, !0)
                    },
                    HR: function(a, b) {
                        this.aW(a, b, !1)
                    },
                    Nm: function() {
                        var a, b, c, d = this.AW;
                        if (d !== z && fa(d) > 0) for (b = 0, c = fa(d); b < c; b++) a = d[b], T(a, o) && a.Nm()
                    },
                    XA: function(a, b, c, d, e, f, g) {
                        var h, i, j, k, l, m, n, o, p, q, r, s, t, u, w, x, y, z, A, B, C, D, E, F, G, H, I = [],
                            J = [],
                            K = [],
                            L = this,
                            M = L.WS;
                        for (a === -1 && (a = 0, d = 0, f = M.getRowCount()), b === -1 && (b = 0, e = 0, g = M.getColumnCount()), h = 0; h < f; h++) for (i = 0; i < g; i++) for (j = L.getRules(a + h, b + i), k = 0; k < fa(j); k++) {
                            for (l = j[k], m = l.ranges(), n = [], o = 0; o < fa(m); o++) p = m[o], q = M.Tq(p), r = q.row, s = q.col, t = na(q), u = oa(q), ea(K, p) <= -1 && p.contains(a + h, b + i) && (K.push(p), w = _(d + h, e + i, -1, -1), r + t >= f + a ? w.rowCount = f - h : a < r ? w.rowCount = t : w.rowCount = r + t - a, s + u >= g + b ? w.colCount = g - i : b < s ? w.colCount = u : w.colCount = s + u - b, L === c && p.containsRange(w) || n.push(w));
                            n.length > 0 && (x = I.indexOf(l), x < 0 ? (I.push(l), J.push(n)) : J[x] = J[x].concat(n))
                        }
                        for (y = 0, z = I.length; y < z; y++) A = L.iga(I[y].toJSON(), I[y].context()), B = A.ranges(), A.ranges(J[y]), C = A.Yw, C && (D = 1 === M.parent.options.referenceStyle, E = W(B), F = v.CalcEngine.formulaToExpression(M, C, E.r, E.c, D), G = W(J[y]), H = v.CalcEngine.expressionToFormula(M, F, G.r, G.c, D), A.formula(H)), c.addRule(A);
                        L.QV()
                    },
                    YA: function(a, b, c, d) {
                        var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u = [],
                            v = this,
                            w = v.WS;
                        for (a === -1 && (a = 0, c = w.getRowCount()), b === -1 && (b = 0, d = w.getColumnCount()), e = 0; e < c; e++) for (f = 0; f < d; f++) for (g = v.getRules(a + e, b + f), h = 0; h < fa(g); h++) {
                            for (i = g[h], j = i.ranges(), k = [], l = 0; l < fa(j); l++) m = j[l], n = w.Tq(m), o = n.row, p = n.col, q = na(n), r = oa(n), ea(u, m) <= -1 && m.contains(a + e, b + f) && (u.push(m), a > o && k.push(_(o, p, a - o, r)), b > p && k.push(_(E(a, o), p, D(a + c, o + q) - E(a, o), b - p)), b + d < p + r && k.push(_(E(a, o), b + d, D(a + c, o + q) - E(a, o), p + r - (b + d))), a + c < o + q && k.push(_(a + c, p, o + q - (a + c), r)));
                            for (s = 0; s < fa(u); s++) da(j, u[s]);
                            t = j.concat(k), t.length > 0 ? i.ranges(t) : v.removeRule(i)
                        }
                        v.QV()
                    },
                    jp: function(a, b, c, d, e, f, g, h) {
                        var i = 16,
                            j = !1,
                            k = !1,
                            l = h.sheet,
                            m = h.row,
                            n = h.col,
                            o = this.oRa(l, m, n, b),
                            q = o.iconSet,
                            s = o.dataBar;
                        return (s || q) && (a.save(), a.beginPath(), s && (p.paintDataBar(a, s, c, d, e, f), j = s.showBarOnly), q && ((e < i || f < i) && (a.rect(c, d, e, f), a.clip(), a.beginPath()), r.paintIconSet(a, q, c, d, e, f, g, h.imageLoader), k = q.showIconOnly), a.restore()), j || k
                    },
                    oRa: function(a, b, c, d) {
                        var e, f, g, h, i, j, k, l, m, n = this,
                            o = a.ss,
                            q = o.Um(b, c);
                        if (q) e = q.i, f = q.d;
                        else {
                            if (g = n.getRules(b, c), h = fa(g), h > 0) {
                                for (g.sort(function(a, b) {
                                    return a.priority() - b.priority()
                                }), i = z, j = z, m = 0; m < h && (!i || !j); m++) k = g[m], k && (T(k, p) && (i = k), T(k, r) && (j = k));
                                if (i || j) for (i = j = z, m = 0; m < h && (!i || !j) && (k = g[m], !(k && (!i && T(k, p) && (i = k), !j && T(k, r) && (j = k), k.stopIfTrue() && (l = k.evaluate(a, b, c, d))))); m++);
                                i && (f = i.evaluate(a, b, c, d)), j && (e = j.evaluate(a, b, c, d))
                            }
                            o.Wm(b, c, f, e)
                        }
                        return {
                            dataBar: f,
                            iconSet: e
                        }
                    },
                    bp: function(a, b, c) {
                        var d, e, f;
                        if (R(c) || 3 === c) for (d = this.getRules(a, b), e = 0, f = fa(d); e < f; e++) if (d[e] instanceof r) return !0;
                        return !1
                    },
                    toJSON: function(a) {
                        var b, c, d = [];
                        for (b = 0; b < fa(this.AW); b++) c = this.AW[b], d.push(c ? c.toJSON(a) : z);
                        return 0 === fa(d) ? A : {
                            rules: d
                        }
                    },
                    fromJSON: function(a, b, c) {
                        var d, e, f;
                        if (a && a.rules) {
                            for (this.AW = [], d = 0; d < fa(a.rules); d++) e = a.rules[d], f = this.iga(e, b, c), f && this.AW.push(f);
                            this.QV()
                        }
                    },
                    iga: function(a, b, c) {
                        var d, e, f = z;
                        return a && (d = this.JW(), e = d[a.ruleType], e && (f = new e, f.fromJSON(a, b, c))), f
                    },
                    JW: function() {
                        if (!this.BW) {
                            var a = {};
                            a[0] = l, a[1] = m, a[2] = m, a[3] = m, a[4] = m, a[5] = m, a[6] = m, a[7] = m, a[8] = m, a[9] = o, a[10] = o, a[11] = o, a[12] = p, a[13] = r, this.BW = a
                        }
                        return this.BW
                    },
                    Eq: function(a, b, c, d) {
                        var e, f, g, h, i, j, k = this;
                        if (k && k.count() > 0 && (e = k.getRules(b, c), f = fa(e), h = z, f > 0)) for (e.sort(function(a, b) {
                            return a.priority() - b.priority()
                        }), i = 0; i < f && (g = e[i], !(g && (j = k.WS, g.isScaleRule() ? 10 !== g.ruleType() && 11 !== g.ruleType() || (h = g.evaluate(j, b, c, j.getValue(b, c, d)), h && (a || (a = new Y), a.backColor === A && (a.backColor = h))) : (h = g.evaluate(j, b, c, j.getValue(b, c, d)), h && (a || (a = new Y), a.Yo(h, !1, 1))), g.stopIfTrue() && h))); i++);
                        return a
                    },
                    Fq: function(a, b, c, d) {
                        var e, f, g, h, i, j, k = {
                                v5: !1
                            },
                            l = this;
                        if (l && l.count() > 0 && (e = l.getRules(a, b), f = fa(e), h = z, f > 0)) for (e.sort(function(a, b) {
                            return a.priority() - b.priority()
                        }), i = 0; i < f; i++) if (g = e[i]) {
                            if (j = l.WS, g.isScaleRule()) {
                                if ("backColor" === c && T(g, t.ScaleRule) && (h = g.evaluate(j, a, b, j.getValue(a, b, d)))) {
                                    k.Fi = h, k.v5 = !0;
                                    break
                                }
                            } else if (h = g.evaluate(j, a, b, j.getValue(a, b, d)), h && h[c] !== A) {
                                k.Fi = h[c], k.v5 = !0;
                                break
                            }
                            if (g.stopIfTrue() && h) break
                        }
                        return k
                    }
                };
                return x.extend(a.prototype, c), a
            }(), t.ConditionalFormats = s, a.exports = t
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {
                Exp_RuleIsNull: "The argument 'rule' is null",
                Exp_NotSupported: "NotSupportException"
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            c(125), c(130);
            var b = c(129);
            b.SR = {}, b.SR.en = c(131), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d = c(87),
                e = c(26),
                f = d.Go,
                g = c(126),
                h = c(34).GeneralFormatter,
                i = e.q,
                j = c(128),
                k = d.Vn,
                l = d.GC$,
                m = d.Events,
                n = d.Ul.Nl,
                o = d.Ul,
                p = o.nl,
                q = e.k.ac,
                r = null,
                s = e.j.Fa,
                t = parseFloat,
                u = l.inArray,
                v = "gc-sortASC",
                w = "gc-sortDES",
                x = "gc-filterOK",
                y = "gc-filterCancel",
                z = "gc-filterSearch",
                A = "gc-filterCheckAll",
                B = "gc-filterUnCheckAll",
                C = "gc-filter-item-container",
                D = "gc-filter-hover",
                E = "gc-filter-button",
                F = "gc-filter-item-link ",
                G = "gc-filter-sort",
                H = "ui-state-hover ",
                I = "gc-filter-button-hover " + H,
                J = "gc-filter-item-hover",
                K = H + J,
                L = D + " form-control well " + K,
                M = " ui-corner-all ",
                N = "ui-button-disabled",
                O = " ui-state-disabled",
                P = "gc-filter-button-disable",
                Q = "gc-sub-color-filter",
                R = "gc-sub-content-flter",
                S = "gc-sub-color-sort",
                T = "gc-no-user-select",
                U = " gc-filter-check",
                V = "gc-filter-check-outerDiv",
                W = "gc-filter-button-active",
                X = ".ui-filter-dialog",
                Y = "px",
                Z = "font-size",
                $ = "string",
                _ = "javascript:void(0)",
                aa = "mouseout",
                ba = "click",
                ca = "keydown",
                da = "keyup",
                ea = "search",
                fa = "input",
                ga = "span",
                ha = "div",
                ia = "button",
                ja = "DOMMouseScroll",
                ka = "mousewheel",
                la = "mousedown",
                ma = "mouseover",
                na = "mouseup",
                oa = "margin",
                pa = oa + "Left",
                qa = oa + "Top",
                ra = "padding",
                sa = ra + "Top",
                ta = "display",
                ua = "none",
                va = "width",
                wa = "height",
                xa = "border",
                ya = "left",
                za = "top",
                Aa = "box-sizing",
                Ba = "content-box",
                Ca = "block",
                Da = e.j.Ba,
                Ea = "gc-sortASC-tr",
                Fa = "gc-sortDEC-tr",
                Ga = "gc-sort-color-tr",
                Ha = "clear_filter",
                Ia = "gc-color-filter",
                Ja = "gc-major_filter",
                Ka = "gc-search-tr",
                La = "gc-filter-function-tr",
                Ma = void 0,
                Na = "automatic",
                Oa = "TextFilter",
                Pa = "NumberFilter",
                Qa = "DateFilter",
                Ra = "gc-filter-choose-area",
                Sa = "filter-button-tr",
                Ta = "gc-filter-dialog-style",
                Ua = "gc-sortColor",
                Va = "gc-filter-color",
                Wa = "gc-clearFilter",
                Xa = "gc-majorFilter",
                Ya = "gc-filterDialog-rightArrow",
                Za = "gc-filter-disable-item",
                $a = {
                    true: 1,
                    false: 2,
                    undefined: 2,
                    null: 3
                },
                _a = function() {
                    return e.C(j.SR)()
                },
                ab = function() {
                    function a(a, b, c, d, e, f, g, h) {
                        var i = this;
                        i.rowFilter = a, i.row = b, i.col = c, i.sheetArea = d, i.x = e, i.y = f, i.width = g, i.height = h
                    }
                    return a.prototype.ko = function() {
                        var a = this,
                            b = a.rowFilter,
                            c = a.col,
                            d = b.getSortState(c);
                        return b ? b.isFiltered(c) ? [3, 4, 5][d] : d : 0
                    }, a
                }();
            j.eY = ab;

            function bb(a, b) {
                l(a).addClass(b)
            }
            function cb(a, b) {
                return a = b.getColor(a), e.pc.bc(e.pc.ec(a))
            }
            function db(a, b) {
                l(a).removeClass(b)
            }
            function eb(a, b, c) {
                a.css([va, wa], [b + Y, c + Y])
            }
            function fb(a) {
                l(a).css([xa, oa, ra, "outline"], [0, 0, 0, ua])
            }
            function gb(a) {
                return a.concat([])
            }
            function hb(a) {
                return s(a) || "" === a || "number" == typeof value1 && isNaN(a) ? "blank" : Da(a)
            }
            function ib(a) {
                var b, c, d, e = "",
                    f = !1;
                for (b = 0, c = a.length; b < c; b++) d = a[b], '"' === d && (f = !f), "E" === d || f || (e += d.toLowerCase());
                return e
            }
            function jb(a, b, c, d) {
                var e, f, g, h, i, j;
                if (b && a) return e = a.format(c), i = [], e && (j = e.split("/"), f = j[0] || "", g = j[1] || "", h = j[2] || ""), i.push({
                    value: f,
                    level: 0,
                    status: d
                }), i.push({
                    value: g,
                    level: 1,
                    status: d
                }), i.push({
                    value: h,
                    level: 2,
                    status: d
                }), {
                    key: b,
                    value: c,
                    children: i,
                    status: d
                }
            }
            function kb(a, b, c, d, e, f) {
                if (b) {
                    var g = [];
                    return g.push({
                        value: b,
                        level: a.outlineColumn && a.outlineColumn.XQa(e) ? a.getCell(d, e).textIndent() : 0,
                        status: f
                    }), {
                        key: b,
                        value: c,
                        children: g,
                        status: f
                    }
                }
            }
            b = function(a) {
                l.inherit(b, a);

                function b(b, c, d, e) {
                    var f = this,
                        g = c.parent;
                    a.call(f, b, o.vl(g && g.qo)), f.fY = [], f.hY = [], f.gY = [], f.CWa = [], f.PZa = [], f.DWa = {
                        Number: 0,
                        Text: 0,
                        Date: 0
                    }, f.EWa = "", f.FWa = r, f.sheet = c, f.filterButtonInfo = d, f.lY = 237, f.mY = 410, f.L$a = 26, f.nY = 191, f.oY = 150, f.sY = 257, f.tY = 355, f.rEscape = /[\-\[\]{}()+.,\\\^$|#\s]/g, f.elementList = [], f.activeItemIndex = r, f.xo = f.yo(), f.GWa = f.HWa(), f.IWa = f.JWa(), f.M$a = e, f.N$a = f.O$a(), f.wY(), f.xY()
                }
                var c = {
                    O$a: function() {
                        var a = this,
                            b = [],
                            c = this.M$a,
                            d = a.mY,
                            e = a.L$a;
                        return c.sortByValue ? b = b.concat([1, 1]) : (b = b.concat([0, 0]), d -= 2 * e), c.sortByColor ? b = b.concat([1]) : (b = b.concat([0]), d -= e), c.filterByValue === !0 || c.filterByColor === !0 ? b = b.concat([1]) : (b = b.concat([0]), d -= e), c.filterByColor === !0 ? b = b.concat([1]) : (b = b.concat([0]), d -= e), c.filterByValue === !0 ? b = b.concat([1]) : (b = b.concat([0]), d -= e), c.listFilterArea === !0 ? b = b.concat([1, 1, 1]) : (b = b.concat([0, 0, 0]), d -= 254), a.mY = d, b
                    },
                    OT: function() {
                        var a, b = this,
                            c = b.sheet.parent,
                            d = b.filterButtonInfo,
                            e = b.xo;
                        b.yY = !! c && c.options.useTouchLayout, b.zY(d.col), b.itemList && b.itemList.length > 0 && b.AY(b.dataSource), b.KWa(), b.LWa(), 1 === l("#" + Ja).length && (b.MWa = b.NWa(l("#" + Ja)[0].children[2]), b.MWa.OWa(b.EWa).ad()), 1 === l("#" + Ia).length && (b.PWa = b.QWa(l("#" + Ia)[0].children[2], Q), b.PWa.ad()), 1 === l("#" + Ga).length && (b.RWa = b.QWa(l("#" + Ga)[0].children[2], S), b.RWa.ad()), e.hide(), b.Ao(function() {
                            b.elementList.length > 0 && l(b.elementList[0]).focus()
                        }), b.yY && b.BY(b.sY, b.tY), a = d.x + d.width - e.width() - 6, a < 5 && (a = 5), e.css([ya, za], [a, d.y + d.height]), b.Do(), b.QQ(), b.MY()
                    },
                    BY: function(a, b) {
                        var c, d, e, f, g, h, i, j, k, m, n, o, p, q, r = this,
                            s = a - r.lY,
                            u = b - r.mY;
                        s > 0 && u > 0 && (eb(r.xo, a, b), c = l("." + G), d = t(c.css(sa)) + u / 30, e = l("." + E), f = t(e.css(va)) + s / 4, g = t(e.css(wa)) + u / 8, h = l("#" + x), i = t(h.css(pa)) + s / 2, j = l("#" + z), k = t(j.css(va)) + s, m = t(j.css(wa)) + u / 8, n = l("." + V), o = t(n.css(qa)) + u / 10, p = l("#" + B), q = t(p.css(pa)) + s, c.css(ra, d + Y + " 6px"), eb(e, f, g), h.css(pa, i + Y), eb(j, k, m), n.css(qa, o + Y), p.css(pa, q + Y))
                    },
                    close: function() {
                        var b = this,
                            c = b.sheet;
                        a.prototype.close.call(b), l(b.CY).remove(), l(b.DY).remove(), c.GZ = null, c && c.zt()
                    },
                    P$a: function() {
                        1 === l("#" + Ea).length && this.Q$a(), 1 === l("#" + Ga).length && this.R$a()
                    },
                    Q$a: function() {
                        var a = this,
                            c = a.elementList,
                            d = a.EY(v, _a().SortAscending),
                            e = a.EY(w, _a().SortDescending),
                            f = l("#" + Ea)[0],
                            g = l("#" + Fa)[0];
                        l(f.children[0]).append(l(n("img")).attr("src", b.zW(6))), l(g.children[0]).append(l(n("img")).attr("src", b.zW(7))), l(f.children[1]).append(d), l(g.children[1]).append(e), c.push(f), c.push(g)
                    },
                    R$a: function() {
                        var a = this,
                            c = a.elementList,
                            d = a.EY(Ua, _a().SortColor),
                            e = l("#" + Ga)[0],
                            f = a.SWa(),
                            g = this.TWa(f),
                            h = l(n("img")).attr("src", b.zW(10));
                        h.css([pa], ["7px"]).addClass(Ya), l(e.children[0]).append(g), l(e.children[1]).append(d), l(e.children[2]).append(h), c.push(e)
                    },
                    S$a: function(a) {
                        var c, d = this,
                            e = d.elementList,
                            f = d.EY(Va, _a().FilterColor),
                            g = l("#" + Ia)[0],
                            h = l(n("img")).attr("src", b.zW(10));
                        h.css([pa], ["7px"]).addClass(Ya), c = this.TWa(a.isShowColorFilterSelect), l(g.children[0]).append(c), l(g.children[1]).append(f), l(g.children[2]).append(h), e.push(g)
                    },
                    T$a: function(a) {
                        var c, d, e = this,
                            f = e.sheet,
                            g = e.filterButtonInfo.col,
                            h = e.TWa(a.isShowMajorCheck),
                            i = l("#" + Ja)[0],
                            j = f.outlineColumn && f.outlineColumn.XQa(g);
                        j && l(i).addClass(Za + O), l(i.children[0]).append(h), c = e.EY(Xa, ""), c.appendTo(i.children[1]), d = l(n("img")).attr("src", b.zW(10)), d.css([pa], ["7px"]).addClass(Ya), l(i.children[2]).append(d), e.elementList.push(i)
                    },
                    U$a: function() {
                        var a, b, c, d, e = 1 === l("#" + Ia).length,
                            f = 1 === l("#" + Ja).length;
                        (e || f) && (a = this, b = a.elementList, c = l("#" + Ha)[0], a.UWa(c), b.push(c), d = a.VWa(), e && a.S$a(d), f && a.T$a(d))
                    },
                    V$a: function() {
                        var a = this;
                        a.M$a.listFilterArea && (a.W$a(), a.X$a(), a.Y$a())
                    },
                    Y$a: function() {
                        var a = E + " gc-filter-button-default ui-button ui-state-default" + M + "btn btn-default",
                            b = l("#" + Sa)[0],
                            c = n(ia),
                            d = n(ia),
                            e = l(c).text(_a().OK).css(Z, "1em").attr("id", x),
                            f = l(d).text(_a().Cancel).css(Z, "1em").attr("id", y);
                        bb(c, a), bb(d, a), l(b.children[1]).append(e).append(f), this.elementList.push(c), this.elementList.push(d)
                    },
                    X$a: function() {
                        var a, c = this,
                            d = c.VWa(),
                            e = l("#" + Ra)[0],
                            f = l(n("img")).attr("src", b.zW(11));
                        f.css(["verticalAlign", "margin-top"], ["top", "4px"]), d.isShowSelectCheck || f.css([ta], [ua]), a = c.itemList = l(n(ha)).css([va, wa, Aa], [c.nY, c.oY, Ba]), bb(a[0], C), l(e.children[0]).append(f).css([ta], ["inline-block"]), l(e.children[1]).append(a)
                    },
                    W$a: function() {
                        var a, b, c, d = this,
                            e = l(n(ha)).css([oa, ra], [0, 0]),
                            f = l(n(ha)).appendTo(e),
                            g = l("#" + Ka)[0],
                            h = l(n(fa)).attr({
                                type: ea,
                                placeholder: _a().Search,
                                id: z
                            }).appendTo(f);
                        bb(e[0], "gc-search-outer-div ui-widget-header" + M + "ui-multiselect-header ui-helper-clearfix"), d.elementList.push(h[0]), a = l(n(ha)).appendTo(e), b = d.FY(A, _a().CheckAll, "gc-check-image ui-icon ui-icon-check"), c = d.FY(B, _a().UncheckAll, "gc-uncheck-image ui-icon ui-icon-closethick"), bb(a[0], V), a.append(b).append(c), l(g.children[1]).append(e)
                    },
                    xY: function() {
                        var a = this;
                        a.P$a(), a.U$a(), a.V$a()
                    },
                    NWa: function(a) {
                        var b = this,
                            c = r;
                        switch (this.EWa) {
                            case Pa:
                                c = new g.WWa(a, b.xo, b.filterButtonInfo, b.sheet, b, R);
                                break;
                            case Oa:
                                c = new g.XWa(a, b.xo, b.filterButtonInfo, b.sheet, b, R);
                                break;
                            case Qa:
                                c = new g.YWa(a, b.xo, b.filterButtonInfo, b.sheet, b, R)
                        }
                        return c
                    },
                    QWa: function(a, b) {
                        var c = this,
                            d = r;
                        return b === Q ? d = new g.ZWa(a, c.xo, c.filterButtonInfo, c.sheet, c, Q) : b === S && (d = new g.ZWa(a, c.xo, c.filterButtonInfo, c.sheet, c, S)), d
                    },
                    SWa: function() {
                        var a = this,
                            b = a.filterButtonInfo,
                            c = b.rowFilter,
                            d = !1,
                            e = c.zZ;
                        return e !== r && e.color !== Ma && b.col === e.index && (d = !0), d
                    },
                    TWa: function(a) {
                        var c = l(n("div")),
                            d = l(n("img")).attr("src", b.zW(11));
                        return a || d.css([ta], [ua]), c.append(d), c
                    },
                    HWa: function() {
                        var a = this,
                            b = a.filterButtonInfo,
                            c = b.rowFilter,
                            d = b.col,
                            e = a.sheet.getText(a.filterButtonInfo.row, d, b.sheetArea);
                        return c && c.range.row <= 0 ? e = a.sheet.getText(b.row, d, b.sheetArea) : e || (e = a.sheet.getText(0, d, 1)), "" === e && 1 === a.sheet.options.colHeaderAutoText ? e = "(Column " + (d + 1) + ")" : "" === e && (e = "(Column " + a.sheet.xq(d + 1) + ")"), e = '"' + e
                    },
                    UWa: function(a) {
                        var c = this,
                            d;
                        c.IWa ? (d = b.zW(12), l(a).addClass("gc-filter-item")) : (d = b.zW(13), l(a).addClass(Za + O)), l(a.children[0]).append(l(n("img")).attr("src", d).css([va], ["18px"])), c.f$a(Wa, c.GWa, l(a.children[1]))
                    },
                    $Za: function(a) {
                        var b = a.conType();
                        return 0 === b && 0 === a.item1().compareType() && 0 === a.item2().compareType() && 5 === a.item1().conType() && 5 === a.item2().conType()
                    },
                    VWa: function() {
                        var a, b, c, d = this,
                            e = !1,
                            f = !1,
                            g = !1,
                            h = d.filterButtonInfo,
                            i = h.col,
                            j = h.rowFilter,
                            k = j.rZ[i];
                        return k && k.length > 0 && (k = k[0], a = k.conType(), b = k.compareType(), 0 === b && 3 !== a && d.M$a.listFilterArea ? g = !0 : 0 !== b || 3 === a || d.M$a.listFilterArea ? 0 !== b && 3 !== a ? e = !0 : 3 === a && (f = !0) : e = !0, c = this.$Za(k), (5 === a && 0 === b || c) && (g = !1, e = !0)), {
                            isShowColorFilterSelect: f,
                            isShowMajorCheck: e,
                            isShowSelectCheck: g
                        }
                    },
                    JWa: function() {
                        var a = this,
                            b = !1,
                            c = a.filterButtonInfo,
                            d = c.col,
                            e = c.rowFilter,
                            f = e.rZ[d];
                        return f && f.length > 0 && (b = !0), b
                    },
                    $Wa: function() {
                        var a = Math.max(this.DWa.Date, this.DWa.Number, this.DWa.Text);
                        return a === this.DWa.Text ? Oa : a === this.DWa.Number ? Pa : a === this.DWa.Date ? Qa : void 0
                    },
                    KWa: function() {
                        var a, b, c = this.$Wa();
                        this.EWa = c, a = _a()[c], b = l("#" + Xa), b.text(a)
                    },
                    WW: function() {
                        var a, b, c = this,
                            d = c.filterButtonInfo,
                            e = this.sheet,
                            f = d.col,
                            g = d.rowFilter;
                        g && (a = g.sj ? g.sj.name() : Ma, b = {
                            tableName: a,
                            colIndex: f
                        }, e.wu().execute({
                            cmd: "clearFilter",
                            sheetName: e.name(),
                            cmdOption: b
                        }), c.close())
                    },
                    LWa: function() {
                        var a, b = !1,
                            c = this._Wa,
                            d = this.aXa,
                            e = c.colorNumber,
                            f = d.colorNumber;
                        c.automatic && e++, d.automatic && f++, (e !== Ma && e > 1 || f !== Ma && f > 1) && (b = !0), a = this.VWa(), b || (!a.isShowColorFilterSelect && this.bXa(Ia), !this.SWa() && this.bXa(Ga))
                    },
                    bXa: function(a) {
                        var c = l("#" + a).addClass(Za + O);
                        c.find("." + Ya).attr("src", b.zW(14))
                    },
                    wY: function() {
                        var a, b, c, d, e, f, g, h = this,
                            i = h.xo,
                            j = " gc-sort-container ui-menu-item",
                            k = h.table = l(n("table")).css([ra, ta], [0, "table"]).attr({
                                cellspacing: 0,
                                cellpadding: 0
                            });
                        for (bb(k[0], "gc-layout-table"), c = [Ea, Fa, Ga, Ha, Ia, Ja, Ka], d = h.N$a, a = 0; a < 9; a++) if (1 === d[a]) for (e = n("tr"), f = l(e).appendTo(k), a < 6 && (l(e).attr("id", c[a]).css([ta, wa, Z], ["table-row", "26px", "9pt"]), l(e).addClass(La)), 6 === a && l(e).attr("id", c[a]), 7 === a && l(e).attr("tabindex", 0).attr("id", Ra), 8 === a && l(e).attr("id", Sa), fb(e), b = 0; b < 3; b++) g = n("td"), l(g).appendTo(f), fb(g), 0 === b ? bb(g, "gc-layout-table-first-column") : 2 === b ? bb(g, "gc-layout-table-last-column") : 1 === b && (0 === a ? bb(g, "gc-filter-sort-asc-container" + j + "gc-layout-table-middle-column") : 1 === a && bb(g, "gc-filter-sort-desc-container" + j + "gc-layout-table-middle-column"));
                        h.table.appendTo(i), i.css(["box-shadow", va, wa, Aa], ["rgba(0, 0, 0, 0.15) 2px 4px 5px", h.lY + Y, h.mY + Y, Ba]), bb(i[0], Ta + " " + T), i.appendTo(h.zo())
                    },
                    QQ: function() {
                        var a = this,
                            b = !1,
                            c = !1,
                            e = l("." + E);
                        l("#" + v).bind(na, function(c) {
                            b && (b = !1, a.JY(!0), a.close(), p(c))
                        }).bind(la, function(a) {
                            p(a), b = !0
                        }), l("#" + w).bind(na, function(b) {
                            c && (c = !1, a.JY(!1), a.close(), p(b))
                        }).bind(la, function(a) {
                            p(a), c = !0
                        }), l("." + La).bind(ma, function() {
                            a.MWa && l(this).attr("id") !== Ja && a.MWa.cXa() && (a.MWa.hT(), a.FWa = r, db(l("#" + Ja)[0], L)), a.PWa && l(this).attr("id") !== Ia && a.PWa.cXa() && (a.PWa.hT(), a.FWa = r, db(l("#" + Ia)[0], L)), a.RWa && l(this).attr("id") !== Ga && a.RWa.cXa() && (a.RWa.hT(), a.FWa = r, db(l("#" + Ga)[0], L)), !l(this).hasClass(O.trim()) && l(this).index() < 6 && bb(this, L)
                        }).bind(aa, function() {
                            a.MWa && l(this).attr("id") === Ja && a.MWa.cXa() || a.PWa && l(this).attr("id") === Ia && a.PWa.cXa() || a.RWa && l(this).attr("id") === Ga && a.RWa.cXa() || db(this, L)
                        }), l("#" + Ha).bind(ba, function() {
                            a.IWa && a.WW()
                        }), l("#" + Ja).bind(ma, function() {
                            l(this).hasClass(Za) || (a.FWa = a.MWa, a.FWa.Ao())
                        }), l("#" + Ia).bind(ma, function() {
                            l(this).hasClass(Za) || (a.FWa = a.PWa, a.FWa.Ao())
                        }), l("#" + Ga).bind(ma, function() {
                            l(this).hasClass(Za) || (a.FWa = a.RWa, a.FWa.Ao())
                        }), l("#" + A).bind(la, function(a) {
                            p(a)
                        }).bind(na, function(b) {
                            a.KY(b, !0)
                        }), l("#" + B).bind(la, function(a) {
                            p(a)
                        }).bind(na, function(b) {
                            a.KY(b, !1)
                        }), l("#" + z).bind(ca, function(a) {
                            13 === (a.which || a.keyCode) && a.preventDefault()
                        }).bind(da, function(b) {
                            u(b.keyCode, [9, 37, 38, 39, 40]) < 0 && (a.NY(b), a.MY())
                        }).bind(ea, function(b) {
                            a.NY(b), a.MY()
                        }), e.bind(ma, function() {
                            bb(this, I)
                        }).bind(aa, function() {
                            db(this, I)
                        }), e.bind(la, function() {
                            db(this, I), bb(this, W)
                        }).bind(aa, function() {
                            db(this, W)
                        }), l("#" + x).bind(ba, function() {
                            a.dXa();
                            var b = a.hY;
                            a.sheet.suspendPaint(), a.PY(b), a.sheet.resumePaint(), a.close()
                        }), l("#" + y).bind(ba, function() {
                            a.close()
                        }), a.xo.bind(ka, function(a) {
                            p(a)
                        }).bind(ja, function(a) {
                            p(a)
                        }).bind(ca + X, function(b) {
                            a.QY(b)
                        }).bind(da + X, function(a) {
                            p(a)
                        }), a.itemList && a.itemList.length > 0 && (a.eXa.bind(d.Events.TopRowChanged, function(b, c) {
                            a.fXa(c)
                        }), a.eXa.bind(d.Events.CellClick, function(b, c) {
                            a.gXa(c)
                        }))
                    },
                    fXa: function(a) {
                        var b, c, d, e, f, g, h, i, j;
                        a.oldTopRow > a.newTopRow || (b = this, c = a.sheet, d = c.parent, e = a.newTopRow, f = c.jt(1).length, g = b.itemList.width(), h = b.iXa, i = c.getColumnWidth(h), d.options.showVerticalScrollbar && (g -= 22), j = Math.max(c.getColumnCount() * i, g), b.GZa(c, j, i, e, f))
                    },
                    GZa: function(a, b, c, d, e, f) {
                        var g, h, i, j, l = 0,
                            m = 0,
                            n = this,
                            o = a.parent,
                            p = n.iXa,
                            q = d + e,
                            r = a.outlineColumn.QZa(),
                            s = Math.min(q, a.getRowCount());
                        for (g = d; g < s; g++) h = f && f[g].name || a.getText(g, p), i = r[g].cellContent.left, j = k.Xn(h), m = j + i - b, m > 0 && m > l && (l = m);
                        l > 0 && (a.addColumns(a.getColumnCount(), Math.ceil(l / c)), o.options.showHorizontalScrollbar = !0)
                    },
                    gXa: function(a) {
                        var b, c, e, f, g, h, i, j, k, m = this,
                            o = a.sheet,
                            p = a.row,
                            r = a.sheetArea,
                            s = m.iXa;
                        m.activeItemIndex = p, o.suspendPaint(), !a.ignoreClick && o.yt && (b = o.yt.cellTypeHitInfo, c = b && b.outlineColumnHitInfo, e = c && c.indicator, e || (o.outlineColumn.getCheckStatus(p, s) === m.dataSource[p].status && (f = o.outlineColumn, f.setCheckStatus(p, m.FZa(m.dataSource[p].status))), m.CZa())), o.CH && o.e_a("transparent"), g = l("." + J, this.xo[0]), q(g) ? db(g, K) : m.jXa(o), h = o.getStyle(p, s, r) || new d.Style, i = l(n(ha)), bb(i, L), this.xo.append(i), j = i.css("backgroundColor"), k = i.css("color"), i.remove(), h.backColor = j, h.foreColor = k, o.setStyle(p, -1, h), o.resumePaint(), m.dXa(), m.MY()
                    },
                    CZa: function() {
                        for (var a = this, b = a.eXa, c = b.outlineColumn, d = c.getCheckStatus(), e = 0; e < d.length;) a.dataSource[e].status = d[e++]
                    },
                    FZa: function(a) {
                        return 1 === a ? 2 : 1
                    },
                    jXa: function(a) {
                        var b, c, d = a.getRowCount(),
                            e = this.iXa;
                        for (b = 0; b < d; b++) if (c = a.getActualStyle(b, e), c.backColor || c.foreColor) {
                            c.foreColor = c.backColor = void 0, a.setStyle(b, -1, c);
                            break
                        }
                    },
                    dXa: function() {
                        var a, b, c, d, e, f, g, h = this,
                            i = h.eXa.outlineColumn.getCheckStatus(),
                            j = 0,
                            k = h.gY || h.hY,
                            l = h.CWa,
                            m = 0;
                        for (h.hY = [], b = 0; b < l.length && (a = l[b], !(m >= k.length)); b++) if (a.key === k[m++]) {
                            for (c = a.children, d = Ma, e = 0; e < c.length; e++) f = c[e], g = i[j], f.show !== !1 && (j += 1), d = g || d, 3 !== g && (f.status = g);
                            2 !== d && h.hY.push(a.key)
                        } else m--
                    },
                    KY: function(a, b) {
                        var c, d = this,
                            e = d.eXa,
                            f = e.getRowCount(),
                            g = $a[b];
                        for (e.suspendPaint(), c = 0; c < f; c++) e.outlineColumn.setCheckStatus(c, g), d.dataSource[c].status = g;
                        e.resumePaint(), d.hY = b ? gb(d.gY) : [], d.MY(), p(a)
                    },
                    kXa: function(a) {
                        switch (a) {
                            case Ja:
                                this.FWa = this.MWa;
                                break;
                            case Ia:
                                this.FWa = this.PWa;
                                break;
                            case Ga:
                                this.FWa = this.RWa
                        }
                    },
                    lXa: function(a) {
                        var b = this;
                        b.FWa = a, b.FWa.Ao(), b.FWa.mXa()
                    },
                    nXa: function(a) {
                        var b, c, d, e = q(a);
                        0 !== e && (b = this, c = a.attr("id"), d = c === Ea, 1 === e ? d || c === Fa ? (b.JY(d), b.close()) : c === y ? b.close() : c === Ja ? b.FWa !== r ? b.FWa.oXa() : b.lXa(b.MWa) : c === Ia ? b.lXa(b.PWa) : c === Ga ? b.lXa(b.RWa) : c === Ha ? b.WW() : l("#" + x).trigger(ba) : 2 === q(a) || 3 === q(a) ? b.FWa && b.FWa.oXa() : l("#" + x).trigger(ba))
                    },
                    pXa: function() {
                        var a, b, c, d, e = this,
                            f = e.CWa,
                            g = e.gY,
                            h = 0,
                            i = [];
                        for (a = 0; a < f.length; a++) if (f[a].key === g[h++]) for (b = f[a].children, c = 0; c < b.length; c++) d = b[c], d.show !== !1 && i.push(d.value || f[a].key);
                        else h--;
                        return i
                    },
                    qXa: function(a, b, c) {
                        var d, e, f = this,
                            g = f.elementList;
                        return !q(b) && s(f.activeItemIndex) ? d = g[0] : (q(b) ? db(b, K) : f.jXa(f.eXa), e = f.pXa(), d = 4 === a ? f.rXa(e, b, c) : f.sXa(e, b, a)), d
                    },
                    sXa: function(a, b, c) {
                        var d, e, f, g, h = this,
                            i = h.elementList,
                            j = b[0],
                            k = i.length - 2,
                            l = gb(i),
                            m = h.activeItemIndex || 0,
                            n = 0;
                        for (e = 0; e < q(a); e++) l.splice(-2, 0, a[e]);
                        if (f = j ? u(j, l) : k + m, g = 3 === c, f >= 0) {
                            for (d = g ? l[f + 1] : l[f - 1], m = m || 0, n = g ? f + 1 : f - 1, u(d, a) >= 0 && q(b) > 0 && (f = g ? f + m : m + (i.length - 2), d = g ? l[f + 1] : l[f], n = g ? f + 1 : f); g && f < q(l) && h.RY(d);) n = f + 1, d = l[++f + 1];
                            if (!g) {
                                for (; f > 0 && h.RY(d);) n = f - 1, d = l[--f - 1];
                                d || (d = l[q(l) - 1])
                            }
                            d || (d = l[0])
                        }
                        return typeof d === $ ? n - k : d
                    },
                    rXa: function(a, b, c) {
                        var d, e, f = this,
                            g = f.elementList,
                            h = b[0],
                            i = gb(g),
                            j = f.activeItemIndex || 0;
                        if (i.splice(-2, 0, a[j]), q(b)) {
                            if (e = u(h, i), e >= 0) {
                                for (d = c ? i[e - 1] || i[q(i) - 1] : i[e + 1]; c && e > 0 && f.RY(d);) d = i[--e - 1];
                                for (; !c && f.RY(d) && e < q(i);) d = i[++e + 1]
                            }
                        } else d = c ? g[g.length - 3] : f.RY(g[g.length - 2]) ? g[g.length - 1] : g[g.length - 2];
                        return d || (d = i[0]), typeof d === $ ? j : d
                    },
                    QY: function(a) {
                        var b, c, d, e = this,
                            f = l("." + J, e.xo[0]),
                            g = a.which || a.keyCode,
                            h = u(g, [27, 13, 38, 40, 9, 37, 39]);
                        f.length > 0 && (b = f.attr("id")), 0 === h ? (e.close(), p(a)) : 1 === h ? this.nXa(f) : h > 4 ? (5 === h ? (e.FWa === r && e.kXa(b), e.FWa !== r && (e.FWa = e.FWa.tXa())) : 6 === h && (e.FWa === r && e.kXa(b), e.FWa === r || e.FWa.G$a || e.FWa.uXa()), p(a)) : h > 1 && e.FWa !== r && e.FWa.cXa() ? (2 === h || 4 === h && a.shiftKey ? e.FWa.vXa() : (3 === h || 4 === h && !a.shiftKey) && e.FWa.wXa(), p(a)) : h > 1 && (c = e.qXa(h, f, a.shiftKey), "number" == typeof c ? (f = c, e.gXa({
                            sheet: e.eXa,
                            row: f,
                            sheetArea: 3,
                            ignoreClick: !0
                        }), e.eXa.Yq(f, e.iXa), l("#" + Ra).focus(), p(a)) : (f = l(c), d = f.attr("id"), d !== z && d !== x && d !== y ? f.find("a").focus() : f.focus(), bb(f, D + " " + K), p(a)))
                    },
                    RY: function(a) {
                        return typeof a !== $ && (a = l(a), 0 !== q(a) && !! (a.hasClass(N) || a.hasClass(O) || a.hasClass(P)))
                    },
                    PY: function(a) {
                        var b, c, d, e, f, g = this,
                            h = g.sheet;
                        if (h) try {
                            if (h.suspendPaint(), b = g.filterButtonInfo, c = b.rowFilter, !c) return;
                            d = b.col, e = c.sj ? c.sj.name() : Ma, f = {
                                tableName: e,
                                colIndex: d,
                                checkedValues: a,
                                allValuesLength: q(g.fY)
                            }, h.wu().execute({
                                cmd: "filterTextSelectAction",
                                sheetName: h.name(),
                                cmdOption: f
                            })
                        } finally {
                            h.resumePaint()
                        }
                    },
                    NY: function() {
                        var a, b, c, d, e, f, g, h, j, k, m, n = this,
                            o = l.trim(l("#" + z).val().toLowerCase()),
                            p = n.CWa,
                            r = n.PZa,
                            s = {},
                            t = [];
                        if (o) {
                            for (b = i.ub(o), c = [], b || (d = RegExp(o.replace(n.rEscape, "\\$&"), "gi")), a = 0; a < p.length; a++) for (e = p[a], f = e.children, g = 0; g < f.length; g++) if (h = f[g], j = e.key, k = h.value || j, m = b && i.sb(b).exec(k), m && 0 === m.index || !b && k.search(d) !== -1) {
                                c.push(j), t.push(e.value), s[j] = !0;
                                break
                            }
                            n.gY = gb(c), n.hY = gb(c), n.HY(s, t)
                        } else if (q(r)) {
                            for (a = 0; a < r.length; a++) 1 !== r[a].status && (r[a].status = 1);
                            n.gY = gb(n.fY), n.hY = gb(n.fY), n.AXa(r), n.dataSource = r
                        } else n.PZa = gb(n.dataSource)
                    },
                    EY: function(a, b) {
                        var c = l(n("a"));
                        return c.attr({
                            id: a,
                            href: _
                        }).text(b).css([ta, ra, "cursor", oa, "text-decoration", "text-align", Z, "outline", wa], [Ca, "0 6px", "default", "0px 0 1px 2px", ua, ya, "12px", ua, "inherit"]), bb(c[0], F + G + M), c
                    },
                    f$a: function(a, b, c) {
                        var d, e, f, g = _a().Clear,
                            h = l(n("a")).html(g.replace("{0}", '"'));
                        h.attr({
                            id: a,
                            href: _
                        }).css([ta, ra, "cursor", oa, "text-decoration", "text-align", Z, "outline", wa, "white-space"], ["inline", "0 6px", "default", "0px 0 1px 2px", ua, ya, "12px", ua, "inherit", "nowrap"]), c.append(h), d = c.width() - h[0].offsetWidth, f = '<span class="filterName">' + b + '</span><span style="vertical-align: top">"</span>', e = g.replace("{0}", f), h.html(e), l(".filterName", h[0]).css(["max-width", "overflow", "text-overflow", ta, "vertical-align"], [d + "px", "hidden", "ellipsis", "inline-block", "text-bottom"]), bb(h[0], F + G + M)
                    },
                    FY: function(a, b, c) {
                        var d = n(ga),
                            e = l(n(ga)).text(b),
                            f = n("a"),
                            g = l(f);
                        return bb(d, "gc-check-uncheck-all " + c), g.attr({
                            href: _,
                            id: a
                        }).css(["float", pa, ra, Z, wa], [ya, "7px", "0", "12px", "16px"]).append(l(d)).append(e), bb(f, U + U + "-style"), g
                    },
                    xXa: function(a) {
                        var b = hb(a);
                        return "date" === b ? void this.DWa.Date++ : "number" === b || "boolean" === b ? void this.DWa.Number++ : "string" === b ? void this.DWa.Text++ : void 0
                    },
                    yXa: function() {
                        var a = this.DWa.Date,
                            b = this.DWa.Number,
                            c = this.DWa.Text,
                            d = a + b + c;
                        return d > a && d > b && d > c ? "mix" : d === a ? "type" : d === b ? "number" : d === c ? "text" : void 0
                    },
                    RZa: function(a) {
                        var b, c = !0,
                            d = a.rZ[this.filterButtonInfo.col];
                        return d && d.length > 0 && (d = d[0], b = this.$Za(d), (0 !== d.compareType() || b || 0 === d.compareType() && 5 === d.conType()) && (c = !1)), c
                    },
                    T0: function(a, b) {
                        var c = new h(a);
                        return c.parse(b + "")
                    },
                    H$a: function(a, b, c, d, e) {
                        a !== r && a.backColor ? (c.data[cb(a.backColor, d)] === Ma && c.colorNumber++, c.data[cb(a.backColor, d)] = e) : c[Na] = Na, a !== r && a.foreColor ? (b.data[cb(a.foreColor, d)] === Ma && b.colorNumber++, b.data[cb(a.foreColor, d)] = e) : b[Na] = Na
                    },
                    zY: function(a) {
                        var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t = this,
                            u = t.filterButtonInfo.rowFilter;
                        if (u) {
                            if (b = t.sheet, c = [], d = [], f = {}, g = b.Tq(u.range), h = g.col, i = {
                                    data: {},
                                    colorNumber: 0
                                }, j = {
                                    data: {},
                                    colorNumber: 0
                                }, l = {}, m = b.currentTheme(), n = b.outlineColumn && b.outlineColumn.XQa(a), t.hasBlank = !1, a >= h && a < h + g.colCount) for (e = 0; e < g.rowCount; e++) o = g.row + e, k = b.getActualStyle(o, a, 3, !1, !1, !0), p = b.getRowHeight(o) > 0, q = p || !u.isFiltered() || u.ima(o, a), q && this.H$a(k, j, i, m, o), t.c$a(f, l, c, d, o, a);
                            t.hY = d, t._Wa = i, t.aXa = j, r = {
                                date: 0,
                                number: 1,
                                string: 2,
                                boolean: 3,
                                blank: 4
                            }, n || c.sort(function(a, b) {
                                var c, d, e = a.value,
                                    f = b.value,
                                    g = hb(e),
                                    h = hb(f);
                                if (g !== h) return r[g] < r[h] ? -1 : 1;
                                if ("date" === g && "date" === h) {
                                    if (c = e.getFullYear(), d = f.getFullYear(), c < d) return 1;
                                    if (c > d) return -1
                                }
                                return e > f ? 1 : e < f ? -1 : 0
                            }), s = [], t._$a = c, c.forEach(function(a) {
                                s.push(a.value), t.fY.push(a.text)
                            }), t.gY = gb(t.fY), t.CWa = t.zXa(a, l, t.fY, s), t.PZa = t.dataSource
                        }
                    },
                    c$a: function(a, b, c, d, e, f) {
                        var g, h, i, j, k, l, m = this,
                            n = m.sheet,
                            o = m.filterButtonInfo.rowFilter,
                            p = n.getText(e, f),
                            q = n.getValue(e, f);
                        p = p ? p.trim() : p, g = _a().Blanks, h = n.getRowHeight(e) > 0, i = m.RZa(o), j = n.outlineColumn && n.outlineColumn.XQa(f), k = n.getFormatter(e, f), k && (q = m.T0(k, q)), m.xXa(q), 1 === m.DWa.Date && (m.SZa = m.AZa(k)), l = i && (h || !o.isFiltered(f) || j && n.getRowVisible(e, 3, !0) && !o.WY(e, f)), "" !== p || !h && o.isFiltered() && !o.ima(e, f) ? a[p] || n.getRowVisible(e, 3, !0) && n.Yr(e) && (l && (d.push(p), b[p] = !0), (h || !o.isFiltered() || o.ima(e, f)) && (c.push({
                            text: p,
                            value: q
                        }), a[p] = !0)) : m.hasBlank || (m.hasBlank = !0, c.push({
                            text: g,
                            value: q
                        }), l && (d.push(g), b[g] = !0))
                    },
                    zXa: function(a, b, c, d) {
                        var e, f, g, h, i, j, k, l, m, n, o, p = this,
                            q = [],
                            r = [],
                            s = !1,
                            t = p.sheet,
                            u = t.Tq(p.filterButtonInfo.rowFilter.range),
                            v = t.outlineColumn;
                        if (v && v.XQa(a)) for (k = 0; k < c.length; k++) s = $a[ !! b[c[k]]], l = kb(t, c[k], d[k], u.row + k, a, s), q.push(l), n = l.children[0], n && n.show !== !1 && r.push({
                            name: n.value || l.key,
                            level: n.level,
                            status: n.status
                        });
                        else for (k = 0; k < c.length; k++) switch (f = d[k], e = hb(f || c[k])) {
                            case "date":
                                for (s = $a[ !! b[c[k]]], l = jb(p.SZa, c[k], d[k], s), m = l.children, g = m[0].value, h = m[1].value || m[0].value, m[0].show = m[1].show = !0, g === i && (m[0].show = !1, h === j && (m[1].show = !1)), i = g, j = h, q.push(l), n = l.children, o = 0; o < 3; o++) n[o] && n[o].show !== !1 && r.push({
                                    name: n[o].value || l.key,
                                    level: n[o].level,
                                    status: n[o].status
                                });
                                break;
                            case "number":
                            case "string":
                            case "boolean":
                            case "object":
                                s = $a[ !! b[c[k]]], l = kb(t, c[k], d[k], u.row + k, a, s), q.push(l), n = l.children[0], n && n.show !== !1 && r.push({
                                    name: n.value || l.key,
                                    level: n.level,
                                    status: n.status
                                });
                                break;
                            default:
                                return
                        }
                        return p.dataSource = r, q
                    },
                    AZa: function(a) {
                        var b, c, d, f, g, i, j, k, l;
                        if (s(a) && (a = ""), b = new h(a), c = b.formatters, c && !(c.length <= 0) && (d = c[0])) return f = d.localeIDFormatPart, g = d.dbNumberFormatPart, i = f && f.Wc, j = e.CultureManager.EZa(i, ib(a)), k = f && f.Kc || "", l = g && g.Kc || "", new h(l + k + j)
                    },
                    AY: function(a) {
                        var b = this,
                            c = 0,
                            e = b.itemList,
                            f = new d.Workbook(e[0]);
                        b.hXa = f, b.eXa = f.getActiveSheet(), b.iXa = c, b.AXa(a), b.CZa()
                    },
                    AXa: function(a) {
                        var b, c, e, f, g, h, i = this,
                            j = i.hXa,
                            k = i.itemList,
                            l = k.width(),
                            m = k.height(),
                            n = 20,
                            o = 10;
                        i.hXa.sheets.length > 0 && (i.hXa.removeSheet(0), i.eXa = Ma), j.addSheet(0, new d.Worksheet("sheet1")), b = i.eXa = j.sheets[0], j.suspendEvent(), b.suspendPaint(), c = j.options, e = b.options, c.allowContextMenu = !1, c.showHorizontalScrollbar = !1, c.showVerticalScrollbar = !1, c.scrollbarMaxAlign = !0, c.tabStripVisible = !1, c.allowUserResize = !1, c.allowUserDragDrop = !1, c.allowUserDragFill = !1, c.allowUserZoom = !1, c.grayAreaBackColor = "white", e.colHeaderVisible = !1, e.rowHeaderVisible = !1, e.selectionBackColor = "transparent", e.selectionBorderColor = "transparent", e.gridline = {
                            showVerticalGridline: !1,
                            showHorizontalGridline: !1
                        }, e.isProtected = !0, b.defaults.rowHeight = n, b.defaults.colWidth = o, b.setRowCount(a.length), f = new d.Style, f.font = '12px "Segoe UI", Calibri, Thonburi, Arial, Verdana, sans-serif, "Mongolian Baiti", "Microsoft Yi Baiti", "Javanese Text"', b.setDefaultStyle(f), b.outlineColumn.options({
                            columnIndex: i.iXa,
                            showIndicator: !0,
                            showCheckBox: !0
                        }), b.showRowOutline(!1), b.setColumnCount(1), i.BXa(b, a), n * a.length > m && (j.options.showVerticalScrollbar = !0, l -= 22), g = b.jt(1).length, i.GZa(b, l, o, 0, g, a), !j.options.showVerticalScrollbar && j.options.showHorizontalScrollbar && (m -= 22, n * a.length > m && (j.options.showVerticalScrollbar = !0, l -= 22)), h = Math.ceil(l / o), b.addColumns(b.getColumnCount(), h - 1), b.outlineColumn.refresh(), b.resumePaint(), j.resumeEvent()
                    },
                    BXa: function(a, b) {
                        var c, d, e, f, g, h, i;
                        if (!(b.length < 0)) {
                            if (c = this, d = 0, f = 0, g = a.outlineColumn, h = c.iXa, a.suspendPaint(), a.autoGenerateColumns = !1, a.bindColumn(0, "name"), a.setDataSource(b), i = c.yXa(), "text" !== i && "number" !== i || g && g.XQa(c.filterButtonInfo.col)) for (f = 0; f < b.length; f++) d = b[f].level, a.getCell(f, h).textIndent(d);
                            else a.getCell(-1, h).textIndent(d);
                            for (g.refresh(), f = 0; f < b.length; f++) e = b[f].status, g.CXa(f, e);
                            a.resumePaint()
                        }
                    },
                    HY: function(a, b) {
                        var c = this;
                        c.zXa(c.filterButtonInfo.col, a, c.gY, b), c.AXa(c.dataSource)
                    },
                    JY: function(a) {
                        var b, c, d, e, f = this,
                            g = f.filterButtonInfo,
                            h = g.rowFilter,
                            i = f.sheet;
                        h && i && i.hK() && (b = g.col, c = {
                            sheet: i,
                            sheetName: i.name(),
                            col: b,
                            ascending: a,
                            cancel: !1
                        }, i.Wq(m.RangeSorting, c), c.cancel === !1 && (d = h.sj ? h.sj.name() : Ma, e = {
                            tableName: d,
                            colIndex: b,
                            isAsc: a
                        }, i.wu().execute({
                            cmd: "sortFilter",
                            sheetName: i.name(),
                            cmdOption: e
                        }), i.Wq(m.RangeSorted, c)))
                    },
                    DXa: function(a, b, c) {
                        var d, e, f, g, h = this,
                            i = h.filterButtonInfo,
                            j = i.rowFilter,
                            k = h.sheet;
                        j && k && k.hK() && ("" !== a && (a = cb(a, k.currentTheme())), c = c !== Ma && c, d = i.col, e = {
                            sheet: k,
                            sheetName: k.Cj,
                            col: d,
                            ascending: c,
                            color: a,
                            isBackColor: b,
                            cancel: !1
                        }, k.Wq(m.RangeSorting, e), e.cancel === !1 && (f = j.sj ? j.sj.name() : Ma, g = {
                            tableName: f,
                            colIndex: d,
                            isAsc: c,
                            color: a,
                            isBackColor: b
                        }, k.wu().execute({
                            cmd: "sortFilter",
                            sheetName: k.name(),
                            cmdOption: g
                        }), k.Wq(m.RangeSorted, e)))
                    },
                    MY: function() {
                        var a = l("#" + x),
                            b = N + O + " " + P;
                        q(this.hY) > 0 ? (a.prop("disabled", !1), db(a[0], b)) : (a.prop("disabled", !0), bb(a[0], b))
                    }
                };
                return l.extend(b.prototype, c), b.zW = function(a) {
                    return 0 === a ? "data:image/png;base64, " : 1 === a ? "data:image/png;base64, " : 2 === a ? "data:image/png;base64, " : 3 === a ? "data:image/png;base64, " : 4 === a ? "data:image/png;base64, " : 5 === a ? "data:image/png;base64, " : 6 === a ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABy0lEQVR42pyST2gTQRTGv9nEpCnqTasHES8VLCioiFDIYYum+I/ebFXQm1BbsdSDhKgoXhS8tLQSqAhexIInETwJIqJiexJEZXupwRJNbRsy2Z3dzHxesjGEChs/eMx7A+837817giQAYCD3cZuScqG8Wtj19tG5n/iHhBAkKcLYCh3fdSd04HXCq5xHG2oAdOAdNIG3qAJ5tW1A/9hrm8ZsV+7vDLTe2nsmP9AWwATuXe27330lLwvLkloHY5EBR0dexkB0xxKp9Ieno8MbOjYP1ZRMHz77YE8kAMk35V/fkpWSc6L3dL7Tl6uPAaAm155EAYhwjFHVOsY4AEwPXXkG7W+0EqmCodlRW17oCkrO5Pjc55lon7i2mBqenc7ETTmLFWdvaenLpijJDUBcywsAYFRwu/jja1dMWNfWKf2WEOJ43T8ihLgHACAJkpgZvNQ3kTnJG/u6Z8O7ZgNwAACbzCb5dxNVLPnQW3aKyY7EKABM2XZPcwUk5wG8qIfvSL5qtJAfHLnvF+Z2GsPr2fefipPH0luq5aXsOi3frJ+5xhSm+k/1VErOxRWlqgkrfujO/t191ZqxLeB5azbJeSFELnz9v/agVX8GAIjG5r9I9yjkAAAAAElFTkSuQmCC" : 7 === a ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsSAAALEgHS3X78AAAAGXRFWHRTb2Z0d2FyZQBQYWludC5ORVQgVjMuNS41Tib51gAAAXlJREFUOE9jYACCqRH5a6eGZu6cHl00d2pUwa6J7r4Xe4w1U0ByWMB/DLHJnoHbQIKzI1PEp3r6vKjVU72HQzNIGNOA6W5uYiCZmUHxM+v0Vf836KuHkWQASPGciGznSe6+/+v01Vbh0YzdBeBwiC560GWi+aLVXEccxJ/i6KhNdBjMCM/u7be3+99hpJEK0jTJ01a0y1hjKVEGTHH31e4w1vxSrqP0tVZPbXazodqKSl2VV9W6KnOJMoCAf4mLRpAq/+pTEh4F+79aJSwGxwjJseBZdHCVa/b2/1YR00vJMsAtd+c957T1D42De17iMKARKO4NTUiuQLoLrs694IAT0PbvNrFzNYwDOv9bRc4IwGKIMVQzKCWCsBNcDVDzaafUdbfMwiZNMwnq/mIeNvkgDldsgWo+hqyZ2TVr+0egIRIgQcuomb7G/h3/zaOmaeFxBcJ2l6xtx8xDJ/6wDJ+cYhU2g8vYv/M9yABj//aLOFxRTUbU49YCALt6h216b0oVAAAAAElFTkSuQmCC" : 8 === a ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAAKBJREFUOE+l0cENwjAMBdCM0BEYhZG6AjdvwQhMUvXQI0KcKo6IY2/9v0qQnVilFoenJF+2q6RJRP7ihhFuGOGGO851Zg4/9PCGi8oOD+iAzQM8c7bRRTX9pStMmbnGd1Nhwz2vbOD+ATcwteagjPBSZuAVTmBqzUHhnTnkA2wkPmJT2wRKGbLk1avZHUAcwldv/n/hhhFuGOGGEW54nKQVV2qyDejeW7YAAAAASUVORK5CYII=" : 9 === a ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjExR/NCNwAAAHpJREFUOE+lz8ENgDAMA8COxEiMkxWYgkmYhCGgllpkUz8aeJyQrVQJJSJ+sWWGLTNsmWHLaq22amkZX2T0MiuB7ASPOMusBIKNh9Evekh4weaTDOfDUDTYdBnTF/AjbOYssxJIf9Q39ouG35DwhS0zbJlhywxbzotyAztMtZGgPPrJAAAAAElFTkSuQmCC" : 10 === a ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHCAYAAAAvZezQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkU3MkFGN0FGNDFDMjExRTc5NDI5QzJBNEY3MjNCMjlDIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkU3MkFGN0IwNDFDMjExRTc5NDI5QzJBNEY3MjNCMjlDIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RTcyQUY3QUQ0MUMyMTFFNzk0MjlDMkE0RjcyM0IyOUMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RTcyQUY3QUU0MUMyMTFFNzk0MjlDMkE0RjcyM0IyOUMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5OU3N/AAAAT0lEQVR42kyLQQqAMBADk7j+yt4s6o8Fj35Ldt1WCg6EMIRgWbdIMMJSjwC68L5OWISjoclyAIUfpe4hyT7LPS+U+9M9m/1qNrfmuL0CDABNSCHTGW/2lwAAAABJRU5ErkJggg==" : 11 === a ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjQ4RjIyODk5REFGMDExRTdBQjYzODEzMjUxNkQwMjNGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjQ4RjIyODlBREFGMDExRTdBQjYzODEzMjUxNkQwMjNGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NDhGMjI4OTdEQUYwMTFFN0FCNjM4MTMyNTE2RDAyM0YiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NDhGMjI4OThEQUYwMTFFN0FCNjM4MTMyNTE2RDAyM0YiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7Qaz1BAAAAgklEQVR42syTQQvAIAiFkw7RNejg//+hbwhTWput6LAFEpLvU+pFAMLOos8BQQCzkKYOppsFaF1KSYqhkCWAbKUULE+g4hjjRXwDMDM8cRPhEVBrRdPFFbsAPZM4L8ryfrIRoO+InDO8F5EwIxFRDzGzDfzgAhRCL4b6wV/YBhwCDAB5AMCzqyCJUAAAAABJRU5ErkJggg==" : 12 === a ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjk1MTQzMkI5REUzNjExRTc5NTJGRURCQjMxNUZBMkY1IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjk1MTQzMkJBREUzNjExRTc5NTJGRURCQjMxNUZBMkY1Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTUxNDMyQjdERTM2MTFFNzk1MkZFREJCMzE1RkEyRjUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OTUxNDMyQjhERTM2MTFFNzk1MkZFREJCMzE1RkEyRjUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6ynYg+AAAAk0lEQVR42qSS4RGAIAiFhWuXNmkAd2iqdnCANmkaii47j15o+f7ooXzCQxKR0CNSQEpJ91VSjJFsjK9Vk6n2GApycehBXuFsLiGIWxmDyyWk1tYDkM36NYVgDBXkutWARqXAnLzNE/JFxmWluwJPB8CO+dwfAFyBM0ZBxnLoVCsgt0D2y/OHZNRO3cSmf9CjXYABADU0MwNjlomLAAAAAElFTkSuQmCC" : 13 === a ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjVGMDFDMjYxREUzNjExRTc4QkRCRjdBQjc3Q0NGRkNCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjVGMDFDMjYyREUzNjExRTc4QkRCRjdBQjc3Q0NGRkNCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NUYwMUMyNUZERTM2MTFFNzhCREJGN0FCNzdDQ0ZGQ0IiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NUYwMUMyNjBERTM2MTFFNzhCREJGN0FCNzdDQ0ZGQ0IiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6yeKkNAAAAhElEQVR42qSSUQ7AIAhDLfGEHtQrspGMhSATnfxoVJ62FsxcTgoC6L3LPCW11uDX6BmlGdll0SKZzRnkE07uUASZvoyCwxaSyRoAatavXyjOUI5c91WjrxKgNt/zyJcXjixIJiOwL1SZdVWqCRpSE3dqFaAS4CNPG82RnNzEpRyc1CXAAE5UMwNlC3A6AAAAAElFTkSuQmCC" : 14 === a ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHCAYAAAAvZezQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkM3QkZFRTJFNTVBMTFFN0E2RERENkM0NDRCMEZGODQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkM3QkZFRTFFNTVBMTFFN0E2RERENkM0NDRCMEZGODQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RTcyQUY3QUY0MUMyMTFFNzk0MjlDMkE0RjcyM0IyOUMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RTcyQUY3QjA0MUMyMTFFNzk0MjlDMkE0RjcyM0IyOUMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5dkRuoAAAALElEQVR42mI8duzYfwYGBkYGKGCC0v/RBeCCyAJgQXQBRmQBRmQtcFsAAgwAYLMGYBu/8woAAAAASUVORK5CYII=" : "";
                }, b
            }(f), j.gZ = b, a.exports = j
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m = c(87),
                n = c(26),
                o = c(127),
                p = m.Go,
                q = c(128),
                r = {},
                s = n.CultureManager,
                t = n.l,
                u = n.j.Ba,
                v = n.u.Ob,
                w = n.u.Pb,
                x = n.j.Ea,
                y = m.GC$,
                z = m.Events,
                A = null,
                B = void 0,
                C = m.Ul.Nl,
                D = m.Ul,
                E = n.k.ac,
                F = D.nl,
                G = "left",
                H = "top",
                I = "float",
                J = "relative",
                K = "gc-ui-filter-subitems-container",
                L = "gc-no-user-select",
                M = "gc-filter-dialog-style",
                N = "position",
                O = "gc-ui-filter-subitem-item",
                P = "gc-ui-filter-allDate-item",
                Q = "gc-filter-alldates-arrow",
                R = "gc-filter-item-hover",
                S = "ui-state-hover ",
                T = S + R,
                U = "gc-filter-hover",
                V = U + " form-control well " + T,
                W = "gc-filter-button-hover " + S,
                X = "gc-filter-submenu-check",
                Y = "gc-filter-submenu-check-img",
                Z = "gc-filter-allDate-check-img",
                $ = "gc-filter-alldates-list",
                _ = "gc-filter-addDates-container",
                aa = "gc-filter-subMenu-wrap",
                ba = "top10_dialog",
                ca = "custom_dialog",
                da = "gc-sub-color-sort",
                ea = "gc-sub-color-filter",
                fa = "automatic",
                ga = "more_color",
                ha = "gc-filter-dialog-color-title",
                ia = "gc-color-item",
                ja = "color-checked-wrap",
                ka = "gc-color-item-list",
                la = "gc-filter-sort",
                ma = "gc-filter-color-dialog-background",
                na = "gc-filter-color-dialog-font",
                oa = "gc-filter-color-dialog-style",
                pa = "TextFilter",
                qa = "NumberFilter",
                ra = "DateFilter",
                sa = "#D3F0E0",
                ta = "#86BFA0",
                ua = "#000000",
                va = "#FFFFFF",
                wa = "display",
                xa = "box-sizing",
                ya = "none",
                za = "width",
                Aa = "height",
                Ba = "padding",
                Ca = "border",
                Da = "click",
                Ea = "mouseover",
                Fa = "mouseout",
                Ga = "resize",
                Ha = "inherit",
                Ia = "#E81123",
                Ja = "white",
                Ka = "backgroundColor",
                La = "#f0f0f0",
                Ma = "margin",
                Na = Ma + "Left",
                Oa = Ma + "Top",
                Pa = Ma + "Right",
                Qa = "font-size",
                Ra = [
                    [1, "Equal", "E", 2, 0],
                    [1, "NotEqual", "N", 1, 1],
                    [1, "GreaterThan", "G", 1, 2],
                    [1, "GreaterOrEquals", "O", 1, 3],
                    [1, "LessThan", "L", 1, 4],
                    [1, "LessThanOrEquals", "Q", 1, 5],
                    [1, "Between", "W", 0, 1],
                    [1, "Top10", "T", 8, 0],
                    [0, "AboveAverage", "A", 10, 0],
                    [0, "BelowAverage", "O", 10, 1],
                    [1, "Custom", "F", 1, 0]
                ],
                Sa = [
                    [1, "Equal", "E", 2, 0],
                    [1, "NotEqual", "N", 2, 1],
                    [1, "Begin", "I", 2, 2],
                    [1, "End", "T", 2, 4],
                    [1, "Contain", "A", 2, 6],
                    [1, "NotContain", "D", 2, 7],
                    [1, "Custom", "F", 2, 0]
                ],
                Ta = [
                    [1, "Equal", "E", 2, 0],
                    [1, "Before", "B", 5, 2],
                    [1, "After", "A", 5, 4],
                    [1, "Between", "W", 0, 1],
                    [0, "Tomorrow", "T", 6, 2],
                    [0, "Today", "O", 6, 0],
                    [0, "Yesterday", "D", 6, 1],
                    [0, "NextWeek", "K", 6, 9],
                    [0, "ThisWeek", "H", 6, 7],
                    [0, "LastWeek", "L", 6, 8],
                    [0, "NextMonth", "M", 6, 6],
                    [0, "ThisMonth", "S", 6, 4],
                    [0, "LastMonth", "N", 6, 5],
                    [0, "NextQuarter", "N", 6, 10],
                    [0, "ThisQuarter", "N", 6, 11],
                    [0, "LastQuarter", "N", 6, 12],
                    [0, "NextYear", "N", 6, 13],
                    [0, "ThisYear", "N", 6, 14],
                    [0, "LastYear", "N", 6, 15],
                    [0, "YearToDate", "A", 6, 0, 6],
                    [0, "AllDates", "P", 6, 1],
                    [1, "Custom", "F", 6, 0]
                ],
                Ua = [
                    ["Q1", "1", 6, 0, 2],
                    ["Q2", "B", 6, 1, 2],
                    ["Q3", "A", 6, 2, 2],
                    ["Q4", "4", 6, 3, 2],
                    ["Jan", "J", 6, 0, 3],
                    ["Feb", "F", 6, 1, 3],
                    ["Mar", "M", 6, 2, 3],
                    ["Apr", "A", 6, 3, 3],
                    ["May", "Y", 6, 4, 3],
                    ["Jun", "U", 6, 5, 3],
                    ["Jul", "L", 6, 6, 3],
                    ["Aug", "T", 6, 7, 3],
                    ["Sep", "S", 6, 8, 3],
                    ["Oct", "O", 6, 9, 3],
                    ["Nov", "N", 6, 10, 3],
                    ["Dec", "D", 6, 11, 3]
                ],
                Va = ["IsEquals-0-2", "NotEquals-1-11", "IsGreaterThan-2-1", "IsGreaterOrEqual-3-1", "IsLess-4-1", "LessOrEqual-5-1", "IsBeginWith-2-2", "NotBeginWith-3-2", "IsEndWith-4-2", "NotEndWith-5-2", "IsContain-6-2", "NotContains-7-2"],
                Wa = ["IsEquals-0-2", "NotEquals-1-11", "IsGreaterThan-2-1", "IsGreaterOrEqual-3-1", "IsLess-4-1", "LessOrEqual-5-1", "IsBeginWith-2-2", "NotBeginWith-3-2", "IsEndWith-4-2", "NotEndWith-5-2", "IsContain-6-2", "NotContains-7-2"],
                Xa = ["IsEquals-0-2", "NotEquals-1-5", "IsAfter-4-5", "AfterOrEqual-5-5", "IsBefore-2-5", "BeforeOrEqual-3-5", "IsBeginWith-2-2", "NotBeginWith-4-2", "IsEndWith-4-2", "NotEndWith-5-2", "IsContain-6-2", "NotContains-7-2"],
                Ya = function() {
                    return n.C(c(129).SR)()
                };

            function Za(a) {
                return n.pc.bc(n.pc.ec(a))
            }
            function $a(a, b, c, d) {
                var e, f;
                try {
                    if (c.suspendPaint(), !d) return;
                    e = d.sj ? d.sj.name() : B, f = {
                        tableName: e,
                        colIndex: a,
                        condition: b
                    }, c.wu().execute({
                        cmd: "filterByCondition",
                        sheetName: c.name(),
                        cmdOption: f
                    })
                } finally {
                    c.resumePaint()
                }
            }
            b = function() {
                function a(a, b, c, d, e, f) {
                    var g = this;
                    g.Nc = B, g.EXa = f, g.FXa = a, g.kj = d, g.GXa = y(a), g.xo = b, g.G$a = !1, g.HXa = c, g.xr = c.rowFilter, g.IXa = e, g.JXa = A
                }
                return a.prototype = {
                    ad: function() {
                        this.yl(this.KXa()), this.LXa()
                    },
                    zW: function(a) {
                        return q.gZ.zW(a)
                    },
                    KXa: function() {
                        var a = y(C("div")).attr("id", K + "_" + this.EXa);
                        return a.addClass(M + " " + L + " " + aa), a.css([N, wa, xa], ["absolute", ya, "border-box"]), this.JXa = a, y(this.FXa).append(this.JXa), a
                    },
                    cXa: function() {
                        return !("none" === this.JXa[0].style.display)
                    },
                    Ao: function() {
                        y("." + aa).hide(), this.JXa.show(), this.MXa()
                    },
                    hT: function() {
                        this.JXa.hide(), this.JXa.find("." + V).removeClass(V)
                    },
                    OWa: function(a) {
                        return this.Nc = a, this
                    },
                    MXa: function(a) {
                        var b, c, d, e = this.GXa.offset(),
                            f = this.FXa.offsetTop,
                            g = document.documentElement,
                            h = g.clientWidth,
                            i = g.clientHeight,
                            j = this.JXa.width(),
                            k = this.JXa.height();
                        this.xo.offset().left + this.xo.width() + j > h ? (b = -1 * (j + 2) + "px", d = !1) : (b = this.xo.width() + "px", d = !0), c = this.xo.offset().top + f + k > i ? i - k - this.xo.offset().top - 6 : e.top - this.xo.offset().top, c += "px", this.JXa.css([G, H], [b, c]), a && a.call(this, d)
                    },
                    NXa: function(a, b) {
                        var c = this,
                            d = c.kj,
                            e = c.xr;
                        $a(a, b, d, e), this.IXa.close()
                    },
                    oXa: function() {
                        var a = y(".gc-filter-item-hover", this.JXa[0]);
                        a.trigger(Da)
                    },
                    WW: function() {
                        var a, b = this,
                            c = b.HXa,
                            d = this.kj,
                            e = c.col,
                            f = c.rowFilter;
                        f && (a = {
                            rowFilter: f,
                            colIndex: e
                        }, d.wu().execute({
                            cmd: "clearFilter",
                            sheetName: d.name(),
                            cmdOption: a
                        }))
                    },
                    tXa: function() {
                        return this.hT(), A
                    },
                    uXa: function() {
                        this.cXa() || (this.Ao(), this.mXa())
                    },
                    yl: function() {},
                    LXa: function() {},
                    mXa: function() {},
                    wXa: function() {},
                    vXa: function() {}
                }, a
            }(), d = function(a) {
                y.inherit(b, a);

                function b(b, c, d, e, f, g) {
                    a.call(this, b, c, d, e, f, g)
                }
                var c = {
                    yl: function(a) {
                        y(a).append(this.OXa())
                    },
                    LXa: function() {
                        var a = this;
                        a.JXa.bind(Ea, function(a) {
                            F(a)
                        }).bind(Fa, function(a) {
                            F(a)
                        }), y("." + O, a.JXa[0]).bind(Ea, function(a) {
                            y("." + O).removeClass(V), y(this).addClass(V), F(a)
                        }).bind(Fa, function(a) {
                            y(this).removeClass(V), F(a)
                        }).bind(Da, function(b) {
                            y(this).attr("id") !== _ && a.PXa(y(this)), F(b)
                        }), this.QXa && this.QXa()
                    },
                    _Za: function(a) {
                        return a !== B && "TRUE" === a || "FALSE" === a
                    },
                    RXa: function() {
                        var a, b, c, d, e, f, g, h, i, j, k, l, m = this.xr.rZ[this.HXa.col],
                            n = this.SXa,
                            o = !1;
                        if (m && m.length > 0) for (m = m[0], d = m.conType(), e = m.compareType(), f = m.expected(), g = m.expectTypeId(), 10 === d && (e = m.type()), 8 === d && (e = 0), this._Za(f) && (d = 11), 0 === d && (h = m.item1().compareType(), i = m.item2().compareType(), 5 === Math.max(h, i) && 3 === Math.min(h, i) && (o = !0)), j = 0, k = E(n); j < k; j++) {
                            if (b = 0 === d && n[j][3] === d && o || n[j][3] === d && 0 !== d || 11 === d && (1 === n[j][3] || 2 === n[j][3]), b && 8 === d) {
                                a = j;
                                break
                            }
                            if (c = n[j][4] === e && !o || 6 === n[j][3] && f === n[j][4] || o, b && c && (isNaN(g) || 0 === g)) {
                                a = j;
                                break
                            }
                        }
                        isNaN(g) || 6 !== g || (a = 19), isNaN(g) || 2 !== g && 3 !== g || (a = 20, this.TXa && this.TXa(Ua, f, g)), a !== B && 0 !== a ? l = y("." + O)[a] : !m || 3 === d || a !== B || 2 === d && 0 === e ? 0 === a && 5 === d && (l = y("." + O)[a]) : l = y("." + O)[E(n) - 1], y(l).attr("data-isCheck", 1), y(l).find("." + Y).css([wa], ["inline-block"])
                    },
                    mXa: function() {
                        var a = y("." + O).removeClass(V)[0];
                        y(a).addClass(V)
                    },
                    UXa: function(a) {
                        var b;
                        if (0 !== a) b = a;
                        else switch (this.Nc) {
                            case qa:
                                b = 1;
                                break;
                            case pa:
                                b = 2;
                                break;
                            case ra:
                                b = 5
                        }
                        return b
                    },
                    VXa: function(a, b, c, d) {
                        var e = this.kj,
                            f;
                        switch (a) {
                            case ba:
                                f = new j(e.parent.xv(), e, this.HXa, ba, d);
                                break;
                            case ca:
                                f = new l(e.parent.xv(), e, this.HXa, ca, this.IXa._$a, d, b, c, this.UXa(b))
                        }
                        f && f.OT()
                    },
                    PXa: function(a) {
                        var b, c, d = this.HXa.col,
                            e = parseInt(a.attr("data-isNeedDialog"), 10),
                            f = parseInt(a.attr("data-conditionType"), 10),
                            g = parseInt(a.attr("data-operatorType"), 10),
                            h = parseInt(a.attr("data-expectTypeId"), 10),
                            i = parseInt(a.attr("data-isCustom"), 10),
                            j = parseInt(a.attr("data-ischeck"), 10);
                        return isNaN(h) || (e = 0, i = 0), 0 === e && 1 === j ? (this.WW(), void this.IXa.close()) : 1 === e ? (this.IXa.close(), b = 8 === f && 0 === g ? ba : ca, void this.VXa(b, f, g, i)) : (c = new o.Condition(f), 10 === f ? c.type(g) : c.compareType(g), 6 !== f || isNaN(h) ? 6 === f && (c = new o.Condition(f), c.expected(g)) : (c = new o.Condition(f), c.expectTypeId(h), c.expected(g)), void this.NXa(d, c))
                    },
                    OXa: function() {},
                    WXa: function(a) {
                        var b, c, d = "";
                        for (b = 0, c = a.length; b < c; b++) d += b === c - 1 ? this.XXa(a[b], 1) : this.XXa(a[b], 0);
                        this.JXa.html(d), y(this.FXa).append(this.JXa), this.YXa(), this.RXa()
                    },
                    YXa: function() {
                        var a = this.FXa.offsetHeight - 2,
                            b = this.FXa.offsetTop;
                        y("." + O + ",." + P).css([Ba, Aa, "line-height", "white-space", "clear", Ca, za, Aa, Qa, Ma], ["0 10px 0 0", a, a, "nowrap", "both", ya, "auto", "auto", "12px", 0]), this.JXa.css([G, H], ["100%", b]), y(".gc-filter-hotkey").css(["text-decoration"], ["underline"]), y("." + X).css([wa, za, "textAlign"], ["inline-block", "24px", "center"]), y("." + X + " img").css([wa, "verticalAlign"], ["inline-block", "text-bottom"]), y("." + Y + ",." + Z).hide(), y("#" + _).css([N], [J]), y("." + Q).css([Na], ["5px"]), y("#" + $).css([N, wa, za], ["absolute", "none", "auto"])
                    },
                    XXa: function(a, b) {
                        var c = "",
                            d = a[0],
                            e = Ya()[a[1]],
                            f = a[3],
                            g = a[4];
                        return c = '<div class="' + O + '" data-isCustom="' + b + '" data-isNeedDialog ="' + d + '" data-conditionType="' + f + '" data-operatorType="' + g + '"><div class="gc-filter-sort"><span class="' + X + '"><img class="' + Y + '" src="' + this.zW(11) + '"></span><span>' + e + "</span></div></div>"
                    },
                    vXa: function() {
                        var a = y(".gc-filter-item-hover", this.JXa[0]).removeClass(V),
                            b = y("." + O);
                        0 === a.index() ? y(b[b.length - 1]).addClass(V) : y(b[a.index() - 1]).addClass(V)
                    },
                    wXa: function() {
                        var a = y(".gc-filter-item-hover", this.JXa[0]);
                        a.length > 0 && a[0].nextSibling ? (a.removeClass(V), y(a[0].nextSibling).addClass(V)) : this.mXa()
                    }
                };
                return y.extend(b.prototype, c), b
            }(b), e = function(a) {
                y.inherit(b, a);

                function b(b, c, d, e, f, g) {
                    var h = this;
                    this.SXa = Ra, a.call(h, b, c, d, e, f, g)
                }
                var c = {
                    OXa: function() {
                        this.WXa(this.SXa)
                    }
                };
                return y.extend(b.prototype, c), b
            }(d), r.WWa = e, f = function(a) {
                y.inherit(b, a);

                function b(b, c, d, e, f, g) {
                    var h = this;
                    this.SXa = Sa, a.call(h, b, c, d, e, f, g)
                }
                var c = {
                    OXa: function() {
                        this.WXa(Sa)
                    }
                };
                return y.extend(b.prototype, c), b
            }(d), r.XWa = f, g = function(a) {
                y.inherit(b, a);

                function b(b, c, d, e, f, g) {
                    var h = this;
                    this.SXa = Ta, a.call(h, b, c, d, e, f, g)
                }
                var c = {
                    OXa: function() {
                        this.WXa(Ta)
                    },
                    XXa: function(a, b) {
                        var c = "",
                            d = a[0],
                            e = Ya()[a[1]],
                            f = a[3],
                            g = a[4];
                        return c = "AllDates" === a[1] ? '<div id="' + _ + '" class="' + O + '" data-isCustom="' + b + '" data-isNeedDialog ="' + d + '" data-conditionType="' + f + '" data-operatorType="' + g + '"><div class="gc-filter-sort"><span class="' + X + '"><img class="' + Y + '" src="' + this.zW(11) + '"></span><span>' + e + '</span><span class="' + Q + '"><img src="' + this.zW(10) + '"></span></div>' + this.ZXa() + "</div>" : "YearToDate" === a[1] ? '<div class="' + O + '" data-expectTypeId="' + a[5] + '" data-isCustom="' + b + '" data-isNeedDialog ="' + d + '" data-conditionType="' + f + '" data-operatorType="' + g + '"><div class="gc-filter-sort"><span class="' + X + '"><img class="' + Y + '" src="' + this.zW(11) + '"></span><span>' + e + "</span></div></div>" : '<div class="' + O + '" data-isCustom="' + b + '" data-isNeedDialog ="' + d + '" data-conditionType="' + f + '" data-operatorType="' + g + '"><div class="gc-filter-sort"><span class="' + X + '"><img class="' + Y + '" src="' + this.zW(11) + '"></span><span>' + e + "</span></div></div>"
                    },
                    Ao: function() {
                        y("." + aa).hide(), this.JXa.show(), this.MXa(this.$Xa)
                    },
                    $Xa: function(a) {
                        var b, c, d, e, f, g, h, i;
                        this.JXa.show(), b = y("#" + $), c = y("#" + _), d = this.JXa, g = document.documentElement, h = g.clientWidth, i = g.clientHeight, e = d.offset().left + d.width() + b.width() > h ? -1 * b.width() + "px" : a ? d.width() + "px" : -1 * b.width() + "px", f = c.offset().top + b.height() > i ? i - b.height() - c.offset().top - 5 : 0, f += "px", b.css([G, H], [e, f])
                    },
                    ZXa: function() {
                        var a, b = '<div id="' + $ + '" class="' + M + '">';
                        for (a = 0; a < E(Ua); a++) b += '<div class="' + P + '" data-expectTypeId="' + Ua[a][4] + '" data-conditionType="6"  data-operatorType="' + Ua[a][3] + '"><div class="gc-filter-sort"><span class="' + X + '"><img class="' + Z + '" src="' + this.zW(11) + '"></span><span>' + Ya()[Ua[a][0]] + "</span></div></div>";
                        return b += "</div>"
                    },
                    mXa: function() {
                        var a, b;
                        this._Xa() ? (a = y("." + P).removeClass(V), y(a[0]).addClass(V)) : (b = y("." + O).removeClass(V)[0], y(b).addClass(V))
                    },
                    _Xa: function() {
                        var a = !1,
                            b = y("#" + $);
                        return a = 0 !== b.length && b.css(wa) !== ya
                    },
                    aYa: function() {
                        y("#" + $).hide(), y("." + P).removeClass(V)
                    },
                    QXa: function() {
                        var a = this;
                        y("." + P, a.JXa[0]).bind(Ea, function() {
                            y(this).addClass(V), y("#" + _).addClass(V)
                        }).bind(Fa, function() {
                            y(this).removeClass(V)
                        }).bind(Da, function(b) {
                            a.PXa(y(this)), F(b)
                        }), y("#" + _, a.JXa[0]).bind(Ea, function() {
                            y("#" + $).show()
                        }).bind(Fa, function() {
                            a.aYa()
                        }).bind(Da, function(b) {
                            y("#" + $).show(), a.mXa(), F(b)
                        })
                    },
                    bYa: function() {
                        var a = !1,
                            b = y("#" + _);
                        return a = 0 !== b.length && b.hasClass(V)
                    },
                    TXa: function(a, b, c) {
                        var d, e, f;
                        for (e = 0; e < E(a); e++) if (a[e][3] === b && a[e][4] === c) {
                            d = e;
                            break
                        }
                        f = y("." + P)[d], y(f).attr("data-isCheck", 1), y(f).find("." + Z).css([wa], ["inline-block"]).attr("data-isCheck", 1)
                    },
                    oXa: function() {
                        var a;
                        a = this._Xa() ? y(".gc-filter-item-hover", y("#" + $)[0]) : y(".gc-filter-item-hover", this.JXa[0]), a.trigger(Da)
                    },
                    tXa: function() {
                        var a = A;
                        return this._Xa() ? (this.aYa(), a = this) : this.hT(), a
                    },
                    uXa: function() {
                        var a = this.cXa(),
                            b = this._Xa();
                        a ? !b && this.bYa() && (y("#" + $).show(), this.mXa()) : (this.Ao(), this.mXa())
                    },
                    vXa: function() {
                        var a, b, c, d;
                        this._Xa() ? (a = y(".gc-filter-item-hover", y("#" + $)[0]).removeClass(V), b = y("." + P), 0 === a.index() ? y(b[b.length - 1]).addClass(V) : y(b[a.index() - 1]).addClass(V)) : (c = y(".gc-filter-item-hover", this.JXa[0]).removeClass(V), d = y("." + O), 0 === c.index() ? y(d[d.length - 1]).addClass(V) : y(d[c.index() - 1]).addClass(V))
                    },
                    wXa: function() {
                        var a, b, c;
                        this._Xa() ? (a = y(".gc-filter-item-hover", y("#" + $)[0]).removeClass(V), b = y("." + P), a.index() === b.length - 1 ? y(b[0]).addClass(V) : y(b[a.index() + 1]).addClass(V)) : (c = y(".gc-filter-item-hover", this.JXa[0]), c.length > 0 && c[0].nextSibling ? (c.removeClass(V), y(c[0].nextSibling).addClass(V)) : this.mXa())
                    }
                };
                return y.extend(b.prototype, c), b
            }(d), r.YWa = g, h = function(a) {
                y.inherit(b, a);

                function b(b, c, d, e, f, g) {
                    a.call(this, b, c, d, e, f, g)
                }
                var c = {
                    yl: function() {
                        this.cYa(this.IXa._Wa, this.IXa.aXa)
                    },
                    dYa: function() {
                        var a, b, c, d, e, f = this.xr.zZ;
                        if (f && f.color !== B) {
                            if (b = f.isBackColor ? 0 : 1, c = f.color, d = this.IXa._Wa, e = this.IXa.aXa, "" !== c && (c = Za(c)), "" === c && 0 === b && d[fa] === B) return B;
                            if ("" === c && 0 !== b && e[fa] === B) return B;
                            a = {
                                colorType: b,
                                color: c
                            }
                        }
                        return a
                    },
                    eYa: function() {
                        var a = this.xr.rZ[this.HXa.col],
                            b;
                        return a && a.length > 0 && 3 === a[0].conType() && (b = {
                            colorType: a[0].compareType(),
                            color: a[0].expected()
                        }), b
                    },
                    cYa: function(a, b) {
                        this.fYa(a, b), this.gYa()
                    },
                    hYa: function(a, b) {
                        this.IXa.DXa(a, b), this.IXa.close()
                    },
                    iYa: function(a) {
                        var b, c, d, e, f;
                        this.IXa.close(), b = this, c = b.kj, e = a ? this.IXa._Wa : this.IXa.aXa, this.UZa && (d = this.UZa.color), f = new k(c.parent.xv(), c, this.HXa, this.EXa, e, a, d), f.OT()
                    },
                    jYa: function(a, b) {
                        var c = new o.Condition(3),
                            d = this.HXa.col,
                            e = b ? 0 : 1,
                            f = this.eYa();
                        return f && f.colorType === e && f.color === a ? (this.WW(), void this.IXa.close()) : (c.compareType(e), c.expected(a), void this.NXa(d, c))
                    },
                    gYa: function() {
                        y("." + ha, this.JXa[0]).css([Aa, "line-height", "textIndent", "backgroundColor", "color"], ["32px", "32px", "8px", "rgb(235,235,235)", "rgb(106,106,106)"]), y("." + ka, this.JXa[0]).css(["listStyle", "padding", Aa, "lineHeight", Ca, "whiteSpace", za, Ma, Qa, xa], [ya, "2px 0", "23px", "23px", "1px solid transparent", "nowrap", "140px", 0, "12px", "content-box"]), y("." + ia, this.JXa[0]).css([za, Ca, Pa, Aa, xa, "whiteSpace", I], ["75px", "1px solid rgb(130,130,130)", "24px", "22px", "border-box", "nowrap", G]), y("." + ja, this.JXa[0]).css([wa, za, Aa, "verticalAlign", Ma, "textAlign", I], ["inline-block", "22px", "22px", "middle", "0 3px 0 2px", "center", G]), y("." + ja + " img", this.JXa[0]).css([Oa, wa], ["3px", ya]), y(".gc-color-dialog-more-color", this.JXa[0]).css([Ba], ["0 5px 0 0"]), y("." + ja + " img.checked", this.JXa[0]).css([Oa, wa], ["3px", "block"])
                    },
                    fYa: function(a, b) {
                        var c, d, e, f;
                        this.EXa === da ? (c = Ya().SortCellTitle, d = Ya().SortFontTitle, e = this.dYa()) : this.EXa === ea && (c = Ya().FilterCellTitle, d = Ya().FilterFontTitle, e = this.eYa()), this.UZa = e, f = this.kYa(c, a[fa], a.data, 0, e), f += this.kYa(d, b[fa], b.data, 1, e), "" !== f ? this.JXa.html(f) : this.G$a = !0, y(this.FXa).append(this.JXa)
                    },
                    kYa: function(a, b, c, d, e) {
                        var f, g, h, i, j, k, l, m, n, o, p = !1,
                            q = "checked";
                        e && d === e.colorType && "" !== e.color ? g = Za(e.color) : e && "" === e.color && d === e.colorType && (g = e.color), f = 0 === d ? ma : na, h = "<div class='" + ha + "'>" + a + "</div><ul class='" + f + "' style='padding: 7px 0 0 0;margin:0'>", i = 0;
                        for (j in c) c.hasOwnProperty(j) && i < 5 && (k = "", g !== B && g === j && (k = q, p = !0), h += '<li class="' + ka + '" data-colIndex="' + c[j] + '" data-colorType="' + d + '" data-color = "' + j + '"><span class="' + ja + '"><img class="' + k + '" src="' + this.zW(11) + '"></span><div class="' + ia + '" style="background-color: ' + j + '" ></div></li>', i++);
                        return 0 === i && g === B || b === B && 1 === i ? h = "" : (b !== B && (l = 0 === d ? Ya().NoFill : Ya().Automatic, m = "", g !== B && "" === g && (m = q, p = !0), h += '<li class="' + ka + '" data-colIndex="' + fa + '" data-colorType="' + d + '" data-color = ""><span class="' + ja + '"><img  class="' + m + '" src="' + this.zW(11) + '"></span><div class="' + la + '">' + l + "</div></li>"), 5 === i && (n = "", p || g === B || (n = q), o = 0 === d ? Ya().CellColor : Ya().FontColor, h += '<li class="' + ka + '" data-colIndex="' + ga + '" data-colorType="' + d + '" ><span class="' + ja + '"><img class="' + n + '" src="' + this.zW(11) + '"></span><div class="' + la + ' gc-color-dialog-more-color">' + o + "</div></li>"), h += "</ul>")
                    },
                    mXa: function() {
                        var a = y("." + ka, this.JXa[0]).removeClass(V)[0];
                        y(a).addClass(V)
                    },
                    LXa: function() {
                        var a = this;
                        a.JXa.bind(Ea, function(a) {
                            F(a)
                        }).bind(Fa, function(a) {
                            F(a)
                        }), y("." + ka, a.JXa[0]).bind(Da, function() {
                            var b = y(this).attr("data-color"),
                                c = y(this).attr("data-colindex"),
                                d = y(this).attr("data-colorType"),
                                e = !1;
                            return d = parseInt(d, 10), 0 === d && (e = !0), "more_color" === c ? void a.iYa(e) : void(a.EXa === da ? a.hYa(b, e) : a.EXa === ea && a.jYa(b, e))
                        }).bind(Ea, function(b) {
                            y("." + ka, a.JXa[0]).removeClass(V), y(this).addClass(V), F(b)
                        }).bind(Fa, function(a) {
                            y(this).removeClass(V), F(a)
                        })
                    },
                    vXa: function() {
                        var a, b = y("." + ka, this.JXa[0]),
                            c = 0;
                        b.forEach(function(a, b) {
                            y(a).hasClass("gc-filter-item-hover") && (c = b)
                        }), 0 === c ? y(b.removeClass(V)[b.length - 1]).addClass(V) : (a = b.removeClass(V)[c - 1], y(a).addClass(V))
                    },
                    wXa: function() {
                        var a, b = y("." + ka, this.JXa[0]),
                            c = 0;
                        b.forEach(function(a, b) {
                            y(a).hasClass("gc-filter-item-hover") && (c = b)
                        }), c === b.length - 1 ? this.mXa() : (a = b.removeClass(V)[c + 1], y(a).addClass(V))
                    }
                };
                return y.extend(b.prototype, c), b
            }(b), r.ZWa = h, i = function(a) {
                y.inherit(b, a);

                function b(b, c, d, e) {
                    var f = this,
                        g = c.parent;
                    a.call(f, b, D.vl(g && g.qo), !0), f.kj = c, f.lYa = f.Cj + "_OK", f.mYa = f.Cj + "_Cancel", f.nYa = f.Cj + "_Close", f.HXa = d, f.xr = d.rowFilter, f.EXa = e, f.xo = f.yo(), f.Fva()
                }
                var c = {
                    OT: function() {},
                    Fva: function() {
                        this.Ao(), this.yl(), this.oYa(), this.BPa()
                    },
                    yl: function() {},
                    BPa: function() {
                        var a = this,
                            b = a.xo.width(),
                            c = a.xo.height(),
                            d = a.AWa.width(),
                            e = a.AWa.height();
                        this.xo.css([N, G, H], ["fixed", (d - b) / 2 + "px", (e - c) / 2 + "px"])
                    },
                    oYa: function() {
                        var a = this;
                        y("#" + a.lYa).bind(Da, function() {
                            var b = a.pYa();
                            b && a.close()
                        }), y("#" + a.mYa).bind(Da, function() {
                            a.qYa(), a.close()
                        }), y("#" + a.nYa).bind(Da, function() {
                            a.qYa(), a.close()
                        }).bind(Ea, function() {
                            this.style.backgroundColor = Ia, this.style.color = Ja
                        }).bind(Fa, function() {
                            this.style.backgroundColor = Ha, this.style.color = Ha
                        }), y("#" + a.lYa + ", #" + a.mYa).bind(Ea, function() {
                            y(this).addClass(W)
                        }).bind(Fa, function() {
                            y(this).removeClass(W)
                        }), y(document).bind(Ga, function() {
                            a.BPa()
                        })
                    },
                    PXa: function(a) {
                        var b = this.HXa,
                            c = b.col,
                            d = this.kj,
                            e = b.rowFilter;
                        $a(c, a, d, e)
                    },
                    pYa: function() {},
                    qYa: function() {}
                };
                return y.extend(b.prototype, c), b
            }(p), r.rYa = i, j = function(a) {
                y.inherit(b, a);

                function b(b, c, d, e) {
                    var f = this;
                    f.Vo = 310, f._v = 140, f.HXa = d, f.xr = f.HXa.rowFilter, f.EXa = e, f.sYa = f.tYa(), a.call(this, b, c, d, e)
                }
                var c = {
                    ad: function() {
                        a.prototype.ad.call(this), this.yl()
                    },
                    tYa: function() {
                        var a, b, c = {
                                rank: 0,
                                item: 10
                            },
                            d = this,
                            e = d.xr.rZ[d.HXa.col];
                        return e && e.length > 0 && 8 === e[0].conType() && (a = e[0].type(), b = e[0].expected(), c = {
                            rank: a,
                            item: b
                        }), c
                    },
                    yl: function() {
                        var a = this.uYa();
                        this.yo().html(a), this.setStyle(), this.LXa()
                    },
                    vYa: function(a) {
                        1 === a.value.length ? a.value = a.value.replace(/[^1-9]/g, "") : a.value = a.value.replace(/\D/g, "")
                    },
                    LXa: function() {
                        var a = this;
                        y("#top10-item").bind("keyup", function() {
                            y(this).removeClass("gc-filter-top10-rank-illegal"), a.vYa(this)
                        }).bind("paste", function() {
                            y(this).removeClass("gc-filter-top10-rank-illegal"), a.vYa(this)
                        })
                    },
                    pYa: function() {
                        var a = this,
                            b = parseInt(y("#top10-rank").val(), 10),
                            c = parseInt(y("#top10-item").val(), 10),
                            d = new o.Condition(8),
                            e = !1;
                        return c ? (e = !0, d.type(b), d.expected(c), a.PXa(d)) : y("#top10-item").addClass("gc-filter-top10-rank-illegal").focus(), e
                    },
                    uYa: function() {
                        var a = "",
                            b = "";
                        return b = 1 === this.sYa.rank ? '<select id="top10-rank"><option value="0">' + Ya().top + '</option><option value="1" selected = "selected">' + Ya().bottom + "</option></select>" : '<select id="top10-rank"><option value="0" selected="selected">' + Ya().top + '</option><option value="1">' + Ya().bottom + "</option></select>", a += '<div class="gc-popup ui-widget ' + M + '"><div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix"><span class="gc-filter-dialog-title">' + Ya().Top10Filter + '</span><span id="' + this.nYa + '" class="gc-filter-dialog-close">×</span></div><div id="top10-desc"><div class="top10-show-text">' + Ya().Show + '</div><div class="ui-dialog-hr"></div></div><div class="top10-wrap">' + b + '<input id="top10-item" class="gc-filter-top10-rank" type="text"  value="' + this.sYa.item + '" /></div><div class="top10-footer top10-wrap"><input type="button" id="' + this.lYa + '" value="' + Ya().OK + '"><input id="' + this.mYa + '" type="button" class="gc-filter-dialog-close" value="' + Ya().Cancel + '"/></div></div>'
                    },
                    setStyle: function() {
                        y(".gc-popup", this.xo[0]).css([Ka, za, Aa], [La, this.Vo, this._v]), y(".ui-dialog-titlebar", this.xo[0]).css({
                            height: "34px",
                            background: "white",
                            fontSize: "12px",
                            fontWeight: "normal",
                            color: "#222",
                            border: "none",
                            borderRadius: "0"
                        }), y(".gc-filter-dialog-title", this.xo[0]).css({
                            float: "left",
                            height: "34px",
                            lineHeight: "34px",
                            display: "inline-block",
                            marginLeft: "15px"
                        }), y(".top10-show-text", this.xo[0]).css({
                            float: "left"
                        }), y(".ui-dialog-hr", this.xo[0]).css({
                            position: "absolute",
                            left: "24px",
                            right: "0",
                            margin: "0 5px",
                            height: "12px",
                            borderBottom: "1px solid #e0e0e0",
                            borderWidth: "thin"
                        }), y("#top10-desc", this.xo[0]).css({
                            height: "24px",
                            lineHeight: "24px",
                            marginLeft: "15px",
                            position: J,
                            fontSize: "10px"
                        }), y("#" + this.nYa, this.xo[0]).css({
                            float: "right",
                            fontSize: "18px",
                            width: "36px",
                            height: "34px",
                            lineHeight: "34px",
                            textAlign: "center"
                        }), y("#top10-rank", this.xo[0]).css({
                            width: "120px",
                            marginRight: "20px",
                            height: "21px",
                            textIndent: "5px",
                            fontSize: "inherit",
                            padding: "0",
                            marginBottom: 0
                        }), y("#top10-item", this.xo[0]).css({
                            width: "60px",
                            textIndent: "5px",
                            padding: 0,
                            height: "21px",
                            margin: 0,
                            fontSize: "inherit",
                            display: "inline-block"
                        }), y(".top10-wrap", this.xo[0]).css({
                            padding: "0px 12px",
                            textAlign: "right",
                            color: "#9B9C9C",
                            fontSize: "13px"
                        }), y(".top10-footer", this.xo[0]).css({
                            padding: "20px 12px 12px"
                        }), y("#" + this.lYa + ", #" + this.mYa).css({
                            width: "75px",
                            height: "23px",
                            lineHeight: "21px",
                            fontSize: "12px",
                            backgroundColor: "#E1E1E1",
                            border: "1px solid #c2c2c2",
                            padding: 0,
                            display: "inline-block"
                        }), y("#" + this.lYa, this.xo[0]).css({
                            marginRight: "12px"
                        })
                    }
                };
                return y.extend(b.prototype, c), b
            }(i), k = function(a) {
                y.inherit(b, a);

                function b(b, c, d, e, f, g, h) {
                    this.Vo = 416, this._v = 100, this.wYa = 36, this.xYa = 24, this.yYa = 8, this.zYa = 7, this.EXa = e, this.AYa = f, this.Xba = g ? 0 : 1, h ? this.BYa = Za(h) : this.BYa = h, this.CYa = A, this.DYa = A, a.call(this, b, c, d, e)
                }
                var c = {
                    yl: function() {
                        var a, b, c = this.EYa();
                        this.xo.append(c), a = y("#color-spread-wrap", this.xo[0])[0], this.VZa = this.WZa(), b = this.FYa(a), this.GYa(a, b), this.LXa(this.CYa, this.DYa)
                    },
                    WZa: function() {
                        return sa
                    },
                    FYa: function(a) {
                        var b = this.AYa.colorNumber,
                            c, d, e = !1;
                        return d = this.wYa * this.zYa + 4, Math.ceil(b / this.zYa) > this.yYa ? (c = this.xYa * this.zYa, e = !0, d += 20) : c = this.xYa * Math.ceil(b / this.zYa), y(a).height(c), y(a).width(d), e
                    },
                    HYa: function(a, b, c) {
                        var d, e, f;
                        a.suspendPaint(), d = a.options, e = b.options, d.showHorizontalScrollbar = !1, d.allowContextMenu = !1, d.showVerticalScrollbar = c, d.scrollbarMaxAlign = !0, d.tabStripVisible = !1, d.allowUserResize = !1, d.allowUserDragDrop = !1, d.allowUserDragFill = !1, d.allowUserZoom = !1, d.grayAreaBackColor = "#fff", e.colHeaderVisible = !1, e.rowHeaderVisible = !1, e.selectionBackColor = "transparent", e.selectionBorderColor = "transparent", e.gridline = {
                            showVerticalGridline: !1,
                            showHorizontalGridline: !1
                        }, e.isProtected = !0, b.setColumnCount(this.zYa + 2), f = this.AYa.colorNumber, b.setRowCount(Math.ceil(f / this.zYa) + 1), b.defaults.rowHeight = 21, b.defaults.colWidth = 36, b.setColumnWidth(0, 2), b.setColumnWidth(this.zYa + 1, 2), b.setRowHeight(0, 2), a.resumePaint()
                    },
                    IYa: function(a, b) {
                        var c, d, e, f, g;
                        b.suspendPaint(), c = (this.zYa - this.AYa.colorNumber) * this.wYa / 2, b.setColumnWidth(0, c);
                        for (g in this.AYa.data) this.AYa.data.hasOwnProperty(g) && (f = this.JYa(d, e), d = f.row, e = f.col, this.Bba(d, e, g, b));
                        b.resumePaint()
                    },
                    Bba: function(a, b, c, d) {
                        var e = new m.CellTypes.Button;
                        e.buttonBackColor(c), e.marginLeft(3), e.marginTop(3), e.marginRight(3), e.marginBottom(3), d.setCellType(a, b, e, 3), c === this.BYa && this.XZa(d, a, b, this.VZa)
                    },
                    JYa: function(a, b) {
                        return a === B && b === B ? (a = 1, b = 1) : b < this.zYa ? b += 1 : (a += 1, b = 1), {
                            row: a,
                            col: b
                        }
                    },
                    KYa: function(a, b) {
                        var c, d, e, f;
                        b.suspendPaint(), c = B, d = B;
                        for (f in this.AYa.data) this.AYa.data.hasOwnProperty(f) && (e = this.JYa(c, d), c = e.row, d = e.col, this.Bba(c, d, f, b));
                        b.resumePaint()
                    },
                    XZa: function(a, b, c, d) {
                        var e, f;
                        a.suspendPaint(), this.YZa && (e = a.getStyle(this.YZa.row, this.YZa.col, 3), e.backColor = "#ffffff", e.borderLeft = new m.LineBorder(ta, m.LineStyle.empty), e.borderTop = new m.LineBorder(ta, m.LineStyle.empty), e.borderRight = new m.LineBorder(ta, m.LineStyle.empty), e.borderBottom = new m.LineBorder(ta, m.LineStyle.empty), a.setStyle(this.YZa.row, this.YZa.col, e, 3)), this.YZa = {
                            row: b,
                            col: c
                        }, f = a.getStyle(b, c, 3), f.backColor = d, f.borderLeft = new m.LineBorder(ta, m.LineStyle.thin), f.borderTop = new m.LineBorder(ta, m.LineStyle.thin), f.borderRight = new m.LineBorder(ta, m.LineStyle.thin), f.borderBottom = new m.LineBorder(ta, m.LineStyle.thin), a.setStyle(b, c, f, 3), a.resumePaint()
                    },
                    GYa: function(a, b) {
                        var c = new m.Workbook(a),
                            d = c.getActiveSheet();
                        this.CYa = c, this.DYa = d, this.HYa(c, d, b), this.AYa.colorNumber < this.zYa ? this.IYa(c, d) : this.KYa(c, d)
                    },
                    EYa: function() {
                        var a, b, c, d, e, f, g = y(C("div")).addClass("gc-popup ui-widget " + oa + " " + M + " " + L);
                        return g.css({
                            backgroundColor: "#f0f0f0"
                        }), a = this.LYa(), g.append(a), b = this.MYa(), g.append(b), c = y(C("div")).css([Ba], ["0 12px"]), d = this.NYa(), d !== B && c.append(d), e = this.OYa(), c.append(e), f = this.PYa(), c.append(f), g.append(c), g.append(this.QYa()), g
                    },
                    LYa: function() {
                        var a = y(C("div")),
                            b = y(C("span")),
                            c = y(C("span")).attr("id", this.nYa);
                        return a.css([za, Aa, "backgroundColor", Ba, xa], ["100%", "34px", "#fff", "0 0 0 12px", "border-box"]), b.css(["float", Aa, "lineHeight", wa], [G, "34px", "34px", "inline-block"]).html(Ya().ColorTitle), c.css(["float", Aa, "lineHeight", wa, Qa, za, "textAlign"], ["right", "34px", "34px", "inline-block", "18px", "36px", "center"]).html("×").addClass("gc-filter-dialog-close"), a.append(b), a.append(c), a
                    },
                    MYa: function() {
                        var a = y(C("div")),
                            b = y(C("div")),
                            c;
                        return 0 === this.Xba && this.EXa === da ? c = Ya().SortCell : 0 === this.Xba && this.EXa === ea ? c = Ya().FilterCell : 1 === this.Xba && this.EXa === da ? c = Ya().SortFont : 1 === this.Xba && this.EXa === ea && (c = Ya().FilterFont), a.css(Ba, "0 12px"), b.css([Aa, "lineHeight"], ["24px", "24px"]).html(c), a.append(b), a
                    },
                    NYa: function() {
                        var a, b, c, d = B;
                        return this.AYa[fa] !== B && (a = "" === this.BYa, b = 1 === this.Xba ? Ya().Automatic : Ya().NoFill, c = y(C("div")).html(b), c.attr("id", "gc-color-dialog-noFill"), a ? (c.attr("data-checked", "checked"), c.css(["backgroundColor", Ba, Ca, "textAlign", "margin"], ["rgb(134,191,160)", "0 12px", "thin solid rgb(160,160,160)", "center", "5px 0"])) : c.css(["backgroundColor", Ba, Ca, "textAlign", "margin"], ["transparent", "0 12px", "thin solid rgb(160,160,160)", "center", "5px 0"]), d = c), d
                    },
                    OYa: function() {
                        var a = y(C("div")).attr("id", "color-spread-wrap");
                        return a.css(["backgroundColor", Ba, Ca, za], ["#fff", "6px", "1px solid rgb(160,160,160)", "288px"]), a
                    },
                    PYa: function() {
                        var a, b = y(C("div")),
                            c = y(C("div")).html(Ya().Selected),
                            d = y(C("div")).attr("id", "gc-color-dialog-selected");
                        return b.css([N, Ba, xa, Ma, Aa], [J, "0 12px", "content-box", "12px 0", "16px"]), c.css([I, za, "text-align"], [G, "60px", "center"]), a = 1 === this.Xba ? ua : va, "" !== this.BYa && (a = this.BYa), d.css([N, G, "right", Aa, Na, Ca, "backgroundColor"], ["absolute", "70px", "0", "16px", "10px", "thin solid rgb(160,160,160)", a]), b.append(c), b.append(d), b
                    },
                    pYa: function() {
                        var a, b = y("#gc-color-dialog-noFill");
                        return a = 1 === b.length && "checked" === b.attr("data-checked") ? "" : y("#gc-color-dialog-selected").css("backgroundColor"), this.RYa(a), !0
                    },
                    RYa: function(a) {
                        var b = 0 === this.Xba;
                        this.EXa === da ? this.SYa(a, b) : this.EXa === ea && this.TYa(a, b)
                    },
                    SYa: function(a, b, c) {
                        var d, e, f = this,
                            g = f.HXa,
                            h = g.rowFilter,
                            i = f.kj;
                        h && i && i.hK() && ("" !== a && (a = Za(a)), c = c !== B && c, d = g.col, e = {
                            sheet: i,
                            sheetName: i.Cj,
                            col: d,
                            ascending: c,
                            color: a,
                            isBackColor: b,
                            cancel: !1
                        }, i.Wq(z.RangeSorting, e), e.cancel === !1 && (i.suspendPaint(), h.sortColumnByColor(d, c, a, b), i.resumePaint(), i.Wq(z.RangeSorted, e)))
                    },
                    TYa: function(a, b) {
                        var c = new o.Condition(3),
                            d = b ? 0 : 1;
                        c.compareType(d), c.expected(a), this.PXa(c)
                    },
                    LXa: function(a, b) {
                        var c = this;
                        y("#gc-color-dialog-noFill").bind(Da, function() {
                            var a = 1 === c.Xba ? ua : va;
                            y("#gc-color-dialog-selected").css("backgroundColor", a), y(this).css("backgroundColor", "rgb(134,191,160)"), y(this).attr("data-checked", "checked")
                        }), a.bind(m.Events.ButtonClicked, function(a, d) {
                            var e, f = d.row,
                                g = d.col,
                                h = b.getCellType(f, g);
                            c.XZa(b, f, g, c.VZa), e = h.buttonBackColor(), y("#gc-color-dialog-selected").css("backgroundColor", e), y("#gc-color-dialog-noFill").css("backgroundColor", "transparent"), y("#gc-color-dialog-noFill").attr("data-checked", "")
                        })
                    },
                    QYa: function() {
                        var a = y(C("div")),
                            b = y(C("input")).attr({
                                type: "button",
                                value: Ya().OK,
                                id: this.lYa
                            }),
                            c = y(C("input")).attr({
                                type: "button",
                                value: Ya().Cancel,
                                id: this.mYa
                            }).addClass("gc-filter-dialog-close"),
                            d = {
                                width: "75px",
                                height: "23px",
                                lineHeight: "21px",
                                fontSize: "12px",
                                backgroundColor: "#E1E1E1",
                                border: "1px solid #c2c2c2",
                                padding: "0",
                                display: "inline-block",
                                margin: "0"
                            };
                        return a.addClass("color-custom-footer").css({
                            textAlign: "right",
                            padding: "10px 12px 12px"
                        }), b.css(d).css({
                            marginRight: "12px"
                        }), c.css(d), a.append(b[0]), a.append(c[0]), a
                    }
                };
                return y.extend(b.prototype, c), b
            }(i), l = function(a) {
                y.inherit(b, a);

                function b(b, c, d, e, f, g, h, i, j) {
                    var k = this;
                    k.Vo = 840, k._v = 260, k.HXa = d, k.xr = k.HXa.rowFilter, k.EXa = e, k.UYa = g, k.fY = f, k.VYa = h, k.WYa = j, k.XYa = i, k.YYa(g), a.call(this, b, c, d, e)
                }
                var c = {
                    yl: function() {
                        var a = this,
                            b = a.ZYa(this.sYa);
                        a.xo.append(b), y(".gc-popup", this.xo[0]).css([Ka, za, Aa, Qa], [La, this.Vo, this._v, "12px"]), a.LXa()
                    },
                    LXa: function() {
                        var a = this;
                        y(".filter-custom-select-input").bind("change", function() {
                            y(this).parent().find("input").val(y(this).val()).attr("gc-data", y(this).val())
                        }), y("#first-condition-expected input, #sec-condition-expected input").bind("change", function() {
                            var b = y(this).val();
                            x(b, a.fY) === -1 && y(this).attr("gc-data", b)
                        })
                    },
                    pYa: function() {
                        var a = this,
                            b = y("#first-condition-type").val().trim(),
                            c = y("#first-condition-expected input").attr("gc-data"),
                            d = y("#sec-condition-type").val().trim(),
                            e = y("#sec-condition-expected input").attr("gc-data"),
                            f = parseInt(y("#filter-logical-wrap input:checked").val(), 10),
                            g = a.$Ya(b, c, d, e, f),
                            h = !1;
                        return g ? (a.PXa(g), h = !0) : y("#first-condition-type").focus(), h
                    },
                    $V: function(a, b, c) {
                        var d = new o.Condition(a);
                        return this._Za(c) && d.conType(2), d.compareType(b), "string" === u(c) && (c = w(c)), d.expected(c), d.treatNullValueAsZero(!1), d.ignoreCase(!0), "string" === u(c) && c.indexOf("*") === -1 && c.indexOf("?") === -1 && d.useWildCards(!1), d
                    },
                    $Ya: function(a, b, c, d, e) {
                        var f, g, h, i, j, k, l;
                        if (a !== B && "" !== a) return a.indexOf("-") > -1 && (i = parseInt(a.split("-")[0], 10), f = parseInt(a.split("-")[1], 10)), h = this.$V(f, i, b), c && (c.indexOf("-") > -1 && (j = parseInt(c.split("-")[0], 10), g = parseInt(c.split("-")[1], 10)), 1 === g && (d = parseInt(d, 10)), k = this.$V(g, j, d), l = new o.Condition(0), l.compareType(e), l.item1(h), l.item2(k)), k || (l = h), l
                    },
                    ZZa: function() {
                        var a = this.HXa,
                            b = a.rowFilter,
                            c = this.kj.getText(a.row, a.col);
                        return b && b.range.row <= 0 && (c = this.kj.getText(a.row, a.col, a.sheetArea)), c
                    },
                    ZYa: function(a) {
                        var b, c, d, e, f, g = this.ZZa(),
                            h = y(C("div")).addClass("gc-popup ui-widget " + M);
                        return h.css({
                            backgroundColor: "#f0f0f0"
                        }), h.append(this._Ya()), h.append(this.aZa(g)), b = this.bZa("first-condition-type", "first-condition-expected", a.compareType1 || 0, a.expected1, a.conType1), h.append(b), h.append(this.cZa(a.logic)), c = this.bZa("sec-condition-type", "sec-condition-expected", a.compareType2, a.expected2, a.conType2), h.append(c), c.css([N, Ba], [J, "0 0 12px 35px"]), d = y(C("div")), e = y(C("p")).html(Ya().Explain1).css({
                            margin: "0"
                        }), f = y(C("p")).html(Ya().Explain2).css({
                            margin: "0"
                        }), d.append(e), d.append(f), d.css({
                            fontSize: "10px",
                            textIndent: "12px"
                        }), h.append(d), h.append(this.dZa()), h
                    },
                    bZa: function(a, b, c, d, e) {
                        var f = y(C("div"));
                        return f.css([N, Ba], [J, "0 0 12px 35px"]), f.append(this.eZa(c, e).attr("id", a)), f.append(this.fZa(this.fY, d).attr("id", b)), f
                    },
                    _Ya: function() {
                        var a = y(C("div")),
                            b = y(C("span")),
                            c = y(C("span")).attr("id", this.nYa);
                        return a.css([za, Aa, "backgroundColor", Ba, xa], ["100%", "34px", "#fff", "0 0 0 12px", "border-box"]), b.css(["float", Aa, "lineHeight", wa], [G, "34px", "34px", "inline-block"]).html(Ya().CustomTitle), c.css(["float", Aa, "lineHeight", wa, Qa, za, "textAlign"], ["right", "34px", "34px", "inline-block", "18px", "36px", "center"]).html("×").addClass("gc-filter-dialog-close"), a.append(b), a.append(c), a
                    },
                    cZa: function(a) {
                        var b = y(C("div")),
                            c = y(C("input")).attr({
                                name: "filter-logical",
                                id: "filter-dialog-and",
                                type: "radio"
                            }).val(1).css([za, wa], ["unset", "inline-block"]),
                            d = y(C("input")).attr({
                                name: "filter-logical",
                                id: "filter-dialog-or",
                                type: "radio"
                            }).val(0).css([za, wa], ["unset", "inline-block"]),
                            e = y(C("label")).attr({
                                for :"filter-dialog-and"
                            }).html(Ya().And).css([Pa, "font-weight", Qa, wa, "margin-bottom", Ba], ["10px", "inherit", "13px", "inline-block", "0", "0"]),
                            f = y(C("label")).attr({
                                for :"filter-dialog-or"
                            }).html(Ya().Or).css([Pa, "font-weight", Qa, wa, "margin-bottom", Ba], ["10px", "inherit", "13px", "inline-block", "0", "0"]);
                        return b.attr("id", "filter-logical-wrap"), b.css({
                            padding: "0 0 0 40px",
                            height: "30px"
                        }), 0 === a ? (d.prop("checked", !0), c.prop("checked", !1)) : (d.prop("checked", !1), c.prop("checked", !0)), b.append(c), b.append(e), b.append(d), b.append(f), b
                    },
                    aZa: function(a) {
                        var b, c, d, e = y(C("div")),
                            f = y(C("div")).html(Ya().ShowRows);
                        return e.css(Ba, "0 12px"), f.css([Aa, "lineHeight"], ["24px", "24px"]), e.append(f), b = y(C("div")), c = y(C("div")), a ? (d = y(C("div")).html(v(a)), d.css([I, "maxWidth", "textOverflow", "whiteSpace", "overflow"], [G, "300px", "ellipsis", "nowrap", "hidden"]), b.css({
                            height: "24px",
                            lineHeight: "24px",
                            marginLeft: "15px",
                            fontSize: "10px"
                        }), c.css({
                            overflow: "hidden",
                            margin: "0 5px",
                            height: "12px",
                            borderBottom: "1px solid #e0e0e0",
                            borderWidth: "thin"
                        }), b.append(d)) : (b.css({
                            height: "12px",
                            lineHeight: "2px",
                            marginLeft: "15px",
                            fontSize: "10px"
                        }), c.css({
                            margin: "0 5px",
                            height: "2px",
                            borderBottom: "1px solid #e0e0e0",
                            borderWidth: "thin"
                        })), b.append(c), e.append(b), e
                    },
                    eZa: function(a, b) {
                        var c, d, e, f, g, h, i, j = [];
                        for (j = 6 === this.VYa || 5 === this.VYa ? Xa : 1 === this.VYa ? Va : Wa, c = y(C("select")), d = {
                            height: "25px",
                            width: "230px",
                            marginBottom: 0,
                            marginRight: "12px",
                            fontSize: "inherit",
                            padding: 0,
                            boxSizing: "border-box"
                        }, c.css(d), e = "<option>&nbsp;</option>", h = !1, a === B && (e = '<option selected="selected" >&nbsp;</option>'), i = 0; i < j.length; i++) f = j[i].split("-"), g = !1, f[2] && (h = !1, (b === parseInt(f[2], 10) || 6 === this.WYa && 5 === parseInt(f[2], 10) || 11 === parseInt(f[2], 10)) && (h = !0), h && a === parseInt(f[1], 10) && (g = !0)), e += g ? '<option selected="selected" value="' + f[1] + "-" + f[2] + '">' + Ya()[f[0]] + "</option>" : '<option value="' + f[1] + "-" + f[2] + '">' + Ya()[f[0]] + "</option>";
                        return c[0].innerHTML = e, y("option", c[0]).css({
                            height: "20px"
                        }), c
                    },
                    o$a: function(a) {
                        var b = v(a);
                        return b.length > 100 && (b = b.substr(0, 100) + "..."), b
                    },
                    fZa: function(a, b) {
                        var c, d, e, f = y(C("div")),
                            g = y(C("select")).addClass("filter-custom-select-input"),
                            h = y(C("input")).val(b).attr("gc-data", b),
                            i = Ya().Blanks,
                            j = {
                                height: "25px",
                                width: "540px",
                                margin: 0,
                                padding: 0
                            };
                        for (f.css([N, G, "top"], ["absolute", "278px", "0"]), h.css([N, G, H, za, "textIndent", Ca, Aa, xa, "outline", Ba, Ma], ["absolute", "2px", "2px", "520px", "5px", 0, "21px", "border-box", ya, 0, 0]), g.css(j), c = "", d = 0; d < a.length; d++) a[d].text === i && a[d].value === A || (e = this.o$a(a[d].text), c += '<option value="' + a[d].text + '">' + e + "</option>");
                        return g[0].innerHTML = c, g[0].selectedIndex = -1, f.append(g), f.append(h), f
                    },
                    dZa: function() {
                        var a = y(C("div")),
                            b = y(C("input")).attr({
                                type: "button",
                                value: Ya().OK,
                                id: this.lYa
                            }),
                            c = y(C("input")).attr({
                                type: "button",
                                value: Ya().Cancel,
                                id: this.mYa
                            }).addClass("gc-filter-dialog-close"),
                            d = {
                                width: "75px",
                                height: "23px",
                                lineHeight: "21px",
                                fontSize: "12px",
                                backgroundColor: "#E1E1E1",
                                border: "1px solid #c2c2c2",
                                padding: 0,
                                display: "inline-block"
                            };
                        return a.addClass("custom-footer").css({
                            textAlign: "right",
                            padding: "10px 12px 12px"
                        }), b.css(d).css({
                            marginRight: "12px"
                        }), c.css(d), a.append(b[0]), a.append(c[0]), a
                    },
                    YYa: function(a) {
                        var b = this,
                            c = b.xr.rZ[b.HXa.col],
                            d = {
                                conType1: 2,
                                conType2: B,
                                compareType1: 0,
                                compareType2: B,
                                expected1: B,
                                expected2: B,
                                logic: 1
                            };
                        c = c && c.length ? c[0] : A, b.sYa = b.gZa(d, a, c)
                    },
                    TZa: function(a, b) {
                        var c, d, e = s.q4(s.culture()).DateTimeFormat,
                            f = {},
                            g = a.expectTypeId();
                        if (0 === g) f = a.getExConditionDateScope(a.expected());
                        else if (6 === g) c = new Date, d = new Date, c.setMonth(0, 1), c.setHours(0, 0, 0, 0), d.setHours(23, 59, 59, 59), f = {
                            from: c,
                            to: d
                        };
                        else if (3 === g) return b.conType1 = this.WYa, b.compareType1 = this.XYa, b.expected1 = B, b;
                        return b.conType1 = 5, b.conType2 = 5, b.compareType1 = 5, b.compareType2 = 2, b.expected1 = t.Vb(f.from, e.shortDatePattern), b.expected2 = t.Vb(f.to, e.shortDatePattern), b
                    },
                    gZa: function(a, b, c) {
                        var d, e, f, g = c && (c.conType() === this.VYa || 11 === c.conType() && (1 === this.VYa || 2 === this.VYa)),
                            h = c && (c.compareType() === this.XYa || 0 === c.conType());
                        return !c || 1 !== b || 6 !== c.conType() || 0 !== c.expectTypeId() && 6 !== c.expectTypeId() && 3 !== c.expectTypeId() ? (d = !0, 1 === this.WYa && c && 0 === c.conType() && (e = c.item1().compareType(), f = c.item2().compareType(), 5 === Math.max(e, f) && 3 === Math.min(e, f) || (d = !1)), 1 === b || g && h && d ? c && 0 === c.conType() ? (this.VYa = this.WYa, a.conType1 = c.item1().conType(), a.conType2 = c.item2().conType(), a.compareType1 = c.item1().compareType(), a.compareType2 = c.item2().compareType(), a.expected1 = c.item1().expected(), a.expected2 = c.item2().expected(), a.logic = c.compareType()) : c && 0 !== c.conType() && 3 !== c.conType() && (a.conType1 = c.conType(), a.expected1 = c.expected(), a.compareType1 = c.compareType()) : 0 === this.VYa ? (this.VYa = this.WYa, 1 === this.WYa ? (a.conType1 = 1, a.conType2 = 1, a.compareType1 = 3, a.compareType2 = 5) : 5 === this.WYa && (a.conType1 = 5, a.compareType1 = 5, a.conType2 = 5, a.compareType2 = 3)) : 1 === this.VYa && this.a$a(c) ? (a.conType1 = this.WYa, a.compareType1 = this.XYa, a.expected1 = c.expected()) : (a.conType1 = this.WYa, a.compareType1 = this.XYa, a.expected1 = B), a) : this.TZa(c, a)
                    },
                    _Za: function(a) {
                        return a !== B && "TRUE" === a || "FALSE" === a
                    },
                    a$a: function(a) {
                        if (!a) return !1;
                        var b = !1,
                            c = a.expected();
                        return 1 === a.conType() && this._Za(c) && (b = !0), b
                    }
                };
                return y.extend(b.prototype, c), b
            }(i), a.exports = r
        }()
}, function(a, b) {
    a.exports = GC.Spread.Sheets.ConditionalFormatting
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {}
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j = c(87),
                k = c(26),
                l = c(130),
                m = c(127),
                n = c(125),
                o = null,
                p = void 0,
                q = m.$V,
                r = j.kf,
                s = k.j.Fa,
                t = parseInt,
                u = k.k,
                v = u.Cb,
                w = u.Bb,
                x = u.Fb,
                y = u.ac,
                z = "mousedown.filter",
                A = "HideRowFilter",
                B = j.GC$,
                C = B.each,
                D = n.eY,
                E = function() {
                    return k.C(n.SR)()
                };

            function F(a, b, c, d) {
                var e, f;
                for (f = 0; f < y(a); f++) if (e = a[f], e && e.row === b && e.col === c && e.sheetArea === d) return e;
                return o
            }
            b = {
                rowFilter: function(a) {
                    var b = this,
                        c = b.xr,
                        d = b.filterRowsVisibleInfo;
                    return y(arguments) ? (b.ITa.gVa(c, 0), c && c.reset(), c = b.xr = a, c ? b.xr.kj = b : d && d.hZ(), b.$p(), b) : c
                },
                iZ: function() {
                    var a, b, c, d, e, f, g, h, i, j, k = this,
                        l = [],
                        m = k.rowFilter(),
                        n = m && m.range,
                        o = k.tables;
                    if (n && (d = n.row, e = n.col, g = e < 0 ? I(k) : e + n.colCount, b = e < 0 ? 0 : e, d < 1 ? (a = J(k, 1) - 1, f = 1) : (a = d - 1, f = 3), a >= 0)) for (; b < g;) m.filterButtonVisible(b) ? (h = k.getSpans(r(a, b, 1, 1), f), c = new D(m), c.sheetArea = f, c.row = a, y(h) ? (i = h[0], c.row = i.row, c.col = i.col, b += i.colCount) : (c.col = b, b++), l.push(c)) : b++;
                    return o && (j = o.all(), C(j, function(d, e) {
                        if (a = e.headerIndex(), e && e.showHeader() && a >= 0) {
                            var f = e.range(),
                                g;
                            for (g = 0; g < f.colCount; g++) b = f.col + g, e.filterButtonVisible(g) && (c = new D(e.rowFilter(), a, b, 3), l.push(c))
                        }
                    })), l
                },
                jZ: function() {
                    var a = this,
                        b = a.kZ;
                    return !b && n && (b = a.kZ = a.iZ()), b
                },
                Ps: function(a, b) {
                    var c = this.filterRowsVisibleInfo;
                    return s(b) && (b = 3), !(3 !== b && 2 !== b || !c || c.lZ(a))
                },
                Nu: function() {
                    return this.filterRowsVisibleInfo.mZ()
                },
                oK: function(a, b) {
                    var c = this,
                        d = c.zoom(),
                        e = c.parent,
                        f = d > 1 ? 1 : d,
                        g = 3 === b || b === p ? c.defaults.rowHeight : c.defaults.colHeaderRowHeight,
                        h = t("" + Math.min(20, g) * f);
                    return e && e.options.useTouchLayout && (h = t("" + g * d)), {
                        x: a.x + a.width - h,
                        y: a.y + a.height - h,
                        width: h,
                        height: h
                    }
                }
            }, B.extend(j.Worksheet.prototype, b), n.FilterActionType = {
                filter: 0,
                unfilter: 1
            };

            function G(a, b) {
                var c = K(a),
                    d = a.compareType();
                2 === c || 7 === c ? v(b, "T") === -1 && b.push("T") : 3 === c ? 0 === d && v(b, "BC") === -1 ? b.push("BC") : 1 === d && v(b, "FC") === -1 && b.push("FC") : v(b, "V") === -1 && b.push("V")
            }
            function H(a) {
                var b, c, d, e, f = [];
                for (b = 0; b < y(a); b++) c = a[b], 0 === K(c) ? (d = c.item1(), e = c.item2(), d && G(d, f), e && G(e, f)) : G(c, f);
                return f
            }
            function I(a) {
                return a.getColumnCount()
            }
            function J(a, b) {
                return a.getRowCount(b)
            }
            function K(a) {
                return a.conType()
            }
            d = {
                sortByValue: !0,
                sortByColor: !0,
                filterByColor: !0,
                filterByValue: !0,
                listFilterArea: !0
            }, e = function() {
                function a(a) {
                    var b = this;
                    b.range = a, b.reset(), b.typeName = "", b.filterHandler = o
                }
                return a.prototype = {
                    filterButtonVisible: function(a, b) {
                        var c = this,
                            d = c.kj,
                            e = c.range,
                            f = c.oZ(e),
                            g = c.pZ(e, d),
                            h = arguments,
                            i = c.qZ,
                            j = a >= f && a < g,
                            k = y(h),
                            l = h[0],
                            m = typeof l,
                            n;
                        if (0 === k) {
                            for (n = f; n < g; n++) if (i[n] || i[n] === p) return !0;
                            return !1
                        }
                        if (1 === k) {
                            if ("number" === m) return j && i[a] === p && (i[a] = !0), i[a];
                            if ("boolean" === m) for (d.ITa.gVa(c, 3), n = f; n < g; n++) i[n] = l
                        } else 2 === k && j && (d.ITa.gVa(c, 4, a), i[a] = b);
                        return d && d.$p(), c
                    },
                    oZ: function(a) {
                        return a.row < 0 ? 0 : a.col
                    },
                    pZ: function(a, b) {
                        return a.row < 0 ? I(b) : a.col + a.colCount
                    },
                    addFilterItem: function(a, b) {
                        var c = this,
                            d = c.kj,
                            e = c.range,
                            f = c.rZ,
                            g = f[a];
                        if (s(b)) throw Error(E().Exp_FilterItemIsNull);
                        if (a < -1 || a >= I(d)) throw Error(E().Exp_InvalidColumnIndex);
                        if (e) {
                            if (d.ITa.gVa(c, 5, a), e = d.Tq(e), a < e.col || a >= e.col + e.colCount) return;
                            g || (g = []), g.push(b), f[a] = g
                        }
                    },
                    removeFilterItems: function(a, b) {
                        this.kj.ITa.gVa(this, 6, a), this.NX(a), this.unfilter(a, b)
                    },
                    NX: function(a) {
                        var b = this,
                            c = b.rZ;
                        b.sZ(a), c[a] && c.splice(a, 1, o)
                    },
                    unfilter: function(a, b) {
                        var c, d, e, f = this,
                            g = f.kj;
                        if (g) {
                            if (g.ITa.gVa(f, 2), c = [], d = f.Je, s(a)) for (e = y(d) - 1; e >= 0; e--) c.push(d[e]), f.OX(d[e]);
                            else c.push(a), f.OX(a), f.reFilter(b);
                            b || f.tZ(g, 1, c)
                        }
                    },
                    uZ: function(a) {
                        var b, c, d, e, f, g, h = this,
                            i = h.range;
                        if (h.OX(a), h.rZ[a] && i) {
                            if (b = i.col, b !== -1 && (a < b || a >= b + i.colCount)) return;
                            for (i = h.kj.Tq(i), c = i.row, d = i.rowCount, e = h.vZ(a, c, d), g = h.wZ(c, d, a, e), f = c; f < c + d; f++) h.isRowFilteredOut(f) || h.xZ(g, f, a, e);
                            h.RX(a, !0)
                        }
                    },
                    vZ: function(a, b, c) {
                        var d, e, f, g, h, i, j = this,
                            k = j.kj,
                            l = H(j.rZ[a]),
                            m = {},
                            n = y(l);
                        for (d = b; d < b + c; d++) {
                            for (h = {}, e = 0; e < n; e++) f = l[e], "T" === f ? (i = k.getText(d, a), h[f] = i ? i.trim() : i) : "BC" === f ? (g = k.getActualStyle(d, a, 3, !1, !1, !0), g && (h[f] = g.backColor)) : "FC" === f ? (g = k.getActualStyle(d, a, 3, !1, !1, !0), g && (h[f] = g.foreColor)) : "V" === f && (h[f] = k.getValue(d, a));
                            m[d] = h
                        }
                        return m
                    },
                    filter: function(a, b) {
                        var c, d, e = this,
                            f = e.kj,
                            g = e.rZ;
                        if (f) {
                            if (f.ITa.gVa(e, 7), d = [], s(a)) for (c = 0; c < y(g); c++) g[c] && (d.push(c), e.uZ(c));
                            else {
                                if (!g[a]) return;
                                d.push(a), e.uZ(a)
                            }
                            b || e.tZ(f, 0, d)
                        }
                    },
                    tZ: function(a, b, c) {
                        var d, e = this;
                        a.AR && a.AR(), d = e.SX(b, c), e.filterHandler && e.filterHandler(d), e.onFilter(d), a.$p()
                    },
                    SX: function(a, b) {
                        var c, d, e, f = this,
                            g = f.kj,
                            h = f.range,
                            i = [],
                            j = [];
                        if (h) for (c = g.Tq(h), d = c.row, e = d; e < d + c.rowCount; e++) f.isRowFilteredOut(e) ? j.push(e) : i.push(e);
                        return {
                            action: a,
                            sheet: g,
                            range: h,
                            filteredRows: i,
                            filteredOutRows: j,
                            columns: b
                        }
                    },
                    onFilter: function() {},
                    isFiltered: function(a) {
                        var b = this.Je;
                        return arguments.length ? w(b, a) : b.length > 0
                    },
                    isRowFilteredOut: function(a) {
                        var b, c, d = this,
                            e = d.range;
                        return !(!d.isFiltered() || !e) && (b = e.row, c = d.LX[a], !(b !== -1 && (a < b || a >= b + e.rowCount) || y(c) >= y(d.Je)))
                    },
                    reset: function() {
                        var a = this,
                            b = a.kj;
                        b && b.ITa.gVa(a, 8), a.unfilter(), a.rZ = [], a.Je = [], a.yZ = [], a.LX = {}, a.qZ = {}, a.zZ = o
                    },
                    Dl: function(a, b, c) {
                        var d, e, f, g = this,
                            h = !1,
                            i = g.kj,
                            j = g.range;
                        return j && (j = i.Tq(j, c), d = j.row, e = j.col, f = b >= e && b < e + j.colCount, 1 === c && a === J(i, c) - 1 && d - 1 < 0 && f ? h = !0 : 3 === c && a === d - 1 && f && (h = !0)), h
                    },
                    getFilterItems: function(a) {
                        var b = this.rZ[a];
                        return b || []
                    },
                    getFilteredItems: function() {
                        return this.yZ
                    },
                    sortColumn: function(a, b) {
                        var c, d, e, f = this,
                            g = f.kj;
                        g && (c = g.Tq(f.range), g.suspendPaint(), g.ITa.gVa(f, 1), d = {
                            index: a,
                            ascending: b
                        }, e = g.sortRange(c.row, c.col, c.rowCount, c.colCount, !0, [d]), e && (f.zZ = d, f.isFiltered(a) && f.reFilter()), g.resumePaint())
                    },
                    sortColumnByColor: function(a, b, c, d) {
                        var e, f, g, h = this,
                            i = h.kj;
                        i && (e = i.Tq(h.range), i.suspendPaint(), i.ITa.gVa(h, 1), f = {
                            index: a,
                            ascending: b,
                            color: c,
                            isBackColor: d
                        }, g = i.sortRange(e.row, e.col, e.rowCount, e.colCount, !0, [f]), g && (h.zZ = f, h.isFiltered(a) && h.reFilter()), i.resumePaint())
                    },
                    getSortState: function(a) {
                        var b = this.zZ,
                            c = 0;
                        return b && b.index === a && (c = b.ascending ? 1 : 2), c
                    },
                    reFilter: function(a) {
                        var b, c = this,
                            d = c.Je,
                            e = y(d);
                        for (c.kj.ITa.gVa(c, 13), c.LX = {}, c.yZ = [], c.Je = [], b = 0; b < e; b++) c.filter(d[b], a)
                    },
                    openFilterDialog: function() {},
                    QX: function(a, b) {
                        var c = this.LX,
                            d = c[a];
                        s(d) ? d = [b] : (w(d, b) && x(d, b), d.push(b)), c[a] = d
                    },
                    PX: function(a) {
                        var b = this.yZ;
                        w(b, a) || b.push(a)
                    },
                    OX: function(a) {
                        var b = this,
                            c = b.LX,
                            d, e;
                        if (b.range && b.isFiltered(a)) {
                            b.RX(a, !1);
                            for (d in c) d && (e = c[d], e && w(e, a) && (x(e, a), y(e) || (c[d] = p)));
                            b.sZ(a)
                        }
                    },
                    RX: function(a, b) {
                        var c = this.Je;
                        if (b) {
                            if (y(c)) {
                                if (c[y(c) - 1] === a) return;
                                x(c, a)
                            }
                            c.push(a)
                        } else x(c, a)
                    },
                    sZ: function(a) {
                        var b, c, d = this,
                            e = d.rZ,
                            f = e.length,
                            g = [],
                            h = [];
                        for (b = 0; b < f; b++) b === a ? g = g.concat(e[b]) : h = h.concat(e[b]);
                        for (c = g.length, b = 0; b < c; b++) w(h, g[b]) || x(d.yZ, g[b])
                    },
                    wZ: function(a, b, c, d) {
                        var e, f, g, h = this,
                            i = h.rZ[c],
                            j = {},
                            k = [];
                        for (e = 0; e < y(i); e++) f = i[e], 2 !== K(f) || 0 !== f.compareType() || f.forceValue2Text() || f.useWildCards() || f.ignoreCase() || f.ignoreBlank() ? k.push(f) : j[f.expected()] = f;
                        for (e = a; e < a + b; e++) g = h.isRowFilteredOut(e), j[d[e].T] !== p && (h.QX(e, c), g || h.PX(f));
                        return k
                    },
                    xZ: function(a, b, c, d) {
                        var e, f, g, h, i, j, k = this,
                            l = k.range;
                        for (e = 0; e < y(a); e++) if (f = a[e], g = f.item1(), h = f.item2(), 0 === K(f) ? (g && (i = k.AZ(g, b, c, l, d)), h && (j = k.AZ(h, b, c, l, d))) : i = k.AZ(f, b, c, l, d), f.evaluate(k.kj, b, c, i, j)) {
                            k.QX(b, c), k.PX(f);
                            break
                        }
                    },
                    AZ: function(a, b, c, d, e) {
                        var f, g, h, i = this,
                            j = o,
                            k = K(a),
                            l = a.compareType(),
                            m = e[b];
                        return 8 !== k && 10 !== k || (f = [], g = i.kj.Tq(d), h = g.col, h <= c && c < h + g.colCount && f.push(r(g.row, c, g.rowCount, 1)), a.ranges(f)), 2 === k || 7 === k ? j = m.T : 3 === k ? 0 === l ? j = m.BC : 1 === l && (j = m.FC) : j = m.V, j
                    },
                    WY: function(a, b) {
                        var c, d, e, f, g = this,
                            h = g.Je;
                        return !!y(h) && (c = -1, d = v(h, b), e = g.LX[a], f = y(e), d > 0 && (c = h[d - 1]), c > -1 ? !! f && c === e[f - 1] : !f)
                    },
                    ima: function(a, b) {
                        var c, d, e, f = this,
                            g = f.Je;
                        return !y(g) || (c = v(g, b), d = f.LX[a], e = y(d) || 0, e >= y(g) || !(c < 0 || e < y(g) - 1) && (!d || v(d, b) < 0))
                    },
                    rI: function(a, b) {
                        var c, d, e, f, g, h, i, j, k, l = this,
                            m = l.range;
                        if (m) {
                            if (c = J(l.kj) - b - 1, d = m.row, e = m.col, f = m.rowCount, g = m.colCount, d > -1 && (c = d + f - 1, a <= d ? l.BZ(r(d + b, e, f, g)) : a < d + f && l.BZ(r(d, e, f + b, g))), h = l.LX, l.isFiltered() && h) {
                                for (i = [], j = 0; j < y(h); j++) i.push(j);
                                for (i.sort(), j = 0; j < y(i); j++) k = i[j], k >= a && k <= c && (h[k + b] = h[k], h[k] = p)
                            }
                            l.reFilter()
                        }
                    },
                    tI: function(a, b) {
                        var c, d, e, f, g, h, i, j, k, l, m, n = this,
                            o = n.range;
                        if (o) {
                            if (c = o.row, d = o.col, e = o.rowCount, f = o.colCount, g = 0, h = -1, i = 0, a >= 0 && n.CZ()) {
                                for (j = 0; j < b; j++) j + a <= n.DZ() && g++;
                                n.DZ(n.DZ() + g)
                            }
                            for (d > -1 && (a <= d ? (h = d, i = f, n.BZ(r(c, d + b, e, f))) : a < d + f && (h = a, i = f - (a - d), n.BZ(r(c, d, e, f + b)))), h < 0 && (h = 0, i = I(n.kj) - b), j = h + i - 1; j >= h; j--) j >= a && (k = j + b, l = v(n.Je, j), l >= 0 && (n.Je[l] = k), m = n.rZ[j], y(m) && (x(n.rZ, j), n.rZ[k] = m));
                            n.reFilter()
                        }
                    },
                    GR: function(a, b) {
                        var c, d, e, f, g, h, i, j, k, l, m = this,
                            n = m.range;
                        if (n) {
                            if (c = 0, d = J(m.kj) + b - 1, e = n.row, f = n.col, g = n.rowCount, h = n.colCount, e > -1 && (c = e, d = e + g - 1, a <= e ? e === a + 1 || e + g <= a + b ? m.BZ(o) : e < a + b ? m.BZ(r(a, f, e + g - (a + b), h)) : m.BZ(r(e - b, f, g, h)) : a < e + g && m.BZ(r(e, f, g - Math.min(e + g - a, b), h))), i = m.LX, m.isFiltered() && i) for (j = c; j <= d; j++) j >= a && j < a + b ? i[j] = p : j >= a + b && (k = j, l = i[k], l && (i[k - b] = l, i[k] = p));
                            m.reFilter()
                        }
                    },
                    BZ: function(a) {
                        this.range = a
                    },
                    EZ: function(a) {
                        var b, c, d, e, f, g, h, i, j, k, l, m, n = this,
                            q = n.kj,
                            r = n.range;
                        if (r) if (a) {
                            if (!a.equals(r)) {
                                if (d = r.col, e = r.colCount, f = a.col, g = a.colCount, h = I(q), n.isFiltered() && !(d < 0 && f < 0)) for (d < 0 && (d = 0, e = h), f < 0 && (f = 0, g = h), b = 0; b < e; b++) c = d + b, (f > c || c >= f + g) && n.removeFilterItems(c);
                                if (i = r.row, j = r.rowCount, k = a.row, l = a.rowCount, m = J(q), n.isFiltered() && n.LX && !(i < 0 && k < 0)) for (i < 0 && (i = 0, j = m), k < 0 && (k = 0, l = m), b = 0; b < j; b++) c = i + b, (k > c || c >= k + l) && (n.LX[c] = p)
                            }
                        } else n.reset();
                        !n.CZ() || a && a.contains(-1, n.DZ()) || (n.zZ = o), n.BZ(a)
                    },
                    HR: function(a, b) {
                        var c, d, e, f, g, h, i, j, k = this,
                            l = k.range,
                            m = k.DZ(),
                            n = a + b;
                        if (l) {
                            for (a >= 0 && k.CZ() && (m >= a && m < n ? k.DZ(-1) : m >= n && k.DZ(m - b)), c = l.row, d = l.col, e = l.rowCount, d < 0 ? (d = 0, f = I(k.kj) + b) : f = l.colCount, g = d; g < d + f; g++) g >= a && (g < n ? k.removeFilterItems(g) : (h = g - b, i = v(k.Je, g), j = k.rZ[g], i >= 0 && (k.Je[i] = h), y(j) && (x(k.rZ, g), k.rZ[h] = j)));
                            d >= 0 && (a < d ? n <= d ? k.BZ(r(c, d - b, e, f)) : n <= d + f ? k.BZ(r(c, a, e, d + f - n)) : k.BZ(o) : a < d + f && (n <= d + f ? k.BZ(r(c, d, e, f - b)) : k.BZ(r(c, d, e, a - d)))), k.reFilter()
                        }
                    },
                    CZ: function() {
                        var a = this,
                            b = a.zZ;
                        return !!b && (b.index > -1 && 0 !== a.getSortState(b.index))
                    },
                    DZ: function(a) {
                        var b = this,
                            c = b.zZ,
                            d;
                        return y(arguments) ? (c ? c.index = a : b.zZ = {
                            index: a,
                            ascending: !1
                        }, d = b) : d = c ? c.index : -1, d
                    },
                    $b: function(a, b, c, d) {
                        var e, f, g, h = this,
                            i = h.range;
                        i && (e = r(a, b, c, d), h.filterButtonVisible() ? (f = i.row - 1, g = i.rowCount + 1, f < 0 && (f = -1, g = -1), e.containsRange(r(f, i.col, g, i.colCount)) && h.unfilter()) : e.containsRange(i) && h.unfilter())
                    },
                    fromJSON: function(a, b) {
                        var c, e, f, g, h, i, j, k, l, n, o, t, u, v, w, x, z;
                        if (a) {
                            if (c = this, e = a.range, f = a.filterItemMap, g = c.rZ, h = a.sortInfo, i = a.showFilterButton, j = a.filterButtonVisibleInfo, e && (c.range = r(e.row, e.col, e.rowCount, e.colCount)), a.dialogVisibleInfo && (c.Z$a = B.extend(d, a.dialogVisibleInfo)), m) for (k = 0; k < y(f); k++) for (o = f[k], t = o.conditions, l = 0; l < y(t); l++) u = t[l], u && (v = q(), w = o.index, x = g[w], v.fromJSON(u, b), x || (x = g[w] = []), x.push(v));
                            for (n = a.filteredColumns || a.filteredColMap, k = 0; k < y(n); k++) s(n[k]) || c.Je.push(n[k]);
                            if (h && h.color === p ? c.zZ = {
                                    index: h.index,
                                    ascending: h.ascending
                                } : h && h.color !== p && (c.zZ = {
                                    index: h.index,
                                    ascending: h.ascending,
                                    color: h.color,
                                    isBackColor: h.isBackColor
                                }), i !== p) if (z = c.range, j) c.qZ = j;
                            else if (z) for (k = c.oZ(z); k < c.pZ(z, c.kj); k++) c.qZ[k] = i
                        }
                    },
                    toJSON: function() {
                        var a, b, c, d, e, f, g, h, i, j, k = this,
                            l = {},
                            m = k.range,
                            n = k.qZ,
                            p = k.rZ,
                            q = k.Je,
                            r = k.zZ,
                            s = [],
                            t = 0,
                            u = k.typeName;
                        if (m && (l.range = m), u && (l.typeName = u), k.Z$a) {
                            b = {};
                            for (c in k.Z$a) k.Z$a.hasOwnProperty(c) && k.Z$a[c] === !1 && (b[c] = !1);
                            l.dialogVisibleInfo = b
                        }
                        for (a = 0; a < y(p); a++) if (d = p[a]) {
                            for (e = [], f = 0; f < y(d); f++) e.push(d[f] ? d[f].toJSON() : o);
                            s[t++] = {
                                index: a,
                                conditions: e
                            }
                        }
                        if (y(s) && (l.filterItemMap = s), y(q) && (l.filteredColumns = q), r && (l.sortInfo = r), n) {
                            l.filterButtonVisibleInfo = B.extend({}, n), g = !1;
                            for (a in n) if (n[a]) {
                                g = !0;
                                break
                            }
                            l.showFilterButton = g
                        }
                        for (h = [], j = k.kj.getRowCount(), i = 0; i < j; i++) k.isRowFilteredOut(i) && h.push(i);
                        return h.length > 0 && (l.filteredOutRows = h), l
                    },
                    TX: function(a) {
                        var b = a.options;
                        return !b.isProtected || b.protectionOptions.allowFilter
                    },
                    hitTest: function(a, b, c) {
                        var d, e, f, g, h, i, j, k, l, m, n, p, q, r, s, t, u = this.kj;
                        if (u) {
                            if (d = a.rowViewportIndex, e = a.colViewportIndex, f = a.hitTestType, g = u.it(e), 1 === f ? (h = u.ut().findY(c), i = g.findX(b), j = 1) : 3 === f && (h = u.jt(d).findY(c), i = g.findX(b), j = 3), !h || !i) return o;
                            if (k = h.row, l = i.col, m = u.getSpan(k, l, j), n = u.jZ(), m) {
                                if (p = m.row, q = m.col, k !== p + m.rowCount - 1 || l !== q + m.colCount - 1) return o;
                                k = p, l = q
                            }
                            return n && (r = F(n, k, l, j), r && (s = u.getCellRect(k, l, d, e), t = u.oK(s, j), t.x <= b && b <= t.x + t.width && t.y <= c && c <= t.y + t.height)) ? new D(r.rowFilter, r.row, r.col, r.sheetArea, t.x, t.y, t.width, t.height) : o
                        }
                    }
                }, a
            }(), n.RowFilterBase = e, f = function(a) {
                B.inherit(b, a);

                function b(b) {
                    a.call(this, b), this.typeName = A, this.Z$a = B.extend({}, d)
                }
                var c = {
                    onFilter: function(a) {
                        var b = this,
                            c = b.kj;
                        c && (b.FZ(c, a.filteredRows, a.filteredOutRows), c.au())
                    },
                    filterDialogVisibleInfo: function(a) {
                        if (0 === arguments.length) return this.Z$a || (this.Z$a = d), this.Z$a;
                        if (a) {
                            var b = {};
                            return a.sortByValue !== p && (b.sortByValue = !! a.sortByValue), a.sortByColor !== p && (b.sortByColor = !! a.sortByColor), a.filterByColor !== p && (b.filterByColor = !! a.filterByColor), a.filterByValue !== p && (b.filterByValue = !! a.filterByValue), a.listFilterArea !== p && (b.listFilterArea = !! a.listFilterArea), B.extend(this.Z$a, b), this
                        }
                    },
                    FZ: function(a, b, c) {
                        var d, e = a.filterRowsVisibleInfo;
                        e && (d = e.D4(b, c), j.X3 && a.recalcRows(d))
                    },
                    openFilterDialog: function(a) {
                        var b, c = this,
                            d = c.kj;
                        c.TX(d) && (b = new n.gZ(d.parent.xv(), d, a, c.filterDialogVisibleInfo()), d.GZ = b, b.OT())
                    }
                };
                return B.extend(b.prototype, c), b
            }(e), n.HideRowFilter = f;

            function L() {
                this.hZ()
            }
            L.prototype = {
                lZ: function(a) {
                    var b = this.rowsVisibleInfo[a];
                    return !!s(b) || b
                },
                D4: function(a, b) {
                    var c, d, e, f, g, h, i, j, k = [],
                        l = this.rowsVisibleInfo;
                    for (c = 0, d = a.length; c < d; c++) e = a[c], f = l[e], f !== p && f !== o && k.push(e), delete l[e];
                    for (g = 0, h = b.length; g < h; g++) i = b[g], j = l[i], j !== p && j !== o || k.push(i), l[i] = !1;
                    return k
                },
                hZ: function() {
                    this.rowsVisibleInfo = {}
                },
                mZ: function() {
                    return Object.keys(this.rowsVisibleInfo).length > 0
                },
                clone: function() {
                    var a = new L;
                    return a.rowsVisibleInfo = B.extend({}, this.rowsVisibleInfo), a
                }
            };

            function M(a, b, c) {
                var d = a.typeName,
                    e, g;
                d && d !== A ? (e = j.getTypeFromString(d), e && (g = new e)) : g = new f, g && (b.xr = g, g.kj = b, g.fromJSON(a, c), g.reFilter())
            }
            g = {
                init: function() {
                    var a = this;
                    a.xr = o, a.filterRowsVisibleInfo = new L, a.Wr.push({
                        Xr: function(b) {
                            return a.filterRowsVisibleInfo.lZ(b)
                        }
                    })
                },
                setHost: function(a) {
                    if (a) {
                        var b = this;
                        a.bind(z, function(a) {
                            var c = b.Vs(),
                                d = a.pageX - c.left,
                                e = a.pageY - c.top,
                                f = b.hitTest(d, e),
                                g = f.filterButtonHitInfo;
                            g && g.rowFilter.openFilterDialog(g)
                        })
                    }
                },
                onLayoutChanged: function(a) {
                    var b, c = this,
                        d = a.changeType,
                        e = a.row,
                        f = a.rowCount,
                        g = a.col,
                        h = a.colCount,
                        i = c.xr;
                    return "invalidateLayout" === d ? void(c.kZ = o) : void(i && (b = c.ITa, "addRows" === d ? b.hVa(e, f) : "deleteRows" === d ? b.iVa(e, f) : "addColumns" === d ? b.jVa(g, h) : "deleteColumns" === d ? b.kVa(g, h) : "clear" === d && i.range && b.lVa(e, g, f, h)))
                },
                dispose: function() {
                    var a = this,
                        b = a._filterDialiog;
                    B(a.Ws()).unbind(z), b && b.close()
                },
                toJson: function(a, b) {
                    var c = this.xr,
                        d = b && b.ignoreStyle;
                    c && !d && (a.rowFilter = c.toJSON())
                },
                fromJson: function(a, b, c) {
                    var d = a.rowFilter,
                        e = c && c.ignoreStyle;
                    d && n && !e && M(d, this, b)
                },
                paintCell: function(a) {
                    var b, c, d, e, f, g, h, i, k = this,
                        l = a.cell,
                        m = l.width,
                        o = l.height,
                        p = l.cellLayout,
                        q = k.vu(),
                        r = k.jZ(),
                        s = [],
                        t = a.ctx;
                    if (t.save(), t.beginPath(), t.lineWidth = 1, t.fillStyle = "#FFFFFF", t.strokeStyle = "#CCCCCC", (!p || !w(s, p)) && r && m > 0 && o > 0 && (b = F(r, l.row, l.col, a.sheetArea))) {
                        c = new D(b.rowFilter, b.row, b.col, b.sheetArea, l.x, l.y, m, o), d = k.oK(new j.Rect(c.x, c.y, c.width, c.height), c.sheetArea), e = d.width, f = d.height, g = d.x, h = d.y, i = n.gZ.zW(c.ko()), t.save(), t.rect(c.x, c.y, c.width, c.height), t.clip(), t.beginPath(), t.fillRect(g + 1, h + 1, e - 3, f - 3), t.strokeRect(g + 1 - .5, h + 2 - .5, e - 3, f - 4);
                        try {
                            q.ko(i) ? t.drawImage(q.lo(i), g, h + 1, e - 3, f - 3) : q.fo(i)
                        } catch (a) {}
                        t.beginPath(), t.restore()
                    }
                    t.restore()
                }
            }, j.Worksheet.$n("filter", g), h = {
                init: function() {
                    l.fVa(this.commandManager())
                }
            }, j.Workbook.$n("filter", h), i = j.lUa, B.extend(i.prototype, {
                gVa: function(a, b) {
                    var c, d, e, f, g = this,
                        h = g.zTa;
                    if (h) {
                        switch (h.mVa || (h.mVa = []), c = {
                            type: b,
                            rowFilter: a
                        }, b) {
                            case 0:
                                d = a ? {
                                    range: a.range,
                                    typeName: a.typeName,
                                    Je: a.Je.concat([]),
                                    yZ: a.yZ.concat([]),
                                    rZ: a.rZ.concat([]),
                                    LX: B.extend({}, a.LX),
                                    qZ: B.extend({}, a.qZ),
                                    zZ: B.extend({}, a.zZ)
                                } : o, e = g.kj.filterRowsVisibleInfo.clone(), c.HUa = {
                                    rowFilter: d,
                                    filterRowsVisibleInfo: e
                                };
                                break;
                            case 2:
                            case 7:
                                c.HUa = {
                                    Je: a.Je.concat([]),
                                    filterRowsVisibleInfo: g.kj.filterRowsVisibleInfo.clone()
                                };
                                break;
                            case 1:
                                c.HUa = a.zZ;
                                break;
                            case 3:
                                c.HUa = B.extend({}, a.qZ);
                                break;
                            case 4:
                                f = arguments[2], c.HUa = {
                                    col: f,
                                    val: a.qZ[f]
                                };
                                break;
                            case 5:
                            case 6:
                                c.HUa = {
                                    rZ: a.rZ.concat([]),
                                    filterRowsVisibleInfo: g.kj.filterRowsVisibleInfo.clone(),
                                    Je: a.Je.concat([])
                                };
                                break;
                            case 8:
                                c.HUa = {
                                    range: a.range,
                                    Je: a.Je.concat([]),
                                    yZ: a.yZ.concat([]),
                                    LX: B.extend({}, a.LX),
                                    qZ: B.extend({}, a.qZ),
                                    zZ: B.extend({}, a.zZ),
                                    filterRowsVisibleInfo: g.kj.filterRowsVisibleInfo.clone()
                                };
                                break;
                            case 9:
                            case 10:
                                c.HUa = {
                                    range: a.range,
                                    LX: B.extend({}, a.LX),
                                    Je: a.Je.concat([]),
                                    filterRowsVisibleInfo: g.kj.filterRowsVisibleInfo.clone()
                                };
                                break;
                            case 11:
                            case 12:
                                c.HUa = {
                                    range: a.range,
                                    zZ: B.extend({}, a.zZ),
                                    rZ: a.rZ.concat([]),
                                    Je: a.Je.concat([]),
                                    filterRowsVisibleInfo: g.kj.filterRowsVisibleInfo.clone()
                                };
                                break;
                            case 13:
                                c.HUa = {
                                    filteredInRowsWithColIndexs: B.extend({}, a.LX),
                                    filteredItems: a.yZ.concat([]),
                                    filteredColumns: a.Je.concat([])
                                }
                        }
                        h.mVa.push(c)
                    }
                },
                nVa: function(a) {
                    var b = a.rowFilter,
                        c = a.HUa;
                    if (b || 0 === a.type) switch (a.type) {
                        case 0:
                            c.rowFilter ? this.kj.xr = B.extend(b, c.rowFilter) : this.kj.xr = c.rowFilter, this.kj.filterRowsVisibleInfo = c.filterRowsVisibleInfo;
                            break;
                        case 1:
                            b.zZ = c;
                            break;
                        case 3:
                            b.qZ = c;
                            break;
                        case 4:
                            b.qZ[c.col] = c.val;
                            break;
                        case 5:
                        case 6:
                            b.rZ = c.rZ, b.Je = c.Je, this.kj.filterRowsVisibleInfo = c.filterRowsVisibleInfo;
                            break;
                        case 2:
                        case 7:
                            b.Je = c.Je, this.kj.filterRowsVisibleInfo = c.filterRowsVisibleInfo;
                            break;
                        case 8:
                            B.extend(b, c), this.kj.filterRowsVisibleInfo = c.filterRowsVisibleInfo;
                            break;
                        case 9:
                        case 10:
                            b.range = c.range, b.LX = c.LX, b.Je = c.Je, this.kj.filterRowsVisibleInfo = c.filterRowsVisibleInfo;
                            break;
                        case 11:
                        case 12:
                            b.range = c.range, b.zZ = c.zZ, b.rZ = c.rZ, b.Je = c.Je, this.kj.filterRowsVisibleInfo = c.filterRowsVisibleInfo;
                            break;
                        case 13:
                            b.LX = c.filteredInRowsWithColIndexs, b.yZ = c.filteredItems, b.Je = c.filteredColumns
                    }
                },
                oVa: function(a) {
                    var b, c = y(a);
                    for (b = c - 1; b >= 0; b--) this.nVa(a[b])
                },
                hVa: function(a, b) {
                    var c = this.kj.xr;
                    c && (this.gVa(c, 9), c.rI(a, b))
                },
                iVa: function(a, b) {
                    var c = this.kj.xr;
                    c && (this.gVa(c, 10), c.GR(a, b))
                },
                jVa: function(a, b) {
                    var c = this.kj.xr;
                    c && (this.gVa(c, 11), c.tI(a, b))
                },
                kVa: function(a, b) {
                    var c = this.kj.xr;
                    c && (this.gVa(c, 12), c.HR(a, b))
                },
                lVa: function(a, b, c, d) {
                    var e = this.kj.xr;
                    e && e.$b(a, b, c, d)
                }
            }), i.$n("filter", {
                undo: function(a) {
                    var b = a.mVa;
                    y(b) && this.oVa(b)
                }
            }), a.exports = n
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i = c(26),
                j = c(87),
                k = j.Events,
                l = i.j.Fa,
                m = c(127),
                n = c(128),
                o = j.Commands,
                p = o.ActionBase,
                q = j.GC$,
                r = "sortFilter",
                s = "filterTextSelectAction",
                t = "filterByCondition",
                u = "clearFilter",
                v = "contextmenuFilterForSheet",
                w = "contextmenuFilterForTable",
                x = o.h4,
                y = i.k.ac,
                z = void 0,
                A = null,
                B = function() {
                    return i.C(n.SR)()
                };

            function C(a, b) {
                var c, d;
                return a ? (d = b.tables.findByName(a), d && (c = d.rowFilter())) : c = b.rowFilter(), c
            }
            function D(a, b, c, d, e) {
                return {
                    sheet: a,
                    sheetName: a.name(),
                    table: b,
                    tableCol: c,
                    filterValues: d,
                    conditionInfo: 0 === y(d) && e ? e.toJSON() : z
                }
            }
            function E(a, b, c, d) {
                return {
                    sheet: a,
                    sheetName: a.name(),
                    col: b,
                    filterValues: c,
                    conditionInfo: 0 === y(c) && d ? d.toJSON() : z
                }
            }
            function F(a, b, c, d, e) {
                var f = c ? a - c.range().col : -1;
                c ? b.Wq(k.TableFiltering, D(b, c, f, d, e)) : b.Wq(k.RangeFiltering, E(b, a, d, e))
            }
            function G(a, b, c, d, e, f) {
                var g = d ? b - d.range().col : -1;
                a.filter(b), d ? c.Wq(k.TableFiltered, D(c, d, g, e, f)) : c.Wq(k.RangeFiltered, E(c, b, e, f))
            }
            b = function(a) {
                q.inherit(b, a);

                function b(a, b) {
                    var c = this;
                    c.kj = a, c.VQ = b, c.zZ = c.VQ.cmdOption, c.zZ.rowFilter = C(c.zZ.tableName, c.kj)
                }
                return b.prototype.execute = function() {
                    var a, b = this,
                        c = b.zZ.rowFilter,
                        d = b.zZ.colIndex,
                        e = b.zZ.isAsc,
                        f = b.zZ.color,
                        g = b.zZ.isBackColor;
                    b.kj.suspendPaint(), b.kj.ITa.startTransaction(), f !== z ? c.sortColumnByColor(d, e, f, g) : c.sortColumn(d, e), a = o.bWa(b.kj.name()), b.VQ[a] = b.kj.ITa.endTransaction(), b.kj.resumePaint()
                }, b.prototype.undo = function() {
                    var a, b = this.kj;
                    b.suspendPaint(), a = o.bWa(b.name()), b.ITa.undo(this.VQ[a]), b.resumePaint()
                }, b
            }(p), o[r] = {
                canUndo: !0,
                execute: function(a, c, d) {
                    return x(a, b, c, d)
                }
            }, d = function(a) {
                q.inherit(b, a);

                function b(a, b) {
                    var c = this;
                    c.kj = a, c.VQ = b, c.zZ = c.VQ.cmdOption
                }
                return b.prototype.execute = function() {
                    var a, b = this,
                        c = b.zZ.colIndex,
                        d = b.VQ.cmdOption.tableName,
                        e = C(d, b.kj);
                    e && (b.kj.suspendPaint(), b.kj.ITa.startTransaction(), e.removeFilterItems(c), a = o.bWa(b.kj.name()), b.VQ[a] = b.kj.ITa.endTransaction(), b.kj.resumePaint())
                }, b.prototype.undo = function() {
                    var a, b = this.kj;
                    b.suspendPaint(), a = o.bWa(b.name()), b.ITa.undo(this.VQ[a]), b.resumePaint()
                }, b
            }(p), o[u] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return x(a, d, b, c)
                }
            }, e = function(a) {
                q.inherit(b, a);

                function b(a, b) {
                    var c = this;
                    c.kj = a, c.VQ = b
                }
                return b.prototype.execute = function() {
                    var a, b, c, d, e, f = this,
                        g = f.VQ.cmdOption.colIndex,
                        h = f.VQ.cmdOption.checkedValues,
                        i = f.VQ.cmdOption.allValuesLength,
                        j = y(h),
                        k = B().Blanks,
                        l = f.VQ.cmdOption.tableName,
                        n = f.kj,
                        p = C(l, n);
                    if (p) {
                        if (l && (a = n.tables.findByName(l)), n.suspendPaint(), n.ITa.startTransaction(), F(g, n, a, h, A), p.removeFilterItems(g), j !== i) for (b = 0; b < j; b++) c = h[b], c === k && (c = ""), d = new m.Condition(2), d._ps.compareType = 0, d._ps.expected = c, d._ps.useWildCards = !1, p.addFilterItem(g, d);
                        G(p, g, n, a, h, A), e = o.bWa(n.name()), f.VQ[e] = n.ITa.endTransaction(), n.resumePaint()
                    }
                }, b.prototype.undo = function() {
                    var a, b = this.kj;
                    b.suspendPaint(), a = o.bWa(b.name()), b.ITa.undo(this.VQ[a]), b.resumePaint()
                }, b
            }(p), o[s] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return x(a, e, b, c)
                }
            }, f = function(a) {
                q.inherit(b, a);

                function b(a, b) {
                    var c = this;
                    c.kj = a, c.VQ = b
                }
                return b.prototype.execute = function() {
                    var a, b, c = this,
                        d = c.VQ.cmdOption.colIndex,
                        e = c.VQ.cmdOption.condition,
                        f = c.VQ.cmdOption.tableName,
                        g = C(f, c.kj);
                    g && (f && (a = c.kj.tables.findByName(f)), c.kj.suspendPaint(), c.kj.ITa.startTransaction(), F(d, c.kj, a, [], e), g.removeFilterItems(d), g.addFilterItem(d, e), G(g, d, c.kj, a, [], e), b = o.bWa(c.kj.name()), c.VQ[b] = c.kj.ITa.endTransaction(), c.kj.resumePaint())
                }, b.prototype.undo = function() {
                    var a, b = this.kj;
                    b.suspendPaint(), a = o.bWa(b.name()), b.ITa.undo(this.VQ[a]), b.resumePaint()
                }, b
            }(p), o[t] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return x(a, f, b, c)
                }
            }, g = function(a) {
                q.inherit(b, a);

                function b(a, b) {
                    var c = this;
                    c.kj = a, c.VQ = b
                }
                return b.prototype.execute = function() {
                    var a, b, c, d, e, f = this,
                        g = f.kj,
                        h = f.VQ.cmdOption,
                        i = h.selection,
                        k = h.activeRow,
                        m = h.activeCol,
                        n = h.expectedText;
                    g.ITa.startTransaction(), g.rowFilter() ? (b = g.rowFilter(), c = b.range, c.contains(k, m, 1, 1) ? (F(m, g, z, [n], A), a = new j.ConditionalFormatting.Condition(j.ConditionalFormatting.ConditionType.textCondition, {
                        compareType: 0,
                        expected: n
                    }), b.addFilterItem(m, a), G(b, m, g, z, [n], A)) : c.row - 1 !== k || l(b.qZ[m]) ? (g.rowFilter().unfilter(), g.rowFilter(new j.Filter.HideRowFilter(i))) : (d = g.getText(c.row, m), F(m, g, z, [n], A), a = new j.ConditionalFormatting.Condition(j.ConditionalFormatting.ConditionType.textCondition, {
                        compareType: 0,
                        expected: d
                    }), b.addFilterItem(m, a), G(b, m, g, z, [n], A))) : g.rowFilter(new j.Filter.HideRowFilter(i)), e = o.bWa(g.name()), this.VQ[e] = g.ITa.endTransaction()
                }, b.prototype.undo = function() {
                    var a, b = this.kj;
                    b.suspendPaint(), a = o.bWa(b.name()), b.ITa.undo(this.VQ[a]), b.resumePaint()
                }, b
            }(p), o[v] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return x(a, g, b, c)
                }
            }, h = function(a) {
                q.inherit(b, a);

                function b(a, b) {
                    var c = this;
                    c.kj = a, c.VQ = b
                }
                return b.prototype.execute = function() {
                    var a, b, c, d, e, f = this,
                        g = f.kj,
                        h = f.VQ.cmdOption,
                        i = h.tableName,
                        k = h.expectedText,
                        m = h.activeCol,
                        n = h.activeRow;
                    g.ITa.startTransaction(), a = C(i, g), b = g.tables.findByName(i), a && b && (c = b.range(), b.showHeader() && c.row === n && !l(a.qZ[m - c.col]) && (k = g.getText(n + 1, m)), F(m, g, z, [k], A), d = new j.ConditionalFormatting.Condition(j.ConditionalFormatting.ConditionType.textCondition, {
                        compareType: 0,
                        expected: k
                    }), a.removeFilterItems(m), a.addFilterItem(m, d), G(a, m, g, z, [k], A), e = o.bWa(g.name()), this.VQ[e] = g.ITa.endTransaction())
                }, b.prototype.undo = function() {
                    var a, b = this.kj;
                    b.suspendPaint(), a = o.bWa(b.name()), b.ITa.undo(this.VQ[a]), b.resumePaint()
                }, b
            }(p), o[w] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return x(a, h, b, c)
                }
            }, o.fVa = function(a) {
                a.register(r, o[r]), a.register(s, o[s]), a.register(t, o[t]), a.register(u, o[u]), a.register(v, o[v]), a.register(w, o[w])
            }, a.exports = o
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {
                Exp_InvalidColumnIndex: "Invalid column index.",
                SortAscending: "Sort Ascending",
                SortDescending: "Sort Descending",
                OK: "OK",
                Cancel: "Cancel",
                Search: "Search",
                CheckAll: "Check all",
                UncheckAll: "Uncheck all",
                Blanks: "(Blanks)",
                Exp_FilterItemIsNull: "FilterItem is null.",
                Show: "Show",
                ShowRows: "Show rows where:",
                And: "And",
                Or: "Or",
                SortColor: "Sort By Color",
                FilterColor: "Filter By Color",
                FilterCellTitle: "Filter By Cell Color",
                FilterFontTitle: "Filter By Font Color",
                SortCellTitle: "Sort By Cell Color",
                SortFontTitle: "Sort By Font Color",
                FontColor: "More Font Colors...",
                CellColor: "More Cell Colors...",
                NoFill: "No Fill",
                Automatic: "Automatic",
                Clear: "Clear Filter From {0}",
                TextFilter: "Text Filters",
                DateFilter: "Date Filters",
                NumberFilter: "Number Filters",
                Custom: "Custom Filter...",
                Equal: "Equals...",
                NotEqual: "Does Not Equal...",
                GreaterThan: "Greater Than...",
                GreaterOrEquals: "Greater Than Or Equal To...",
                LessThan: "Less Than...",
                LessThanOrEquals: "Less Than Or Equal To...",
                Between: "Between...",
                Top10: "Top 10...",
                AboveAverage: "Above Average",
                BelowAverage: "Below Average",
                Begin: "Begins With...",
                End: "Ends With...",
                Contain: "Contains...",
                NotContain: "Does Not Contain...",
                Before: "Before...",
                After: "After...",
                Tomorrow: "Tomorrow",
                Today: "Today",
                Yesterday: "Yesterday",
                NextWeek: "Next Week",
                ThisWeek: "This Week",
                LastWeek: "Last Week",
                NextMonth: "Next Month",
                ThisMonth: "This Month",
                LastMonth: "Last Month",
                NextQuarter: "Next Quarter",
                ThisQuarter: "This Quarter",
                LastQuarter: "Last Quarter",
                NextYear: "Next Year",
                ThisYear: "This Year",
                LastYear: "Last Year",
                YearToDate: "Year To Date",
                AllDates: "All Dates in Period",
                Top10Filter: "Top 10 Auto Filter",
                CustomTitle: "Custom AutoFilter",
                ColorTitle: "Available Cell Colors",
                top: "top",
                bottom: "bottom",
                SortCell: "Select a cell color to sort by:",
                SortFont: "Select a font color to sort by:",
                FilterCell: "Select a cell color to filter by:",
                FilterFont: "Select a font color to filter by:",
                Selected: "Selected:",
                IsEquals: "equals",
                NotEquals: "does not equal",
                IsGreaterThan: "is greater than",
                IsGreaterOrEqual: "is greater than or equal to",
                IsLess: "is less than",
                LessOrEqual: "is less than or equal to",
                IsBeginWith: "begins with",
                NotBeginWith: "does not begin with",
                IsEndWith: "ends with",
                NotEndWith: "does not end with",
                IsContain: "contains",
                NotContains: "does not contain",
                IsAfter: "is after",
                AfterOrEqual: "is after or equal to",
                IsBefore: "is before",
                BeforeOrEqual: "is before or equal to",
                Q1: "Quarter 1",
                Q2: "Quarter 2",
                Q3: "Quarter 3",
                Q4: "Quarter 4",
                Jan: "January",
                Feb: "February",
                Mar: "March",
                Apr: "April",
                May: "May",
                Jun: "June",
                Jul: "July",
                Aug: "August",
                Sep: "September",
                Oct: "October",
                Nov: "November",
                Dec: "December",
                Explain1: "Use ? to represent any single character",
                Explain2: "Use * to represent any series of characters",
                Year: "",
                Day: ""
            }
        }();
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(133);
            b.SR = {}, b.SR.en = c(136), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p = {},
                q = c(87),
                r = c(26),
                s = c(33),
                t = c(134),
                u = t && t.HideRowFilter,
                v = c(135),
                w = q.kf,
                x = q.Ul,
                y = x.Pl,
                z = x.Ol,
                A = x.bc,
                B = q.mn,
                C = q.Worksheet,
                D = q.Events,
                E = q.LineBorder,
                F = q.Style,
                G = q.GC$,
                H = G.inArray,
                I = G.each,
                J = G.isEmptyObject,
                K = r.j.Fa,
                L = r.k.Bb,
                M = v && v.CellBindingSource,
                N = v && v.qL,
                O = v && v.LL,
                P = null,
                Q = void 0,
                R = Math.min,
                S = Math.floor,
                T = JSON.stringify,
                U = JSON.parse,
                V = "name",
                W = "highlightFirstColumn",
                X = "highlightLastColumn",
                Y = "bandRows",
                Z = "bandColumns",
                $ = "autoGenerateColumns",
                _ = "headerRowStyle",
                aa = "footerRowStyle",
                ba = "wholeTableStyle",
                ca = "highlightLastColumnStyle",
                da = "highlightFirstColumnStyle",
                ea = "firstRowStripStyle",
                fa = "secondRowStripStyle",
                ga = "firstColumnStripStyle",
                ha = "secondColumnStripStyle",
                ia = "firstHeaderCellStyle",
                ja = "lastHeaderCellStyle",
                ka = "firstFooterCellStyle",
                la = "lastFooterCellStyle",
                ma = [_, aa, ba, ca, da, ea, fa, ga, ha, ia, ja, ka, la],
                na = "firstRowStripSize",
                oa = "secondRowStripSize",
                pa = "firstColumnStripSize",
                qa = "secondColumnStripSize",
                ra = ".table",
                sa = [na, oa, pa, qa],
                ta = "bold 11pt calibri",
                ua = "Column",
                va = "id",
                wa = "dataField",
                xa = "footerFormula",
                ya = "dataAreaFormula",
                za = "footerValue",
                Aa = [va, V, wa, xa, ya, za];

            function Ba() {
                return r.C(p.SR)()
            }
            function Ca(a) {
                throw Error(a)
            }
            function Da(a, b, c, d, e) {
                !d && e && (d = Qa(a, e, b, c)), s && a._u(b, c, d, e)
            }
            function Ea(a, b, c, d) {
                a.setValue(b, c, d)
            }
            function Fa(a) {
                a.suspendPaint()
            }
            function Ga(a) {
                a.resumePaint()
            }
            function Ha(a) {
                return a.Cf().ih()
            }
            function Ia(a) {
                s && a.suspendCalcService()
            }
            function Ja(a, b) {
                s && a.resumeCalcService(b)
            }
            function Ka(a) {
                return a.rowCount
            }
            function La(a) {
                return a.colCount
            }
            function Ma(a) {
                return a && !(/\d/.test(a[0]) || /[\s\+\-\*\\:%!\[\]]/.test(a) || ["C", "c", "R", "r"].indexOf(a) !== -1 || /^[A-Za-z]{1,3}(\$)?\d+$/.test(a) || /^[Rr]\d*[Cc]\d*$/.test(a) || a.length >= 255)
            }
            function Na(a) {
                var b, c, d, e;
                return !!a && (Ma(a) || Ca(Ba().Exp_TableNameInvalid), b = this, c = b.name(), d = b.tc, a !== c && (!d || (e = d.findByName(a), !e || b === e)))
            }
            function Oa(a, b, c) {
                var d = a.parent,
                    e = Ha(a);

                function f(b, d) {
                    I(b, function(b, f) {
                        var g = f.getExpression(),
                            h = s.CalcOperatorAdjustor.adjustExpressionOnRemoveTable(g, d, -1, -1, c);
                        h !== g && (f.fg(h), e.invalidName(a.yj(), f.getName()))
                    })
                }
                d ? (f(d.getCustomNames(), b), I(d.sheets, function(a, c) {
                    f(c.getCustomNames(), b)
                })) : f(a.getCustomNames(), b), e.onAfterRemoveTable(b, c)
            }
            function Pa(a, b, c, d) {
                return a.Wu.parse(a.yj(), b, c, d, !1, !1, !1)
            }
            function Qa(a, b, c, d, e) {
                return e = e === Q || e, a.Wu.unparse(a.yj(), b, c, d, !1, e)
            }
            function Ra(a) {
                return function(b, c) {
                    var d = this,
                        e = d.kj;
                    e && b !== c && e.ITa.pVa(d, a, c)
                }
            }
            C.$n("table", {
                priority: 2e3,
                init: function() {
                    var a = this;
                    a.tables = a.ITa.noa
                },
                setHost: function() {
                    var a = this;
                    a.bind(D.BeforeDragDrop + ra, function(b, c) {
                        var d, e = a,
                            f = a.tables,
                            g = Ba().Exp_DragDropChangePartOfTable,
                            h = c.fromRow,
                            i = c.fromColumn,
                            j = Ka(c),
                            k = c.columnCount,
                            l = e.mm.gA,
                            m = l.row,
                            n = l.col,
                            o = c.isDragInsert,
                            p = c.isDragCopy,
                            q = P;
                        !o || h !== -1 && i !== -1 || (i >= 0 ? (a.isDragCopy && (n <= i || n >= i + k) || !p && (n < i || n > i + k)) && (d = !1, f.HZ(-1, n, -1, 1) && (d = !0, q = Ba().Exp_DragDropShiftTableCell), d || p || !f.HZ(-1, i, -1, k) || (q = g)) : h >= 0 && i < 0 && (p && (m <= h || m >= h + j) || !p && (m < h || m > h + j)) && !p && f.HZ(h, -1, j, -1) && (q = g)), c.invalidMessage = q
                    }), a.bind(D.ResetBinding + ra, function() {
                        a.tables.IZ()
                    }), a.bind(D.InitBinding + ra, function() {
                        var b, c, d, e, f = a.tables;
                        for (f.IZ(), Ia(a), b = f.all(), c = 0, d = b.length; c < d; c++) e = b[c], e && e.JZ();
                        Ja(a)
                    })
                },
                dispose: function() {
                    this.unbind(ra)
                },
                onLayoutChanged: function(a) {
                    var b, c = this,
                        d = a.changeType,
                        e = a.row,
                        f = Ka(a),
                        g = a.col,
                        h = La(a),
                        i = c.tables;
                    "addRows" === d ? i.rI(e, f) : "addRows2" === d ? i.KZ(e, f) : "deleteRows" === d ? i.GR(e, f) : "addColumns" === d ? i.tI(g, h) : "deleteColumns" === d ? i.HR(g, h) : "clear" === d && (b = a.sheetArea, a.ignoreTable || 3 !== b && !K(b) || i.$b(e, g, f, h, a.type))
                },
                toJson: function(a, b) {
                    var c, d, e, f;

                    function g(a, b) {
                        var c, d, e, f, g, h, i, j, k, l, m, n, o = a.tables.all();
                        for (c = 0, d = o.length; c < d; c++) if (e = o[c], f = e.LZ(), g = e.dataRange(), h = g.row, i = g.col, j = h + Ka(g) - 1, k = i + La(g) - 1, f) for (l = h; l <= j; l++) for (m = i; m <= k; m++) n = e.ge(l, m), n.gt && a.qI(b, l, m, n.Qb)
                    }
                    c = this, d = c.tables, e = b && b.ignoreStyle, e || (d && (a.tables = d.toJSON()), b && b.includeBindingSource && (f = a.data, f.dataTable = f.dataTable || {}, g(c, f.dataTable)))
                },
                fromJson: function(a, b, c) {
                    var d = this,
                        e = d.tables,
                        f = a.tableManager,
                        g = b ? f && f.tables : a.tables,
                        h = c && c.ignoreStyle;
                    z(g) && !h && e && e.fromJSON(g, b)
                },
                lastNonNullRowAndCol: function() {
                    var a, b, c, d, e, f, g = this,
                        h = g.tables,
                        i = -1,
                        j = -1,
                        k = h.all();
                    if (k) for (a = 0, b = k.length; a < b; a++) c = k[a], c && (d = c.range(), e = d.row + Ka(d) - 1, f = d.col + La(d) - 1, e > i && (i = e), f > j && (j = f));
                    return {
                        lastNonNullRow: i,
                        lastNonNullCol: j
                    }
                }
            }), G.extend(q.Workbook.prototype, {
                jga: function(a) {
                    var b, c, d, e = this.sheets;
                    if (e) for (d = 0; d < e.length; d++) if (c = e[d].tables, c && (b = c.findByName(a))) return b;
                    return P
                }
            });

            function Sa(a, b, c, d, e, f, g) {
                var h, i = this;
                for (i.MZ = !g || g.showHeader === Q || g.showHeader, i.NZ = !(!g || g.showFooter === Q) && g.showFooter, i.wq = P, i.xr = P, i.tc = P, z(a) && i.name(a), i.cj = z(b) ? b : -1, i.dj = z(c) ? c : -1, i.Xj = z(d) ? d : -1, i.OZ = z(e) ? e : -1, z(f) && i.style(f), i.Nz = [], h = 0; h < i.OZ; h++) i.Nz.push(new Ta(h + 1));
                i.ZX = P
            }
            Sa.prototype = {
                range: function() {
                    var a = this;
                    return w(a.cj, a.dj, a.Xj, a.OZ)
                },
                dataRange: function() {
                    var a = this,
                        b = a.MZ ? a.cj + 1 : a.cj,
                        c = a.MZ ? a.Xj - 1 : a.Xj;
                    return a.NZ && c--, w(b, a.dj, c, a.OZ)
                },
                name: y(V, "", Ra(V), Na),
                headerIndex: function() {
                    return this.MZ ? this.cj : -1
                },
                footerIndex: function() {
                    return this.NZ ? this.cj + this.Xj - 1 : -1
                },
                showHeader: function(a) {
                    var b, c = this;
                    return 0 === arguments.length ? c.MZ : (c.MZ !== a && (b = c.kj, b && b.suspendPaint(), c.qVa(a), b && b.resumePaint()), c)
                },
                qVa: function(a) {
                    var b, c, d = this,
                        e = d.kj;
                    e && e.ITa.pVa(d, "showHeader", d.MZ), b = d.MZ = a, b ? (d.cj > 0 && (d.cj = d.cj - 1, d.Xj += 1), d.PZ()) : (c = d.cj, d.cj = d.cj + 1, d.Xj -= 1, d.QZ(c), d.RZ()), e && s && e.recalcRange(d.cj + (a ? 0 : -1), d.dj, 1, d.OZ)
                },
                showFooter: function(a) {
                    var b, c = this;
                    return 0 === arguments.length ? c.NZ : (c.NZ !== a && (b = c.kj, b && b.suspendPaint(), c.rVa(a), b && b.resumePaint()), c)
                },
                rVa: function(a) {
                    var b, c, d = this,
                        e = d.kj;
                    e && e.ITa.pVa(d, "showFooter", d.NZ), b = d.NZ = a, b ? ((!e || d.cj + d.Xj < e.getRowCount()) && (d.Xj += 1), d.SZ()) : (c = d.cj + d.Xj - 1, d.Xj -= 1, d.QZ(c)), e && s && e.recalcRange(d.cj + d.Xj + (a ? -1 : 0), d.dj, 1, d.OZ)
                },
                bandRows: y(Y, !0, Ra(Y)),
                bandColumns: y(Z, !1, Ra(Z)),
                highlightFirstColumn: y(W, !1, Ra(W)),
                highlightLastColumn: y(X, !1, Ra(X)),
                style: y("style", Q, Ra("style")),
                rowFilter: function() {
                    var a = this;
                    return !a.xr && d && (a.xr = new d(a), a.xr.EZ(a.dataRange())), a.xr
                },
                autoGenerateColumns: y($, !0, Ra($)),
                bindColumns: function(a) {
                    var b, c, d, e = this;
                    if (a) for (b = R(e.OZ, a.length), c = 0; c < b; c++) d = e.Nz[c], d || (d = new Ta(e.TZ()), e.Nz[c] = d), d.name(a[c].name()), d.dataField(a[c].dataField())
                },
                bindingPath: function(a) {
                    var b = this;
                    return 0 === arguments.length ? b.UZ : (b.UZ = a, b.JZ(), b)
                },
                getColumnName: function(a) {
                    var b, c, d = this.Nz;
                    return d && 0 <= a && a < d.length && (b = d[a]) ? (c = b.name(), c !== P && (c = A(c)), c) : P
                },
                setColumnName: function(a, b) {
                    var c, d, e, f, g = this;
                    return g.VZ(b) ? g : (c = g.Nz, c && 0 <= a && a < c.length && (d = c[a], d || (d = g.Nz[a] = new Ta(g.TZ())), e = d.name(), f = g.kj, e !== b && f && (f.ITa.sVa(d, "name", e), d.name(b)), g.MZ && f && f.setText(g.headerIndex(), g.dj + a, b), g.WZ(e, d.name())), g)
                },
                WZ: function(a, b) {
                    var c = this.ZX;
                    c && c.onColumnNameChanged(a, b)
                },
                setColumnDataField: function(a, b) {
                    var c, d, e, f = this,
                        g = f.Nz;
                    return g && 0 <= a && a < g.length && (c = g[a], c || (c = f.Nz[a] = new Ta(f.TZ())), d = f.kj, e = c.dataField(), d && b !== e && d.ITa.sVa(c, "dataField", e), c.dataField(b)), f
                },
                getColumnDataField: function(a) {
                    var b, c, d = this.Nz;
                    return d && 0 <= a && a < d.length && (b = d[a]) ? (c = b.dataField(), c !== P && (c = A(c)), c) : P
                },
                getColumnFormula: function(a) {
                    var b, c, d, e, f = this.Nz,
                        g = this.kj;
                    return f && g && 0 <= a && a < f.length && (b = f[a]) ? (c = this.footerIndex(), d = this.dj + a, e = b.footerFormula(), e && Qa(g, e, c, d, !1)) : P
                },
                setColumnFormula: function(a, b) {
                    return this.i$(a, b), this
                },
                setColumnDataFormula: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l;
                    if (s) {
                        if (c = this, d = c.Nz, d && 0 <= a && a < d.length && (e = d[a])) {
                            for (f = c.kj, Ia(f), g = a + c.dj, h = c.cj, i = c.Xj, c.showHeader() && (h++, i--), c.showFooter() && i--, j = Pa(c.kj, b, h, g), k = e.dataAreaFormula(), f && j !== k && f.ITa.sVa(e, "dataAreaFormula", k), e.dataAreaFormula(j), l = h; l < h + i; l++) Da(f, l, g, b, j);
                            Ja(f, !1)
                        }
                        return c
                    }
                },
                getColumnValue: function(a) {
                    var b, c, d = this,
                        e = d.Nz;
                    return e && 0 <= a && a < e.length && (b = e[a]) ? d.NZ && b.footerFormula() && (c = d.kj) ? c.getValue(d.footerIndex(), d.dj + a) : b.footerValue() : P
                },
                setColumnValue: function(a, b) {
                    var c, d, e = this,
                        f = e.Nz,
                        g = e.kj;
                    return f && 0 <= a && a < f.length && (c = f[a], c && (d = c.footerValue(), g && b !== d && g.ITa.sVa(c, "footerValue", d), c.footerValue(b)), e.NZ && g && Ea(g, e.footerIndex(), e.dj + a, b)), e
                },
                filterButtonVisible: function(a, b) {
                    var c, d, e, f, g = this,
                        h = g.kj,
                        i = g.rowFilter();
                    if (!(a < 0 || a >= g.OZ)) switch (c = arguments, c.length) {
                        case 0:
                            return i && i.filterButtonVisible();
                        case 1:
                            if (d = c[0], e = typeof d, "number" === e) return i && i.filterButtonVisible(d);
                            if ("boolean" === e && i) {
                                for (Fa(h), f = 0; f < g.OZ; f++) i.filterButtonVisible(f, d);
                                Ga(h)
                            }
                            return g;
                        case 2:
                            return i && i.filterButtonVisible(a, b), g
                    }
                },
                Aq: function() {
                    return !!this.ZX
                },
                Yv: function(a) {
                    var b, c = this;
                    c.tc = a, c.kj = a && a.kj, b = c.xr, b && b.kj !== a.kj && b.table(c)
                },
                Fu: function(a) {
                    var b, c, d, e, f, g, h, i, j, k = this,
                        l = k.autoGenerateColumns(),
                        m = k.xr && k.xr.qZ;
                    if (k.RZ(), b = k.kj, b && (c = k.dataRange(), l ? b.cg(c.row, c.col, Ka(c), La(c), 3, 17, !1, !0) : I(k.Nz, function(a, d) {
                            var e = d.dataField();
                            e && b.cg(c.row, c.col + a, Ka(c), 1, 3, 17, !1, !0)
                        })), l && (d = k.range(), k.$b(d.row, d.col, Ka(d), La(d))), k.wq = a, a) if (b && b.ITa.pVa(k, "range", {
                            row: k.cj,
                            col: k.dj,
                            rowCount: k.Xj,
                            colCount: k._colCounts
                        }), e = a.getRowCount(), f = a.getColumnCount(), k.MZ && e++, k.NZ && e++, k.Xj = e, l) for (k.OZ = f, k.Nz = [], g = a.rL(), h = 0; h < k.OZ; h++) i = new Ta(h + 1), k.Nz[h] = i, g && (i.name(g[h]), i.dataField(g[h]));
                    else j = [], k.Nz.forEach(function(a) {
                            var b = a.dataField();
                            b && j.push(b)
                        }), a.Nka(j);
                    k.xr && (k.xr.EZ(k.dataRange()), k.xr.qZ = m)
                },
                XZ: function(a) {
                    var b, c, d, e, f, g = this,
                        h = g.wq;
                    if (h && (b = h.rL())) for (c = g.Nz[a - g.startColumn()], d = c && c.dataField(), e = 0, f = b.length; e < f; e++) if (b[e] === d) return e;
                    return -1
                },
                ge: function(a, b) {
                    var c, d = !1,
                        e = Q,
                        f = this,
                        g = f.wq,
                        h = a - f.dataRange().row;
                    return g && h < g.getRowCount() && (c = f.XZ(b)) >= 0 && (d = !0, e = g.getValue(h, c).value), {
                        gt: d,
                        Qb: e
                    }
                },
                yq: function(a, b, c) {
                    var d, e, f, g, h, i = this,
                        j = i.wq,
                        k = a - i.dataRange().row,
                        l = !1;
                    return j && (d = i.XZ(b)) >= 0 && (f = j.getValue(k, d), e = f.value, g = i.kj, h = g && g.ITa, h && f.hasBinding && e !== c && h.Cp(a, b, {
                        Ep: e
                    }), j.setValue(k, d, c, h && h.zTa), l = !0), l
                },
                Gq: function(a, b, c) {
                    if (Va[c]) {
                        var d = new F;
                        return this.Yo(a, b, d), d
                    }
                    return P
                },
                Yo: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, C, D, E, G, H, I, J, K, L, M, N, O, P, Q = this,
                        R = Q.style();
                    if (R) {
                        if (d = Q.kj, e = Q.MZ, f = Q.NZ, g = Q.highlightLastColumn(), h = Q.highlightFirstColumn(), i = Q.headerIndex(), j = Q.footerIndex(), k = e ? a === Q.cj + 1 : a === Q.cj, l = f ? a === Q.cj + Q.Xj - 2 : a === Q.cj + Q.Xj - 1, m = b === Q.dj, n = b === Q.dj + Q.OZ - 1, o = e ? a === i : a === Q.cj, p = f ? a === j : a === Q.cj + Q.Xj - 1, q = R[ca](), r = R[da](), s = new F, i === a) t = R[ja](), n && g && t && t.Yo(s, !0, !0, !0, !0), u = R[ia](), m && h && u && u.Yo(s, !0, !0, !0, !0), v = R[_](), v && v.Yo(s, !0, m, !0, n), n && g && q && q.Yo(s, !0, !0, !1, !0), m && h && r && r.Yo(s, !0, !0, !1, !0);
                        else if (j === a) w = R[la](), n && g && w && w.Yo(s, !0, !0, !0, !0), x = R[ka](), m && h && x && x.Yo(s, !0, !0, !0, !0), y = R[aa](), y && y.Yo(s, !0, m, !0, n), n && g && q && q.Yo(s, !1, !0, !0, !0), m && h && r && r.Yo(s, !1, !0, !0, !0);
                        else {
                            if (n && g && q && q.Yo(s, o, !0, p, !0), m && h && r && r.Yo(s, o, !0, p, !0), z = e ? a - Q.cj - 1 : a - Q.cj, A = b - Q.dj, B.nn && B.sn) {
                                for (C = B.sn, D = Q.dataRange().row; C[D] === -1;) D++;
                                if (D > a) return;
                                z = C[a] - C[D]
                            } else if (d) {
                                for (E = 0, G = 0, D = Q.dataRange().row; D < a; D++) d.getRowHeight(D) > 0 && E++;
                                for (H = Q.dj; H < b; H++) d.getColumnWidth(H) > 0 && G++;
                                z = E, A = G
                            }
                            Q.bandRows() && (I = R[na](), J = I + R[oa](), J > 0 && (K = z % J, L = R[ea](), M = R[fa](), K < I && L ? (N = 0 === K, O = l || K === I - 1, L.Yo(s, N, m, O, n)) : K >= I && M && (N = K === I, O = l || K === J - 1, M.Yo(s, N, m, O, n)))), Q.bandColumns() && (I = R[pa](), J = I + R[qa](), J > 0 && (K = A % J, L = R[ga](), M = R[ha](), K < I && L ? (N = 0 === K, O = n || K === I - 1, L.Yo(s, k, N, l, O)) : K >= I && M && (N = K === I, O = n || K === J - 1, M.Yo(s, k, N, l, O))))
                        }
                        P = R[ba](), P && P.Yo(s, o, m, p, n), Q.Oka(c, s)
                    }
                },
                Oka: function(a, b) {
                    var c = a,
                        d = 20,
                        e, f, g, h;
                    K(c.backColor) && (c.backColor = b.backColor), K(c.foreColor) && (c.foreColor = b.foreColor), K(c.themeFont) && K(c.font) ? (c.themeFont = b.themeFont, c.font = b.font) : !K(c.themeFont) && K(c.font) && (c.font = b.font), K(c.borderLeft) && (e = b.borderLeft, c.borderLeft = e && e.Uo() || e, c.borderLeft && (c.borderLeft.level = d)), K(c.borderTop) && (f = b.borderTop, c.borderTop = f && f.Uo() || f, c.borderTop && (c.borderTop.level = d)), K(c.borderRight) && (g = b.borderRight, c.borderRight = g && g.Uo() || g, c.borderRight && (c.borderRight.level = d)), K(c.borderBottom) && (h = b.borderBottom, c.borderBottom = h && h.Uo() || h, c.borderBottom && (c.borderBottom.level = d)), K(c.textDecoration) && (c.textDecoration = b.textDecoration)
                },
                YZ: function(a, b) {
                    var c, d, e, f, g, h = this;
                    if ((a !== h.cj || b !== h.dj) && (c = h.kj)) {
                        if ((a < 0 || c.getRowCount() < a + h.Xj || b < 0 || c.getColumnCount() < b + h.OZ) && Ca(Ba().Exp_TableMoveOutOfRange), d = h.tc) for (e = d.all(), f = 0, g = e.length; f < g; f++) if (e[f] === h) {
                            e.splice(f, 1), h.ZZ();
                            break
                        }
                        c.moveTo(h.cj, h.dj, a, b, h.Xj, h.OZ, 3), e && f <= g && (h.$Z(a, b), e.splice(f, 0, h), h._Z())
                    }
                },
                $Z: function(a, b) {
                    var c = this,
                        d = c.kj;
                    d && d.ITa.pVa(c, "range", {
                        row: c.cj,
                        col: c.dj,
                        rowCount: c.Xj,
                        colCount: c.OZ
                    }), c.cj = a, c.dj = b, c.a$()
                },
                ZZ: function(a, b) {
                    var c, d, e, f, g, h, i, j, k = this,
                        l = k.kj;
                    if (l && s) for (c = k.Nz, d = k.footerIndex(), e = k.range(), f = k.dataRange(), K(a) && (a = 0, b = c.length); a < b; a++) if (g = c[a], h = e.col + a, g && g.footerFormula() && d >= 0 && (Da(l, d, h, P), Ea(l, d, h, P)), g && g.dataAreaFormula()) for (i = 0, j = Ka(f); i < j; i++) Da(l, f.row + i, h, P), Ea(l, f.row + i, h, P)
                },
                _Z: function() {
                    var a, b, c, d = this,
                        e = d.kj;
                    e && s && (a = d.footerIndex(), b = d.range(), c = d.dataRange(), I(d.Nz, function(d, f) {
                        var g, h, i, j = b.col + d,
                            k = f.footerFormula(),
                            l = f.dataAreaFormula();
                        if (k && a >= 0 && Da(e, a, j, P, k), l) for (g = 0, h = Ka(c); g < h; g++) i = c.row + g, Da(e, i, j, P, l)
                    }))
                },
                b$: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C = this,
                        D = C.dataRange();
                    if (!a.equals(C.range())) {
                        if (c = a.row, d = a.col, e = Ka(a), f = La(a), g = C.MZ, h = C.NZ, i = 0, j = 1, g && (i += 1), h && (i += 1), k = C.kj, k && ((e < i || f < j || c + e > k.getRowCount() || d + f > k.getColumnCount()) && Ca(Ba().Exp_TableResizeOutOfRange), c === C.cj && a.intersect(C.cj, C.dj, C.Xj, C.OZ) || Ca(Ba().Exp_TableResizeInvalidRange), k.ITa.pVa(C, "range", {
                                row: C.cj,
                                col: C.dj,
                                rowCount: C.Xj,
                                colCount: C.OZ
                            }), k.ITa.pVa(C, "columns", C.Nz.slice())), l = C.Nz, m = d, n = d + f - 1, o = C.dj, p = C.dj + C.OZ - 1, q = C.OZ, C.dj = d, C.OZ = f, m < o) {
                            for (r = 0, s = m; s < o; s++) t = new Ta(C.TZ()), l.splice(r++, 0, t);
                            g && C.PZ(0, o - m), h && C.SZ(0, o - m)
                        } else m <= p && (C.ZZ(o, m), l.splice(0, m - o));
                        if (n > p) {
                            for (s = p + 1; s <= n; s++) t = new Ta(C.TZ()), l.push(t);
                            g && C.PZ(q, n - p), h && C.SZ(q, n - p)
                        } else n >= o && (C.ZZ(n, p), l.splice(l.length - (p - n), p - n));
                        e !== C.Xj && (u = C.wq, v = C.dataRange(), w = v.row, x = Ka(v), u ? e > C.Xj ? (y = w + x, z = e - C.Xj, k && k.addRows(y, z), h || (b || C.c$(y, z), C.Xj = e, C.d$(y, z))) : k && (A = C.Xj - e, k.deleteRows(w + x - A, A)) : (h && (C.SZ(), B = C.footerIndex()), C.Xj = e, h && (C.e$(), C.QZ(B)))), C.a$(), C.f$(D, C.dataRange())
                    }
                },
                f$: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m = this,
                        n = m.ZX;
                    n && (c = a.col, d = Ka(a), e = La(a), f = b.col, g = Ka(b), h = La(b), i = a.row + d, j = c + e, k = b.row + g, l = f + h, k < i && n.onRowsRemoved(g, i - k), k > i && n.onRowsAdded(d, k - i), f > c && n.onColumnsRemoved(0, f - c), l < j && n.onColumnsRemoved(h, j - l), f < c && n.onColumnsAdded(0, c - f), l > j && n.onColumnsAdded(c + e - f, l - j))
                },
                a$: function() {
                    var a = this,
                        b = a.xr;
                    b && (b.EZ(a.dataRange()), b.reFilter())
                },
                RZ: function() {
                    var a = this.xr;
                    a && (a.unfilter(), a.reset())
                },
                VZ: function(a, b) {
                    var c, d;
                    for (a !== P && (a = A(a)), c = 0; c < this.OZ; c++) if (c !== b && (d = this.getColumnName(c), a === d)) return !0;
                    return !1
                },
                g$: function(a) {
                    var b, c, d, e = this,
                        f = e.Nz;
                    return e.MZ && f ? (b = a - e.dj, 0 <= b && b < f.length && (c = f[b]) ? (d = c.name(), K(d) || (d = A(d)), d) : P) : P
                },
                h$: function(a, b) {
                    var c, d, e, f, g, h = this,
                        i = h.Nz;
                    h.MZ && i && (c = i.length, d = a - h.dj, 0 <= d && d < c && (e = i[d], e && (f = e.name(), g = h.kj, g && b !== f && g.ITa.sVa(e, "name", f), e.name(b), h.WZ(f, e.name()))))
                },
                i$: function(a, b, c) {
                    var d, e, f = this,
                        g = f.Nz,
                        h = f.footerIndex(),
                        i = f.dj + a,
                        j = f.kj;
                    s && 0 <= a && a < g.length && (d = g[a], b && !c && j && (c = Pa(j, b, h, i), f.NZ && Da(j, h, i, b, c)), d && (e = d.footerFormula(), j && c !== e && j.ITa.sVa(d, "footerFormula", e), d.footerFormula(c)))
                },
                j$: function(a, b) {
                    var c, d, e, f, g = this,
                        h = g.Nz;
                    g.NZ && h && (c = a - g.dj, 0 <= c && c < h.length && (d = h[c], d && (e = d.footerValue(), b !== e && (f = g.kj, f && (f.ITa.sVa(d, "footerValue", e), f.ITa.Cp(g.cj + g.Xj - 1, a, {
                        Ep: d.footerValue()
                    }))), d.footerValue(b))))
                },
                TZ: function() {
                    var a, b, c, d = this.Nz,
                        e = d && d.length;
                    if (0 === e) return -1;
                    for (a = [], c = 0; c < e; c++) b = d[c], b && b.k$() && a.push(b.id());
                    if (a.sort(function(a, b) {
                            return a - b
                        }), e = a.length, e > 0) {
                        for (c = 0; c < e; c++) if (a[c] !== c + 1) return c + 1;
                        return e + 1
                    }
                    return 1
                },
                dga: function(a, b) {
                    for (var c = a, d = 2; this.VZ(c, b);) c = a + d++;
                    return c
                },
                PZ: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m = this,
                        n = m.Nz,
                        o = m.kj;
                    if (m.MZ && n && o) for (c = n.length, d = m.headerIndex(), e = m.dj, K(a) && (a = 0), K(b) && (b = c), g = R(c, a + b), i = a; i < g; i++) f = n[i], f && (j = m.tc.l$, k = H(m, j), k > -1 && j.splice(k, 1), h = o.getText(d, e + i), k > -1 && j.splice(k, 0, m), Da(o, d, e + i, P), h ? (s && o.zq(d, e + i), l = m.dga(h, i), l === h ? (o.ITa.sVa(f, "name", f.name()), f.name(h)) : o.setText(d, e + i, l)) : o.setText(d, e + i, f.name()))
                },
                SZ: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m = this,
                        n = m.Nz,
                        o = m.kj;
                    if (m.NZ && n && o) for (c = n.length, d = m.footerIndex(), e = m.dj, K(a) && (a = 0), K(b) && (b = c), g = R(c, a + b), j = a; j < g; j++) f = n[j], f && (h = o.Ima && o.Ima(d, e + j), h ? (k = f.dataAreaFormula(), h !== k && o.ITa.sVa(f, "dataAreaFormula", k), f.footerFormula(h)) : m.S3 || Da(o, d, e + j, P, f.footerFormula()), i = o.getValue(d, e + j), K(i) ? Ea(o, d, e + j, f.footerValue()) : (l = f.footerValue(), i !== l && o.ITa.sVa(f, "footerValue", l), f.footerValue(i)))
                },
                m$: function(a, b) {
                    var c, d, e, f, g, h, i = this,
                        j = i.Nz;
                    if (i.MZ && j) for (c = j.length, K(a) && (a = 0), K(b) && (b = c), e = R(c, a + b), f = a; f < e; f++) d = j[f], d && (g = d.name(), h = i.kj, h && g !== P && h.ITa.sVa(d, "name", g), d.name(P), i.WZ(g, d.name()))
                },
                n$: function(a) {
                    var b, c, d, e, f, g, h, i, j = this,
                        k = j.dataRange();
                    if (k.containsRange(a)) {
                        for (b = a.row, c = a.col, d = Ka(a), e = La(a), f = [], g = 0; g < d; g++) for (h = 0; h < e; h++) j.yq(b + g, c + h, P), f.push({
                            columnName: j.getColumnName(c + h - k.col),
                            row: b + g - k.row,
                            data: ""
                        });
                        i = j.ZX, i && i.onDataChanged(f)
                    }
                },
                o$: function(a, b) {
                    var c, d, e, f, g, h, i = this,
                        j = i.Nz;
                    if (i.NZ && j) for (K(a) && (a = 0), K(b) && (b = j.length), d = R(j.length, a + b), e = a; e < d; e++) c = j[e], c && (f = i.kj, g = c.footerFormula(), f && P !== g && f.ITa.sVa(c, "footerFormula", g), c.footerFormula(P), h = c.footerValue(), f && P !== h && f.ITa.sVa(c, "footerValue", h), c.footerValue(P))
                },
                e$: function() {
                    var a, b, c, d, e, f, g, h = this,
                        i = h.Nz;
                    if (h.NZ && i && (a = h.kj)) for (b = i.length, d = h.dj, f = h.footerIndex(), g = 0; g < b; g++) c = i[g], c && (e = d + g, Ea(a, f, e, c.footerValue()), Da(a, f, e, P, c.footerFormula()))
                },
                QZ: function(a) {
                    var b, c, d, e, f = this,
                        g = f.kj;
                    if (g && !(a < 0 || g.getRowCount() <= a)) for (b = f.dj, c = f.OZ, e = 0; e < c; e++) d = b + e, Da(g, a, d, P), Ea(g, a, d, P)
                },
                rI: function(a, b, c) {
                    var d, e, f, g = this,
                        h = !1;
                    return a >= g.cj + g.Xj ? h : (d = g.kj, d && d.ITa.pVa(g, "range", {
                        row: g.cj,
                        col: g.dj,
                        rowCount: g.Xj,
                        colCount: g.OZ
                    }), e = g.cj, f = g.cj + g.Xj - 1, a <= e ? g.cj += b : a <= f && (c || (h = g.c$(a, b)), g.Xj += b), h)
                },
                KZ: function(a, b) {
                    var c, d, e, f, g = this,
                        h = g.cj + g.Xj - 1;
                    a <= h && g.d$(a, b), c = g.ZX, d = g.dataRange(), e = d.row, f = g.endRow(), a >= e && a <= f && c && c.onRowsAdded(a - e, b), g.xr && g.xr.rI(a, b)
                },
                c$: function(a, b) {
                    var c, d, e = this,
                        f = e.cj,
                        g = e.wq;
                    return !!g && (c = this.kj, d = c && c.ITa.zTa, g.uL(a - (e.showHeader() ? f + 1 : f), b, d), !0)
                },
                d$: function(a, b) {
                    if (s) {
                        var c = this,
                            d = c.kj;
                        Ia(d), I(c.Nz, function(e, f) {
                            var g, h, i = f.dataAreaFormula();
                            if (i) for (g = e + c.dj, h = a; h < a + b; h++) Da(d, h, g, P, i)
                        }), Ja(d, !1)
                    }
                },
                tI: function(a, b) {
                    var c, d, e, f, g, h, i = this;
                    if (!(a >= i.dj + i.OZ)) {
                        if (c = i.dj, d = i.kj, d && (d.ITa.pVa(i, "range", {
                                row: i.cj,
                                col: i.dj,
                                rowCount: i.Xj,
                                colCount: i.OZ
                            }), d.ITa.pVa(i, "columns", i.Nz.slice())), a <= i.dj) i.dj += b;
                        else if (a < i.dj + i.OZ && (i.OZ += b, e = i.Nz)) for (f = 0; f < b; f++) g = new Ta(i.TZ()), e.splice(a + f - i.dj, 0, g);
                        i.xr && i.xr.tI(a, b), a >= c && (h = i.ZX, h && h.onColumnsAdded(a - c, b))
                    }
                },
                GR: function(a, b, c) {
                    var d, e, f, g, h, i, j, k, l, m = this,
                        n = !1;
                    return a >= m.cj + m.Xj ? n : (d = m.dataRange(), e = d.row, f = Ka(d), g = m.cj, h = m.cj + m.Xj - 1, i = m.kj, j = m.wq, i && (i.ITa.pVa(m, "range", {
                        row: m.cj,
                        col: m.dj,
                        rowCount: m.Xj,
                        colCount: m.OZ
                    }), k = i.ITa.zTa), a < g ? a + b <= g && (m.cj -= b) : a === g ? m.MZ || (m.Xj -= R(h - a + 1, b), !c && j && (j.wL(a - (m.showHeader() ? g + 1 : g), R(h - a + 1, b), k), n = !0)) : a <= h && (m.Xj -= R(h - a + 1, b), !c && j && (j.wL(a - (m.showHeader() ? g + 1 : g), R(h - a + 1, b), k), n = !0), a === h && m.NZ && (m.NZ = !1)), m.xr && m.xr.GR(a, b), a >= e && a < e + f && (l = m.ZX, l && l.onRowsRemoved(a - e, b)), n)
                },
                HR: function(a, b) {
                    var c, d, e, f, g, h = this,
                        i = h.Nz;
                    a >= h.dj + h.OZ || (c = h.kj, c && (c.ITa.pVa(h, "range", {
                        row: h.cj,
                        col: h.dj,
                        rowCount: h.Xj,
                        colCount: h.OZ
                    }), c.ITa.pVa(h, "columns", h.Nz.slice())), d = h.dj, e = h.dj, f = h.dj + h.OZ - 1, a < e ? a + b <= e ? h.dj -= b : (h.dj = a, h.OZ -= a + b - e, i && i.splice(0, a + b - e)) : (h.OZ -= R(f - a + 1, b), i && i.splice(a - e, R(f - a + 1, b))), h.xr && h.xr.HR(a, b), a >= d && (g = h.ZX, g && g.onColumnsRemoved(a - d, b)))
                },
                $b: function(a, b, c, d) {
                    var e, f, g, h, i, j, k, l, m, n, o, p, q = this,
                        r = c,
                        s = d,
                        t = q.kj;
                    t && (r = t.getRowCount(), s = t.getColumnCount()), e = a < 0 ? 0 : a, f = b < 0 ? 0 : b, g = a < 0 ? r : c, h = b < 0 ? s : d, i = w(e, f, g, h), j = q.headerIndex(), q.MZ && e <= j && j < e + g && (k = w(j, q.dj, 1, q.OZ), l = i.getIntersect(k, r, s), l && q.m$(l.col - q.dj, La(l))), m = q.dataRange(), n = i.getIntersect(m, r, s), n && q.n$(n), o = q.footerIndex(), q.NZ && e <= o && o < e + g && (p = w(o, q.dj, 1, q.OZ), l = i.getIntersect(p, r, s), l && q.o$(l.col - q.dj, La(l))), q.xr && q.xr.$b(a, b, c, d)
                },
                toJSON: function() {
                    var a, b, c, d, e, f, g, h = this,
                        i = h.style(),
                        j = h.xr,
                        k = "columns",
                        l = {
                            name: [h.name(), P],
                            row: [h.cj, -1],
                            col: [h.dj, -1],
                            rowCount: [h.Xj, -1],
                            colCount: [h.OZ, -1],
                            showHeader: [h.MZ, !0],
                            showFooter: [h.NZ, !1],
                            highlightFirstColumn: [h.highlightFirstColumn(), !1],
                            highlightLastColumn: [h.highlightLastColumn(), !1],
                            bandRows: [h.bandRows(), !0],
                            bandColumns: [h.bandColumns(), !1],
                            style: [i ? i.toJSON() : P, P],
                            autoGenerateColumns: [h.autoGenerateColumns(), !0],
                            bindingPath: [h.bindingPath(), Q],
                            rowFilter: [j ? j.toJSON() : P, P]
                        };
                    for (l[k] = [
                        []
                    ], a = 0; a < h.Nz.length; a++) b = h.Nz[a].toJSON(), c = b[xa], d = b[ya], c && (b[xa] = Qa(h.kj, c, h.footerIndex(), a + h.dj)), d && (b[ya] = Qa(h.kj, d, h.footerIndex(), a + h.dj)), l[k][0][a] = b;
                    l[k][1] = P, e = {};
                    for (f in l) g = l[f], g[0] !== g[1] && (e[f] = g[0]);
                    return J(e) ? Q : e
                },
                fromJSON: function(a, b) {
                    var c, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, A, B, C, D, E, F;
                    if (a) {
                        if (c = this, I([V, W, X, Y, Z, $], function(b, d) {
                                z(a[d]) && c[d](a[d], !1)
                            }), e = a.row, z(e) && (c.cj = e), f = a.col, z(f) && (c.dj = f), g = a.rowCount, z(g) && (c.Xj = g), h = a.colCount, z(h) && (c.OZ = h), i = a.showHeader, z(i) && (c.MZ = i), j = a.showFooter, z(j) && (c.NZ = j), k = a.style, k && (l = new Va, l.fromJSON(k, b), c.style(l)), m = a.dataSource, n = a.dataBinding, o = a.bindingPath, b ? (m && N && (c.wq = new N, c.wq.bind(m)), n && N && (c.wq = new N, c.wq.fromJSON(n, b))) : o && (c.UZ = o, p = c.kj, q = p && p.getDataSource && p.getDataSource(), M && q instanceof M && (r = O(q.getSource(), o), r && (c.wq = new N, c.wq.bind(r)))), s = a.columns) for (t = s, u = t.length, v = c.Nz = [], y = 0; y < u; y++) x = t[y], w = new Ta(c.TZ()), w.fromJSON(x, b), A = w.name(), B = c.dga(A, y), v.push(w), B !== A && c.setColumnName(y, B), C = w.footerFormula(), C && w.footerFormula(Pa(c.kj, C, c.footerIndex(), y + c.dj)), D = w.dataAreaFormula(), D && w.dataAreaFormula(Pa(c.kj, D, c.footerIndex(), y + c.dj));
                        E = a.rowFilter, E && (F = d && new d, F && (F.table(c), F.fromJSON(E, b), c.xr = F, c.xr.reFilter()))
                    }
                },
                startRow: function() {
                    return this.cj
                },
                startColumn: function() {
                    return this.dj
                },
                endRow: function() {
                    return this.cj + this.Xj - 1
                },
                endColumn: function() {
                    return this.dj + this.OZ - 1
                },
                hasHeadersRow: function() {
                    return this.MZ
                },
                hasTotalsRow: function() {
                    return this.NZ
                },
                tableName: function() {
                    return this.name()
                },
                getColumnIndexInTable: function(a) {
                    a = a.toLowerCase();
                    var b = -1,
                        c = r.u.Gb(a, "\r\n", "\n");
                    return K(a) || I(this.Nz, function(d, e) {
                        var f = ("" + e.name()).toLowerCase();
                        if (f === a || f === c) return b = d, !1
                    }), b
                },
                source: function() {
                    var a = this.kj;
                    return a.yj && a.yj()
                },
                JZ: function() {
                    var a, b, c, d, e, f, g, h, i, j = this,
                        k = j.kj;
                    if (k && (a = j.bindingPath(), a && (b = k.getDataSource && k.getDataSource(), M && b instanceof M && (c = O(b.getSource(), a))))) {
                        d = j.dataRange(), e = d.row, f = Ka(d), g = new N, g.bind(c, k.ITa.zTa), h = g.getRowCount();
                        try {
                            Fa(k), j.wq = P, h > f ? k.addRows(e + f, h - f) : h < f && k.deleteRows(e + h, f - h), j.Fu(g), i = s && k.Cf(), i && !i.IsSuspended() && k.recalcAll()
                        } finally {
                            Ga(k)
                        }
                    }
                },
                clone: function() {
                    var a = this,
                        b = new Sa,
                        c = T(a.toJSON());
                    return b.Yv(a.tc), b.fromJSON(U(c)), b
                },
                p$: function(a) {
                    var b = new N;
                    b.bind(a), this.wq = b
                },
                Az: function(a) {
                    if (a && !a.bindingPath()) {
                        var b = a.wq;
                        b && this.p$(b.getSource())
                    }
                },
                LZ: function() {
                    var a = this.wq;
                    return a ? a.getSource() : P
                },
                q$: function() {
                    var a = this.wq;
                    return a ? a.getRowCount() : 0
                },
                sort: function(a, b) {
                    var c = this,
                        d = c.kj,
                        e = c.dataRange(),
                        f = c.rowFilter();
                    d && 0 <= a && a < e.colCount && (d.suspendPaint(), d.sortRange(e.row, e.col, e.rowCount, e.colCount, !0, [{
                        index: a + e.col,
                        ascending: b
                    }]), f && (f.zZ = {
                        index: a + e.col,
                        ascending: b
                    }), d.resumePaint())
                }
            }, p.Table = Sa, d = function(a) {
                if (!a) return P;
                G.inherit(b, a);

                function b(b) {
                    var c = this;
                    a.call(c), c.table(b)
                }
                return G.extend(b.prototype, {
                    oZ: function() {
                        return 0
                    },
                    pZ: function() {
                        return this.range.colCount
                    },
                    table: function(a) {
                        var b = this;
                        return 0 === arguments.length ? b.sj : (b.sj = a, void(a && (b.kj = a.kj)))
                    },
                    rI: function(b, c) {
                        var d = this,
                            e = d.sj;
                        a && a.prototype.rI.call(d, b, c), e && d.BZ(e.dataRange())
                    },
                    GR: function(b, c) {
                        var d = this,
                            e = d.sj;
                        a && a.prototype.GR.call(d, b, c), e && d.BZ(e.dataRange())
                    }
                }), b
            }(u);

            function Ta(a) {
                var b = this;
                b.id(a), b.name(ua + b.id())
            }
            Ta.prototype = {
                id: y(va, Q, function(a) {
                    var b = this;
                    b.name() || b.name(ua + a)
                }),
                k$: function() {
                    return this.id() > 0
                },
                name: y(V, Q, function(a) {
                    if (!a) {
                        var b = this;
                        b.name(ua + b.id())
                    }
                }),
                dataField: y(wa),
                footerValue: y(za),
                dataAreaFormula: y(ya),
                footerFormula: y(xa),
                toJSON: function() {
                    var a = this,
                        b = {};
                    return I(Aa, function(c, d) {
                        var e = a[d]();
                        e && (b[d] = e)
                    }), J(b) ? Q : b
                },
                fromJSON: function(a) {
                    if (a) {
                        var b = this;
                        I(Aa, function(c, d) {
                            var e = a[d] !== Q ? a[d] : a["_" + d];
                            e && b[d](e, !1)
                        })
                    }
                }
            }, p.TableColumn = Ta, e = "borderLeft", f = "borderTop", g = "borderRight", h = "borderBottom", i = "borderHorizontal", j = "borderVertical", k = ["backColor", "foreColor", "font", e, f, g, h, i, j, "textDecoration"];

            function Ua(a, b, c, d, e, f, g, h, i, j) {
                var l = this,
                    m = arguments;
                I(k, function(a, b) {
                    l[b] = m[a]
                })
            }
            Ua.prototype = {
                Yo: function(a, b, c, d, l) {
                    var m = this;
                    I(k, function(k, n) {
                        n.indexOf("border") >= 0 ? (c && z(m[e]) && !z(a[e]) && (a[e] = m[e], a[e].level = 20), b && z(m[f]) && !z(a[f]) && (a[f] = m[f], a[f].level = 20), l && z(m[g]) && !z(a[g]) && (a[g] = m[g], a[g].level = 20), d && z(m[h]) && !z(a[h]) && (a[h] = m[h], a[h].level = 20), d || !z(m[i]) || z(a[h]) || (a[h] = m[i], a[h].level = 20), l || !z(m[j]) || z(a[g]) || (a[g] = m[j], a[g].level = 20)) : z(m[n]) && !z(a[n]) && (a[n] = m[n])
                    })
                },
                Uo: function() {
                    var a = new Ua,
                        b = T(this.toJSON());
                    return a.fromJSON(U(b)), a
                },
                toJSON: function() {
                    var a = this,
                        b = {};
                    return I(k, function(c, d) {
                        var e = a[d];
                        b[d] = e && e.toJSON ? e.toJSON() : e
                    }), b
                },
                fromJSON: function(a, b) {
                    if (a) {
                        var c = this;
                        I(k, function(d, e) {
                            var f, g = a[e];
                            z(g) && (e.indexOf("border") >= 0 ? (f = new E, f.fromJSON(g, b), c[e] = f) : c[e] = g)
                        })
                    }
                }
            }, p.TableStyle = Ua;

            function Va() {}
            Va.prototype = {
                name: y(V),
                builtInName: y("builtInName"),
                toJSON: function() {
                    var a, b, c = this,
                        d = c.builtInName();
                    return d ? {
                        buildInName: d
                    } : (a = {
                        name: c.name()
                    }, I(ma, function(d, e) {
                        b = c[e](), b && (a[e] = b.toJSON())
                    }), I(sa, function(d, e) {
                        b = c[e](), 1 !== b && (a[e] = b)
                    }), J(a) ? Q : a)
                },
                fromJSON: function(a, c) {
                    var d, e, f, g;

                    function h(a, b) {
                        a.name(b.name()), I(sa, function(c, d) {
                            a[d](b[d]())
                        }), I(ma, function(c, d) {
                            var e = b[d]();
                            a[d](e ? e.Uo() : P)
                        }), a.builtInName(b.builtInName(), !1)
                    }
                    if (a) {
                        if (d = this, e = a.buildInName) return void h(d, b[e.toLowerCase()]);
                        f = a.name, g = z(f) ? f : a.Cj, z(g) && d.name(g, !1), I(sa, function(b, c) {
                            var e = a[c] !== Q ? a[c] : a["_" + c];
                            e && d[c](e, !1)
                        }), I(ma, function(b, e) {
                            var f, g = a[e] !== Q ? a[e] : a["_" + e];
                            g && (f = new Ua, f.fromJSON(g, c), d[e](f, !1))
                        })
                    }
                }
            }, I(ma, function(a, b) {
                Va.prototype[b] = y(b)
            }), I(sa, function(a, b) {
                Va.prototype[b] = y(b, 1)
            }), p.TableTheme = Va, l = "white", m = "black";

            function Wa(a, b) {
                return isNaN(b) ? b : new E(a, b)
            }
            function Xa(a, b, c, d, e, f, g, h, i, j) {
                var k = new Ua;
                return b && (k.backColor = b), c && (k.foreColor = c), d && (k.font = ta), e && (k.borderLeft = Wa(a, e)), f && (k.borderTop = Wa(a, f)), g && (k.borderRight = Wa(a, g)), h && (k.borderBottom = Wa(a, h)), i && (k.borderHorizontal = Wa(a, i)), j && (k.borderVertical = Wa(a, j)), k
            }
            function Ya(a) {
                return 0 === a ? "Text 1" : "Accent " + a
            }
            function Za(a) {
                var b, c = a - 1,
                    d = P,
                    e = S(c / 7);
                return e >= 0 && e < 3 && (d = [$a, _a, ab][e](c % 7), b = "Light" + a, d.name(b), d.builtInName(b)), d
            }
            function $a(a) {
                var b = Ya(a),
                    c = b + " 80",
                    d = new Va;
                return d[_](Xa(b, 0, b, 1, 0, 0, 0, 1)), d[ba](Xa(b, 0, b, 0, 0, 1, 0, 1)), d[ea](Xa(b, c)), d[da](Xa(b, 0, b, 1)), d[ca](Xa(b, 0, b, 1)), d[ga](Xa(b, c)), d[aa](Xa(b, 0, b, 1, 0, 1)), d
            }
            function _a(a) {
                var b = Ya(a),
                    c = new Va;
                return c[_](Xa(b, b, l, 1)), c[ba](Xa(b, 0, 0, 0, 1, 1, 1, 1)), c[ea](Xa(b, 0, 0, 0, 0, 1)), c[fa](Xa(b, 0, 0, 0, 0, 1)), c[ga](Xa(b, 0, 0, 0, 1)), c[ha](Xa(b, 0, 0, 0, 1)), c[da](Xa(b, 0, 0, 1)), c[ca](Xa(b, 0, 0, 1)), c[aa](Xa(b, 0, 0, 1, 0, 6)), c
            }
            function ab(a) {
                var b = Ya(a),
                    c = b + " 80",
                    d = new Va;
                return d[_](Xa(b, 0, 0, 1, 0, 0, 0, 2)), d[ba](Xa(b, 0, 0, 0, 1, 1, 1, 1, 1, 1)), d[ea](Xa(b, c)), d[ga](Xa(b, c)), d[da](Xa(b, 0, 0, 1)), d[ca](Xa(b, 0, 0, 1)), d[aa](Xa(b, 0, 0, 1, 0, 6)), d
            }
            function bb(a) {
                var b, c = a - 1,
                    d = P,
                    e = S(c / 7);
                return e >= 0 && e < 4 && (d = [cb, db, eb, fb][e](c % 7), b = "Medium" + a, d.name(b), d.builtInName(b)), d
            }
            function cb(a) {
                var b = Ya(a),
                    c = b + " 20",
                    d = b,
                    e = b + " 80",
                    f = new Va;
                return f[_](Xa(c, d, l, 1)), f[ba](Xa(c, 0, 0, 0, 1, 1, 1, 1, 1)), f[ea](Xa(c, e)), f[ga](Xa(c, e)), f[da](Xa(c, 0, 0, 1)), f[ca](Xa(c, 0, 0, 1)), f[aa](Xa(c, 0, m, 1, 0, 6)), f
            }
            function db(a) {
                var b = Ya(a),
                    c = l,
                    d = b,
                    e = b + " 60",
                    f = b + " 80",
                    g = new Va;
                return g[_](Xa(c, d, l, 1, 0, 0, 0, 2, 0, 1)), g[ba](Xa(c, f, 0, 0, 0, 0, 0, 0, 1, 1)), g[ea](Xa(c, e)), g[ga](Xa(c, e)), g[da](Xa(c, d, l, 1)), g[ca](Xa(c, d, l, 1)), g[aa](Xa(c, d, l, 1, 0, 2, 0, 0, 0, 1)), g
            }
            function eb(a) {
                var b = Ya(a),
                    c = "#D3D3D3",
                    d = b,
                    e = c,
                    f = 0 === a ? m : c,
                    g = new Va;
                return g[_](Xa(m, d, l, 1, 0, 2, 0, 2)), g[ba](Xa(f, 0, 0, 0, 1, new E(m, 2), 1, new E(m, 2), 0 === a ? 1 : 0, 1)), g[ea](Xa(f, e)), g[ga](Xa(f, e)), g[da](Xa(f, d, l)), g[ca](Xa(f, d, l)), g[ka](Xa(f, d, l, 1)), g[la](Xa(f, d, l, 1)), g[aa](Xa(m, 0, m, 0, 0, 6)), g
            }
            function fb(a) {
                var b = Ya(a),
                    c = b,
                    d = b + " 40",
                    e = b + " 80",
                    f = b + " 60",
                    g = b + " 80",
                    h = new Va;
                return h[_](Xa(d, e, m, 1, 1, 1, 1, 1, 0, 1)), h[ba](Xa(d, e, 0, 0, 1, 1, 1, 1, 1, 1)), h[ea](Xa(d, f)), h[ga](Xa(d, f)), h[da](Xa(d, 0, 0, 1)), h[ca](Xa(d, 0, 0, 1)), h[aa](Xa(d, g, m, 1, 1, new E(c, 2), 1, 1, 0, 1)), h
            }
            function gb(a) {
                var b, c = a - 1,
                    d = P,
                    e = S(c / 7);
                return e >= 0 && e < 2 && (d = [hb, ib][e](c % 7), b = "Dark" + a, d.name(b), d.builtInName(b)), d
            }
            function hb(a) {
                var b = Ya(a),
                    c = m,
                    d = 0 === a ? b + " 25" : b + " -25",
                    e = 0 === a ? b + " 50" : b,
                    f = 0 === a ? b : b + " -50",
                    g = new Va;
                return g[_](Xa(l, c, l, 1, 0, 0, 0, 2)), g[ba](Xa(b, e, l)), g[ea](Xa(b, d)), g[ga](Xa(b, d)), g[da](Xa(l, d, l, 1, 0, 0, 2)), g[ca](Xa(l, d, l, 1, 2)), g[aa](Xa(l, f, l, 1, 0, 2)), g
            }
            function ib(a) {
                var b, c, d, e, f, g;

                function h(a) {
                    return a < 0 || a > 3 ? "" : ["Background 1 -15", "Accent 1 80", "Accent 3 80", "Accent 5 80"][a]
                }
                function i(a) {
                    return a < 0 || a > 3 ? "" : ["Background 1 -35", "Accent 1 60", "Accent 3 60", "Accent 5 60"][a]
                }
                function j(a) {
                    return a < 0 || a > 3 ? "" : ["Text 1", "Accent 2", "Accent 4", "Accent 6"][a]
                }
                return b = Ya(a), c = j(a), d = i(a), e = h(a), f = e, g = new Va, g[_](Xa(b, c, l)), g[ba](Xa(b, e)), g[ea](Xa(b, d)), g[ga](Xa(b, d)), g[da](Xa(b, 0, 0, 1)), g[ca](Xa(b, 0, 0, 1)), g[aa](Xa(m, f, 0, 1, 0, 6)), g
            }
            for (b = {}, n = 1; n <= 28; n++) n <= 21 && (b["light" + n] = Za(n)), n <= 11 && (b["dark" + n] = gb(n)), b["medium" + n] = bb(n);
            p.TableThemes = b;

            function jb(a) {
                this.kj = a, this.l$ = [], this.r$ = !1
            }
            jb.prototype = {
                add: function(a, c, d, e, f, g, h) {
                    var i = this;
                    return i.LA(i.kj, a, c, d, e, f, !0), i.Cz(new Sa(a, c, d, e, f, g || b.medium2, h))
                },
                addFromDataSource: function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l;
                    if (d || Ca(Ba().Exp_TableDataSourceNullError), N) return g = this, h = g.kj, h.suspendPaint(), i = new N, i.bind(d), j = i.getRowCount() + 1, k = i.getColumnCount(), l = g.add(a, b, c, j, k, e, f), l.Fu(i), h.clearPendingChanges(), h.resumePaint(), l
                },
                find: function(a, b) {
                    var c, d, e, f = this.l$,
                        g = f.length;
                    for (d = 0; d < g; d++) if (c = f[d], e = c.range(), e.row <= a && a < e.row + Ka(e) && e.col <= b && b < e.col + La(e)) return c;
                    return P
                },
                findByName: function(a) {
                    var b, c, d = this.l$,
                        e = d.length;
                    for (c = 0; c < e; c++) if (b = d[c], b.name().toLowerCase() === a.toLowerCase()) return b;
                    return P
                },
                s$: function(a, b, c, d) {
                    var e, f, g = this.l$,
                        h = g.length,
                        i = [];
                    for (f = 0; f < h; f++) e = g[f], e.range().intersect(a, b, c, d) && i.push(e);
                    return i
                },
                Cz: function(a) {
                    var b, c;
                    if (a) return b = this, b.findByName(a.name()) && Ca(Ba().Exp_TableHasSameNameError), c = b.kj, c.suspendPaint(), a.Yv(b), c.ITa.tVa(), b.l$.push(a), a.JZ(), a.showHeader() && a.PZ(), a.showFooter() && a.SZ(), b.t$(a), c.resumePaint(), a
                },
                vV: function(a) {
                    var b, c = this,
                        d = H(a, c.l$);
                    return d > -1 ? (b = c.kj, b && b.ITa.tVa(), c.l$.splice(d, 1), c.u$([a], !1), a) : P
                },
                remove: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l = this;
                    if ("string" == typeof a && (a = l.findByName(a)), a && (b = b || 0, a = l.vV(a))) try {
                        if (c = a.range(), d = l.kj, Fa(d), e = c.row, f = c.row + Ka(c), g = c.col, h = c.col + La(c), 1 !== (1 & b)) for (i = e; i < f; i++) for (j = g; j < h; j++) Da(d, i, j, P), Ea(d, i, j, P);
                        else if (a.showHeader()) for (i = a.headerIndex(), j = g; j < h; j++) d.setValue(i, j, a.getColumnName(j - c.col));
                        if (2 === (2 & b)) for (i = e; i < f; i++) for (j = g; j < h; j++) k = d.getStyle(i, j) || new F, a.Yo(i, j, k), d.setStyle(i, j, k)
                    } finally {
                        Ga(d)
                    }
                    return a
                },
                move: function(a, b, c) {
                    var d, e, f, g = this,
                        h = g.kj;
                    if ("string" == typeof a && (a = g.findByName(a)), a && b >= 0 && c >= 0 && (d = a.range(), e = g.s$(b, c, Ka(d), La(d)), f = e.length, 0 === f || 1 === f && e[0] === a)) {
                        Fa(h);
                        try {
                            a.YZ(b, c)
                        } finally {
                            Ga(h)
                        }
                    }
                },
                resize: function(a, b) {
                    var c, d, e, f, g, h, i = this,
                        j = i.kj;
                    if ("string" == typeof a && (a = i.findByName(a)), a && (c = a.range(), d = arguments, e = b, 3 === d.length && (e = w(c.row, c.col, d[1], d[2])), e && (f = Ka(e), g = La(e), f >= 0 && g >= 0 && (h = i.s$(e.row, e.col, f, g), h.length <= 1)))) {
                        Fa(j);
                        try {
                            a.b$(e)
                        } finally {
                            Ga(j)
                        }
                    }
                },
                all: function() {
                    var a = [];
                    return I(this.l$, function(b, c) {
                        a.push(c)
                    }), a
                },
                LA: function(a, b, c, d, e, f, g) {
                    var h, i, j, k;
                    return b ? Ma(b) ? c < 0 || e < 1 || c + e > a.getRowCount() ? (g && Ca(Ba().Exp_TableInvalidRow), !1) : d < 0 || f < 1 || d + f > a.getColumnCount() ? (g && Ca(Ba().Exp_TableInvalidColumn), !1) : (h = a.tables, h.rn(c, d, e, f) ? (g && Ca(Ba().Exp_TableIntersectError), !1) : h.findByName(b) ? (g && Ca(Ba().Exp_TableHasSameNameError), !1) : (i = s && a.Ms(c, d, e, f), j = i && i.ranges, k = !0, j && I(i, function(a, b) {
                        if (Ka(b) > 1 || La(b) > 1) return g && Ca(Ba().Exp_ArrayFormulaTable), k = !1, !1
                    }), k)) : (g && Ca(Ba().Exp_TableNameInvalid), !1) : (g && Ca(Ba().Exp_TableEmptyNameError), !1)
                },
                HZ: function(a, b, c, d) {
                    var e, f, g, h, i = this.all();
                    if (i) for (e = w(a, b, c, d), f = i.length, h = 0; h < f; h++) if (g = i[h].range(), e.intersect(g.row, g.col, Ka(g), La(g)) && !e.containsRange(g)) return !0;
                    return !1
                },
                rn: function(a, b, c, d) {
                    var e, f, g = this.l$,
                        h = g.length;
                    for (f = 0; f < h; f++) if (e = g[f], e.range().intersect(a, b, c, d)) return !0;
                    return !1
                },
                KZ: function(a, b) {
                    var c, d, e = this,
                        f = e.l$;
                    for (c = 0, d = f.length; c < d; c++) f[c].KZ(a, b, e.r$)
                },
                rI: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m, n = this,
                        o = n.l$,
                        p = [];
                    for (c = 0, d = o.length; c < d; c++) e = o[c], f = e.LZ(), L(p, f) ? e.rI(a, b, !0) : (g = e.rI(a, b, n.r$), g && p.push(f));
                    if (!n.r$) try {
                        for (h = n.kj, Fa(h), n.r$ = !0, c = 0, d = o.length; c < d; c++) e = o[c], i = e.q$(), j = e.dataRange(), i > 0 && i !== Ka(j) && (k = i, e.showHeader() && (k += 1), e.showFooter() && (k += 1), l = e.range(), m = w(l.row, l.col, k, La(j)), e.b$(m, n.r$))
                    } finally {
                        n.r$ = !1, Ga(h)
                    }
                },
                tI: function(a, b) {
                    var c, d, e = this.l$,
                        f = e.length;
                    for (d = 0; d < f; d++) c = e[d], c.tI(a, b)
                },
                GR: function(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m, n, o, p = this,
                        q = p.l$,
                        r = [],
                        s = [],
                        t = [];
                    for (c = 0, d = q.length; c < d; c++) e = q[c], f = e.LZ(), g = e.range(), h = a <= g.row && g.row + Ka(g) <= a + b, h ? t.push(e) : (L(r, f) ? e.GR(a, b, !0) : (i = e.GR(a, b, p.r$), i && r.push(f)), s.push(e));
                    p.kj.ITa.tVa(), p.l$ = s, p.u$(t, !0);
                    try {
                        for (j = p.kj, Fa(j), p.r$ = !0, q = p.l$, c = 0, d = q.length; c < d; c++) e = q[c], k = e.q$(), l = e.dataRange(), k > 0 && k !== Ka(l) && (m = k, e.showHeader() && (m += 1), e.showFooter() && (m += 1), n = e.range(), o = w(n.row, n.col, m, La(l)), e.b$(o, p.r$))
                    } finally {
                        p.r$ = !1, Ga(j)
                    }
                },
                HR: function(a, b) {
                    var c, d, e, f, g = this,
                        h = g.l$,
                        i = [],
                        j = [],
                        k = h.length;
                    for (d = 0; d < k; d++) c = h[d], e = c.range(), f = a <= e.col && e.col + La(e) <= a + b, f ? j.push(c) : (c.HR(a, b), i.push(c));
                    g.kj.ITa.tVa(), g.l$ = i, g.u$(j, !0)
                },
                $b: function(a, b, c, d, e) {
                    var f, g, h, i, j, k = this,
                        l = w(a, b, c, d),
                        m = [],
                        n = k.kj;
                    if (1 === (1 & e)) {
                        for (i = [], f = k.l$, g = f.length, j = 0; j < g; j++) h = f[j], l.containsRange(h.range()) ? m.push(h) : i.push(h);
                        for (g = i.length, j = 0; j < g; j++) h = i[j], h.$b(a, b, c, d);
                        n && n.ITa.tVa(), k.l$ = i
                    }
                    if (2 === (2 & e)) for (f = k.l$, g = f.length, j = 0; j < g; j++) h = f[j], l.containsRange(h.range()) && (n && n.ITa.pVa(h, "style", h.style()), h.style(P));
                    return k.u$(m, !0), m
                },
                u$: function(a, b) {
                    a && 0 !== a.length && (G.each(a, function(a, b) {
                        b.Aq() && b.getSlicerData().onTableRemoved(b)
                    }), s && Oa(this.kj, a, b))
                },
                t$: function(a) {
                    a && a.Aq() && a.getSlicerData().onTableAdded(a)
                },
                v$: function(a) {
                    for (var b = 1; this.findByName(a);) a = "table" + b, b++;
                    return a
                },
                ge: function(a, b) {
                    var c = this,
                        d = !1,
                        e = P,
                        f = c.find(a, b);
                    return f && (f.showHeader() && a === f.headerIndex() ? (e = f.g$(b), K(e) || (e = A(e)), d = !0) : (e = f.ge(a, b), d = e.gt, e = e.Qb)), {
                        gt: d,
                        Qb: e
                    }
                },
                yq: function(a, b, c, d) {
                    var e = this,
                        f = !1,
                        g = !0,
                        h = e.find(a, b);
                    return h && (h.showHeader() && a === h.headerIndex() ? h.VZ(c) ? g = !1 : (c = K(c) ? c : c + "", h.h$(b, c)) : h.showFooter() && a === h.footerIndex() ? h.j$(b, c, d) : f = h.yq(a, b, c, d)), f || !g
                },
                Hma: function(a, b, c, d, e, f) {
                    var g = this.find(a, b);
                    if (s && g) {
                        if (c > 1 || d > 1) return this.kj.Os(0, Ba().Exp_ArrayFormulaTable), !1;
                        if (g.showHeader() && a === g.headerIndex() && e) return !1;
                        g.showFooter() && a === g.footerIndex() && g.i$(b - g.dj, e, f)
                    }
                    return !0
                },
                IZ: function() {
                    var a, b, c, d = this.all();
                    for (a = 0, b = d.length; a < b; a++) c = d[a], c.bindingPath() && (c.wq = P)
                },
                dB: function(a, b) {
                    var c, d, e, f = [],
                        g = this;
                    if (g && (c = g.all())) for (e = c.length - 1; e >= 0; e--) d = c[e], a.containsRange(d.range()) && (b && (this.kj && this.kj.ITa.tVa(), g.l$.splice(e, 1), d.ZZ()), f.push(d));
                    return f
                },
                eB: function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l, m, n = this;
                    for (g = 0, h = a.length; g < h; g++) i = a[g], f ? k = i : (j = i.bindingPath() ? Q : i.LZ(), k = new Sa, k.Yv(n), k.fromJSON(U(T(i.toJSON()))), k.name(n.v$(k.name()))), l = k.range(), k.S3 = !0, k.$Z(d + l.row - b, e + l.col - c), n.Cz(k), f ? (m = k.ZX, m && (m.kj = n.kj, m.refresh())) : j && k.p$(j), k.S3 = !1
                },
                R3: function(a) {
                    for (var b = 0, c = a.length; b < c; b++) a[b]._Z()
                },
                toJSON: function() {
                    var a, b = this.l$,
                        c = [];
                    if (b) for (a = 0; a < b.length; a++) c.push(b[a].toJSON());
                    return 0 === c.length ? Q : c
                },
                fromJSON: function(a, b) {
                    var c, d, e, f;
                    if (a) for (c = 0, d = a.length; c < d; c++) e = a[c], f = new Sa, f.Yv(this), this.l$.push(f), f.fromJSON(e, b)
                }
            }, p.TableManager = jb, p.TableRemoveOptions = {
                none: 0,
                keepData: 1,
                keepStyle: 2
            }, o = q.lUa, G.extend(o.prototype, {
                pVa: function(a, b, c) {
                    var d, e = this,
                        f = e.zTa;
                    f && (f.uVa || (f.uVa = []), d = f.uVa, d.push({
                        type: "property",
                        table: a,
                        name: b,
                        value: c
                    }))
                },
                tVa: function() {
                    var a, b, c = this,
                        d = c.zTa;
                    d && (d.uVa || (d.uVa = []), a = d.uVa, b = c.noa, a.push({
                        type: "collection",
                        tableList: b.l$.slice()
                    }))
                },
                sVa: function(a, b, c) {
                    var d, e = this,
                        f = e.zTa;
                    f && (f.uVa || (f.uVa = []), d = f.uVa, d.push({
                        type: "tableColumn",
                        tableColumn: a,
                        name: b,
                        value: c
                    }))
                },
                vVa: function(a, b, c) {
                    var d, e = this,
                        f = a.getValue(b, c),
                        g = f.value,
                        h = e.zTa;
                    h && (h.uVa || (h.uVa = []), d = h.uVa, d.push({
                        type: "dataSource",
                        bindingManager: a,
                        row: b,
                        col: c,
                        oldValue: g
                    }))
                },
                wVa: function(a) {
                    var b, c, d, e, f;
                    if (a) for (b = a.length - 1; b >= 0; b--) switch (c = a[b], c.type) {
                        case "collection":
                            this.noa.l$ = c.tableList;
                            break;
                        case "tableColumn":
                            c.tableColumn[c.name](c.value);
                            break;
                        case "property":
                            d = c.table, e = c.name, f = c.value, "range" === e ? (d.cj = f.row, d.dj = f.col, d.Xj = f.rowCount, d.OZ = f.colCount) : "columns" === e ? d.Nz = f : d[e](f);
                            break;
                        case "dataSource":
                            c.bindingManager.setValue(c.row, c.col, c.oldValue)
                    }
                }
            }), o.$n("table", {
                priority: 7e3,
                init: function() {
                    this.noa = new jb(this.kj)
                },
                getValue: function(a) {
                    var b, c, d = a.row,
                        e = a.col,
                        f = a.sheetArea,
                        g = this.kj.tables;
                    3 === f && g && (b = g.find(d, e), b && (c = g.ge(d, e), a.isValueGet = c.gt, a.value = c.Qb))
                },
                setValue: function(a) {
                    var b, c, d, e = a.row,
                        f = a.col,
                        g = a.value,
                        h = a.sheetArea,
                        i = this.kj.tables;
                    3 === h && i && (b = i.find(e, f), b && (c = a.changes, c && (d = c.uVa, d || (d = c.uVa = [])), a.isValueSet = i.yq(e, f, g, d)))
                },
                undo: function(a) {
                    var b = a.uVa;
                    b && this.wVa(b)
                }
            }), a.exports = p
        }()
}, function(a, b) {
    a.exports = GC.Spread.Sheets.Filter
}, function(a, b) {
    a.exports = GC.Spread.Sheets.Bindings
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {
                Exp_DragDropShiftTableCell: "This operation is not allowed. The operation is attempting to shift cells in a table on your worksheet.",
                Exp_DragDropChangePartOfTable: "Cannot complete operation: You are attempting to change a portion of a table row or column in a way that is not allowed.",
                Exp_TableEmptyNameError: "The table name cannot be empty.",
                Exp_TableNameInvalid: "The table name is not valid.",
                Exp_TableInvalidRow: "Invalid row index or row count.",
                Exp_TableInvalidColumn: "Invalid column index or column count.",
                Exp_TableIntersectError: "The tables cannot be intersected.",
                Exp_TableHasSameNameError: "The current worksheet already exists in a table with the same name.",
                Exp_TableDataSourceNullError: "Table datasource cannot be null.",
                Exp_TableMoveOutOfRange: "The table cannot be moved out of the sheet.",
                Exp_TableResizeOutOfRange: "The invalid row count, column count, and table cannot be resized out of the sheet.",
                Exp_ArrayFormulaTable: "multi-cell array formulas are not allowed in tables.",
                Exp_TableResizeInvalidRange: "The headers must remain in the same row, and the resulting table range must overlap the original table range."
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(138);
            c(142), b.SR = {}, b.SR.en = c(143), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i, j, k, l, m, n, o, p, q = c(87),
                r = c(26),
                s = c(139),
                t = c(140),
                u = c(141),
                v = c(127),
                w = r.D,
                x = {},
                y = function() {
                    return r.C(x.SR)()
                },
                z = r.k,
                A = q.GC$,
                B = q.To,
                C = q.Commands,
                D = q.Ul.Nl,
                E = q.Ul.Pl,
                F = q.Ul.Ol,
                G = z.ac,
                H = q.Ul.hZa,
                I = A.isArray,
                J = A.extend,
                K = document,
                L = void 0,
                M = null,
                N = "normal 11pt calibri",
                O = parseFloat,
                P = "name",
                Q = "style",
                R = "Style",
                S = "light",
                T = "dark",
                U = "white",
                V = "black",
                W = "solid",
                X = "color",
                Y = "Color",
                Z = "background-color",
                $ = "width",
                _ = "Width",
                aa = "height",
                ba = "font",
                ca = "setBorders",
                da = "back" + Y,
                ea = "fore" + Y,
                fa = "border",
                ga = fa + "Width",
                ha = fa + R,
                ia = fa + Y,
                ja = fa + "Left",
                ka = fa + "Top",
                la = fa + "Right",
                ma = fa + "Bottom",
                na = "textDecoration",
                oa = "WithData" + R,
                pa = "WithNoData" + R,
                qa = "electedItem",
                ra = "hovered",
                sa = "wholeSlicer" + R,
                ta = "header" + R,
                ua = "s" + qa + oa,
                va = "s" + qa + pa,
                wa = "unS" + qa + oa,
                xa = "unS" + qa + pa,
                ya = ra + "S" + qa + oa,
                za = ra + "S" + qa + pa,
                Aa = ra + "UnS" + qa + oa,
                Ba = ra + "UnS" + qa + pa,
                Ca = "undoFilter",
                Da = "undoAdd",
                Ea = "undoRemove",
                Fa = "undoUpdateTableSlicer",
                Ga = "div",
                Ha = "px",
                Ia = "default",
                Ja = "cursor",
                Ka = "position",
                La = "absolute",
                Ma = "padding",
                Na = "top",
                Oa = "margin-" + Na,
                Pa = "left",
                Qa = "right",
                Ra = "text-align",
                Sa = "overflow",
                Ta = "hidden",
                Ua = "auto",
                Va = "text-overflow",
                Wa = "ellipsis",
                Xa = "white-space",
                Ya = "nowrap",
                Za = "unselectable",
                $a = "on",
                _a = "font-weight",
                ab = "font-size",
                bb = "border-radius",
                cb = "box-sizing",
                db = "content-box",
                eb = "button",
                fb = "✗",
                gb = "mark",
                hb = "itemValue",
                ib = "Accent ",
                jb = "Slicer" + R,
                kb = "#999999",
                lb = "#828282",
                mb = "#CCCCCC",
                nb = "gc-slicer-",
                ob = "container",
                pb = nb + ob,
                qb = "header",
                rb = nb + qb,
                sb = nb + "header-borderDiv",
                tb = nb + "caption",
                ub = "clearfilter",
                vb = nb + ub,
                wb = "body",
                xb = nb + wb,
                yb = nb + "table",
                zb = nb + "tr",
                Ab = nb + "td1",
                Bb = nb + "td2",
                Cb = "itemscontainer",
                Db = nb + Cb,
                Eb = "item",
                Fb = nb + Eb,
                Gb = "gc-no-user-select",
                Hb = function() {
                    var a, b, c, d = [da, ea, ba, ja, ka, la, ma, na];

                    function e(a, b, c, e, f, g, h, i) {
                        for (var j = 0, k = G(d); j < k; j++) this[d[j]](arguments[j])
                    }
                    for (a = {
                        constructor: e,
                        setBorders: function(a) {
                            var b = this;
                            b[ja](a)[ka](a)[la](a)[ma](a)
                        },
                        fromJSON: function(a) {
                            if (a && !A.isEmptyObject(a)) {
                                var b = this;
                                d.forEach(function(c) {
                                    var d, e = a[c];
                                    F(e) && (c.indexOf(fa) >= 0 ? (d = Jb(), d.fromJSON(e), b[c](d, !1)) : b[c](e, !1))
                                })
                            }
                        },
                        toJSON: function() {
                            var a = this,
                                b = {};
                            return d.forEach(function(c) {
                                var d = a[c]();
                                a[c].isDefault(d) || (b[c] = d && d.toJSON ? d.toJSON() : d)
                            }), b
                        }
                    }, b = 0, c = G(d); b < c; b++) a[d[b]] = E(d[b]);
                    return e.prototype = a, e
                }();

            function Ib(a) {
                var b, c;
                return a && 0 !== G(a) ? 0 === a.indexOf(S) ? (c = parseInt(a.replace(S, "")), b = f[S + c]()) : 0 === a.indexOf(T) ? (c = parseInt(a.replace(T, "")), b = f[T + c]()) : f[a] && (b = f[a]()) : b = new Hb, b
            }
            b = function() {
                var a, b, c, d = [ga, ha, ia],
                    e = G(d);

                function f(a, b, c) {
                    for (var f = 0; f < e; f++) this[d[f]](arguments[f])
                }
                for (a = function(a, b, c) {
                    return E(a, b, c, function(b) {
                        var c = typeof b;
                        return a === ga ? "number" === c && b >= 0 : "string" === c
                    })
                }, b = {
                    constructor: f,
                    fromJSON: function(a) {
                        var b, c;
                        if (a && !A.isEmptyObject(a)) for (b = 0; b < e; b++) c = d[b], F(a[c]) && this[c](a[c], !1)
                    },
                    toJSON: function() {
                        var a, b, c, f = {};
                        for (a = 0; a < e; a++) f[d[a]] = this[d[a]]();
                        b = {};
                        for (c in f) f[c] !== L && f[c] !== M && (b[c] = f[c]);
                        return b
                    }
                }, c = 0; c < e; c++) b[d[c]] = a(d[c], L, L);
                return f.prototype = b, f
            }();

            function Jb(a, c, d) {
                return new b(a, c, d)
            }
            function Kb() {
                var a = new b(0, "", ""),
                    c = new Hb(U, V, N);
                return c.setBorders(a), c
            }
            function Lb(a) {
                var b = 0,
                    c = 17,
                    d = 16;
                return a.indexOf(jb + "Light") > -1 && G(a) === c && (b = parseInt(a[c - 1])), a.indexOf(jb + "Dark") > -1 && G(a) === d && (b = parseInt(a[d - 1])), b >= 1 && b <= 6
            }
            d = function() {
                var a, b, c, d;

                function e(a, b, c, d) {
                    return E(a, b, c, d)
                }
                function f() {
                    var a = this;
                    a[P](""), a[sa](Kb(), !1)
                }
                for (a = [P, sa, ta, ua, va, wa, xa, ya, za, Aa, Ba], b = {
                    constructor: f,
                    name: e(P, ""),
                    fromJSON: function(b) {
                        var c, d, e, f;
                        if (b && !A.isEmptyObject(b)) return c = this, d = b.name, F(d) && (c.name(d, !1), Lb(d)) ? (e = d.toLocaleLowerCase().replace("slicerstyle", "").replace(" ", ""), f = Ib(e), void a.forEach(function(a) {
                            c[a](f[a](), !1)
                        })) : void a.forEach(function(a) {
                            var d, e = b[a];
                            a !== P && F(e) && (d = Ib(), d.fromJSON(e), c[a](d, !1))
                        })
                    },
                    toJSON: function() {
                        var a, b, c, d = this;
                        a = Lb(d.name()) ? {
                            name: d.name()
                        } : d.toJSONInternal(), b = {};
                        for (c in a) a[c] === M || a[c] === L || q.GC$.isEmptyObject(a[c]) || (b[c] = a[c]);
                        return b
                    },
                    toJSONInternal: function() {
                        var b, c, d, e = this,
                            f = {},
                            g = "toJSON";
                        for (f[P] = e.name(), b = 1, c = G(a); b < c; b++) d = a[b], f[d] = e[d]() ? e[d]()[g]() : M;
                        return f
                    }
                }, c = 1, d = G(a); c < d; c++) b[a[c]] = e(a[c]);
                return f.prototype = b, f
            }();

            function Mb() {
                return new d
            }
            e = function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) {
                var w, x, y = Mb(),
                    z = jb + a + b;
                return y[P](z), w = Ib(), w[ba](c)[da](d)[ca](e), y[sa](w), x = Ib(), x[ja](f)[ka](f)[la](f)[ma](g), y[ta](x), y[ua](Ob(h, i, j)), y[va](Ob(k, l, m)), y[wa](Ob(n, o, p)), y[xa](Ob(q, r, s)), Nb(y, Ob(t, u, v)), y
            };

            function Nb(a, b) {
                a[ya](b)[za](b)[Aa](b)[Ba](b)
            }
            function Ob(a, b, c) {
                var d = Ib();
                return d[ea](a)[da](b)[ca](c), d
            }
            function Pb(a) {
                var b = ib + a;
                return e("Light", a, N, U, Jb(1, W, b), Jb(0, "", ""), Jb(1, W, b), V, b + ",Lighter 60%", Jb(1, W, kb), lb, b + ",Lighter 80%", Jb(1, W, mb), V, U, Jb(1, W, mb), lb, U, Jb(1, W, "#E0E0E0"), V, "#F9E36F", Jb(1, W, kb))
            }
            function Qb(a) {
                var b = ib + a;
                return e("Dark", a, N, U, Jb(1, W, b), Jb(0, "", ""), Jb(1, W, b), U, b, Jb(1, W, b), b + ",Darker 25%", b + ",Lighter 60%", Jb(1, W, b + ",Lighter 60%"), V, "#C0C0C0", Jb(1, W, "#C0C0C0"), "#959595", "#DFDFDF", Jb(1, W, "#DFDFDF"), V, "#F9E36F", Jb(1, W, kb))
            }
            f = function() {
                function a() {}
                for (var b = 1; b <= 6; b++) a["light" + b] = function(a) {
                    return function() {
                        return Pb(a)
                    }
                }(b), a["dark" + b] = function(a) {
                    return function() {
                        return Qb(a)
                    }
                }(b);
                return a.other1 = function() {
                    return e("Other", 1, N, U, Jb(1, W, "#808080"), Jb(0, "", ""), Jb(1, W, "#A6A6A6"), V, "#BFBFBF", Jb(1, W, kb), V, "#D9D9D9", Jb(1, W, mb), V, U, Jb(1, W, mb), "#959595", U, Jb(1, W, "#E0E0E0"), V, "#F9E36F", Jb(1, W, kb))
                }, a.other2 = function() {
                    return e("Other", 2, N, U, Jb(1, W, "#4F81BD"), Jb(0, "", ""), Jb(1, W, "#4F81BD"), V, "#A9C1E3", Jb(1, W, kb), lb, "#D5E2F6", Jb(1, W, mb), V, U, Jb(1, W, mb), lb, U, Jb(1, W, "#E0E0E0"), V, "#F9E36F", Jb(1, W, kb))
                }, a
            }();

            function Rb(a, b) {
                var c, d, e, f, g, h, i = a.KW,
                    j = a._caption,
                    k = Vb(a.slicerData),
                    l = a.zoomFactor();
                if (b) {
                    b[sa] && (Xb(a.xo, b[sa], k, j, l), uc(a, ob)), c = a.LW, d = Tb(b[sa], b[ta]), Yb(b) ? (e = d[ma], f = e && e[ga] || 0, c[Q][aa] = (a.MW - f) * Zb(b) * l + Ha, Wb(c, e, k, ma), d[ja] = d[ka] = d[la] = d[ma] = M) : (c[Q][ma + $] = 0 + Ha, c[Q][aa] = i[Q][aa]), Xb(i, d, k, j, l), uc(a, qb);
                    for (g in a.NW) w(a.NW, g) && (h = parseInt(g), rc(a, h))
                }
            }
            function Sb(a, b, c) {
                var d, e, f = {};
                if (b && c && G(b) === G(c)) {
                    for (d = 0, e = G(b); d < e; d++) f[b[d]] = c[d];
                    A(a).css(f)
                }
            }
            function Tb(a, b) {
                var c = {},
                    d;
                if (b) for (d in b) w(b, d) && (c[d] = b[d]);
                if (a) for (d in a) c[d] === L && a[d] !== L && (c[d] = a[d]);
                return c
            }
            function Ub(a, b) {
                if (!b) return a;
                var c;
                return a && b.getColor && (c = b.getColor(a)), c
            }
            function Vb(a) {
                var b = a && a.OW && a.OW();
                return b && b.currentTheme()
            }
            function Wb(a, b, c, d) {
                if (a) {
                    var e = b && b[ga] || 0,
                        f = b && b[ha] || "",
                        g = b && b[ia] || "";
                    a[Q][d + _] = e + Ha, a[Q][d + R] = f, a[Q][d + Y] = Ub(g, c)
                }
            }
            function Xb(a, b, c, d, e) {
                var f, g, h, i;
                a && b && (f = b[ea] || V, g = b[da] || U, h = b[ba] || N, a[Q][Z] = Ub(g, c), a[Q][X] = Ub(f, c), a[Q][ba] = H(B.No(h, e)[ba]), Wb(a, b[ja], c, ja), Wb(a, b[ka], c, ka), Wb(a, b[la], c, la), Wb(a, b[ma], c, ma), i = B.So(b[na]), r.u.Bb(a.className, rb) ? d[Q][na] = i : r.u.Bb(a.className, Fb) && (a[Q][na] = i))
            }
            function Yb(a) {
                var b, c = a[ta];
                return !c || !(c[ja] || c[ka] || c[la] || c[la]) || (b = Tb(a[sa], c), !(!(b[ma] && b[ma][ga] > 0) || b[ja] && 0 !== b[ja][ga] || b[ka] && 0 !== b[ka][ga] || b[la] && 0 !== b[la][ga]))
            }
            function Zb(a) {
                var b, c, d, e, f, g, h, i, j;
                return a ? (b = Tb(a[sa], a[ta]), b && b[ba] ? (c = b[ba], d = 1, e = B.Ko, f = B.Jo, g = e(f(N)).fontSize, h = e(f(c)).fontSize, g && h && (i = O(g), j = O(h), isNaN(j) || (d = j / i)), d) : 1) : 1
            }
            function $b(a) {
                var b, c, d, e, f, g = 0,
                    h = 0;
                return a && (b = a[Q], c = b[ja + _], d = b[ka + _], e = b[la + _], f = b[ma + _], c && (g += O(c)), d && (h += O(d)), e && (g += O(e)), f && (h += O(f))), {
                    widthOffset: g,
                    heightOffset: h
                }
            }
            function _b(a) {
                var b, c, d = [];
                if (a) for (c = 0; c < G(a); c++) b = a[c] === L || a[c] === M || "" === a[c] ? y().Blank : a[c] + "", d.push(b);
                return d
            }
            function ac(a) {
                var b = D(Ga);
                return Sb(b, [Ka, Ma, cb, Sa], [La, 6 * a.zoomFactor(), db, Ta]), A(b).addClass(pb), uc(a, ob), A(b).append(bc(a)).append(cc(a)), b
            }
            function bc(a) {
                var b, c, d, e, f, g, h, i, j = D(Ga),
                    k = D(Ga),
                    l = D("span"),
                    m = D(Ga),
                    n = a.zoomFactor(),
                    o = a.style();
                return Sb(j, [$, Ka, Na, Pa, Qa, cb, Sa], [Ua, La, 0, 0, 0, db, Ta]), A(j).addClass(rb), a.KW = j, b = a.PW * n, Sb(k, [$, Ka, Pa, Qa, cb, Sa], [Ua, La, b, b, db, Ta]), A(k).addClass(sb), a.LW = k, A(j).append(k), c = a.QW * Zb(o) * n, d = fc(a) * n, Sb(l, [cb, Ka, Na, Sa, $, Va, Xa], [db, La, c, Ta, d, Wa, Ya]), A(l).text(a.captionName()).attr(Za, $a).addClass(tb + " " + Gb), a._caption = l, e = a.RW * n, f = a.SW * n, g = a.TW * Zb(o) * n, h = a.UW * n, i = a.VW * n + Ha, Sb(m, [$, aa, Ja, Ka, Na, Qa, Ra, cb, _a, bb, Sa, ab], [e, f, Ia, La, g, h, "center", db, "normal", 2, Ta, i]), A(m).attr("title", "Clear Filter (Alt+C)").attr(Za, $a).text(fb).addClass(vb + " " + Gb), a.WW = m, uc(a, qb), A(k).append(l).append(m), j
            }
            function cc(a) {
                var b, c = D(Ga),
                    d = D("table"),
                    e = D("tr"),
                    f = D("td"),
                    g = D("td"),
                    h = (a.MW - a.PW + a.XW) * Zb(a.style()) * a.zoomFactor();
                return Sb(c, [$, Sa, Oa, cb], [Ua, Ta, h, db]), A(c).attr(Za, $a).addClass(xb + " " + Gb), a.YW = c, Sb(d, [cb, "border-spacing"], [db, 0 + Ha]), A(d).attr(Za, $a).addClass(yb + " " + Gb), a.ZW = d, A(e).css(cb, db).addClass(zb), a.$W = e, Sb(f, [Ma, cb], [0, db]), A(f).addClass(Ab), a._W = f, Sb(g, [Ma, cb, Ja], [0, db, Ia]), A(g).addClass(Bb), a.aX = g, A(f).append(dc(a)), b = lc(a), A(g).append(b), a.bX = b, A(e).append(f).append(g), A(d).append(e), A(c).append(d), c
            }
            function dc(a) {
                var b, c, d, e, f, g, h, i = D(Ga),
                    j = a.zoomFactor();
                for (a.cX = i, c = gc(a), a.dX = c, b = hc(a), a.eX = b, Sb(i, [$, aa, ab], [b * j, c * j, a.VW * j + Ha]), A(i).attr(Za, $a).addClass(Db + " " + Gb), d = kc(a), a.fX = d, e = Math.min(jc(a), G(d)), f = 0; f < e; f++) g = d[f], h = ec(a, g, f), A(i).append(h), a._items.push(h), a.NW[a.gX.indexOf(g)] = h;
                return i
            }
            function ec(a, b, c) {
                var d = b,
                    e = D(eb),
                    f = a.zoomFactor(),
                    g = a.hX * f + Ha;
                return Sb(e, [Ra, Xa, Oa, Ja, cb, bb, Ma, Sa, Va, Z], [Pa, Ya, g, Ia, db, 5, "1px 6px", Ta, Wa, U]), A(e).attr("type", eb).attr(Za, $a).text(d).addClass(Fb + " " + Gb), (c + 1) % a.columnCount() !== 0 && A(e).css("margin-right", a.hX * f + Ha), uc(a, Eb, e), e
            }
            function fc(a) {
                var b, c, d = a.xo,
                    e = a.KW,
                    f = 1,
                    g = 1,
                    h = 0,
                    i = 0,
                    j = function(a) {
                        return a ? O(a) : 0
                    },
                    k = fa + "Left" + _,
                    l = fa + "Right" + _;
                return d && (b = d.style, f = j(b[k]), g = j(b[l])), e && (c = e.style, h = j(c[k]), i = j(c[l])), a.width() - (f + g) - 2 * a.PW - (h + i) - a.RW
            }
            function gc(a) {
                var b = $b(a.xo),
                    c = a.height() - 2 * a.PW - b.heightOffset;
                return a.showHeader() ? c - a.MW * Zb(a.style()) - a.XW : c
            }
            function hc(a) {
                var b = $b(a.xo),
                    c = a.width() - 2 * a.PW - b.widthOffset - 1;
                return a.iX() ? c - a.jX : c
            }
            function ic(a, b) {
                var c = a.columnCount();
                return (b - (c - 1) * a.hX) / c
            }
            function jc(a) {
                return Math.ceil(a.dX / (a.itemHeight() + 2 * (a.kX + a.lX) + a.hX)) * a.columnCount()
            }
            function kc(a) {
                var b, c, d, e, f, g, h = a.gX,
                    i = a.mX(h.slice(0), a.sortState()),
                    j = a.slicerData.getFilteredOutIndexes(a.columnName, 2);
                if (a.showNoDataItems()) {
                    if (a.visuallyNoDataItems() && a.showNoDataItemsInLast()) {
                        for (b = [], d = G(i), e = 0; e < d; e++) f = i[e], z.Bb(j, h.indexOf(f)) || b.push(f);
                        for (e = 0; e < d; e++) f = i[e], z.Bb(j, h.indexOf(f)) && b.push(f);
                        i = b
                    }
                } else for (b = i.concat(), c = 0; c < G(b); c++) z.Bb(j, h.indexOf(b[c])) && z.Fb(i, b[c]);
                return g = y().Blank, z.Bb(i, g) && (z.Fb(i, g), i.push(g)), i
            }
            function lc(a) {
                var b, c = new q.hv((!1));
                return a.nX = c, b = c.Bv(), A(b).bind("scroll.gcScrollbar", function(b, c) {
                    var d, e = c.scrollEventType,
                        f = c.scrollOrientation;
                    b.data = a, 1 === f && (d = [0, 1, 2, 3, 5], d.indexOf(e) >= 0 && a.Bw(b, c))
                }), b
            }
            function mc(a) {
                var b = a.slicerData;
                a.data = b.getData(a.columnName), a.exclusiveDatas = b.getExclusiveData(a.columnName), a.oX = _b(a.data), a.gX = _b(a.exclusiveDatas), a.fX = kc(a), tc(a), qc(a)
            }
            function nc(a, b) {
                var c, d = a.style(),
                    e = a.xo;
                e && (b !== L && b !== a.zoomFactor() && (a.zoomFactor(b), Rb(a, d)), A(e).css(Ma, 6 * b), uc(a, ob), oc(a), c = a.showHeader() ? (a.MW + a.XW - a.PW) * Zb(d) * b : 0, A(a.YW).css(Oa, c), pc(a), tc(a))
            }
            function oc(a) {
                var b, c, d, e, f, g, h, i, j, k = a.zoomFactor(),
                    l = a.KW,
                    m = a.YW,
                    n = a._caption,
                    o = a.WW,
                    p = a.style();
                a.showHeader() ? (a.xo.firstChild !== l && (A(l).insertBefore(m), A(m).css(Oa, (a.MW + a.XW) * Zb(p) * k)), A(l).css(aa, a.MW * Zb(p) * k), b = a.PW * k, Sb(a.LW, [Pa, Qa], [b, b]), n.innerHTML !== a.captionName() && A(n).text(a.captionName()), c = a.QW * Zb(p) * k, d = fc(a) * k, Sb(n, [Na, $, _a], [c, d, "bold"]), e = a.pX, f = e && G(e) > 0 ? 1 : 0, Ec(a, f), g = a.RW * k, h = g, i = a.TW * Zb(p) * k, j = a.UW * k, Sb(o, [$, aa, Na, Qa], [g, h, i, j]), uc(a, qb)) : A(l).remove()
            }
            function pc(a) {
                var b, c = a.zoomFactor(),
                    d = gc(a);
                a.dX = d, b = hc(a), a.eX = b, Sb(a.cX, [$, aa, ab], [b * c, d * c, a.VW * c]), qc(a)
            }
            function qc(a) {
                var b, c, d, e, f, g, h, i, j = a.fX;
                if (j) {
                    for (b = a._items, b && G(b) > 0 && A(b).remove(), a._items = [], b = a._items, a.NW = {}, c = Math.min(jc(a), G(j)), d = a.iX() ? a.nX.value() * a.columnCount() : 0, e = Math.min(d + c, G(j)), f = d; f < e; f++) g = j[f], h = ec(a, g, f), A(a.cX).append(h), b.push(h), a.NW[a.gX.indexOf(g)] = h;
                    if (0 !== G(b)) for (i in a.NW) w(a.NW, i) && rc(a, parseInt(i))
                }
            }
            function rc(a, b) {
                var c = a.qX,
                    d = c ? a.gX.indexOf(c[hb]) : -1,
                    e = a.pX,
                    f = a.rX,
                    g = a.NW[b],
                    h = 0;
                b === d && (h |= 1), h |= z.Bb(e, b) ? 4 : 2, h |= z.Bb(f, b) && a.visuallyNoDataItems() ? 16 : 8, sc(a, g, h)
            }
            function sc(a, b, c) {
                var d = a.style(),
                    e;
                if (b && d) {
                    switch (c) {
                        case 10:
                            e = ua;
                            break;
                        case 18:
                            e = va;
                            break;
                        case 12:
                            e = wa;
                            break;
                        case 20:
                            e = xa;
                            break;
                        case 11:
                            e = ya;
                            break;
                        case 19:
                            e = za;
                            break;
                        case 13:
                            e = Aa;
                            break;
                        case 21:
                            e = Ba
                    }
                    Xb(b, Tb(d[sa], d[e]), Vb(a.slicerData), a._caption, a.zoomFactor()), uc(a, Eb, b)
                }
            }
            function tc(a) {
                var b, c, d, e, f, g = a.bX,
                    h = a.aX;
                a.iX() ? (g || (g = lc(a)), h.firstChild !== g && (A(h).append(g), pc(a)), b = a.zoomFactor(), c = a.dX, d = Math.floor(c / (a.itemHeight() + 2 * a.kX + a.hX)), e = a.nX, e.value(a.sX), e.Vo(a.jX * b, !1), e._v(c * b, !1), e.bw(0), e.cw(Math.ceil(G(a.gX) / a.columnCount()) - d), e.dw(d), e.qB(1), e.rB(d - 1), e.ew()) : (h.firstChild === g && (f = g.parentElement, f && f.removeChild(g), pc(a)), a.sX = 0)
            }
            function uc(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n = a.zoomFactor();
                switch (b) {
                    case ob:
                        g = a.xo, h = $b(g), i = a.PW, d = (a.width() - 2 * i) * n - h.widthOffset, e = (a.height() - 2 * i) * n - h.heightOffset, f = g;
                        break;
                    case qb:
                        j = a.KW, k = $b(j), l = a.MW * Zb(a.style()) * n - k.heightOffset, A(j).css(aa, l), d = a.RW * n, e = a.SW * n, f = a.WW;
                        break;
                    case Eb:
                        m = $b(c), d = ic(a, a.eX) * n - 2 * a.tX - m.widthOffset, e = a.itemHeight() * n - m.heightOffset, f = c
                }
                Sb(f, [$, aa], [d, e])
            }
            function vc(a) {
                var b = a.xo,
                    c = ".slicer",
                    d = "mouse",
                    e = "wheel",
                    f = "DOMMouseScroll";
                b && (A(b).bind(d + "down" + c, function(b) {
                    a.AD(b)
                }).bind(d + "move" + c, function(b) {
                    a.BD(b)
                }).bind(d + "out" + c, function(b) {
                    a.uX(b)
                }), b.addEventListener(d + e, function(b) {
                    a.Rw(b)
                }, !1), b.addEventListener(f, function(b) {
                    a.Rw(b)
                }, !1), A(K).bind(d + "up" + c, function(b) {
                    Dc(a, b)
                }).bind("keydown" + c, function(b) {
                    a.nm(b)
                }).bind("keyup" + c, function(b) {
                    a.om(b)
                }), K.addEventListener(d + e, function(b) {
                    a.Rw(b)
                }, !1), K.addEventListener(f, function(b) {
                    a.Rw(b)
                }, !1))
            }
            function wc(a) {
                var b = a.xo;
                b && A(b).unbind(".slicer")
            }
            function xc(a, b) {
                var c, d, e, f = a.exclusiveDatas,
                    g = a.pX,
                    h = Bc(a, b[hb]),
                    i = a.vX,
                    j = a.wX;
                for (z.Bb(i, h) ? z.Fb(i, h) : i.push(h), c = 0; c < G(f); c++) z.Bb(g, c) || j.push(c);
                for (d = 0; d < G(i); d++) z.Bb(j, i[d]) ? z.Fb(j, i[d]) : j.push(i[d]);
                if (0 === G(j)) for (e = 0; e < G(a.gX); e++) j.push(e);
                a.xX = h
            }
            function yc(a, b) {
                var c, d, e, f, g, h, i, j, k = a.fX,
                    l = a.gX,
                    m = l[a.xX];
                for (Ac(a), c = k.indexOf(m), d = k.indexOf(b[hb]), e = Math.min(c, d), f = Math.max(c, d), g = e; g <= f; g++) h = l.indexOf(k[g]), i = a.vX, j = a.wX, i.indexOf(h) === -1 && i.push(h), j.indexOf(h) === -1 && j.push(h)
            }
            function zc(a, b) {
                Ac(a);
                var c = Bc(a, b[hb]);
                rc(a, c), a.vX.push(c), a.wX.push(c), a.xX = c
            }
            function Ac(a) {
                var b, c, d, e, f, g, h = a._items;
                if (h && 0 !== G(h)) for (b = a.rX, c = 0, d = G(h); c < d; c++) e = h[c], f = a.gX.indexOf(h[c].innerHTML), g = z.Bb(b, f) ? 20 : 12, sc(a, e, g)
            }
            function Bc(a, b) {
                var c, d, e = a.gX;
                if (e) for (c = 0, d = G(e); c < d; c++) if (e[c] === b) return c;
                return -1
            }
            function Cc(a, b) {
                var c, d, e = a.pX,
                    f = a.rX;
                for (c = 0; c < G(b); c++) d = 0, d |= a.yX ? z.Bb(e, b[c]) ? 2 : 4 : 2, d |= z.Bb(f, b[c]) && a.visuallyNoDataItems() ? 16 : 8, sc(a, a.NW[b[c]], d)
            }
            function Dc(a, b) {
                var c = a.qX;
                a.CD(b), c = c ? new h(c[gb], c[hb]) : M, a.qX = M, Fc(a, c)
            }
            function Ec(a, b) {
                var c, d, e, f = a.WW;
                if (f) switch (c = a.style(), d = Tb(c[sa], c[ta]), e = d && d[da], e || (e = U), a.zX = e, b) {
                    case 0:
                        a.AX = !1, Sb(f, [X, Z], [a.BX, e]);
                        break;
                    case 1:
                        a.AX = !0, Sb(f, [X, Z], [a.CX, e]);
                        break;
                    case 2:
                        A(f).css(Z, a.DX)
                }
            }
            function Fc(a, b) {
                var c, d;
                if (b) switch (c = a.vX, b[gb]) {
                    case 4:
                        if (!a.WW) return;
                        a.AX ? Ec(a, 1) : Ec(a, 0);
                        break;
                    case 5:
                        d = a.gX.indexOf(b[hb]), c && z.Bb(c, d) ? Cc(a, c) : rc(a, d)
                }
            }
            function Gc(a, b) {
                if (b) switch (b[gb]) {
                    case 4:
                        if (!a.WW || !a.AX) return;
                        Ec(a, 2);
                        break;
                    case 5:
                        var c = a.gX.indexOf(b[hb]);
                        rc(a, c);
                        break;
                    case 6:
                        a.cX.style.cursor = Ia
                }
            }
            function Hc(a, b) {
                var c, d, e = a._items;
                if (e && b !== M) for (c = 0; c < G(e); c++) if (d = e[c], d.innerHTML.toLowerCase() === b.toLowerCase()) return d;
                return M
            }
            function Ic(a, b) {
                var c, d, e, f, g, i, j, k, l, m, n, o = Jc(a, ob),
                    p = M,
                    q = M;
                if (!o) return M;
                if (c = b.pageX, d = b.pageY, e = Jc(a, qb), f = Jc(a, ub), g = Jc(a, wb), i = Jc(a, Cb), e && e.contains(c, d)) p = f && f.contains(c, d) ? 4 : 1;
                else if (g && g.contains(c, d)) if (j = a._items, i && i.contains(c, d) && j) {
                    for (k = 0; k < G(j); k++) if (l = Jc(a, Eb, k), l && l.contains(c, d)) {
                        p = 5;
                        for (m in a.NW) if (a.NW[m] === j[k]) {
                            q = a.gX[m];
                            break
                        }
                        break
                    }
                    k >= G(j) && (n = Jc(a, Eb, G(j) - 1), p = d < n.y + a.itemHeight() * a.zoomFactor() ? 6 : 7)
                } else p = 8;
                else p = 0;
                return new h(p, q)
            }
            function Jc(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n, o = b === ob ? L : Jc(a, ob),
                    p = a.xo,
                    r = a.EX,
                    s = a.PW,
                    t = a.zoomFactor(),
                    u = a.style(),
                    v = a.showHeader(),
                    w = a.MW,
                    x = a.RW,
                    y = a.gX;
                switch (b) {
                    case ob:
                        d = 0, e = 0, f = p.offsetWidth, g = p.offsetHeight;
                        do d += p.offsetLeft, e += p.offsetTop, p = p.offsetParent;
                        while (p);
                        break;
                    case qb:
                        if (!o || !v) return M;
                        d = o.x + r * t, e = o.y + r * t, f = a.width() * t, g = w * Zb(u) * t;
                        break;
                    case ub:
                        if (!o || !v) return M;
                        d = o.x + o.width - (r + s + x) * t, e = o.y + r + a.QW * Zb(u) * t, f = x * t, g = a.SW * t;
                        break;
                    case wb:
                        if (!o) return M;
                        h = r + s, i = 0, j = w * Zb(u) + a.XW, d = o.x + h * t, e = o.y + i * t + (v ? j * t : 0), f = (a.width() - 2 * h) * t, g = o.height - 2 * i * t - (v ? j * t : 0);
                        break;
                    case Cb:
                        if (k = Jc(a, wb), !k) return M;
                        if (!a.iX()) return k;
                        d = k.x, e = k.y, f = k.width - a.jX * a.zoomFactor(), g = k.height;
                        break;
                    case Eb:
                        if (!o || 0 === G(y) || c >= G(y)) return M;
                        if (l = Jc(a, Cb), !l) return M;
                        m = a.columnCount(), n = a.hX, f = (l.width - (m - 2) * n * t) / m, g = a.itemHeight() * t + 2 * a.lX, d = l.x + c % m * (f + n * t), e = l.y + Math.floor(c / m) * (g + n * t)
                }
                return new q.Rect(d, e, f, g)
            }
            function Kc(a) {
                return a > 0
            }
            g = function() {
                var a, b, c, d;

                function e(a) {
                    return function(b, c) {
                        nc(this), this.onPropertyChanged(a, b, c)
                    }
                }
                function f(a) {
                    return function(b, c) {
                        var d = this;
                        d.fX = kc(d), nc(d), d.onPropertyChanged(a, b, c)
                    }
                }
                function g(a, b, c, d) {
                    return c || (c = e(a)), q.Ul.Pl(a, b, c, d)
                }
                function i(a, b, c) {
                    var d = this;
                    d.name(a, !1), d.xo = M, d.PW = 6, d.EX = 1, d.VW = 14, d.KW = M, d.MW = 27, d.XW = 5, d._caption = M, d.WW = M, d.RW = 28, d.SW = 25, d.TW = 3, d.UW = 0, d.AX = !1, d.QW = 3, d.YW = M, d.ZW = M, d.$W = M, d._W = M, d.aX = M, d.cX = M, d.eX = 0, d.dX = 0, d.bX = M, d.FX = 2, d._items = [], d.NW = {}, d.lX = 1, d.kX = 1, d.tX = 6, d.hX = 2, d.jX = 17, d.sX = 0, d.zX = U, d.DX = "#F9E578", d.CX = "red", d.BX = "#B0ADB0", d.GX = !1, d.HX = !1, d.vX = [], d.wX = [], d.xX = 0, d.fX = [], d.pX = [], d.rX = [], d.gX = [], d.oX = [], d.slicerData = b, d.columnName = c, d.data = b.getData(c), d.exclusiveDatas = b.getExclusiveData(c), d.slicerData.attachListener(d), d.IX()
                }
                for (i.getDefaultStyle = function() {
                    var a = function(a, b, c, d, e, f, g, h) {
                            var i = {};
                            return i[da] = a, i[ea] = b, i[ba] = c, i[ja] = d, i[ka] = e, i[la] = f, i[ma] = g, i[na] = h, i
                        },
                        b = function(a, b, c) {
                            var d = {};
                            return d[ga] = a, d[ha] = b, d[ia] = c, d
                        },
                        c = b(1, W, "#808080"),
                        d = b(0, "", ""),
                        e = b(1, W, "#999999"),
                        f = b(1, W, "#CCCCCC"),
                        g = b(1, W, "#E0E0E0"),
                        h = a("#F9E36F", V, N, e, e, e, e),
                        i = {};
                    return i[sa] = a(U, V, N, c, c, c, c), i[ta] = a(U, V, "bold 11pt calibri", d, d, d, b(1, W, "#A6A6A6")), i[ua] = a("#BFBFBF", V, N, e, e, e, e), i[va] = a("#D9D9D9", V, N, f, f, f, f), i[wa] = a(U, V, N, f, f, f, f), i[xa] = a(U, "#959595", N, g, g, g, g), i[ya] = h, i[za] = h, i[Aa] = h, i[Ba] = h, i
                }, a = [
                    [P],
                    [$, 180],
                    [aa, 210],
                    ["captionName", ""],
                    ["columnCount", 1, M, Kc],
                    ["itemHeight", 21, M, Kc],
                    ["showHeader", !0],
                    ["sortState", 1, f("sortState")],
                    ["showNoDataItems", !0, f("showNoDataItems")],
                    ["showNoDataItemsInLast", !0, f("showNoDataItemsInLast")],
                    ["visuallyNoDataItems", !0, f("visuallyNoDataItems")],
                    [Q, i.getDefaultStyle(), function(a, b) {
                        Rb(this, a), nc(this), this.onPropertyChanged("visuallyNoDataItems", a, b)
                    }],
                    ["zoomFactor", 1, M, Kc],
                    ["isLocked"],
                    ["disableResizingAndMoving"]
                ], b = {
                    constructor: i,
                    IX: function() {
                        var a = this;
                        a.oX = _b(a.data), a.gX = _b(a.exclusiveDatas), a.xo = ac(a), a.captionName(a.columnName, !1), vc(a), a.onFiltered(), Rb(a, a.style()), nc(a)
                    },
                    getDOMElement: function() {
                        return this.xo
                    },
                    mX: function(a, b) {
                        var c, d, e = [];
                        if (0 !== b) {
                            for (c = s.jf.quickSort(a), d = 0; d < G(c); d++) e[d] = c[d].value;
                            return 2 === b && e.reverse(), e
                        }
                    },
                    iX: function() {
                        var a = this,
                            b = a.gX,
                            c = a.showNoDataItems() ? G(b) : G(b) - G(a.rX),
                            d = Math.ceil(c / a.columnCount()) * (a.itemHeight() + 2 * (a.lX + a.kX) + a.hX);
                        return d > a.dX
                    },
                    Bw: function(a, b) {
                        this.JX(a, b)
                    },
                    JX: function(a, b) {
                        var c = this,
                            d = b.newValue;
                        d !== c.sX && d <= c.nX.cw() && (c.sX = d, tc(c), qc(c))
                    },
                    onDataChanged: function() {
                        mc(this)
                    },
                    onRowsChanged: function() {
                        mc(this)
                    },
                    onColumnNameChanged: function(a, b) {
                        var c = this;
                        c.columnName === a && c._caption && (c.columnName = b, c.captionName(b, !1), A(c._caption).text(b))
                    },
                    onColumnRemoved: function(a) {
                        var b = this;
                        a === b.columnName && (b.slicerData.doUnfilter(a), wc(b), A(b.xo).remove(), b.xo = M)
                    },
                    onFiltered: function() {
                        var a = this,
                            b = a.slicerData,
                            c = a.columnName;
                        a.fX = kc(a), a.rX = b.getFilteredOutIndexes(c, 2), a.pX = b.getFilteredOutIndexes(c, 1), nc(a)
                    },
                    AD: function(a) {
                        var b = this,
                            c = Ic(b, a);
                        c && (8 === c[gb] && (b.HX = !0), 5 === c[gb] && (b.wX = [], b.GX = !0, a.ctrlKey ? xc(b, c) : a.shiftKey ? yc(b, c) : zc(b, c)), Cc(b, b.vX), (5 === c[gb] || 6 === c[gb] || 8 === c[gb] || 4 === c[gb] && b.AX) && a.stopPropagation())
                    },
                    CD: function(a) {
                        var b, c, d, e = this,
                            f = Ic(e, a);
                        f && (b = e.slicerData, c = e.vX, d = !1, 4 === f[gb] ? e.AX && (b.doUnfilter(e.columnName), Ec(e, 0), d = !0) : c && G(c) > 0 && !e.yX && !e.KX && (b.doFilter(e.columnName, {
                            exclusiveRowIndexes: e.wX
                        }), d = !0), e.GX = !1, e.HX = !1, d && (e.vX = [], e.wX = []))
                    },
                    BD: function(a) {
                        var b, c, d, e, f, g, i, j, k, l, m, n, o, p = this,
                            q = p.qX,
                            r = q ? new h(q[gb], q[hb]) : M,
                            s = Ic(p, a),
                            t = p.gX,
                            u = p.wX;
                        if (s && (!r || r[gb] !== s[gb] || 5 === r[gb] && r[hb] !== s[hb])) {
                            if (!p.GX) return p.qX = s, Fc(p, r), void Gc(p, s);
                            if (5 === s[gb]) if (b = t.indexOf(s[hb]), c = p.rX, z.Bb(u, b)) {
                                for (i = p.fX, j = i.indexOf(t[p.xX]), k = i.indexOf(s[hb]), l = Math.min(j, k), m = Math.max(j, k), n = [], d = 0, e = G(u); d < e; d++) o = u[d], f = i.indexOf(t[o]), (f > m || f < l) && n.push(o);
                                for (d = 0, e = G(n); d < e; d++) f = n[d], g = Hc(p, t[f]), z.Bb(c, f) ? sc(p, g, 20) : sc(p, g, 12), z.Fb(u, f)
                            } else g = Hc(p, t[b]), z.Bb(c, b) ? sc(p, g, 18) : sc(p, g, 10), z.Sb(u, b);
                            p.qX = s
                        }
                    },
                    uX: function() {
                        var a = this,
                            b = a.qX,
                            c = b ? new h(b[gb], b[hb]) : M;
                        a.qX = M, Fc(a, c)
                    },
                    Rw: function(a) {
                        var b = Ic(this, a);
                        return 8 === b[gb] && (a.stopPropagation(), !0)
                    },
                    nm: function(a) {
                        var b = this;
                        17 !== a.keyCode || b.yX || (b.yX = !0), 16 !== a.keyCode || b.KX || (b.KX = !0)
                    },
                    om: function(a) {
                        var b = this,
                            c = b.slicerData;
                        17 === a.keyCode && b.yX && (b.yX = !1), 16 === a.keyCode && b.KX && (b.KX = !1), !b.yX && !b.KX && G(b.vX) > 0 && (c.doFilter(b.columnName, {
                            exclusiveRowIndexes: b.wX
                        }), b.vX = [], b.wX = [])
                    },
                    onPropertyChanged: function(a, b, c) {
                        var d, e = this;
                        e.slicerData.OW && (d = e.slicerData.OW(), d.ITa.xVa(e, a, c))
                    }
                }, c = 0, d = G(a); c < d; c++) b[a[c][0]] = g(a[c][0], a[c][1], a[c][2], a[c][3]);
                return A.extend(i.prototype, b), i
            }(), h = function() {
                function a(a, b) {
                    var c = this;
                    c[gb] = a === L ? M : a, c[hb] = b === L ? M : b
                }
                return a
            }();

            function Lc(a, b, c) {
                var d, e, f, g, h = a.sj,
                    i = h.kj,
                    j = h.dataRange(),
                    k = j.row + j.rowCount - 1,
                    l = j.col + j.colCount - 1;
                for (d = j.row; d <= k; d++) for (e = [], b.push(e), f = j.col; f <= l; f++) e.push({
                    value: i.getValue(d, f),
                    text: i.getText(d, f)
                });
                for (f = 0; f < j.colCount; f++) g = h.getColumnName(f) || "", c.push(g)
            }
            function Mc(a, b) {
                var c, d, e = a.kj,
                    f = a.sj.rowFilter();
                for (e.suspendPaint(), c = f && f.Je || [], d = 0; d < G(c); d++) Nc(a, b, [c[d]]);
                e.resumePaint()
            }
            function Nc(a, b, c) {
                var d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s;
                for (d = 0; d < c.length; d++) {
                    if (e = a.sj, f = a.xr, g = c[d] - e.range().col, h = e.dataRange(), i = g + h.col, j = a.columnNames[g], k = [], l = {}, z.Bb(f.Je, i)) {
                        for (m = [], n = h.row; n < h.row + h.rowCount; n++) f.WY(n, i) || m.push(n);
                        for (o = 0; o < G(m); o++) p = m[o] - h.row, q = a.getExclusiveRowIndex(j, p), l[q] || (l[q] = !0, k.push(q))
                    } else for (r = G(a.getExclusiveData(j)), s = 0; s < r; s++) k.push(s);
                    Oc(Pc(a, j), k) || (b.prototype.doFilter.call(a, j, {
                        exclusiveRowIndexes: k
                    }), a.onFiltered(), a.kj.$p())
                }
            }
            function Oc(a, b) {
                var c, d = r.j.Fa;
                if (d(a) && d(b)) return !0;
                if (d(a) && !d(b) || !d(a) && d(b) || !d(a) && !d(b) && (!I(a) || !I(b)) || a.length !== b.length) return !1;
                for (c = 0; c < a.length; c++) if (a[c] !== b[c]) return !1;
                return !0
            }
            function Pc(a, b) {
                var c, d = a.getExclusiveData(b),
                    e = a.getFilteredOutIndexes(b, 1),
                    f = [];
                for (c = 0; c < G(d); c++) z.Bb(e, c) && f.push(c);
                return f
            }
            i = function(a) {
                A.inherit(b, a);

                function b(b) {
                    var c = this,
                        d = [],
                        e = [],
                        f = b.rowFilter();
                    c.sj = b, c.kj = b.kj, c.xr = f, c.MX = M, Lc(c, d, e), a.call(c, d, e), Mc(c, a), f && (f.filterHandler = function(b) {
                        Nc(c, a, b.columns)
                    })
                }
                var c = {
                    constructor: b,
                    OW: function() {
                        return this.kj
                    },
                    getTable: function() {
                        return this.sj
                    },
                    doFilter: function(b, c, d) {
                        var e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t = this,
                            u = t.kj,
                            w = t.sj,
                            x = t.xr,
                            y = c.ranges,
                            z = c.exclusiveRowIndexes,
                            A = !! z;
                        if (u.ITa.xVa(t, Ca, {
                                columnName: b,
                                oldValue: t.getFilteredIndexes(b)
                            }), e = t.getColumnIndex(b), !(e < 0 || !A && !y)) if (d) a.prototype.doFilter.call(t, b, c, d);
                        else {
                            if (f = A ? t.getExclusiveData(b) : t.getData(b), g = [], A) g = z;
                            else for (h = t.ef(), i = t.ff(), h[e] || t.We(e), j = h[e], k = 0; k < G(y); k++) for (l = y[k], m = t.Xe(j, l), n = m.start; n <= m.end; n++) g.push(i[e][n]);
                            if (u.suspendPaint(), o = w.startColumn() + e, x && x.removeFilterItems(o, !0), u.AR(), v) for (p = 0; p < G(g); p++) q = new v.$V(2, 0, f[g[p]]), q.useWildCards(!1), x && x.addFilterItem(o, q);
                            a.prototype.hf.call(t, b, c), r = [], s = {}, t.gf(b, r, s), x && (x.filter(o, !0), x.onFilter(x.SX(0, [o]))), t.onFiltered(), u.resumePaint()
                        }
                    },
                    doUnfilter: function(b) {
                        var c, d = this,
                            e = d.kj,
                            f = d.sj,
                            g = d.getColumnIndex(b),
                            h = d.xr;
                        g !== -1 && (e.ITa.xVa(d, Ca, {
                            columnName: b,
                            oldValue: d.getFilteredIndexes(b)
                        }), c = f.startColumn() + g, h.removeFilterItems(c), a.prototype.
                            if.call(d, b), h.unfilter(c, !0), h.onFilter(h.SX(0, [c])), d.onFiltered(), d.kj.$p())
                    },
                    refresh: function() {
                        var a = this,
                            b = [],
                            c = [];
                        Lc(a, b, c), a.bf(b, c), a.cf()
                    },
                    onColumnNameChanged: function(b, c) {
                        var d = this;
                        a.prototype.onColumnNameChanged.call(d, b, c), d.kj.slicers.all().forEach(function(a) {
                            a.columnName(c)
                        })
                    },
                    onRowsAdded: function(b, c) {
                        var d, e, f = this,
                            g = f.kj,
                            h = f.sj,
                            i = h.dataRange();
                        for (a.prototype.onRowsAdded.call(f, b, c, !0), d = b; d < b + c; d++) for (e = 0; e < G(f.columnNames); e++) f.data[d][e] = {
                            value: g.getValue(i.row + d, i.col + e),
                            text: g.getText(i.row + d, i.col + e)
                        };
                        f.bf(f.data, f.columnNames), f.cf(b, c, !0, "onRowsChanged")
                    },
                    onRowsRemoved: function(b, c) {
                        a.prototype.df.call(this, b, c, !1)
                    },
                    onColumnsAdded: function(a, b) {
                        var c, d, e, f, g = this,
                            h = g.kj,
                            i = g.sj,
                            j = i.dataRange(),
                            k = g.data,
                            l = g.columnNames;
                        for (c = 0; c < G(k); c++) for (d = a; d < a + b; d++) k[c].splice(d, 0, {
                            value: h.getValue(j.row + c, j.col + d),
                            text: h.getText(j.row + c, j.col + d)
                        });
                        for (e = a; e < a + b; e++) f = i.getColumnName(e) || "", l.splice(e, 0, f);
                        g.bf(k, l)
                    },
                    onColumnsRemoved: function(b, c) {
                        var d, e, f = this,
                            g = f.kj,
                            h = f.sj.name(),
                            i = f.columnNames,
                            j = [];
                        for (d = b; d < b + c; d++) j.push(i[d]);
                        a.prototype.onColumnsRemoved.call(f, b, c), e = g && g.slicers, j.forEach(function(a) {
                            e.all(h, a).forEach(function(a) {
                                e.remove(a.name())
                            })
                        })
                    },
                    onTableRemoved: function(a) {
                        var b, c, d, e = this;
                        a && a === e.sj && (e.MX = [], b = e.kj, c = b.slicers, d = a.name(), c.all(d).forEach(function(a) {
                            e.MX.push(a), c.remove(a.name())
                        }), c && Sc(c, e), e.Ze = [])
                    },
                    onTableAdded: function(a) {
                        var b, c = this,
                            d = c.kj,
                            e = d.slicers;
                        e && a && a.Aq() && Rc(e, a.getSlicerData()), b = c.MX || [], b.forEach(function(a) {
                            var b = a.name(),
                                c = a.ZX.sj.name(),
                                d = a.columnName(),
                                f = a.style();
                            e.add(b, c, d, f)
                        })
                    }
                };
                return A.extend(b.prototype, c), b
            }(s.GeneralSlicerData), u && A.extend(u.Table.prototype, {
                getSlicerData: function() {
                    var a = this;
                    return a.ZX || (a.ZX = new i(a)), a.ZX
                }
            });

            function Qc(a) {
                var b = a.sj,
                    c = b.kj,
                    d = b && b.rowFilter();
                return !c.options.isProtected || d && d.TX(c)
            }
            j = function(a) {
                A.inherit(b, a);

                function b(b, c, d) {
                    a.call(this, b, c, d), this.isSelected(!1)
                }
                var c = {
                    constructor: b,
                    isSelected: E("isSelected", !1),
                    sheet: E("sheet"),
                    slicer: E("slicer"),
                    IX: function() {
                        var b = this,
                            c = b.slicerData;
                        c && c instanceof i && (b.sheet(c.OW()), b.sj = c.getTable()), a.prototype.IX.call(this)
                    },
                    onColumnRemoved: function(a) {
                        var b, c = this,
                            d = c.sheet(),
                            e = c.sj,
                            f = c.slicerData;
                        a === c.columnName && (b = f.getFilteredOutIndexes(a, 1), 0 !== G(b) && f.doUnfilter(a), d && e && d.wr.Fb(c.name()))
                    },
                    mX: function(a, b) {
                        var c, d, e, f, g, h, i = this,
                            j = i.slicerData,
                            k = j.getColumnIndex(i.columnName),
                            l = i.sj,
                            m = l.dataRange(),
                            n = [];
                        if (0 === b) return a;
                        for (c = [], d = j.OW(), e = 0; e < G(a); e++) f = j.getRowIndexes(i.columnName, e), c.push(d.getValue(m.row + f[0], m.col + k));
                        for (g = s.jf.quickSort(c), h = 0; h < G(g); h++) n[h] = a[g[h].index];
                        return 2 === b && n.reverse(), n
                    },
                    Bw: function(b, c) {
                        var d, e, f = this,
                            g = f.sheet(),
                            h = f.slicer();
                        for (h && g.ER(h) || (c.newValue = c.oldValue), d = Yc(h), e = 0; e < G(d); e++) a.prototype.JX.call(d[e], b, c)
                    },
                    AD: function(b) {
                        var c, d, e, f = this,
                            g = f.sheet(),
                            h = f.slicer();
                        if (h && g.ER(h)) {
                            if (c = Ic(f, b), !Qc(f) && (5 === c[gb] || 6 === c[gb] || 8 === c[gb])) return void b.stopPropagation();
                            for (d = Yc(h), e = 0; e < G(d); e++) a.prototype.AD.call(d[e], b)
                        }
                    },
                    CD: function(a) {
                        var b, c, d, e, f, g, h, i, j, k, l, m, n, o, p = this,
                            q = p.sheet(),
                            r = p.slicer();
                        if (r && q.ER(r) && Qc(p) && (b = Ic(p, a))) {
                            for (c = p.slicerData, d = p.vX, e = p.wX, f = c.getExclusiveData(p.columnName), g = !1, h = M, 4 === b[gb] || 5 === b[gb] && G(e) === G(f) && !p.yX && !p.KX ? (i = c.getFilteredIndexes(p.columnName), h = q.wu().execute({
                                cmd: "unfilterSlicer",
                                sheetName: q.name(),
                                slicerData: c,
                                columnName: p.columnName,
                                value: i
                            }), g = !0) : d && G(d) > 0 && !p.yX && !p.KX && (j = c.getFilteredIndexes(p.columnName), k = e.concat(), h = q.wu().execute({
                                cmd: "filterSlicer",
                                sheetName: q.name(),
                                slicerData: c,
                                columnName: p.columnName,
                                oldValue: j,
                                newValue: k
                            }), g = !0), l = Yc(r), m = 0, n = G(l); m < n; m++) o = l[m], o.GX = !1, o.HX = !1, g && (o.vX = [], o.wX = []);
                            return !!h
                        }
                    },
                    BD: function(b) {
                        var c, d, e = this,
                            f = e.sheet(),
                            g = e.slicer();
                        if (g && !e.HX && f.ER(g)) for (c = Yc(g), d = 0; d < G(c); d++) a.prototype.BD.call(c[d], b)
                    },
                    uX: function(b) {
                        var c, d, e = this,
                            f = e.sheet(),
                            g = e.slicer();
                        if (g && f.ER(g)) for (c = Yc(g), d = 0; d < G(c); d++) a.prototype.uX.call(c[d], b)
                    },
                    Rw: function(b) {
                        var c, d, e, f, g = this;
                        return !!a.prototype.Rw.call(this, b) || (c = g.sheet(), d = c.slicers, e = d && d.UX(), f = g.nX, !! (e && 1 === G(e) && g.isSelected() && g.iX() && f) && (f.sC(b), b.stopPropagation(), !0))
                    },
                    om: function(a) {
                        var b, c, d, e, f = this,
                            g = f.slicerData,
                            h = f.sheet(),
                            i = f.wX;
                        17 === a.keyCode && f.yX && (f.yX = !1), 16 === a.keyCode && f.KX && (f.KX = !1), !f.yX && !f.KX && G(f.vX) > 0 && (b = G(g.getExclusiveData(f.columnName)), G(i) === b ? (c = g.getFilteredIndexes(f.columnName), h.wu().execute({
                            cmd: "unfilterSlicer",
                            sheetName: h.name(),
                            slicerData: g,
                            columnName: f.columnName,
                            value: c
                        })) : (d = g.getFilteredIndexes(f.columnName), e = i.concat(), h.wu().execute({
                            cmd: "filterSlicer",
                            sheetName: h.name(),
                            slicerData: g,
                            columnName: f.columnName,
                            oldValue: d,
                            newValue: e
                        })), f.vX = [], f.wX = [])
                    }
                };
                return A.extend(b.prototype, c), b
            }(g);

            function Rc(a, b) {
                var c, d, e = a.VX;
                if (b) {
                    for (c = b.getTable(), d = 0; d < G(e); d++) if (e[d].getTable() === c) return;
                    e.push(b)
                }
            }
            function Sc(a, b) {
                z.Fb(a.VX, b)
            }
            function Tc(a, b) {
                var c, d, e, f = a.VX;
                for (c = 0; c < G(f); c++) if (d = f[c], e = d.getTable(), d && e && e.tableName() === b) return d;
                return M
            }
            function Uc(a, b, c) {
                var d;
                return b ? w(Vc(a), b) && (d = y().Exp_SlicerNameExist) : d = y().Exp_SlicerNameInvalid, d && c && (c.error = Error(d)), !d
            }
            function Vc(a) {
                var b, c, d, e = a.kj,
                    f = {},
                    g = e && e.parent && e.parent.sheets;
                if (g) for (b = 0; b < G(g); b++) {
                    c = g[b].slicers.XX();
                    for (d in c) w(c, d) && (f[d] = c[d])
                }
                return f
            }
            k = function() {
                function a(a) {
                    var b = this;
                    b.kj = a, b.VX = [], b.WX = {}
                }
                return a.prototype = {
                    constructor: a,
                    add: function(a, b, c, d) {
                        var e, f = this,
                            g = f.kj,
                            h = g.parent,
                            i = h.jga(b);
                        return i && i.getColumnIndexInTable(c) !== -1 ? (g.suspendPaint(), e = new l(a, i, c), d && e.style(d), f.Cz(e), g.wr.Sb(e), g.resumePaint(), e) : M
                    },
                    Cz: function(a) {
                        var b, c, d = this,
                            e = d.kj;
                        if (a) {
                            if (b = a.name(), c = {}, !Uc(d, b, c)) throw c.error;
                            d.WX[b] = a, Rc(d, a.YX()), e.ITa.xVa(d, Da, b)
                        }
                    },
                    get: function(a) {
                        return a === M || a === L ? M : this.WX[a]
                    },
                    remove: function(a) {
                        var b = this,
                            c = b.kj;
                        b.vV(a), c.wr.Fb(a)
                    },
                    vV: function(a) {
                        var b, c, d, e = this,
                            f = e.kj,
                            g = e.WX,
                            h = e.get(a);
                        if (h && w(g, a)) {
                            for (b = h.YX(), c = Yc(h), d = 0; d < G(c); d++) b.detachListener(c[d]);
                            f.ITa.xVa(e, Ea, h), delete e.WX[a]
                        }
                    },
                    U3: function(a, b) {
                        var c, d = this,
                            e = d.kj,
                            f = {};
                        if (!Uc(d, b, f)) throw f.error;
                        c = d.WX[a], delete d.WX[a], d.WX[b] = c, e.wr.U3(a, b)
                    },
                    clear: function() {
                        var a = this,
                            b = a.kj;
                        b.suspendPaint(), A.each(this.WX, function(b, c) {
                            a.remove(c.name())
                        }), b.resumePaint()
                    },
                    all: function(a, b) {
                        var c = [];
                        return A.each(this.WX, function(d, e) {
                            a && (Xc(e).name() !== a || b && e.columnName() !== b) || c.push(e)
                        }), c
                    },
                    XX: function() {
                        return this.WX
                    },
                    HS: function(a) {
                        var b, c, d, e = Vc(this);
                        if (!w(e, a)) return a;
                        for (b = 1, c = " ", d = a.split(c)[0]; w(e, d + c + b);) b++;
                        return d + c + b
                    },
                    UX: function() {
                        var a, b, c, d = this,
                            e = d.WX;
                        if (!e || q.GC$.isEmptyObject(e)) return [];
                        a = [];
                        for (b in e) w(e, b) && (c = e[b], c && c.isSelected() && a.push(c));
                        return a
                    },
                    W3: function(a) {
                        var b, c, d = this,
                            e = d.UX();
                        if (1 !== G(e)) return !1;
                        if (b = Yc(e[0]), G(b) > 0) {
                            for (c = 0; c < G(b); c++) b[c].Rw(a);
                            return !0
                        }
                        return !1
                    },
                    toJSON: function() {
                        var a, b = this,
                            c = [],
                            d = b.WX;
                        if (d && !q.GC$.isEmptyObject(d)) for (a in d) w(d, a) && c.push(d[a].toJSON());
                        return c
                    },
                    fromJSON: function(a) {
                        var b, c, d, e, f, g, h, i;
                        if (a && 0 !== G(a)) for (b = this, c = b.kj, d = c.parent, b.WX = {}, e = 0; e < G(a); e++) f = a[e].tableName, g = a[e].columnName, f && g && (h = d.jga(f), h && h.getColumnIndexInTable(g) !== -1 && (i = new l(a[e].name, h, g), i.sheet(c), i.fromJSON(a[e]), c.slicers.Cz(i), c.wr.Sb(i)))
                    }
                }, a
            }();

            function Wc(a, b, c) {
                var d, e, f = a.ZX;
                f && (d = f.OW(), e = d.slicers, e.all().forEach(function(d) {
                    d === a && (e.U3(b, c), a.onPropertyChanged(P, c, b))
                }))
            }
            function Xc(a) {
                return a.ZX.getTable()
            }
            function Yc(a) {
                return a.$X
            }
            l = function(a) {
                var b, c, d, e, g, h = "nameInFormula",
                    i = "captionName",
                    k = "columnCount",
                    l = "columnName",
                    m = "itemHeight",
                    n = "showHeader",
                    o = "sortState",
                    p = "disableResizingAndMoving",
                    r = "showNoDataItems",
                    s = "showNoDataItemsInLast",
                    t = "visuallyNoDataItems",
                    u = "isSelected",
                    v = "dynamicMove",
                    w = "dynamicSize",
                    x = "tableName",
                    y = "Slicer",
                    z = 100,
                    B = 100,
                    C = 192,
                    D = 250;
                A.inherit(J, a), b = [];

                function F(a, c, d, e) {
                    return b.push(a), E(a, c, function(b, c) {
                        d.call(this, a, b, c)
                    }, e)
                }
                function H(a) {
                    var b, c, d, e, f;
                    if (!a) return !1;
                    if (b = this, c = b.ZX, a === b.name()) return !1;
                    if (c && (d = c.OW(), e = d && d.slicers, e && (f = {}, !Uc(e, a, f)))) throw f.error;
                    return !0
                }
                function I(a, b, c) {
                    var d, e, f = this,
                        g = f.$X || [];
                    for (d = 0; d < G(g); d++) g[d][a] && ("style" === a ? g[d][a](b.toJSONInternal()) : g[d][a](b));
                    e = f.sheet(), e && (e.ITa.xVa(f, a, c), f.Wq({
                        sheet: e,
                        sheetName: e.name(),
                        slicer: f,
                        propertyName: a
                    }))
                }
                function J(b, c, d) {
                    a.call(this, b, z, B, C, D);
                    var e = this,
                        f, g;
                    e.typeName = y, e.g3 = y, c && (f = c.kj, e.sheet(f), g = Tc(f.slicers, c.tableName())), g || (g = c.getSlicerData()), e.ZX = g, e[l](d), e.$X = [], e._X = d, e[h](y + "_" + d), e[i](d), e[w](!1), e[v](!1)
                }
                for (c = [
                    [P, "", function(a, b, c) {
                        Wc(this, c, b)
                    },
                        H],
                    [i, "", I],
                    [k, 1, I, Kc],
                    [m, 21, I, Kc],
                    [n, !0, I],
                    [o, 1, I],
                    [p, !1, function(a, b, c) {
                        var d, e = this;
                        e.allowMove(!b, !1), e.allowResize(!b, !1), I.call(e, p, b, c), d = e.sheet(), d && d.$p()
                    }],
                    [r, !0, I],
                    [s, !0, I],
                    [t, !0, I],
                    [Q, f.light1(), I],
                    [l, "", function(a, b, c) {
                        var d, e = this;
                        e._X = b, e.captionName(b, !1), d = e.sheet(), d.ITa.xVa(e, a, c)
                    }]
                ], d = {
                    constructor: J,
                    sourceName: function() {
                        return this._X
                    },
                    nameInFormula: F(h, "", I),
                    onPropertyChanged: I,
                    cloneContent: function() {
                        var a = this,
                            b = a.sheet(),
                            c = a.ZX,
                            d = new j(a.name(), c, a.columnName());
                        return d[$](a[$](), !1)[aa](a[aa](), !1)[i](a[i]())[k](a[k]())[m](a[m]())[n](a[n]())[o](a[o]()).isLocked(a.isLocked())[p](a[p]())[r](a[r]())[s](a[s]())[t](a[t]())[Q](a[Q]().toJSONInternal()).zoomFactor(b.zoom())[u](a[u]()).slicer(a), d.sheet() !== b && d.sheet(b), a.$X.push(d), d.getDOMElement()
                    },
                    YX: function() {
                        return this.ZX
                    },
                    hga: function() {
                        return !1
                    },
                    refresh: function(a) {
                        var b, c = this.$X;
                        for (b = 0; b < G(c); b++) nc(c[b], a)
                    },
                    refreshContent: function(a) {
                        var b = this,
                            c = b.sheet().zoom();
                        c !== b.MP && (b.MP = c, b.refresh(c))
                    },
                    clone: function(a) {
                        var b, c = this;
                        return !c.sheet() && a && c.sheet(a, !1), b = new J(c.name(), Xc(c), c.columnName()), b.sheet(c.sheet(), !1), b.fromJSON(c.toJSON(), !1, c.ZX), b
                    },
                    fromJSON: function(c, d, e) {
                        var f, g, h, i, j, k, m, n, o, p, r;
                        c && (f = this, g = c.tableName, h = c[l], g && h && (a.prototype.fromJSON.call(this, c), i = f.sheet(), j = i.slicers, k = i.parent, m = e ? e : Tc(j, g), m || (n = k.jga(g), m = n.getSlicerData(), Rc(j, m)), f.ZX = m, f[l](h), o = c.x !== L ? c.x : z, p = c.y !== L ? c.y : B, f.position(new q.Point(o, p), !1), f[$](c[$] !== L ? c[$] : C, !1), f[aa](c[aa] !== L ? c[aa] : D, !1), c.sourceName !== L && (f._X = c.sourceName), b.forEach(function(a) {
                            var b = c[a];
                            b !== L && f[a](b, !1)
                        }), c.style !== L && (r = Mb(), r.fromJSON(c.style), f.style(r, !1))))
                    },
                    toJSON: function() {
                        var a, c, d, e = this,
                            f = {},
                            g = ["x", "y", $, aa, v, w, "isLocked", "fixedPosition"];
                        return g.forEach(function(a) {
                            var b = e[a]();
                            e[a].isDefault(b) && a !== v && a !== w || (f[a] = b)
                        }), a = e._X, a && (f.sourceName = a), e[Q]() && (f[Q] = e[Q]().toJSON()), c = e.ZX, d = c.getTable(), d[x] && (f[x] = d[x]()), b.forEach(function(a) {
                            var b = e[a]();
                            a === Q || e[a].isDefault(b) || (f[a] = b)
                        }), f
                    },
                    Wq: function(a) {
                        var b = this.sheet();
                        b && b.Wq(q.Events.SlicerChanged, a)
                    }
                }, e = 0, g = G(c); e < g; e++) d[c[e][0]] = F(c[e][0], c[e][1], c[e][2], c[e][3]);
                return A.extend(J.prototype, d), J
            }(t.FloatingObject), J(q.Worksheet.prototype, {
                t4: function(a, b, c, d, e) {
                    var f, g, h, i, j, k, l, m, n;
                    if (e === L && (e = 3), f = this, g = f.tables) {
                        for (h = 0; h < c; h++) for (i = 0; i < d; i++) j = h + a, k = i + b, l = g.find(j, k), 3 === e && l && l.Aq() && (m = l.dataRange(), m.contains(j, k) && (n = l.getSlicerData(), n && n.onDataChanged([{
                            columnName: l.getColumnName(k - m.col),
                            row: j - m.row,
                            data: {
                                value: f.getValue(j, k),
                                text: f.getText(j, k)
                            }
                        }])));
                        f.ITa.xVa(null, Fa, {
                            row: a,
                            col: b,
                            rowCount: c,
                            colCount: d,
                            sheetArea: e
                        })
                    }
                }
            }), m = {
                priority: 900,
                init: function() {
                    var a = this;
                    a.slicers = new k(a)
                },
                setHost: function() {
                    var a = this;
                    a.bind("tableRemoved", function(b, c) {
                        var d, e, f, g = c.tables;
                        for (d = 0; d < G(g); d++) e = a.slicers, f = Tc(e, g[d].name()), f && Sc(e, f)
                    })
                },
                toJson: function(a, b) {
                    var c, d = b && b.ignoreStyle;
                    d || (c = this.slicers.toJSON(), c.length > 0 && (a.slicers = c))
                },
                preProcessMouseWheel: function(a) {
                    var b = this.slicers;
                    b && b.W3(a.e) && (a.r = !0)
                }
            }, q.Worksheet.$n("slicer", m), n = function(a) {
                var b = "unfilterSlicerByKey",
                    c = "filterSlicer",
                    d = "unfilterSlicer",
                    e = "changeSlicerProperty";
                a.register(b, C[b], 67, !1, !1, !0, !1), a.register(c, C[c]), a.register(d, C[d]), a.register(e, C[e])
            }, o = {
                init: function() {
                    n(this.commandManager())
                },
                fromJson: function(a, b, c) {
                    var d, e, f, g, h, i, j = c && c.ignoreStyle;
                    if (!j) for (d = this, e = 0, f = d.getSheetCount(); e < f; e++) g = d.getSheet(e), h = a.sheets && a.sheets[g.name()], i = h && h.slicers, i && g.slicers.fromJSON(i)
                }
            }, q.Workbook.$n("slicer", o), p = q.lUa, A.extend(p.prototype, {
                xVa: function(a, b, c) {
                    var d, e = this.zTa;
                    e && (d = e.EUa, d || (d = e.EUa = []), d.push({
                        slicerItem: a,
                        name: b,
                        value: c
                    }))
                },
                yVa: function(a) {
                    var b, c, d, e, f, g, h;
                    if (a) for (b = a.length - 1; b >= 0; b--) if (c = a[b], d = c.slicerItem, e = c.name, f = c.value, e === Ca) g = f.columnName, h = f.oldValue, d.doFilter(g, {
                        exclusiveRowIndexes: h
                    });
                    else if (e === Da) d.vV(f);
                    else if (e === Ea) {
                        if (!f) return;
                        d.Cz(f)
                    } else if (e === Fa) {
                        if (!f) return;
                        this.kj.t4(f.row, f.col, f.rowCount, f.colCount, f.sheetArea)
                    } else d[e](f)
                }
            }), p.$n("SLICER_PROPERTYCHANGE", {
                priority: 5500,
                undo: function(a) {
                    var b = a.EUa;
                    b && this.yVa(b)
                }
            }), x = {
                ItemSlicer: g,
                SlicerStyleInfo: Hb,
                SlicerBorder: b,
                SlicerStyle: d,
                SlicerStyles: f,
                TableSlicerData: i,
                Slicer: l,
                SlicerCollection: k
            }, a.exports = x
        }()
}, function(a, b) {
    a.exports = GC.Spread.Slicers
}, function(a, b) {
    a.exports = GC.Spread.Sheets.FloatingObjects
}, function(a, b) {
    a.exports = GC.Spread.Sheets.Tables
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a = c(87),
                b = a.Commands,
                d = a.GC$,
                e = b.ActionBase,
                f = function(a) {
                    d.inherit(c, a);

                    function c(b, c) {
                        a.call(this), this.kj = b, this.VQ = c
                    }
                    var e = {
                        canExecute: function() {
                            return !!this.VQ.slicerData
                        },
                        execute: function() {
                            var a, c, d = this,
                                e = d.VQ;
                            return !!d.canExecute() && (a = d.kj, a.ITa.startTransaction(), d.Lz(a, !0), e.slicerData.doFilter(e.columnName, {
                                    exclusiveRowIndexes: e.newValue
                                }), d.Mz(a, !0), c = b.bWa(a.name()), d.VQ[c] = a.ITa.endTransaction(), !0)
                        },
                        canUndo: function() {
                            return !!this.VQ.slicerData
                        },
                        undo: function() {
                            var a, c, d, e = this;
                            return !!e.canUndo() && (a = e.kj, c = b.bWa(a.name()), d = e.VQ[c], e.Lz(a, !0), a.ITa.undo(d), e.Mz(a, !0), !0)
                        }
                    };
                    return d.extend(c.prototype, e), c
                }(e),
                g = function(a) {
                    d.inherit(c, a);

                    function c(b, c) {
                        a.call(this), this.kj = b, this.VQ = c
                    }
                    var e = {
                        canExecute: function() {
                            return !!this.VQ.slicerData
                        },
                        execute: function() {
                            var a, c, d = this,
                                e = d.VQ;
                            return !!d.canExecute() && (a = d.kj, a.ITa.startTransaction(), d.Lz(a, !0), e.slicerData.doUnfilter(e.columnName), d.Mz(a, !0), c = b.bWa(a.name()), d.VQ[c] = a.ITa.endTransaction(), !0)
                        },
                        canUndo: function() {
                            return !!this.VQ.slicerData
                        },
                        undo: function() {
                            var a, c, d, e = this;
                            return !!e.canUndo() && (a = e.kj, c = b.bWa(a.name()), d = e.VQ[c], e.Lz(a, !0), a.ITa.undo(d), e.Mz(a, !0), !0)
                        }
                    };
                    return d.extend(c.prototype, e), c
                }(e),
                h = function(a) {
                    d.inherit(b, a);

                    function b(b, c) {
                        a.call(this), this.kj = b, this.VQ = c
                    }
                    var c = {
                        canExecute: function() {
                            return !!this.VQ.slicer
                        },
                        execute: function() {
                            var a, b = this,
                                c = b.VQ;
                            return !!b.canExecute() && (a = b.kj, b.Lz(a, !0), c.slicer[c.propertyName](c.newValue), b.Mz(a, !0), !0)
                        },
                        canUndo: function() {
                            return !!this.VQ.slicer
                        },
                        undo: function() {
                            var a, b = this,
                                c = b.VQ;
                            return !!b.canUndo() && (a = b.kj, b.Lz(a, !0), c.slicer[c.propertyName](c.oldValue), b.Mz(a, !0), !0)
                        }
                    };
                    return d.extend(b.prototype, c), b
                }(e),
                i = b.h4;
            b.filterSlicer = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return i(a, f, b, c)
                }
            }, b.unfilterSlicer = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return i(a, g, b, c)
                }
            }, b.changeSlicerProperty = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return i(a, h, b, c)
                }
            }, b.unfilterSlicerByKey = {
                canUndo: !1,
                execute: function(a, c) {
                    var d, e, f, g = b.bT(a, c),
                        h = g.slicers.UX();
                    if (1 === h.length && (d = h[0], e = d.YX())) return f = e.getFilteredIndexes(d.columnName()), g.wu().execute({
                        cmd: "unfilterSlicer",
                        sheetName: g.name(),
                        slicerData: e,
                        columnName: d.columnName(),
                        value: f
                    })
                }
            }
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {
                Blank: "(blank)",
                Exp_SlicerNameInvalid: "The slicer name is not valid.",
                Exp_SlicerNameExist: "The slicer name is already in use, please enter a unique name."
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(145);
            c(146), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f = c(26),
                g = c(87),
                h = c(127),
                i = h.Condition,
                j = h.$V,
                k = f.u.Db,
                l = f.j.Fa,
                m = g.GC$,
                n = null,
                o = void 0,
                p = g.Ul,
                q = p.Pl,
                r = p.Ol,
                s = p.a_a,
                t = g.CalcEngine,
                u = g.kf,
                v = Math.min,
                w = Math.max,
                x = f.l;

            function y(a) {
                if (l(a)) return 0;
                if ("number" == typeof a) return a;
                if ("string" == typeof a) {
                    var b = parseFloat(a);
                    if (!isNaN(b) && "" + b === a) return b
                }
                return n
            }
            function z(a) {
                return a instanceof Date ? a : "string" == typeof a ? new Date(a) : n
            }
            function A(a, c) {
                var d, e, f;
                if (!l(a)) return 1 === a || 2 === a ? d = b.createNumberValidator(c.operator, c.value1, c.value2, 1 === a) : 3 === a ? c.value ? d = b.createListValidator(c.value) : c.formula && (d = b.createFormulaListValidator(c.formula)) : 4 === a || 5 === a ? (e = c.value1, f = c.value2, e && "/OADate(" === e.substr(0, 8) && (e = x.Rka(e)), f && "/OADate(" === f.substr(0, 8) && (f = x.Rka(f)), d = b.createDateValidator(c.operator, e, f)) : 6 === a ? d = b.createTextLengthValidator(c.operator, c.value1, c.value2) : 7 === a && (d = b.createFormulaValidator(c.formula)), d ? d.condition() : void 0
            }
            b = {}, b.CriteriaType = {
                anyValue: 0,
                wholeNumber: 1,
                decimalValues: 2,
                list: 3,
                date: 4,
                time: 5,
                textLength: 6,
                custom: 7
            }, b.DataValidationResult = {
                forceApply: 0,
                discard: 1,
                retry: 2
            }, b.ErrorStyle = {
                stop: 0,
                warning: 1,
                information: 2
            }, d = function() {
                function a(b) {
                    var c = this;
                    c.id = a.w$++, b && (c.condition(b), c.condition().ignoreBlank(c.ignoreBlank())), c.n5 = []
                }
                function b(a, b, c, d, e, f) {
                    var g, h, i, j, k, l, m, n, o, p, q, r, s, t, x, y, z, A, B, C, D, E;
                    return a.intersect(b, c, d, e) ? (g = a.rowCount, h = a.colCount, i = w(0, a.row), j = w(0, a.col), k = !1, l = !1, m = !1, b = w(0, b), c = w(0, c), f || (f = [-1, -1]), n = f[0], o = f[1], g === -1 && (g = n - i, l = !0), h === -1 && (h = o - j, k = !0), d === -1 && (d = n - b), e === -1 && (e = o - c, m = !0), p = i, q = i + g - 1, r = j, s = j + h - 1, t = b, x = b + d - 1, y = c, z = c + e - 1, A = [], p !== -1 && r !== -1 && t !== -1 && y !== -1 && (y - r > 0 && (B = u(p, r, l ? -1 : g, y - r), A.push(B)), s - z > 0 && (C = u(p, z + 1, l ? -1 : g, s - z), A.push(C)), t - p > 0 && (D = u(p, w(y, r), t - p, k && m ? -1 : v(z, s) - w(y, r) + 1), A.push(D)), q - x > 0 && (E = u(x + 1, w(y, r), q - x, k && m ? -1 : v(z, s) - w(y, r) + 1), A.push(E))), A) : [a]
                }
                var c = ["errorStyle", "ignoreBlank", "inCellDropdown", "showInputMessage", "showErrorMessage", "inputTitle", "errorTitle", "inputMessage", "errorMessage", "comparisonOperator", "type", "condition"];
                return a.prototype = {
                    constructor: a,
                    errorStyle: q("errorStyle", 0),
                    ignoreBlank: q("ignoreBlank", !0, function(a) {
                        this.condition() && this.condition().ignoreBlank(a)
                    }),
                    inCellDropdown: q("inCellDropdown", !0),
                    showInputMessage: q("showInputMessage", !0),
                    showErrorMessage: q("showErrorMessage", !0),
                    inputTitle: q("inputTitle", ""),
                    errorTitle: q("errorTitle", ""),
                    inputMessage: q("inputMessage", ""),
                    errorMessage: q("errorMessage", ""),
                    comparisonOperator: q("comparisonOperator", 6),
                    condition: q("condition", n),
                    type: q("type", 0),
                    value1: function(a, b) {
                        var c, d = this.condition(),
                            e = d && d.item1() ? d.item1() : d;
                        return e ? (c = e.formula(a, b), c && c.length > 0 ? "=" + k(m.trim("" + c), "=") : e.expected()) : n
                    },
                    value2: function(a, b) {
                        var c, d = this.condition(),
                            e = d && d.item2() ? d.item2() : d;
                        return e ? (c = e.formula(a, b), c && c.length > 0 ? "=" + k(m.trim("" + c), "=") : e.expected()) : n
                    },
                    isValid: function(a, b, c, d) {
                        var e, f, g, h = this,
                            i = h.condition();
                        if (i) {
                            if (h.ignoreBlank() && (l(d) || "" === d)) return !0;
                            if (e = d, !l(d)) switch (h.type()) {
                                case 0:
                                    return !0;
                                case 2:
                                case 1:
                                    f = y(d), l(f) || (e = f);
                                    break;
                                case 4:
                                case 5:
                                    f = z(d), l(f) || (e = f);
                                    break;
                                case 7:
                                case 3:
                                case 6:
                            }
                            a && (a.lRa = !0);
                            try {
                                g = i.evaluate(a, b, c, e, e)
                            } catch (a) {
                                g = !0
                            } finally {
                                a && (a.lRa = !1)
                            }
                            return g
                        }
                        return !0
                    },
                    reset: function() {
                        var a = this;
                        a.errorStyle(0), a.ignoreBlank(!0), a.inCellDropdown(!0), a.showInputMessage(!0), a.showErrorMessage(!0), a.inputTitle(""), a.errorTitle(""), a.inputMessage(""), a.errorMessage(""), a.comparisonOperator(6), a.type(0), a.condition(n), a.n5.length = 0
                    },
                    getValidList: function(a, b, c) {
                        if (!h) return n;
                        var d = this.condition();
                        return d !== n && 3 === this.type() && 12 === d.conType() ? d.getValidList(a, b, c) : n
                    },
                    toJSON: function(a) {
                        var b, d = this,
                            e = {};
                        return c.forEach(function(b) {
                            var c = d[b]();
                            d[b].isDefault(c) || (e[b] = c && c.toJSON ? c.toJSON(a) : c)
                        }), b = d.n5.map(function(a) {
                            return a.row === -1 && a.col === -1 ? u(-1, 0, a.rowCount, a.colCount) : a
                        }), e.ranges = t.rangesToFormula(b, 0, 0, 15, !1), m.isEmptyObject(e) ? o : e
                    },
                    fromJSON: function(a, b, d) {
                        var e, f, g, h, i;
                        a && !m.isEmptyObject(a) && (e = this, a.ranges && (e.n5 = t.formulaToRanges(d, a.ranges, 0, 0, !0)[0].ranges), c.forEach(function(c) {
                            var f, g, h = a[c];
                            r(h) && ("condition" === c ? (f = j(), f.fromJSON(a.condition, d, b), e.condition(f, !1), g = f.ranges(), g && g.length ? e.n5 = g : f.ranges(e.n5), f.context(d)) : e[c](h, !1))
                        }), f = a.validatorInfo, f && (g = d.Wu.useR1C1, h = A(a.type, f), i = f.operator, h && (h.ranges(e.n5), h.ignoreBlank(e.ignoreBlank()), h.context(d), g && s(h), e.condition(h)), l(i) || e.comparisonOperator(i)))
                    },
                    clone: function(b) {
                        var c, d;
                        return this.Nja ? (c = this.condition(), c && c.initExpression(), this) : (d = new a, d.fromJSON(this.toJSON(b), !1, b || this.kj), delete d.ranges, d)
                    },
                    context: function(a) {
                        if (a) {
                            this.xc = a;
                            var b = this.condition();
                            b && (b.ranges(this.n5), b.context(a))
                        }
                        return this.xc
                    },
                    xja: function(a) {
                        var b, c;
                        if (a) {
                            for (b = this.n5, c = 0; c < b.length; c++) if (b[c].containsRange(a)) return;
                            b.push(a)
                        }
                    },
                    IW: function(a) {
                        var c, d, e, f, g, h, i, j = this,
                            k = j.n5;
                        a && k.length && (c = a.row, d = a.col, e = a.rowCount, f = a.colCount, g = [], h = j.kj, i = h && [h.getRowCount(), h.getColumnCount()], k.forEach(function(a) {
                            g.push(b(a, c, d, e, f, i))
                        }), j.n5 = [].concat.apply([], g))
                    },
                    l1: function() {
                        return this.n5
                    },
                    rI: function(a, b) {
                        a < 0 || b <= 0 || (this.condition() && this.condition().initExpression(), this.n5.forEach(function(c) {
                            var d = c.row;
                            a <= d ? c.row += b : d < a && a < d + c.rowCount && (c.rowCount += b)
                        }), this.condition() && this.condition().ranges(this.n5))
                    },
                    GR: function(a, b) {
                        if (!(a < 0 || b <= 0)) {
                            this.condition() && this.condition().initExpression();
                            var c = [];
                            this.n5.forEach(function(d) {
                                var e, f = d.row,
                                    g = d.rowCount;
                                a < f ? (e = a + b - f, e <= 0 ? f -= b : (f -= e, d.rowCount -= e), f < 0 && (d.rowCount += f, f = 0), d.row = f) : f <= a && a < f + g && (d.rowCount -= v(b, f + g - a)), 0 !== d.rowCount && c.push(d)
                            }), this.n5 = c, this.condition() && this.condition().ranges(this.n5)
                        }
                    },
                    tI: function(a, b) {
                        a < 0 || b <= 0 || (this.condition() && this.condition().initExpression(), this.n5.forEach(function(c) {
                            var d = c.col;
                            a <= d ? c.col += b : d < a && a < d + c.colCount && (c.colCount += b)
                        }), this.condition() && this.condition().ranges(this.n5))
                    },
                    HR: function(a, b) {
                        if (!(a < 0 || b <= 0)) {
                            this.condition() && this.condition().initExpression();
                            var c = [];
                            this.n5.forEach(function(d) {
                                var e, f = d.col,
                                    g = d.colCount;
                                a < f ? (e = a + b - f, e <= 0 ? f -= b : (f -= e, d.colCount -= e), f < 0 && (d.colCount += f, f = 0), d.col = f) : f <= a && a < f + g && (d.colCount -= v(b, f + g - a)), 0 !== d.colCount && c.push(d)
                            }), this.n5 = c, this.condition() && this.condition().ranges(this.n5)
                        }
                    },
                    bc: function() {
                        var a, b = this,
                            c = b.yja;
                        return c || (a = b.toJSON(), delete a.ranges, a.condition && delete a.condition.ranges, c = b.yja = JSON.stringify(a)), c
                    },
                    zja: function(a) {
                        return a && a.bc && a.bc() === this.bc()
                    }
                }, a.w$ = 1, a
            }(), b.DefaultDataValidator = d, b.zW = function() {
                return "data:image/png;base64, "
            }, b.bW = function(a) {
                return g.X3 && a && "=" === a[0]
            }, b.createNumberValidator = function(a, c, e, f) {
                var g, h, i, l, m = n,
                    o = n,
                    p = n,
                    q = n;
                return b.bW(c) ? m = k(c, "=") : o = c, b.bW(e) ? p = k(e, "=") : q = e, g = n, 6 === a && (h = j(1, 3, o, m), h.integerValue(f), i = j(1, 5, q, p), i.integerValue(f), g = j(0, 1, n, n, n, n, n, h, i)), 7 === a && (h = j(1, 4, o, m), h.integerValue(f), i = j(1, 2, q, p), i.integerValue(f), g = j(0, 0, n, n, n, n, n, h, i)), a >= 0 && a <= 5 && (g = j(1, a, o, m), g.integerValue(f)), l = new d(g), l.type(f ? 1 : 2), l.comparisonOperator(a), l
            }, b.createDateValidator = function(a, c, e) {
                var f, g, h, i, l, m = n,
                    o = n,
                    p = n,
                    q = n;
                if (b.bW(c) ? m = k(c, "=") : o = c, b.bW(e) ? p = k(e, "=") : q = e, f = n, 6 === a && (g = j(5, 5, o, m), h = j(5, 3, q, p), f = j(0, 1, n, n, n, n, n, g, h)), 7 === a && (g = j(5, 2, o, m), h = j(5, 4, q, p), f = j(0, 0, n, n, n, n, n, g, h)), a >= 0 && a <= 5) {
                    switch (a) {
                        case 0:
                            i = 0;
                            break;
                        case 1:
                            i = 1;
                            break;
                        case 2:
                            i = 4;
                            break;
                        case 3:
                            i = 5;
                            break;
                        case 4:
                            i = 2;
                            break;
                        case 5:
                            i = 3
                    }
                    f = j(5, i, o, m)
                }
                return l = new d(f), l.type(4), l.comparisonOperator(a), l
            }, b.createTextLengthValidator = function(a, c, e) {
                var f, g, h, i, l = n,
                    m = n,
                    o = n,
                    p = n;
                return b.bW(c) ? l = k(c, "=") : m = c, b.bW(e) ? o = k(e, "=") : p = e, f = n, 6 === a && (g = j(7, 3, m, l), h = j(7, 5, p, o), f = j(0, 1, n, n, n, n, n, g, h)), 7 === a && (g = j(7, 4, m, l), h = j(7, 2, p, o), f = j(0, 0, n, n, n, n, n, g, h)), a >= 0 && a <= 5 && (f = j(7, a, m, l)), i = new d(f), i.type(6), i.comparisonOperator(a), i
            }, b.createFormulaValidator = function(a) {
                if (!g.X3) return n;
                var b = new d(j(4, n, n, k(a, "="), 4));
                return b.type(7), b
            }, b.createFormulaListValidator = function(a) {
                if (!g.X3) return n;
                var b = new d(i.fromFormula(a));
                return b.type(3), b
            }, b.createListValidator = function(a) {
                var b = new d(i.fromSource(a));
                return b.type(3), b
            }, m.extend(g.Worksheet.prototype, {
                getDataValidator: function(a, b, c) {
                    return l(c) && (c = 3), 3 === c ? this.uja.Aja(a, b)[0] : o
                },
                setDataValidator: function(a, b, c, d, e, f) {
                    var g, h, i, j, k = this,
                        m = k.uja;
                    if (arguments.length < 5 && (e = c, f = d, c = a === -1 ? -1 : 1, d = b === -1 ? -1 : 1), l(f) && (f = 3), 3 === f) {
                        if (g = k.getDataValidator(a, b, f), h = 1 === c && 1 === d, h && g === e) return;
                        k.ITa.zVa(), i = u(a, b, c, d), m.Cja(i), e && m.Bja(e, i), j = "validator", h && (k.Bq(j, a, b, f, g, e), a !== -1 && b === -1 ? k.kq(a, f, j, e, g) : a === -1 && b !== -1 && k.pq(b, f, j, e, g))
                    }
                },
                isValid: function(a, b, c) {
                    var d, e = this;
                    try {
                        if (e.Ku = a, e.Lu = b, e.Mu = c, e.Ju = !0, d = e.getDataValidator(a, b)) return d.isValid(e, a, b, c)
                    } finally {
                        e.Ku = -1, e.Lu = -1, e.Mu = n, e.Ju = !1
                    }
                    return !0
                },
                hm: function() {
                    var a, b, c, d, e = this;
                    return !e.x$ && (e.x$ = !0, a = e.KH, a && (b = a.parentNode, b && b.removeChild(a), e.KH = n), c = e.y$, c && (m(c).unbind("click"), b = c.parentNode, b && b.removeChild(c), e.y$ = n), d = e.lm, d && (m(d).unbind("keydown").unbind("blur").unbind("click"), b = d.parentNode, b && b.removeChild(d), e.lm = n), e.x$ = !1, !0)
                },
                tja: function() {
                    var a = this,
                        b = [],
                        c = a.uja,
                        d = c && c.Dja;
                    return d && d.length && d.forEach(function(c) {
                        var d = c && c.condition();
                        d && d.getExpressions && d.getExpressions().length > 0 && b.push({
                            validator: c,
                            sheet: a
                        })
                    }), b
                }
            }), m.extend(g.Workbook.prototype, {
                tja: function() {
                    var a = [],
                        b = this,
                        c = b.sheets;
                    return c.forEach(function(b) {
                        var c = b.tja();
                        c && c.length && c.forEach(function(b) {
                            a.push(b)
                        })
                    }), a
                }
            }), m.extend(g.CellRange.prototype, {
                validator: function(a) {
                    var b = this,
                        c = b.sheet,
                        d = b.sheetArea,
                        e = b.row,
                        f = b.col,
                        g = b.rowCount,
                        h = b.colCount;
                    return 0 === arguments.length ? c.getDataValidator(e, f, d) : (c.setDataValidator(e, f, g, h, a, d), b)
                }
            });

            function B(a) {
                return this.Tq(a)
            }
            function C(a, b) {
                if (a && b && b.length) return b.map(B.bind(a))
            }
            function D(a, b, c) {
                var d = a.rowCount,
                    e = a.colCount,
                    f = u(a.row, a.col, d, e);
                return 0 === a.row && d === b && (f.row = -1), 0 === a.col && e === c && (f.col = -1), f
            }
            function E(a, b) {
                var c = a.getRowCount(),
                    d = a.getColumnCount();
                return b.map(function(a) {
                    return D(a, c, d)
                })
            }
            function F(a, b, c, d, e) {
                var f, g, h, i, j, k, l = a.row,
                    m = a.col,
                    n = a.rowCount,
                    o = a.colCount;
                for (l + n - 1 >= b && (n = b - l), m + o - 1 >= c && (o = c - m), f = 0, g = l; f < n; f++, g++) for (h = d[g], h || (d[g] = h = {}), i = 0, j = m; i < o; i++, j++) k = h[j], k && k !== e && k.IW(a), h[j] = e
            }
            function G(a, b) {
                var c, d, e, f, g, h, i, j;
                for (d = 0, e = a.row, f = a.rowCount; d < f; d++, e++) if (c = b[e]) for (g = 0, h = a.col, i = a.colCount; g < i; g++, h++) j = c[h], j && j.IW(a), c[h] = o
            }
            function H(a) {
                this.WS = a, this.Dja = [], this.Eja = {}
            }
            H.prototype = {
                UV: function(a) {
                    return C(this.WS, a)
                },
                EW: function(a) {
                    return E(this.WS, a)
                },
                QV: function(a) {
                    var b = this,
                        c = b.Dja;
                    b.Eja = {}, c && c.forEach(function(c) {
                        a && delete c.yja, b.FW(c, !0)
                    }), b.Fja()
                },
                FW: function(a, b) {
                    var c = this,
                        d = c.Eja,
                        e = c.UV(a.l1()),
                        f = c.WS,
                        g = f.getRowCount(),
                        h = f.getColumnCount();
                    e && (e.forEach(function(b) {
                        F(b, g, h, d, a)
                    }), b || c.Fja())
                },
                GW: function(a) {
                    var b = this,
                        c = b.Eja,
                        d = b.UV(a.l1());
                    d.forEach(function(a) {
                        G(a, c)
                    }), b.Fja()
                },
                HW: function(a) {
                    var b = this;
                    a && G(b.WS.Tq(a), b.Eja), b.Fja()
                },
                Fja: function() {
                    var a = this.Dja,
                        b = [];
                    a.forEach(function(a) {
                        a.l1().length && (b.push(a), a.condition() && a.condition().ranges(a.l1()))
                    }), this.Dja = b
                },
                Bja: function(a, b) {
                    var c, d = this,
                        e = d.WS;
                    if (b && (a.kj && e !== a.kj && (a = a.clone(e)), a.kj = e, a.xja(b)), e) return a.context(e), c = d.Dja, c.indexOf(a) === -1 && c.push(a), d.FW(a), e.$p(), a
                },
                Cja: function(a) {
                    if (a) {
                        var b = this,
                            c = b.WS;
                        b.HW(a), c.$p()
                    }
                },
                $b: function() {
                    var a = this,
                        b = a.WS;
                    b && (a.Dja.length = 0, a.QV())
                },
                Aja: function(a, b) {
                    var c, d, e, f = this,
                        g = f.Dja;
                    return 0 === arguments.length ? g || [] : (c = [], d = f.Eja, a === o && (a = -1), b === o && (b = -1), a === -1 && b === -1 ? g || [] : (a !== -1 && b !== -1 ? (e = d[a], e && e[b] && c.push(e[b])) : a === -1 ? m.each(d, function(a, d) {
                        var e = d[b];
                        e && c.indexOf(e) === -1 && c.push(e)
                    }) : (e = d[a], e && m.each(e, function(a, b) {
                        b && c.indexOf(b) === -1 && c.push(b)
                    })), c))
                },
                _V: function(a, b, c) {
                    var d = this,
                        e = d.Dja;
                    e && e.forEach(function(d) {
                        c ? d.rI(a, b) : d.tI(a, b)
                    }), d.QV()
                },
                rI: function(a, b) {
                    this._V(a, b, !0)
                },
                tI: function(a, b) {
                    this._V(a, b, !1)
                },
                aW: function(a, b, c) {
                    var d = this,
                        e = d.Dja;
                    e && e.forEach(function(d) {
                        c ? d.GR(a, b) : d.HR(a, b)
                    }), d.QV()
                },
                GR: function(a, b) {
                    this.aW(a, b, !0)
                },
                HR: function(a, b) {
                    this.aW(a, b, !1)
                },
                toJSON: function(a) {
                    return this.Dja.map(function(b) {
                        return b && b.toJSON(a) || n
                    })
                },
                fromJSON: function(a, b, c) {
                    var e = this,
                        f = e.WS;
                    e.Dja.length = 0, a && a.length && (a.forEach(function(a) {
                        var g = new d;
                        g.fromJSON(a, b, c), g.kj = f, e.Dja.push(g)
                    }), e.QV())
                },
                vja: function(a, b, c) {
                    var d, e, f = this,
                        g = f.WS,
                        h = f.Dja,
                        i = h.length,
                        j = !1;
                    for (d = 0; d < i; d++) if (e = h[d], e.zja(c)) {
                        c = e, j = !0;
                        break
                    }
                    return j ? void c.xja(u(a, b, 1, 1)) : void g.setDataValidator(a, b, c)
                }
            }, e = g.lUa, m.extend(e.prototype, {
                zVa: function() {
                    var a = this,
                        b = a.zTa;
                    b && !b.AVa && (b.AVa = a.uja.Dja.map(function(a) {
                        var b = a.n5.map(function(a) {
                            return u(a.row, a.col, a.rowCount, a.colCount)
                        });
                        return {
                            validator: a,
                            ranges: b
                        }
                    }))
                },
                BVa: function(a) {
                    if (a) {
                        var b = this.uja;
                        b.Dja = a.map(function(a) {
                            var b = a.validator;
                            return b.n5 = a.ranges, b
                        }), b.QV(!1)
                    }
                },
                CVa: function(a, b) {
                    this.zVa(), this.uja.rI(a, b)
                },
                DVa: function(a, b) {
                    this.zVa(), this.uja.GR(a, b)
                },
                EVa: function(a, b) {
                    this.zVa(), this.uja.tI(a, b)
                },
                FVa: function(a, b) {
                    this.zVa(), this.uja.HR(a, b)
                },
                GVa: function(a) {
                    this.zVa(), this.uja.HW(a)
                },
                HVa: function() {
                    this.zVa(), this.uja.QV()
                }
            }), e.$n("validator", {
                init: function() {
                    this.uja = new H(this.kj)
                },
                undo: function(a) {
                    var b = a.AVa;
                    b && this.BVa(b)
                }
            }), g.Worksheet.$n("validator", {
                init: function() {
                    this.uja = this.ITa.uja
                },
                dispose: function(a) {
                    var b = this;
                    b.hm(), a && b.uja.$b()
                },
                onLayoutChanged: function(a) {
                    var b = a.changeType,
                        c = a.row,
                        d = a.rowCount,
                        e = a.col,
                        f = a.colCount,
                        g = a.sheetArea,
                        h = this.ITa;
                    "addRows" === b ? h.CVa(c, d) : "deleteRows" === b ? h.DVa(c, d) : "addColumns" === b ? h.EVa(e, f) : "deleteColumns" === b ? h.FVa(e, f) : "clear" === b ? 3 === g && 2 === (2 & a.type) && h.GVa(u(c, e, d, f)) : "setColumnCount" !== b && "setRowCount" !== b || 3 !== g && 1 !== g || h.HVa()
                },
                toJson: function(a, b) {
                    var c = this.uja,
                        d = b && b.ignoreStyle;
                    c && c.Dja.length && !d && (a.validations = c.toJSON(this))
                },
                fromJson: function(a, b, c) {
                    var d, e = c && c.ignoreStyle;
                    a && a.validations && !e && (d = a.validations, this.uja.fromJSON(d, b, this))
                }
            }), g.Style.$n("validator", {
                fromJson: function(a) {
                    if ("validator" === a.p) {
                        var b = new d;
                        b.fromJSON(a.v), this.validator = b, a.r = !0
                    }
                }
            }), window.Yl.km.push(function(a, b) {
                !b && a.hm && a.hm()
            }), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a = c(87),
                b = c(33),
                d = c(26),
                e = c(145),
                f = a.Ul,
                g = a.kf,
                h = f.rl(),
                i = f.Ml,
                j = a.GC$,
                k = f.Nl,
                l = f.hZa,
                m = d.j.Fa,
                n = d.u,
                o = f.nl,
                p = document,
                q = Math.max,
                r = Math.min,
                s = "position",
                t = "absolute",
                u = "border",
                v = "padding",
                w = "box-shadow",
                x = "font",
                y = "background-color",
                z = "top",
                A = "left",
                B = "z-index",
                C = "outline",
                D = "auto",
                E = "white",
                F = "none",
                G = "size",
                H = "gcUIElement";
            j.extend(a.iI.prototype, {
                cs: function(c, I) {
                    var J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, $, _, aa, ba, ca, da, ea, fa, ga, ha, ia, ja, ka, la, ma, na, oa, pa, qa, ra, sa, ta, ua;

                    function va(a, b) {
                        if (a && a[b]) return "function" == typeof a[b] ? a[b]() : a[b]
                    }
                    if (J = this, K = J.kj, L = K && K.parent, L && e && (M = K.hm(), M && (N = L.getActiveSheet(), N && K.name() === N.name() && (O = K.getDataValidator(c, I), O && (P = K.getCellRect(c, I), !J.oG(P) && (Q = L.xv(), R = f.vl(L.getHost()), va(O, "showInputMessage") && va(O, "inputMessage") && (S = n.Gb, T = n.Ob, U = S(T(va(O, "inputTitle")), "\n", "<br/>"), V = S(T(va(O, "inputMessage")), "\n", "<br/>"), W = k("span"), j(W).css(s, t).css(u, "1px #C0C0C0 solid").css(v, "3px 8px 3px 8px").css(y, "#FFFFFF").css(w, "1px 2px 5px rgba(0,0,0,0.4)").css(x, "normal normal normal 12px/normal Arial").width(D).height(D).css(z, P.y + P.height + 5).css(A, P.x + P.width / 2).css(B, R).html("<b>" + U + "</b><br/>" + V).attr(H, "gcValidationInputMessage").appendTo(Q), K.KH = W), O && 3 === va(O, "type") && va(O, "inCellDropdown"))))))) {
                        for (X = va(O, "condition").getValidListImp(K, c, I), Y = X.length, Z = k("select"), $ = K.getText(c, I), _ = -1, aa = p.createDocumentFragment(), ba = 0; ba < Y; ba++) ca = X[ba].text, m(ca) || a.X3 && ca instanceof b.CalcError || (_ < 0 && ca === $ && (_ = ba), ca instanceof Date && (ca = d.l.Vb(ca, "M/d/yyyy h:mm:ss")), da = k("option"), da.value = ca, da.text = ca, aa.appendChild(da));
                        Z.appendChild(aa), Z.selectedIndex = _ > 0 ? _ : 0, ea = K.getActualStyle(c, I), fa = K.yl, ga = ea && ea.font ? ea.font : fa.Bl(), K.zoom() > 1 && (ga = fa.Cl(ga)), ha = K.getSpans(g(c, I, 1, 1)), ia = 1, ha && ha.length > 0 && ha[0] && (ia = ha[0].colCount), ja = I + ia - 1 === K.getColumnCount() - 1, ka = K.Sl(c), la = K.parent && K.parent.options.useTouchLayout, ka = la ? r(50, ka) : r(15, ka), ma = h, na = i.safari && (ma.ipad || ma.iphone), na ? (oa = P.width + 3, pa = P.height + 3, qa = P.y - 1.5, ra = P.x - 1.5, sa = E) : (oa = q(P.width + (ja ? 0 : ka), K.defaults.colWidth), pa = Y > 8 ? 140 : D, qa = P.y + P.height, ra = P.x + P.width + (ja ? 0 : ka) - oa, sa = ""), ta = j(Z).css(C, F).css(s, t).css(x, l(ga)).css(B, R).css(y, sa).width(oa).height(pa).css(z, qa).css(A, ra).attr(H, "gcValidationSelect").appendTo(Q).attr(G, Y > 2 ? Y : 2).hide().bind("click", function() {
                            J.pG(Z, c, I, X), na && j(K.y$).show()
                        }).bind("keydown", function(a) {
                            13 !== a.keyCode || a.ctrlKey || a.shiftKey || a.altKey ? 27 !== a.keyCode || a.ctrlKey || a.shiftKey || a.altKey || j(Z).hide() : J.pG(Z, c, I, X), na && j(K.y$).show()
                        }), na && ta.bind("blur", function() {
                            J.pG(Z, c, I, X), j(K.y$).show()
                        }), K.lm = Z, ua = k("input"), ua.type = "image", ua.src = e.zW(), ua.alt = "v", j(ua).css(s, t).width(ka).height(ka).css(z, P.y + P.height - (ka + 3)).css(A, P.x + P.width - (ja ? ka : 0)).css(B, R).css(y, E).css(u, "1px solid gray").attr(H, "gcValidationButton").appendTo(Q).bind("click", function(a) {
                            K.isEditing() && !K.endEdit() || (j(K.lm).toggle().focus(), na && j(K.y$).toggle(), o(a))
                        }), K.y$ = ua
                    }
                }
            })
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            c(148), c(150), c(151);
            var b = c(149);
            b.SR = {}, b.SR.en = c(152), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a, b, d, e = c(87),
                f = c(26),
                g = c(149),
                h = f.j.Fa,
                i = null,
                j = e.kf,
                k = e.GC$,
                l = Math.max,
                m = Math.floor,
                n = e.Commands,
                o = n.ActionBase,
                p = n.xy,
                q = n.Bu,
                r = e.Events,
                s = 1023,
                t = "startRange",
                u = "fillRange",
                v = "autoFillType",
                w = "fillDirection",
                x = "cancel",
                y = "fill",
                z = "dragDrop",
                A = k.isEmptyObject,
                B = function() {
                    return f.C(g.SR)()
                };

            function C(a) {
                return a.rowCount
            }
            function D(a) {
                return a.colCount
            }
            function E(a, b) {
                return a.getRowCount(b)
            }
            function F(a, b) {
                return a.getColumnCount(b)
            }
            function G(a, b, c, d) {
                return !!(a && b && b.containsRange(a)) && (!h(c) && (1 === c && a.row === b.row && C(a) === C(b) || 0 === c && a.col === b.col && D(a) === D(b)) || !(h(d) || (2 !== d && 3 !== d || a.col !== b.col || D(a) !== D(b)) && (0 !== d && 1 !== d || a.row !== b.row || C(a) !== C(b))))
            }
            a = {
                fillAuto: function(a, b, c) {
                    if (!b) throw Error(B().Exp_RangeIsNull);
                    var d = this,
                        e = c.fillType,
                        j = c.series,
                        k = c.direction,
                        l = c.step,
                        m = c.stop,
                        n = new g.z$(d);
                    G(a, b, k ? i : j, k) && (a && (d.mm.A$ = a), 4 === e ? n.B$(b, j, !1, c.withTag) : 0 === e ? n.C$(b, k) : 1 === e || 2 === e ? n.D$(1 === e, b, j, l, m) : 3 === e && n.E$(b, j, 3, l, h(m) ? i : f.l.Ra(m), c.unit), d.$p())
                }
            }, k.extend(e.Worksheet.prototype, a), e.Worksheet.$n(y, {
                setHost: function(a) {
                    if (a) {
                        var b = this.wu();
                        b[y] || b.register(y, n[y]), b[z] || b.register(z, n[z])
                    }
                }
            }), e.Workbook.$n(y, {
                init: function() {
                    this.options.allowUserDragFill = !0
                }
            }), b = function(a) {
                k.inherit(b, a);

                function b(b, c) {
                    var d = this,
                        e = c[w],
                        f = 0 === e,
                        g = f || 1 === e,
                        h = c[u],
                        i = c[t],
                        k = i.row,
                        l = i.col,
                        m = C(i),
                        o = D(i);
                    a.call(d), d.kj = b, d.G$ = c, 4 === c[v] ? d.H$ = new n.OA(b, {
                        ranges: [c[u]]
                    }) : g ? d.I$ = j(k, f ? h.col : l, m, o + D(h)) : d.I$ = j(2 === e ? h.row : k, l, m + C(h), o), d.J$ = g ? 1 : 0
                }
                var c = {
                    canExecute: function() {
                        var a = this,
                            b = a.kj,
                            c = a.G$,
                            d = c[t],
                            e = c[u];
                        return !!b.Y3(e.row, e.col, C(e), D(e)) && (4 === c[v] || !e.intersect(d.row, d.col, C(d), D(d)))
                    },
                    execute: function() {
                        var a, b, c, d, f, g = this;
                        if (g.canExecute()) {
                            a = g.G$, b = a[u], c = g.kj, c.ITa.startTransaction(), g.Lz(c);
                            try {
                                e.X3 && c.suspendCalcService(), c.isDirtySuspended() || (g.N$ = new p(c, a[u], s)), 4 === a[v] ? g.K$(c) : g.L$(c)
                            } finally {
                                g.Mz(c), d = n.bWa(c.name()), a[d] = c.ITa.endTransaction(), e.X3 && c.resumeCalcService(!1), c.t4 && c.t4(b.row, b.col, C(b), D(b)), f = [], c.isDirtySuspended() || (g.M$ = new p(c, b, s), g.M$.uy(g.N$.sy()), f = g.M$.wy()), q(c, b.row, b.col, C(b), D(b), f, 1)
                            }
                        }
                    },
                    K$: function(a) {
                        var b, c, d, e, f, g, h, i, k, m = this;
                        m.H$.execute(a), b = m.G$, c = b[t], d = b[u], e = 0 === m.J$, g = C(c), h = D(c), i = e ? l(1, g - C(d)) : g, k = e ? h : l(1, h - D(d)), c.equals(d) || (f = j(c.row, c.col, i, k), a.Kr(l(a.ar(), f.row), l(a.$q(), f.col), a.Nr, a.Pr), a.Tr(), a.addSelection(f.row, f.col, C(f), D(f)))
                    },
                    L$: function(a) {
                        var b, c, d, f, g, h, i, j, k, n, o, p, q = this,
                            r = q.kj,
                            w = q.G$[t],
                            x = q.G$[u],
                            y = q.G$[v],
                            z = q.I$,
                            A = {
                                fillType: 4,
                                series: q.J$,
                                withTag: !0
                            };
                        if (1 === y) {
                            if (r.fillAuto(w, z, A), r.ITa.MTa(w.row, w.col, w.rowCount, w.colCount)) for (b = 0; b < x.rowCount; b++) for (c = 0; c < x.colCount; c++) d = r.Aj(w.row + m(b % w.rowCount), w.col + m(c % w.colCount)), d && d.clone && (d = d.clone()), r.Nq(x.row + b, x.col + c, d)
                        } else if (0 === y) f = 4 ^ s, q.O$(w, x, f);
                        else if (2 === y) q.O$(w, x, 192);
                        else if (3 === y) if (g = !(1 !== C(w) || 1 !== D(w) || w.row === -1 && w.col !== -1 || w.col === -1 && w.row !== -1)) h = 187, q.O$(w, x, h);
                        else {
                            for (i = r.Tq(z), j = i.row, k = i.col, n = C(i), o = D(i), p = new e.KTa, b = 0; b < n; b++) for (c = 0; c < o; c++) p.set(b, c, r.Aj(j + b, k + c));
                            for (r.fillAuto(w, z, A), b = 0; b < n; b++) for (c = 0; c < o; c++) r.Nq(j + b, k + c, p.get(b, c))
                        }
                        r.Kr(l(a.ar(), z.row), l(a.$q(), z.col), a.Nr, a.Pr), a.Tr && a.Tr(), r.addSelection(z.row, z.col, C(z), D(z))
                    },
                    O$: function(a, b, c) {
                        var d = this,
                            e = d.kj,
                            f = e.Tq(a),
                            g = e.Tq(b),
                            h = f.row,
                            i = f.col,
                            j = C(f),
                            k = D(f),
                            l = g.row,
                            n = g.col,
                            o = C(g),
                            p = D(g),
                            q = d.G$[w],
                            r = 3 === q,
                            s = 1 === q,
                            t = m(o / j),
                            u = o % j,
                            v = m(p / k),
                            x = p % k,
                            y, z, A, B, E;
                        if (0 === d.J$) {
                            for (y = 0; y < t; y++) B = r ? l + y * j : l + o - (y + 1) * j, e.ax(h, i, B, n, j, k, c, !0);
                            0 !== u && (z = r ? h : h + (t + 1) * j - o, B = r ? l + j * t : l + o - t * j - u, e.ax(z, i, B, n, u, k, c, !0))
                        } else {
                            for (y = 0; y < v; y++) E = s ? n + y * k : n + p - (y + 1) * k, e.ax(h, i, l, E, j, k, c, !0);
                            0 !== x && (A = s ? i : i + (v + 1) * k - p, E = s ? n + k * v : n + p - v * k - x, e.ax(h, A, l, E, j, x, c, !0))
                        }
                    },
                    undo: function() {
                        var a, b, c, d, f = this,
                            g = f.kj,
                            h = !1;
                        if (f.canUndo()) {
                            f.Lz(g, !0);
                            try {
                                e.X3 && g.suspendCalcService(), a = g.getSelections(), b = f.G$, c = g.NF, d = b[u], h = 4 === b[v] ? f.S$(g) : f.T$(g), !g.U$ && c && c.close(), q(g, d.row, d.col, C(d), D(d), f.M$ ? f.M$.wy() : [], 1), g.yu(a, g.getSelections()) && g.Au(a)
                            } finally {
                                f.Mz(g, !0), e.X3 && g.resumeCalcService(!1)
                            }
                        }
                        return h
                    },
                    S$: function(a) {
                        var b = this,
                            c = b.G$[t],
                            d = c.row,
                            e = c.col,
                            f = b.H$.undo();
                        return a.Kr(l(a.ar(), d), l(a.$q(), e), a.Nr, a.Pr), f
                    },
                    T$: function(a) {
                        var b, c = this,
                            d = c.G$,
                            f = d[t],
                            g = f.row,
                            h = f.col;
                        e.X3 && a.suspendCalcService();
                        try {
                            b = n.bWa(a.name()), a.ITa.undo(d[b]), a.Kr(l(a.ar(), g), l(a.$q(), h), a.Nr, a.Pr)
                        } finally {
                            e.X3 && a.resumeCalcService(!1)
                        }
                        return a.invalidateLayout(), !0
                    }
                };
                return k.extend(b.prototype, c), b
            }(o), d = function(a) {
                k.inherit(c, a);

                function c(b, c) {
                    var d = this;
                    a.call(d), d.kj = b, d.i4 = c, d.W$ = c[t], d.X$ = c[u], d.Y$ = c[v], d.Z$ = c[w]
                }
                var d = {
                    execute: function() {
                        var a, b, c, d, e = this,
                            f = !1;
                        if (e.canExecute()) {
                            a = e.kj, b = e.X$, e.oUa(), e.Lz(a, !0);
                            try {
                                c = a.mm, d = {
                                    sheet: a,
                                    sheetName: a.name()
                                }, d[x] = !1, d[u] = b, d[v] = e.Y$, d[w] = e.Z$, a.Wq(r.DragFillBlock, d), c.$$ = d[v], c._$ = d[x], e.a_(d), delete d[x], a.Wq(r.DragFillBlockCompleted, d), f = !0
                            } finally {
                                e.Mz(a, !0), e.IVa(a, b)
                            }
                        }
                        return f
                    },
                    a_: function(a) {
                        var c, d, e = this,
                            f = e.kj,
                            g = f.mm,
                            h = e.X$,
                            i = e.Y$;
                        g.$$ = i, g._$ || (c = {}, c[t] = e.W$, c[u] = h, c[v] = 5 === a[v] ? i : a[v], c[w] = e.Z$, d = new b(f, c), f.suspendEvent(), d.execute(), f.resumeEvent(), e.i4.d_ = d)
                    },
                    oUa: function() {
                        var a = this;
                        a.kj.isDirtySuspended() || (a.N$ = new p(a.kj, a.X$, s))
                    },
                    undo: function() {
                        var a, b, c = this,
                            d = !1;
                        if (c.canUndo()) {
                            a = c.kj, b = c.X$, c.oUa(), c.Lz(a);
                            try {
                                d = c.i4.d_.undo()
                            } finally {
                                c.Mz(a, !1), c.IVa(a, b)
                            }
                        }
                        return d
                    },
                    IVa: function(a, b) {
                        var c, d = this,
                            e = [];
                        a.isDirtySuspended() || (c = new p(a, b, s), c.uy(d.N$.sy()), e = c.wy()), q(a, b.row, b.col, C(b), D(b), e, 1)
                    }
                };
                return k.extend(c.prototype, d), c
            }(o);

            function H(a, b, c, d, e) {
                var f, g, h = a.getSelections();
                a.Tr(), a.addSelection(b, c, d, e), a.Au(h), f = b > 0 ? b : a.ar(), g = c > 0 ? c : a.$q(), a.Kr(f, g, a.Nr, a.Pr)
            }
            k.inherit(I, o);

            function I(a, b) {
                var c = this;
                o.call(c), c.kj = a, c.VQ = b
            }
            k.extend(I.prototype, {
                canExecute: function() {
                    var a, b, c, d = this,
                        e = d.kj,
                        f = d.VQ,
                        g = f.fromRow,
                        h = f.fromColumn,
                        j = C(f),
                        k = f.columnCount,
                        l = f.toRow,
                        m = f.toColumn;
                    return !!e.pu(g, h, j, k, E(e), F(e)) && (!(!f.insert && !e.pu(l, m, j, k, E(e), F(e))) && (a = l >= 0 && m < 0 && g >= 0 && h < 0 && j > 0 && k < 0, b = l < 0 && m >= 0 && g < 0 && h >= 0 && j < 0 && k > 0, c = d.HZa(a, b), e.Y3(l, m, j, k, i, i, c) && e.Y3(g, h, j, k, i, i, c)))
                },
                HZa: function(a, b) {
                    var c, d, e = this,
                        f = e.VQ,
                        g = e.kj,
                        h = f.insert,
                        i = g.options.isProtected,
                        j = g.options.protectionOptions;
                    return !(!i || A(j) || (c = j.allowDragInsertRows, d = j.allowDragInsertColumns, !h || !(c && a || d && b)))
                },
                execute: function() {
                    var a, b, c, d, e, f, g, h, i, j, k, l, m, o, p, q, r = this,
                        s = !1;
                    if (r.canExecute()) {
                        a = r.kj, b = r.VQ, r.oUa(), f = b.fromRow, g = b.fromColumn, h = b.toRow, i = b.toColumn, j = C(b), k = b.columnCount, l = b.option, a.ITa.startTransaction(), r.Lz(a, !0);
                        try {
                            b.insert ? g >= 0 && f < 0 ? (c = g, d = i, e = k, m = i, a.addColumns(d, e), b.copy ? a.copyTo(-1, d <= c ? c + e : c, -1, d, -1, e, l) : (a.moveTo(-1, d <= c ? c + e : c, -1, d, -1, e, l), a.deleteColumns(d <= c ? c + e : c, e), c < d && (m = d - e)), H(a, -1, m, E(a), e)) : f >= 0 && g < 0 && (c = f, d = h, e = j, o = h, a.addRows(d, e), b.copy ? a.copyTo(d <= c ? c + e : c, -1, d, -1, e, -1, l) : (a.moveTo(d <= c ? c + e : c, -1, d, -1, e, -1, l), a.deleteRows(d <= c ? c + e : c, e), c < d && (o = d - e)), H(a, o, -1, e, F(a))) : (b.copy ? a.copyTo(f, g, h, i, j, k, l) : a.moveTo(f, g, h, i, j, k, l), a && (H(a, h, i, j, k), p = b.io, b.copy || a.isDirtySuspended() || (p._z = r.aA(a, p.cA, f, g, j, k)), a.isDirtySuspended() || (p.dA = r.aA(a, p.fA, h, i, j, k)))), s = !0
                        } finally {
                            a.mm.gA = {}, r.Mz(a, !0), q = n.bWa(a.name()), b[q] = a.ITa.endTransaction()
                        }
                    }
                    return s
                },
                aA: function(a, b, c, d, e, f) {
                    var g = new p(a, j(c, d, e, f), this.VQ.option);
                    return g.uy(b.sy()), q(a, c, d, e, f, g.wy(), 0), g
                },
                oUa: function() {
                    var a = this,
                        b = a.kj,
                        c = a.VQ,
                        d = c.io = {},
                        e = c.fromRow,
                        f = c.fromColumn,
                        g = c.toRow,
                        h = c.toColumn,
                        i = c.option,
                        k = e < 0 ? 0 : e,
                        l = f < 0 ? 0 : f,
                        m = g < 0 ? 0 : g,
                        n = h < 0 ? 0 : h,
                        o = e < 0 ? E(b) : C(c),
                        q = f < 0 ? F(b) : c.columnCount;
                    c.insert || b.isDirtySuspended() || (c.copy || (d.cA = new p(b, j(k, l, o, q), i)), d.fA = new p(b, j(m, n, o, q), i)), d.rA = b.Nr, d.sA = b.Pr, d.tA = b.Jl, d.uA = b.Kl
                },
                undo: function() {
                    var a, b, c, d, e, f, g, h, i, j, k, l, m, o, p, r, s, t, u, v, w = this;
                    if (w.canUndo()) {
                        if (a = w.kj, b = w.VQ, c = b.fromRow, d = b.fromColumn, e = b.toRow, f = b.toColumn, g = C(b), h = b.columnCount, !a.pu(c, d, g, h, E(a), F(a))) return !1;
                        if (!b.insert && !a.pu(e, f, g, h, E(a), F(a))) return !1;
                        j = b.io, w.Lz(a, !0), k = n.bWa(a.name()), a.ITa.undo(b[k]);
                        try {
                            b.insert ? d >= 0 && c >= 0 || (d >= 0 ? (l = d, i = h, a && H(a, -1, l, E(a), i)) : c >= 0 && (i = g, m = c, a && H(a, m, -1, i, F(a)))) : (o = c < 0 ? 0 : c, p = d < 0 ? 0 : d, r = e < 0 ? 0 : e, s = f < 0 ? 0 : f, t = c < 0 ? E(a) : g, u = d < 0 ? F(a) : h, a && (H(a, c, d, g, h), q(a, r, s, t, u, j.dA ? j.dA.wy() : [], 0), q(a, o, p, t, u, j._z ? j._z.wy() : [], 0))), a && (j.tA !== -1 && j.uA !== -1 && (v = a.getSelections()[0], v.contains(j.tA, j.uA) ? a.Jr(j.tA, j.uA) : a.Jr(v.row, v.col)), j.rA !== -2 && j.sA !== -2 && j.tA !== -1 && j.uA !== -1 && a.showCell(j.tA, j.uA, 3, 3))
                        } finally {
                            w.Mz(a, !0)
                        }
                    }
                    return !0
                }
            }), n[y] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return n.h4(a, d, b, c)
                }
            }, n[z] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return n.h4(a, I, b, c)
                }
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(87),
                d = c(26),
                e = c(33),
                f = c(150),
                g = d.j,
                h = null,
                i = void 0,
                j = Math.floor,
                k = b.kf,
                l = g.Fa,
                m = g.Pa,
                n = d.k,
                o = n.Eb,
                p = n.ac,
                q = d.l,
                r = q.Ra,
                s = q.Xb,
                t = "number",
                u = "date",
                v = function() {
                    return d.C(f.SR)()
                };

            function w(a) {
                return "string" != typeof a && g.Na(a)
            }
            f.AutoFillType = {
                copyCells: 0,
                fillSeries: 1,
                fillFormattingOnly: 2,
                fillWithoutFormatting: 3,
                clearValues: 4,
                auto: 5
            }, f.FillDirection = {
                left: 0,
                right: 1,
                up: 2,
                down: 3
            }, f.FillSeries = {
                column: 0,
                row: 1
            }, f.FillType = {
                direction: 0,
                linear: 1,
                growth: 2,
                date: 3,
                auto: 4
            }, f.FillDateUnit = {
                day: 0,
                weekday: 1,
                month: 2,
                year: 3
            };

            function x(a) {
                var b = [a];
                return b.rowCount = 1, b.colCount = p(a), b
            }
            function y(a) {
                return a
            }
            function z(a, b, c, e) {
                var f = x(b),
                    g = x(c),
                    i = x([e]),
                    j = a ? d.qc(f, g, i, !0, y, h, h, h) : d.sc(f, g, i, !0, h, h, h),
                    k = j && j[0][0];
                return typeof k === t ? d.o.Lma(k, 13) : k
            }
            function A(a) {
                var b = this;
                b.e_ = [], b.f_ = [], b.Nc = h, b.g_ = l(a) ? -1 : a
            }
            A.prototype = {
                h_: function() {
                    return p(this.f_)
                },
                Ey: function() {
                    var a = this,
                        b = [],
                        c = a.f_,
                        d, e;
                    for (d = 0; d < p(c); d++) e = c[d], b.push("object" === a.Nc ? a.Wh(e) : e);
                    return b
                },
                i_: function() {
                    var a, b, c, d = this,
                        e = d.e_;
                    if (p(e) > 0) {
                        for (a = d.g_, b = [], a === -1 && (a = e[0]), c = 0; c < p(e); c++) b[c] = e[c] - a + 1;
                        return b
                    }
                    return h
                },
                j_: function() {
                    var a = this.f_;
                    return p(a) ? a : h
                },
                Eb: function(a, b, c) {
                    if (!w(c)) throw Error(v().Exp_NumberOnly);
                    var d = this;
                    l(d.Nc) && (d.Nc = c instanceof Date ? u : t), o(d.e_, a, b), o(d.f_, a, m(c))
                },
                Sb: function(a, b) {
                    var c = this;
                    l(c.Nc) && (b instanceof Date ? c.Nc = u : c.Nc = t), c.e_.push(a), c.f_.push(m(b))
                },
                k_: function(a) {
                    return this.Nc === u ? this.Wh(a) : a
                },
                Wh: function(a) {
                    var b = h;
                    if (a instanceof Date) b = a;
                    else if (e) try {
                        b = e.Convert.Wh(a)
                    } catch (c) {
                        b = a
                    }
                    return b
                }
            };

            function B(a) {
                this.kj = a
            }
            B.prototype = {
                D$: function(a, b, c, d, e) {
                    var f = this,
                        g = a ? 1 : 2;
                    l(d) && l(e) ? f.E$(b, c, g) : f.E$(b, c, g, d, e, h)
                },
                E$: function(a, b, c, d, e, f) {
                    var g, h, i, j, k, l, m, n, o, q, r, s, t, u, w, x, y, z, A = this,
                        B = A.kj,
                        C = B.Tq(a),
                        D = C.row,
                        E = C.col,
                        F = C.rowCount,
                        G = C.colCount;
                    if (B.ITa.MTa(D, E, F, G)) throw Error(v().Exp_RangeContainsMergedCell);
                    for (l = arguments.length > 3, m = 0, n = 1 === b, o = n ? G : F, q = n ? D : E, r = n ? D + F : E + G, s = l ? 1 : o, t = this.kj.mm.A$, u = t.row === D && t.rowCount === F && t.col > E || t.col === E && t.colCount === G && t.row > D, g = q; g < r; g++) if (w = u && l ? E + G - 1 : E, x = u && l ? D + F - 1 : D, y = n ? A.l_(g, w, 1, s, b) : A.l_(x, g, s, 1, b), y && y.h_()) for (j = y.e_[0], l ? (k = u ? y.f_[p(y.f_) - 1] : y.f_[0], h = A.m_(u, k, o, c, d, e, f), u && (m = o - p(h), j = y.e_[p(y.e_) - 1])) : h = A.n_(y, o, c), i = 0; i < p(h); i++) z = y.k_(h[i]), n ? A.o_(B, g, j, g, E + m + i, z, c) : A.o_(B, j, g, D + m + i, g, z, c)
                },
                l_: function(a, b, c, d, e) {
                    for (var f = h, g = this.kj, i, j = 1 === e, k = j ? b + d - 1 : a + c - 1, l = j ? b : a; k >= l;) i = j ? g.getValue(a, k) : g.getValue(k, b), w(i) && (f || (f = new A(l)), f.Eb(0, k, i)), k--;
                    return f
                },
                m_: function(a, b, c, d, e, f, g) {
                    var h, i, j, k = [],
                        m = b,
                        n = e >= 0,
                        o = l(f);
                    for (h = 0; h < c; h++) i = m >= f, j = m <= f, a && (o || n && i || !n && j) ? (k.unshift(m), 1 === d ? m -= e : 2 === d ? m /= e : 3 !== d || l(g) || (m = this.p_(!0, g, b, m, e, h + 1))) : !a && (o || n && j || !n && i) && (k.push(m), 1 === d ? m += e : 2 === d ? m *= e : 3 !== d || l(g) || (m = this.p_(!1, g, b, m, e, h + 1)));
                    return k
                },
                n_: function(a, b, c) {
                    var d = [],
                        e, f = 1 === c;
                    if (f || 2 === c) {
                        for (1 === a.h_() && a.Sb(a.e_[0] + 1, f ? a.k_(a.f_[0] + 1) : a.Ey()[0]), e = 0; e < b; e++) d.push(z( !! f, a.j_(), a.i_(), e + 1));
                        return d
                    }
                    return h
                },
                B$: function(a, b, c, d) {
                    var e = this,
                        f = e.kj,
                        g = f.ITa,
                        h = f.Tq(a),
                        i = h.row,
                        j = h.col,
                        k = h.rowCount,
                        l = h.colCount,
                        m = f.Tq(f.mm.A$),
                        n = m.row,
                        o = m.col;
                    if (g.qu(n, o, m.rowCount, m.colCount) || g.qu(i, j, k, l)) throw Error(v().Exp_ChangeMergedCell);
                    return e.q_(m, k, l, b, c, !(i < n || j < o), d)
                },
                q_: function(a, b, c, d, e, f, g) {
                    var l = this,
                        m = f ? 1 : -1,
                        n, o, p, q, r = a.row,
                        s = a.col,
                        t = a.rowCount,
                        u = a.colCount;
                    if (1 === d) {
                        if (n = j(c / u), o = c % u, !e) for (q = 1; q < n; q++) p = k(r, s + q * m * u, t, u), l.r_(a, p, d, 4, e, i, i, i, i, g);
                        if (e && n > 1 && 0 === o && (n -= 1, o = u), n > 0 && o > 0) return p = f ? k(r, s + n * u, t, o) : k(r, s - n * u + u - o, t, o), l.r_(a, p, d, 4, e, f, h, f ? 0 : u - o, i, g)
                    } else {
                        if (n = j(b / t), o = b % t, !e) for (q = 1; q < n; q++) p = k(r + q * m * t, s, t, u), l.r_(a, p, d, 4, e, h, h, h, !0, g);
                        if (e && n > 1 && 0 === o && (n -= 1, o = t), n > 0 && o > 0) return p = f ? k(r + n * t, s, o, u) : k(r - n * t + t - o, s, o, u), l.r_(a, p, d, 4, e, f, f ? 0 : t - o, h, !0, g)
                    }
                },
                r_: function(a, b, c, d, e, f, g, i, j, k) {
                    var l, m, n, o, p, q, r, s, v, x, y, z, B, C, D, E, F, G, H, I, J, K = this,
                        L = K.kj,
                        M = 1 === c,
                        N = M ? a.row : a.col,
                        O = M ? a.col : a.row,
                        P = M ? b.row : b.col,
                        Q = M ? b.col : b.row,
                        R = M ? a.rowCount : a.colCount,
                        S = M ? a.colCount : a.rowCount,
                        T = M ? b.colCount : b.rowCount;
                    for (o = 0; o < R; o++) {
                        for (q = h, r = h, s = 0, v = N + o, x = P + o, y = v, z = x, B = (M ? i : g) || 0, C = M ? 0 : B, D = M ? h : j; s < S;) if (E = O + s, F = Q + s - B, G = h, H = E, I = F, M || (v = E, E = y, x = F, F = z), n = L.ITa.findSpan(v, E), l = L.getFormula && L.getFormula(v, E), l && "" !== l || (G = L.getValue(v, E)), 4 === d && w(G) && (q || (q = new A), m = G instanceof Date ? u : t, r || (r = m), r === m)) q.Sb(H, G), n ? s += M ? n.colCount : n.rowCount : s++;
                        else if (G && q && q.h_()) {
                            if (p = K.s_(M, a, b, y, z, q, e, f, C, D, k), e && p) return p;
                            q = h, r = h
                        } else {
                            if (!n || n && (M ? n.row : n.col) === y) if (J = I === Q + T - 1, e) {
                                if (n && J || !n && (J && f || !f && I === Q)) return G
                            } else I < Q + T && I >= Q && (M || !M && !(j && L.Ps && L.Ps(I))) && K.o_(L, v, E, x, F, G, d, k);
                            n ? s += M ? n.colCount : n.rowCount : s++
                        }
                        if (q && q.h_() && (p = K.s_(M, a, b, y, z, q, e, f, C, D, k), e && p)) return p
                    }
                    return h
                },
                o_: function(a, c, d, f, g, i, j, k) {
                    var l, m, n, o = a.ITa;
                    b.X3 && (a.hasFormula(c, d) || a.hasFormula(f, g)) && (a.setFormula(f, g, h), 0 !== j && 4 !== j || (l = a.Bj(), a.getFormula(c, d) && e.CalcOperatorAdjustor.copyFormula(l, c, d, l, f, g, 1, 1))), a.setValue(f, g, i), n = 64, k && (n |= 128), a.copyTo(c, d, f, g, 1, 1, n), a.removeSpan(f, g, 3), m = o.findSpan(c, d), m && c === m.row && d === m.col && a.Sq(f, g, m.rowCount, m.colCount, 3)
                },
                s_: function(a, b, c, d, e, f, g, i, j, k, l) {
                    var m, n, o, p, q, r, s, t, u, v, w, x = this,
                        y = x.kj,
                        A = a ? c.col : c.row,
                        B = a ? b.col : b.row,
                        C = a ? c.colCount : c.rowCount,
                        D = a ? b.colCount : b.rowCount;
                    if (j = j || 0, q = f.h_(), r = (A - B - j) / D, s = x.t_(f.e_, f.f_), s) {
                        for (o = [], n = 0; n < q; n++) o[n] = n + 1;
                        m = q
                    } else p = f.e_[0], m = f.e_[q - 1] - p + 1, 1 === q && f.Sb(f.e_[0] + 1, f.k_(f.f_[0] + 1)), o = f.i_();
                    for (n = 0; n < m; n++) if (t = z(!0, f.j_(), o, m * r + n + 1), u = A + C - 1, v = s ? f.e_[n] : p + n, w = v + r * D, g) {
                        if (s && (i && w === u || !i && w === A) || !s && w + j === u) return f.k_(t)
                    } else w < A + C && w >= A && (a ? x.o_(y, d, v, e, w, f.k_(t), 4, l) : k && y.Ps && y.Ps(w) || x.o_(y, v, d, w, e, f.k_(t), 4, l));
                    return h
                },
                t_: function(a, b) {
                    var c, d, e, f = p(b);
                    if (f <= 1 || p(a) !== f) return !1;
                    for (c = a[1] - a[0], d = b[1] - b[0], e = 2; e < f; e++) if (a[e] - a[e - 1] !== c || b[e] - b[e - 1] !== d) return !1;
                    return !0
                },
                C$: function(a, b) {
                    var c = this,
                        d = this.kj,
                        e = d.getSpans(),
                        f = d.Tq(a),
                        g = f.row,
                        h = f.col,
                        i = f.rowCount,
                        j = f.colCount,
                        l;
                    l = 0 === b ? k(g, h + j - 1, i, 1) : 1 === b ? k(g, h, i, 1) : 2 === b ? k(g + i - 1, h, 1, j) : k(g, h, 1, j), l = d.su(e, l), l && c.u_(l, g, h, i, j, b)
                },
                u_: function(a, b, c, d, e, f) {
                    var g = this,
                        h = a.row,
                        i = a.col,
                        l = a.rowCount,
                        m = a.colCount,
                        n, o, p, q, r, s, t, u = g.kj.ITa,
                        w;
                    if (0 === f ? (w = u.MTa(b, c, d, e - m), s = 0, t = -1 * m, p = e, q = m, r = 1) : 1 === f ? (w = u.MTa(b, c + m, d, e - m), s = 0, t = m, p = e, q = m, r = 1) : 2 === f ? (w = u.MTa(b, c, d - l, e), s = -1 * l, t = 0, p = d, q = l, r = 0) : (w = u.MTa(b + l, c, d - l, e), s = l, t = 0, p = d, q = l, r = 0), w) throw Error(v().Exp_TargetContainsMergedCells);
                    if (p % q !== 0) throw Error(v().Exp_MergedCellsIdentical);
                    for (n = j(p / q), o = 1; o < n; o++) g.r_(a, k(h + o * s, i + o * t, l, m), r, 0)
                },
                p_: function(a, b, c, d, e, f) {
                    var g = a ? -1 : 1,
                        h = j(f * e),
                        i = Math.abs(e),
                        k = s(b > 1 ? c : d);
                    if (0 === b) k.setDate(k.getDate() + g * e);
                    else if (1 === b) for (; i > 0;) k.setDate(k.getDate() + g * (e > 0 ? 1 : -1)), 6 !== k.getDay() && 0 !== k.getDay() && i--;
                    else 2 === b ? k.setMonth(k.getMonth() + g * h) : k.setFullYear(k.getFullYear() + g * h);
                    return r(k)
                }
            }, f.z$ = B, a.exports = f
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e = c(87),
                f = c(26),
                g = e.Go,
                h = {},
                i = e.GC$,
                j = e.Ul.Nl,
                k = e.Ul,
                l = k.vl,
                m = i(document),
                n = " btn btn-default",
                o = "ui-state-hover ",
                p = "gc-fill-type-item",
                q = "gc-fill-menu-container",
                r = o + "gc-smartMenu-item-hover",
                s = o + "gc-smart-tag-hover",
                t = "ui-icon ui-icon-check gc-check-image",
                u = "gc-menu-item-input",
                v = "ui-state-active gc-smart-tag-active",
                w = "gc-tag-container",
                x = "float",
                y = "left",
                z = "top",
                A = "display",
                B = "width",
                C = "height",
                D = "margin",
                E = "change",
                F = "input[type=radio]",
                G = "mouseover",
                H = "mouseout",
                I = "click",
                J = "fillTypeChanged",
                K = "keydown.ui-fill",
                L = function() {
                    return f.C(h.SR)()
                };

            function M(a, b, c, d, e, f) {
                var g = a.CH,
                    h = g ? "160px" : "150px",
                    k = g ? "25px" : "20px",
                    l = i(j("div")).css([A, B, C, "padding", D], ["block", h, k, 0, 0]).addClass("gc-smartMenu-item-default " + c + " ui-state-default" + n),
                    m = i(j("div")).addClass(u).appendTo(l),
                    o = i(j("div")).addClass("gc-menu-item-text").appendTo(l),
                    p = i(j("input")).attr({
                        id: b,
                        value: e,
                        type: "radio",
                        name: "fill-group",
                        style: "display:none"
                    }).appendTo(m);
                return i(j("span")).text(d).appendTo(o), f ? (m.addClass(t), p.prop("checked", "checked")) : p.prop("checked", ""), l
            }
            b = function(a) {
                i.inherit(b, a);

                function b(b, c) {
                    var d = this,
                        e;
                    a.call(d, b, l(c.parent.qo)), d.kj = c, d.v_ = i("." + w), e = d.w_ = d.yo(), e.addClass(q), M(c, "smartMenuCopyCells", p, L().CopyCells, "0", !0).appendTo(e), M(c, "smartMenuFillSeries", p, L().FillSeries, "1").appendTo(e), M(c, "smartMenuFillFormattingOnly", p, L().FillFormattingOnly, "2").appendTo(e), M(c, "smartMenuFillWithoutFormatting", p, L().FillWithoutFormatting, "3").appendTo(e)
                }
                var c = {
                    Ao: function() {
                        a.prototype.Ao.call(this)
                    },
                    QQ: function() {
                        var a, b = this,
                            c = i("." + p);
                        c.bind(G, function() {
                            i(this).addClass(r)
                        }).bind(H, function() {
                            i(this).removeClass(r)
                        }).bind(I, function() {
                            var a, c = i(this),
                                d = b.v_,
                                e = c.find(F),
                                f = e[0];
                            f.checked = !0, e.trigger(E), d.trigger(I), d.trigger(H), c.removeClass(r), a = parseInt(i(f).attr("value")), b.x_(a)
                        }), a = b.w_.find(F), a.bind(E, function() {
                            i("." + u).removeClass(t), i(this).parent().addClass(t)
                        })
                    },
                    y_: function() {
                        i("." + p).unbind(G).unbind(H).unbind(I), this.w_.find(F).unbind(E)
                    },
                    x_: function(a) {
                        var b = this,
                            c = b.kj,
                            d = c.mm;
                        if (b.z_ !== a) {
                            b.z_ = a, c.U$ = !0, c.suspendEvent();
                            try {
                                e.Commands.undo.execute(c.parent, {
                                    sheetName: c.name()
                                })
                            } finally {
                                c.resumeEvent()
                            }
                            c.U$ = !1, c.wu().execute({
                                cmd: "fill",
                                sheetName: c.name(),
                                startRange: d.A$,
                                fillRange: d.A_,
                                autoFillType: a,
                                fillDirection: d.dJ
                            }), b.v_.trigger(J, a)
                        }
                    },
                    MQ: function() {
                        return !!i("." + q).length
                    }
                };
                return i.extend(b.prototype, c), b
            }(g);

            function N(a) {
                var b = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA",
                    c = "AAAASCAYAAA",
                    d = "AAAACXBIWXMAAA7",
                    e = "lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN";
                return a ? b + "Ac" + c + "CXScT7" + d + "DAAAOwwHHb6hkAAAKTW" + e + "3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApWFBURnEhVxILVCkidiOKgKLhnQYqIWotVXDjuH9yntX167+3t+9f7vOec5/zOec8PgBESJpHmomoAOVKFPDrYH49PSMTJvYACFUjgBCAQ5svCZwXFAADwA3l4fnSwP/wBr28AAgBw1S4kEsfh/4O6UCZXACCRAOAiEucLAZBSAMguVMgUAMgYALBTs2QKAJQAAGx5fEIiAKoNAOz0ST4FANipk9wXANiiHKkIAI0BAJkoRyQCQLsAYFWBUiwCwMIAoKxAIi4EwK4BgFm2MkcCgL0FAHaOWJAPQGAAgJlCLMwAIDgCAEMeE80DIEwDoDDSv+CpX3CFuEgBAMDLlc2XS9IzFLiV0Bp38vDg4iHiwmyxQmEXKRBmCeQinJebIxNI5wNMzgwAABr50cH+OD+Q5+bk4eZm52zv9MWi/mvwbyI+IfHf/ryMAgQAEE7P79pf5eXWA3DHAbB1v2upWwDaVgBo3/ldM9sJoFoK0Hr5i3k4/EAenqFQyDwdHAoLC+0lYqG9MOOLPv8z4W/gi372/EAe/tt68ABxmkCZrcCjg/1xYW52rlKO58sEQjFu9+cj/seFf/2OKdHiNLFcLBWK8ViJuFAiTcd5uVKRRCHJleIS6X8y8R+W/QmTdw0ArIZPwE62B7XLbMB+7gECiw5Y0nYAQH7zLYwaC5EAEGc0Mnn3AACTv/mPQCsBAM2XpOMAALzoGFyolBdMxggAAESggSqwQQcMwRSswA6cwR28wBcCYQZEQAwkwDwQQgbkgBwKoRiWQRlUwDrYBLWwAxqgEZrhELTBMTgN5+ASXIHrcBcGYBiewhi8hgkEQcgIE2EhOogRYo7YIs4IF5mOBCJhSDSSgKQg6YgUUSLFyHKkAqlCapFdSCPyLXIUOY1cQPqQ28ggMor8irxHMZSBslED1AJ1QLmoHxqKxqBz0XQ0D12AlqJr0Rq0Hj2AtqKn0UvodXQAfYqOY4DRMQ5mjNlhXIyHRWCJWBomxxZj5Vg1Vo81Yx1YN3YVG8CeYe8IJAKLgBPsCF6EEMJsgpCQR1hMWEOoJewjtBK6CFcJg4Qxwicik6hPtCV6EvnEeGI6sZBYRqwm7iEeIZ4lXicOE1+TSCQOyZLkTgohJZAySQtJa0jbSC2kU6Q+0hBpnEwm65Btyd7kCLKArCCXkbeQD5BPkvvJw+S3FDrFiOJMCaIkUqSUEko1ZT/lBKWfMkKZoKpRzame1AiqiDqfWkltoHZQL1OHqRM0dZolzZsWQ8ukLaPV0JppZ2n3aC/pdLoJ3YMeRZfQl9Jr6Afp5+mD9HcMDYYNg8dIYigZaxl7GacYtxkvmUymBdOXmchUMNcyG5lnmA+Yb1VYKvYqfBWRyhKVOpVWlX6V56pUVXNVP9V5qgtUq1UPq15WfaZGVbNQ46kJ1Bar1akdVbupNq7OUndSj1DPUV+jvl/9gvpjDbKGhUaghkijVGO3xhmNIRbGMmXxWELWclYD6yxrmE1iW7L57Ex2Bfsbdi97TFNDc6pmrGaRZp3mcc0BDsax4PA52ZxKziHODc57LQMtPy2x1mqtZq1+rTfaetq+2mLtcu0W7eva73VwnUCdLJ31Om0693UJuja6UbqFutt1z+o+02PreekJ9cr1Dund0Uf1bfSj9Rfq79bv0R83MDQINpAZbDE4Y/DMkGPoa5hpuNHwhOGoEctoupHEaKPRSaMnuCbuh2fjNXgXPmasbxxirDTeZdxrPGFiaTLbpMSkxeS+Kc2Ua5pmutG003TMzMgs3KzYrMnsjjnVnGueYb7ZvNv8jYWlRZzFSos2i8eW2pZ8ywWWTZb3rJhWPlZ5VvVW16xJ1lzrLOtt1ldsUBtXmwybOpvLtqitm63Edptt3xTiFI8p0in1U27aMez87ArsmuwG7Tn2YfYl9m32zx3MHBId1jt0O3xydHXMdmxwvOuk4TTDqcSpw+lXZxtnoXOd8zUXpkuQyxKXdpcXU22niqdun3rLleUa7rrStdP1o5u7m9yt2W3U3cw9xX2r+00umxvJXcM970H08PdY4nHM452nm6fC85DnL152Xlle+70eT7OcJp7WMG3I28Rb4L3Le2A6Pj1l+s7pAz7GPgKfep+Hvqa+It89viN+1n6Zfgf8nvs7+sv9j/i/4XnyFvFOBWABwQHlAb2BGoGzA2sDHwSZBKUHNQWNBbsGLww+FUIMCQ1ZH3KTb8AX8hv5YzPcZyya0RXKCJ0VWhv6MMwmTB7WEY6GzwjfEH5vpvlM6cy2CIjgR2yIuB9pGZkX+X0UKSoyqi7qUbRTdHF09yzWrORZ+2e9jvGPqYy5O9tqtnJ2Z6xqbFJsY+ybuIC4qriBeIf4RfGXEnQTJAntieTE2MQ9ieNzAudsmjOc5JpUlnRjruXcorkX5unOy553PFk1WZB8OIWYEpeyP+WDIEJQLxhP5aduTR0T8oSbhU9FvqKNolGxt7hKPJLmnVaV9jjdO31D+miGT0Z1xjMJT1IreZEZkrkj801WRNberM/ZcdktOZSclJyjUg1plrQr1zC3KLdPZisrkw3keeZtyhuTh8r35CP5c/PbFWyFTNGjtFKuUA4WTC+oK3hbGFt4uEi9SFrUM99m/ur5IwuCFny9kLBQuLCz2Lh4WfHgIr9FuxYji1MXdy4xXVK6ZHhp8NJ9y2jLspb9UOJYUlXyannc8o5Sg9KlpUMrglc0lamUycturvRauWMVYZVkVe9ql9VbVn8qF5VfrHCsqK74sEa45uJXTl/VfPV5bdra3kq3yu3rSOuk626s91m/r0q9akHV0IbwDa0b8Y3lG19tSt50oXpq9Y7NtM3KzQM1YTXtW8y2rNvyoTaj9nqdf13LVv2tq7e+2Sba1r/dd3vzDoMdFTve75TsvLUreFdrvUV99W7S7oLdjxpiG7q/5n7duEd3T8Wej3ulewf2Re/ranRvbNyvv7+yCW1SNo0eSDpw5ZuAb9qb7Zp3tXBaKg7CQeXBJ9+mfHvjUOihzsPcw83fmX+39QjrSHkr0jq/dawto22gPaG97+iMo50dXh1Hvrf/fu8x42N1xzWPV56gnSg98fnkgpPjp2Snnp1OPz3Umdx590z8mWtdUV29Z0PPnj8XdO5Mt1/3yfPe549d8Lxw9CL3Ytslt0utPa49R35w/eFIr1tv62X3y+1XPK509E3rO9Hv03/6asDVc9f41y5dn3m978bsG7duJt0cuCW69fh29u0XdwruTNxdeo94r/y+2v3qB/oP6n+0/rFlwG3g+GDAYM/DWQ/vDgmHnv6U/9OH4dJHzEfVI0YjjY+dHx8bDRq98mTOk+GnsqcTz8p+Vv9563Or59/94vtLz1j82PAL+YvPv655qfNy76uprzrHI8cfvM55PfGm/K3O233vuO+638e9H5ko/ED+UPPR+mPHp9BP9z7nfP78L/eE8/sl0p8zAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAGCSURBVHjafNFPKKRxHAbw5/v7GYdBYUQjLm5SkoNykCQHtcx431/KgdKumJvSrAO7Nwc3RQ5kd3OkHJC/hUJREluonVcToqRh3sRFPA6M1Mbhc3z6Pj1fkMRHQNJL0uPeul731lU37o1y49cqHr8GvvgWQRLBsmpM/P0j4XAXiooKcXl1CZDEzl4EJBEwAZBUwWAQsVgsFSRR11gmM8trimSa3WypzZ31l5v2/vfk/4oAcv9aSGyUSz4gg/AIAOET0YQswIQWaNrnH+2OeSaY0BJN2+wDTi/OpCrwkxX1vW8q63p5cnaaB+Z/09u7x0nFJTVMiEajPsNCQaC6Ryb8THKcw/Tikho6zj//0RGUNV6gMZ1H8fmpH5iTHDlwsiOhO7FrN5RdP6aBIUj/pvJ2bkFbkxAzBzELELNCQQqgrJ5ST1/jqmYOJcHa7dYYGV5TrQ3d+vfUU+b7IfrOIRCGBYD0o1VGmaHaB6DZkqvMD2hUfF1UAISkvE/+yqbCZ89+HgBtwgFOrBUzJgAAAABJRU5ErkJggg==" : b + "BI" + c + "BWzo5X" + d + "EAAAOxAGVKw4bAAAKT2" + e + "nVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAFJJREFUeNrclEEKACAIBOfp/Xy7i4WSRnRYBIVRVhFJVIhyEAxllQa5E/wBSnsU6Rza2nugqNmASi57C/KKNg/Iqn+iVWzx6M4bOdUEAAD//wMAAYRMfiNaiqEAAAAASUVORK5CYII="
            }
            d = function(a) {
                i.inherit(c, a);

                function c(b, c, d) {
                    var e = this,
                        f;
                    a.call(e, b, l(c.parent.qo)), e.kj = c, e.B_ = d, f = e.C_ = e.yo().addClass("gc-smart-tag-default " + w + " gc-no-user-select ui-widget-header" + n), e.D_ = i(j("img")).attr("src", N(0)).css(x, y).appendTo(f), e.E_ = i(j("img")).attr("src", N(1)).css([x, A], [y, "none"]).appendTo(f)
                }
                var d = {
                    F_: function(a, b, c) {
                        var d = this,
                            e = d.kj.CH,
                            f = i(b),
                            g = d.G_,
                            h = d.E_,
                            j = e ? "38px" : "32px",
                            k = e ? "24px" : "18px";
                        g && g.MQ() || (a ? f.addClass(s) : f.removeClass(s), f.css([B, C], [a ? j : k, k]), c || (a ? h.show() : h.hide()))
                    },
                    H_: function() {
                        var a = this,
                            b = a.C_,
                            c = k.rl(),
                            d = k.Ml.safari && (c.ipad || c.iphone);
                        b.bind(G, function() {
                            a.F_(!0, this, d)
                        }).bind(H, function() {
                            a.F_(!1, this, d)
                        }), b.bind(I, function() {
                            var b, c, e = i(this),
                                f = a.G_,
                                g = a.E_,
                                h = f && f.MQ();
                            h ? (d && g.hide(), e.removeClass(v), a.I_()) : (d && g.show(), e.addClass(v), a.J_(), b = a.w_, c = b && b.find(F)[a.B_.fillType], c && !c.checked && (c.checked = !0, i(c).trigger(E)))
                        }), m.bind(K, function(b) {
                            27 === b.keyCode && (a.G_ && a.G_.MQ() ? a.I_() : a.close(), k.nl(b))
                        })
                    },
                    OT: function() {
                        var a = this,
                            b = a.C_,
                            c = a.B_,
                            d = a.kj.CH,
                            e = d ? "3px" : "0px",
                            f = d ? "24px" : "18px";
                        b && (b.css([y, z], [c.x, c.y]), a.Ao(), a.H_(), a.D_.css(D, e), a.E_.css(C, f), a.hZ())
                    },
                    J_: function() {
                        var a, c, d, e, f, g, h = this,
                            i = h.kj;
                        h.G_ || (h.G_ = new b(i.parent.xv(), i), h.w_ = h.G_.yo()), a = h.C_, c = a.css(y), d = a.css(z), e = parseFloat(d), f = h.G_, g = h.B_, f.z_ = g.fillType, isNaN(e) || (d = e + a.height() + 2), h.w_.css([y, z], [c, d]), f.Ao(), f.QQ(), f.v_.unbind(J).bind(J, function(a, b) {
                            g.fillType = b
                        })
                    },
                    I_: function() {
                        var a = this.G_;
                        a && (a.y_(), a.close())
                    },
                    hZ: function() {
                        var a = this,
                            b = a.G_,
                            c = a.C_;
                        b && (b.MQ() && c.trigger(I), c.trigger(H))
                    },
                    close: function() {
                        var b = this,
                            c = b.kj;
                        b.hZ(), m.unbind(K), a.prototype.close.call(b), c && c.zt()
                    }
                };
                return i.extend(c.prototype, d), c
            }(g), h.K_ = d, a.exports = h
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a = c(87),
                b = c(26),
                d = c(33),
                e = c(149),
                f = a.GC$,
                g = a.kf,
                h = a.X3,
                i = a.Events,
                j = b.j.Fa,
                k = a.Rect,
                l = a.zF,
                m = null,
                n = void 0,
                o = Math.min,
                p = Math.abs,
                q = Math.max,
                r = 5,
                s = 3,
                t = "drag",
                u = "corner",
                v = "black",
                w = function() {
                    return b.C(e.SR)()
                };

            function x(a) {
                return a.rowViewportIndex
            }
            function y(a) {
                return a.colViewportIndex
            }
            function z(a) {
                return a.frozenRowCount()
            }
            function A(a) {
                return a.frozenColumnCount()
            }
            function B(a) {
                return a.hitTestType
            }
            function C(a, b) {
                return a.getRowCount(b)
            }
            function D(a, b) {
                return a.getColumnCount(b)
            }
            function E(a) {
                return a.colCount
            }
            function F(a) {
                return a.rowCount
            }
            function G(a) {
                return a.height
            }
            function H(a) {
                return a.width
            }
            function I(a, b, c, d, e) {
                a.save();
                var f, g, h;
                b === d ? (a.rect(b - 2, c, 7, p(e - c)), a.clip(), a.beginPath(), c < e ? (c -= 3, e += 3) : (c += 3, e -= 3), f = l(b - 1, c - 1, d - 1, e + 1, v, 7), g = l(b, c, d, e, v, 7), h = l(b + 1, c - 1, d + 1, e + 1, v, 7)) : c === e && (a.rect(b, c - 2, p(d - b), 7), a.clip(), a.beginPath(), b < d ? (b -= 3, d += 3) : (b += 3, d -= 3), f = l(b - 1, c - 1, d + 1, e - 1, v, 7), g = l(b, c, d, e, v, 7), h = l(b - 1, c + 1, d + 1, e + 1, v, 7)), f && f.vE(a), g && g.vE(a), h && h.vE(a), a.stroke(), a.beginPath(), a.restore()
            }
            function J(a, b, c, d, e, f, g, h, j, k, l) {
                var m = b ? i.DragDropBlock : i.DragDropBlockCompleted,
                    n = {
                        sheet: a,
                        sheetName: a.name(),
                        fromRow: c,
                        fromCol: d,
                        toRow: e,
                        toCol: f,
                        rowCount: g,
                        colCount: h,
                        copy: j,
                        insert: k,
                        copyOption: l
                    };
                return b && (n.cancel = !1), a.Wq(m, n), n.cancel
            }
            function K(a, b, c, d, e) {
                var f, g, h;
                for (f = 0; f < c.rowCount; f++) {
                    for (g = 0; g < c.colCount; g++) {
                        if (h = a.getSpan(c.row + f, c.col + g), !h || h.rowCount !== b.rowCount || h.colCount !== b.colCount) return !1;
                        d && (g += b.colCount)
                    }
                    e && (f += b.rowCount)
                }
                return !0
            }
            function L(a, b, c) {
                var d, e = b.row,
                    f = b.rowCount,
                    g = b.col,
                    h = b.colCount,
                    i = c.row,
                    j = c.rowCount,
                    k = c.col,
                    l = c.colCount,
                    m = e === i && f === j,
                    n = g === k && h === l;
                return !(!m && !n) && (d = a.getSpan(e, g), !(!d || !K(a, d, b, m, n)) && (!a.ITa.qu(i, k, j, l) && K(a, d, c, m, n)))
            }
            f.extend(a.iI.prototype, {
                gG: function(a) {
                    var b, c, d, e, f, g, h, i, j = this;
                    j.zG || (b = j.kj, c = m, d = b.ITa.getSelections(), 1 === d.length ? c = d[0] : d.length < 1 && (c = b.ITa.getSpan(b.Jl, b.Kl)), c && (j.zG = !0, j.OG = !0, j.L_ = c, e = b.getRangeRect(x(a), y(a), c), f = j.gA, f.x = e.x, f.y = e.y, f.width = e.width - 1, f.height = e.height - 1, f.row = c.row, f.col = c.col, f.rowCount = F(c), f.colCount = E(c), g = b.Tq(c), h = a.row, i = a.col, h < g.row && (h = g.row), h >= g.row + F(g) && (h = g.row + F(g) - 1), i < g.col && (i = g.col), i >= g.col + E(g) && (i = g.col + E(g) - 1), f.hitRow = h, f.hitCol = i, f.rowOffset = h - g.row, f.colOffset = i - g.col, j.rG = {
                        KG: x(a),
                        MG: y(a),
                        sG: B(a)
                    }, j.qG()))
                },
                AG: function() {
                    var a, b, c, d, e, f, g, h, i, j = this;
                    j.rG && j.OG && j.zG && j.L_ && (a = j.$F, b = j.gA, c = b.width / 2, d = b.x + c, e = b.height / 2, f = b.y + e, b.hitTarget = {
                        x: a.x,
                        y: a.y
                    }, g = j.fH(), h = j.gH(), i = !1, (p(d - a.x) > c + 5 || p(f - a.y) > e + 5) && (i = !0), g >= 0 && h >= 0 && i && j.M_(g, h), j.NG())
                },
                M_: function(a, b) {
                    var c, d, e, f, g, h, i, j, k = this;
                    k.zG && k.L_ && (c = k.kj, d = k.gA, e = c.Ix(), e.row === -1 && e.col !== -1 ? (d.row = -1, d.col = q(0, o(D(c) - E(d), b - d.colOffset))) : e.row !== -1 && e.col === -1 ? (d.row = q(0, o(C(c) - F(d), a - d.rowOffset)), d.col = -1) : (d.row = d.row < 0 ? -1 : q(0, o(C(c) - F(d), a - d.rowOffset)), d.col = d.col < 0 ? -1 : q(0, o(D(c) - E(d), b - d.colOffset))), d.hitRow = a, d.hitCol = b, f = c.Tq(d), g = k.N_, g && f.row === g.row && f.col === g.col && F(f) === F(g) && E(f) === E(g) && f.row > c.ar() && f.col > c.$q() && f.row + F(f) - 1 < c.ir() && f.col + E(f) - 1 < c.dr() || (k.MI = f, c.yl.QH(), k.N_ = f, h = c.parent, h && h.options.showDragDropTip && (i = d.x + d.width + r, j = d.y + d.height + r, h.uw(k.O_(f), i, j))))
                },
                O_: function(a) {
                    var b, c, e, f, g, i, j, k, l;
                    return a && h ? (b = this.kj, c = b.Ix(), e = b.getActiveRowIndex(), f = b.getActiveColumnIndex(), e = e < 0 ? 0 : e, f = f < 0 ? 0 : f, 1 === F(c) && 1 === E(c) ? g = d.rf(m, m, a.row - e, a.col - f, !0, !0) : (c.row === -1 && c.col >= 0 ? (i = k = d.BAND_INDEX_CONST, j = a.col - f, l = a.col - f + E(c) - 1) : c.col === -1 && c.row >= 0 ? (j = l = d.BAND_INDEX_CONST, i = a.row - e, k = a.row - e + F(c) - 1) : c.row >= 0 && c.col >= 0 && (i = a.row - e, k = a.row - e + F(c) - 1, j = a.col - f, l = a.col - f + E(c) - 1), g = d.uf(m, m, i, j, k, l, !0, !0, !0, !0)), b.Cf().unparse(b.yj(), g, e, f)) : n
                },
                wH: function() {
                    var a, b, c, d, e, f, j, k, l, n, o, p, q, r = this,
                        s = !1,
                        t = "",
                        u = !1,
                        v = r.kj;
                    r.rG = m, r.RG(), b = v.Ix(), a = b && (F(b) > 0 || E(b) > 0) ? {
                        r: b.row,
                        c: b.col,
                        rc: F(b),
                        cc: E(b)
                    } : {
                        r: v.Jl,
                        c: v.Kl,
                        rc: 1,
                        cc: 1
                    }, r.zG === !0 && r.OG === !0 && (c = a.r, d = a.c, e = a.rc, f = a.cc, j = r.gA.row, k = r.gA.col, l = v.options.protectionOptions, o = {
                        fromRow: c,
                        fromColumn: d,
                        rowCount: e,
                        columnCount: f,
                        toRow: j,
                        toColumn: k,
                        isDragInsert: r.OH,
                        isDragCopy: r.PH
                    }, v.Wq(i.BeforeDragDrop, o), t = o.invalidMessage, t && 0 !== t.length || (!r.OH || c !== -1 && d !== -1 ? j === c && k === d || ((v.qu(c, d, e, f) || v.qu(j, k, e, f)) && (s = !0, t = w().Exp_ChangeMergedCell), s || h && (v.Ns(c, d, e, f) || v.Ns(j, k, e, f)) && (s = !0, t = w().Exp_ChangePartOfArray), !s && v.options.isProtected && (!r.PH && v.ou(g(c, d, e, f)) || v.ou(g(j, k, e, f))) && (s = !0, t = w().Exp_CellReadOnly), s || (n = J(v, !0, c, d, j, k, e, f, r.PH, !1, 1023), n || (u = v.wu().execute({
                        cmd: "dragDrop",
                        sheetName: v.name(),
                        fromRow: c,
                        fromColumn: d,
                        toRow: j,
                        toColumn: k,
                        rowCount: e,
                        columnCount: f,
                        copy: r.PH,
                        insert: !1,
                        option: 1023
                    }), J(v, !1, c, d, j, k, e, f, r.PH, !1, 1023)))) : d >= 0 ? (r.PH && (k <= d || k >= d + f) || !r.PH && (k < d || k > d + f)) && ((v.qu(-1, d, -1, f) || v.qu(-1, k, -1, 0)) && (s = !0, t = w().Exp_ChangeMergedCell), p = l && l.allowDragInsertColumns, !s && v.options.isProtected && p !== !0 && (s = !0, t = w().Exp_ColumnReadOnly), s || (n = J(v, !0, -1, d, -1, k, -1, f, r.PH, !0, 1023), n || (u = v.wu().execute({
                        cmd: "dragDrop",
                        sheetName: v.name(),
                        fromRow: -1,
                        fromColumn: d,
                        toRow: -1,
                        toColumn: k,
                        rowCount: -1,
                        columnCount: f,
                        copy: r.PH,
                        insert: !0,
                        option: 1023
                    }), J(v, !1, -1, d, -1, k, -1, f, r.PH, !0, 1023)))) : c >= 0 && d < 0 && (r.PH && (j <= c || j >= c + e) || !r.PH && (j < c || j > c + e)) && ((v.qu(c, -1, e, -1) || v.qu(j, -1, 0, -1)) && (s = !0, t = w().Exp_ChangeMergedCell), s || h && (v.Ns(c, -1, e, -1) || v.Ns(j, -1, 0, -1)) && (s = !0, t = w().Exp_ChangePartOfArray), q = l && l.allowDragInsertRows, !s && v.options.isProtected && q !== !0 && (s = !0, t = w().Exp_RowReadOnly), s || (n = J(v, !0, c, -1, j, -1, e, -1, r.PH, !0, 1023), n || (u = v.wu().execute({
                        cmd: "dragDrop",
                        sheetName: v.name(),
                        fromRow: c,
                        fromColumn: -1,
                        toRow: j,
                        toColumn: -1,
                        rowCount: e,
                        columnCount: -1,
                        copy: r.PH,
                        insert: !0,
                        option: 1023
                    }), J(v, !1, c, -1, j, -1, e, -1, r.PH, !0, 1023)))))), r.OG = !1, r.zG = !1, r.L_ = m, r.OH = !1, r.PH = !1, r.N_ = m, r.xw(), u || (r.gA = {}, v.repaint()), s && v.Os(3, t)
                },
                hG: function(a) {
                    var b = this;
                    b.BG !== !0 && b.OG !== !0 && (b.P_(), b.A$ && (b.OG = !0, b.BG = !0, b.$I = !0, b.Q_ = a, b.R_ = y(a), b.S_ = x(a), b.T_ = y(a), b.U_(), b.rG = {
                        KG: x(a),
                        MG: y(a),
                        sG: B(a)
                    }, b.qG()))
                },
                U_: function() {
                    var a, b = this,
                        c = z(b.kj),
                        d = A(b.kj),
                        e = b.V_();
                    e >= 0 && e < c ? b.W_ = 0 : e >= c && e <= C(b.kj) && (b.W_ = 1), b.X_() ? b.Y_ = 1 : b.Y_ = b.Q_, a = b.Z_(), a >= 0 && a < d ? b.__ = 0 : a >= d && a <= D(b.kj) && (b.__ = 1), b.a0() ? b.b0 = 1 : b.b0 = b.R_
                },
                CG: function() {
                    var a, b, c, d = this;
                    d.rG && d.BG && d.OG && d.A$ && (d.S_ = d.iH(), d.T_ = d.jH(), d.c0 = d.fH(), d.d0 = d.gH(), d.c0 >= 0 && d.d0 >= 0 && (d.e0(), d.f0(), a = d.kj.parent, b = !1, c = d.g0(), c && (b = d.h0(d.A$, d.A_, !0)), a && a.options.showDragFillTip && b && d.i0(), d.j0()), d.NG())
                },
                k0: function() {
                    var a, d, f, g, h, i, j, k, l, n, o, p, q, r, s = this,
                        t = s.kj,
                        u = s.A$,
                        v = s.A_,
                        w = t.parent.options.defaultDragFillType,
                        x = s.l0(3 === w ? 5 : w),
                        y = s.m0(),
                        z = s.g0();
                    return 1 === x ? (a = 0 === y || 1 === y ? 1 : 0, d = new e.z$(t), f = d.B$(z, a, !0), g = s.n0(y, v, u), h = t.getActualStyle(g.row, g.col), i = h.cellType || t.Al(), j = h.formatter ? h.formatter : h._autoFormatter, k = c(34), l = k && k.GeneralFormatter, f instanceof Date && l && (j = new l(b.CultureManager.q4().DateTimeFormat.shortDatePattern + " hh:mm:ss AM/PM;@", 0)), n = s.rG, o = 3, n && (o = n.sG), p = {
                        sheet: t,
                        row: g.row,
                        col: g.col,
                        sheetArea: o,
                        quotePrefix: h.quotePrefix
                    }, q = {}, i.format(f, j, q, p)) : 0 === x ? (g = s.n0(y, v, u), r = t.getFormula(g.row, g.col), r ? m : t.getText(g.row, g.col)) : m
                },
                n0: function(a, b, c) {
                    var d, e = c.row,
                        f = c.col,
                        h = F(c),
                        i = E(c),
                        j = g(e, f, 1, 1);
                    return 3 === a ? (d = F(b) % h, d = 0 === d ? e + h - 1 : e + d - 1, j.row = d, j.col = f) : 1 === a ? (d = E(b) % i, d = 0 === d ? f + i - 1 : f + d - 1, j.row = e, j.col = d) : 0 === a ? (d = E(b) % i, d = 0 === d ? f : f + i - d, j.row = e, j.col = d) : 2 === a && (d = F(b) % h, d = 0 === d ? e : e + h - d, j.row = d, j.col = f), j
                },
                i0: function() {
                    var a, b, c, d, e, f, g = this,
                        h = g.kj,
                        i = g.l0();
                    return 4 === i || g.a0() || g.X_() ? (g.xw(), m) : (d = g.m0(), e = g.g0(), f = h.cm(e), c = g.k0(), 3 === d || 1 === d ? (a = f.x + f.width + s, b = f.y + f.height + s) : 0 === d ? (a = f.x + s, b = f.y + f.height + s) : 2 === d && (a = f.x + f.width + s, b = f.y + s), void g.uw(c, a, b))
                },
                j0: function() {
                    var a = this;
                    a.o0(), a.p0(), a.q0(), a.r0 = a.g0()
                },
                o0: function() {
                    var a, b = this.kj;
                    this.r0 && (a = b.cm(this.r0), a.x -= 2, a.y -= 2, a.width += 4, a.height += 4, b.yl.dm(a))
                },
                p0: function(a) {
                    var b = this.kj;
                    b.yl.im(this.A$, m, a)
                },
                q0: function() {
                    var a, b, c = this.kj,
                        d = c.yl,
                        e = this.g0();
                    e && (a = d.bm(), b = c.cm(e), a.save(), a.beginPath(), d.RI(a, b), a.restore())
                },
                f0: function() {
                    this.A_ = this._I()
                },
                a0: function() {
                    return this.A$.col === -1 && this.A$.row !== -1
                },
                X_: function() {
                    return this.A$.row === -1 && this.A$.col !== -1
                },
                ZI: function() {
                    return 4 === this.dJ || 5 === this.dJ
                },
                _I: function() {
                    var a = this,
                        b = -1,
                        c = -1,
                        d = -1,
                        e = -1;
                    switch (a.dJ) {
                        case 0:
                            a.X_() ? (b = -1, d = -1) : (b = a.V_(), d = F(a.A$)), c = a.d0, e = a.Z_() - c;
                            break;
                        case 1:
                            a.X_() ? (b = -1, d = -1) : (b = a.V_(), d = F(a.A$)), c = a.s0() + 1, e = a.d0 - c + 1;
                            break;
                        case 2:
                            b = a.c0, d = a.V_() - b, a.a0() ? (c = -1, e = -1) : (c = a.Z_(), e = E(a.A$));
                            break;
                        case 3:
                            b = a.t0() + 1, d = a.c0 - b + 1, a.a0() ? (c = -1, e = -1) : (c = a.Z_(), e = E(a.A$));
                            break;
                        case 5:
                            b = a.c0, d = a.t0() - b + 1, a.a0() ? (c = -1, e = -1) : (c = a.Z_(), e = E(a.A$));
                            break;
                        case 4:
                            a.X_() ? (b = -1, d = -1) : (b = a.A$.row, d = F(a.A$)), c = a.d0, e = a.s0() - c + 1
                    }
                    return g(b, c, d, e)
                },
                u0: function() {
                    var a = this.t0();
                    return a !== -1 ? this.kj.Gr(this.Y_).findRow(a) : m
                },
                v0: function() {
                    return this.kj.Gr(this.S_).findRow(this.w0())
                },
                w0: function() {
                    return this.kj.getViewportBottomRow(this.S_)
                },
                x0: function() {
                    var a = this.s0();
                    return a !== -1 ? this.kj.Hr(this.b0).findCol(a) : m
                },
                y0: function() {
                    return this.kj.Hr(this.T_).findCol(this.z0())
                },
                z0: function() {
                    return this.kj.getViewportRightColumn(this.T_)
                },
                e0: function() {
                    var a, b, c, d, e, g, h, i, j, k, l, m, n, q, r, s, t, u, v, w, x = this,
                        y = x.a0(),
                        z = x.X_(),
                        A = f(x.kj.Ws()).offset(),
                        B = x.$F.e,
                        C = x.$F.x,
                        D = x.$F.y,
                        E = B.pageX - A.left,
                        F = B.pageY - A.top,
                        G = !1;
                    y || z ? z ? x.d0 >= x.Z_() && x.d0 <= x.s0() ? x.dJ = 4 : x.d0 < x.Z_() ? x.dJ = 0 : x.d0 > x.s0() && (x.dJ = 1) : y && (x.c0 >= x.V_() && x.c0 <= x.t0() ? x.dJ = 5 : x.c0 < x.V_() ? x.dJ = 2 : x.c0 > x.t0() && (x.dJ = 3)) : x.c0 >= x.V_() && x.c0 <= x.t0() ? x.d0 >= x.Z_() && x.d0 <= x.s0() ? (a = p(x.d0 - x.s0()), b = p(x.c0 - x.t0()), b > a ? x.dJ = 5 : b < a ? x.dJ = 4 : (c = x.u0(), c || (c = x.v0()), D > c.y + c.height ? x.dJ = 3 : (d = x.x0(), d || (d = x.y0()), e = d.x + d.width - C, g = c.y + c.height - D, E >= d.x && E <= d.x + d.width && F >= c.y && F <= c.y + c.height ? e >= g ? x.dJ = 4 : x.dJ = 5 : G = !0))) : x.d0 < x.Z_() ? x.dJ = 0 : x.d0 > x.s0() && (x.dJ = 1) : x.c0 < x.V_() ? x.d0 >= x.Z_() && x.d0 <= x.s0() ? x.dJ = 2 : x.d0 < x.Z_() ? (a = p(x.d0 - x.Z_()), b = p(x.c0 - x.V_()), b >= a ? x.dJ = 2 : x.dJ = 0) : x.d0 > x.s0() && (a = p(x.d0 - x.s0()), b = p(x.c0 - x.V_()), b >= a ? x.dJ = 2 : x.dJ = 1) : x.c0 > x.t0() && (x.d0 >= x.Z_() && x.d0 <= x.s0() ? x.dJ = 3 : x.d0 < x.Z_() ? (a = p(x.d0 - x.Z_()), b = p(x.c0 - x.t0()), b >= a ? x.dJ = 3 : x.dJ = 0) : x.d0 > x.s0() && (a = p(x.d0 - x.s0()), b = p(x.c0 - x.t0()), b >= a ? x.dJ = 3 : x.dJ = 1)), h = x.kj.yl.rH, h && (i = x.t0(), j = x.s0(), k = i + 1, l = j + 1, m = x.kj.getRowHeight(i, 3), n = x.kj.getColumnWidth(j, 3), q = x.kj.getRowHeight(k, 3), r = x.kj.getColumnWidth(l, 3), s = h.x + h.width / 2 - o(10, n / 2), t = h.x + h.width / 2 + o(10, r / 2), u = h.y + h.height / 2 - o(10, m / 2), v = h.y + h.height / 2 + o(10, q / 2), w = !1, w = y || z ? z ? s <= E && E <= t : u <= F && F <= v : s <= E && E <= t && u <= F && F <= v, w || G ? (x.$I = !0, x.dJ = 4) : x.$I = !1)
                },
                V_: function() {
                    return this.A$ ? this.A$.row === -1 ? 0 : this.A$.row : -1
                },
                t0: function() {
                    var a = this;
                    return a.A$ ? a.A$.row === -1 ? C(a.kj) - 1 : a.A$.row + F(a.A$) - 1 : -1
                },
                Z_: function() {
                    return this.A$ ? this.A$.col === -1 ? 0 : this.A$.col : -1
                },
                s0: function() {
                    var a = this;
                    return a.A$ ? a.A$.col === -1 ? D(a.kj) - 1 : a.A$.col + E(a.A$) - 1 : -1
                },
                hla: function(a, b) {
                    var c, d, e, f, h, i, j = g(b.row, b.col, b.rowCount, b.colCount),
                        k = this.kj;
                    return k.ITa.findSpan(a.row, a.col) && (c = a.rowCount, d = j.rowCount, 0 !== Math.floor(d % c) && (e = Math.ceil(d / c) * c, j.row + e <= k.getRowCount() && (j.rowCount = e)), f = a.colCount, h = j.colCount, 0 !== Math.floor(h % f) && (i = Math.ceil(h / f) * f, j.col + i <= k.getColumnCount() && (j.colCount = i))), j
                },
                xH: function() {
                    var a, b, c, d, e, f, g = this,
                        h = g.kj;
                    return g.rG = m, g.RG(), g.xw(), g.BG && g.OG ? (g.BG = !1, g.OG = !1, a = g.g0(), void(a && (b = g.h0(g.A$, g.A_), !b || g.$I ? (g.A0(), g.WA(a)) : (c = h.mm.A$, d = g.hla(c, g.A_), e = g.l0(), h.wu().execute({
                        cmd: "fill",
                        sheetName: h.name(),
                        startRange: c,
                        fillRange: d,
                        autoFillType: e,
                        fillDirection: h.mm.m0()
                    }), f = g._$, !f && g.B0() && h.parent.options.showDragFillSmartTag && 4 !== g.$$ ? g.C0(g.$$) : g.WA(a), g.A0())))) : void g.A0()
                },
                C0: function(a) {
                    var b = this.kj,
                        c = b.yl.rH,
                        d = {
                            x: c.x + c.width,
                            y: c.y + c.height,
                            fillType: a
                        };
                    b.NF = new e.K_(b.parent.xv(), b, d), b.NF.OT()
                },
                P_: function() {
                    var a = this.kj,
                        b = a.ITa.getSelections();
                    1 === b.length ? this.A$ = b[0] : a.Jl >= 0 && a.Kl >= 0 && (this.A$ = g(a.Jl, a.Kl, 1, 1))
                },
                A0: function() {
                    this.OG = !1, this.BG = !1
                },
                WA: function(a) {
                    this.kj.yl.im(a)
                },
                l0: function(a) {
                    var b, c = this,
                        d = c.kj,
                        e = a !== n ? a : d.parent.options.defaultDragFillType;
                    return c.ZI() ? 4 : 5 !== e ? e : (b = 1 === F(c.A$) && 1 === E(c.A$) && !c.X_() && !c.a0(), b ? c.RH ? 1 : 0 : c.RH ? 0 : 1)
                },
                g0: function() {
                    var a, b, c, d, e = this;
                    return e.A$ ? e.ZI() ? e.A$ : e.A_ ? (a = 0, b = 0, c = 0, d = 0, e.D0() ? (a = 2 === e.dJ ? e.A_.row : e.A$.row, b = F(e.A$) + F(e.A_), c = e.A$.col, d = E(e.A$)) : (a = e.A$.row, b = F(e.A$), c = 0 === e.dJ ? e.A_.col : e.A$.col, d = E(e.A$) + E(e.A_)), g(a, c, b, d)) : m : m
                },
                h0: function(a, b, c) {
                    var d = this.kj,
                        e = !0,
                        f = "";
                    return d.ITa.MTa(b.row, b.col, F(b), E(b)) && !L(d, a, b) && (e = !1, f = w().Exp_FillRangeContainsMergedCell), e && d.options.isProtected && d.ou(b) && (e = !1, f = w().Exp_FillCellsReadOnly), e || c || d.Os(2, f), e
                },
                B0: function() {
                    return this.E0() || this.F0()
                },
                E0: function() {
                    return 3 === this.dJ || 1 === this.dJ
                },
                F0: function() {
                    return 0 === this.dJ || 2 === this.dJ
                },
                D0: function() {
                    return 2 === this.dJ || 3 === this.dJ || 5 === this.dJ
                },
                m0: function() {
                    var a = this.dJ;
                    return a >= 0 && a <= 3 ? a : 4 === a ? 0 : 5 === a ? 2 : 3
                },
                tr: function(a, b, c) {
                    var d, e, f, g = this,
                        h = m,
                        i = x(a),
                        k = y(a),
                        l = g.kj,
                        n = l.parent;
                    if (j(i) || j(k) || !n.options.allowUserDragDrop && !n.options.allowUserDragFill) return h;
                    if (d = l.Ix(), d.row === -1 && d.col === -1) return h;
                    if (i >= 0 && k >= 0 && 1 === l.ITa.getSelections().length) {
                        if (g.qH(i, k, b, c)) return h;
                        e = l.getRangeRect(i, k, d), e.x - 4 < b && b < e.x + 4 && e.y <= c && c < e.y + e.height && (h = {
                            action: t,
                            side: "left"
                        }), h || (f = g.kj.yl.rH, f && f.x <= b && b <= f.x + f.width && f.y <= c && c <= f.y + f.height && (h = {
                            action: t,
                            side: u
                        })), h || e.x + e.width - 4 < b && b < e.x + e.width + 4 && e.y <= c && c < e.y + e.height && (h = {
                            action: t,
                            side: "right"
                        }), h || e.y - 4 < c && c < e.y + 4 && e.x <= b && b < e.x + e.width && (h = {
                            action: t,
                            side: "top"
                        }), h || e.y + e.height - 4 < c && c < e.y + e.height + 4 && e.x <= b && b < e.x + e.width && (h = {
                            action: t,
                            side: "bottom"
                        }), h && (b < e.x || b > e.x + e.width || c < e.y || c > e.y + e.height) && (h.outside = !0)
                    }
                    return n && n.options.allowUserDragDrop || h && h.side !== u && (h.side = m), n && n.options.allowUserDragFill || h && h.side === u && (h.side = m), h
                }
            }), f.extend(a.oJ.prototype, {
                gJ: function(a, b) {
                    var c, d = this.kj,
                        e = a.x,
                        f = a.y,
                        g = H(a),
                        h = G(a),
                        i = d.Ix(),
                        j = d.am(),
                        l = 4,
                        m = -2.5;
                    return b > 2007 && (l = 5, m = -3), c = new k((-4), (-4), l, l), i.col === -1 ? (c.x = j.kt, c.y = f + h + m) : i.row === -1 ? (c.x = e + g + m, c.y = j.nt) : (c.x = e + g + m, c.y = f + h + m), c
                },
                eJ: function(b, c, d, e, f) {
                    var g, h, i = this,
                        j = i.kj,
                        l = j.am(),
                        m = j.parent,
                        n = m && m.Vv,
                        o = i.gJ(e, n),
                        p = o.x,
                        r = o.y,
                        s = H(o),
                        t = G(o),
                        u = l.Ft(c, d);
                    f && !o.intersectRect(f) || o.intersectRect(u) && (g = -1.5, n > 2007 && (g = -1), h = new k(p + g, r + g, s + 2, t + 2), h.x = q(h.x, u.x), h.y = q(h.y, u.y), i.dm(h), b.save(), f && !f.containsRect(o) && (b.rect(f.x, f.y, H(f), G(f)), b.clip()), b.beginPath(), b.fillStyle = a.Rm.Om(j, j.getSelectionBorderColor()), b.fillRect(p, r, s, t), i.rH = new k(o.x, o.y, 4, 4), b.beginPath(), b.restore())
                },
                RI: function(a, b) {
                    var c = b.x,
                        d = b.y,
                        e = c + H(b),
                        f = d + G(b);
                    I(a, c, d, e, d), I(a, c, f, e, f), I(a, c, d, c, f), I(a, e, d, e, f)
                },
                NI: function(a, b) {
                    var c, d, e, f, g, h, i, j, l, m, n, o = this,
                        p = o.kj,
                        q = p.mm.gA,
                        r = q.hitTarget;
                    q && r && (c = q.hitCol, d = q.hitRow, e = p.mm.OH, f = p.OI, a.save(), e !== !0 || q.row !== -1 && q.col !== -1 ? (f && (g = new k(f.x - 2, f.y - 2, H(f) + 4, G(f) + 4), o.dm(g, b), o.im(p.Ix(), b)), a.rect(b.x, b.y, H(b), G(b)), a.clip(), a.beginPath(), o.RI(a, q)) : q.row === -1 && q.col !== -1 ? (h = p.Hr(0).findCol(c), h || (h = p.Hr(1).findCol(c)), h || (h = p.Hr(2).findCol(c)), h && (i = h.x, j = H(h), q.col = c, r.x > i + j / 2 && (q.col < p.cr() || q.col === p.dr()) && (i = h.x + H(h), q.col++), f && 0 === H(f) || (f = p.mm.gA), f && (g = new k(f.x - 2, f.y - 2, H(f) + 4, G(f) + 4), o.dm(g, b), o.im(p.Ix(), b)), p.QI = new k(i, q.y, 0, G(q)), a.rect(b.x, b.y, H(b), G(b)), a.clip(), a.beginPath(), I(a, i, q.y, i, q.y + G(q)))) : q.row !== -1 && q.col === -1 && (l = p.Gr(0).findRow(d), l || (l = p.Gr(1).findRow(d)), l || (l = p.Gr(2).findRow(d)), l && (m = l.y, n = G(l), q.row = d, r.y > m + n / 2 && (q.row < p.hr() || q.row === p.ir()) && (m = l.y + G(l), q.row++), f && 0 === G(f) || (f = p.mm.gA), f && (g = new k(f.x - 2, f.y - 2, H(f) + 4, G(f) + 4), o.dm(g, b), o.im(p.Ix(), b)), p.QI = new k(q.x, m, H(q), 0), a.rect(b.x, b.y, H(b), G(b)), a.clip(), a.beginPath(), I(a, q.x, m, q.x + H(q), m))), a.beginPath(), a.restore())
                },
                QH: function() {
                    var a, b, c, d, e, f, g, h, i, j, l, m, n = this,
                        o = n.kj,
                        p = o.yt;
                    p && p.dragInfo && (a = n.bm(), b = o.am(), c = o.mm.MI, d = o.mm.gA, e = o.cm(c), f = o.frozenTrailingColumnCount(), g = o.frozenTrailingRowCount(), h = o.getColumnCount() - f, i = o.getRowCount() - g, j = b.Ft(1, 1), f > 0 && c.col + c.colCount <= h && e.x + H(e) > j.x + H(j) && e.intersectRect(j) && (e = e.getIntersectRect(j)), g > 0 && c.row + c.rowCount <= i && e.y + G(e) > j.y + G(j) && e.intersectRect(j) && (e = e.getIntersectRect(j)), l = new k(b.kt, b.nt, b.lt + b.js, b.ot + b.gs), H(e) > 0 && G(e) > 0 ? (d.x = e.x, d.y = e.y, d.width = H(e) - 1, d.height = G(e) - 1, n.NI(a, l)) : 0 !== H(e) && 0 !== G(e) || (d.x = e.x, d.y = e.y, d.width = H(e), d.height = G(e), n.NI(a, l)), m = o.mm.OH, m === !0 ? o.OI = o.QI : o.OI = new k(d.x, d.y, H(d), G(d)))
                }
            })
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {
                CopyCells: "Copy Cells",
                FillSeries: "Fill Series",
                FillFormattingOnly: "Fill Formatting Only",
                FillWithoutFormatting: "Fill Without Formatting",
                Exp_NumberOnly: "Only works for Numbers",
                Exp_RangeContainsMergedCell: "Range should not have merged cells.",
                Exp_TargetContainsMergedCells: "Target range should not have merged cells.",
                Exp_MergedCellsIdentical: "This operation requires the merged cells to be identically sized.",
                Exp_FillRangeContainsMergedCell: "Cannot fill range that contains a merged cell.",
                Exp_FillCellsReadOnly: "The cells you are trying to fill are protected and therefore read-only.",
                Exp_ChangeMergedCell: "Cannot change part of merged cell.",
                Exp_ColumnReadOnly: "The column you are trying to change is protected and therefore read-only.",
                Exp_RowReadOnly: "The row you are trying to change is protected and therefore read-only.",
                Exp_CellReadOnly: "The cell you are trying to change is protected and therefore read-only.",
                Exp_RangeIsNull: "range is null",
                Exp_ChangePartOfArray: "Cannot change part of an array."
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(154);
            b.MenuView = c(156), b.SR = {}, b.SR.en = c(157), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e = c(87),
                f = c(26),
                g = c(155),
                h = c(156),
                i = e.GC$,
                j = f.j.Fa,
                k = f.j.za,
                l = e.Ul.nl,
                m = "gc.spread.contextMenu.",
                n = "gc.spread.",
                o = "gc-spread-",
                p = "viewport",
                q = "colHeader",
                r = "rowHeader",
                s = "slicer",
                t = "sheetTab",
                u = "corner",
                v = "removeSlicer",
                w = "toggleComment",
                x = "deleteComment",
                y = "editComment",
                z = "unhideSheet",
                A = "hideSheet",
                B = "unhideRows",
                C = "unhideColumns",
                D = "hideRows",
                E = "hideColumns",
                F = "sortAscend",
                G = "sortDescend",
                H = "sort",
                I = "filter",
                J = "insertComment",
                K = "deleteSheet",
                L = "insertSheet",
                M = "insertRows",
                N = "insertColumns",
                O = "deleteRows",
                P = "deleteColumns",
                Q = "clearContents",
                R = "paste",
                S = "pasteOptions",
                T = "pasteFormatting",
                U = "pasteValues",
                V = "pasteFormula",
                W = "pasteAll",
                X = "cut",
                Y = "copy",
                Z = "separator",
                $ = "groupHeader",
                _ = "slicerSortAscend",
                aa = "slicerSortDescend",
                ba = "row",
                ca = "col",
                da = void 0,
                ea = {},
                fa = function() {
                    return f.C(ea.SR)()
                },
                ga = {
                    sheetTab: function(a, b, c) {
                        return RegExp("sheetTab", "i").test(c.workArea) && a.tabStripHitInfo && a.tabStripHitInfo.sheetTab && "newSheet" !== a.tabStripHitInfo.sheetTab.sheetName
                    },
                    outline: function(a, b, c) {
                        return RegExp("outline", "i").test(c.workArea) && a.worksheetHitInfo && a.worksheetHitInfo.outlineHitInfo
                    },
                    viewport: function(a, b, c) {
                        if (RegExp("viewport", "i").test(c.workArea) && a.worksheetHitInfo && 3 === a.worksheetHitInfo.hitTestType && !a.worksheetHitInfo.floatingObjectHitInfo && !a.worksheetHitInfo.commentHitInfo) return ra(b, c) && ua(b, c)
                    },
                    rowHeader: function(a, b, c) {
                        return RegExp("rowHeader", "i").test(c.workArea) && a.worksheetHitInfo && 2 === a.worksheetHitInfo.hitTestType
                    },
                    colHeader: function(a, b, c) {
                        return RegExp("colHeader", "i").test(c.workArea) && a.worksheetHitInfo && 1 === a.worksheetHitInfo.hitTestType
                    },
                    corner: function(a, b, c) {
                        if (RegExp("corner", "i").test(c.workArea) && a.worksheetHitInfo && 0 === a.worksheetHitInfo.hitTestType) return ra(b, c) && ua(b, c)
                    },
                    slicer: function(a, b, c) {
                        return RegExp("slicer", "i").test(c.workArea) && a.worksheetHitInfo && a.worksheetHitInfo.floatingObjectHitInfo && a.worksheetHitInfo.floatingObjectHitInfo.floatingObject && "Slicer" === a.worksheetHitInfo.floatingObjectHitInfo.floatingObject.typeName
                    },
                    chart: function(a, b, c) {
                        return RegExp("chart", "i").test(c.workArea) && a.worksheetHitInfo && a.worksheetHitInfo.floatingObjectHitInfo && a.worksheetHitInfo.floatingObjectHitInfo.floatingObject && "2" === a.worksheetHitInfo.floatingObjectHitInfo.floatingObject.typeName
                    }
                },
                ha = [];

            function ia(a) {
                var b, c;
                if (a.slicers) {
                    if (b = a.slicers.all(), !b || k(b)) return null;
                    for (c in b) if (b[c].isSelected()) return !0;
                    return !1
                }
            }
            function ja(a) {
                var b, c, d, e = a;
                for (b = 0; b < e.length - 1; b++) for (c = b + 1; c < e.length; c++) e[b].row < e[c].row && (d = e[b], e[b] = e[c], e[c] = d);
                return e
            }
            function ka(a) {
                var b, c, d, e = a;
                for (b = 0; b < e.length - 1; b++) for (c = b + 1; c < e.length; c++) e[b].col < e[c].col && (d = e[b], e[b] = e[c], e[c] = d);
                return e
            }
            function la(a, b, c, d) {
                var e = a.getSpans(void 0, 3);
                b >= 0 ? (na(a, e, b, d, 3), na(a, a.getSpans(void 0, 2), b, d, 2)) : c >= 0 && (ma(a, e, c, d, 3), ma(a, a.getSpans(void 0, 1), c, d, 1))
            }
            function ma(a, b, c, d, e) {
                var f, g, h, i, j, k, l, m;
                for (f = 0, g = b.length; f < g; f++) if (h = b[f], c > h.col && c < h.col + h.colCount) for (i = a.getStyle(h.row, h.col, e), j = c; j < c + d; j++) for (k = h.row; k < h.row + h.rowCount; k++) a.setStyle(k, j, i, e), k === h.row + h.rowCount - 1 && (l = a.getCell(h.row + h.rowCount - 1, h.col), m = l.borderBottom(), m && a.getCell(k, j).borderBottom(m))
            }
            function na(a, b, c, d, e) {
                var f, g, h, i, j, k, l, m;
                for (f = 0, g = b.length; f < g; f++) if (h = b[f], c >= h.row && c <= h.row + h.rowCount) for (i = a.getStyle(h.row, h.col, e), j = c; j < c + d; j++) for (k = h.col; k < h.col + h.colCount; k++) a.setStyle(j, k, i, e), k === h.col + h.colCount - 1 && (l = a.getCell(h.row, h.col + h.colCount - 1), m = l.borderRight(), m && a.getCell(j, k).borderRight(m))
            }
            function oa(a, b, c) {
                var d, e, f, g, h = b === ba ? "rowCount" : "colCount";
                for (d = 0; d < a.length; d++) for (e = a[d], f = e[b] === -1 ? 0 : e[b], g = 0; g < e[h]; g++) c(f + g)
            }
            function pa(a, b) {
                var c, d, e, f;
                if (1 === b.colCount && b.row === -1) {
                    if (c = b.col, c === a.$q() && (d = c - 1, d >= 0 && !a.getColumnVisible(d))) return !0
                } else if (1 === b.rowCount && b.col === -1 && (e = b.row, e === a.ar() && (f = e - 1, f >= 0 && !a.getRowVisible(f)))) return !0
            }
            function qa(a) {
                var b, c, d;
                if (a.slicers) {
                    if (b = a.slicers.all(), !b || k(b)) return null;
                    c = [];
                    for (d in b) b[d].isSelected() && c.push(b[d]);
                    return c
                }
            }
            function ra(a, b) {
                var c, d, e, f, g, h, i, j = [n + J, n + y, n + w, n + x],
                    k = b.name;
                if (j.indexOf(k) < 0) return !0;
                if (c = a.getActiveSheet(), d = c.getActiveRowIndex(), e = c.getActiveColumnIndex(), c.comments) {
                    if (f = c.comments.get(d, e)) return k !== n + J;
                    if (k === n + y || k === n + w) return !1;
                    if (k === n + J) return !0;
                    for (g = c.getSelections(), h = 0; h < g.length; h++) if (i = g[h], ta(i, c)) return !0;
                    return !1
                }
            }
            function sa(a, b) {
                var c, d, e, f, g, h;
                if (b.comments) for (c = b.comments.all(), f = 0; f < a.length; f++) for (g = a[f], h = 0; h < c.length; h++) if (!c[h].locked() && (e = c[h].nT, d = c[h].oT, e >= g.row && e < g.row + g.rowCount && d >= g.col && d < g.col + g.colCount)) return !0;
                return !1
            }
            function ta(a, b) {
                var c, d, e, f;
                if (b.comments) for (c = b.comments.all(), f = 0; f < c.length; f++) if (e = c[f].nT, d = c[f].oT, e >= a.row && e < a.row + a.rowCount && d >= a.col && d < a.col + a.colCount) return !0;
                return !1
            }
            function ua(a, b) {
                var c, d, e, f, g;
                return [n + H, n + I].indexOf(b.name) < 0 || (c = a.getActiveSheet(), d = c.getSelections(), !(!d || 1 !== d.length) && (e = d[0], f = va(c, e), !(f && (g = f.range(), e.row < g.row || e.col < g.col || e.row + e.rowCount > g.row + g.rowCount || e.col + e.colCount > g.col + g.colCount))))
            }
            function va(a, b) {
                var c, d, e;
                for (c = b.row; c < b.row + b.rowCount; c++) for (d = b.col; d < b.col + b.colCount; d++) if (a.tables && (e = a.tables.find(c, d))) return e;
                return null
            }
            function wa(a, b, c, d, f) {
                var g, h, i = a.getSheetFromName(b.sheetName);
                return !!i && (i.suspendPaint(), g = e.Commands.bWa(i.name()), c ? (f && f(i, b), i.ITa.undo(b[g])) : (i.ITa.startTransaction(), h = d(i, b), b[g] = i.ITa.endTransaction()), i.resumePaint(), h)
            }
            function xa(a) {
                var b, c = a.getSelections();
                for (b = 0; b < c.length; b++) if (c[b].col !== -1) return !1;
                return !0
            }
            function ya(a) {
                var b, c = a.getSelections();
                for (b = 0; b < c.length; b++) if (c[b].row !== -1) return !1;
                return !0
            }
            b = function() {
                function a() {
                    var a = this;
                    a.menuView = new h, a.menuData = [{
                        text: fa().copy,
                        name: n + Y,
                        command: m + Y,
                        iconClass: o + Y,
                        workArea: p + q + r + s + u
                    }, {
                        text: fa().cut,
                        name: n + X,
                        command: m + X,
                        iconClass: o + X,
                        workArea: p + q + r + s + u
                    }, {
                        text: fa().pasteOptions,
                        name: n + S,
                        iconClass: o + S,
                        type: $,
                        workArea: p + q + r + s + u
                    }, {
                        command: m + W,
                        name: n + W,
                        iconClass: o + W,
                        group: n + S,
                        text: fa().pasteAll,
                        workArea: p + q + r + s + u
                    }, {
                        command: m + V,
                        name: n + V,
                        iconClass: o + V,
                        group: n + S,
                        text: fa().pasteFormula,
                        workArea: p + q + r + u
                    }, {
                        command: m + U,
                        name: n + U,
                        iconClass: o + U,
                        group: n + S,
                        text: fa().pasteValues,
                        workArea: p + q + r + u
                    }, {
                        command: m + T,
                        name: n + T,
                        iconClass: o + T,
                        group: n + S,
                        text: fa().pasteFormatting,
                        workArea: p + q + r + u
                    }, {
                        type: Z
                    }, {
                        text: fa().clearContents,
                        command: m + Q,
                        name: n + Q,
                        workArea: p + q + r + u
                    }, {
                        type: Z
                    }, {
                        text: fa().insertRows,
                        name: n + M,
                        command: m + M,
                        workArea: r
                    }, {
                        text: fa().insertColumns,
                        name: n + N,
                        command: m + N,
                        workArea: q
                    }, {
                        text: fa().deleteRows,
                        name: n + O,
                        command: m + O,
                        workArea: r
                    }, {
                        text: fa().deleteColumns,
                        name: n + P,
                        command: m + P,
                        workArea: q
                    }, {
                        text: fa().insertSheet,
                        name: n + L,
                        command: m + L,
                        workArea: t
                    }, {
                        text: fa().deleteSheet,
                        name: n + K,
                        command: m + K,
                        workArea: t
                    }, {
                        type: Z
                    }, {
                        text: fa().filter,
                        name: n + I,
                        command: m + I,
                        workArea: p + u
                    }, {
                        text: fa().sort,
                        name: n + H,
                        subMenu: [{
                            text: fa().sortAscend,
                            name: n + F,
                            command: m + F,
                            iconClass: o + F
                        }, {
                            text: fa().sortDescend,
                            name: n + G,
                            command: m + G,
                            iconClass: o + G
                        }],
                        workArea: p + u
                    }, {
                        text: fa().slicerSortAscend,
                        name: n + _,
                        command: m + _,
                        iconClass: o + F,
                        workArea: s
                    }, {
                        text: fa().slicerSortDescend,
                        name: n + aa,
                        command: m + aa,
                        iconClass: o + G,
                        workArea: s
                    }, {
                        type: Z
                    }, {
                        text: fa().insertComment,
                        name: n + J,
                        command: m + J,
                        iconClass: o + J,
                        workArea: p + u
                    }, {
                        text: fa().editComment,
                        name: n + y,
                        command: m + y,
                        iconClass: o + y,
                        workArea: p + u
                    }, {
                        text: fa().deleteComment,
                        name: n + x,
                        command: m + x,
                        iconClass: o + x,
                        workArea: p + u
                    }, {
                        text: fa().toggleComment,
                        name: n + w,
                        command: m + w,
                        workArea: p + u
                    }, {
                        type: Z
                    }, {
                        text: fa().hideRows,
                        name: n + D,
                        command: m + D,
                        workArea: r
                    }, {
                        text: fa().unhideRows,
                        name: n + B,
                        command: m + B,
                        workArea: r
                    }, {
                        text: fa().hideColumns,
                        name: n + E,
                        command: m + E,
                        workArea: q
                    }, {
                        text: fa().unhideColumns,
                        name: n + C,
                        command: m + C,
                        workArea: q
                    }, {
                        type: Z
                    }, {
                        text: fa().hideSheet,
                        name: n + A,
                        command: m + A,
                        workArea: t
                    }, {
                        text: fa().unhideSheet,
                        name: n + z,
                        command: m + z,
                        workArea: t
                    }, {
                        type: Z
                    }, {
                        text: fa().removeSlicer,
                        name: n + v,
                        command: m + v,
                        workArea: s
                    }]
                }
                var b = {
                    ad: function(a) {
                        var b = this;
                        b.Mma || (b.wu = a.commandManager(), j(b.Ela) && (b.Ela = new g(a.xv(), i(a.sv))), b.nla(a), b.kTa = {
                            filter: {
                                menuDataDict: [n + I],
                                checkFunction: function(a) {
                                    if (a.rowFilter) return !0
                                }
                            },
                            comments: {
                                menuDataDict: [n + J, n + y, n + x, n + w],
                                checkFunction: function(a) {
                                    if (a.comments) return !0
                                }
                            },
                            slicer: {
                                menuDataDict: [n + _, n + aa, n + v],
                                checkFunction: function(a) {
                                    if (a.slicers) return !0
                                }
                            },
                            floatingObject: {
                                menuDataDict: [n + U, n + T, n + V],
                                checkFunction: function(a) {
                                    var b, c, d;
                                    return !a.BR || (b = a.BR(), c = b.fromSheet, d = c && c.CR, !d || void 0)
                                }
                            }
                        }, b.Mma = !0)
                    },
                    ola: function(a, b) {
                        var c, d, e, f, g, h = this;
                        return b.focus(), c = h.pla(a, b), j(c) ? void l(a) : (d = b.getActiveSheet(), e = {
                            row: d.getActiveRowIndex(),
                            col: d.getActiveColumnIndex()
                        }, void(d.isEditing() && c.worksheetHitInfo && c.worksheetHitInfo.col === e.col && c.worksheetHitInfo.row === e.row || b.getTab() && b.getTab().FD || (h.ad(b), h.qla(c, b), f = h.Fla(h.menuData, c, b), g = h.onOpenMenu(h.menuData, f, c, b), g || (l(a), f.length && h.jla(f, c, b)))))
                    },
                    qla: function(a, b) {
                        var c = this;
                        c.Ela.Loa(a) && c.sla(a, b)
                    },
                    sla: function(a, b) {
                        var c = this,
                            d = b.getActiveSheet();
                        d.isEditing() && d.endEdit(), c.tla(a) ? c.ula(a, b) : c.vla(a) && c.wla(a, b)
                    },
                    vla: function(a) {
                        return a.worksheetHitInfo
                    },
                    xla: function(a, b, c, d) {
                        var e = !0,
                            f, g;
                        if (1 === d) {
                            for (f = 0; f < a.length; f++) g = a[f], g.row === -1 && c >= g.col && c < g.col + g.colCount && (e = !1);
                            return e
                        }
                        if (2 === d) {
                            for (f = 0; f < a.length; f++) g = a[f], g.col === -1 && b >= g.row && b < g.row + g.rowCount && (e = !1);
                            return e
                        }
                        for (f = 0; f < a.length; f++) if (g = a[f], g.contains(b, c)) return !1;
                        return !0
                    },
                    tla: function(a) {
                        return a.tabStripHitInfo && a.tabStripHitInfo.sheetTab
                    },
                    yla: function(a) {
                        return a.tabStripHitInfo.sheetTab.sheetName
                    },
                    wla: function(a, b) {
                        var c = this,
                            d = b.getActiveSheet(),
                            e = a.worksheetHitInfo;
                        e.floatingObjectHitInfo || e.commentHitInfo || (c.Ala(d, e), c.aPa(d))
                    },
                    aPa: function(a) {
                        var b, c = a.getActiveRowIndex(),
                            d = a.getActiveColumnIndex(),
                            e = a.comments;
                        e && (b = e.get(c, d), b && e.bU === b && e.hT(b))
                    },
                    zla: function(a) {
                        return 3 === a.hitTestType
                    },
                    cs: function(a, b, c) {
                        a.cs && a.cs(b, c)
                    },
                    Ala: function(a, b) {
                        var c, d = this,
                            e = a.ITa.getSelections(),
                            f = b.row,
                            g = b.col;
                        d.xla(e, f, g, b.hitTestType) && a.Qs(b.rowViewportIndex < 0 ? -1 : b.row, b.colViewportIndex < 0 ? -1 : b.col) && (a.mm.Ala(a, b, f, g), c = a.ITa.getSelections(), a.Au(e, c))
                    },
                    ula: function(a, b) {
                        var c = this.yla(a);
                        b.setActiveSheet(c), this.$Oa(this.menuData, a, b)
                    },
                    pla: function(a, b) {
                        var c = b.oia(),
                            d = a.pageX - c.left,
                            e = a.pageY - c.top;
                        return b.hitTest(d, e, !0)
                    },
                    onOpenMenu: function(a, b, c, d) {},
                    jla: function(a, b, c) {
                        var d = this;
                        d.Ela.Loa(b) && (d.Cla(), d.Dla(a, b, c))
                    },
                    Cla: function() {
                        this.Ela.close()
                    },
                    Dla: function(a, b, c) {
                        var d = this;
                        d.Ela.OT(d.menuView, a, b.x, b.y, c)
                    },
                    Fla: function(a, b, c) {
                        var d = this,
                            e = [],
                            f = {};
                        return i.extend(!0, f, a), i.each(f, function(a, d) {
                            j(d) || (d.type === Z && e.push(d), i.each(ga, function(a, f) {
                                f(b, c, d) && e.push(d)
                            }))
                        }), d.p$a(e, b), d.lTa(e, c), d.KZa(e, c), d.LZa(e), e = d.Bma(e)
                    },
                    p$a: function(a, b) {
                        var c = b.worksheetHitInfo,
                            d = c && (c.row === da || c.col === da);
                        d && a.splice(0, a.length)
                    },
                    lTa: function(a, b) {
                        var c = this,
                            d = b.getActiveSheet(),
                            e = c.kTa;
                        return i.each(e, function(b, e) {
                            var f, g, h;
                            if (!e.checkFunction(d)) for (f = e.menuDataDict, g = 0, h = f.length; g < h; g++) c.hma(a, f[g], function(a, b) {
                                a[b] = null
                            })
                        }), a
                    },
                    LZa: function(a) {
                        var b, c = this,
                            d = a.length;
                        for (b = d - 1; b > 0; b--) a[b] ? a[b].subMenu && c.LZa(a[b].subMenu) : a.splice(b, 1);
                        return a
                    },
                    Bma: function(a) {
                        var b, c, d, e, f, g = [],
                            h = a.length;
                        for (b = 0; b < h; b++) a[b] && a[b].type === Z && a[b + 1] && a[b + 1].type === Z || g.push(a[b]);
                        for (h = g.length, c = 0, d = 0, e = !0, f = !0, b = 0; b < h && (e && g[b].type === Z ? c++ : e = !1, f && g[h - 1 - b].type === Z ? d++ : f = !1, e || f); b++);
                        return g.splice(h - d, d), g.splice(0, c), g
                    },
                    KZa: function(a, b) {
                        var c = this;
                        c.MZa(a, b), c.NZa(a, b)
                    },
                    MZa: function(a, b) {
                        var c, d = this,
                            e = b.getActiveSheet();
                        for (c = 0; c < a.length; c++) if (a[c]) {
                            switch (a[c].name) {
                                case n + M:
                                case n + O:
                                    xa(e) || (a[c].disable = !0);
                                    break;
                                case n + N:
                                case n + P:
                                    ya(e) || (a[c].disable = !0)
                            }
                            a[c] && a[c].subMenu && d.MZa(a[c].subMenu, b)
                        }
                    },
                    NZa: function(a, b) {
                        var c, d, e, f, g = this,
                            h = b.getActiveSheet(),
                            i = h.options.isProtected,
                            j = h.options.protectionOptions;
                        if (i && j) for (d = 0; d < a.length; d++) if (a[d]) {
                            switch (a[d].name) {
                                case n + M:
                                    j.allowInsertRows || (a[d].disable = !0);
                                    break;
                                case n + N:
                                    j.allowInsertColumns || (a[d].disable = !0);
                                    break;
                                case n + O:
                                    j.allowDeleteRows || (a[d].disable = !0);
                                    break;
                                case n + P:
                                    j.allowDeleteColumns || (a[d].disable = !0);
                                    break;
                                case n + I:
                                    j.allowFilter || (a[d].disable = !0);
                                    break;
                                case n + F:
                                case n + G:
                                    j.allowSort || (a[d].disable = !0);
                                    break;
                                case n + D:
                                case n + B:
                                case n + E:
                                case n + C:
                                    a[d].disable = !0;
                                    break;
                                case n + _:
                                case n + aa:
                                    j.allowEditObjects || a.splice(0, a.length);
                                    break;
                                case n + J:
                                    j.allowEditObjects || (a[d] = null);
                                    break;
                                case n + y:
                                    h.comments && (c = h.comments.get(h.getActiveRowIndex(), h.getActiveColumnIndex()), e = c && c.lockText()), !j.allowEditObjects && e && (a[d] = null);
                                    break;
                                case n + x:
                                    h.comments && (f = !sa(h.getSelections(), h)), !j.allowEditObjects && f && (a[d] = null)
                            }
                            a[d] && a[d].subMenu && g.NZa(a[d].subMenu, b)
                        }
                    },
                    $Oa: function(a, b, c) {
                        var d, e, f, g;
                        if (b.tabStripHitInfo && (d = this, e = c.sheets, f = d.RS(n + z))) {
                            for (g = 0; g < e.length; g++) if (!e[g].visible()) return void(f.disable = !1);
                            f.disable = !0
                        }
                    },
                    RS: function(a) {
                        var b = this;
                        return b.gma(b.menuData, a)
                    },
                    gma: function(a, b) {
                        var c, d = this;
                        return d.hma(a, b, function(a, b) {
                            c = a[b]
                        }), c
                    },
                    hma: function(a, b, c) {
                        for (var d = this, e = a.length, f = 0; f < e; f++) if (!j(a[f])) {
                            if (b === a[f].name) return void c(a, f);
                            a[f].subMenu && d.hma(a[f].subMenu, b, c)
                        }
                    },
                    nla: function(a) {
                        var b, c, d, e, f, g, h, i, l, n, o, p, q, r, s, t, u, H, S, Z, $, da, ea, fa, ga, ma, na, ra, sa = a.commandManager(),
                            ta = {
                                canUndo: !1,
                                execute: function(a, b) {
                                    var c = a.getSheetFromName(b.sheetName);
                                    c && (ia(c) ? sa.execute({
                                        cmd: "copyFloatingObjects",
                                        sheetName: c.name()
                                    }) : sa.execute({
                                        cmd: Y,
                                        sheetName: c.name(),
                                        ignoreClipboard: !0
                                    }))
                                }
                            };
                        sa.register(m + Y, ta, null, !1, !1, !1, !1), b = {
                            canUndo: !1,
                            execute: function(a, b) {
                                var c = a.getSheetFromName(b.sheetName);
                                c && (ia(c) ? sa.execute({
                                    cmd: "cutFloatingObjects",
                                    sheetName: c.name()
                                }) : sa.execute({
                                    cmd: X,
                                    sheetName: c.name(),
                                    ignoreClipboard: !0
                                }))
                            }
                        }, sa.register(m + X, b, null, !1, !1, !1, !1), c = {
                            canUndo: !1,
                            execute: function(a, b) {
                                var c, d, e = a.getSheetFromName(b.sheetName);
                                e && (e.isPasteFloatingObject && e.isPasteFloatingObject() ? sa.execute({
                                    cmd: "pasteFloatingObjects",
                                    sheetName: e.name()
                                }) : (c = e.options.clipBoardOptions, e.options.clipBoardOptions = 0, d = function() {
                                    e.options.clipBoardOptions = c
                                }, sa.execute({
                                    cmd: R,
                                    sheetName: e.name(),
                                    callback: d
                                })))
                            }
                        }, sa.register(m + W, c, null, !1, !1, !1, !1), d = {
                            canUndo: !1,
                            execute: function(a, b) {
                                var c, d, e = a.getSheetFromName(b.sheetName);
                                e && (c = e.options.clipBoardOptions, e.options.clipBoardOptions = 3, d = function() {
                                    e.options.clipBoardOptions = c
                                }, sa.execute({
                                    cmd: R,
                                    sheetName: e.name(),
                                    callback: d
                                }))
                            }
                        }, sa.register(m + V, d, null, !1, !1, !1, !1), e = {
                            canUndo: !1,
                            execute: function(a, b) {
                                var c, d, e = a.getSheetFromName(b.sheetName);
                                e && (c = e.options.clipBoardOptions, e.options.clipBoardOptions = 1, d = function() {
                                    e.options.clipBoardOptions = c
                                }, sa.execute({
                                    cmd: R,
                                    sheetName: e.name(),
                                    callback: d
                                }))
                            }
                        }, sa.register(m + U, e, null, !1, !1, !1, !1), f = {
                            canUndo: !1,
                            execute: function(a, b) {
                                var c, d, e = a.getSheetFromName(b.sheetName);
                                e && (c = e.options.clipBoardOptions, e.options.clipBoardOptions = 2, d = function() {
                                    e.options.clipBoardOptions = c
                                }, sa.execute({
                                    cmd: R,
                                    sheetName: e.name(),
                                    callback: d
                                }))
                            }
                        }, sa.register(m + T, f, null, !1, !1, !1, !1), g = {
                            canUndo: !1,
                            execute: function(a, b) {
                                var c = a.getSheetFromName(b.sheetName);
                                c && sa.execute({
                                    cmd: "clear",
                                    sheetName: c.name()
                                })
                            }
                        }, sa.register(m + Q, g, null, !1, !1, !1, !1), h = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a, b) {
                                    var c = b.commentState || 2,
                                        d = b.displayMode,
                                        e = b.activeRow,
                                        f = b.activeCol,
                                        g = a.comments.add(e, f, "");
                                    g && (g.commentState(c), d && g.displayMode(d))
                                }, function(a, b) {
                                    var c = b.activeRow,
                                        d = b.activeCol,
                                        e = a.comments.get(c, d);
                                    e && (b.displayMode = e.displayMode(), b.commentState = e.commentState())
                                })
                            }
                        }, sa.register(m + J, h, null, !1, !1, !1, !1), i = {
                            canUndo: !1,
                            execute: function(a, b) {
                                var c, d, e, f = a.getSheetFromName(b.sheetName);
                                f && (c = b.activeRow, d = b.activeCol, e = f.comments.get(c, d), e && e.commentState(2))
                            }
                        }, sa.register(m + y, i, null, !1, !1, !1, !1), l = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    var c, d, e, f, g, h = b.selections,
                                        i = h.length;
                                    if (!(i <= 0)) for (c = 0; c < i; c++) for (d = h[c], e = d.row; e < d.row + d.rowCount; e++) for (f = d.col; f < d.col + d.colCount; f++) g = a.comments.get(e, f), !g || a.options.isProtected && g.locked() || sa.execute({
                                        cmd: x,
                                        sheetName: a.name(),
                                        row: g.nT,
                                        col: g.oT
                                    })
                                })
                            }
                        }, sa.register(m + x, l, null, !1, !1, !1, !1), n = {
                            canUndo: !1,
                            execute: function(a, b) {
                                var c, d, e, f = a.getSheetFromName(b.sheetName);
                                f && (c = b.activeRow, d = b.activeCol, e = f.comments.get(c, d), e && (2 === e.displayMode() ? e.displayMode(1) : e.displayMode(2)))
                            }
                        }, sa.register(m + w, n, null, !1, !1, !1, !1), o = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    var c, d, e, f, g, h, i = ja(b.selections);
                                    for (c = 0; c < i.length; c++) {
                                        for (d = a.getRange(i[c].row - 1, 0, 1, i[c].colCount), e = [], f = 0; f < d.colCount; f++) a.getCell(d.row, f).locked() || e.push(f);
                                        for (a.addRows(i[c].row, i[c].rowCount), g = 0; g < e.length; g++) for (h = i[c].row; h < i[c].row + i[c].rowCount; h++) a.getCell(h, e[g]).locked(!1);
                                        la(a, i[c].row, -1, i[c].rowCount)
                                    }
                                })
                            }
                        }, sa.register(m + M, o, null, !1, !1, !1, !1), p = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    var c, d, e, f, g, h, i = ka(b.selections);
                                    for (c = 0; c < i.length; c++) {
                                        for (d = a.getRange(0, i[c].col - 1, i[c].rowCount, 1), e = [], f = 0; f < d.rowCount; f++) a.getCell(f, d.col).locked() || e.push(f);
                                        for (a.addColumns(i[c].col, i[c].colCount), g = 0; g < e.length; g++) for (h = i[c].col; h < i[c].col + i[c].colCount; h++) a.getCell(e[g], h).locked(!1);
                                        la(a, -1, i[c].col, i[c].colCount)
                                    }
                                })
                            }
                        }, sa.register(m + N, p, null, !1, !1, !1, !1), q = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    var c, d = ja(b.selections);
                                    for (c = 0; c < d.length; c++) a.deleteRows(d[c].row, d[c].rowCount)
                                })
                            }
                        }, sa.register(m + O, q, null, !1, !1, !1, !1), r = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    var c, d = ka(b.selections);
                                    for (c = 0; c < d.length; c++) a.deleteColumns(d[c].col, d[c].colCount)
                                })
                            }
                        }, sa.register(m + P, r, null, !1, !1, !1, !1), s = {
                            canUndo: !1,
                            execute: function(a) {
                                a.addSheet(a.getActiveSheetIndex())
                            }
                        }, sa.register(m + L, s, null, !1, !1, !1, !1), t = {
                            canUndo: !1,
                            execute: function(a) {
                                a.getSheetCount() > 1 && a.removeSheet(a.getActiveSheetIndex()), a.undoManager().clear()
                            }
                        }, sa.register(m + K, t, null, !1, !1, !1, !1), u = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    var c, d, e = b.selections,
                                        f = e[0],
                                        g = va(a, f),
                                        h = b.activeRow,
                                        i = b.activeCol;
                                    g ? (c = g.range(), c.contains(h, i, 1, 1) && (d = g.name(), sa.execute({
                                        cmd: "contextmenuFilterForTable",
                                        sheetName: a.name(),
                                        cmdOption: {
                                            tableName: d,
                                            activeRow: h,
                                            activeCol: i,
                                            expectedText: a.getText(h, i)
                                        }
                                    }))) : a.rowFilter && sa.execute({
                                        cmd: "contextmenuFilterForSheet",
                                        sheetName: a.name(),
                                        cmdOption: {
                                            activeRow: h,
                                            activeCol: i,
                                            selection: f,
                                            expectedText: a.getText(h, i)
                                        }
                                    })
                                })
                            }
                        }, sa.register(m + I, u, null, !1, !1, !1, !1), H = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    var c = b.activeCol,
                                        d = b.selections,
                                        e = va(a, d[0]),
                                        f = e ? e.dataRange() : d[0];
                                    a.sortRange(f.row, f.col, f.rowCount, f.colCount, !0, [{
                                        index: c,
                                        ascending: !0
                                    }])
                                })
                            }
                        }, sa.register(m + F, H, null, !1, !1, !1, !1), S = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    var c = b.activeCol,
                                        d = b.selections,
                                        e = va(a, d[0]),
                                        f = e ? e.dataRange() : d[0];
                                    a.sortRange(f.row, f.col, f.rowCount, f.colCount, !0, [{
                                        index: c,
                                        ascending: !1
                                    }])
                                })
                            }
                        }, sa.register(m + G, S, null, !1, !1, !1, !1), Z = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    var b, c = qa(a);
                                    if (c && 0 !== c.length) for (b in c) c.hasOwnProperty(b) && c[b].sortState(1)
                                })
                            }
                        }, sa.register(m + _, Z, null, !1, !1, !1, !1), $ = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    var b, c = qa(a);
                                    if (c && 0 !== c.length) for (b in c) c.hasOwnProperty(b) && c[b].sortState(2)
                                })
                            }
                        }, sa.register(m + aa, $, null, !1, !1, !1, !1), da = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    oa(b.selections, ba, function(b) {
                                        a.setRowVisible(b, !1)
                                    })
                                })
                            }
                        }, sa.register(m + D, da, null, !1, !1, !1, !1), ea = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    oa(b.selections, ca, function(b) {
                                        a.setColumnVisible(b, !1)
                                    })
                                })
                            }
                        }, sa.register(m + E, ea, null, !1, !1, !1, !1), fa = {
                            canUndo: !1,
                            execute: function(a) {
                                if (!(a.getSheetCount() - ha.length <= 1)) {
                                    var b = a.getActiveSheet();
                                    b && (ha.push(b), b.visible(!1), a.getActiveSheet() && a.focus(!0)), a.undoManager().clear()
                                }
                            }
                        }, sa.register(m + A, fa, null, !1, !1, !1, !1), ga = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    var c = b.selections,
                                        d = b.isAnyHiddenRowOrColBeforeFirstVisibleRowOrCol;
                                    j(d) && (d = b.isAnyHiddenRowOrColBeforeFirstVisibleRowOrCol = pa(a, c[0])), 1 === c.length && d ? (a.setRowVisible(c[0].row - 1, !0), a.mq(c[0].row - 1)) : oa(c, ba, function(b) {
                                        a.setRowVisible(b, !0)
                                    })
                                })
                            }
                        }, sa.register(m + B, ga, null, !1, !1, !1, !1), ma = {
                            canUndo: !0,
                            execute: function(a, b, c) {
                                return wa(a, b, c, function(a) {
                                    var c = b.selections,
                                        d = b.isAnyHiddenRowOrColBeforeFirstVisibleRowOrCol;
                                    j(d) && (d = b.isAnyHiddenRowOrColBeforeFirstVisibleRowOrCol = pa(a, c[0])), 1 === c.length && d ? (a.setColumnVisible(c[0].col - 1, !0), a.rq(c[0].col - 1)) : oa(c, ca, function(b) {
                                        a.setColumnVisible(b, !0)
                                    })
                                })
                            }
                        }, sa.register(m + C, ma, null, !1, !1, !1, !1), na = {
                            canUndo: !1,
                            execute: function(a) {
                                var b, c, d;
                                if (0 === ha.length) for (b = a.sheets, c = 0; c < b.length; c++) b[c].visible() || ha.push(b[c]);
                                ha.length > 0 && (d = ha.pop(), d.visible(!0), a.setActiveSheet(d.name())), a.getActiveSheet() && a.focus(!0)
                            }
                        }, sa.register(m + z, na, null, !1, !1, !1, !1), ra = {
                            canUndo: !1,
                            execute: function(a, b) {
                                var c, d, e, f = a.getSheetFromName(b.sheetName);
                                if (f && (a.suspendPaint(), c = [], d = f.slicers.all(), d && !k(d))) {
                                    for (e in d) d[e].isSelected() && c.push(d[e].name());
                                    c.length > 0 && sa.execute({
                                        cmd: "deleteFloatingObjects",
                                        sheetName: f.name(),
                                        floatingObjects: c
                                    }), a.resumePaint()
                                }
                            }
                        }, sa.register(m + v, ra, null, !1, !1, !1, !1)
                    }
                };
                return i.extend(a.prototype, b), a
            }(), d = {
                init: function() {
                    this.options.allowContextMenu = !0
                },
                setHost: function() {
                    var a = this,
                        c = a.qo;
                    a.contextMenu || (a.contextMenu = new b), i(c).bind("contextmenu.gcSheet", function(b) {
                        if (a.options.allowContextMenu) return a.contextMenu.ola(b, a)
                    })
                },
                dispose: function() {
                    i(this.qo).unbind("contextmenu.gcSheet")
                },
                onCultureChanged: function() {
                    var a, b = fa(),
                        c = this.contextMenu;
                    c && (a = c.menuData, i.each(b, function(b, d) {
                        c.hma(a, n + b, function(a, b) {
                            a[b].text = d
                        })
                    }))
                }
            }, e.Workbook.$n("contextmenu", d), ea.ContextMenu = b, a.exports = ea
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(87),
                d = b.Go,
                e = b.GC$,
                f = b.Ul.vl,
                g = "gc.command.executed",
                h = "left",
                i = "top",
                j = function(a) {
                    e.inherit(b, a);

                    function b(b, c) {
                        var d = this;
                        d.Eu = c, a.call(d, b, f(b))
                    }
                    var c = {
                        Qla: function(a, b, c) {
                            var d = this,
                                e = a[0];
                            d.kma && d.kma.ai && d.kma.ai(e, b, c, this.Eu)
                        },
                        OT: function(a, b, c, d, e) {
                            var f = this,
                                g = f.Sla(c, d);
                            f.kma = a, f.Qla(g, b, e)
                        },
                        Sla: function(b, c) {
                            var d = this,
                                e = d.yo();
                            return e.css([h, i], [b, c]), e.empty(), a.prototype.Ao.call(d), d.QQ(), e
                        },
                        Loa: function(a) {
                            var b, c, d, e = this,
                                f = e.yo();
                            return "block" !== f.css("display") || (b = f.offset(), b.top += document.body.clientTop || 0, b.left += document.body.clientLeft || 0, c = a.x, d = a.y, c < b.left || c > f.width() + b.left || d < b.top || d > f.height() + b.top)
                        },
                        QQ: function() {
                            var a = this;
                            a.Eu.bind(g, function() {
                                a.close()
                            })
                        },
                        Tla: function() {
                            var a = this;
                            a.Eu.unbind(g)
                        },
                        close: function() {
                            var b = this;
                            b.kma && b.kma.no(), b.Tla(), b.vo(b.Cj) && e("#" + b.Cj).remove(), a.prototype.close.call(b)
                        }
                    };
                    return e.extend(b.prototype, c), b
                }(d);
            a.exports = j
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d = c(87),
                e = c(26),
                f = d.GC$,
                g = d.Ul.Nl,
                h = e.j,
                i = h.Fa,
                j = h.Aa,
                k = h.C4,
                l = "mouseenter",
                m = "mouseleave",
                n = "click",
                o = "gc.command.executed",
                p = ".",
                q = "gc-ui-contextmenu",
                r = "-",
                s = "container",
                t = "hover",
                u = "disable-hover",
                v = "text",
                w = "icon",
                x = "menuitem",
                y = "nonselective-menuitem",
                z = "menuitem-content",
                A = "sup-container",
                B = "separator",
                C = "sup-indicator",
                D = "subitems-container",
                E = "group-container",
                F = "title",
                G = "group-header",
                H = "groupitems-container",
                I = "groupitem",
                J = "nonexecutable",
                K = "executable",
                L = "disable",
                M = q + r + t,
                N = q + r + x,
                O = q + r + y,
                P = q + r + z,
                Q = q + r + K,
                R = q + r + A,
                S = q + r + D,
                T = " ui-widget",
                U = " ui-state-hover",
                V = " ui-icon ui-icon-triangle-1-e",
                W = "DIV",
                X = "SPAN",
                Y = "keydown.ctx.gcSheet",
                Z = void 0;

            function $(a) {
                if (a instanceof Object) return !0
            }
            b = function() {
                function a() {}
                var b = {
                    ai: function(a, b, c, d) {
                        var e = this;
                        e.qo = f(a), e.lla = k(b), e.wu = c.commandManager(), e.xc = c, e.Eu = d, e.LQ = [], e.YPa = {}, e.rQa = [], e.ZPa = null, e.lma()
                    },
                    mma: function() {
                        var a, b = this,
                            c = parseInt(b.qo.css("left")),
                            d = parseInt(b.qo.css("top")),
                            e = b.qo.width(),
                            g = b.qo.height(),
                            h = f(b.xc.getHost()),
                            i = h.width(),
                            j = h.height();
                        c + e > i && (c = c - e > 0 ? c - e : c, b.qo.css("left", c)), d + g > j && (d - g > 0 ? d -= g : (a = d + g - j, d = d - a > 0 ? d - a : d), b.qo.css("top", d))
                    },
                    lma: function() {
                        var a, b, c, d = this,
                            e = d.lla;
                        i(e) || !$(e) || e.length < 1 || (e instanceof Array || (e = [e]), a = "menuView", b = d.nma(a, e), d.YPa.menuView = b, c = d.oma(d.lla), c.appendTo(d.qo), d.mma(), d.QQ(), d.rQa.push({
                            name: a,
                            menuView: c
                        }))
                    },
                    nma: function(a, b) {
                        for (var c, d = this, e = b.length, f = 0, g = []; f < e; f++) c = b[f], i(c) || "separator" === c.type || (c.subMenu ? d.YPa[c.name] = d.nma(c.name, c.subMenu) : "groupHeader" === c.type && (d.pma(c, b), d.YPa[c.name] = d.nma(a, c.groups)), g.push(d.qma(a, c)));
                        return g
                    },
                    qma: function(a, b) {
                        var c, d, e, g = this;
                        if (c = "groupHeader" === b.type ? g.$Pa() : g.rma(), d = g.createMenuItemElement(b), !i(d)) return d instanceof HTMLElement && (d = f(d)), d.appendTo(c), e = {
                            name: b.name,
                            host: c,
                            menuItemData: b,
                            menuName: a
                        }, g.LQ.push(e), e
                    },
                    rma: function() {
                        var a = f(g(W));
                        return a.addClass(N), a
                    },
                    $Pa: function() {
                        var a = f(g(W));
                        return a.addClass(O), a
                    },
                    createMenuItemElement: function(a) {
                        var b, c = this;
                        return b = "groupHeader" === a.type ? c.tma(a) : "groupItem" === a.type ? c.uma(a) : a.subMenu ? c.vma(a) : c.wma(a)
                    },
                    wma: function(a) {
                        var b, c, d = f(g(W)).addClass(P);
                        return a.command ? a.disable ? d.addClass(q + r + L) : d.addClass(Q) : d.addClass(q + r + J), b = f(g(X)).addClass(q + r + w), a.iconClass && b.addClass(a.iconClass), b.appendTo(d), a.text && (c = f(g(X)).addClass(q + r + v), c[0].innerHTML = a.text, c.appendTo(d)), d
                    },
                    sma: function(a) {
                        return f(g(W)).addClass(q + r + B)
                    },
                    tma: function(a) {
                        var b, c, d, e, h, i, j, k = this,
                            l = f(g(W)).addClass(q + r + E);
                        if (a.groups.length <= 0) return l;
                        for (b = k.wma(a), b.addClass(q + r + G), b.appendTo(l), c = f(g(W)).addClass(q + r + H), d = a.groups, e = d.length, h = 0; h < e; h++) i = k.xma("name", d[h].name), j = i.host, j.addClass(q + r + I), j.appendTo(c);
                        return c.appendTo(l), l
                    },
                    uma: function(a) {
                        var b = this,
                            c = b.wma(a),
                            d = c.find(p + q + r + v);
                        return d.remove(), c.attr(F, a.text), c
                    },
                    vma: function(a) {
                        var b, c, d = this,
                            e = f(g(W)).addClass(R),
                            h = d.wma(a);
                        return a.subMenu.length > 0 && (b = f(g(X)).addClass(q + r + C + V), b.appendTo(h), c = d.oma(a.subMenu), c.addClass(S), c.appendTo(e)), h.appendTo(e), e
                    },
                    oma: function(a) {
                        for (var b, c, d, e, h = this, j = f(g(W)).addClass(q + r + s + T), k = a.length, l = 0; l < k; l++) i(a[l]) || (b = a[l].name, i(b) ? "separator" === a[l].type && (d = h.$Pa(), e = h.sma(a[l]), e.appendTo(d), d.appendTo(j)) : (c = h.xma("name", b), i(c) || c.host.appendTo(j)));
                        return j
                    },
                    xma: function(a, b) {
                        for (var c = this, d = c.LQ, e = d.length, g = 0; g < e; g++) if (b instanceof f ? b[0] === d[g][a][0] : d[g][a] === b) return d[g]
                    },
                    pma: function(a, b) {
                        var c, d, e;
                        for (a.groups = [], c = b.length, d = 0; d < c; d++) e = b[d], e && e.group && e.group === a.name && (e.type = "groupItem", a.groups.push(e), b.splice(d--, 1))
                    },
                    QQ: function() {
                        var a = this;
                        f(p + N).bind(l, function() {
                            var b, c, d, e = f(this),
                                g = a.xma("host", e);
                            for (a.ZPa = g, b = a.rQa, c = 0, d = b.length; c < d && g.menuName !== a.rQa[d - c - 1].name; c++) a.Ooa();
                            a._Pa(), a.cQa(!1)
                        }).bind(m, function() {
                            a.ZPa = null, a._Pa()
                        }).bind(n, function(b) {
                            var c, d = f(this),
                                e = a.xma("host", d);
                            a.ZPa = e, c = a.aQa(!1, b), c && a.WT()
                        }), f(document).bind(Y, function(b) {
                            var c, d, e;
                            switch (b.keyCode) {
                                case 27:
                                    c = a.Ooa(), c || a.WT();
                                    break;
                                case 32:
                                case 13:
                                    c = a.aQa(!0, b), c && a.WT();
                                    break;
                                case 9:
                                    b.shiftKey ? a.bQa(!1, !0) : a.bQa(!0, !0);
                                    break;
                                case 37:
                                    d = a.Ooa(), e = a.xma("name", d), e && (a.ZPa = e), a.ZPa && a.ZPa.menuItemData.group && a.bQa(!1, !0);
                                    break;
                                case 38:
                                    a.bQa(!1, !1);
                                    break;
                                case 39:
                                    a.ZPa && a.ZPa.menuItemData.group && a.bQa(!0, !0), a.cQa(!0);
                                    break;
                                case 40:
                                    a.bQa(!0, !1)
                            }
                            b.preventDefault ? b.preventDefault() : b.returnValue = !1
                        })
                    },
                    Noa: function(a) {
                        var b, c, d, e = a.offset().left,
                            f = a.width();
                        e + f > window.innerWidth && a.css("left", -f), b = a.offset().top, c = a.height(), d = a.position().top, b + c > window.innerHeight && a.css("top", d - (b + c - window.innerHeight))
                    },
                    zma: function(a) {
                        return a.command
                    },
                    getCommandOptions: function(a, b, c) {},
                    aQa: function(a, b) {
                        var c, d = this,
                            e = d.ZPa;
                        if (e && !e.menuItemData.disable) return c = e.menuItemData, c.subMenu ? void(c.subMenu.length > 0 && d.cQa(a)) : (d.h4(b), !0)
                    },
                    h4: function(a) {
                        var b, c, d, e = this,
                            f = e.ZPa,
                            g = e.zma(f.menuItemData);
                        i(g) || (b = e.getCommandOptions(f.menuItemData, f.host[0], a), c = e.wu, j(g) ? g(e.xc, b) : (d = e.xc.getActiveSheet(), c.execute({
                            cmd: g,
                            sheetName: d.name(),
                            selections: d.getSelections(),
                            activeRow: d.getActiveRowIndex(),
                            activeCol: d.getActiveColumnIndex(),
                            commandOptions: b
                        })))
                    },
                    Tla: function() {
                        f(p + N).unbind(l).unbind(m).unbind(n), f(document).unbind(Y)
                    },
                    no: function() {
                        var a = this;
                        a.qo = null, a.lla = null, a.wu = null, a.xc = null, a.Eu = null, a.LQ = null, a.YPa = null, a.ZPa = null, a.Tla()
                    },
                    Ooa: function() {
                        var a, b, c, d = this;
                        if (d.rQa.length > 1) return a = d.rQa.pop(), b = a.menuView, c = b.find(p + N), c.removeClass(M + U), a.menuView.hide(), a.name
                    },
                    _Pa: function() {
                        var a, b, c, d = this,
                            e = d.dQa(!0);
                        if (e) {
                            for (a = 0, b = e.length; a < b; a++) e[a].host.removeClass(M + U);
                            d.ZPa && (c = d.ZPa.menuItemData, c.disable ? d.ZPa.host.addClass(q + r + u + U) : d.ZPa.host.addClass(M + U))
                        }
                    },
                    WT: function() {
                        var a = this;
                        a.Eu.trigger(o), a.no()
                    },
                    bQa: function(a, b) {
                        var c, d, e, f = this,
                            g = f.dQa(b);
                        f.ZPa && (c = f.eQa(f.ZPa, g), c || (d = f.YPa[f.ZPa.menuItemData.group], d && (e = d[0], c = f.eQa(e, g)))), a ? (c !== Z && c !== g.length - 1 || (c = -1), c = "number" == typeof c ? c + 1 : 0) : (c !== Z && 0 !== c || (c = g.length), c = "number" == typeof c ? c - 1 : 0), f.ZPa = g[c], f._Pa()
                    },
                    dQa: function(a) {
                        for (var b, c, d, e = this, f = e.rQa[e.rQa.length - 1].name, g = e.YPa[f], h = 0, i = g.length, j = []; h < i; h++) if ("groupHeader" !== g[h].menuItemData.type) j.push(g[h]);
                        else if (b = e.YPa[g[h].menuItemData.name], a) for (c = 0, d = b.length; c < d; c++) j.push(b[c]);
                        else j.push(b[0]);
                        return j
                    },
                    eQa: function(a, b) {
                        var c, d = b.length;
                        for (c = 0; c < d; c++) if (a.name === b[c].name) return c
                    },
                    cQa: function(a) {
                        var b, c, d = this,
                            e = d.ZPa;
                        e && (b = e.menuItemData, b.subMenu && b.subMenu.length > 0 && (b.name !== d.rQa[d.rQa.length - 1].name && (c = f(e.host.find(p + S)[0]), c.show(), d.Noa(c), d.rQa.push({
                            name: b.name,
                            menuView: c
                        })), d.ZPa = null, a && d.bQa(!0, !1)))
                    }
                };
                return f.extend(a.prototype, b), a
            }(), a.exports = b
        }()
}, function(a, b) {
    !
        function() {
            "use strict";
            a.exports = {
                copy: "Copy",
                cut: "Cut",
                pasteOptions: "Paste Options:",
                pasteAll: "All",
                pasteFormula: "Formulas",
                pasteValues: "Values",
                pasteFormatting: "Formatting",
                clearContents: "Clear Contents",
                insertRows: "Insert",
                insertColumns: "Insert",
                deleteRows: "Delete",
                deleteColumns: "Delete",
                insertSheet: "Insert",
                deleteSheet: "Delete",
                insertComment: "Insert Comment",
                filter: "Filter",
                sort: "Sort",
                slicerSortAscend: "Sort A to Z",
                slicerSortDescend: "Sort Z to A",
                sortAscend: "Sort A to Z",
                sortDescend: "Sort Z to A",
                hideRows: "Hide",
                hideColumns: "Hide",
                hideSheet: "Hide",
                unhideSheet: "Unhide",
                unhideColumns: "Unhide",
                unhideRows: "Unhide",
                editComment: "Edit Comment",
                deleteComment: "Delete Comment",
                toggleComment: "Show/Hide Comment",
                removeSlicer: "Remove",
                removeFloatingObject: "Remove"
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(159);
            c(160), c(161), c(162), c(163), b.SR = {}, b.SR.en = c(164), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g = c(87),
                h = c(33),
                i = g.CalcEngine,
                j = c(26),
                k = {},
                l = null,
                m = void 0,
                n = Math.max,
                o = Math.min,
                p = g.GC$,
                q = p.extend,
                r = g.Ul.Nl,
                s = window,
                t = document,
                u = j.u,
                v = g.Ul,
                w = v.nl,
                x = v.Ml,
                y = x.msie && parseInt(x.version, 10) < 10,
                z = u.Nb,
                A = "formulatextbox",
                B = "gcUIElement",
                C = "input",
                D = " ",
                E = ".gcFormulaTextBoxInternal",
                F = ".gcFormulaTextBox",
                G = "TextChanged",
                H = "CaretChanged",
                I = "AppendStarted",
                J = "AppendEnded",
                K = {
                    left: 37,
                    right: 39,
                    up: 38,
                    down: 40,
                    tab: 9,
                    enter: 13,
                    pup: 33,
                    pdn: 34,
                    end: 35,
                    home: 36,
                    esc: 27
                },
                L = ["#0000ff", "#008000", "#9900cc", "#800000", "#00cc33", "#cc6600", "#cc0099"],
                M = 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAARCAIAAACw+gCQAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJSSURBVDhPY3hILqBYZ/eqV81LXpbNfp7S/yS0+Z5p+olD5x5OWXGyYcaBmql7yifuLOnbBkRFPVuACKIFqjNzwv2Qhhue5ReByK/qYlDtxb///n35+efd1z/PP/wB6vn2+/f7b79ffgIhiBaoTlPP5I2bN2/asmX7jh3Hjh+ft3wLUOfX779ef/h+6+nHtXsuffrx+/bj16euvwQiiBaETiAy904NTasGantRkvA8wetpsO0NJ839htKb9l/Jal6T3rgytX4FEEG0QHXuOnbr55+/P379AyIg40m8x8uZ3U+aC49bKn64eHzX0es4Xds0Y9ejl++vPXx3+f77Nx9/3PU3e5YR/CTM4WGs53pVPqBrgX6+8+QNFtdmNq0q6NpU1LOpe/6+o+fvH3fR36XCc9dE/KG3EdDNQPaF7VunLTuY0bA0omg2RAtUZ1LNUohjgCEJDJVtdlpPty6dr8x3yUDsvoPqRm2hqcp8Jy+9WbH/7cQ1EB0wnXEVCyBBt+fc8+NXXy9Yf/znz5/31swFaliiKjBZme/yrSe7z36YsuZBy4KbEC1QnRFFcxKqFgP1A1Fq7ZKcpqU1EzYuWX/kxIa1/WBtizYcAwqG5E71SZsA0QLVGZI3A+Lax+/+ACMwvHDmsn1v1xx8e+jSp83HXgP1ALmztryYsv4ZEEG0QHUGZk+FuHbHqadABORO3fC8Z/mdvmU3Oxdd9cuY1LX0VsOci/WzQQiiBaET4lQgii1fEFU6F4iAXgC6JShnakDWZKBmoDshCKIFqpMMQK7Ohw8BTajNa73pg9oAAAAASUVORK5CYII=")',
                N = 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAARCAIAAACw+gCQAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAItSURBVDhPY3hILqBYZ/eqVxDUuvRl/cKXZbNf5E59ntT3DIgi2p/6NT5xq35iV/YYiCyLHkG0IHQuOvR/1t6/03b+mbD1d/eGXy2rf9Yu/wFE5Yu+Fc79mjXza+rUz0BkmHoWogXFTqCFVfNfQmwLa3vqVfsYiBzA9sCRftIJiBaozuYZO+89eAREt+4+AKIbt+9fvXkPiC5du3P28s0T564dOnV579Hz2w6cSaqcDdEC1Vk/ZQtQQ2vv7MaumbUd0+o6ZzT3zmnunQ1kF9T0pZe2J+U3x+U0bNx9MqZ4CkQLVGdB6xKgDaX1/b/+/PnyE4E+ff/z8uPvR29/3X35MzCxfPW2o2HZPRAtUJ2lXSuADkstann/9febz7/ff/3zLDP4Spj9Pjs1oE6gthvPfnpEFS7deDAwrRWiBaozv3kh0D8RadVAlFvZvWLDrjvRrk+bCrdpCS1ZsyOpoMU9ssA5NBeo0zuhDqIFqjO9Zubhk1eA6MT5G+eu3H78/PVFX/OnxQnrNQTuPnyx9+hFoA+B2uav2ecaVQ7RAtUZVzQBKH3g+KXTl24fdjE44mp4yFbtSYrfGg3+yQocQLTryEWgzgVr9zmEFkK0QHWGZbbvPHQOiI6cvnb5wMENhjJPE30eB1k9dFIDaruy/wAwPoA6563eaxOQDdEC1YkG1hvKrNKVuOEA0nYr2Pp5qA1UAglg1wkEW03lF2kI3wy1xaoNCHDqJAjI1fnwIQDHT83/UVFPcQAAAABJRU5ErkJggg==")',
                O = function() {
                    return j.C(k.SR)()
                };

            function P(a) {
                return a.getActiveSheet()
            }
            function Q() {
                var a = [];
                return p.each(j.C(h.SR)()._h, function(b, c) {
                    h.Functions.bi[b] && (c.name = b, a.push(c))
                }), a
            }
            function R(a) {
                var b = [],
                    c;
                return p.each(a, function(a, d) {
                    c = d.description(), c && (c.name = a, b.push(c))
                }), b
            }
            function S(a, b) {
                if (!a) return !1;
                var c = !1,
                    d = !1;
                if (1 === b.rowCount) {
                    if (a.hasHeadersRow() && b.row === a.startRow()) return !0;
                    if (a.hasTotalsRow() && b.row === a.endRow()) return !0
                } else a.hasHeadersRow() && b.row === a.startRow() && (b.rowCount === a.dataRange().rowCount + 1 && (c = !0), a.hasTotalsRow() && b.rowCount === a.dataRange().rowCount + 1 + 1 && (c = !0)), b.row === a.dataRange().row && (b.rowCount === a.dataRange().rowCount && (c = !0), a.hasTotalsRow() && b.rowCount === a.dataRange().rowCount + 1 && (c = !0));
                return b.col + b.colCount <= a.startColumn() + a.dataRange().colCount && (d = !0), c && d
            }
            function T(a) {
                var b = a.name();
                return i.jma(b.split(""), !1) ? b : "'" + b + "'"
            }
            function U(a, b) {
                var c, d, e, f, h, j, m, n, o, p, q;
                return b ? (c = k.G0.H0, d = c && c.kj || a, e = d.Jl, f = d.Kl, h = a.parent, j = h && 1 === h.options.referenceStyle, m = 15, a.Cw && a.Cw.Nfa && (m = 0), b.row < 0 && b.col < 0 && (b = new g.Range(0, (-1), a.getRowCount(), (-1))), n = a.tables, o = n && n.find(b.row, b.col), c && c.Nfa && (m = 0), S(o, b) ? (c && c._text && c.kj !== a && (e = f = -1), i.rangeToFormulaWithStructReference(a, b, e, f, m, j, o)) : (p = i.rangeToFormula(b, e, f, m, j), (c && c._text || a.Cw && a.Cw.V4 && a.Cw.ria) && (q = T(a), p = q + "!" + p), p)) : l
            }
            k.C2 = U, g.Events.FormulaTextBoxTextChanged = "FormulaTextBoxTextChanged", g.Events.FormulaTextBoxCaretChanged = "FormulaTextBoxCaretChanged", s.Yl.km.push(function(a, b) {
                var c, d = k.G0;
                !b && a.endEdit && d && (c = d.H0, c && c.I0 && a.Cw && (a.Cw && a.Cw.destroy(), a.Cw = l, c.$b()))
            });

            function V(a, b) {
                var c, d, e, i, j, k = a.parent,
                    l = k && k.options;
                b && l && l.allowUserEditFormula && l.enableFormulaTextbox && (a.Cw && a.Cw.destroy(), a.Cw = new f(b, null, k), c = a.Cw.text(), d = a.getFormulaInformation(a.Jl, a.Kl), "=" !== c[0] || d && d.hasFormula || (c = "'" + c, a.Cw.text(c)), e = a.Cw, i = a.mm, j = a.yl, e.bind("AppendStarted", function() {
                    e.close();
                    var b = a.Px;
                    1 !== b && (a.Px = 1, a.Cu(b, 1))
                }), e.bind("AppendEnded", function() {
                    j.uH()
                }), e.bind(G, function(b, c) {
                    if (!a.Js) {
                        if (c && c.type !== C) {
                            i.Qw(c);
                            var d = a.Jl,
                                f = a.Kl,
                                h = a.getCellType(d, f);
                            a.Wq(g.Events.EditChange, {
                                sheet: a,
                                sheetName: a.name(),
                                row: d,
                                col: f,
                                editingText: h.getEditorValue(a.BF)
                            })
                        }
                        j.uH(), a.Wq(g.Events.FormulaTextBoxTextChanged, {
                            sheet: a,
                            sheetName: a.name(),
                            text: e.text()
                        })
                    }
                }), e.bind("CaretChanged", function() {
                    j.uH(), a.Wq(g.Events.FormulaTextBoxCaretChanged, {
                        sheet: a,
                        sheetName: a.name(),
                        caret: e.caret()
                    })
                }), e.add(Q()), e.add(R(h.Functions.ci)), e.add(R(a.Su).concat(R(k.Su))), j.uH())
            }
            k.J0 = V;

            function W(a) {
                a.Cw && (a.Cw.destroy(), a.Cw = l, a.yl.uH());
                var b = a.parent && a.parent.CF;
                t.activeElement === (b && b.qo) && a.mm.Qq()
            }
            k.K0 = W;

            function X(a, b) {
                var c, d, e, f;
                if (!b) return l;
                c = k.G0.H0, d = c && c.kj || a, e = d.Jl, f = d.Kl;
                try {
                    return i.formulaToRange(a, b, e, f)
                } catch (a) {}
                return l
            }
            k.L0 = X, q(g.DC.prototype, {
                bE: function(a) {
                    return !(a && a.Cw && a.Cw.M0())
                }
            }), g.Worksheet.$n(A, {
                startEdit: function(a) {
                    V(this, a.element)
                },
                endEdit: function() {
                    W(this)
                }
            }), b = g.DC, d = b.prototype, e = d.dE, b.$n(A, {
                preProcessMouseDbClick: function(a) {
                    var b = P(this.OC),
                        c = b.Cw,
                        d = c && c.M0(),
                        e = k.G0.H0;
                    d ? a.r = !1 : e && e.I0 && e.$b()
                }
            }), d.dE = function() {
                var a = P(this.OC),
                    b = a.Cw,
                    c = k.G0.H0,
                    d = c && c._text;
                return e.call(this) && !d && !b
            }, f = function() {
                var a = 1;

                function b(b, d, e) {
                    var f, h, i, j, l = this,
                        m = b;
                    if (l.V4 = !1, l.Nfa = !1, l.ria = !0, l.Ac = [], l.Bc = [], d && d.rangeSelectMode && (d.absoluteReference === !0 && (l.Nfa = !0), d.needSheetName === !1 && (l.ria = !1), l.V4 = !0, l.D5 = !1, l.E5 = !1, l.cga = b, f = c(b, l), m = f.contentDiv, l.sia = f.button, l.tia = b, l.C5 = a++), l.UQa = !0, l.ad(e && e.getHost() || t.body), m && l.N0(m), e && (l.O0 = !0, l.P0(e), l.OC.Gu(g.Events.FormulatextboxActiveSheetChanging, k.G0.Q0), l.OC.Fu(g.Events.FormulatextboxActiveSheetChanging, k.G0.Q0), l.OC.Gu(g.Events.FormulatextboxActiveSheetChanged, k.G0.R0), l.OC.Fu(g.Events.FormulatextboxActiveSheetChanged, k.G0.R0)), h = l.text(), l.S0 = l.T0(h), i = l.Cia(m)) {
                        l.V0(l.S0);
                        try {
                            j = s.getSelection(), j.selectAllChildren(m), j.rangeCount > 0 && j.collapseToEnd()
                        } catch (a) {}
                        p(l.qo).data("text-before", h)
                    }
                }
                function c(a, b) {
                    var c, d, e, f, g, h, i, j, k, l, m = p(a);
                    return m.attr("contenteditable", "false"), c = r("table"), p(c).css("border-spacing", "0"), p(c).css("width", "100%"), m.append(c), d = r("tbody"), c.appendChild(d), e = document.createElement("tr"), d.appendChild(e), f = document.createElement("td"), p(f).css("padding-right", "0px"), e.appendChild(f), g = document.createElement("td"), p(g).css("width", "23px"), p(g).css("padding-right", "0px"), e.appendChild(g), h = m.width() - p(g).width(), i = r("div"), j = r("div"), p(j).width(h), p(j).css({
                        "overflow-y": "auto",
                        "overflow-x": "hidden",
                        height: "20px"
                    }), j.appendChild(i), f.appendChild(j), k = r("div"), g.appendChild(k), p(i).css({
                        display: "inline-block",
                        float: "left",
                        height: "auto",
                        outline: "none"
                    }), p(i).width(h), p(i).attr("contenteditable", "true"), p(i).attr("spellcheck", "false"), l = p(k), l.css({
                        display: "block",
                        float: "right",
                        width: "23px",
                        height: "23px",
                        background: M,
                        "background-repeat": "no-repeat"
                    }), l.bind("click", function() {
                        b.D5 ? (b.OC.Wq("RangeSelectEnding", b), b.endSelectMode()) : b.startSelectMode()
                    }), {
                        contentDiv: i,
                        button: k
                    }
                }
                function d(a) {
                    var b = r("textarea"),
                        c = p(b);
                    return c.css({
                        display: "none"
                    }), p(a).append(b), b
                }
                return k.W4 = d, b.prototype = {
                    constructor: b,
                    j5: function(a) {
                        var b, c, e, f, g, h, i = this;
                        i.O1(), i.UF(), i.E5 = !0, b = d(i.OC.qo), c = i.a1(), c.suspendPaint(), V(c, b), e = c.Cw, e.V4 = !0, e.C5 = i.C5, e.Nfa = i.Nfa, e.ria = i.ria, a && (i.text(a), i.caret(a.length)), f = i.text(), g = i.caret(), g <= 0 && (g = f.length), i.focus(), i.caret(g), i.MH = !0, i.W0 = 1, h = f.lastIndexOf(",", g), h !== -1 && (i.W0 = h + 1), f || (i.text("="), f = "=", i.caret(1), g = 1), 0 !== f.indexOf("=") && (f = "=" + f, g++), e.text(f), e.caret(g), e.MH = i.MH, e.W0 = i.W0, c.resumePaint()
                    },
                    startSelectMode: function(a) {
                        var b, c = a;
                        c && 0 !== c.indexOf("=") && (c = "=" + c), b = this, b.V4 = !0, b.D5 = !0, p(b.sia).css({
                            background: N,
                            "background-repeat": "no-repeat"
                        }), b.j5(c)
                    },
                    endSelectMode: function() {
                        this.D5 = !1, this.H5(), p(this.sia).css({
                            background: M,
                            "background-repeat": "no-repeat"
                        })
                    },
                    H5: function() {
                        var a = this.a1();
                        a.gv(!0, m, !0), a.repaint()
                    },
                    destroy: function() {
                        var a = this;
                        a.D5 && a.H5(), a.MH = !1, a.W0 = -1, a.X0(), a.Y0(), p(a.Z0).remove(), p(a.$0).remove(), p(a._0).remove()
                    },
                    bind: function(a, b, c) {
                        var d = this.qo;
                        d && a && (a = a.split(/\s+/).join(F + " "), p(d).bind(a + F, b, c))
                    },
                    unbind: function(a, b) {
                        var c = this.qo;
                        c && a && (a = a.split(/\s+/).join(F + " "), p(c).unbind(a + F, b))
                    },
                    unbindAll: function() {
                        var a = this.qo;
                        a && p(a).unbind(F)
                    },
                    caret: function(a) {
                        var b, c, d = this,
                            e = d.qo;
                        if (e) return b = t.activeElement === e, c = p(e), 0 === arguments.length ? b ? d.b1(e).end : c.data("caret-before") : void(a !== d.caret() && (b ? (d.c1(e, a), c.data("caret-before", d.b1(e).end)) : c.data("caret-before", a), d.Wq(H, {})))
                    },
                    b1: function(a) {
                        var b, c, d, e = this,
                            f = -1,
                            g = -1;
                        return e.d1(a) ? (f = a.selectionStart, g = a.selectionEnd) : e.Cia(a) && (b = s.getSelection(), b.rangeCount > 0 && (c = b.getRangeAt(0), d = c.cloneRange(), d.selectNodeContents(a), d.setEnd(c.endContainer, c.endOffset), g = ("" + d).length, d = c.cloneRange(), d.selectNodeContents(a), d.setEnd(c.startContainer, c.startOffset), f = ("" + d).length, d.detach())), {
                            start: f,
                            end: g
                        }
                    },
                    c1: function(a, b) {
                        var c, d, e, f = this;
                        f.d1(a) ? a.setSelectionRange(b, b) : f.Cia(a) && (e = this.e1(a, b), e && (c = s.getSelection(), d = t.createRange(), d.setStart(e.node.firstChild, e.offset), d.collapse(!0), c.removeAllRanges(), c.addRange(d), this.V4 && (a.parentElement.scrollTop = a.parentElement.scrollHeight)))
                    },
                    text: function(a) {
                        var b, c, d, e, f, g = this,
                            h = g.qo,
                            i = g.a1();
                        return h && i && !i.Js ? (b = g.d1(h), c = g.Cia(h), 0 === arguments.length ? (d = "", b ? d = h.value : c && (d = y ? v.Woa(h) : h.innerText, d = d.replace(/\r\n?/g, "\n"), d.indexOf(D) >= 0 && (d = v.Ika(d, D, " "))), d) : (null !== a && void 0 !== a || (a = ""), void(a !== g.text() && (g.S0 = g.T0(a), b ? h.value = a : c && (g.V0(g.S0), g.caret(a.length)), e = {}, f = k.G0.H0, f && f._text && (e = {
                            sheet: f.kj,
                            editor: f.I0 && f.I0.firstChild.firstChild,
                            canvasOffset: f.f1
                        }), g.Wq(G, e))))) : ""
                    },
                    autoComplete: function(a) {
                        return 0 === arguments.length ? this.g1 : void(this.g1 = a)
                    },
                    showHelp: function(a) {
                        return 0 === arguments.length ? this.h1 : void(this.h1 = a)
                    },
                    add: function(a) {
                        var b, c;
                        if (a) if (p.isArray(a)) for (b = a.length, c = 0; c < b; c++) this.Sb(a[c]);
                        else this.Sb(a)
                    },
                    Sb: function(a) {
                        var b, c, d, e, f = a && a.name && z(a.name);
                        if (f) {
                            for (b = this.i1, c = b.length, d = 0; d < c; d++) {
                                if (e = z(b[d].name), e === f) return;
                                if (e > f) break
                            }
                            b.splice(d, 0, a)
                        }
                    },
                    remove: function(a) {
                        var b, c, d;
                        if (a) for (a = z(a), b = this.i1, c = b.length, d = 0; d < c; d++) if (z(b[d].name) === a) {
                            b.splice(d, 1);
                            break
                        }
                    },
                    workbook: function(a) {
                        var b = this;
                        return 0 === arguments.length ? b.OC : void(a === l ? b.V4 && b.H5() : (b.P0(a), b.j1()))
                    },
                    P0: function(a) {
                        var b, c;
                        a && (b = this, b.OC && b.Y0(), c = b.qo, c && (b.OC = a))
                    },
                    l1: function() {
                        var a, b, c, d = [],
                            e = this.S0,
                            f = e && e.length,
                            g = 0,
                            h = 0;
                        if (f > 0) for (c = 0; c < f; c++) a = e[c], b = a.text, 11 === a.type && d.push({
                            textOffset: g,
                            text: b,
                            ranges: a.ranges,
                            index: h++,
                            allowDrag: a.allowDrag
                        }), g += b.length;
                        return d
                    },
                    m1: function() {
                        var a, b, c, d, e, f = this.qo,
                            g = this.l1();
                        if (f && g && g.length > 0) for (a = this.caret(), b = g.length, e = 0; e < b; e++) {
                            if (c = g[e], d = c.textOffset, d < a && a <= d + c.text.length) return c;
                            if (d >= a) break
                        }
                        return l
                    },
                    n1: function(a) {
                        var b, c, d;
                        return !!a && (b = this.caret(), c = a.text, d = a.textOffset, d < b && b <= d + c.length)
                    },
                    o1: function(a) {
                        var b, c, d, e, f, g, h, i = this.l1(),
                            j = i.length;
                        if (a < 0 || j <= a) return "";
                        for (b = [], d = 0, e = 0; e < j; e++) {
                            for (c = i[e], f = !1, g = 0; g < b.length; g++) if (b[g].text.replace(/\s+/g, "").toUpperCase() === c.text.replace(/\s+/g, "").toUpperCase()) {
                                f = !0;
                                break
                            }
                            if (f) {
                                if (a === e) {
                                    d = g;
                                    break
                                }
                            } else if (b.push(c), a === e) {
                                d = b.length - 1;
                                break
                            }
                        }
                        return h = L, h[d % h.length]
                    },
                    M0: function() {
                        var a, b, c;
                        return !!this.MH || ( !! this.V4 || (a = this.s1(this.caret()), !! a && (b = a.type, c = a.text, 1 === b || 8 === b || 7 === b && "%" !== c || 5 === b || 9 === b || 15 === b)))
                    },
                    t1: function(a) {
                        if (!a || !this.MH) return !1;
                        var b = this.W0,
                            c = this.caret(),
                            d = a.textOffset;
                        return b <= d && d < c
                    },
                    u1: function() {
                        var a, b, c = [],
                            d = this.l1(),
                            e = d.length;
                        if (e > 0) for (b = 0; b < e; b++) a = d[b], this.t1(a) && c.push(a);
                        return c
                    },
                    v1: function(a, b, c) {
                        var d, e, f, g, h, i, l, m, n, o, p, q = this,
                            r = q.qo;
                        if (a && r) {
                            if (!q.MH) {
                                if (!q.M0()) return;
                                b = !1, q.MH = !0, q.W0 = q.caret(), q.Wq(I, {})
                            }
                            d = q.W0, e = q.text(), f = q.caret(), e || (e = "=", d = q.W0 = 1, f = 1), g = f, c && (b = !1, e = e.substr(0, d) + e.substr(f), q.S0 = q.T0(e), f = d, g = f), h = q.s1(f), b ? (i = e.substr(0, f), i = i.substr(0, i.length - h.text.length), i.length >= d && (h.text = a, g = i.length + a.length)) : (l = q.S0, m = j.k.Cb(l, h), n = q.V4 && l.length > 1 && m === l.length - 1 && 11 === h.type, f > d || n ? (l.splice(m + 1, 0, {
                                text: this.w1(),
                                type: 8
                            }), l.splice(m + 2, 0, {
                                text: a,
                                type: 11
                            }), a = "," + a) : l.splice(m + 1, 0, {
                                text: a,
                                type: 11
                            }), g = f + a.length), q.z1(), o = {}, p = k.G0.H0, p && p._text && (o = {
                                sheet: p.kj,
                                editor: p.I0 && p.I0.firstChild.firstChild,
                                canvasOffset: p.f1
                            }), q.Wq(G, o), q.caret(g)
                        }
                    },
                    NH: function() {
                        var a = this;
                        a.MH && (a.MH = !1, a.W0 = -1, a.Wq(J, {}))
                    },
                    B1: function() {
                        this.MH = !0, this.W0 = this.caret()
                    },
                    C1: function(a) {
                        return void 0 !== a && (this.W0 = a), this.W0
                    },
                    D1: function(a, b, c) {
                        var d, e, f, g, h, i, j, k = this,
                            l = k.qo;
                        if (l && !(a < 0) && b) {
                            for (d = "", e = !1, f = k.S0, g = f && f.length, i = 0, j = 0; j < g; j++) {
                                if (h = f[j], 11 === h.type && i++ === a) {
                                    f[j] = {
                                        text: b,
                                        type: 11
                                    }, e = !0;
                                    break
                                }
                                d += h.text
                            }
                            e && (k.z1(), k.Wq(G, {}), c ? k.caret(k.text().length) : k.caret(d.length + b.length))
                        }
                    },
                    j1: function() {
                        var a, b, c, d = this;
                        d.OC && (a = d.qo, d.OC && a && (b = g.Events, a.setAttribute(B, "gcAttachedFormulaTextBox"), d.V4 || (d.OC.CF = d), d.OC.Fu(b.FormulatextboxEditStarted, d, d.E1), d.OC.Fu(b.FormulatextboxEnterCell, d, d.F1), d.OC.Fu(b.FormulatextboxEditEnded, d, d.G1), d.OC.Fu(b.FormulatextboxActiveSheetChanged, d, d.H1), d.OC.Fu(b.FormulatextboxRangeChanged, d, d.I1), d.OC.Fu(b.FormulaTextBoxTextChanged, d, d.J1), d.OC.Fu(b.FormulaTextBoxCaretChanged, d, d.K1), c = P(d.OC), c && !d.V4 && d.text(d.L1(c, c.Jl, c.Kl)), d.Fu(G, d, d.M1), d.Fu(H, d, d.N1)))
                    },
                    refresh: function() {
                        var a, b = this.OC;
                        b && (a = P(b), a && !this.V4 && this.text(this.L1(a, a.Jl, a.Kl)))
                    },
                    Y0: function() {
                        var a, b = this,
                            c = b.OC;
                        !b.O0 && c && (a = g.Events, b.V4 || (c.CF = null, c.Gu(a.FormulatextboxEditStarted, b.E1), c.Gu(a.FormulatextboxEnterCell, b.F1), c.Gu(a.FormulatextboxEditEnded, b.G1), c.Gu(a.FormulatextboxActiveSheetChanged, b.H1), c.Gu(a.FormulatextboxRangeChanged, b.I1), c.Gu(a.FormulaTextBoxTextChanged, b.J1), c.Gu(a.FormulaTextBoxCaretChanged, b.K1), b.Gu(G, b.M1), b.Gu(H, b.N1)), b.text("")), b.OC = null
                    },
                    O1: function() {
                        var a, b, c = this;
                        c.OG || (c.OG = !0, a = this.OC, b = a && P(a), b && !b.isEditing() ? (c.V4 || b.EF(null, b.Jl, b.Kl, null, null, !1, null), c.Q1 = !0) : c.Q1 = !1, c.OG = !1, c.R1 || c.S1())
                    },
                    UF: function() {
                        var a, b, c, d, e, f, g = this,
                            h = g.OC,
                            i = h && P(h);
                        i && (a = i.Cw, g.Q1 && a && (b = a.text(), c = g.text(), c !== b && (d = g.caret(), e = i.getFormulaInformation(i.getActiveRowIndex(), i.getActiveColumnIndex()), g.text(b), e.isArrayFormula && (d >= c.length && (d -= 1), d = n(0, d - 1)), g.caret(d))), f = i.Px, 2 !== f && (i.Px = 2, i.Cu(f, 2)))
                    },
                    L1: function(a, b, c) {
                        var d, e, f, g, h, i = "";
                        return a && (d = a.parent, e = d && d.options, f = a.getFormulaInformation(b, c), f && f.hasFormula ? (i = "=" + f.formulaWithCulture, f.isArrayFormula && (i = "{" + i + "}")) : (g = a.getActualStyle(b, c), h = a.getValue(b, c), i = "string" == typeof h && g.quotePrefix || i.length > 0 && "=" === i[0] && e && e.allowUserEditFormula ? "'" + h : v.Il(g, h, a) || "")), i
                    },
                    H1: function(a, b) {
                        var c, d, e = a.data;
                        e.OG || (c = b.newSheet, e.V4 || (e.OG = !0, e.close(), b && (d = c, e.text(e.L1(d, d.Jl, d.Kl))), e.OG = !1))
                    },
                    E1: function(a) {
                        var b, c, d, e = a.data;
                        e.OG || (b = e.OC, c = b && P(b), d = c && c.Cw, d && e.V4 === d.V4 && e.C5 === d.C5 && (e.OG = !0, e.text(d.text()), e.OG = !1))
                    },
                    F1: function(a, b) {
                        var c = a.data;
                        c.V4 || c.OG || (c.OG = !0, b && c.text(c.L1(b.sheet, b.row, b.col)), c.OG = !1)
                    },
                    I1: function(a, b) {
                        var c, d, e, f, h, i = a.data;
                        i.OG || i.V4 || (i.OG = !0, b && (c = b.sheet, d = b.row, e = b.col, f = b.rowCount, h = b.colCount, new g.Range(d, e, f, h).contains(c.Jl, c.Kl) && i.text(i.L1(c, c.Jl, c.Kl))), i.OG = !1)
                    },
                    G1: function(a, b) {
                        var c = a.data;
                        return c.V4 && c.D5 && c.E5 ? void(b.ignore = !0) : void(c.OG || (c.OG = !0, c.close(), b && b.sheet.Cw && !b.sheet.Cw.V4 && !c.V4 && c.text(c.L1(b.sheet, b.row, b.col)), c.OG = !1))
                    },
                    J1: function(a, b) {
                        var c, d = a.data;
                        d.OG || (!b.sheet.Cw || d.V4 === b.sheet.Cw.V4 && d.C5 === b.sheet.Cw.C5) && (d.OG = !0, b && (c = d.caret(), d.text(b.text), d.caret(c)), d.OG = !1)
                    },
                    K1: function(a, b) {
                        var c = a.data;
                        c.OG || (!b.sheet.Cw || c.V4 === b.sheet.Cw.V4 && c.C5 === b.sheet.Cw.C5) && (c.OG = !0, b && c.caret(b.caret), c.OG = !1)
                    },
                    M1: function(a) {
                        var b, c, d, e, f, g, h, i, j = a.data;
                        if (!j.OG && (b = j.OC, c = b && P(b))) {
                            if (j.OG = !0, d = c.Jl, e = c.Kl, f = c.Cw, g = c.getCellType(d, e), f) {
                                if (j.V4 !== f.V4 || j.C5 !== f.C5) return;
                                h = f.caret(), f.text(j.text()), f.caret(h)
                            } else i = {
                                sheet: c,
                                row: d,
                                col: e,
                                sheetArea: 3
                            }, g.setEditorValue(c.BF, j.text(), i);
                            j.OG = !1
                        }
                    },
                    N1: function(a) {
                        var b, c, d, e = a.data;
                        e.OG || (b = e.OC, c = b && P(b), c && c.isEditing() && (d = c.Cw, (!d || e.V4 === d.V4 && e.C5 === d.C5) && (e.OG = !0, d && (d.caret(e.caret()), e.S1()), e.OG = !1)))
                    },
                    ad: function(a) {
                        var b, c, d, e = this;
                        e.T1 = !1, e.U1 = !1, e.MH = !1, e.W0 = -1, e.i1 = [], e.g1 = !0, e.h1 = !0, e.V1 = !0, b = r("div"), b.className = "gcsj-func-ac-popup", b.style.display = "none", b.setAttribute(B, "gcFuncACPopup"), a.insertBefore(b, l), e.Z0 = b, e.R1 = !1, c = r("div"), c.className = "gcsj-func-help-popup", c.style.display = "none", c.setAttribute(B, "gcFuncHelpPopup"), a.insertBefore(c, l), e.$0 = c, e.W1 = !1, p(b).bind("mouseover", function() {
                            e.V1 = !1
                        }).bind("mouseout", function() {
                            e.V1 = !0
                        }), p(c).bind("mouseover", function() {
                            e.V1 = !1
                        }).bind("mouseout", function() {
                            e.V1 = !0
                        }), p(b).bind("scroll", function() {
                            e.X1 && clearTimeout(e.X1), e.X1 = setTimeout(function() {
                                e.qo && e.qo.focus()
                            }, 100)
                        }), d = r("div"), d.style.display = "none", d.setAttribute(B, "gcFuncHelpDiv"), a.insertBefore(d, l), e._0 = d, e.OC = null, e.OG = !1, e.Q1 = !1, e.O0 = !1
                    },
                    N0: function(a) {
                        var b, c, d;
                        a && (b = this, c = b.Cia(a), (b.d1(a) || c) && (d = p(a), b.qo && b.X0(), b.qo = a, x && x.msie ? c || y ? (b.Fu("focus", function() {
                            d.data("text-before", b.text())
                        }), b.Fu("click", function() {
                            d.focus()
                        }), "input keydown keyup cut paste".split(" ").forEach(function(a) {
                            b.Fu(a, function() {
                                b.Y1()
                            })
                        })) : b.Fu(C, function() {
                            b.Z1()
                        }) : b.Fu(C, function() {
                            if (c) {
                                var a = b.qo.lastChild;
                                x.chrome && a && "BR" === a.tagName && b.qo.removeChild(a)
                            }
                            b.Z1()
                        }), b.Fu("keydown", function(a) {
                            var d, e, f, g = a.ctrlKey,
                                h = a.shiftKey,
                                i = a.altKey,
                                j = a.metaKey,
                                k = g || h || i || j,
                                l = a.keyCode;
                            b.U1 = !1, !k && b.R1 && (l === K.down ? (b._1(1), w(a)) : l === K.up ? (b._1(-1), w(a)) : l === K.tab && (b.a2(), w(a))), l === K.esc && b.close(), b.b2(a), d = P(b.OC), e = d.mm.LH(a), b.V4 && e && (f = d.Cw, f && f.MH && f.NH()), c && (e ? b.Jka() : 13 === l && (g || i) && b.Jka(!0), c && g && (90 === l || 89 === l) && w(a))
                        }), b.Fu("keyup", function(a) {
                            var d, e, f, g;
                            b.b2(a), d = b.text(), c && (f = a.keyCode, g = a.ctrlKey, g && 90 === f ? (e = b.Ac.pop() || "", b.text(e), b.Bc.push(d)) : g && 89 === f && (e = b.Bc.pop(), e && (b.text(e), b.Ac.push(d))))
                        }), b.Fu("focus", function(a) {
                            var c = x && x.mozilla;
                            c && !b.qo.innerText && (b.qo.innerText = ""), b.b2(a), b.V4 && b.D5 && (b.E5 = !0, b.j5())
                        }), b.Fu("blur", function() {
                            b.V1 && b.close(), b.V4 && (b.H5(), b.E5 = !1)
                        }), b.Fu("mousedown", function() {
                            b.E5 = !0, b.O1()
                        }), b.Fu("mouseup", function() {
                            b.UF()
                        }), b.Fu("click", function(a) {
                            var c, d, e;
                            b.MH && b.NH(), c = b.OC, d = c && P(c), e = d && d.Cw, e && e.MH && !e.V4 && e.NH(), b.b2(a)
                        }), b.Fu("compositionstart", function() {
                            b.T1 = !0
                        }), b.Fu("compositionend", function() {
                            b.T1 = !1, (x.edge || x.chrome) && b.Y1()
                        })))
                    },
                    X0: function() {
                        var a, b = this,
                            c = b.qo;
                        c && (a = p(c), a.removeData("text-before"), a.removeData("caret-before"), b.nu(), b.unbindAll(), b.V4 && (p(b.cga).empty(), b.cga = l), b.qo = l)
                    },
                    Y1: function() {
                        var a = this,
                            b = p(a.qo),
                            c = a.text();
                        b.data("text-before") !== c && (a.T1 || b.data("text-before", c), a.Z1())
                    },
                    b2: function(a) {
                        if (x && x.msie) {
                            var b = function(a, b) {
                                return function() {
                                    a.d2(a, b)
                                }
                            };
                            setTimeout(b(this, a), 10)
                        } else this.d2(this, a)
                    },
                    d2: function(a, b) {
                        var c, d, e, f, g, h = b.keyCode,
                            i = h === K.left || h === K.right || h === K.home || h === K.end || h === K.pdn || h === K.pup || h === K.tab || h === K.enter;
                        if (a.g1 || (i = i || h === K.up || h === K.down), c = void 0 !== b.button, i || c) {
                            if (d = a.qo, e = p(d), f = a.b1(d), f.start !== f.end) return;
                            g = f.end, e.data("caret-before") !== g && (e.data("caret-before", g), a.Wq(H, {}), a.S1())
                        }
                    },
                    e2: function() {
                        return this.OC ? P(this.OC).Jl : m
                    },
                    f2: function() {
                        return this.OC ? P(this.OC).Kl : m
                    },
                    a1: function() {
                        if (this.OC) return P(this.OC)
                    },
                    T0: function(a) {
                        var b, c, d = this,
                            e = [];
                        return a && "=" === a[0] ? (b = new h.Parser, c = b.parseReferenceExpressionInfos(a, d.a1(), d.e2(), d.f2(), !0), e = d.i2(c)) : (e.push({
                            text: a,
                            type: 17
                        }), e)
                    },
                    Z1: function() {
                        var a, b, c, d = this,
                            e = d.text();
                        "\n" !== e && e.indexOf("\n") >= 0 || (a = d.qo, b = p(a), d.U1 = !0, d.S0 = d.T0(e), d.Cia(a) ? d.T1 || ("\n" === e ? (b.empty(), d.Wq(G, {
                            type: C
                        })) : (c = d.caret(), d.V0(d.S0), d.Wq(G, {
                            type: C
                        }), d.caret(c))) : d.Wq(G, {
                            type: C
                        }), c = d.caret(), b.data("caret-before") !== c && (b.data("caret-before", c), d.Wq(H, {})), d.c2(), d.R1 || d.S1())
                    },
                    j2: function() {
                        return j.CultureManager.q4().NumberFormat
                    },
                    h2: function() {
                        var a = this.j2();
                        return a && a.arrayGroupSeperator || ";"
                    },
                    l2: function() {
                        var a = this.j2();
                        return a && a.arrayListSeparator || ","
                    },
                    w1: function() {
                        var a = this.j2();
                        return a && a.listSeparator || ","
                    },
                    g2: function() {
                        var a = this.j2();
                        return a && a.numberDecimalSeparator || "."
                    },
                    i2: function(a) {
                        var b, c, d, e, f = [],
                            g = [],
                            h = this.h2(),
                            i = this.w1(),
                            k = this.l2(),
                            l = !1;
                        for (b = 0; b < a.length; b++) b > 0 && b < a.length - 1 && ";" === a[b - 1].text && "," === a[b].text && "ARRAYROW" === a[b + 1].text || (c = a[b], d = this.m2(c, g), e = c.text, 2 === d ? f.push({
                            text: e,
                            type: d
                        }) : l && 8 === d && "," === e ? f.push({
                            text: k,
                            type: 9
                        }) : l && 8 === d && ";" === e ? f.push({
                            text: h,
                            type: 10
                        }) : 8 === d ? f.push({
                            text: i,
                            type: d
                        }) : 3 === d ? ("ARRAY" === e && (l = !0), f.push({
                            text: "{",
                            type: 3
                        })) : 4 === d ? "ARRAY" === e ? (l = !1, f.push({
                            text: "}",
                            type: 4
                        })) : f.push({
                            text: e,
                            type: 4
                        }) : 6 === d ? f.push({
                            text: ")",
                            type: d
                        }) : 13 === d ? f.push({
                            text: j.o.nb(e),
                            type: d,
                            ranges: c.ranges,
                            allowDrag: c.canDrag
                        }) : null !== d && f.push({
                            text: e,
                            type: d,
                            ranges: c.ranges,
                            allowDrag: c.canDrag
                        }));
                        return f
                    },
                    m2: function(a, b) {
                        var c, d = a.type,
                            e = a.subType,
                            f = a.text,
                            g = a.value;
                        if (1 === d) {
                            if (1 === e) return "ARRAY" === f || "ARRAYROW" === f ? (b.push(3), 3) : (b.push(5), "(" === g.trim() ? 5 : 2);
                            if (2 === e) {
                                if (")" === g.trim()) return 6;
                                if (b.length > 0) {
                                    if (c = b[b.length - 1], 3 === c) return b.pop(), 4;
                                    if (5 === c) return b.pop(), 6
                                }
                            }
                            if ("=" === g.trim()) return 1
                        } else if (3 === d) {
                            if (0 === e) return 8
                        } else {
                            if (5 === d || 6 === d || 4 === d) return 7;
                            if (0 === d) return 7 === e || 0 === e ? 11 : 5 === e ? 12 : 4 === e ? 13 : 3 === e ? 14 : 6 === e ? 16 : 14;
                            if (7 === d) return 15;
                            if (8 === d) return 17
                        }
                        return 17
                    },
                    z1: function() {
                        var a, b = this,
                            c = b.qo,
                            d = b.S0,
                            e = "",
                            f = d && d.length;
                        for (a = 0; a < f; a++) e += d[a].text;
                        b.d1(c) ? c.value = e : b.Cia(c) && b.V0(d)
                    },
                    d1: function(a) {
                        var b = a && a.tagName;
                        return "TEXTAREA" === b || "INPUT" === b
                    },
                    Cia: function(a) {
                        return a && "DIV" === a.tagName && "true" === a.contentEditable
                    },
                    Dia: function(a) {
                        return "gcEditingInput" === p(a).attr(B)
                    },
                    bW: function(a) {
                        return a && "=" === a[0]
                    },
                    Fu: function(a, b, c) {
                        var d = this.qo;
                        d && a && (a = a.split(/\s+/).join(E + " "), p(d).bind(a + E, b, c))
                    },
                    Gu: function(a, b) {
                        var c = this.qo;
                        c && a && (a = a.split(/\s+/).join(E + " "), p(c).unbind(a + E, b))
                    },
                    nu: function() {
                        var a = this.qo;
                        a && p(a).unbind(E)
                    },
                    Wq: function(a, b) {
                        var c = this.qo;
                        c && p(c).trigger(a, b)
                    },
                    s1: function(a) {
                        var b, c, d, e, f;
                        if (a <= 0) return l;
                        if (b = this.S0, c = b && b.length, c > 0) for (d = 0, f = 0; f < c; f++) if (e = b[f], d += e.text.length, d >= a) return e;
                        return l
                    },
                    n2: function() {
                        var a, b, c = this.OC,
                            d = c && P(c),
                            e = d && d.Cw;
                        if (e) {
                            for (a = e.i1, b = 0; b < a.length; b++) a[b].isFunc = !0;
                            return a.concat(this.o2(c, d)).concat(this.q2(d))
                        }
                        return this.i1
                    },
                    o2: function(a, b) {
                        var c, d = [],
                            e = b.getCustomNames();
                        return e && p.each(e, function(a, b) {
                            d.push({
                                name: b.Cj,
                                description: b.kT
                            })
                        }), c = a.getCustomNames(), c && p.each(c, function(a, b) {
                            d.push({
                                name: b.Cj,
                                description: b.kT
                            })
                        }), d
                    },
                    q2: function(a) {
                        var b, c, d = [],
                            e = a.tables;
                        if (e && (b = e.all())) for (c = 0; c < b.length; c++) d.push({
                            name: b[c].name(),
                            description: O().Fbx_TableName_Description + b[c].name()
                        });
                        return d
                    },
                    s2: function(a, b) {
                        var c, d, e, f;
                        for (a = z(a), u.Bb(a, "[") && (a = a.substr(a.lastIndexOf("[") + 1), a = u.Gb(a, "@", "")), c = [], d = b && b.length, f = 0; f < d; f++) e = b[f], 0 === z(e.name).indexOf(a) && c.push(e);
                        return c
                    },
                    t2: function() {
                        var a, b, c, d, e, f = this.caret();
                        if (f <= 0) return "";
                        if (a = this.S0, b = a && a.length, b > 0) for (c = 0, e = 0; e < b; e++) {
                            if (d = a[e], c + d.text.length >= f) return d.text.substring(0, f - c);
                            c += d.text.length
                        }
                        return ""
                    },
                    u2: function() {
                        var a, b, c, d, e, f, g, h, i, j = this.caret(),
                            k = this.S0,
                            m = k && k.length,
                            n = [],
                            o = 0;
                        for (b = 0; b < m; b++) {
                            if (a = k[b], n.push(a), 6 === a.type) for (c = 0; n.length > 0;) if (d = n.pop(), 6 === d.type && c++, 5 === d.type && c--, 0 === c) {
                                n.length > 0 && (d = n[n.length - 1], d && 2 === d.type && n.pop());
                                break
                            }
                            if (o += a.text.length, o >= j) break
                        }
                        if (n.length > 0) for (e = 0; n.length > 0;) if (a = n.pop(), 8 === a.type) e++;
                        else if (2 === a.type) {
                            for (f = z(a.text), g = this.n2(), h = g && g.length, b = 0; b < h; b++) if (i = g[b], z(i.name) === f) return {
                                func: i,
                                activeParamterIndex: e,
                                isFunc: i.isFunc
                            };
                            break
                        }
                        return l
                    },
                    c2: function() {
                        var a, b, c, d, e, f, g, h, i = this,
                            j = i.v2(),
                            k = i.g1 && i.bW(i.text()) && j && j.length > 0 && !i.MH && !i.T1;
                        if (k && !i.V4) {
                            for (i.w2(), a = i.Z0, j.length > 8 ? (a.style.height = "204px", a.style.overflowY = "scroll") : (a.style.height = "auto", a.style.overflowY = ""), b = "", c = j.length, e = 0; e < c; e++) d = j[e], b += "<div class='gcsj-func-ac-row'><div class='gcsj-func-ac-row-name' isFunc=" + d.isFunc + ">" + d.name + "</div><div class='gcsj-func-ac-row-description'>" + (d.description || "") + "</div></div>";
                            f = p(i.Z0), f.html(b).show(), i.R1 = !0, g = f.find(".gcsj-func-ac-row"), g.length > 0 && (h = "gcsj-ac-row-active", p(g[0]).addClass(h), g.bind("mouseover", function() {
                                g.removeClass(h), p(this).addClass(h)
                            }), g.bind("click", function() {
                                i.a2()
                            })), i.SH()
                        } else i.z2()
                    },
                    v2: function() {
                        var a, b, c = this,
                            d = c.s1(c.caret()),
                            e = d && d.text,
                            f = [],
                            g = c.S0.indexOf(d);
                        if (d && 14 === d.type) return f;
                        if (a = c.A2(g), a.length > 0) {
                            if (f = f.concat(a).concat(O().B2), u.jb(e, "[") || u.jb(e, "[@")) return f
                        } else f = this.n2();
                        return e = c.t2(), b = [], e && (b = c.s2(e, f)), b
                    },
                    A2: function(a) {
                        var b, c, d, e, f, g, h, i, j = [],
                            k = this.S0,
                            m = k && k.length;
                        if (a < 0 || a >= k.length) return j;
                        if (b = this.OC, c = b && P(b), d = {}, void 0 !== a && a !== l || (a = m), c && (e = k[a], f = c.tables, g = f && f.findByName(u.Ib(e.text, "[")), void 0 !== g && g !== l && !d[g])) {
                            for (d[g] = !0, h = 0, i = ""; i !== l;) i = g.getColumnName(h++), i !== l && j.push({
                                name: i,
                                description: ""
                            });
                            if (j.length > 0) return j
                        }
                        return j
                    },
                    z2: function() {
                        p(this.Z0).hide(), this.R1 = !1
                    },
                    _1: function(a) {
                        var b, c, d, e, f, g, h = p(this.Z0).find(".gcsj-func-ac-row"),
                            i = h.length;
                        if (0 !== i) {
                            if (b = "gcsj-ac-row-active", c = 0, a) for (d = 0; d < i; d++) if (p(h[d]).hasClass(b)) {
                                c = d + a;
                                break
                            }
                            e = p(this.Z0).scrollTop(), h.removeClass(b), f = 0, i > 0 && (f = h[0].offsetHeight), c = n(c, 0), c = o(c, i - 1), g = h[c], p(g).addClass(b), g.offsetTop + g.offsetHeight > p(this.Z0).scrollTop() + p(this.Z0).height() ? p(this.Z0).scrollTop(p(this.Z0).scrollTop() + f) : g.offsetTop < p(this.Z0).scrollTop() ? p(this.Z0).scrollTop(g.offsetTop) : p(this.Z0).scrollTop(e)
                        }
                    },
                    a2: function() {
                        var a, b, c, d, e, f, g, h, i, j, k, m, n, o = this,
                            q = p(o.Z0).find(".gcsj-ac-row-active .gcsj-func-ac-row-name"),
                            r = q.text(),
                            s = "true" === q.attr("isFunc");
                        if (r) {
                            for (a = o.caret(), b = o.S0, c = b && b.length, d = 0, e = 0, f = 0, g = l; f < c && (g = b[f], e = g.text.length, !(d + e >= a));) f++, d += e;
                            h = a - d, i = g.text, j = 0, k = 0, u.Bb(i, "[") ? (j = i.lastIndexOf("[", h - 1), j === -1 ? (j = i.indexOf("["), j === -1 ? g.text = r : g.text = r + i.substr(j), j = 0) : (j++, "@" === i.charAt(j) && (j += 1), k = i.indexOf("]", h), k === -1 && (k = i.length), g.text = i.substring(0, j) + r + i.substr(k))) : g.text = r, s ? g.type = 2 : g.type = 11, m = f + 1, n = b[m], !s || n && 5 === n.type || b.splice(m, 0, {
                                text: "(",
                                type: 5
                            }), o.z2(), o.qo.focus(), o.z1(), o.caret(d + r.length + j + (s ? 1 : 0)), o.S1(), o.S0 = o.T0(o.text()), o.Wq(G, {})
                        }
                    },
                    S1: function() {
                        var a, b, c, d, e, f, g, h, i, j, k, m, n, q, r, s, t, u = this;
                        if (u.R1 && u.z2(), a = u.u2(), a === l || a.isFunc !== !0) return void u.w2();
                        if (b = u.w1(), c = u.h1 && u.bW(u.text()) && a && !u.MH && !u.T1, c && !u.V4) {
                            for (d = a.func, e = d.parameters, f = e && e.length, g = o(f - 1, a.activeParamterIndex), i = "", j = 0; j < f; j++) h = e[j], k = h.name, h.repeatable && (k += b + "..."), h.optional && (k = "[" + k + "]"), m = j === f - 1 ? "" : b + " ", k = j === g ? "<span class='gcsj-func-help-paramter gcsj-func-help-paramter-active'>" + k + "</span>" + m : "<span class='gcsj-func-help-paramter'>" + k + "</span>" + m, i += k;
                            n = "<div class='gcsj-func-help-title'><div class='gcsj-func-help-formula'><span class='gcsj-func-help-formula-name'>" + d.name + "</span><span class='gcsj-func-help-paramter-paren'>(</span>" + i + "<span class='gcsj-func-help-paramter-paren'>)</span></div></div>", q = "<div class='gcsj-func-help-section'><div class='gcsj-func-help-section-title'>" + O().Fbx_Summary + "</div><div class='gcsj-func-help-section-content'>" + (d.description || "") + "</div></div>", r = "<div class='gcsj-func-help-section-content'>" + q + "</div>", s = "<div class='gcsj-func-help-body'>" + r + "</div>", t = n + s, p(u.$0).html(t).show(), u.W1 = !0, u.SH()
                        } else u.w2()
                    },
                    w2: function() {
                        p(this.$0).hide(), this.W1 = !1
                    },
                    close: function() {
                        this.z2(), this.w2()
                    },
                    BH: function(a, b) {
                        var c, d, e, f, g, h;
                        return !this.MH && (c = a.ctrlKey || a.shiftKey || a.altKey || a.metaKey, d = a.keyCode, e = a.ctrlKey, f = a.altKey, g = a.metaKey, h = a.srcElement || a.target, h && b && b.isEditing && "gcAttachedFormulaTextBox" === h.getAttribute("gcUIElement") ? 67 === d && (e || g) && !f || 88 === d && (e || g) && !f : this.R1 && !c && (d === K.down || d === K.up || d === K.tab))
                    },
                    SH: function() {
                        var a, b, c, d, e, f, g, h, i, j, m, n, o, q, r, s = this,
                            u = l;
                        if (s.R1 ? u = s.Z0 : s.W1 && (u = s.$0), u) {
                            if (a = p(s.qo), b = p(u), c = k.G0.H0, c && c.kj) return d = c.kj.getCellRect(c.nT, c.Mk), e = c.f1, void b.css("top", d.y + d.height + e.top).css("left", d.x + e.left);
                            f = a.parent(), g = a.outerHeight(), s.Dia(s.qo) && (f = f.parent(), g = f.outerHeight()), h = f.css("top"), i = parseFloat(h), isNaN(i) || (h = i), j = f.css("left"), "auto" === h && (h = a.offset().top, j = a.offset().left), m = h + g, n = p(t.body).outerHeight(), o = b.outerHeight(), q = m + o, q > n && (r = h - o, r >= 0 && (m = r)), b.css("top", m).css("left", j)
                        }
                    },
                    focus: function() {
                        p(this.qo).focus()
                    },
                    V0: function(a) {
                        var b, c, d, e, f = this,
                            g = "",
                            h = "",
                            i = a && a.length,
                            j = 0;
                        for (c = 0; c < i; c++) b = a[c], d = "", 11 === b.type && (d = " style='color: " + f.o1(j++) + "'"), f._0.innerText = b.text, g += "<span" + d + " class='gcsj-func-color-text'>" + f._0.innerHTML + "</span>", h += b.text;
                        if (h || f.text()) if (e = f.qo, g) e.innerHTML = "<span class='gcsj-func-color-content'>" + g + "</span>";
                        else for (; e.firstChild;) e.removeChild(e.firstChild)
                    },
                    e1: function(a, b) {
                        var c, d, e, f = p(a).find(".gcsj-func-color-content .gcsj-func-color-text"),
                            g = f.length;
                        for (b = n(0, b), e = 0; e < g; e++) if (c = f[e], d = c.innerText, b -= d.length, b <= 0) return {
                            node: c,
                            offset: d.length + b
                        };
                        return d ? {
                            node: c,
                            offset: d.length
                        } : l
                    },
                    Jka: function(a) {
                        var b = this,
                            c = b.qo,
                            d = b.Cia(c),
                            e = b.text();
                        d && e && (e = a ? e.substr(0, e.length - 2) : e, b.Ac.push(e))
                    }
                }, b
            }(), k.FormulaTextBox = f, a.exports = k
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a = c(87),
                b = c(33),
                d = a.CalcEngine,
                e = c(159),
                f = a.kf,
                g = a.GC$,
                h = g.extend,
                i = null,
                j = Math.max,
                k = Math.min,
                l = e.L0,
                m = e.C2;
            h(a.iI.prototype, {
                D2: function(a) {
                    var b, c, d, e, g, h, i, j, k, l, n, o, p, q, r, s, t = this,
                        u = t.kj,
                        v = u.Cw;
                    v && (t.Kka(), b = u.frozenRowCount(), c = u.frozenColumnCount(), d = v.MH, d && t.E2 || (t.E2 = {
                        anchorRow: -1,
                        anchorCol: -1,
                        leadingRow: -1,
                        leadingCol: -1
                    }), e = u.getRowCount(), g = u.getColumnCount(), h = a.hitTestType, i = a.row, j = a.col, k = t.shift, l = t.ctrl, n = t.E2, o = n.anchorRow, p = n.anchorCol, q = -1, r = -1, 0 === h ? (q = b ? u.ar() : u.lq, r = c ? u.$q() : u.qq, s = f(-1, -1, -1, -1), v.v1(m(u, s), k, !l), t.OG = !0) : 1 === h ? (q = b ? u.ar() : u.lq, r = j, s = u.Jx(0, j, e - 1, j, !0), k && p >= 0 && (s = u.Jx(0, j, e - 1, p, !0)), s = f(-1, s.col, -1, s.colCount), v.v1(m(u, s), k, !l), t.OG = !0) : 2 === h ? (q = i, r = c ? u.$q() : u.qq, s = u.Jx(i, 0, i, g - 1, !0), k && o >= 0 && (s = u.Jx(i, 0, o, g - 1, !0)), s = f(s.row, -1, s.rowCount, -1), v.v1(m(u, s), k, !l), t.OG = !0) : 3 === h && (q = i, r = j, s = u.Jx(i, j, i, j, !0), s = f(s.row, s.col, 1, 1), k && o >= 0 && p >= 0 && (s = u.Jx(i, j, o, p, !0)), v.v1(m(u, s), k, !l), t.OG = !0), t.DG = t.OG, k && d || (n.anchorRow = q, n.anchorCol = r, n.leadingRow = q, n.leadingCol = r), t.rG = {
                        KG: a.rowViewportIndex,
                        MG: a.colViewportIndex,
                        sG: a.hitTestType
                    }, t.qG())
                },
                F2: function(b) {
                    var c, d, f = !1,
                        g = e.G0.H0;
                    if (g && g.I0) if (c = g.kj, d = b.Cw, d && c.setFormula(g.nT, g.Mk, d.text()), c !== b) {
                        if (a.Commands.Wx.G2(c), !c.endEdit()) return;
                        f = !0
                    } else d && (d.destroy(), b.Cw = i), g.$b();
                    return f
                },
                EG: function() {
                    var a, b = this,
                        c = b.rG;
                    c && b.OG && (a = c.sG, 3 === a ? b.H2() : 2 === a ? b.I2() : 1 === a && b.J2())
                },
                H2: function() {
                    var a, b, c, d, e = this,
                        f = e.E2,
                        g = f.anchorRow,
                        h = f.anchorCol,
                        i = e.fH(),
                        j = e.gH();
                    g >= 0 && h >= 0 && i >= 0 && j >= 0 && (a = e.kj, b = a.Jx(i, j, g, h, !0), c = m(a, b), c && (d = a.Cw, d.v1(c, !0, !1))), e.NG()
                },
                I2: function() {
                    var a, b, c, d, e = this,
                        g = e.E2.anchorRow,
                        h = e.fH();
                    g >= 0 && h >= 0 && (a = e.kj, b = a.Jx(h, 0, g, a.getColumnCount() - 1, !0), b = f(b.row, -1, b.rowCount, -1), c = m(a, b), c && (d = a.Cw, d.v1(c, !0, !1))), e.NG()
                },
                J2: function() {
                    var a, b, c, d, e = this,
                        g = e.E2.anchorCol,
                        h = e.gH();
                    g >= 0 && h >= 0 && (a = e.kj, b = a.Jx(0, h, a.getRowCount() - 1, g, !0), b = f(-1, b.col, -1, b.colCount), c = m(a, b), c && (d = a.Cw, d.v1(c, !0, !1))), e.NG()
                },
                yH: function() {
                    var a = this;
                    a.RG(), a.rG = i, a.OG = !1, a.DG = !1
                },
                iG: function(a) {
                    var b, c, d, e, f, g, h, i, j = this,
                        k = j.kj,
                        m = j._oa(),
                        n = a.formulaRangeHitInfo;
                    n && n.inBorder && m && (m.MH && m.NH(), m.close(), b = n.paramRange, c = b && b.text, c && (d = l(k, c), d && (j.Kka(), e = k.Tq(d), f = a.row, g = a.col, f < e.row && (f = e.row), f >= e.row + e.rowCount && (f = e.row + e.rowCount - 1), g < e.col && (g = e.col), g >= e.col + e.colCount && (g = e.col + e.colCount - 1), h = f - e.row, i = g - e.col, j.OG = !0, j.FG = !0, j.K2 = {
                        paramRange: b,
                        fromRange: d,
                        rowOffset: h,
                        colOffset: i
                    }, j.rG = {
                        KG: a.rowViewportIndex,
                        MG: a.colViewportIndex,
                        sG: a.hitTestType
                    }, j.qG())))
                },
                GG: function() {
                    var a, b, c, d, e, g, h, i, l, n, o, p, q, r, s, t, u, v, w, x, y, z = this;
                    z.OG && z.FG && (a = z.fH(), b = z.gH(), a >= 0 && b >= 0 && (c = z.K2, d = c.fromRange, e = c.rowOffset, g = c.colOffset, h = c.toRow, i = c.toCol, l = a, n = b, l === h && n === i || (c.toRow = l, c.toCol = n, o = z.kj, p = o.getRowCount(), q = o.getColumnCount(), r = d.row, s = d.col, t = d.rowCount, u = d.colCount, v = r < 0 ? -1 : j(0, k(p - t, a - e)), w = s < 0 ? -1 : j(0, k(q - u, b - g)), x = m(o, f(v, w, t, u)), x && (y = z._oa(), y.D1(c.paramRange.index, x, !0)))), z.NG())
                },
                zH: function() {
                    var a, b = this;
                    b.RG(), b.OG = !1, b.FG = !1, b.K2 = i, a = b._oa(), a.onRangeMoved && a.onRangeMoved()
                },
                jG: function(a) {
                    var b, c, d, e, f, g, h, i, j, k, m, n = this,
                        o = n.kj,
                        p = n._oa(),
                        q = a.formulaRangeHitInfo;
                    if (q && p && (p.MH && p.NH(), b = q.paramRange, c = b && b.text, b && c && (d = l(o, c)))) {
                        if (n.Kka(), e = d.row, f = d.row < 0 ? -1 : d.row + d.rowCount - 1, g = d.col, h = d.col < 0 ? -1 : d.col + d.colCount - 1, q.inTopLeft) i = f, j = h, k = e, m = g;
                        else if (q.inTopRight) i = f, j = g, k = e, m = h;
                        else if (q.inBottomLeft) i = e, j = h, k = f, m = g;
                        else {
                            if (!q.inBottomRight) return;
                            i = e, j = g, k = f, m = h
                        }
                        n.OG = !0, n.HG = !0, n.L2 = {
                            paramRange: b,
                            anchorRow: i,
                            anchorCol: j,
                            toRow: k,
                            toCol: m
                        }, n.rG = {
                            KG: a.rowViewportIndex,
                            MG: a.colViewportIndex,
                            sG: a.hitTestType
                        }, n.qG()
                    }
                },
                kG: function(a, b) {
                    var c = a.Cw;
                    return c && c.M0() ? (this.D2(b), !0) : !! this.F2(a)
                },
                IG: function() {
                    var a, b, c, d, e, g, h, i, l, n, o, p, q, r, s, t, u, v, w, x, y = this;
                    y.OG && y.HG && (a = y.fH(), b = y.gH(), a >= 0 && b >= 0 && (c = y.L2, d = c.anchorRow, e = c.anchorCol, g = c.toRow, h = c.toCol, i = a, l = b, i === g && l === h || (c.toRow = i, c.toCol = l, n = y.kj, o = n.getRowCount(), p = n.getColumnCount(), q = d < 0 ? o - 1 : d, r = e < 0 ? p - 1 : e, s = k(q, i), t = k(r, l), u = j(q, i) - s + 1, v = j(r, l) - t + 1, 0 === s && u === o && (s = -1, u = -1), 0 === t && v === p && (t = -1, v = -1), w = m(n, f(s, t, u, v)), w && (x = y._oa(), x.D1(c.paramRange.index, w, !0)))), y.NG())
                },
                AH: function() {
                    var a, b, c = this;
                    c.RG(), c.OG = !1, c.HG = !1, c.L2 = i, a = c._oa(), a.V4 && (a.W0 = 1, b = a.text().lastIndexOf(",", a.caret()), b !== -1 && (a.W0 = b + 1)), a.onRangeResized && a.onRangeResized()
                },
                vr: function(a, b, c) {
                    var d, f, g, h, j, k, m, n, o, p, q, r, s = this.kj,
                        t = this._oa(),
                        u = t && t.l1();
                    if (!u || 0 === u.length || !t.UQa) return i;
                    if (d = a.rowViewportIndex, f = a.colViewportIndex, this.qH(d, f, b, c)) return i;
                    for (k = u.length - 1; k >= 0; k--) if (g = u[k], g.allowDrag !== !1 && (m = e.G0.H0, (!m || !m._text) && (h = l(s, g.text)))) {
                        if (j = s.getRangeRect(d, f, h), n = 5, o = j.x - 2, p = j.x + j.width + 1 - n, q = j.y - 2, r = j.y + j.height + 1 - n, o + n <= b && b < p && (q + 1 <= c && c <= q + 3 || r + 1 <= c && c <= r + 3)) return {
                            paramRange: g,
                            inBorder: !0
                        };
                        if (q + n <= c && c < r && (o + 1 <= b && b <= o + 3 || p + 1 <= b && b <= p + 3)) return {
                            paramRange: g,
                            inBorder: !0
                        };
                        if (p <= b && b < p + n && r <= c && c < r + n) return {
                            paramRange: g,
                            inBottomRight: !0
                        };
                        if (o <= b && b < o + n && r <= c && c < r + n) return {
                            paramRange: g,
                            inBottomLeft: !0
                        };
                        if (p <= b && b < p + n && q <= c && c < q + n) return {
                            paramRange: g,
                            inTopRight: !0
                        };
                        if (o <= b && b < o + n && q <= c && c < q + n) return {
                            paramRange: g,
                            inTopLeft: !0
                        }
                    }
                    return i
                },
                _oa: function() {
                    var a = this.kj;
                    return a.Cw || a.Cva
                },
                ly: function() {
                    var a, c, e, f, g, h, j, k, l, m, n, o, p, q = this,
                        r = q.kj,
                        s = r.Cw;
                    if (s) if (a = r.Jl, c = r.Kl, e = r.parent, f = e && 1 === e.options.referenceStyle, g = new d.SheetParserContext(r, f, b.pf(a, c)), h = new b.Parser, s.MH) for (l = s.u1(), m = 0; m < l.length; m++) {
                        j = l[m];
                        try {
                            k = h.parse(g, j.text)
                        } catch (a) {
                            k = i
                        }
                        k && 1 === k.type && (q.M2(k, a, c, !0, !0), s.D1(j.index, h.unparse(g, k)))
                    } else {
                        if (j = s.m1(), !j) return;
                        try {
                            k = h.parse(g, j.text)
                        } catch (a) {
                            k = i
                        }
                        if (!k) return;
                        1 !== k.type || k.sf() ? 1 === k.type && (q.N2(k, a, c), s.D1(j.index, h.unparse(g, k))) : (n = j.textOffset + j.text.lastIndexOf(":"), o = s.caret() <= n, o ? (q.M2(k, a, c, !0, !1), p = h.unparse(g, k), s.D1(j.index, p), s.caret(j.textOffset + p.lastIndexOf(":"))) : (q.M2(k, a, c, !1, !0), s.D1(j.index, h.unparse(g, k))))
                    }
                },
                M2: function(a, b, c, d, e) {
                    var f, g, h = a.rowRelative,
                        i = a.columnRelative;
                    d && (h && i ? (a.rowRelative = !1, a.columnRelative = !1, a.row += b, a.column += c) : h ? (a.columnRelative = !0, a.column -= c) : i ? (a.rowRelative = !0, a.columnRelative = !1, a.row -= b, a.column += c) : (a.columnRelative = !0, a.column -= c)), f = a.endRowRelative, g = a.endColumnRelative, e && (f && g ? (a.endRowRelative = !1, a.endColumnRelative = !1, a.endRow += b, a.endColumn += c) : f ? (a.endColumnRelative = !0, a.endColumn -= c) : g ? (a.endRowRelative = !0, a.endColumnRelative = !1, a.endRow -= b, a.endColumn += c) : (a.endColumnRelative = !0, a.endColumn -= c))
                },
                N2: function(a, b, c) {
                    var d = a.rowRelative,
                        e = a.columnRelative;
                    d && e ? (a.rowRelative = !1, a.columnRelative = !1, a.row += b, a.column += c) : d ? (a.columnRelative = !0, a.column -= c) : e ? (a.rowRelative = !0, a.columnRelative = !1, a.row -= b, a.column += c) : (a.columnRelative = !0, a.column -= c)
                },
                Kka: function() {
                    var a, b = this.kj,
                        c = b.Cw;
                    c && (a = c.qo, a && c.Cia(a) && c.Jka())
                }
            })
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a, b = c(87),
                d = c(159),
                e = void 0,
                f = b.Commands,
                g = b.kf,
                h = d.C2,
                i = d.L0,
                j = d.K0,
                k = c(26),
                l = k.j.Fa;

            function m(a) {
                var b, c = a.Cw,
                    d = a.mm;
                return b = c.MH ? d.E2 : d.E2 = {
                    anchorRow: a.Jl,
                    anchorCol: a.Kl,
                    leadingRow: a.Qr,
                    leadingCol: a.Rr
                }
            }
            function n(a, b, c, d, e) {
                var f, i, j, k, n, o, p, q, r, s, t, u, v = a.Cw,
                    w = a.parent,
                    x = w && w.options;
                if (v && v.M0() && x && x.allowUserEditFormula && x.enableFormulaTextbox) {
                    switch (f = m(a), i = f.anchorRow, j = f.anchorCol, k = f.leadingRow, n = f.leadingCol, l(d) && (d = i), l(e) && (e = j), o = a.mm, b) {
                        case 3:
                            t = a.iy(d, e, c, k);
                            break;
                        case 4:
                            t = a.hy(d, e, c, k);
                            break;
                        case 1:
                            t = a.HJ(d, e, c, n);
                            break;
                        case 2:
                            t = a.LJ(d, e, c, n);
                            break;
                        case 5:
                            t = a.OJ();
                            break;
                        case 6:
                            t = a.NJ()
                    }
                    t && (p = t.row, q = t.col, r = t.leadingCellRow ? t.leadingCellRow : p, s = t.leadingCellCol ? t.leadingCellCol : q, a.IJ(p, q) && (f.anchorRow = p, f.anchorCol = q, f.leadingRow = r, f.leadingCol = s, u = h(o.kj, g(p, q, 1, 1)), u && v.v1(u, !1, !0), p >= 0 && q >= 0 && a.Yq(p, q)))
                }
            }
            function o(b, c) {
                if (b) {
                    if (2 === b.Px) return !1;
                    var d = b.Cw;
                    return d && d.M0() ? (n(b, c, !1), !0) : (d && (b = a.O2(b)), b.yx(c, !1), !0)
                }
                return !1
            }
            function p(b, c, d, e) {
                if (b) {
                    if (2 === b.Px) return !1;
                    var f = b.Cw;
                    return f && f.M0() ? (n(b, c, !1, d, e), !0) : (f && (b = a.O2(b)), b.yx(c, !1, d, e), !0)
                }
                return !1
            }
            function q(a, b, c) {
                var d, e, f, j, k, l, n, o, p = a.Cw,
                    q = a.parent,
                    r = q && q.options;
                p && p.M0() && r && r.allowUserEditFormula && r.enableFormulaTextbox && (d = a.mm, e = m(a), f = e.anchorRow, j = e.anchorCol, p.MH ? (l = p.m1(), k = i(a, l.text)) : k = g(f, j, 1, 1), k && (n = a.UJ(k, b, c, f, j), o = h(d.kj, n), o && p.v1(o, !0, !1)))
            }
            function r(b, c, d) {
                if (b) {
                    if (2 === b.Px) return !1;
                    var e = b.Cw;
                    return e && e.M0() ? (q(b, c, d), !0) : (e && (b = a.O2(b)), !! b.endEdit() && (b.Sx(c, d), !0))
                }
                return !1
            }
            f.Ox = o, f.Qx = p, f.Rx = r, a = function() {
                function a() {}
                return a.fv = function(b) {
                    return a.O2(b)
                }, a.Xx = function(b) {
                    return a.O2(b)
                }, a.Yx = function(b) {
                    return a.O2(b)
                }, a.O2 = function(b) {
                    var c = b,
                        e = d.G0.H0;
                    return e && e._text && (c = e.kj, a.G2(c)), c
                }, a.G2 = function(a, b) {
                    var c, e;
                    void 0 === b && (b = !0), c = a.parent, e = d.G0.H0, e && e._text && c.hw(a, b)
                }, a.Zx = function(b, c, d) {
                    var e, f, i = !1,
                        j = b.Cw;
                    return j && j.M0() ? (e = m(b), e.anchorRow = c, e.leadingRow = c, f = h(b, g(e.anchorRow, e.anchorCol, 1, 1)), f && j.v1(f, !1, !0), b.mq(d), i = !0) : j && (b = a.O2(b)), {
                        sheet: b,
                        r: i
                    }
                }, a._x = function(b, c, d) {
                    var e, f, i = !1,
                        j = b.Cw;
                    return j && j.M0() ? (e = m(b), e.anchorRow = c, e.leadingRow = c, f = h(b, g(e.anchorRow, e.anchorCol, 1, 1)), f && j.v1(f, !1, !0), b.mq(d), i = !0) : j && (b = a.O2(b)), {
                        sheet: b,
                        r: i
                    }
                }, a.ay = function(b) {
                    var c = !1,
                        d = b.Cw,
                        e = b.Jl,
                        f = b.Kl;
                    return d && d.M0() ? (d.MH || (b.mm.E2 = {
                        anchorRow: e,
                        anchorCol: f,
                        leadingRow: b.Qr,
                        leadingCol: b.Rr
                    }), n(b, 5, !1, e, f), c = !0) : d && (b = a.O2(b)), {
                        sheet: b,
                        r: c
                    }
                }, a.by = function(b) {
                    var c = !1,
                        d = b.Cw,
                        e = b.Jl,
                        f = b.Kl;
                    return d && d.M0() ? (d.MH || (b.mm.E2 = {
                        anchorRow: e,
                        anchorCol: f,
                        leadingRow: b.Qr,
                        leadingCol: b.Rr
                    }), n(b, 6, !1, e, f), c = !0) : d && (b = a.O2(b)), {
                        sheet: b,
                        r: c
                    }
                }, a.ey = function(b) {
                    return a.O2(b)
                }, a.gy = function(b) {
                    return a.O2(b)
                }, a.jy = function(b) {
                    var c, f, g = d.G0.H0;
                    d && g && g._text && (b = g.kj, c = g.nT, f = g.Mk, a.G2(b, !1), j(b), b.Sr(c, f, e, e, 1))
                }, a
            }(), b.Commands.Wx = a
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(87),
                d = b.GC$,
                e = c(159),
                f = null,
                g = void 0,
                h = function() {
                    function a() {
                        var a = this;
                        a.nT = -1, a.Mk = -1, a._text = "", a.Q2 = -1, a.kj = null, a.MH = !1, a.R2 = -1, a.I0 = null, a.OC = null, a.f1 = null
                    }
                    return a.prototype = {
                        constructor: a,
                        $b: function() {
                            var a = this;
                            a.S2(), a.nT = -1, a.Mk = -1, a._text = "", a.Q2 = -1, a.MH = !1, a.R2 = -1, a.kj = null, a.OC = null, a.f1 = null
                        },
                        S2: function() {
                            var a, b, c = this;
                            c.kj.Js || (a = c.kj.getCellType(c.nT, c.Mk), b = {
                                sheet: c.kj,
                                row: c.nT,
                                col: c.Mk,
                                sheetArea: 3
                            }, c.I0 && c.I0.firstChild && a.deactivateEditor(c.I0.firstChild.firstChild, b)), d(c.I0).remove(), c.I0 = null
                        },
                        T2: function(a) {
                            var b = this,
                                c = a.Cw;
                            c && (b._text = c.text(), b.nT = a.getActiveRowIndex(), b.Mk = a.getActiveColumnIndex(), b.Q2 = c.caret(), b.MH = c.MH, b.R2 = c.C1(), b.V4 = c.V4, b.C5 = c.C5, b.Nfa = c.Nfa, b.kj = a, b.OC = a.parent, b.f1 = a.mm.bG())
                        },
                        VF: function(a) {
                            var b = this;
                            a.Cw && (b._text = a.Cw.text(), b.Q2 = a.Cw.caret(), b.MH = a.Cw.MH, b.R2 = a.Cw.C1())
                        },
                        U2: function(a) {
                            var b = this,
                                c = a.Cw;
                            c && (c.V4 = b.V4, c.C5 = b.C5, c.Nfa = b.Nfa, c.text(b._text), c.caret(b.Q2), b.MH && (c.B1(), c.C1(b.R2)))
                        },
                        V2: function(a) {
                            var b, c = a.oldSheet,
                                d = this,
                                e = c.Cw;
                            if (e) if (e.close(), (!d.kj || d.kj.Js) && e.M0() || d.C5 !== e.C5) {
                                d.T2(c), b = c.getValue(c.Jl, c.Kl, 3), c.suspendEvent();
                                try {
                                    if (!c.endEdit(!0)) return
                                } finally {
                                    c.resumeEvent()
                                }
                                c.setValue(c.Jl, c.Kl, b, 3, !0), c.Px = 1, a.needTriggerSheetChange = !1
                            } else d._text && (d.VF(c), e.destroy(), c.Cw = f, a.needTriggerSheetChange = !1)
                        },
                        W2: function(a) {
                            var b, c = a.oldSheet,
                                d = a.newSheet,
                                f = this;
                            d.Js || (f.I0 && "" === f._text && (c.GJ(), f.$b()), f._text && f.kj === d ? (d.Px = 0, d.Sr(f.nT, f.Mk, g, g, 0), d.suspendEvent(), f.V4 ? (b = e.W4(d.parent.qo), e.J0(d, b), d.Px = 2, d.yl.uH()) : d.startEdit(!1), d.resumeEvent(), f.U2(d), f.VK(d, f.nT, f.Mk), c.GJ(), f.$b()) : f._text && !f.I0 ? (d.Px = 1, c.Px = 1, f.X2(d), d.EJ()) : f._text && f.kj !== d && (d.Px = 1, c.Px = 1, f.X2(d), c.GJ(), d.EJ()))
                        },
                        X2: function(a) {
                            var b, c, g, h, i, j, k, l, m, n = this,
                                o = n.kj;
                            o.Js || (b = n.nT, c = n.Mk, g = o.getCellType(b, c), h = {
                                sheet: o,
                                row: b,
                                col: c,
                                sheetArea: 3,
                                canvasOffset: this.f1
                            }, i = g.isImeAware(h), i && (a.Px = 1, j = g.a5(h), n.I0 && n.S2(), n.I0 = j, d(j).css("position", "absolute"), k = o.getCellRect(b, c), d(j).attr("id", "across"), l = o.getActualStyle(b, c), g.d5(j, l, k, h), m = n.OC && n.OC.getHost() || document.body, m.insertBefore(j, f), n.V4 && d(j).css({
                                display: "none"
                            }), e.J0(a, g.getEditingElement()), j.firstChild && !n.V4 && g.focus(j.firstChild.firstChild), n.U2(a), g.g5(j, l, k, h)))
                        },
                        VK: function(a, b, c) {
                            var d, e = a.getCellType(b, c),
                                f = a.BF,
                                g = a.am(),
                                h = a.getActualStyle(b, c),
                                i = a.getCellRect(b, c);
                            i && i.width > 0 && i.height > 0 && i.x >= g.kt && i.y >= g.nt && i.x + i.width <= g.lt + g.js && i.y + i.height <= g.ot + g.gs && (d = {
                                sheet: a,
                                row: b,
                                col: c,
                                sheetArea: 3
                            }, f && f.parentNode && e.g5(f.parentNode.parentNode, h, i, d, !0))
                        }
                    }, a
                }(),
                i = function() {
                    function a() {}
                    return a.Q0 = function(a, b) {
                        e.G0.H0 || (e.G0.H0 = new h), e.G0.H0.V2(b)
                    }, a.R0 = function(a, b) {
                        e.G0.H0.W2(b)
                    }, a
                }();
            e.G0 = i, a.exports = e
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a = c(87),
                b = c(26),
                d = c(159),
                e = a.GC$,
                f = e.extend,
                g = b.u,
                h = d.L0;
            f(a.oJ.prototype, {
                uH: function() {
                    var a, b, c = this,
                        d = c.kj;
                    d.Xq > 0 || (a = d.am(), b = c.bm(), c.Mx(a.x, a.y, a.width, a.height), c.Pw(b))
                }
            }), a.Worksheet.$n("formulatextboxrender", {
                paintAdornment: function(a) {
                    var b, c, d, e = this,
                        f = a.ctx,
                        g = a.clipRect,
                        h = e.yl,
                        j = e.am(),
                        k = e.mm._oa();
                    if (k) for (c = 0; c <= 2; c++) for (d = 0; d <= 2; d++) b = j.Ft(c, d), b && 0 !== b.width && 0 !== b.height && i(h, f, c, d, g, k)
                }
            });

            function i(a, c, e, f, i, j) {
                var k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L = a.kj,
                    M = L.mm,
                    N = j && j.l1(),
                    O = N && N.length;
                if (!(O <= 0) && (k = a.VI(e, f, i))) {
                    for (c.save(), c.rect(k.x, k.y, k.width, k.height), c.clip(), c.beginPath(), l = [], m = M.isFormulaRangeHoving, n = M.tH, o = M.FG, p = M.K2, q = M.HG, r = M.L2, x = 0; x < O; x++) if (s = N[x], t = s.text, u = s.ranges && s.ranges.length > 0 ? s.ranges : [h(L, t)]) {
                        if (y = d.G0.H0, y && y.kj) if (g.Bb(t, "!")) {
                            if (z = g.Ib(t, "!"), L.name() !== z && "'" + L.name() + "'" !== z) continue
                        } else if (A = g.Ib(t, "["), B = L.tables, !(L.getCustomNames()[A] || B && B.findByName(A))) continue;
                        for (v = a.XI(e, f, u, k), C = 0; C < v.length; C++) D = v[C], D && D.width > 0 && D.height > 0 && (w = j.o1(x), j.t1(s) ? (m && n.paramRange.index === x && (c.beginPath(), c.lineWidth = 2, c.strokeStyle = w, c.rect(D.x + 1, D.y + 1, D.width - 3, D.height - 3), c.stroke()), a.fJ(c, D, w)) : m && n.paramRange.index === x || o && p.paramRange.index === x || q && r.paramRange.index === x ? (c.beginPath(), c.lineWidth = 2, c.strokeStyle = w, c.rect(D.x + 1, D.y + 1, D.width - 3, D.height - 3), c.stroke()) : (c.beginPath(), c.lineWidth = 2, c.strokeStyle = w, c.rect(D.x, D.y, D.width - 1, D.height - 1), c.stroke()), j.n1(s) && (E = b.pc.ec(w), E.a = .1, c.beginPath(), c.fillStyle = b.pc.bc(E), c.fillRect(D.x + 1, D.y + 1, D.width - 3, D.height - 3)), l.push({
                            rect: D,
                            color: w,
                            allowDrag: s.allowDrag
                        }))
                    }
                    if (l.length > 0 && j.UQa) for (F = l.length, x = 0; x < F; x++) D = l[x].rect, w = l[x].color, G = 5, H = D.x - 2, I = D.x + D.width + 1 - G, J = D.y - 2, K = D.y + D.height + 1 - G, l[x].allowDrag !== !1 && (y = d.G0.H0, y && y._text || (c.beginPath(), c.fillStyle = w, c.fillRect(H, J, G, G), c.fillRect(I, J, G, G), c.fillRect(H, K, G, G), c.fillRect(I, K, G, G)));
                    c.beginPath(), c.restore()
                }
            }
        }()
}, function(a, b) {
    !
        function() {
            "use strict";

            function b(a, b) {
                return {
                    name: a,
                    description: b
                }
            }
            a.exports = {
                Fbx_Summary: "Summary",
                Fbx_TableName_Description: "Table name for ",
                Fbx_CustomName_Description: "Custom name for ",
                B2: [b("#All", "Returns the entire contents of the table, or specified table columns including column headers, data and total rows."), b("#Data", "Returns the data cells of the table or specified table columns."), b("#Headers", "Returns the columns headers for the table, or specified table columns."), b("#Totals", "Returns the total rows for the table or specified table columns."), b("@", "This row.")]
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(166);
            c(167), a.exports = b
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f, g, h, i = c(87),
                j = c(26),
                k = c(167).commands,
                l = c(167).setCheckStatus,
                m = j.k,
                n = m.ac,
                o = i.GC$,
                p = o.each,
                q = o.isEmptyObject,
                r = j.j.Fa,
                s = 5,
                t = 6,
                u = 6,
                v = 3,
                w = 16,
                x = 16,
                y = 16,
                z = 16,
                A = void 0,
                B = {
                    columnIndex: A,
                    showCheckBox: !1,
                    showImage: !1,
                    images: A,
                    showIndicator: !0,
                    expandIndicator: A,
                    collapseIndicator: A,
                    maxLevel: 10
                };

            function C(a) {
                return a.expandIndicator || a.collapseIndicator
            }
            function D(a, b) {
                return a.outlineColumn && a.outlineColumn.options() && a.outlineColumn.options().columnIndex === b
            }
            function E(a, b, c) {
                var d = b.x + c.x,
                    e = c.y + c.height / 2 - b.height / 2,
                    f = b.height,
                    g = b.width;
                c.x + c.width < d + g || (a.save(), a.beginPath(), a.strokeStyle = "black", a.strokeRect(d, e, g, f), a.fillStyle = "white", a.fillRect(d, e, g, f), 3 === b.checkStatus ? (a.beginPath(), a.fillStyle = "black", a.rect(d + g / 5, e + f / 5, g - .4 * g, f - .4 * f), a.fill()) : b.checkStatus !== !0 && 1 !== b.checkStatus || (a.beginPath(), a.lineWidth = g / 5, a.moveTo(d + g / 6, e + f / 2), a.lineTo(d + 2 * g / 5, e + 5 / 7 * f), a.lineTo(d + 5 / 6 * g, e + f / 6), a.stroke()), a.restore())
            }
            function F(a, b, c, d) {
                var e = b.collapsed,
                    f = b.x + c.x,
                    g = c.y + c.height / 2 - b.height / 2,
                    h = b.height,
                    i = b.width;
                c.x + c.width < f + i || (e ? b.expandIndicator ? G(a, b.expandIndicator, b, c, d) : (a.save(), a.fillStyle = "black", a.beginPath(), a.moveTo(f, g), a.lineTo(f, g + h), a.lineTo(f + i, g + h / 2), a.fill(), a.restore()) : b.collapseIndicator ? G(a, b.collapseIndicator, b, c, d) : (a.save(), a.fillStyle = "black", a.beginPath(), a.moveTo(f, g + h), a.lineTo(f + i, g + h), a.lineTo(f + i, g), a.fill(), a.restore()))
            }
            function G(a, b, c, d, e) {
                var f, g = c.x + d.x,
                    h = d.y + d.height / 2 - c.height / 2,
                    i = c.width,
                    j = c.height;
                if (!(d.x + d.width < g + i) && b && "none" !== b && e) try {
                    e.ko(b) ? (f = e.lo(b), a.drawImage(f, g, h, i, j)) : e.fo(b)
                } catch (a) {}
            }
            function H(a, b, c) {
                var d, e = a.rowOutlines.getLevel(b);
                r(c) && (c = !a.rowOutlines.getCollapsed(b)), d = {
                    cmd: "expandRowOutline",
                    collapsed: c,
                    index: b,
                    level: e + 1,
                    sheetName: a.name()
                }, a.wu().execute(d)
            }
            function I(a, b, c, d) {
                var e, f;
                r(d) && (e = a.outlineColumn.getCheckStatus(b), d = "number" == typeof e ? 1 === e ? 2 : 1 : !e), f = {
                    cmd: "updateOutlineColumnCheckStatus",
                    row: b,
                    col: c,
                    status: d,
                    sheetName: a.name()
                }, a.wu().execute(f)
            }
            function J(a, b, c) {
                var d, e, f, g = a.getLevel(b);
                if (c !== g + 1) for (d = c - (g + 1), e = 0, f = Math.abs(d); e < f; e++) d > 0 ? a.group(b, 1) : a.ungroupRange(b, 1)
            }
            function K(a, b, c, d, e, f, g) {
                var h, i, j, k, l, m, n, o, p = L(c, "showIndicator");
                p ? (h = a.zoom(), i = a.getRowCount(), j = !! a.rowOutlines.isCollapsed(b + 1), k = s * h, l = t * h, m = null, n = null, c.expandIndicator && (m = c.expandIndicator, j && (k = y * h, l = z * h)), c.collapseIndicator && (n = c.collapseIndicator, j || (k = y * h, l = z * h)), b < i - 1 && (o = a.getStyle(b + 1, d), o && o.textIndent > e ? g.indicator = {
                    x: f.value + v * h,
                    y: -l / 2,
                    width: k,
                    height: l,
                    collapsed: j,
                    collapseIndicator: n,
                    expandIndicator: m
                } : delete g.indicator), f.value += 2 * v * h + k) : delete g.indicator
            }
            function L(a, b) {
                return r(a[b]) ? B[b] : a[b]
            }
            function M(a, b, c, d, e, f) {
                var g, h, i = r(c.showCheckBox) ? B.showCheckBox : c.showCheckBox;
                i ? (g = !r(f.checkBox) && 1 !== f.checkBox && f.checkBox.checkStatus, h = a.zoom(), f.checkBox = {
                    x: e.value + v * h,
                    y: -u * h,
                    width: 2 * u * h,
                    height: 2 * u * h,
                    checkStatus: g
                }, e.value += 2 * v * h + 2 * u * h) : delete f.checkBox
            }
            function N(a, b, c, d, e) {
                var f, g, h, i, j, k = r(c.showImage) ? B.showImage : c.showImage;
                k ? (f = c.images, g = a.zoom(), f && f.length && (h = b > f.length - 1 ? f[f.length - 1] : f[b], i = d.value + v * g, j = 0, e.images = {
                    image: h,
                    x: i,
                    y: j,
                    width: w * g,
                    height: x * g
                }, d.value += 2 * v * g + w * g)) : delete e.images
            }
            function O(a, b, c) {
                var d, e, f, g, h = a.outlineColumn.options(),
                    i = h && h.columnIndex;
                if (!r(i)) return d = {
                    value: 0
                }, e = 0, f = a.getStyle(b, i), f && f.textIndent && (e = f.textIndent), 0 !== b && (g = a.rowOutlines.getLevel(b - 1), e - g >= 3 && (e = g + 2)), d.value += 8 * e, J(a.rowOutlines, b, e), K(a, b, h, i, e, d, c), M(a, b, h, i, d, c), N(a, e, h, d, c), c.cellContent = {
                    left: d.value,
                    x: d.value,
                    y: 0,
                    width: -d.value,
                    height: 0
                }, c
            }
            b = function(a) {
                this.kj = a, this.outlineColumnOptions = {}, this.$e = 0
            }, b.prototype = {
                LRa: function(a, b) {
                    return this.ZQa(b) ? this.Kia.QR[a].cellContent.left : null
                },
                options: function(a) {
                    var b = this,
                        c = b.YQa;
                    return n(arguments) ? (b.YQa = a, b.refresh(), b) : c
                },
                refresh: function() {
                    var a = this.kj;
                    r(this.YQa) || r(this.YQa.columnIndex) || 0 === this.$e && (a.suspendPaint(), a.outlineColumn.Kia.updateModel(), a.resumePaint())
                },
                setCheckStatus: function(a, b) {
                    var c = this.YQa.columnIndex;
                    r(c) || I(this.kj, a, c, b)
                },
                getCheckStatus: function(a) {
                    var b, c;
                    if (n(arguments)) return this.kj.outlineColumn.Kia.getCheckStatus(a);
                    for (b = [], c = this.kj.getRowCount(), a = 0; a < c; a++) b[a] = this.kj.outlineColumn.Kia.getCheckStatus(a);
                    return b
                },
                setCollapsed: function(a, b) {
                    H(this.kj, a, b)
                },
                getCollapsed: function(a) {
                    var b, c;
                    if (n(arguments)) return this.kj.outlineColumn.Kia.getCollapsed(a);
                    for (b = [], c = this.kj.getRowCount(), a = 0; a < c; a++) b[a] = this.kj.outlineColumn.Kia.getCollapsed(a);
                    return b
                },
                XQa: function(a) {
                    return this.YQa && this.YQa.columnIndex === a
                },
                ZQa: function() {
                    return this.YQa && !r(this.YQa.columnIndex)
                },
                Lia: function() {
                    this.$e++
                },
                Mia: function() {
                    this.$e > 0 && this.$e--, 0 === this.$e && this.refresh()
                },
                Nia: function(a, b) {
                    this.kj.outlineColumn.Kia.insertRows(a, b)
                },
                Oia: function() {
                    return B
                },
                Pia: function() {
                    return {
                        TRIANGLE_HEIGHT: s,
                        TRIANGLE_BASE: t,
                        CHECKBOX_RADIUS: u,
                        GAP: v,
                        IMAGE_WIDTH: w,
                        IMAGE_HEIGHT: x,
                        INDICATOR_IMAGE_WIDTH: y,
                        INDICATOR_IMAGE_HEIGHT: z
                    }
                },
                Gka: function(a) {
                    var b, c, d = this;
                    for (b in a) a.hasOwnProperty(b) && (c = d.Kia.QR[b] = d.Kia.QR[b] || {}, c.checkBox = {
                        checkStatus: a[b].checked
                    })
                },
                CXa: function(a, b) {
                    var c = this.YQa.columnIndex;
                    r(c) || l(this.kj, a, c, b)
                },
                QZa: function() {
                    return this.Kia.QR
                }
            }, d = function() {
                function a(a) {
                    var b = this;
                    b.kj = a, b.QR = {}
                }
                var b = {
                    updateIndicatorCollapsed: function(a, b) {
                        var c = this;
                        r(c.QR[a]) || r(c.QR[a].indicator) || (c.QR[a].indicator.collapsed = b)
                    },
                    updateCheckStatus: function(a, b) {
                        var c = this;
                        c.JVa(a), r(c.QR[a]) || (c.QR[a].checkBox.checkStatus = b)
                    },
                    getCheckStatus: function(a) {
                        var b = this;
                        return r(b.QR[a]) || r(b.QR[a].checkBox) ? null : b.QR[a].checkBox.checkStatus
                    },
                    getCollapsed: function(a) {
                        var b = this;
                        return !r(b.QR[a]) && !r(b.QR[a].indicator) && b.QR[a].indicator.collapsed
                    },
                    updateModel: function() {
                        var a, b = this,
                            c = b.kj,
                            d = c.getRowCount();
                        for (c.rowOutlines.direction(0), a = 0; a < d; a++) b.QR[a] = b.QR[a] || {}, O(c, a, b.QR[a])
                    },
                    insertRows: function(a, b) {
                        var c, d, e, f = this.kj,
                            g = f.outlineColumn.options();
                        r(g) || (c = g.columnIndex, r(c) || (d = f.getStyle(a - 1, c), e = 0, d && d.textIndent && (e = d.textIndent), f.getRange(a, c, b, 1).textIndent(e)))
                    },
                    KVa: function(a, b) {
                        var c, d = this.QR[b];
                        d && !a[b] && (c = d.checkBox, a[b] = {
                            checked: c && c.checkStatus
                        })
                    },
                    LVa: function(a) {
                        var b, c = this,
                            d = this.QR;
                        for (b in d) d.hasOwnProperty(b) && c.KVa(a, b)
                    },
                    MVa: function(a) {
                        var b, c = this.QR;
                        for (b in a) r(a[b].checked) || (c[b].checkBox.checkStatus = a[b].checked)
                    },
                    NVa: function() {
                        var a = this.kj.ITa.zTa;
                        return a ? (a.OVa || (a.OVa = {
                            items: {}
                        }), a.OVa) : A
                    },
                    JVa: function(a) {
                        var b = this,
                            c = b.NVa();
                        c && !c.all && (r(a) ? (c.all = !0, b.LVa(c.items)) : b.KVa(c.items, a))
                    },
                    PVa: function(a) {
                        this.MVa(a.items)
                    }
                };
                return o.extend(a.prototype, b), a
            }(), e = i.lUa, o.extend(e.prototype, {
                PVa: function(a) {
                    var b = this,
                        c = b.QVa.Kia;
                    c.updateModel(), a && c.PVa(a), b.kj.$p()
                }
            }), e.$n("outlineColumn", {
                init: function() {
                    var a = this,
                        c = a.kj;
                    a.QVa = new b(c), a.QVa.Kia = new d(c)
                },
                undo: function(a) {
                    var b = a.OVa;
                    b && this.PVa(b)
                }
            }), f = {
                init: function() {
                    var a = this;
                    a.outlineColumn = a.ITa.QVa
                },
                toJson: function(a) {
                    var b, c, d, e, f, g, h;

                    function i(a, b) {
                        var c = B[a];
                        return c === b
                    }
                    if (b = this.outlineColumn.YQa, c = this.outlineColumn.Kia.QR, !r(b)) {
                        if (d = {}, p(B, function(a) {
                                e = b[a], r(e) || i(a, e) || (d[a] = e)
                            }), f = {}, b.showCheckBox) for (g in c) c.hasOwnProperty(g) && (h = c[g].checkBox.checkStatus, h && (f[g] = {
                            checked: h
                        }));
                        q(f) || (d.data = f), a.outlineColumnOptions = d
                    }
                },
                fromJson: function(a) {
                    var b, c, d, e = a.outlineColumnOptions,
                        f = this;
                    if (e) {
                        if (e.kj = f, b = e.data) {
                            c = {};
                            for (d in e)"data" !== d && (c[d] = e[d]);
                            this.outlineColumn.Gka(b)
                        }
                        this.outlineColumn.options(r(c) ? e : c), this.outlineColumn.refresh()
                    }
                },
                onLayoutChanged: function(a) {
                    var b, c, d = this,
                        e = d.outlineColumn,
                        f = a.changeType,
                        g = a.rowCount,
                        h = a.row;
                    if ("addRows" === f) e.Kia.JVa(), e.Nia(h, g), e.refresh();
                    else if ("deleteRows" === f) e.Kia.JVa(), e.refresh();
                    else if ("zoomSheet" === f) e.refresh();
                    else if ("invalidateLayout" === f && e.Kia.QR && !q(e.Kia.QR) && d.rowOutlines.items && !q(d.rowOutlines.items)) {
                        b = d.rowOutlines.items;
                        for (c in b) b.hasOwnProperty(c) && e.Kia.updateIndicatorCollapsed(parseInt(c), d.rowOutlines.isCollapsed(parseInt(c) + 1))
                    }
                },
                sortRangeChanged: function(a) {
                    for (var b = this.outlineColumn, c = a.column, d = a.columnCount, e = c; b.XQa(e) && e <= c + d;) b.refresh(), e += 1
                }
            }, i.Worksheet.$n("outlineColumn", f), g = {
                paintCellPadding: function(a) {
                    var b, c = a.options.rect,
                        d = a.options.context.sheet,
                        e = a.options.context,
                        f = e.row,
                        g = e.col,
                        h = a.ctx;
                    D(d, g) && c.width > 0 && c.height > 0 && (b = d.outlineColumn.Kia.QR[f], b && (h.save(), b.indicator && F(h, b.indicator, c, e.imageLoader), b.checkBox && E(h, b.checkBox, c), b.images && G(h, b.images.image, b.images, c, e.imageLoader), h.restore(), b.cellContent && (c.x += b.cellContent.left, c.width -= b.cellContent.left)))
                },
                getCellPaddingRect: function(a) {
                    var b, c = a.options.rect,
                        d = a.options.context.sheet,
                        e = a.options.context,
                        f = e.row,
                        g = e.col;
                    D(d, g) && c.width > 0 && c.height > 0 && (b = d.outlineColumn.Kia.QR[f], b && b.cellContent && (c.x += b.cellContent.left, c.width -= b.cellContent.left))
                },
                getCellPaddingHitInfo: function(a) {
                    var b, c, d, e, f = a.context.sheet,
                        g = a.context.col,
                        h = a.context.row,
                        i = a.x,
                        j = a.y,
                        k = a.cellRect,
                        l = f.outlineColumn;
                    if (a.paddingHitInfo = null, l && l.YQa) {
                        for (b = l.Kia.QR[h], c = l.YQa.columnIndex; g > c;) g--, k.x -= f.getColumnWidth(g);
                        b && (b.indicator && (d = b.indicator.x, e = b.indicator.x + k.x, i >= e && i < e + b.indicator.width && (a.paddingHitInfo = {
                            x: i,
                            y: j,
                            row: h,
                            col: g,
                            outlineColumnHitInfo: {
                                indicator: !0
                            }
                        })), b.checkBox && (d || (d = b.checkBox.x), e = b.checkBox.x + k.x, i >= e && i < e + b.checkBox.width && (a.paddingHitInfo = {
                            x: i,
                            y: j,
                            row: h,
                            col: g,
                            outlineColumnHitInfo: {
                                checkBox: !0
                            }
                        })), b.images && (d || (d = b.images.x), e = b.images.x + k.x, i >= e && i < e + b.images.width && (a.paddingHitInfo = {
                            x: i,
                            y: j,
                            row: h,
                            col: g,
                            outlineColumnHitInfo: {
                                image: !0
                            }
                        })), d && i >= k.x && i < k.x + d && (a.paddingHitInfo = {
                            x: i,
                            y: j,
                            row: h,
                            col: g,
                            outlineColumnHitInfo: {
                                blank: !0
                            }
                        }))
                    }
                },
                processMouseDownOnCellPadding: function(a) {
                    var b = a.sheet,
                        c = a.row,
                        d = a.col,
                        e = a.outlineColumnHitInfo;
                    r(e) || (e.indicator ? H(b, c) : e.checkBox ? I(b, c, d) : e.image || e.blank)
                },
                getOutlineColumnOffset: function(a) {
                    var b, c = a.context.sheet,
                        d = a.context.col;
                    D(c, d) && (b = c.outlineColumn.options(), L(b, "showIndicator") && (a.value += v, C(b) ? a.value += y : a.value += s, a.value += v), L(b, "showCheckBox") && (a.value += v, a.value += 2 * u, a.value += v), L(b, "showImage") && (a.value += v, a.value += w, a.value += v))
                }
            }, i.CellTypes.Base.$n("outlineColumn", g), h = {
                init: function() {
                    k.$Qa(this.commandManager())
                }
            }, i.Workbook.$n("outlineColumn", h), a.exports = {
                OutlineColumn: b
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b, d, e, f = c(87),
                g = c(26),
                h = f.GC$,
                i = f.Commands,
                j = i.ActionBase,
                k = g.j.Fa,
                l = "increaseCellIndent",
                m = "decreaseCellIndent",
                n = "updateOutlineColumnCheckStatus",
                o = "outlineColumnCheckStatus",
                p = i.h4;

            function q(a, b, c, d) {
                return r(a, b, c, d)
            }
            function r(a, b, c, d) {
                var e, f, g, h, i, j, l, m, n, o, p = k(d) ? a.getActiveColumnIndex() : d;
                if (!a.outlineColumn.XQa(p)) return null;
                if (e = b ? 1 : -1, f = a.getActiveRowIndex(), g = a.getSelections()[0].rowCount, i = !0, k(c)) for (c = {}, i = !1, h = f; h < g + f; h++) 0 !== h && (j = a.rowOutlines.getLevel(h), b && (l = a.rowOutlines.getLevel(h - 1), j > l && !c[h - 1]) || (m = j + e, n = a.outlineColumn.options(), o = k(n.maxLevel) ? a.outlineColumn.Oia().maxLevel : n.maxLevel, o && m + 1 > o || m + 1 < 0 || (c[h] = {
                    row: h,
                    original: j + 1,
                    current: m + 1
                }, i = !0)));
                return i ? c : null
            }
            function s(a, b, c, d) {
                var e, f, g, h = r(a, b, c, d);
                if (!h) return null;
                e = k(d) ? a.getActiveColumnIndex() : d, a.outlineColumn.Lia(), a.suspendPaint();
                for (f in h) Object.prototype.hasOwnProperty.call(h, f) && (g = h[f], a.getCell(g.row, e).textIndent(g.current));
                a.resumePaint(), a.outlineColumn.Mia()
            }
            function t(a, b, c, d) {
                var e, f, g, h, i, j = 0,
                    k = 0,
                    l = a.rowOutlines.getLevel(b);
                if (a.outlineColumn.Kia.updateCheckStatus(b, d), f = b <= a.getRowCount() - 2 ? a.rowOutlines.find(b + 1, l + 1) : null, null !== f && null !== d) for (g = f.start; g < f.end + 1; g++) a.outlineColumn.Kia.updateCheckStatus(g, d);
                for (f = a.rowOutlines.find(b, l); null !== f && null !== f.parent;) {
                    if (f.start > 0) {
                        for (j = f.start - 1, k = a.rowOutlines.getLevel(j), a.outlineColumn.Kia.updateCheckStatus(j, d), e = a.rowOutlines.find(j + 1, k + 1), g = e.start; g < e.end + 1; g++) if (h = a.outlineColumn.Kia.QR[g].checkBox.checkStatus, h !== d) {
                            i = "number" == typeof h && "number" == typeof d && 3, a.outlineColumn.Kia.updateCheckStatus(j, i);
                            break
                        }
                        g === e.end + 1 && d === !0 && a.outlineColumn.Kia.updateCheckStatus(j, !0)
                    }
                    f = f.parent
                }
            }
            b = function(a) {
                h.inherit(b, a);

                function b(b, c) {
                    a.call(this), this.kj = b, this.VQ = c
                }
                var c = {
                    canExecute: function() {
                        return q(this.kj, !0, this.VQ.changingRows, this.VQ.changingColumns)
                    },
                    canUndo: function() {
                        return !0
                    },
                    execute: function() {
                        var a, b;
                        return !!this.canExecute() && (a = this.kj, a.ITa.startTransaction(), a.outlineColumn.Kia.JVa(), s(this.kj, !0, this.VQ.changingRows, this.VQ.changingColumns), b = i.bWa(a.name()), this.VQ[b] = a.ITa.endTransaction(), !0)
                    },
                    undo: function() {
                        var a = this,
                            b = a.kj,
                            c = i.bWa(b.name()),
                            d = a.VQ[c];
                        return b.ITa.undo(d), !0
                    }
                };
                return h.extend(b.prototype, c), b
            }(j), d = function(a) {
                h.inherit(b, a);

                function b(b, c) {
                    a.call(this), this.kj = b, this.VQ = c
                }
                var c = {
                    canExecute: function() {
                        return q(this.kj, !1, this.VQ.changingRows, this.VQ.changingColumns)
                    },
                    canUndo: function() {
                        return !0
                    },
                    execute: function() {
                        var a, b;
                        return !!this.canExecute() && (a = this.kj, a.ITa.startTransaction(), a.outlineColumn.Kia.JVa(), s(a, !1, this.VQ.changingRows, this.VQ.changingColumns), b = i.bWa(a.name()), this.VQ[b] = a.ITa.endTransaction(), !0)
                    },
                    undo: function() {
                        var a = this,
                            b = a.kj,
                            c = i.bWa(b.name()),
                            d = a.VQ[c];
                        return b.ITa.undo(d), !0
                    }
                };
                return h.extend(b.prototype, c), b
            }(j), e = function(a) {
                h.inherit(b, a);

                function b(b, c) {
                    a.call(this), this.kj = b, this.VQ = c
                }
                var c = {
                    canExecute: function() {
                        return !0
                    },
                    canUndo: function() {
                        return !0
                    },
                    execute: function() {
                        var a, b = this,
                            c = b.kj,
                            d = b.VQ,
                            e = d.row,
                            f = d.col,
                            g = d.status;
                        return c.ITa.startTransaction(), t(c, e, f, g), c.outlineColumn.refresh(), a = i.bWa(c.name()), d[a] = c.ITa.endTransaction(), !0
                    },
                    undo: function() {
                        var a = this,
                            b = a.kj,
                            c = i.bWa(b.name()),
                            d = a.VQ[c];
                        return b.ITa.undo(d), b.outlineColumn.refresh(), !0
                    }
                };
                return h.extend(b.prototype, c), b
            }(j), i[l] = {
                canUndo: !0,
                execute: function(a, c, d) {
                    return c.cmd = l, p(a, b, c, d)
                }
            }, i[m] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return b.cmd = m, p(a, d, b, c)
                }
            }, i[n] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return p(a, e, b, c)
                }
            }, i.$Qa = function(a) {
                var b = f.Ul.sl(),
                    c = !b,
                    d = b;
                a.register(l, i[l], 221, c, !1, !0, d), a.register(m, i[m], 219, c, !1, !0, d), a.register(n, i[n])
            }, a.exports = {
                commands: i,
                outlineColumnCheckStatus: o,
                setCheckStatus: t
            }
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            c(169), c(170), c(171)
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var b = c(87),
                d = b.GC$,
                e = b.Commands,
                f = e.ActionBase,
                g = e.h4,
                h = "dragMerge",
                i = Math.max;

            function j(a, b) {
                return a.Tq(b)
            }
            d.inherit(k, f);

            function k(a, b) {
                var c = this;
                f.call(c), c.VQ = b, c.kj = a
            }
            d.extend(k.prototype, {
                canExecute: function() {
                    var a, b = this.kj,
                        c = this.VQ,
                        d = j(b, c.oldSelection),
                        e = j(b, c.newSelection);
                    if (d.equals(e)) {
                        if (a = b.getSpan(d.row, d.col), a && d.equals(a)) return !1;
                        if (1 === d.rowCount && 1 === d.colCount) return !1
                    }
                    return !0
                },
                canUndo: function() {
                    var a = e.bWa(this.kj.name()),
                        b = this.VQ[a];
                    return e.cWa(b)
                },
                undo: function() {
                    var a, b, c = this;
                    return !!c.canUndo() && (a = c.kj, c.Lz(a, !0), b = e.bWa(a.name()), a.ITa.undo(c.VQ[b]), c.Mz(a, !0), void 0)
                },
                execute: function() {
                    var a, b, c, d, f, g = this,
                        h = g.kj,
                        j = g.VQ,
                        k = j.oldSelection,
                        l = j.newSelection;
                    return !!g.canExecute() && (h.ITa.startTransaction(), g.Lz(h, !0), h.ITa.do("clearSpan", k.row, k.col, k.rowCount, k.colCount), a = l.row, b = l.col, c = l.rowCount, d = l.colCount, h.addSpan(a, b, c, d), h.setSelection(a, b, i(c, 1), i(d, 1)), g.Mz(h, !0), f = e.bWa(h.name()), j[f] = h.ITa.endTransaction(), void 0)
                }
            }), e[h] = {
                canUndo: !0,
                execute: function(a, b, c) {
                    return g(a, k, b, c)
                }
            }, e.dja = function(a) {
                a.register(h, e[h])
            }, a.exports = e
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a, b, d = c(87),
                e = d.GC$,
                f = c(169),
                g = "white",
                h = d.Rm,
                i = c(26),
                j = i.pc;

            function k(a) {
                var b = a.parent;
                return b && b.options.backColor || g
            }
            e.extend(d.oJ.prototype, {
                cja: function(a) {
                    var b = this,
                        c = b.kj,
                        d = c.mm,
                        e = c.Ix(),
                        f = c.cm(d.gka(e));
                    b.Wja(a, f)
                },
                Wja: function(a, b) {
                    var c, d, e, f, g, i, j, k, l = this,
                        m = l.kj;
                    a.save(), c = 4, d = 8, e = c / 2, f = d / 2, g = b.x, i = b.y, j = b.width, k = b.height, l.Xja = b, a.fillStyle = h.Om(m, m.getSelectionBorderColor()), a.beginPath(), a.rect(g + j - e, i + k / 2 - f, c, d), a.fill(), a.beginPath(), a.rect(g + j / 2 - f, i + k - e, d, c), a.fill(), a.restore()
                },
                hka: function(a, b) {
                    var c, d, e, f, g, i, l, m, n, o, p, q, r = a,
                        s = r.kj,
                        t = s.parent,
                        u = s.mm,
                        v = a.bm(),
                        w = 2,
                        x = w / 2;
                    t && t.options.allowUserDragMerge && u.$ia && (c = s.getActiveRowIndex(), d = s.getActiveColumnIndex(), e = s.getActualStyle(c, d), f = e && e.backColor, g = k(s), i = j.ec(h.Om(s, f || g)), i.a *= .6 / 255, v.fillStyle = j.bc(i), v.strokeStyle = h.Om(s, s.getSelectionBorderColor()), v.lineWidth = 2, v.beginPath(), l = t.Vv, m = s.cm(b), n = m.x, o = m.y, p = m.width, q = m.height, l > 2007 ? (v.rect(n, o, p - x, q - x), v.strokeRect(n - 1, o - 1, p + 1, q + 1)) : (v.rect(n + 1, o + 1, p - w - .5, q - w - .5), v.strokeRect(n - .5, o - .5, p, q)), v.fill(), v.restore(), r.Wja(v, m))
                }
            }), a = {
                init: function() {
                    this.options.allowUserDragMerge = !1, f.dja(this.commandManager())
                }
            }, d.Workbook.$n("dragMerge", a), b = {
                paintAdornment: function(a) {
                    var b = a.ctx,
                        c = this,
                        d = c.yl,
                        e = c.ITa.getSelections();
                    c.parent && c.parent.options.allowUserDragMerge && 1 === e.length && !c.CH && d.cja(b)
                }
            }, d.Worksheet.$n("dragMerge", b)
        }()
}, function(a, b, c) {
    !
        function() {
            "use strict";
            var a = c(87),
                b = a.GC$,
                d = null,
                e = void 0,
                f = Math.abs,
                g = a.Events,
                h = a.kf;

            function i(a, b) {
                a.Wq(g.DragMerging, b)
            }
            function j(a, b) {
                a.Wq(g.DragMerged, b)
            }
            b.extend(a.iI.prototype, {
                gka: function(a) {
                    var b = this,
                        c = b.kj,
                        d = a,
                        e = c.ITa.findSpan(a.row, a.col);
                    return e && e.containsRange(a) && (d = e), d
                },
                Yia: function(a, b, c) {
                    var e, g, h, i, j, k = this.kj,
                        l = k.parent,
                        m = k.Ix(),
                        n = k.yl,
                        o = 4,
                        p = 8,
                        q = o / 2,
                        r = p / 2;
                    if (l && l.options.allowUserDragMerge && m && !k.CH) {
                        if (e = n.Xja, g = e.x, h = e.y, i = e.width, j = e.height, f(g + i - b) <= q && f(h + j / 2 - c) <= r) return {
                            right: !0
                        };
                        if (f(g + i / 2 - b) <= r && f(h + j - c) <= q) return {
                            bottom: !0
                        }
                    }
                    return d
                },
                Zia: function(a) {
                    var b, c, d, e, f, g, h, i, j = this;
                    return j.eG = !0, j.OG = !0, j.$ia = !0, j.rG = {
                        KG: a.rowViewportIndex,
                        MG: a.colViewportIndex,
                        sG: a.hitTestType
                    }, j.fja = a.dragMergeInfo, b = j.kj, c = b.ITa, d = b.Ix(), j.ika = j.gka(d), e = b.Tq(j.ika), f = e.row, g = e.col, h = e.rowCount, i = e.colCount, c.qu(f, g, h, i) ? (j.OG = !1, void(j.$ia = !1)) : (j._ja = b.getSpans(e), b.suspendPaint(), c.do("clearSpan", f, g, h, i), b.resumePaint(), j.aka = e, j.bka(), j.jka(e), void j.qG())
                },
                _ia: function() {
                    var a, b, c, d, e, f, g, h, i = this,
                        j = i.kj,
                        k = j.parent;
                    return k && !k.options.allowUserDragMerge ? void i.aja() : (a = i.fH(), b = i.gH(), c = i.aka || i.ika, d = j.Tq(c), void(a >= 0 && b >= 0 && (e = i.fja, f = i.qja(d, a, b, e), i.kka = f, g = f.rowCount, h = f.colCount, g > 0 && h > 0 && (i.bka(), i.jka(f), i.aka = f, i.NG()))))
                },
                bka: function() {
                    var a, b = this.kj,
                        c = this.aka;
                    c && (a = b.cm(c), a.x -= 2, a.y -= 2, a.width += 4, a.height += 4, b.yl.dm(a))
                },
                qja: function(a, b, c, d) {
                    var e, f, g, i, j, k, l, m, n = this,
                        o = n.kj,
                        p = a.row,
                        q = a.col,
                        r = a.rowCount,
                        s = a.colCount;
                    return d.right ? (e = p, f = q, g = r, i = c - q + 1, j = e, k = q + s, l = g, m = c - q - s + 1) : d.bottom && (e = p, f = q, g = b - p + 1, i = s, j = p + r, k = f, l = b - p - r + 1, m = i), o.ITa.MTa(j, k, l, m) && (e = p, f = q, g = r, i = s), h(e, f, g, i)
                },
                aja: function() {
                    var a, b, c, d = this,
                        f = d.kj,
                        g = f.parent,
                        h = d._ja,
                        k = d.ika,
                        l = d.kka || k;
                    d.eG = !1, d.OG = !1, d.$ia = !1, d.kka = e, d._ja = e, d.aka = e, d.ika = e, d.RG(), g && g.options.allowUserDragMerge && (a = f.ITa, f.suspendPaint(), h.length > 0 && h.forEach(function(b) {
                        a.do("addSpan", b)
                    }), f.resumePaint(), b = {
                        sheetName: f.name(),
                        sheet: f,
                        mergeRange: l,
                        cancel: !1
                    }, i(f, b), b.cancel || (c = {
                        cmd: "dragMerge",
                        sheetName: f.name(),
                        oldSelection: k,
                        newSelection: l
                    }, f.wu().execute(c), j(f, {
                        sheetName: f.name(),
                        sheet: f,
                        mergeRange: l
                    })))
                },
                jka: function(a) {
                    var b = this,
                        c = b.kj,
                        d = c.yl,
                        e = d.hka;
                    e(d, a)
                }
            })
        }()
}]), function(a) {
    "object" == typeof module && "object" == typeof module.exports ? module.exports = a : "function" == typeof define && define.amd ? define("@grapecity/spread-sheets", [], function() {
        return a
    }) : "object" == typeof exports && (exports.Spread = a.Spread)
}(GC || {});