Skip to content

Instantly share code, notes, and snippets.

@elliottsj
Created July 4, 2015 16:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save elliottsj/4d9ed932a64548cca3c0 to your computer and use it in GitHub Desktop.
Save elliottsj/4d9ed932a64548cca3c0 to your computer and use it in GitHub Desktop.
firebase-web.js: minified and beautified
/*! @license Firebase v2.2.7
License: https://www.firebase.com/terms/terms-of-service.html */
(function() {
var h, aa = this;
function n(a) {
return void 0 !== a
}
function ba() {}
function ca(a) {
a.ub = function() {
return a.tf ? a.tf : a.tf = new a
}
}
function da(a) {
var b = typeof a;
if ("object" == b)
if (a) {
if (a instanceof Array) return "array";
if (a instanceof Object) return b;
var c = Object.prototype.toString.call(a);
if ("[object Window]" == c) return "object";
if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) return "array";
if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) return "function"
} else return "null";
else if ("function" == b && "undefined" == typeof a.call) return "object";
return b
}
function ea(a) {
return "array" == da(a)
}
function fa(a) {
var b = da(a);
return "array" == b || "object" == b && "number" == typeof a.length
}
function p(a) {
return "string" == typeof a
}
function ga(a) {
return "number" == typeof a
}
function ha(a) {
return "function" == da(a)
}
function ia(a) {
var b = typeof a;
return "object" == b && null != a || "function" == b
}
function ja(a, b, c) {
return a.call.apply(a.bind, arguments)
}
function ka(a, b, c) {
if (!a) throw Error();
if (2 < arguments.length) {
var d = Array.prototype.slice.call(arguments, 2);
return function() {
var c = Array.prototype.slice.call(arguments);
Array.prototype.unshift.apply(c, d);
return a.apply(b, c)
}
}
return function() {
return a.apply(b, arguments)
}
}
function q(a, b, c) {
q = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? ja : ka;
return q.apply(null, arguments)
}
var la = Date.now || function() {
return +new Date
};
function ma(a, b) {
function c() {}
c.prototype = b.prototype;
a.Zg = b.prototype;
a.prototype = new c;
a.prototype.constructor = a;
a.Vg = function(a, c, f) {
for (var g = Array(arguments.length - 2), k = 2; k < arguments.length; k++) g[k - 2] = arguments[k];
return b.prototype[c].apply(a, g)
}
};
function r(a, b) {
for (var c in a) b.call(void 0, a[c], c, a)
}
function na(a, b) {
var c = {},
d;
for (d in a) c[d] = b.call(void 0, a[d], d, a);
return c
}
function oa(a, b) {
for (var c in a)
if (!b.call(void 0, a[c], c, a)) return !1;
return !0
}
function pa(a) {
var b = 0,
c;
for (c in a) b++;
return b
}
function qa(a) {
for (var b in a) return b
}
function ra(a) {
var b = [],
c = 0,
d;
for (d in a) b[c++] = a[d];
return b
}
function sa(a) {
var b = [],
c = 0,
d;
for (d in a) b[c++] = d;
return b
}
function ta(a, b) {
for (var c in a)
if (a[c] == b) return !0;
return !1
}
function ua(a, b, c) {
for (var d in a)
if (b.call(c, a[d], d, a)) return d
}
function va(a, b) {
var c = ua(a, b, void 0);
return c && a[c]
}
function wa(a) {
for (var b in a) return !1;
return !0
}
function xa(a) {
var b = {},
c;
for (c in a) b[c] = a[c];
return b
}
var ya = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
function za(a, b) {
for (var c, d, e = 1; e < arguments.length; e++) {
d = arguments[e];
for (c in d) a[c] = d[c];
for (var f = 0; f < ya.length; f++) c = ya[f], Object.prototype.hasOwnProperty.call(d, c) && (a[c] = d[c])
}
};
function Aa(a) {
a = String(a);
if (/^\s*$/.test(a) ? 0 : /^[\],:{}\s\u2028\u2029]*$/.test(a.replace(/\\["\\\/bfnrtu]/g, "@").replace(/"[^"\\\n\r\u2028\u2029\x00-\x08\x0a-\x1f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g, ""))) try {
return eval("(" + a + ")")
} catch (b) {}
throw Error("Invalid JSON string: " + a);
}
function Ba() {
this.Pd = void 0
}
function Ca(a, b, c) {
switch (typeof b) {
case "string":
Da(b, c);
break;
case "number":
c.push(isFinite(b) && !isNaN(b) ? b : "null");
break;
case "boolean":
c.push(b);
break;
case "undefined":
c.push("null");
break;
case "object":
if (null == b) {
c.push("null");
break
}
if (ea(b)) {
var d = b.length;
c.push("[");
for (var e = "", f = 0; f < d; f++) c.push(e), e = b[f], Ca(a, a.Pd ? a.Pd.call(b, String(f), e) : e, c), e = ",";
c.push("]");
break
}
c.push("{");
d = "";
for (f in b) Object.prototype.hasOwnProperty.call(b, f) && (e = b[f], "function" != typeof e && (c.push(d), Da(f, c),
c.push(":"), Ca(a, a.Pd ? a.Pd.call(b, f, e) : e, c), d = ","));
c.push("}");
break;
case "function":
break;
default:
throw Error("Unknown type: " + typeof b);
}
}
var Ea = {
'"': '\\"',
"\\": "\\\\",
"/": "\\/",
"\b": "\\b",
"\f": "\\f",
"\n": "\\n",
"\r": "\\r",
"\t": "\\t",
"\x0B": "\\u000b"
},
Fa = /\uffff/.test("\uffff") ? /[\\\"\x00-\x1f\x7f-\uffff]/g : /[\\\"\x00-\x1f\x7f-\xff]/g;
function Da(a, b) {
b.push('"', a.replace(Fa, function(a) {
if (a in Ea) return Ea[a];
var b = a.charCodeAt(0),
e = "\\u";
16 > b ? e += "000" : 256 > b ? e += "00" : 4096 > b && (e += "0");
return Ea[a] = e + b.toString(16)
}), '"')
};
function Ga() {
return Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ la()).toString(36)
};
var Ha;
a: {
var Ia = aa.navigator;
if (Ia) {
var Ja = Ia.userAgent;
if (Ja) {
Ha = Ja;
break a
}
}
Ha = ""
};
function Ka() {
this.Wa = -1
};
function La() {
this.Wa = -1;
this.Wa = 64;
this.R = [];
this.le = [];
this.Tf = [];
this.Id = [];
this.Id[0] = 128;
for (var a = 1; a < this.Wa; ++a) this.Id[a] = 0;
this.be = this.$b = 0;
this.reset()
}
ma(La, Ka);
La.prototype.reset = function() {
this.R[0] = 1732584193;
this.R[1] = 4023233417;
this.R[2] = 2562383102;
this.R[3] = 271733878;
this.R[4] = 3285377520;
this.be = this.$b = 0
};
function Ma(a, b, c) {
c || (c = 0);
var d = a.Tf;
if (p(b))
for (var e = 0; 16 > e; e++) d[e] = b.charCodeAt(c) << 24 | b.charCodeAt(c + 1) << 16 | b.charCodeAt(c + 2) << 8 | b.charCodeAt(c + 3), c += 4;
else
for (e = 0; 16 > e; e++) d[e] = b[c] << 24 | b[c + 1] << 16 | b[c + 2] << 8 | b[c + 3], c += 4;
for (e = 16; 80 > e; e++) {
var f = d[e - 3] ^ d[e - 8] ^ d[e - 14] ^ d[e - 16];
d[e] = (f << 1 | f >>> 31) & 4294967295
}
b = a.R[0];
c = a.R[1];
for (var g = a.R[2], k = a.R[3], l = a.R[4], m, e = 0; 80 > e; e++) 40 > e ? 20 > e ? (f = k ^ c & (g ^ k), m = 1518500249) : (f = c ^ g ^ k, m = 1859775393) : 60 > e ? (f = c & g | k & (c | g), m = 2400959708) : (f = c ^ g ^ k, m = 3395469782), f = (b <<
5 | b >>> 27) + f + l + m + d[e] & 4294967295, l = k, k = g, g = (c << 30 | c >>> 2) & 4294967295, c = b, b = f;
a.R[0] = a.R[0] + b & 4294967295;
a.R[1] = a.R[1] + c & 4294967295;
a.R[2] = a.R[2] + g & 4294967295;
a.R[3] = a.R[3] + k & 4294967295;
a.R[4] = a.R[4] + l & 4294967295
}
La.prototype.update = function(a, b) {
if (null != a) {
n(b) || (b = a.length);
for (var c = b - this.Wa, d = 0, e = this.le, f = this.$b; d < b;) {
if (0 == f)
for (; d <= c;) Ma(this, a, d), d += this.Wa;
if (p(a))
for (; d < b;) {
if (e[f] = a.charCodeAt(d), ++f, ++d, f == this.Wa) {
Ma(this, e);
f = 0;
break
}
} else
for (; d < b;)
if (e[f] = a[d], ++f, ++d, f == this.Wa) {
Ma(this, e);
f = 0;
break
}
}
this.$b = f;
this.be += b
}
};
var t = Array.prototype,
Na = t.indexOf ? function(a, b, c) {
return t.indexOf.call(a, b, c)
} : function(a, b, c) {
c = null == c ? 0 : 0 > c ? Math.max(0, a.length + c) : c;
if (p(a)) return p(b) && 1 == b.length ? a.indexOf(b, c) : -1;
for (; c < a.length; c++)
if (c in a && a[c] === b) return c;
return -1
},
Oa = t.forEach ? function(a, b, c) {
t.forEach.call(a, b, c)
} : function(a, b, c) {
for (var d = a.length, e = p(a) ? a.split("") : a, f = 0; f < d; f++) f in e && b.call(c, e[f], f, a)
},
Pa = t.filter ? function(a, b, c) {
return t.filter.call(a, b, c)
} : function(a, b, c) {
for (var d = a.length, e = [], f = 0, g = p(a) ?
a.split("") : a, k = 0; k < d; k++)
if (k in g) {
var l = g[k];
b.call(c, l, k, a) && (e[f++] = l)
}
return e
},
Qa = t.map ? function(a, b, c) {
return t.map.call(a, b, c)
} : function(a, b, c) {
for (var d = a.length, e = Array(d), f = p(a) ? a.split("") : a, g = 0; g < d; g++) g in f && (e[g] = b.call(c, f[g], g, a));
return e
},
Ra = t.reduce ? function(a, b, c, d) {
for (var e = [], f = 1, g = arguments.length; f < g; f++) e.push(arguments[f]);
d && (e[0] = q(b, d));
return t.reduce.apply(a, e)
} : function(a, b, c, d) {
var e = c;
Oa(a, function(c, g) {
e = b.call(d, e, c, g, a)
});
return e
},
Sa = t.every ? function(a, b,
c) {
return t.every.call(a, b, c)
} : function(a, b, c) {
for (var d = a.length, e = p(a) ? a.split("") : a, f = 0; f < d; f++)
if (f in e && !b.call(c, e[f], f, a)) return !1;
return !0
};
function Ta(a, b) {
var c = Ua(a, b, void 0);
return 0 > c ? null : p(a) ? a.charAt(c) : a[c]
}
function Ua(a, b, c) {
for (var d = a.length, e = p(a) ? a.split("") : a, f = 0; f < d; f++)
if (f in e && b.call(c, e[f], f, a)) return f;
return -1
}
function Va(a, b) {
var c = Na(a, b);
0 <= c && t.splice.call(a, c, 1)
}
function Wa(a, b, c) {
return 2 >= arguments.length ? t.slice.call(a, b) : t.slice.call(a, b, c)
}
function Xa(a, b) {
a.sort(b || Ya)
}
function Ya(a, b) {
return a > b ? 1 : a < b ? -1 : 0
};
var Za = -1 != Ha.indexOf("Opera") || -1 != Ha.indexOf("OPR"),
$a = -1 != Ha.indexOf("Trident") || -1 != Ha.indexOf("MSIE"),
ab = -1 != Ha.indexOf("Gecko") && -1 == Ha.toLowerCase().indexOf("webkit") && !(-1 != Ha.indexOf("Trident") || -1 != Ha.indexOf("MSIE")),
bb = -1 != Ha.toLowerCase().indexOf("webkit");
(function() {
var a = "",
b;
if (Za && aa.opera) return a = aa.opera.version, ha(a) ? a() : a;
ab ? b = /rv\:([^\);]+)(\)|;)/ : $a ? b = /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/ : bb && (b = /WebKit\/(\S+)/);
b && (a = (a = b.exec(Ha)) ? a[1] : "");
return $a && (b = (b = aa.document) ? b.documentMode : void 0, b > parseFloat(a)) ? String(b) : a
})();
var cb = null,
db = null,
eb = null;
function fb(a, b) {
if (!fa(a)) throw Error("encodeByteArray takes an array as a parameter");
gb();
for (var c = b ? db : cb, d = [], e = 0; e < a.length; e += 3) {
var f = a[e],
g = e + 1 < a.length,
k = g ? a[e + 1] : 0,
l = e + 2 < a.length,
m = l ? a[e + 2] : 0,
v = f >> 2,
f = (f & 3) << 4 | k >> 4,
k = (k & 15) << 2 | m >> 6,
m = m & 63;
l || (m = 64, g || (k = 64));
d.push(c[v], c[f], c[k], c[m])
}
return d.join("")
}
function gb() {
if (!cb) {
cb = {};
db = {};
eb = {};
for (var a = 0; 65 > a; a++) cb[a] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a), db[a] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(a), eb[db[a]] = a, 62 <= a && (eb["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a)] = a)
}
};
function u(a, b) {
return Object.prototype.hasOwnProperty.call(a, b)
}
function w(a, b) {
if (Object.prototype.hasOwnProperty.call(a, b)) return a[b]
}
function hb(a, b) {
for (var c in a) Object.prototype.hasOwnProperty.call(a, c) && b(c, a[c])
}
function ib(a) {
var b = {};
hb(a, function(a, d) {
b[a] = d
});
return b
};
function jb(a) {
var b = [];
hb(a, function(a, d) {
ea(d) ? Oa(d, function(d) {
b.push(encodeURIComponent(a) + "=" + encodeURIComponent(d))
}) : b.push(encodeURIComponent(a) + "=" + encodeURIComponent(d))
});
return b.length ? "&" + b.join("&") : ""
}
function kb(a) {
var b = {};
a = a.replace(/^\?/, "").split("&");
Oa(a, function(a) {
a && (a = a.split("="), b[a[0]] = a[1])
});
return b
};
function x(a, b, c, d) {
var e;
d < b ? e = "at least " + b : d > c && (e = 0 === c ? "none" : "no more than " + c);
if (e) throw Error(a + " failed: Was called with " + d + (1 === d ? " argument." : " arguments.") + " Expects " + e + ".");
}
function z(a, b, c) {
var d = "";
switch (b) {
case 1:
d = c ? "first" : "First";
break;
case 2:
d = c ? "second" : "Second";
break;
case 3:
d = c ? "third" : "Third";
break;
case 4:
d = c ? "fourth" : "Fourth";
break;
default:
throw Error("errorPrefix called with argumentNumber > 4. Need to update it?");
}
return a = a + " failed: " + (d + " argument ")
}
function A(a, b, c, d) {
if ((!d || n(c)) && !ha(c)) throw Error(z(a, b, d) + "must be a valid function.");
}
function lb(a, b, c) {
if (n(c) && (!ia(c) || null === c)) throw Error(z(a, b, !0) + "must be a valid context object.");
};
function mb(a) {
return "undefined" !== typeof JSON && n(JSON.parse) ? JSON.parse(a) : Aa(a)
}
function B(a) {
if ("undefined" !== typeof JSON && n(JSON.stringify)) a = JSON.stringify(a);
else {
var b = [];
Ca(new Ba, a, b);
a = b.join("")
}
return a
};
function nb() {
this.Sd = C
}
nb.prototype.j = function(a) {
return this.Sd.oa(a)
};
nb.prototype.toString = function() {
return this.Sd.toString()
};
function ob() {}
ob.prototype.pf = function() {
return null
};
ob.prototype.xe = function() {
return null
};
var pb = new ob;
function qb(a, b, c) {
this.Qf = a;
this.Ka = b;
this.Hd = c
}
qb.prototype.pf = function(a) {
var b = this.Ka.D;
if (rb(b, a)) return b.j().M(a);
b = null != this.Hd ? new sb(this.Hd, !0, !1) : this.Ka.u();
return this.Qf.Xa(a, b)
};
qb.prototype.xe = function(a, b, c) {
var d = null != this.Hd ? this.Hd : tb(this.Ka);
a = this.Qf.me(d, b, 1, c, a);
return 0 === a.length ? null : a[0]
};
function ub() {
this.tb = []
}
function vb(a, b) {
for (var c = null, d = 0; d < b.length; d++) {
var e = b[d],
f = e.Yb();
null === c || f.Z(c.Yb()) || (a.tb.push(c), c = null);
null === c && (c = new wb(f));
c.add(e)
}
c && a.tb.push(c)
}
function xb(a, b, c) {
vb(a, c);
yb(a, function(a) {
return a.Z(b)
})
}
function zb(a, b, c) {
vb(a, c);
yb(a, function(a) {
return a.contains(b) || b.contains(a)
})
}
function yb(a, b) {
for (var c = !0, d = 0; d < a.tb.length; d++) {
var e = a.tb[d];
if (e)
if (e = e.Yb(), b(e)) {
for (var e = a.tb[d], f = 0; f < e.sd.length; f++) {
var g = e.sd[f];
if (null !== g) {
e.sd[f] = null;
var k = g.Ub();
Ab && Bb("event: " + g.toString());
Cb(k)
}
}
a.tb[d] = null
} else c = !1
}
c && (a.tb = [])
}
function wb(a) {
this.qa = a;
this.sd = []
}
wb.prototype.add = function(a) {
this.sd.push(a)
};
wb.prototype.Yb = function() {
return this.qa
};
function D(a, b, c, d) {
this.type = a;
this.Ja = b;
this.Ya = c;
this.Je = d;
this.Nd = void 0
}
function Db(a) {
return new D(Eb, a)
}
var Eb = "value";
function Fb(a, b, c, d) {
this.te = b;
this.Wd = c;
this.Nd = d;
this.rd = a
}
Fb.prototype.Yb = function() {
var a = this.Wd.lc();
return "value" === this.rd ? a.path : a.parent().path
};
Fb.prototype.ye = function() {
return this.rd
};
Fb.prototype.Ub = function() {
return this.te.Ub(this)
};
Fb.prototype.toString = function() {
return this.Yb().toString() + ":" + this.rd + ":" + B(this.Wd.lf())
};
function Gb(a, b, c) {
this.te = a;
this.error = b;
this.path = c
}
Gb.prototype.Yb = function() {
return this.path
};
Gb.prototype.ye = function() {
return "cancel"
};
Gb.prototype.Ub = function() {
return this.te.Ub(this)
};
Gb.prototype.toString = function() {
return this.path.toString() + ":cancel"
};
function sb(a, b, c) {
this.B = a;
this.$ = b;
this.Tb = c
}
function Hb(a) {
return a.$
}
function rb(a, b) {
return a.$ && !a.Tb || a.B.Ha(b)
}
sb.prototype.j = function() {
return this.B
};
function Ib(a) {
this.dg = a;
this.Ad = null
}
Ib.prototype.get = function() {
var a = this.dg.get(),
b = xa(a);
if (this.Ad)
for (var c in this.Ad) b[c] -= this.Ad[c];
this.Ad = a;
return b
};
function Jb(a, b) {
this.Mf = {};
this.Yd = new Ib(a);
this.ca = b;
var c = 1E4 + 2E4 * Math.random();
setTimeout(q(this.Hf, this), Math.floor(c))
}
Jb.prototype.Hf = function() {
var a = this.Yd.get(),
b = {},
c = !1,
d;
for (d in a) 0 < a[d] && u(this.Mf, d) && (b[d] = a[d], c = !0);
c && this.ca.Te(b);
setTimeout(q(this.Hf, this), Math.floor(6E5 * Math.random()))
};
function Kb() {
this.Dc = {}
}
function Lb(a, b, c) {
n(c) || (c = 1);
u(a.Dc, b) || (a.Dc[b] = 0);
a.Dc[b] += c
}
Kb.prototype.get = function() {
return xa(this.Dc)
};
var Mb = {},
Nb = {};
function Ob(a) {
a = a.toString();
Mb[a] || (Mb[a] = new Kb);
return Mb[a]
}
function Pb(a, b) {
var c = a.toString();
Nb[c] || (Nb[c] = b());
return Nb[c]
};
function E(a, b) {
this.name = a;
this.S = b
}
function Qb(a, b) {
return new E(a, b)
};
function Rb(a, b) {
return Sb(a.name, b.name)
}
function Tb(a, b) {
return Sb(a, b)
};
function Ub(a, b, c) {
this.type = Vb;
this.source = a;
this.path = b;
this.Ia = c
}
Ub.prototype.Wc = function(a) {
return this.path.e() ? new Ub(this.source, F, this.Ia.M(a)) : new Ub(this.source, G(this.path), this.Ia)
};
Ub.prototype.toString = function() {
return "Operation(" + this.path + ": " + this.source.toString() + " overwrite: " + this.Ia.toString() + ")"
};
function Wb(a, b) {
this.type = Xb;
this.source = Yb;
this.path = a;
this.Ve = b
}
Wb.prototype.Wc = function() {
return this.path.e() ? this : new Wb(G(this.path), this.Ve)
};
Wb.prototype.toString = function() {
return "Operation(" + this.path + ": " + this.source.toString() + " ack write revert=" + this.Ve + ")"
};
function Zb(a, b) {
this.type = $b;
this.source = a;
this.path = b
}
Zb.prototype.Wc = function() {
return this.path.e() ? new Zb(this.source, F) : new Zb(this.source, G(this.path))
};
Zb.prototype.toString = function() {
return "Operation(" + this.path + ": " + this.source.toString() + " listen_complete)"
};
function ac(a, b) {
this.La = a;
this.xa = b ? b : bc
}
h = ac.prototype;
h.Na = function(a, b) {
return new ac(this.La, this.xa.Na(a, b, this.La).X(null, null, !1, null, null))
};
h.remove = function(a) {
return new ac(this.La, this.xa.remove(a, this.La).X(null, null, !1, null, null))
};
h.get = function(a) {
for (var b, c = this.xa; !c.e();) {
b = this.La(a, c.key);
if (0 === b) return c.value;
0 > b ? c = c.left : 0 < b && (c = c.right)
}
return null
};
function cc(a, b) {
for (var c, d = a.xa, e = null; !d.e();) {
c = a.La(b, d.key);
if (0 === c) {
if (d.left.e()) return e ? e.key : null;
for (d = d.left; !d.right.e();) d = d.right;
return d.key
}
0 > c ? d = d.left : 0 < c && (e = d, d = d.right)
}
throw Error("Attempted to find predecessor key for a nonexistent key. What gives?");
}
h.e = function() {
return this.xa.e()
};
h.count = function() {
return this.xa.count()
};
h.Rc = function() {
return this.xa.Rc()
};
h.ec = function() {
return this.xa.ec()
};
h.ha = function(a) {
return this.xa.ha(a)
};
h.Wb = function(a) {
return new dc(this.xa, null, this.La, !1, a)
};
h.Xb = function(a, b) {
return new dc(this.xa, a, this.La, !1, b)
};
h.Zb = function(a, b) {
return new dc(this.xa, a, this.La, !0, b)
};
h.rf = function(a) {
return new dc(this.xa, null, this.La, !0, a)
};
function dc(a, b, c, d, e) {
this.Rd = e || null;
this.Ee = d;
this.Pa = [];
for (e = 1; !a.e();)
if (e = b ? c(a.key, b) : 1, d && (e *= -1), 0 > e) a = this.Ee ? a.left : a.right;
else if (0 === e) {
this.Pa.push(a);
break
} else this.Pa.push(a), a = this.Ee ? a.right : a.left
}
function H(a) {
if (0 === a.Pa.length) return null;
var b = a.Pa.pop(),
c;
c = a.Rd ? a.Rd(b.key, b.value) : {
key: b.key,
value: b.value
};
if (a.Ee)
for (b = b.left; !b.e();) a.Pa.push(b), b = b.right;
else
for (b = b.right; !b.e();) a.Pa.push(b), b = b.left;
return c
}
function ec(a) {
if (0 === a.Pa.length) return null;
var b;
b = a.Pa;
b = b[b.length - 1];
return a.Rd ? a.Rd(b.key, b.value) : {
key: b.key,
value: b.value
}
}
function fc(a, b, c, d, e) {
this.key = a;
this.value = b;
this.color = null != c ? c : !0;
this.left = null != d ? d : bc;
this.right = null != e ? e : bc
}
h = fc.prototype;
h.X = function(a, b, c, d, e) {
return new fc(null != a ? a : this.key, null != b ? b : this.value, null != c ? c : this.color, null != d ? d : this.left, null != e ? e : this.right)
};
h.count = function() {
return this.left.count() + 1 + this.right.count()
};
h.e = function() {
return !1
};
h.ha = function(a) {
return this.left.ha(a) || a(this.key, this.value) || this.right.ha(a)
};
function gc(a) {
return a.left.e() ? a : gc(a.left)
}
h.Rc = function() {
return gc(this).key
};
h.ec = function() {
return this.right.e() ? this.key : this.right.ec()
};
h.Na = function(a, b, c) {
var d, e;
e = this;
d = c(a, e.key);
e = 0 > d ? e.X(null, null, null, e.left.Na(a, b, c), null) : 0 === d ? e.X(null, b, null, null, null) : e.X(null, null, null, null, e.right.Na(a, b, c));
return hc(e)
};
function ic(a) {
if (a.left.e()) return bc;
a.left.fa() || a.left.left.fa() || (a = jc(a));
a = a.X(null, null, null, ic(a.left), null);
return hc(a)
}
h.remove = function(a, b) {
var c, d;
c = this;
if (0 > b(a, c.key)) c.left.e() || c.left.fa() || c.left.left.fa() || (c = jc(c)), c = c.X(null, null, null, c.left.remove(a, b), null);
else {
c.left.fa() && (c = kc(c));
c.right.e() || c.right.fa() || c.right.left.fa() || (c = lc(c), c.left.left.fa() && (c = kc(c), c = lc(c)));
if (0 === b(a, c.key)) {
if (c.right.e()) return bc;
d = gc(c.right);
c = c.X(d.key, d.value, null, null, ic(c.right))
}
c = c.X(null, null, null, null, c.right.remove(a, b))
}
return hc(c)
};
h.fa = function() {
return this.color
};
function hc(a) {
a.right.fa() && !a.left.fa() && (a = mc(a));
a.left.fa() && a.left.left.fa() && (a = kc(a));
a.left.fa() && a.right.fa() && (a = lc(a));
return a
}
function jc(a) {
a = lc(a);
a.right.left.fa() && (a = a.X(null, null, null, null, kc(a.right)), a = mc(a), a = lc(a));
return a
}
function mc(a) {
return a.right.X(null, null, a.color, a.X(null, null, !0, null, a.right.left), null)
}
function kc(a) {
return a.left.X(null, null, a.color, null, a.X(null, null, !0, a.left.right, null))
}
function lc(a) {
return a.X(null, null, !a.color, a.left.X(null, null, !a.left.color, null, null), a.right.X(null, null, !a.right.color, null, null))
}
function nc() {}
h = nc.prototype;
h.X = function() {
return this
};
h.Na = function(a, b) {
return new fc(a, b, null)
};
h.remove = function() {
return this
};
h.count = function() {
return 0
};
h.e = function() {
return !0
};
h.ha = function() {
return !1
};
h.Rc = function() {
return null
};
h.ec = function() {
return null
};
h.fa = function() {
return !1
};
var bc = new nc;
function oc(a, b) {
return a && "object" === typeof a ? (J(".sv" in a, "Unexpected leaf node or priority contents"), b[a[".sv"]]) : a
}
function pc(a, b) {
var c = new qc;
rc(a, new K(""), function(a, e) {
c.mc(a, sc(e, b))
});
return c
}
function sc(a, b) {
var c = a.A().K(),
c = oc(c, b),
d;
if (a.N()) {
var e = oc(a.Ba(), b);
return e !== a.Ba() || c !== a.A().K() ? new tc(e, L(c)) : a
}
d = a;
c !== a.A().K() && (d = d.da(new tc(c)));
a.U(M, function(a, c) {
var e = sc(c, b);
e !== c && (d = d.Q(a, e))
});
return d
};
function K(a, b) {
if (1 == arguments.length) {
this.n = a.split("/");
for (var c = 0, d = 0; d < this.n.length; d++) 0 < this.n[d].length && (this.n[c] = this.n[d], c++);
this.n.length = c;
this.Y = 0
} else this.n = a, this.Y = b
}
function N(a, b) {
var c = O(a);
if (null === c) return b;
if (c === O(b)) return N(G(a), G(b));
throw Error("INTERNAL ERROR: innerPath (" + b + ") is not within outerPath (" + a + ")");
}
function O(a) {
return a.Y >= a.n.length ? null : a.n[a.Y]
}
function uc(a) {
return a.n.length - a.Y
}
function G(a) {
var b = a.Y;
b < a.n.length && b++;
return new K(a.n, b)
}
function vc(a) {
return a.Y < a.n.length ? a.n[a.n.length - 1] : null
}
h = K.prototype;
h.toString = function() {
for (var a = "", b = this.Y; b < this.n.length; b++) "" !== this.n[b] && (a += "/" + this.n[b]);
return a || "/"
};
h.slice = function(a) {
return this.n.slice(this.Y + (a || 0))
};
h.parent = function() {
if (this.Y >= this.n.length) return null;
for (var a = [], b = this.Y; b < this.n.length - 1; b++) a.push(this.n[b]);
return new K(a, 0)
};
h.w = function(a) {
for (var b = [], c = this.Y; c < this.n.length; c++) b.push(this.n[c]);
if (a instanceof K)
for (c = a.Y; c < a.n.length; c++) b.push(a.n[c]);
else
for (a = a.split("/"), c = 0; c < a.length; c++) 0 < a[c].length && b.push(a[c]);
return new K(b, 0)
};
h.e = function() {
return this.Y >= this.n.length
};
h.Z = function(a) {
if (uc(this) !== uc(a)) return !1;
for (var b = this.Y, c = a.Y; b <= this.n.length; b++, c++)
if (this.n[b] !== a.n[c]) return !1;
return !0
};
h.contains = function(a) {
var b = this.Y,
c = a.Y;
if (uc(this) > uc(a)) return !1;
for (; b < this.n.length;) {
if (this.n[b] !== a.n[c]) return !1;
++b;
++c
}
return !0
};
var F = new K("");
function wc(a, b) {
this.Qa = a.slice();
this.Ea = Math.max(1, this.Qa.length);
this.kf = b;
for (var c = 0; c < this.Qa.length; c++) this.Ea += xc(this.Qa[c]);
yc(this)
}
wc.prototype.push = function(a) {
0 < this.Qa.length && (this.Ea += 1);
this.Qa.push(a);
this.Ea += xc(a);
yc(this)
};
wc.prototype.pop = function() {
var a = this.Qa.pop();
this.Ea -= xc(a);
0 < this.Qa.length && --this.Ea
};
function yc(a) {
if (768 < a.Ea) throw Error(a.kf + "has a key path longer than 768 bytes (" + a.Ea + ").");
if (32 < a.Qa.length) throw Error(a.kf + "path specified exceeds the maximum depth that can be written (32) or object contains a cycle " + zc(a));
}
function zc(a) {
return 0 == a.Qa.length ? "" : "in property '" + a.Qa.join(".") + "'"
};
function Ac() {
this.wc = {}
}
Ac.prototype.set = function(a, b) {
null == b ? delete this.wc[a] : this.wc[a] = b
};
Ac.prototype.get = function(a) {
return u(this.wc, a) ? this.wc[a] : null
};
Ac.prototype.remove = function(a) {
delete this.wc[a]
};
Ac.prototype.uf = !0;
function Bc(a) {
this.Ec = a;
this.Md = "firebase:"
}
h = Bc.prototype;
h.set = function(a, b) {
null == b ? this.Ec.removeItem(this.Md + a) : this.Ec.setItem(this.Md + a, B(b))
};
h.get = function(a) {
a = this.Ec.getItem(this.Md + a);
return null == a ? null : mb(a)
};
h.remove = function(a) {
this.Ec.removeItem(this.Md + a)
};
h.uf = !1;
h.toString = function() {
return this.Ec.toString()
};
function Cc(a) {
try {
if ("undefined" !== typeof window && "undefined" !== typeof window[a]) {
var b = window[a];
b.setItem("firebase:sentinel", "cache");
b.removeItem("firebase:sentinel");
return new Bc(b)
}
} catch (c) {}
return new Ac
}
var Dc = Cc("localStorage"),
P = Cc("sessionStorage");
function Ec(a, b, c, d, e) {
this.host = a.toLowerCase();
this.domain = this.host.substr(this.host.indexOf(".") + 1);
this.lb = b;
this.Cb = c;
this.Tg = d;
this.Ld = e || "";
this.Oa = Dc.get("host:" + a) || this.host
}
function Fc(a, b) {
b !== a.Oa && (a.Oa = b, "s-" === a.Oa.substr(0, 2) && Dc.set("host:" + a.host, a.Oa))
}
Ec.prototype.toString = function() {
var a = (this.lb ? "https://" : "http://") + this.host;
this.Ld && (a += "<" + this.Ld + ">");
return a
};
var Gc = function() {
var a = 1;
return function() {
return a++
}
}();
function J(a, b) {
if (!a) throw Hc(b);
}
function Hc(a) {
return Error("Firebase (2.2.7) INTERNAL ASSERT FAILED: " + a)
}
function Ic(a) {
try {
var b;
if ("undefined" !== typeof atob) b = atob(a);
else {
gb();
for (var c = eb, d = [], e = 0; e < a.length;) {
var f = c[a.charAt(e++)],
g = e < a.length ? c[a.charAt(e)] : 0;
++e;
var k = e < a.length ? c[a.charAt(e)] : 64;
++e;
var l = e < a.length ? c[a.charAt(e)] : 64;
++e;
if (null == f || null == g || null == k || null == l) throw Error();
d.push(f << 2 | g >> 4);
64 != k && (d.push(g << 4 & 240 | k >> 2), 64 != l && d.push(k << 6 & 192 | l))
}
if (8192 > d.length) b = String.fromCharCode.apply(null, d);
else {
a = "";
for (c = 0; c < d.length; c += 8192) a += String.fromCharCode.apply(null, Wa(d, c,
c + 8192));
b = a
}
}
return b
} catch (m) {
Bb("base64Decode failed: ", m)
}
return null
}
function Jc(a) {
var b = Kc(a);
a = new La;
a.update(b);
var b = [],
c = 8 * a.be;
56 > a.$b ? a.update(a.Id, 56 - a.$b) : a.update(a.Id, a.Wa - (a.$b - 56));
for (var d = a.Wa - 1; 56 <= d; d--) a.le[d] = c & 255, c /= 256;
Ma(a, a.le);
for (d = c = 0; 5 > d; d++)
for (var e = 24; 0 <= e; e -= 8) b[c] = a.R[d] >> e & 255, ++c;
return fb(b)
}
function Lc(a) {
for (var b = "", c = 0; c < arguments.length; c++) b = fa(arguments[c]) ? b + Lc.apply(null, arguments[c]) : "object" === typeof arguments[c] ? b + B(arguments[c]) : b + arguments[c], b += " ";
return b
}
var Ab = null,
Mc = !0;
function Bb(a) {
!0 === Mc && (Mc = !1, null === Ab && !0 === P.get("logging_enabled") && Nc(!0));
if (Ab) {
var b = Lc.apply(null, arguments);
Ab(b)
}
}
function Oc(a) {
return function() {
Bb(a, arguments)
}
}
function Pc(a) {
if ("undefined" !== typeof console) {
var b = "FIREBASE INTERNAL ERROR: " + Lc.apply(null, arguments);
"undefined" !== typeof console.error ? console.error(b) : console.log(b)
}
}
function Qc(a) {
var b = Lc.apply(null, arguments);
throw Error("FIREBASE FATAL ERROR: " + b);
}
function Q(a) {
if ("undefined" !== typeof console) {
var b = "FIREBASE WARNING: " + Lc.apply(null, arguments);
"undefined" !== typeof console.warn ? console.warn(b) : console.log(b)
}
}
function Rc(a) {
var b = "",
c = "",
d = "",
e = "",
f = !0,
g = "https",
k = 443;
if (p(a)) {
var l = a.indexOf("//");
0 <= l && (g = a.substring(0, l - 1), a = a.substring(l + 2));
l = a.indexOf("/"); - 1 === l && (l = a.length);
b = a.substring(0, l);
e = "";
a = a.substring(l).split("/");
for (l = 0; l < a.length; l++)
if (0 < a[l].length) {
var m = a[l];
try {
m = decodeURIComponent(m.replace(/\+/g, " "))
} catch (v) {}
e += "/" + m
}
a = b.split(".");
3 === a.length ? (c = a[1], d = a[0].toLowerCase()) : 2 === a.length && (c = a[0]);
l = b.indexOf(":");
0 <= l && (f = "https" === g || "wss" === g, k = b.substring(l + 1), isFinite(k) &&
(k = String(k)), k = p(k) ? /^\s*-?0x/i.test(k) ? parseInt(k, 16) : parseInt(k, 10) : NaN)
}
return {
host: b,
port: k,
domain: c,
Qg: d,
lb: f,
scheme: g,
Zc: e
}
}
function Sc(a) {
return ga(a) && (a != a || a == Number.POSITIVE_INFINITY || a == Number.NEGATIVE_INFINITY)
}
function Tc(a) {
if ("complete" === document.readyState) a();
else {
var b = !1,
c = function() {
document.body ? b || (b = !0, a()) : setTimeout(c, Math.floor(10))
};
document.addEventListener ? (document.addEventListener("DOMContentLoaded", c, !1), window.addEventListener("load", c, !1)) : document.attachEvent && (document.attachEvent("onreadystatechange", function() {
"complete" === document.readyState && c()
}), window.attachEvent("onload", c))
}
}
function Sb(a, b) {
if (a === b) return 0;
if ("[MIN_NAME]" === a || "[MAX_NAME]" === b) return -1;
if ("[MIN_NAME]" === b || "[MAX_NAME]" === a) return 1;
var c = Uc(a),
d = Uc(b);
return null !== c ? null !== d ? 0 == c - d ? a.length - b.length : c - d : -1 : null !== d ? 1 : a < b ? -1 : 1
}
function Vc(a, b) {
if (b && a in b) return b[a];
throw Error("Missing required key (" + a + ") in object: " + B(b));
}
function Wc(a) {
if ("object" !== typeof a || null === a) return B(a);
var b = [],
c;
for (c in a) b.push(c);
b.sort();
c = "{";
for (var d = 0; d < b.length; d++) 0 !== d && (c += ","), c += B(b[d]), c += ":", c += Wc(a[b[d]]);
return c + "}"
}
function Xc(a, b) {
if (a.length <= b) return [a];
for (var c = [], d = 0; d < a.length; d += b) d + b > a ? c.push(a.substring(d, a.length)) : c.push(a.substring(d, d + b));
return c
}
function Yc(a, b) {
if (ea(a))
for (var c = 0; c < a.length; ++c) b(c, a[c]);
else r(a, b)
}
function Zc(a) {
J(!Sc(a), "Invalid JSON number");
var b, c, d, e;
0 === a ? (d = c = 0, b = -Infinity === 1 / a ? 1 : 0) : (b = 0 > a, a = Math.abs(a), a >= Math.pow(2, -1022) ? (d = Math.min(Math.floor(Math.log(a) / Math.LN2), 1023), c = d + 1023, d = Math.round(a * Math.pow(2, 52 - d) - Math.pow(2, 52))) : (c = 0, d = Math.round(a / Math.pow(2, -1074))));
e = [];
for (a = 52; a; --a) e.push(d % 2 ? 1 : 0), d = Math.floor(d / 2);
for (a = 11; a; --a) e.push(c % 2 ? 1 : 0), c = Math.floor(c / 2);
e.push(b ? 1 : 0);
e.reverse();
b = e.join("");
c = "";
for (a = 0; 64 > a; a += 8) d = parseInt(b.substr(a, 8), 2).toString(16), 1 === d.length &&
(d = "0" + d), c += d;
return c.toLowerCase()
}
var $c = /^-?\d{1,10}$/;
function Uc(a) {
return $c.test(a) && (a = Number(a), -2147483648 <= a && 2147483647 >= a) ? a : null
}
function Cb(a) {
try {
a()
} catch (b) {
setTimeout(function() {
Q("Exception was thrown by user callback.", b.stack || "");
throw b;
}, Math.floor(0))
}
}
function R(a, b) {
if (ha(a)) {
var c = Array.prototype.slice.call(arguments, 1).slice();
Cb(function() {
a.apply(null, c)
})
}
};
function Kc(a) {
for (var b = [], c = 0, d = 0; d < a.length; d++) {
var e = a.charCodeAt(d);
55296 <= e && 56319 >= e && (e -= 55296, d++, J(d < a.length, "Surrogate pair missing trail surrogate."), e = 65536 + (e << 10) + (a.charCodeAt(d) - 56320));
128 > e ? b[c++] = e : (2048 > e ? b[c++] = e >> 6 | 192 : (65536 > e ? b[c++] = e >> 12 | 224 : (b[c++] = e >> 18 | 240, b[c++] = e >> 12 & 63 | 128), b[c++] = e >> 6 & 63 | 128), b[c++] = e & 63 | 128)
}
return b
}
function xc(a) {
for (var b = 0, c = 0; c < a.length; c++) {
var d = a.charCodeAt(c);
128 > d ? b++ : 2048 > d ? b += 2 : 55296 <= d && 56319 >= d ? (b += 4, c++) : b += 3
}
return b
};
function ad(a) {
var b = {},
c = {},
d = {},
e = "";
try {
var f = a.split("."),
b = mb(Ic(f[0]) || ""),
c = mb(Ic(f[1]) || ""),
e = f[2],
d = c.d || {};
delete c.d
} catch (g) {}
return {
Wg: b,
Ac: c,
data: d,
Ng: e
}
}
function bd(a) {
a = ad(a).Ac;
return "object" === typeof a && a.hasOwnProperty("iat") ? w(a, "iat") : null
}
function cd(a) {
a = ad(a);
var b = a.Ac;
return !!a.Ng && !!b && "object" === typeof b && b.hasOwnProperty("iat")
};
function dd(a) {
this.V = a;
this.g = a.o.g
}
function ed(a, b, c, d) {
var e = [],
f = [];
Oa(b, function(b) {
"child_changed" === b.type && a.g.xd(b.Je, b.Ja) && f.push(new D("child_moved", b.Ja, b.Ya))
});
fd(a, e, "child_removed", b, d, c);
fd(a, e, "child_added", b, d, c);
fd(a, e, "child_moved", f, d, c);
fd(a, e, "child_changed", b, d, c);
fd(a, e, Eb, b, d, c);
return e
}
function fd(a, b, c, d, e, f) {
d = Pa(d, function(a) {
return a.type === c
});
Xa(d, q(a.eg, a));
Oa(d, function(c) {
var d = gd(a, c, f);
Oa(e, function(e) {
e.Jf(c.type) && b.push(e.createEvent(d, a.V))
})
})
}
function gd(a, b, c) {
"value" !== b.type && "child_removed" !== b.type && (b.Nd = c.qf(b.Ya, b.Ja, a.g));
return b
}
dd.prototype.eg = function(a, b) {
if (null == a.Ya || null == b.Ya) throw Hc("Should only compare child_ events.");
return this.g.compare(new E(a.Ya, a.Ja), new E(b.Ya, b.Ja))
};
function hd() {
this.eb = {}
}
function id(a, b) {
var c = b.type,
d = b.Ya;
J("child_added" == c || "child_changed" == c || "child_removed" == c, "Only child changes supported for tracking");
J(".priority" !== d, "Only non-priority child changes can be tracked.");
var e = w(a.eb, d);
if (e) {
var f = e.type;
if ("child_added" == c && "child_removed" == f) a.eb[d] = new D("child_changed", b.Ja, d, e.Ja);
else if ("child_removed" == c && "child_added" == f) delete a.eb[d];
else if ("child_removed" == c && "child_changed" == f) a.eb[d] = new D("child_removed", e.Je, d);
else if ("child_changed" == c &&
"child_added" == f) a.eb[d] = new D("child_added", b.Ja, d);
else if ("child_changed" == c && "child_changed" == f) a.eb[d] = new D("child_changed", b.Ja, d, e.Je);
else throw Hc("Illegal combination of changes: " + b + " occurred after " + e);
} else a.eb[d] = b
};
function jd(a, b, c) {
this.Pb = a;
this.qb = b;
this.sb = c || null
}
h = jd.prototype;
h.Jf = function(a) {
return "value" === a
};
h.createEvent = function(a, b) {
var c = b.o.g;
return new Fb("value", this, new S(a.Ja, b.lc(), c))
};
h.Ub = function(a) {
var b = this.sb;
if ("cancel" === a.ye()) {
J(this.qb, "Raising a cancel event on a listener with no cancel callback");
var c = this.qb;
return function() {
c.call(b, a.error)
}
}
var d = this.Pb;
return function() {
d.call(b, a.Wd)
}
};
h.ff = function(a, b) {
return this.qb ? new Gb(this, a, b) : null
};
h.matches = function(a) {
return a instanceof jd ? a.Pb && this.Pb ? a.Pb === this.Pb && a.sb === this.sb : !0 : !1
};
h.sf = function() {
return null !== this.Pb
};
function kd(a, b, c) {
this.ga = a;
this.qb = b;
this.sb = c
}
h = kd.prototype;
h.Jf = function(a) {
a = "children_added" === a ? "child_added" : a;
return ("children_removed" === a ? "child_removed" : a) in this.ga
};
h.ff = function(a, b) {
return this.qb ? new Gb(this, a, b) : null
};
h.createEvent = function(a, b) {
J(null != a.Ya, "Child events should have a childName.");
var c = b.lc().w(a.Ya);
return new Fb(a.type, this, new S(a.Ja, c, b.o.g), a.Nd)
};
h.Ub = function(a) {
var b = this.sb;
if ("cancel" === a.ye()) {
J(this.qb, "Raising a cancel event on a listener with no cancel callback");
var c = this.qb;
return function() {
c.call(b, a.error)
}
}
var d = this.ga[a.rd];
return function() {
d.call(b, a.Wd, a.Nd)
}
};
h.matches = function(a) {
if (a instanceof kd) {
if (!this.ga || !a.ga) return !0;
if (this.sb === a.sb) {
var b = pa(a.ga);
if (b === pa(this.ga)) {
if (1 === b) {
var b = qa(a.ga),
c = qa(this.ga);
return c === b && (!a.ga[b] || !this.ga[c] || a.ga[b] === this.ga[c])
}
return oa(this.ga, function(b, c) {
return a.ga[c] === b
})
}
}
}
return !1
};
h.sf = function() {
return null !== this.ga
};
function ld(a) {
this.g = a
}
h = ld.prototype;
h.G = function(a, b, c, d, e) {
J(a.Ic(this.g), "A node must be indexed if only a child is updated");
d = a.M(b);
if (d.Z(c)) return a;
null != e && (c.e() ? a.Ha(b) ? id(e, new D("child_removed", d, b)) : J(a.N(), "A child remove without an old child only makes sense on a leaf node") : d.e() ? id(e, new D("child_added", c, b)) : id(e, new D("child_changed", c, b, d)));
return a.N() && c.e() ? a : a.Q(b, c).mb(this.g)
};
h.ta = function(a, b, c) {
null != c && (a.N() || a.U(M, function(a, e) {
b.Ha(a) || id(c, new D("child_removed", e, a))
}), b.N() || b.U(M, function(b, e) {
if (a.Ha(b)) {
var f = a.M(b);
f.Z(e) || id(c, new D("child_changed", e, b, f))
} else id(c, new D("child_added", e, b))
}));
return b.mb(this.g)
};
h.da = function(a, b) {
return a.e() ? C : a.da(b)
};
h.Ga = function() {
return !1
};
h.Vb = function() {
return this
};
function md(a) {
this.Ae = new ld(a.g);
this.g = a.g;
var b;
a.la ? (b = nd(a), b = a.g.Oc(od(a), b)) : b = a.g.Sc();
this.dd = b;
a.na ? (b = pd(a), a = a.g.Oc(qd(a), b)) : a = a.g.Pc();
this.Fc = a
}
h = md.prototype;
h.matches = function(a) {
return 0 >= this.g.compare(this.dd, a) && 0 >= this.g.compare(a, this.Fc)
};
h.G = function(a, b, c, d, e) {
this.matches(new E(b, c)) || (c = C);
return this.Ae.G(a, b, c, d, e)
};
h.ta = function(a, b, c) {
b.N() && (b = C);
var d = b.mb(this.g),
d = d.da(C),
e = this;
b.U(M, function(a, b) {
e.matches(new E(a, b)) || (d = d.Q(a, C))
});
return this.Ae.ta(a, d, c)
};
h.da = function(a) {
return a
};
h.Ga = function() {
return !0
};
h.Vb = function() {
return this.Ae
};
function rd(a) {
this.ra = new md(a);
this.g = a.g;
J(a.ia, "Only valid if limit has been set");
this.ja = a.ja;
this.Jb = !sd(a)
}
h = rd.prototype;
h.G = function(a, b, c, d, e) {
this.ra.matches(new E(b, c)) || (c = C);
return a.M(b).Z(c) ? a : a.Db() < this.ja ? this.ra.Vb().G(a, b, c, d, e) : td(this, a, b, c, d, e)
};
h.ta = function(a, b, c) {
var d;
if (b.N() || b.e()) d = C.mb(this.g);
else if (2 * this.ja < b.Db() && b.Ic(this.g)) {
d = C.mb(this.g);
b = this.Jb ? b.Zb(this.ra.Fc, this.g) : b.Xb(this.ra.dd, this.g);
for (var e = 0; 0 < b.Pa.length && e < this.ja;) {
var f = H(b),
g;
if (g = this.Jb ? 0 >= this.g.compare(this.ra.dd, f) : 0 >= this.g.compare(f, this.ra.Fc)) d = d.Q(f.name, f.S), e++;
else break
}
} else {
d = b.mb(this.g);
d = d.da(C);
var k, l, m;
if (this.Jb) {
b = d.rf(this.g);
k = this.ra.Fc;
l = this.ra.dd;
var v = ud(this.g);
m = function(a, b) {
return v(b, a)
}
} else b = d.Wb(this.g), k = this.ra.dd,
l = this.ra.Fc, m = ud(this.g);
for (var e = 0, y = !1; 0 < b.Pa.length;) f = H(b), !y && 0 >= m(k, f) && (y = !0), (g = y && e < this.ja && 0 >= m(f, l)) ? e++ : d = d.Q(f.name, C)
}
return this.ra.Vb().ta(a, d, c)
};
h.da = function(a) {
return a
};
h.Ga = function() {
return !0
};
h.Vb = function() {
return this.ra.Vb()
};
function td(a, b, c, d, e, f) {
var g;
if (a.Jb) {
var k = ud(a.g);
g = function(a, b) {
return k(b, a)
}
} else g = ud(a.g);
J(b.Db() == a.ja, "");
var l = new E(c, d),
m = a.Jb ? wd(b, a.g) : xd(b, a.g),
v = a.ra.matches(l);
if (b.Ha(c)) {
var y = b.M(c),
m = e.xe(a.g, m, a.Jb);
null != m && m.name == c && (m = e.xe(a.g, m, a.Jb));
e = null == m ? 1 : g(m, l);
if (v && !d.e() && 0 <= e) return null != f && id(f, new D("child_changed", d, c, y)), b.Q(c, d);
null != f && id(f, new D("child_removed", y, c));
b = b.Q(c, C);
return null != m && a.ra.matches(m) ? (null != f && id(f, new D("child_added", m.S, m.name)), b.Q(m.name,
m.S)) : b
}
return d.e() ? b : v && 0 <= g(m, l) ? (null != f && (id(f, new D("child_removed", m.S, m.name)), id(f, new D("child_added", d, c))), b.Q(c, d).Q(m.name, C)) : b
};
function yd(a, b) {
this.he = a;
this.cg = b
}
function zd(a) {
this.I = a
}
zd.prototype.bb = function(a, b, c, d) {
var e = new hd,
f;
if (b.type === Vb) b.source.ve ? c = Ad(this, a, b.path, b.Ia, c, d, e) : (J(b.source.of, "Unknown source."), f = b.source.af, c = Bd(this, a, b.path, b.Ia, c, d, f, e));
else if (b.type === Cd) b.source.ve ? c = Dd(this, a, b.path, b.children, c, d, e) : (J(b.source.of, "Unknown source."), f = b.source.af, c = Ed(this, a, b.path, b.children, c, d, f, e));
else if (b.type === Xb)
if (b.Ve)
if (f = b.path, null != c.sc(f)) c = a;
else {
b = new qb(c, a, d);
d = a.D.j();
if (f.e() || ".priority" === O(f)) Hb(a.u()) ? b = c.ua(tb(a)) : (b = a.u().j(),
J(b instanceof T, "serverChildren would be complete if leaf node"), b = c.xc(b)), b = this.I.ta(d, b, e);
else {
f = O(f);
var g = c.Xa(f, a.u());
null == g && rb(a.u(), f) && (g = d.M(f));
b = null != g ? this.I.G(d, f, g, b, e) : a.D.j().Ha(f) ? this.I.G(d, f, C, b, e) : d;
b.e() && Hb(a.u()) && (d = c.ua(tb(a)), d.N() && (b = this.I.ta(b, d, e)))
}
d = Hb(a.u()) || null != c.sc(F);
c = Fd(a, b, d, this.I.Ga())
} else c = Gd(this, a, b.path, c, d, e);
else if (b.type === $b) d = b.path, b = a.u(), f = b.j(), g = b.$ || d.e(), c = Hd(this, new Id(a.D, new sb(f, g, b.Tb)), d, c, pb, e);
else throw Hc("Unknown operation type: " +
b.type);
e = ra(e.eb);
d = c;
b = d.D;
b.$ && (f = b.j().N() || b.j().e(), g = Jd(a), (0 < e.length || !a.D.$ || f && !b.j().Z(g) || !b.j().A().Z(g.A())) && e.push(Db(Jd(d))));
return new yd(c, e)
};
function Hd(a, b, c, d, e, f) {
var g = b.D;
if (null != d.sc(c)) return b;
var k;
if (c.e()) J(Hb(b.u()), "If change path is empty, we must have complete server data"), b.u().Tb ? (e = tb(b), d = d.xc(e instanceof T ? e : C)) : d = d.ua(tb(b)), f = a.I.ta(b.D.j(), d, f);
else {
var l = O(c);
if (".priority" == l) J(1 == uc(c), "Can't have a priority with additional path components"), f = g.j(), k = b.u().j(), d = d.hd(c, f, k), f = null != d ? a.I.da(f, d) : g.j();
else {
var m = G(c);
rb(g, l) ? (k = b.u().j(), d = d.hd(c, g.j(), k), d = null != d ? g.j().M(l).G(m, d) : g.j().M(l)) : d = d.Xa(l, b.u());
f = null != d ? a.I.G(g.j(), l, d, e, f) : g.j()
}
}
return Fd(b, f, g.$ || c.e(), a.I.Ga())
}
function Bd(a, b, c, d, e, f, g, k) {
var l = b.u();
g = g ? a.I : a.I.Vb();
if (c.e()) d = g.ta(l.j(), d, null);
else if (g.Ga() && !l.Tb) d = l.j().G(c, d), d = g.ta(l.j(), d, null);
else {
var m = O(c);
if ((c.e() ? !l.$ || l.Tb : !rb(l, O(c))) && 1 < uc(c)) return b;
d = l.j().M(m).G(G(c), d);
d = ".priority" == m ? g.da(l.j(), d) : g.G(l.j(), m, d, pb, null)
}
l = l.$ || c.e();
b = new Id(b.D, new sb(d, l, g.Ga()));
return Hd(a, b, c, e, new qb(e, b, f), k)
}
function Ad(a, b, c, d, e, f, g) {
var k = b.D;
e = new qb(e, b, f);
if (c.e()) g = a.I.ta(b.D.j(), d, g), a = Fd(b, g, !0, a.I.Ga());
else if (f = O(c), ".priority" === f) g = a.I.da(b.D.j(), d), a = Fd(b, g, k.$, k.Tb);
else {
var l = G(c);
c = k.j().M(f);
if (!l.e()) {
var m = e.pf(f);
d = null != m ? ".priority" === vc(l) && m.oa(l.parent()).e() ? m : m.G(l, d) : C
}
c.Z(d) ? a = b : (g = a.I.G(k.j(), f, d, e, g), a = Fd(b, g, k.$, a.I.Ga()))
}
return a
}
function Dd(a, b, c, d, e, f, g) {
var k = b;
Kd(d, function(d, m) {
var v = c.w(d);
rb(b.D, O(v)) && (k = Ad(a, k, v, m, e, f, g))
});
Kd(d, function(d, m) {
var v = c.w(d);
rb(b.D, O(v)) || (k = Ad(a, k, v, m, e, f, g))
});
return k
}
function Ld(a, b) {
Kd(b, function(b, d) {
a = a.G(b, d)
});
return a
}
function Ed(a, b, c, d, e, f, g, k) {
if (b.u().j().e() && !Hb(b.u())) return b;
var l = b;
c = c.e() ? d : Md(Nd, c, d);
var m = b.u().j();
c.children.ha(function(c, d) {
if (m.Ha(c)) {
var I = b.u().j().M(c),
I = Ld(I, d);
l = Bd(a, l, new K(c), I, e, f, g, k)
}
});
c.children.ha(function(c, d) {
var I = !Hb(b.u()) && null == d.value;
m.Ha(c) || I || (I = b.u().j().M(c), I = Ld(I, d), l = Bd(a, l, new K(c), I, e, f, g, k))
});
return l
}
function Gd(a, b, c, d, e, f) {
if (null != d.sc(c)) return b;
var g = new qb(d, b, e),
k = e = b.D.j();
if (Hb(b.u())) {
if (c.e()) e = d.ua(tb(b)), k = a.I.ta(b.D.j(), e, f);
else if (".priority" === O(c)) {
var l = d.Xa(O(c), b.u());
null == l || e.e() || e.A().Z(l) || (k = a.I.da(e, l))
} else l = O(c), e = d.Xa(l, b.u()), null != e && (k = a.I.G(b.D.j(), l, e, g, f));
e = !0
} else if (b.D.$ || c.e()) k = e, e = b.D.j(), e.N() || e.U(M, function(c) {
var e = d.Xa(c, b.u());
null != e && (k = a.I.G(k, c, e, g, f))
}), e = b.D.$;
else {
l = O(c);
if (1 == uc(c) || rb(b.D, l)) c = d.Xa(l, b.u()), null != c && (k = a.I.G(e, l, c,
g, f));
e = !1
}
return Fd(b, k, e, a.I.Ga())
};
function Od() {}
var Pd = {};
function ud(a) {
return q(a.compare, a)
}
Od.prototype.xd = function(a, b) {
return 0 !== this.compare(new E("[MIN_NAME]", a), new E("[MIN_NAME]", b))
};
Od.prototype.Sc = function() {
return Qd
};
function Rd(a) {
this.bc = a
}
ma(Rd, Od);
h = Rd.prototype;
h.Hc = function(a) {
return !a.M(this.bc).e()
};
h.compare = function(a, b) {
var c = a.S.M(this.bc),
d = b.S.M(this.bc),
c = c.Cc(d);
return 0 === c ? Sb(a.name, b.name) : c
};
h.Oc = function(a, b) {
var c = L(a),
c = C.Q(this.bc, c);
return new E(b, c)
};
h.Pc = function() {
var a = C.Q(this.bc, Sd);
return new E("[MAX_NAME]", a)
};
h.toString = function() {
return this.bc
};
function Td() {}
ma(Td, Od);
h = Td.prototype;
h.compare = function(a, b) {
var c = a.S.A(),
d = b.S.A(),
c = c.Cc(d);
return 0 === c ? Sb(a.name, b.name) : c
};
h.Hc = function(a) {
return !a.A().e()
};
h.xd = function(a, b) {
return !a.A().Z(b.A())
};
h.Sc = function() {
return Qd
};
h.Pc = function() {
return new E("[MAX_NAME]", new tc("[PRIORITY-POST]", Sd))
};
h.Oc = function(a, b) {
var c = L(a);
return new E(b, new tc("[PRIORITY-POST]", c))
};
h.toString = function() {
return ".priority"
};
var M = new Td;
function Ud() {}
ma(Ud, Od);
h = Ud.prototype;
h.compare = function(a, b) {
return Sb(a.name, b.name)
};
h.Hc = function() {
throw Hc("KeyIndex.isDefinedOn not expected to be called.");
};
h.xd = function() {
return !1
};
h.Sc = function() {
return Qd
};
h.Pc = function() {
return new E("[MAX_NAME]", C)
};
h.Oc = function(a) {
J(p(a), "KeyIndex indexValue must always be a string.");
return new E(a, C)
};
h.toString = function() {
return ".key"
};
var Vd = new Ud;
function Wd() {}
ma(Wd, Od);
h = Wd.prototype;
h.compare = function(a, b) {
var c = a.S.Cc(b.S);
return 0 === c ? Sb(a.name, b.name) : c
};
h.Hc = function() {
return !0
};
h.xd = function(a, b) {
return !a.Z(b)
};
h.Sc = function() {
return Qd
};
h.Pc = function() {
return Xd
};
h.Oc = function(a, b) {
var c = L(a);
return new E(b, c)
};
h.toString = function() {
return ".value"
};
var Yd = new Wd;
function Zd() {
this.Rb = this.na = this.Lb = this.la = this.ia = !1;
this.ja = 0;
this.Nb = "";
this.dc = null;
this.xb = "";
this.ac = null;
this.vb = "";
this.g = M
}
var $d = new Zd;
function sd(a) {
return "" === a.Nb ? a.la : "l" === a.Nb
}
function od(a) {
J(a.la, "Only valid if start has been set");
return a.dc
}
function nd(a) {
J(a.la, "Only valid if start has been set");
return a.Lb ? a.xb : "[MIN_NAME]"
}
function qd(a) {
J(a.na, "Only valid if end has been set");
return a.ac
}
function pd(a) {
J(a.na, "Only valid if end has been set");
return a.Rb ? a.vb : "[MAX_NAME]"
}
function ae(a) {
var b = new Zd;
b.ia = a.ia;
b.ja = a.ja;
b.la = a.la;
b.dc = a.dc;
b.Lb = a.Lb;
b.xb = a.xb;
b.na = a.na;
b.ac = a.ac;
b.Rb = a.Rb;
b.vb = a.vb;
b.g = a.g;
return b
}
h = Zd.prototype;
h.Ge = function(a) {
var b = ae(this);
b.ia = !0;
b.ja = a;
b.Nb = "";
return b
};
h.He = function(a) {
var b = ae(this);
b.ia = !0;
b.ja = a;
b.Nb = "l";
return b
};
h.Ie = function(a) {
var b = ae(this);
b.ia = !0;
b.ja = a;
b.Nb = "r";
return b
};
h.Xd = function(a, b) {
var c = ae(this);
c.la = !0;
n(a) || (a = null);
c.dc = a;
null != b ? (c.Lb = !0, c.xb = b) : (c.Lb = !1, c.xb = "");
return c
};
h.qd = function(a, b) {
var c = ae(this);
c.na = !0;
n(a) || (a = null);
c.ac = a;
n(b) ? (c.Rb = !0, c.vb = b) : (c.Yg = !1, c.vb = "");
return c
};
function be(a, b) {
var c = ae(a);
c.g = b;
return c
}
function ce(a) {
var b = {};
a.la && (b.sp = a.dc, a.Lb && (b.sn = a.xb));
a.na && (b.ep = a.ac, a.Rb && (b.en = a.vb));
if (a.ia) {
b.l = a.ja;
var c = a.Nb;
"" === c && (c = sd(a) ? "l" : "r");
b.vf = c
}
a.g !== M && (b.i = a.g.toString());
return b
}
function de(a) {
return !(a.la || a.na || a.ia)
}
function ee(a) {
var b = {};
if (de(a) && a.g == M) return b;
var c;
a.g === M ? c = "$priority" : a.g === Yd ? c = "$value" : a.g === Vd ? c = "$key" : (J(a.g instanceof Rd, "Unrecognized index type!"), c = a.g.toString());
b.orderBy = B(c);
a.la && (b.startAt = B(a.dc), a.Lb && (b.startAt += "," + B(a.xb)));
a.na && (b.endAt = B(a.ac), a.Rb && (b.endAt += "," + B(a.vb)));
a.ia && (sd(a) ? b.limitToFirst = a.ja : b.limitToLast = a.ja);
return b
}
h.toString = function() {
return B(ce(this))
};
function fe(a, b) {
this.yd = a;
this.cc = b
}
fe.prototype.get = function(a) {
var b = w(this.yd, a);
if (!b) throw Error("No index defined for " + a);
return b === Pd ? null : b
};
function ge(a, b, c) {
var d = na(a.yd, function(d, f) {
var g = w(a.cc, f);
J(g, "Missing index implementation for " + f);
if (d === Pd) {
if (g.Hc(b.S)) {
for (var k = [], l = c.Wb(Qb), m = H(l); m;) m.name != b.name && k.push(m), m = H(l);
k.push(b);
return he(k, ud(g))
}
return Pd
}
g = c.get(b.name);
k = d;
g && (k = k.remove(new E(b.name, g)));
return k.Na(b, b.S)
});
return new fe(d, a.cc)
}
function ie(a, b, c) {
var d = na(a.yd, function(a) {
if (a === Pd) return a;
var d = c.get(b.name);
return d ? a.remove(new E(b.name, d)) : a
});
return new fe(d, a.cc)
}
var je = new fe({
".priority": Pd
}, {
".priority": M
});
function tc(a, b) {
this.C = a;
J(n(this.C) && null !== this.C, "LeafNode shouldn't be created with null/undefined value.");
this.ba = b || C;
ke(this.ba);
this.Bb = null
}
h = tc.prototype;
h.N = function() {
return !0
};
h.A = function() {
return this.ba
};
h.da = function(a) {
return new tc(this.C, a)
};
h.M = function(a) {
return ".priority" === a ? this.ba : C
};
h.oa = function(a) {
return a.e() ? this : ".priority" === O(a) ? this.ba : C
};
h.Ha = function() {
return !1
};
h.qf = function() {
return null
};
h.Q = function(a, b) {
return ".priority" === a ? this.da(b) : b.e() && ".priority" !== a ? this : C.Q(a, b).da(this.ba)
};
h.G = function(a, b) {
var c = O(a);
if (null === c) return b;
if (b.e() && ".priority" !== c) return this;
J(".priority" !== c || 1 === uc(a), ".priority must be the last token in a path");
return this.Q(c, C.G(G(a), b))
};
h.e = function() {
return !1
};
h.Db = function() {
return 0
};
h.K = function(a) {
return a && !this.A().e() ? {
".value": this.Ba(),
".priority": this.A().K()
} : this.Ba()
};
h.hash = function() {
if (null === this.Bb) {
var a = "";
this.ba.e() || (a += "priority:" + le(this.ba.K()) + ":");
var b = typeof this.C,
a = a + (b + ":"),
a = "number" === b ? a + Zc(this.C) : a + this.C;
this.Bb = Jc(a)
}
return this.Bb
};
h.Ba = function() {
return this.C
};
h.Cc = function(a) {
if (a === C) return 1;
if (a instanceof T) return -1;
J(a.N(), "Unknown node type");
var b = typeof a.C,
c = typeof this.C,
d = Na(me, b),
e = Na(me, c);
J(0 <= d, "Unknown leaf type: " + b);
J(0 <= e, "Unknown leaf type: " + c);
return d === e ? "object" === c ? 0 : this.C < a.C ? -1 : this.C === a.C ? 0 : 1 : e - d
};
var me = ["object", "boolean", "number", "string"];
tc.prototype.mb = function() {
return this
};
tc.prototype.Ic = function() {
return !0
};
tc.prototype.Z = function(a) {
return a === this ? !0 : a.N() ? this.C === a.C && this.ba.Z(a.ba) : !1
};
tc.prototype.toString = function() {
return B(this.K(!0))
};
function T(a, b, c) {
this.m = a;
(this.ba = b) && ke(this.ba);
a.e() && J(!this.ba || this.ba.e(), "An empty node cannot have a priority");
this.wb = c;
this.Bb = null
}
h = T.prototype;
h.N = function() {
return !1
};
h.A = function() {
return this.ba || C
};
h.da = function(a) {
return this.m.e() ? this : new T(this.m, a, this.wb)
};
h.M = function(a) {
if (".priority" === a) return this.A();
a = this.m.get(a);
return null === a ? C : a
};
h.oa = function(a) {
var b = O(a);
return null === b ? this : this.M(b).oa(G(a))
};
h.Ha = function(a) {
return null !== this.m.get(a)
};
h.Q = function(a, b) {
J(b, "We should always be passing snapshot nodes");
if (".priority" === a) return this.da(b);
var c = new E(a, b),
d, e;
b.e() ? (d = this.m.remove(a), c = ie(this.wb, c, this.m)) : (d = this.m.Na(a, b), c = ge(this.wb, c, this.m));
e = d.e() ? C : this.ba;
return new T(d, e, c)
};
h.G = function(a, b) {
var c = O(a);
if (null === c) return b;
J(".priority" !== O(a) || 1 === uc(a), ".priority must be the last token in a path");
var d = this.M(c).G(G(a), b);
return this.Q(c, d)
};
h.e = function() {
return this.m.e()
};
h.Db = function() {
return this.m.count()
};
var ne = /^(0|[1-9]\d*)$/;
h = T.prototype;
h.K = function(a) {
if (this.e()) return null;
var b = {},
c = 0,
d = 0,
e = !0;
this.U(M, function(f, g) {
b[f] = g.K(a);
c++;
e && ne.test(f) ? d = Math.max(d, Number(f)) : e = !1
});
if (!a && e && d < 2 * c) {
var f = [],
g;
for (g in b) f[g] = b[g];
return f
}
a && !this.A().e() && (b[".priority"] = this.A().K());
return b
};
h.hash = function() {
if (null === this.Bb) {
var a = "";
this.A().e() || (a += "priority:" + le(this.A().K()) + ":");
this.U(M, function(b, c) {
var d = c.hash();
"" !== d && (a += ":" + b + ":" + d)
});
this.Bb = "" === a ? "" : Jc(a)
}
return this.Bb
};
h.qf = function(a, b, c) {
return (c = oe(this, c)) ? (a = cc(c, new E(a, b))) ? a.name : null : cc(this.m, a)
};
function wd(a, b) {
var c;
c = (c = oe(a, b)) ? (c = c.Rc()) && c.name : a.m.Rc();
return c ? new E(c, a.m.get(c)) : null
}
function xd(a, b) {
var c;
c = (c = oe(a, b)) ? (c = c.ec()) && c.name : a.m.ec();
return c ? new E(c, a.m.get(c)) : null
}
h.U = function(a, b) {
var c = oe(this, a);
return c ? c.ha(function(a) {
return b(a.name, a.S)
}) : this.m.ha(b)
};
h.Wb = function(a) {
return this.Xb(a.Sc(), a)
};
h.Xb = function(a, b) {
var c = oe(this, b);
if (c) return c.Xb(a, function(a) {
return a
});
for (var c = this.m.Xb(a.name, Qb), d = ec(c); null != d && 0 > b.compare(d, a);) H(c), d = ec(c);
return c
};
h.rf = function(a) {
return this.Zb(a.Pc(), a)
};
h.Zb = function(a, b) {
var c = oe(this, b);
if (c) return c.Zb(a, function(a) {
return a
});
for (var c = this.m.Zb(a.name, Qb), d = ec(c); null != d && 0 < b.compare(d, a);) H(c), d = ec(c);
return c
};
h.Cc = function(a) {
return this.e() ? a.e() ? 0 : -1 : a.N() || a.e() ? 1 : a === Sd ? -1 : 0
};
h.mb = function(a) {
if (a === Vd || ta(this.wb.cc, a.toString())) return this;
var b = this.wb,
c = this.m;
J(a !== Vd, "KeyIndex always exists and isn't meant to be added to the IndexMap.");
for (var d = [], e = !1, c = c.Wb(Qb), f = H(c); f;) e = e || a.Hc(f.S), d.push(f), f = H(c);
d = e ? he(d, ud(a)) : Pd;
e = a.toString();
c = xa(b.cc);
c[e] = a;
a = xa(b.yd);
a[e] = d;
return new T(this.m, this.ba, new fe(a, c))
};
h.Ic = function(a) {
return a === Vd || ta(this.wb.cc, a.toString())
};
h.Z = function(a) {
if (a === this) return !0;
if (a.N()) return !1;
if (this.A().Z(a.A()) && this.m.count() === a.m.count()) {
var b = this.Wb(M);
a = a.Wb(M);
for (var c = H(b), d = H(a); c && d;) {
if (c.name !== d.name || !c.S.Z(d.S)) return !1;
c = H(b);
d = H(a)
}
return null === c && null === d
}
return !1
};
function oe(a, b) {
return b === Vd ? null : a.wb.get(b.toString())
}
h.toString = function() {
return B(this.K(!0))
};
function L(a, b) {
if (null === a) return C;
var c = null;
"object" === typeof a && ".priority" in a ? c = a[".priority"] : "undefined" !== typeof b && (c = b);
J(null === c || "string" === typeof c || "number" === typeof c || "object" === typeof c && ".sv" in c, "Invalid priority type found: " + typeof c);
"object" === typeof a && ".value" in a && null !== a[".value"] && (a = a[".value"]);
if ("object" !== typeof a || ".sv" in a) return new tc(a, L(c));
if (a instanceof Array) {
var d = C,
e = a;
r(e, function(a, b) {
if (u(e, b) && "." !== b.substring(0, 1)) {
var c = L(a);
if (c.N() || !c.e()) d =
d.Q(b, c)
}
});
return d.da(L(c))
}
var f = [],
g = !1,
k = a;
hb(k, function(a) {
if ("string" !== typeof a || "." !== a.substring(0, 1)) {
var b = L(k[a]);
b.e() || (g = g || !b.A().e(), f.push(new E(a, b)))
}
});
if (0 == f.length) return C;
var l = he(f, Rb, function(a) {
return a.name
}, Tb);
if (g) {
var m = he(f, ud(M));
return new T(l, L(c), new fe({
".priority": m
}, {
".priority": M
}))
}
return new T(l, L(c), je)
}
var pe = Math.log(2);
function qe(a) {
this.count = parseInt(Math.log(a + 1) / pe, 10);
this.hf = this.count - 1;
this.bg = a + 1 & parseInt(Array(this.count + 1).join("1"), 2)
}
function re(a) {
var b = !(a.bg & 1 << a.hf);
a.hf--;
return b
}
function he(a, b, c, d) {
function e(b, d) {
var f = d - b;
if (0 == f) return null;
if (1 == f) {
var m = a[b],
v = c ? c(m) : m;
return new fc(v, m.S, !1, null, null)
}
var m = parseInt(f / 2, 10) + b,
f = e(b, m),
y = e(m + 1, d),
m = a[m],
v = c ? c(m) : m;
return new fc(v, m.S, !1, f, y)
}
a.sort(b);
var f = function(b) {
function d(b, g) {
var k = v - b,
y = v;
v -= b;
var y = e(k + 1, y),
k = a[k],
I = c ? c(k) : k,
y = new fc(I, k.S, g, null, y);
f ? f.left = y : m = y;
f = y
}
for (var f = null, m = null, v = a.length, y = 0; y < b.count; ++y) {
var I = re(b),
vd = Math.pow(2, b.count - (y + 1));
I ? d(vd, !1) : (d(vd, !1), d(vd, !0))
}
return m
}(new qe(a.length));
return null !== f ? new ac(d || b, f) : new ac(d || b)
}
function le(a) {
return "number" === typeof a ? "number:" + Zc(a) : "string:" + a
}
function ke(a) {
if (a.N()) {
var b = a.K();
J("string" === typeof b || "number" === typeof b || "object" === typeof b && u(b, ".sv"), "Priority must be a string or number.")
} else J(a === Sd || a.e(), "priority of unexpected type.");
J(a === Sd || a.A().e(), "Priority nodes can't have a priority of their own.")
}
var C = new T(new ac(Tb), null, je);
function se() {
T.call(this, new ac(Tb), C, je)
}
ma(se, T);
h = se.prototype;
h.Cc = function(a) {
return a === this ? 0 : 1
};
h.Z = function(a) {
return a === this
};
h.A = function() {
return this
};
h.M = function() {
return C
};
h.e = function() {
return !1
};
var Sd = new se,
Qd = new E("[MIN_NAME]", C),
Xd = new E("[MAX_NAME]", Sd);
function Id(a, b) {
this.D = a;
this.Ud = b
}
function Fd(a, b, c, d) {
return new Id(new sb(b, c, d), a.Ud)
}
function Jd(a) {
return a.D.$ ? a.D.j() : null
}
Id.prototype.u = function() {
return this.Ud
};
function tb(a) {
return a.Ud.$ ? a.Ud.j() : null
};
function te(a, b) {
this.V = a;
var c = a.o,
d = new ld(c.g),
c = de(c) ? new ld(c.g) : c.ia ? new rd(c) : new md(c);
this.Gf = new zd(c);
var e = b.u(),
f = b.D,
g = d.ta(C, e.j(), null),
k = c.ta(C, f.j(), null);
this.Ka = new Id(new sb(k, f.$, c.Ga()), new sb(g, e.$, d.Ga()));
this.Za = [];
this.ig = new dd(a)
}
function ue(a) {
return a.V
}
h = te.prototype;
h.u = function() {
return this.Ka.u().j()
};
h.hb = function(a) {
var b = tb(this.Ka);
return b && (de(this.V.o) || !a.e() && !b.M(O(a)).e()) ? b.oa(a) : null
};
h.e = function() {
return 0 === this.Za.length
};
h.Ob = function(a) {
this.Za.push(a)
};
h.kb = function(a, b) {
var c = [];
if (b) {
J(null == a, "A cancel should cancel all event registrations.");
var d = this.V.path;
Oa(this.Za, function(a) {
(a = a.ff(b, d)) && c.push(a)
})
}
if (a) {
for (var e = [], f = 0; f < this.Za.length; ++f) {
var g = this.Za[f];
if (!g.matches(a)) e.push(g);
else if (a.sf()) {
e = e.concat(this.Za.slice(f + 1));
break
}
}
this.Za = e
} else this.Za = [];
return c
};
h.bb = function(a, b, c) {
a.type === Cd && null !== a.source.Ib && (J(tb(this.Ka), "We should always have a full cache before handling merges"), J(Jd(this.Ka), "Missing event cache, even though we have a server cache"));
var d = this.Ka;
a = this.Gf.bb(d, a, b, c);
b = this.Gf;
c = a.he;
J(c.D.j().Ic(b.I.g), "Event snap not indexed");
J(c.u().j().Ic(b.I.g), "Server snap not indexed");
J(Hb(a.he.u()) || !Hb(d.u()), "Once a server snap is complete, it should never go back");
this.Ka = a.he;
return ve(this, a.cg, a.he.D.j(), null)
};
function we(a, b) {
var c = a.Ka.D,
d = [];
c.j().N() || c.j().U(M, function(a, b) {
d.push(new D("child_added", b, a))
});
c.$ && d.push(Db(c.j()));
return ve(a, d, c.j(), b)
}
function ve(a, b, c, d) {
return ed(a.ig, b, c, d ? [d] : a.Za)
};
function xe(a, b, c) {
this.type = Cd;
this.source = a;
this.path = b;
this.children = c
}
xe.prototype.Wc = function(a) {
if (this.path.e()) return a = this.children.subtree(new K(a)), a.e() ? null : a.value ? new Ub(this.source, F, a.value) : new xe(this.source, F, a);
J(O(this.path) === a, "Can't get a merge for a child not on the path of the operation");
return new xe(this.source, G(this.path), this.children)
};
xe.prototype.toString = function() {
return "Operation(" + this.path + ": " + this.source.toString() + " merge: " + this.children.toString() + ")"
};
var Vb = 0,
Cd = 1,
Xb = 2,
$b = 3;
function ye(a, b, c, d) {
this.ve = a;
this.of = b;
this.Ib = c;
this.af = d;
J(!d || b, "Tagged queries must be from server.")
}
var Yb = new ye(!0, !1, null, !1),
ze = new ye(!1, !0, null, !1);
ye.prototype.toString = function() {
return this.ve ? "user" : this.af ? "server(queryID=" + this.Ib + ")" : "server"
};
function Ae(a, b) {
this.f = Oc("p:rest:");
this.H = a;
this.Gb = b;
this.Fa = null;
this.aa = {}
}
function Be(a, b) {
if (n(b)) return "tag$" + b;
var c = a.o;
J(de(c) && c.g == M, "should have a tag if it's not a default query.");
return a.path.toString()
}
h = Ae.prototype;
h.xf = function(a, b, c, d) {
var e = a.path.toString();
this.f("Listen called for " + e + " " + a.wa());
var f = Be(a, c),
g = {};
this.aa[f] = g;
a = ee(a.o);
var k = this;
Ce(this, e + ".json", a, function(a, b) {
var v = b;
404 === a && (a = v = null);
null === a && k.Gb(e, v, !1, c);
w(k.aa, f) === g && d(a ? 401 == a ? "permission_denied" : "rest_error:" + a : "ok", null)
})
};
h.Of = function(a, b) {
var c = Be(a, b);
delete this.aa[c]
};
h.P = function(a, b) {
this.Fa = a;
var c = ad(a),
d = c.data,
c = c.Ac && c.Ac.exp;
b && b("ok", {
auth: d,
expires: c
})
};
h.ee = function(a) {
this.Fa = null;
a("ok", null)
};
h.Le = function() {};
h.Bf = function() {};
h.Gd = function() {};
h.put = function() {};
h.yf = function() {};
h.Te = function() {};
function Ce(a, b, c, d) {
c = c || {};
c.format = "export";
a.Fa && (c.auth = a.Fa);
var e = (a.H.lb ? "https://" : "http://") + a.H.host + b + "?" + jb(c);
a.f("Sending REST request for " + e);
var f = new XMLHttpRequest;
f.onreadystatechange = function() {
if (d && 4 === f.readyState) {
a.f("REST Response for " + e + " received. status:", f.status, "response:", f.responseText);
var b = null;
if (200 <= f.status && 300 > f.status) {
try {
b = mb(f.responseText)
} catch (c) {
Q("Failed to parse JSON response for " + e + ": " + f.responseText)
}
d(null, b)
} else 401 !== f.status && 404 !==
f.status && Q("Got unsuccessful REST response for " + e + " Status: " + f.status), d(f.status);
d = null
}
};
f.open("GET", e, !0);
f.send()
};
function De(a, b) {
this.value = a;
this.children = b || Ee
}
var Ee = new ac(function(a, b) {
return a === b ? 0 : a < b ? -1 : 1
});
function Fe(a) {
var b = Nd;
r(a, function(a, d) {
b = b.set(new K(d), a)
});
return b
}
h = De.prototype;
h.e = function() {
return null === this.value && this.children.e()
};
function Ge(a, b, c) {
if (null != a.value && c(a.value)) return {
path: F,
value: a.value
};
if (b.e()) return null;
var d = O(b);
a = a.children.get(d);
return null !== a ? (b = Ge(a, G(b), c), null != b ? {
path: (new K(d)).w(b.path),
value: b.value
} : null) : null
}
function He(a, b) {
return Ge(a, b, function() {
return !0
})
}
h.subtree = function(a) {
if (a.e()) return this;
var b = this.children.get(O(a));
return null !== b ? b.subtree(G(a)) : Nd
};
h.set = function(a, b) {
if (a.e()) return new De(b, this.children);
var c = O(a),
d = (this.children.get(c) || Nd).set(G(a), b),
c = this.children.Na(c, d);
return new De(this.value, c)
};
h.remove = function(a) {
if (a.e()) return this.children.e() ? Nd : new De(null, this.children);
var b = O(a),
c = this.children.get(b);
return c ? (a = c.remove(G(a)), b = a.e() ? this.children.remove(b) : this.children.Na(b, a), null === this.value && b.e() ? Nd : new De(this.value, b)) : this
};
h.get = function(a) {
if (a.e()) return this.value;
var b = this.children.get(O(a));
return b ? b.get(G(a)) : null
};
function Md(a, b, c) {
if (b.e()) return c;
var d = O(b);
b = Md(a.children.get(d) || Nd, G(b), c);
d = b.e() ? a.children.remove(d) : a.children.Na(d, b);
return new De(a.value, d)
}
function Ie(a, b) {
return Je(a, F, b)
}
function Je(a, b, c) {
var d = {};
a.children.ha(function(a, f) {
d[a] = Je(f, b.w(a), c)
});
return c(b, a.value, d)
}
function Ke(a, b, c) {
return Le(a, b, F, c)
}
function Le(a, b, c, d) {
var e = a.value ? d(c, a.value) : !1;
if (e) return e;
if (b.e()) return null;
e = O(b);
return (a = a.children.get(e)) ? Le(a, G(b), c.w(e), d) : null
}
function Me(a, b, c) {
var d = F;
if (!b.e()) {
var e = !0;
a.value && (e = c(d, a.value));
!0 === e && (e = O(b), (a = a.children.get(e)) && Ne(a, G(b), d.w(e), c))
}
}
function Ne(a, b, c, d) {
if (b.e()) return a;
a.value && d(c, a.value);
var e = O(b);
return (a = a.children.get(e)) ? Ne(a, G(b), c.w(e), d) : Nd
}
function Kd(a, b) {
Oe(a, F, b)
}
function Oe(a, b, c) {
a.children.ha(function(a, e) {
Oe(e, b.w(a), c)
});
a.value && c(b, a.value)
}
function Pe(a, b) {
a.children.ha(function(a, d) {
d.value && b(a, d.value)
})
}
var Nd = new De(null);
De.prototype.toString = function() {
var a = {};
Kd(this, function(b, c) {
a[b.toString()] = c.toString()
});
return B(a)
};
function Qe(a) {
this.W = a
}
var Re = new Qe(new De(null));
function Se(a, b, c) {
if (b.e()) return new Qe(new De(c));
var d = He(a.W, b);
if (null != d) {
var e = d.path,
d = d.value;
b = N(e, b);
d = d.G(b, c);
return new Qe(a.W.set(e, d))
}
a = Md(a.W, b, new De(c));
return new Qe(a)
}
function Te(a, b, c) {
var d = a;
hb(c, function(a, c) {
d = Se(d, b.w(a), c)
});
return d
}
Qe.prototype.Od = function(a) {
if (a.e()) return Re;
a = Md(this.W, a, Nd);
return new Qe(a)
};
function Ue(a, b) {
var c = He(a.W, b);
return null != c ? a.W.get(c.path).oa(N(c.path, b)) : null
}
function Ve(a) {
var b = [],
c = a.W.value;
null != c ? c.N() || c.U(M, function(a, c) {
b.push(new E(a, c))
}) : a.W.children.ha(function(a, c) {
null != c.value && b.push(new E(a, c.value))
});
return b
}
function We(a, b) {
if (b.e()) return a;
var c = Ue(a, b);
return null != c ? new Qe(new De(c)) : new Qe(a.W.subtree(b))
}
Qe.prototype.e = function() {
return this.W.e()
};
Qe.prototype.apply = function(a) {
return Xe(F, this.W, a)
};
function Xe(a, b, c) {
if (null != b.value) return c.G(a, b.value);
var d = null;
b.children.ha(function(b, f) {
".priority" === b ? (J(null !== f.value, "Priority writes must always be leaf nodes"), d = f.value) : c = Xe(a.w(b), f, c)
});
c.oa(a).e() || null === d || (c = c.G(a.w(".priority"), d));
return c
};
function Ye() {
this.T = Re;
this.za = [];
this.Lc = -1
}
h = Ye.prototype;
h.Od = function(a) {
var b = Ua(this.za, function(b) {
return b.ie === a
});
J(0 <= b, "removeWrite called with nonexistent writeId.");
var c = this.za[b];
this.za.splice(b, 1);
for (var d = c.visible, e = !1, f = this.za.length - 1; d && 0 <= f;) {
var g = this.za[f];
g.visible && (f >= b && Ze(g, c.path) ? d = !1 : c.path.contains(g.path) && (e = !0));
f--
}
if (d) {
if (e) this.T = $e(this.za, af, F), this.Lc = 0 < this.za.length ? this.za[this.za.length - 1].ie : -1;
else if (c.Ia) this.T = this.T.Od(c.path);
else {
var k = this;
r(c.children, function(a, b) {
k.T = k.T.Od(c.path.w(b))
})
}
return c.path
}
return null
};
h.ua = function(a, b, c, d) {
if (c || d) {
var e = We(this.T, a);
return !d && e.e() ? b : d || null != b || null != Ue(e, F) ? (e = $e(this.za, function(b) {
return (b.visible || d) && (!c || !(0 <= Na(c, b.ie))) && (b.path.contains(a) || a.contains(b.path))
}, a), b = b || C, e.apply(b)) : null
}
e = Ue(this.T, a);
if (null != e) return e;
e = We(this.T, a);
return e.e() ? b : null != b || null != Ue(e, F) ? (b = b || C, e.apply(b)) : null
};
h.xc = function(a, b) {
var c = C,
d = Ue(this.T, a);
if (d) d.N() || d.U(M, function(a, b) {
c = c.Q(a, b)
});
else if (b) {
var e = We(this.T, a);
b.U(M, function(a, b) {
var d = We(e, new K(a)).apply(b);
c = c.Q(a, d)
});
Oa(Ve(e), function(a) {
c = c.Q(a.name, a.S)
})
} else e = We(this.T, a), Oa(Ve(e), function(a) {
c = c.Q(a.name, a.S)
});
return c
};
h.hd = function(a, b, c, d) {
J(c || d, "Either existingEventSnap or existingServerSnap must exist");
a = a.w(b);
if (null != Ue(this.T, a)) return null;
a = We(this.T, a);
return a.e() ? d.oa(b) : a.apply(d.oa(b))
};
h.Xa = function(a, b, c) {
a = a.w(b);
var d = Ue(this.T, a);
return null != d ? d : rb(c, b) ? We(this.T, a).apply(c.j().M(b)) : null
};
h.sc = function(a) {
return Ue(this.T, a)
};
h.me = function(a, b, c, d, e, f) {
var g;
a = We(this.T, a);
g = Ue(a, F);
if (null == g)
if (null != b) g = a.apply(b);
else return [];
g = g.mb(f);
if (g.e() || g.N()) return [];
b = [];
a = ud(f);
e = e ? g.Zb(c, f) : g.Xb(c, f);
for (f = H(e); f && b.length < d;) 0 !== a(f, c) && b.push(f), f = H(e);
return b
};
function Ze(a, b) {
return a.Ia ? a.path.contains(b) : !!ua(a.children, function(c, d) {
return a.path.w(d).contains(b)
})
}
function af(a) {
return a.visible
}
function $e(a, b, c) {
for (var d = Re, e = 0; e < a.length; ++e) {
var f = a[e];
if (b(f)) {
var g = f.path;
if (f.Ia) c.contains(g) ? (g = N(c, g), d = Se(d, g, f.Ia)) : g.contains(c) && (g = N(g, c), d = Se(d, F, f.Ia.oa(g)));
else if (f.children)
if (c.contains(g)) g = N(c, g), d = Te(d, g, f.children);
else {
if (g.contains(c))
if (g = N(g, c), g.e()) d = Te(d, F, f.children);
else if (f = w(f.children, O(g))) f = f.oa(G(g)), d = Se(d, F, f)
} else throw Hc("WriteRecord should have .snap or .children");
}
}
return d
}
function bf(a, b) {
this.Mb = a;
this.W = b
}
h = bf.prototype;
h.ua = function(a, b, c) {
return this.W.ua(this.Mb, a, b, c)
};
h.xc = function(a) {
return this.W.xc(this.Mb, a)
};
h.hd = function(a, b, c) {
return this.W.hd(this.Mb, a, b, c)
};
h.sc = function(a) {
return this.W.sc(this.Mb.w(a))
};
h.me = function(a, b, c, d, e) {
return this.W.me(this.Mb, a, b, c, d, e)
};
h.Xa = function(a, b) {
return this.W.Xa(this.Mb, a, b)
};
h.w = function(a) {
return new bf(this.Mb.w(a), this.W)
};
function cf() {
this.ya = {}
}
h = cf.prototype;
h.e = function() {
return wa(this.ya)
};
h.bb = function(a, b, c) {
var d = a.source.Ib;
if (null !== d) return d = w(this.ya, d), J(null != d, "SyncTree gave us an op for an invalid query."), d.bb(a, b, c);
var e = [];
r(this.ya, function(d) {
e = e.concat(d.bb(a, b, c))
});
return e
};
h.Ob = function(a, b, c, d, e) {
var f = a.wa(),
g = w(this.ya, f);
if (!g) {
var g = c.ua(e ? d : null),
k = !1;
g ? k = !0 : (g = d instanceof T ? c.xc(d) : C, k = !1);
g = new te(a, new Id(new sb(g, k, !1), new sb(d, e, !1)));
this.ya[f] = g
}
g.Ob(b);
return we(g, b)
};
h.kb = function(a, b, c) {
var d = a.wa(),
e = [],
f = [],
g = null != df(this);
if ("default" === d) {
var k = this;
r(this.ya, function(a, d) {
f = f.concat(a.kb(b, c));
a.e() && (delete k.ya[d], de(a.V.o) || e.push(a.V))
})
} else {
var l = w(this.ya, d);
l && (f = f.concat(l.kb(b, c)), l.e() && (delete this.ya[d], de(l.V.o) || e.push(l.V)))
}
g && null == df(this) && e.push(new U(a.k, a.path));
return {
Hg: e,
jg: f
}
};
function ef(a) {
return Pa(ra(a.ya), function(a) {
return !de(a.V.o)
})
}
h.hb = function(a) {
var b = null;
r(this.ya, function(c) {
b = b || c.hb(a)
});
return b
};
function ff(a, b) {
if (de(b.o)) return df(a);
var c = b.wa();
return w(a.ya, c)
}
function df(a) {
return va(a.ya, function(a) {
return de(a.V.o)
}) || null
};
function gf(a) {
this.sa = Nd;
this.Hb = new Ye;
this.$e = {};
this.kc = {};
this.Mc = a
}
function hf(a, b, c, d, e) {
var f = a.Hb,
g = e;
J(d > f.Lc, "Stacking an older write on top of newer ones");
n(g) || (g = !0);
f.za.push({
path: b,
Ia: c,
ie: d,
visible: g
});
g && (f.T = Se(f.T, b, c));
f.Lc = d;
return e ? jf(a, new Ub(Yb, b, c)) : []
}
function kf(a, b, c, d) {
var e = a.Hb;
J(d > e.Lc, "Stacking an older merge on top of newer ones");
e.za.push({
path: b,
children: c,
ie: d,
visible: !0
});
e.T = Te(e.T, b, c);
e.Lc = d;
c = Fe(c);
return jf(a, new xe(Yb, b, c))
}
function lf(a, b, c) {
c = c || !1;
b = a.Hb.Od(b);
return null == b ? [] : jf(a, new Wb(b, c))
}
function mf(a, b, c) {
c = Fe(c);
return jf(a, new xe(ze, b, c))
}
function nf(a, b, c, d) {
d = of(a, d);
if (null != d) {
var e = pf(d);
d = e.path;
e = e.Ib;
b = N(d, b);
c = new Ub(new ye(!1, !0, e, !0), b, c);
return qf(a, d, c)
}
return []
}
function rf(a, b, c, d) {
if (d = of(a, d)) {
var e = pf(d);
d = e.path;
e = e.Ib;
b = N(d, b);
c = Fe(c);
c = new xe(new ye(!1, !0, e, !0), b, c);
return qf(a, d, c)
}
return []
}
gf.prototype.Ob = function(a, b) {
var c = a.path,
d = null,
e = !1;
Me(this.sa, c, function(a, b) {
var f = N(a, c);
d = b.hb(f);
e = e || null != df(b);
return !d
});
var f = this.sa.get(c);
f ? (e = e || null != df(f), d = d || f.hb(F)) : (f = new cf, this.sa = this.sa.set(c, f));
var g;
null != d ? g = !0 : (g = !1, d = C, Pe(this.sa.subtree(c), function(a, b) {
var c = b.hb(F);
c && (d = d.Q(a, c))
}));
var k = null != ff(f, a);
if (!k && !de(a.o)) {
var l = sf(a);
J(!(l in this.kc), "View does not exist, but we have a tag");
var m = tf++;
this.kc[l] = m;
this.$e["_" + m] = l
}
g = f.Ob(a, b, new bf(c, this.Hb),
d, g);
k || e || (f = ff(f, a), g = g.concat(uf(this, a, f)));
return g
};
gf.prototype.kb = function(a, b, c) {
var d = a.path,
e = this.sa.get(d),
f = [];
if (e && ("default" === a.wa() || null != ff(e, a))) {
f = e.kb(a, b, c);
e.e() && (this.sa = this.sa.remove(d));
e = f.Hg;
f = f.jg;
b = -1 !== Ua(e, function(a) {
return de(a.o)
});
var g = Ke(this.sa, d, function(a, b) {
return null != df(b)
});
if (b && !g && (d = this.sa.subtree(d), !d.e()))
for (var d = vf(d), k = 0; k < d.length; ++k) {
var l = d[k],
m = l.V,
l = wf(this, l);
this.Mc.Xe(m, xf(this, m), l.ud, l.J)
}
if (!g && 0 < e.length && !c)
if (b) this.Mc.Zd(a, null);
else {
var v = this;
Oa(e, function(a) {
a.wa();
var b = v.kc[sf(a)];
v.Mc.Zd(a, b)
})
}
yf(this, e)
}
return f
};
gf.prototype.ua = function(a, b) {
var c = this.Hb,
d = Ke(this.sa, a, function(b, c) {
var d = N(b, a);
if (d = c.hb(d)) return d
});
return c.ua(a, d, b, !0)
};
function vf(a) {
return Ie(a, function(a, c, d) {
if (c && null != df(c)) return [df(c)];
var e = [];
c && (e = ef(c));
r(d, function(a) {
e = e.concat(a)
});
return e
})
}
function yf(a, b) {
for (var c = 0; c < b.length; ++c) {
var d = b[c];
if (!de(d.o)) {
var d = sf(d),
e = a.kc[d];
delete a.kc[d];
delete a.$e["_" + e]
}
}
}
function uf(a, b, c) {
var d = b.path,
e = xf(a, b);
c = wf(a, c);
b = a.Mc.Xe(b, e, c.ud, c.J);
d = a.sa.subtree(d);
if (e) J(null == df(d.value), "If we're adding a query, it shouldn't be shadowed");
else
for (e = Ie(d, function(a, b, c) {
if (!a.e() && b && null != df(b)) return [ue(df(b))];
var d = [];
b && (d = d.concat(Qa(ef(b), function(a) {
return a.V
})));
r(c, function(a) {
d = d.concat(a)
});
return d
}), d = 0; d < e.length; ++d) c = e[d], a.Mc.Zd(c, xf(a, c));
return b
}
function wf(a, b) {
var c = b.V,
d = xf(a, c);
return {
ud: function() {
return (b.u() || C).hash()
},
J: function(b) {
if ("ok" === b) {
if (d) {
var f = c.path;
if (b = of(a, d)) {
var g = pf(b);
b = g.path;
g = g.Ib;
f = N(b, f);
f = new Zb(new ye(!1, !0, g, !0), f);
b = qf(a, b, f)
} else b = []
} else b = jf(a, new Zb(ze, c.path));
return b
}
f = "Unknown Error";
"too_big" === b ? f = "The data requested exceeds the maximum size that can be accessed with a single request." : "permission_denied" == b ? f = "Client doesn't have permission to access the desired data." : "unavailable" == b &&
(f = "The service is unavailable");
f = Error(b + ": " + f);
f.code = b.toUpperCase();
return a.kb(c, null, f)
}
}
}
function sf(a) {
return a.path.toString() + "$" + a.wa()
}
function pf(a) {
var b = a.indexOf("$");
J(-1 !== b && b < a.length - 1, "Bad queryKey.");
return {
Ib: a.substr(b + 1),
path: new K(a.substr(0, b))
}
}
function of(a, b) {
var c = a.$e,
d = "_" + b;
return d in c ? c[d] : void 0
}
function xf(a, b) {
var c = sf(b);
return w(a.kc, c)
}
var tf = 1;
function qf(a, b, c) {
var d = a.sa.get(b);
J(d, "Missing sync point for query tag that we're tracking");
return d.bb(c, new bf(b, a.Hb), null)
}
function jf(a, b) {
return zf(a, b, a.sa, null, new bf(F, a.Hb))
}
function zf(a, b, c, d, e) {
if (b.path.e()) return Af(a, b, c, d, e);
var f = c.get(F);
null == d && null != f && (d = f.hb(F));
var g = [],
k = O(b.path),
l = b.Wc(k);
if ((c = c.children.get(k)) && l) var m = d ? d.M(k) : null,
k = e.w(k),
g = g.concat(zf(a, l, c, m, k));
f && (g = g.concat(f.bb(b, e, d)));
return g
}
function Af(a, b, c, d, e) {
var f = c.get(F);
null == d && null != f && (d = f.hb(F));
var g = [];
c.children.ha(function(c, f) {
var m = d ? d.M(c) : null,
v = e.w(c),
y = b.Wc(c);
y && (g = g.concat(Af(a, y, f, m, v)))
});
f && (g = g.concat(f.bb(b, e, d)));
return g
};
function Bf() {
this.children = {};
this.kd = 0;
this.value = null
}
function Cf(a, b, c) {
this.Dd = a ? a : "";
this.Yc = b ? b : null;
this.B = c ? c : new Bf
}
function Df(a, b) {
for (var c = b instanceof K ? b : new K(b), d = a, e; null !== (e = O(c));) d = new Cf(e, d, w(d.B.children, e) || new Bf), c = G(c);
return d
}
h = Cf.prototype;
h.Ba = function() {
return this.B.value
};
function Ef(a, b) {
J("undefined" !== typeof b, "Cannot set value to undefined");
a.B.value = b;
Ff(a)
}
h.clear = function() {
this.B.value = null;
this.B.children = {};
this.B.kd = 0;
Ff(this)
};
h.td = function() {
return 0 < this.B.kd
};
h.e = function() {
return null === this.Ba() && !this.td()
};
h.U = function(a) {
var b = this;
r(this.B.children, function(c, d) {
a(new Cf(d, b, c))
})
};
function Gf(a, b, c, d) {
c && !d && b(a);
a.U(function(a) {
Gf(a, b, !0, d)
});
c && d && b(a)
}
function Hf(a, b) {
for (var c = a.parent(); null !== c && !b(c);) c = c.parent()
}
h.path = function() {
return new K(null === this.Yc ? this.Dd : this.Yc.path() + "/" + this.Dd)
};
h.name = function() {
return this.Dd
};
h.parent = function() {
return this.Yc
};
function Ff(a) {
if (null !== a.Yc) {
var b = a.Yc,
c = a.Dd,
d = a.e(),
e = u(b.B.children, c);
d && e ? (delete b.B.children[c], b.B.kd--, Ff(b)) : d || e || (b.B.children[c] = a.B, b.B.kd++, Ff(b))
}
};
function If(a) {
J(ea(a) && 0 < a.length, "Requires a non-empty array");
this.Uf = a;
this.Nc = {}
}
If.prototype.de = function(a, b) {
for (var c = this.Nc[a] || [], d = 0; d < c.length; d++) c[d].yc.apply(c[d].Ma, Array.prototype.slice.call(arguments, 1))
};
If.prototype.Eb = function(a, b, c) {
Jf(this, a);
this.Nc[a] = this.Nc[a] || [];
this.Nc[a].push({
yc: b,
Ma: c
});
(a = this.ze(a)) && b.apply(c, a)
};
If.prototype.gc = function(a, b, c) {
Jf(this, a);
a = this.Nc[a] || [];
for (var d = 0; d < a.length; d++)
if (a[d].yc === b && (!c || c === a[d].Ma)) {
a.splice(d, 1);
break
}
};
function Jf(a, b) {
J(Ta(a.Uf, function(a) {
return a === b
}), "Unknown event: " + b)
};
var Kf = function() {
var a = 0,
b = [];
return function(c) {
var d = c === a;
a = c;
for (var e = Array(8), f = 7; 0 <= f; f--) e[f] = "-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".charAt(c % 64), c = Math.floor(c / 64);
J(0 === c, "Cannot push at time == 0");
c = e.join("");
if (d) {
for (f = 11; 0 <= f && 63 === b[f]; f--) b[f] = 0;
b[f]++
} else
for (f = 0; 12 > f; f++) b[f] = Math.floor(64 * Math.random());
for (f = 0; 12 > f; f++) c += "-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".charAt(b[f]);
J(20 === c.length, "nextPushId: Length should be 20.");
return c
}
}();
function Lf() {
If.call(this, ["online"]);
this.ic = !0;
if ("undefined" !== typeof window && "undefined" !== typeof window.addEventListener) {
var a = this;
window.addEventListener("online", function() {
a.ic || (a.ic = !0, a.de("online", !0))
}, !1);
window.addEventListener("offline", function() {
a.ic && (a.ic = !1, a.de("online", !1))
}, !1)
}
}
ma(Lf, If);
Lf.prototype.ze = function(a) {
J("online" === a, "Unknown event type: " + a);
return [this.ic]
};
ca(Lf);
function Mf() {
If.call(this, ["visible"]);
var a, b;
"undefined" !== typeof document && "undefined" !== typeof document.addEventListener && ("undefined" !== typeof document.hidden ? (b = "visibilitychange", a = "hidden") : "undefined" !== typeof document.mozHidden ? (b = "mozvisibilitychange", a = "mozHidden") : "undefined" !== typeof document.msHidden ? (b = "msvisibilitychange", a = "msHidden") : "undefined" !== typeof document.webkitHidden && (b = "webkitvisibilitychange", a = "webkitHidden"));
this.uc = !0;
if (b) {
var c = this;
document.addEventListener(b,
function() {
var b = !document[a];
b !== c.uc && (c.uc = b, c.de("visible", b))
}, !1)
}
}
ma(Mf, If);
Mf.prototype.ze = function(a) {
J("visible" === a, "Unknown event type: " + a);
return [this.uc]
};
ca(Mf);
var Nf = /[\[\].#$\/\u0000-\u001F\u007F]/,
Of = /[\[\].#$\u0000-\u001F\u007F]/,
Pf = /^[a-zA-Z][a-zA-Z._\-+]+$/;
function Qf(a) {
return p(a) && 0 !== a.length && !Nf.test(a)
}
function Rf(a) {
return null === a || p(a) || ga(a) && !Sc(a) || ia(a) && u(a, ".sv")
}
function Sf(a, b, c, d) {
d && !n(b) || Tf(z(a, 1, d), b, c)
}
function Tf(a, b, c) {
c instanceof K && (c = new wc(c, a));
if (!n(b)) throw Error(a + "contains undefined " + zc(c));
if (ha(b)) throw Error(a + "contains a function " + zc(c) + " with contents: " + b.toString());
if (Sc(b)) throw Error(a + "contains " + b.toString() + " " + zc(c));
if (p(b) && b.length > 10485760 / 3 && 10485760 < xc(b)) throw Error(a + "contains a string greater than 10485760 utf8 bytes " + zc(c) + " ('" + b.substring(0, 50) + "...')");
if (ia(b)) {
var d = !1,
e = !1;
hb(b, function(b, g) {
if (".value" === b) d = !0;
else if (".priority" !== b && ".sv" !== b && (e = !0, !Qf(b))) throw Error(a + " contains an invalid key (" + b + ") " + zc(c) + '. Keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]"');
c.push(b);
Tf(a, g, c);
c.pop()
});
if (d && e) throw Error(a + ' contains ".value" child ' + zc(c) + " in addition to actual children.");
}
}
function Uf(a, b, c) {
if (!ia(b) || ea(b)) throw Error(z(a, 1, !1) + " must be an Object containing the children to replace.");
if (u(b, ".value")) throw Error(z(a, 1, !1) + ' must not contain ".value". To overwrite with a leaf value, just use .set() instead.');
Sf(a, b, c, !1)
}
function Vf(a, b, c) {
if (Sc(c)) throw Error(z(a, b, !1) + "is " + c.toString() + ", but must be a valid Firebase priority (a string, finite number, server value, or null).");
if (!Rf(c)) throw Error(z(a, b, !1) + "must be a valid Firebase priority (a string, finite number, server value, or null).");
}
function Wf(a, b, c) {
if (!c || n(b)) switch (b) {
case "value":
case "child_added":
case "child_removed":
case "child_changed":
case "child_moved":
break;
default:
throw Error(z(a, 1, c) + 'must be a valid event type: "value", "child_added", "child_removed", "child_changed", or "child_moved".');
}
}
function Xf(a, b, c, d) {
if ((!d || n(c)) && !Qf(c)) throw Error(z(a, b, d) + 'was an invalid key: "' + c + '". Firebase keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]").');
}
function Yf(a, b) {
if (!p(b) || 0 === b.length || Of.test(b)) throw Error(z(a, 1, !1) + 'was an invalid path: "' + b + '". Paths must be non-empty strings and can\'t contain ".", "#", "$", "[", or "]"');
}
function Zf(a, b) {
if (".info" === O(b)) throw Error(a + " failed: Can't modify data under /.info/");
}
function $f(a, b) {
if (!p(b)) throw Error(z(a, 1, !1) + "must be a valid credential (a string).");
}
function ag(a, b, c) {
if (!p(c)) throw Error(z(a, b, !1) + "must be a valid string.");
}
function bg(a, b) {
ag(a, 1, b);
if (!Pf.test(b)) throw Error(z(a, 1, !1) + "'" + b + "' is not a valid authentication provider.");
}
function cg(a, b, c, d) {
if (!d || n(c))
if (!ia(c) || null === c) throw Error(z(a, b, d) + "must be a valid object.");
}
function dg(a, b, c) {
if (!ia(b) || !u(b, c)) throw Error(z(a, 1, !1) + 'must contain the key "' + c + '"');
if (!p(w(b, c))) throw Error(z(a, 1, !1) + 'must contain the key "' + c + '" with type "string"');
};
function eg() {
this.set = {}
}
h = eg.prototype;
h.add = function(a, b) {
this.set[a] = null !== b ? b : !0
};
h.contains = function(a) {
return u(this.set, a)
};
h.get = function(a) {
return this.contains(a) ? this.set[a] : void 0
};
h.remove = function(a) {
delete this.set[a]
};
h.clear = function() {
this.set = {}
};
h.e = function() {
return wa(this.set)
};
h.count = function() {
return pa(this.set)
};
function fg(a, b) {
r(a.set, function(a, d) {
b(d, a)
})
}
h.keys = function() {
var a = [];
r(this.set, function(b, c) {
a.push(c)
});
return a
};
function qc() {
this.m = this.C = null
}
qc.prototype.find = function(a) {
if (null != this.C) return this.C.oa(a);
if (a.e() || null == this.m) return null;
var b = O(a);
a = G(a);
return this.m.contains(b) ? this.m.get(b).find(a) : null
};
qc.prototype.mc = function(a, b) {
if (a.e()) this.C = b, this.m = null;
else if (null !== this.C) this.C = this.C.G(a, b);
else {
null == this.m && (this.m = new eg);
var c = O(a);
this.m.contains(c) || this.m.add(c, new qc);
c = this.m.get(c);
a = G(a);
c.mc(a, b)
}
};
function gg(a, b) {
if (b.e()) return a.C = null, a.m = null, !0;
if (null !== a.C) {
if (a.C.N()) return !1;
var c = a.C;
a.C = null;
c.U(M, function(b, c) {
a.mc(new K(b), c)
});
return gg(a, b)
}
return null !== a.m ? (c = O(b), b = G(b), a.m.contains(c) && gg(a.m.get(c), b) && a.m.remove(c), a.m.e() ? (a.m = null, !0) : !1) : !0
}
function rc(a, b, c) {
null !== a.C ? c(b, a.C) : a.U(function(a, e) {
var f = new K(b.toString() + "/" + a);
rc(e, f, c)
})
}
qc.prototype.U = function(a) {
null !== this.m && fg(this.m, function(b, c) {
a(b, c)
})
};
var hg = "auth.firebase.com";
function ig(a, b, c) {
this.ld = a || {};
this.ce = b || {};
this.ab = c || {};
this.ld.remember || (this.ld.remember = "default")
}
var jg = ["remember", "redirectTo"];
function kg(a) {
var b = {},
c = {};
hb(a || {}, function(a, e) {
0 <= Na(jg, a) ? b[a] = e : c[a] = e
});
return new ig(b, {}, c)
};
function lg(a, b) {
this.Pe = ["session", a.Ld, a.Cb].join(":");
this.$d = b
}
lg.prototype.set = function(a, b) {
if (!b)
if (this.$d.length) b = this.$d[0];
else throw Error("fb.login.SessionManager : No storage options available!");
b.set(this.Pe, a)
};
lg.prototype.get = function() {
var a = Qa(this.$d, q(this.ng, this)),
a = Pa(a, function(a) {
return null !== a
});
Xa(a, function(a, c) {
return bd(c.token) - bd(a.token)
});
return 0 < a.length ? a.shift() : null
};
lg.prototype.ng = function(a) {
try {
var b = a.get(this.Pe);
if (b && b.token) return b
} catch (c) {}
return null
};
lg.prototype.clear = function() {
var a = this;
Oa(this.$d, function(b) {
b.remove(a.Pe)
})
};
function mg() {
return "undefined" !== typeof navigator && "string" === typeof navigator.userAgent ? navigator.userAgent : ""
}
function ng() {
return "undefined" !== typeof window && !!(window.cordova || window.phonegap || window.PhoneGap) && /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(mg())
}
function og() {
return "undefined" !== typeof location && /^file:\//.test(location.href)
}
function pg(a) {
var b = mg();
if ("" === b) return !1;
if ("Microsoft Internet Explorer" === navigator.appName) {
if ((b = b.match(/MSIE ([0-9]{1,}[\.0-9]{0,})/)) && 1 < b.length) return parseFloat(b[1]) >= a
} else if (-1 < b.indexOf("Trident") && (b = b.match(/rv:([0-9]{2,2}[\.0-9]{0,})/)) && 1 < b.length) return parseFloat(b[1]) >= a;
return !1
};
function qg() {
var a = window.opener.frames,
b;
for (b = a.length - 1; 0 <= b; b--) try {
if (a[b].location.protocol === window.location.protocol && a[b].location.host === window.location.host && "__winchan_relay_frame" === a[b].name) return a[b]
} catch (c) {}
return null
}
function rg(a, b, c) {
a.attachEvent ? a.attachEvent("on" + b, c) : a.addEventListener && a.addEventListener(b, c, !1)
}
function sg(a, b, c) {
a.detachEvent ? a.detachEvent("on" + b, c) : a.removeEventListener && a.removeEventListener(b, c, !1)
}
function tg(a) {
/^https?:\/\//.test(a) || (a = window.location.href);
var b = /^(https?:\/\/[\-_a-zA-Z\.0-9:]+)/.exec(a);
return b ? b[1] : a
}
function ug(a) {
var b = "";
try {
a = a.replace("#", "");
var c = kb(a);
c && u(c, "__firebase_request_key") && (b = w(c, "__firebase_request_key"))
} catch (d) {}
return b
}
function vg() {
var a = Rc(hg);
return a.scheme + "://" + a.host + "/v2"
}
function wg(a) {
return vg() + "/" + a + "/auth/channel"
};
function xg(a) {
var b = this;
this.zc = a;
this.ae = "*";
pg(8) ? this.Qc = this.wd = qg() : (this.Qc = window.opener, this.wd = window);
if (!b.Qc) throw "Unable to find relay frame";
rg(this.wd, "message", q(this.hc, this));
rg(this.wd, "message", q(this.Af, this));
try {
yg(this, {
a: "ready"
})
} catch (c) {
rg(this.Qc, "load", function() {
yg(b, {
a: "ready"
})
})
}
rg(window, "unload", q(this.yg, this))
}
function yg(a, b) {
b = B(b);
pg(8) ? a.Qc.doPost(b, a.ae) : a.Qc.postMessage(b, a.ae)
}
xg.prototype.hc = function(a) {
var b = this,
c;
try {
c = mb(a.data)
} catch (d) {}
c && "request" === c.a && (sg(window, "message", this.hc), this.ae = a.origin, this.zc && setTimeout(function() {
b.zc(b.ae, c.d, function(a, c) {
b.ag = !c;
b.zc = void 0;
yg(b, {
a: "response",
d: a,
forceKeepWindowOpen: c
})
})
}, 0))
};
xg.prototype.yg = function() {
try {
sg(this.wd, "message", this.Af)
} catch (a) {}
this.zc && (yg(this, {
a: "error",
d: "unknown closed window"
}), this.zc = void 0);
try {
window.close()
} catch (b) {}
};
xg.prototype.Af = function(a) {
if (this.ag && "die" === a.data) try {
window.close()
} catch (b) {}
};
function zg(a) {
this.oc = Ga() + Ga() + Ga();
this.Df = a
}
zg.prototype.open = function(a, b) {
P.set("redirect_request_id", this.oc);
P.set("redirect_request_id", this.oc);
b.requestId = this.oc;
b.redirectTo = b.redirectTo || window.location.href;
a += (/\?/.test(a) ? "" : "?") + jb(b);
window.location = a
};
zg.isAvailable = function() {
return !og() && !ng()
};
zg.prototype.Bc = function() {
return "redirect"
};
var Ag = {
NETWORK_ERROR: "Unable to contact the Firebase server.",
SERVER_ERROR: "An unknown server error occurred.",
TRANSPORT_UNAVAILABLE: "There are no login transports available for the requested method.",
REQUEST_INTERRUPTED: "The browser redirected the page before the login request could complete.",
USER_CANCELLED: "The user cancelled authentication."
};
function Bg(a) {
var b = Error(w(Ag, a), a);
b.code = a;
return b
};
function Cg(a) {
var b;
(b = !a.window_features) || (b = mg(), b = -1 !== b.indexOf("Fennec/") || -1 !== b.indexOf("Firefox/") && -1 !== b.indexOf("Android"));
b && (a.window_features = void 0);
a.window_name || (a.window_name = "_blank");
this.options = a
}
Cg.prototype.open = function(a, b, c) {
function d(a) {
g && (document.body.removeChild(g), g = void 0);
v && (v = clearInterval(v));
sg(window, "message", e);
sg(window, "unload", d);
if (m && !a) try {
m.close()
} catch (b) {
k.postMessage("die", l)
}
m = k = void 0
}
function e(a) {
if (a.origin === l) try {
var b = mb(a.data);
"ready" === b.a ? k.postMessage(y, l) : "error" === b.a ? (d(!1), c && (c(b.d), c = null)) : "response" === b.a && (d(b.forceKeepWindowOpen), c && (c(null, b.d), c = null))
} catch (e) {}
}
var f = pg(8),
g, k;
if (!this.options.relay_url) return c(Error("invalid arguments: origin of url and relay_url must match"));
var l = tg(a);
if (l !== tg(this.options.relay_url)) c && setTimeout(function() {
c(Error("invalid arguments: origin of url and relay_url must match"))
}, 0);
else {
f && (g = document.createElement("iframe"), g.setAttribute("src", this.options.relay_url), g.style.display = "none", g.setAttribute("name", "__winchan_relay_frame"), document.body.appendChild(g), k = g.contentWindow);
a += (/\?/.test(a) ? "" : "?") + jb(b);
var m = window.open(a, this.options.window_name, this.options.window_features);
k || (k = m);
var v = setInterval(function() {
m && m.closed &&
(d(!1), c && (c(Bg("USER_CANCELLED")), c = null))
}, 500),
y = B({
a: "request",
d: b
});
rg(window, "unload", d);
rg(window, "message", e)
}
};
Cg.isAvailable = function() {
var a;
if (a = "postMessage" in window && !og())(a = ng() || "undefined" !== typeof navigator && (!!mg().match(/Windows Phone/) || !!window.Windows && /^ms-appx:/.test(location.href))) || (a = mg(), a = "undefined" !== typeof navigator && "undefined" !== typeof window && !!(a.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i) || a.match(/CriOS/) || a.match(/Twitter for iPhone/) || a.match(/FBAN\/FBIOS/) || window.navigator.standalone)), a = !a;
return a && !mg().match(/PhantomJS/)
};
Cg.prototype.Bc = function() {
return "popup"
};
function Dg(a) {
a.method || (a.method = "GET");
a.headers || (a.headers = {});
a.headers.content_type || (a.headers.content_type = "application/json");
a.headers.content_type = a.headers.content_type.toLowerCase();
this.options = a
}
Dg.prototype.open = function(a, b, c) {
function d() {
c && (c(Bg("REQUEST_INTERRUPTED")), c = null)
}
var e = new XMLHttpRequest,
f = this.options.method.toUpperCase(),
g;
rg(window, "beforeunload", d);
e.onreadystatechange = function() {
if (c && 4 === e.readyState) {
var a;
if (200 <= e.status && 300 > e.status) {
try {
a = mb(e.responseText)
} catch (b) {}
c(null, a)
} else 500 <= e.status && 600 > e.status ? c(Bg("SERVER_ERROR")) : c(Bg("NETWORK_ERROR"));
c = null;
sg(window, "beforeunload", d)
}
};
if ("GET" === f) a += (/\?/.test(a) ? "" : "?") + jb(b), g = null;
else {
var k = this.options.headers.content_type;
"application/json" === k && (g = B(b));
"application/x-www-form-urlencoded" === k && (g = jb(b))
}
e.open(f, a, !0);
a = {
"X-Requested-With": "XMLHttpRequest",
Accept: "application/json;text/plain"
};
za(a, this.options.headers);
for (var l in a) e.setRequestHeader(l, a[l]);
e.send(g)
};
Dg.isAvailable = function() {
var a;
if (a = !!window.XMLHttpRequest) a = mg(), a = !(a.match(/MSIE/) || a.match(/Trident/)) || pg(10);
return a
};
Dg.prototype.Bc = function() {
return "json"
};
function Eg(a) {
this.oc = Ga() + Ga() + Ga();
this.Df = a
}
Eg.prototype.open = function(a, b, c) {
function d() {
c && (c(Bg("USER_CANCELLED")), c = null)
}
var e = this,
f = Rc(hg),
g;
b.requestId = this.oc;
b.redirectTo = f.scheme + "://" + f.host + "/blank/page.html";
a += /\?/.test(a) ? "" : "?";
a += jb(b);
(g = window.open(a, "_blank", "location=no")) && ha(g.addEventListener) ? (g.addEventListener("loadstart", function(a) {
var b;
if (b = a && a.url) a: {
try {
var m = document.createElement("a");
m.href = a.url;
b = m.host === f.host && "/blank/page.html" === m.pathname;
break a
} catch (v) {}
b = !1
}
b && (a = ug(a.url), g.removeEventListener("exit",
d), g.close(), a = new ig(null, null, {
requestId: e.oc,
requestKey: a
}), e.Df.requestWithCredential("/auth/session", a, c), c = null)
}), g.addEventListener("exit", d)) : c(Bg("TRANSPORT_UNAVAILABLE"))
};
Eg.isAvailable = function() {
return ng()
};
Eg.prototype.Bc = function() {
return "redirect"
};
function Fg(a) {
a.callback_parameter || (a.callback_parameter = "callback");
this.options = a;
window.__firebase_auth_jsonp = window.__firebase_auth_jsonp || {}
}
Fg.prototype.open = function(a, b, c) {
function d() {
c && (c(Bg("REQUEST_INTERRUPTED")), c = null)
}
function e() {
setTimeout(function() {
window.__firebase_auth_jsonp[f] = void 0;
wa(window.__firebase_auth_jsonp) && (window.__firebase_auth_jsonp = void 0);
try {
var a = document.getElementById(f);
a && a.parentNode.removeChild(a)
} catch (b) {}
}, 1);
sg(window, "beforeunload", d)
}
var f = "fn" + (new Date).getTime() + Math.floor(99999 * Math.random());
b[this.options.callback_parameter] = "__firebase_auth_jsonp." + f;
a += (/\?/.test(a) ? "" : "?") + jb(b);
rg(window, "beforeunload", d);
window.__firebase_auth_jsonp[f] = function(a) {
c && (c(null, a), c = null);
e()
};
Gg(f, a, c)
};
function Gg(a, b, c) {
setTimeout(function() {
try {
var d = document.createElement("script");
d.type = "text/javascript";
d.id = a;
d.async = !0;
d.src = b;
d.onerror = function() {
var b = document.getElementById(a);
null !== b && b.parentNode.removeChild(b);
c && c(Bg("NETWORK_ERROR"))
};
var e = document.getElementsByTagName("head");
(e && 0 != e.length ? e[0] : document.documentElement).appendChild(d)
} catch (f) {
c && c(Bg("NETWORK_ERROR"))
}
}, 0)
}
Fg.isAvailable = function() {
return "undefined" !== typeof document && null != document.createElement
};
Fg.prototype.Bc = function() {
return "json"
};
function Hg(a, b, c, d) {
If.call(this, ["auth_status"]);
this.H = a;
this.df = b;
this.Sg = c;
this.Ke = d;
this.rc = new lg(a, [Dc, P]);
this.nb = null;
this.Re = !1;
Ig(this)
}
ma(Hg, If);
h = Hg.prototype;
h.we = function() {
return this.nb || null
};
function Ig(a) {
P.get("redirect_request_id") && Jg(a);
var b = a.rc.get();
b && b.token ? (Kg(a, b), a.df(b.token, function(c, d) {
Lg(a, c, d, !1, b.token, b)
}, function(b, d) {
Mg(a, "resumeSession()", b, d)
})) : Kg(a, null)
}
function Ng(a, b, c, d, e, f) {
"firebaseio-demo.com" === a.H.domain && Q("Firebase authentication is not supported on demo Firebases (*.firebaseio-demo.com). To secure your Firebase, create a production Firebase at https://www.firebase.com.");
a.df(b, function(f, k) {
Lg(a, f, k, !0, b, c, d || {}, e)
}, function(b, c) {
Mg(a, "auth()", b, c, f)
})
}
function Og(a, b) {
a.rc.clear();
Kg(a, null);
a.Sg(function(a, d) {
if ("ok" === a) R(b, null);
else {
var e = (a || "error").toUpperCase(),
f = e;
d && (f += ": " + d);
f = Error(f);
f.code = e;
R(b, f)
}
})
}
function Lg(a, b, c, d, e, f, g, k) {
"ok" === b ? (d && (b = c.auth, f.auth = b, f.expires = c.expires, f.token = cd(e) ? e : "", c = null, b && u(b, "uid") ? c = w(b, "uid") : u(f, "uid") && (c = w(f, "uid")), f.uid = c, c = "custom", b && u(b, "provider") ? c = w(b, "provider") : u(f, "provider") && (c = w(f, "provider")), f.provider = c, a.rc.clear(), cd(e) && (g = g || {}, c = Dc, "sessionOnly" === g.remember && (c = P), "none" !== g.remember && a.rc.set(f, c)), Kg(a, f)), R(k, null, f)) : (a.rc.clear(), Kg(a, null), f = a = (b || "error").toUpperCase(), c && (f += ": " + c), f = Error(f), f.code = a, R(k, f))
}
function Mg(a, b, c, d, e) {
Q(b + " was canceled: " + d);
a.rc.clear();
Kg(a, null);
a = Error(d);
a.code = c.toUpperCase();
R(e, a)
}
function Pg(a, b, c, d, e) {
Qg(a);
c = new ig(d || {}, {}, c || {});
Rg(a, [Dg, Fg], "/auth/" + b, c, e)
}
function Sg(a, b, c, d) {
Qg(a);
var e = [Cg, Eg];
c = kg(c);
"anonymous" === b || "password" === b ? setTimeout(function() {
R(d, Bg("TRANSPORT_UNAVAILABLE"))
}, 0) : (c.ce.window_features = "menubar=yes,modal=yes,alwaysRaised=yeslocation=yes,resizable=yes,scrollbars=yes,status=yes,height=625,width=625,top=" + ("object" === typeof screen ? .5 * (screen.height - 625) : 0) + ",left=" + ("object" === typeof screen ? .5 * (screen.width - 625) : 0), c.ce.relay_url = wg(a.H.Cb), c.ce.requestWithCredential = q(a.pc, a), Rg(a, e, "/auth/" + b, c, d))
}
function Jg(a) {
var b = P.get("redirect_request_id");
if (b) {
var c = P.get("redirect_client_options");
P.remove("redirect_request_id");
P.remove("redirect_client_options");
var d = [Dg, Fg],
b = {
requestId: b,
requestKey: ug(document.location.hash)
},
c = new ig(c, {}, b);
a.Re = !0;
try {
document.location.hash = document.location.hash.replace(/&__firebase_request_key=([a-zA-z0-9]*)/, "")
} catch (e) {}
Rg(a, d, "/auth/session", c, function() {
this.Re = !1
}.bind(a))
}
}
h.re = function(a, b) {
Qg(this);
var c = kg(a);
c.ab._method = "POST";
this.pc("/users", c, function(a, c) {
a ? R(b, a) : R(b, a, c)
})
};
h.Se = function(a, b) {
var c = this;
Qg(this);
var d = "/users/" + encodeURIComponent(a.email),
e = kg(a);
e.ab._method = "DELETE";
this.pc(d, e, function(a, d) {
!a && d && d.uid && c.nb && c.nb.uid && c.nb.uid === d.uid && Og(c);
R(b, a)
})
};
h.oe = function(a, b) {
Qg(this);
var c = "/users/" + encodeURIComponent(a.email) + "/password",
d = kg(a);
d.ab._method = "PUT";
d.ab.password = a.newPassword;
this.pc(c, d, function(a) {
R(b, a)
})
};
h.ne = function(a, b) {
Qg(this);
var c = "/users/" + encodeURIComponent(a.oldEmail) + "/email",
d = kg(a);
d.ab._method = "PUT";
d.ab.email = a.newEmail;
d.ab.password = a.password;
this.pc(c, d, function(a) {
R(b, a)
})
};
h.Ue = function(a, b) {
Qg(this);
var c = "/users/" + encodeURIComponent(a.email) + "/password",
d = kg(a);
d.ab._method = "POST";
this.pc(c, d, function(a) {
R(b, a)
})
};
h.pc = function(a, b, c) {
Tg(this, [Dg, Fg], a, b, c)
};
function Rg(a, b, c, d, e) {
Tg(a, b, c, d, function(b, c) {
!b && c && c.token && c.uid ? Ng(a, c.token, c, d.ld, function(a, b) {
a ? R(e, a) : R(e, null, b)
}) : R(e, b || Bg("UNKNOWN_ERROR"))
})
}
function Tg(a, b, c, d, e) {
b = Pa(b, function(a) {
return "function" === typeof a.isAvailable && a.isAvailable()
});
0 === b.length ? setTimeout(function() {
R(e, Bg("TRANSPORT_UNAVAILABLE"))
}, 0) : (b = new(b.shift())(d.ce), d = ib(d.ab), d.v = "js-2.2.7", d.transport = b.Bc(), d.suppress_status_codes = !0, a = vg() + "/" + a.H.Cb + c, b.open(a, d, function(a, b) {
if (a) R(e, a);
else if (b && b.error) {
var c = Error(b.error.message);
c.code = b.error.code;
c.details = b.error.details;
R(e, c)
} else R(e, null, b)
}))
}
function Kg(a, b) {
var c = null !== a.nb || null !== b;
a.nb = b;
c && a.de("auth_status", b);
a.Ke(null !== b)
}
h.ze = function(a) {
J("auth_status" === a, 'initial event must be of type "auth_status"');
return this.Re ? null : [this.nb]
};
function Qg(a) {
var b = a.H;
if ("firebaseio.com" !== b.domain && "firebaseio-demo.com" !== b.domain && "auth.firebase.com" === hg) throw Error("This custom Firebase server ('" + a.H.domain + "') does not support delegated login.");
};
function Ug(a) {
this.hc = a;
this.Kd = [];
this.Qb = 0;
this.pe = -1;
this.Fb = null
}
function Vg(a, b, c) {
a.pe = b;
a.Fb = c;
a.pe < a.Qb && (a.Fb(), a.Fb = null)
}
function Wg(a, b, c) {
for (a.Kd[b] = c; a.Kd[a.Qb];) {
var d = a.Kd[a.Qb];
delete a.Kd[a.Qb];
for (var e = 0; e < d.length; ++e)
if (d[e]) {
var f = a;
Cb(function() {
f.hc(d[e])
})
}
if (a.Qb === a.pe) {
a.Fb && (clearTimeout(a.Fb), a.Fb(), a.Fb = null);
break
}
a.Qb++
}
};
function Xg(a, b, c) {
this.qe = a;
this.f = Oc(a);
this.ob = this.pb = 0;
this.Va = Ob(b);
this.Vd = c;
this.Gc = !1;
this.gd = function(a) {
b.host !== b.Oa && (a.ns = b.Cb);
var c = [],
f;
for (f in a) a.hasOwnProperty(f) && c.push(f + "=" + a[f]);
return (b.lb ? "https://" : "http://") + b.Oa + "/.lp?" + c.join("&")
}
}
var Yg, Zg;
Xg.prototype.open = function(a, b) {
this.gf = 0;
this.ka = b;
this.zf = new Ug(a);
this.zb = !1;
var c = this;
this.rb = setTimeout(function() {
c.f("Timed out trying to connect.");
c.ib();
c.rb = null
}, Math.floor(3E4));
Tc(function() {
if (!c.zb) {
c.Ta = new $g(function(a, b, d, k, l) {
ah(c, arguments);
if (c.Ta)
if (c.rb && (clearTimeout(c.rb), c.rb = null), c.Gc = !0, "start" == a) c.id = b, c.Ff = d;
else if ("close" === a) b ? (c.Ta.Td = !1, Vg(c.zf, b, function() {
c.ib()
})) : c.ib();
else throw Error("Unrecognized command received: " + a);
}, function(a, b) {
ah(c, arguments);
Wg(c.zf, a, b)
}, function() {
c.ib()
}, c.gd);
var a = {
start: "t"
};
a.ser = Math.floor(1E8 * Math.random());
c.Ta.fe && (a.cb = c.Ta.fe);
a.v = "5";
c.Vd && (a.s = c.Vd);
"undefined" !== typeof location && location.href && -1 !== location.href.indexOf("firebaseio.com") && (a.r = "f");
a = c.gd(a);
c.f("Connecting via long-poll to " + a);
bh(c.Ta, a, function() {})
}
})
};
Xg.prototype.start = function() {
var a = this.Ta,
b = this.Ff;
a.rg = this.id;
a.sg = b;
for (a.ke = !0; ch(a););
a = this.id;
b = this.Ff;
this.fc = document.createElement("iframe");
var c = {
dframe: "t"
};
c.id = a;
c.pw = b;
this.fc.src = this.gd(c);
this.fc.style.display = "none";
document.body.appendChild(this.fc)
};
Xg.isAvailable = function() {
return Yg || !Zg && "undefined" !== typeof document && null != document.createElement && !("object" === typeof window && window.chrome && window.chrome.extension && !/^chrome/.test(window.location.href)) && !("object" === typeof Windows && "object" === typeof Windows.Ug)
};
h = Xg.prototype;
h.Bd = function() {};
h.cd = function() {
this.zb = !0;
this.Ta && (this.Ta.close(), this.Ta = null);
this.fc && (document.body.removeChild(this.fc), this.fc = null);
this.rb && (clearTimeout(this.rb), this.rb = null)
};
h.ib = function() {
this.zb || (this.f("Longpoll is closing itself"), this.cd(), this.ka && (this.ka(this.Gc), this.ka = null))
};
h.close = function() {
this.zb || (this.f("Longpoll is being closed."), this.cd())
};
h.send = function(a) {
a = B(a);
this.pb += a.length;
Lb(this.Va, "bytes_sent", a.length);
a = Kc(a);
a = fb(a, !0);
a = Xc(a, 1840);
for (var b = 0; b < a.length; b++) {
var c = this.Ta;
c.$c.push({
Jg: this.gf,
Rg: a.length,
jf: a[b]
});
c.ke && ch(c);
this.gf++
}
};
function ah(a, b) {
var c = B(b).length;
a.ob += c;
Lb(a.Va, "bytes_received", c)
}
function $g(a, b, c, d) {
this.gd = d;
this.jb = c;
this.Oe = new eg;
this.$c = [];
this.se = Math.floor(1E8 * Math.random());
this.Td = !0;
this.fe = Gc();
window["pLPCommand" + this.fe] = a;
window["pRTLPCB" + this.fe] = b;
a = document.createElement("iframe");
a.style.display = "none";
if (document.body) {
document.body.appendChild(a);
try {
a.contentWindow.document || Bb("No IE domain setting required")
} catch (e) {
a.src = "javascript:void((function(){document.open();document.domain='" + document.domain + "';document.close();})())"
}
} else throw "Document body has not initialized. Wait to initialize Firebase until after the document is ready.";
a.contentDocument ? a.gb = a.contentDocument : a.contentWindow ? a.gb = a.contentWindow.document : a.document && (a.gb = a.document);
this.Ca = a;
a = "";
this.Ca.src && "javascript:" === this.Ca.src.substr(0, 11) && (a = '<script>document.domain="' + document.domain + '";\x3c/script>');
a = "<html><body>" + a + "</body></html>";
try {
this.Ca.gb.open(), this.Ca.gb.write(a), this.Ca.gb.close()
} catch (f) {
Bb("frame writing exception"), f.stack && Bb(f.stack), Bb(f)
}
}
$g.prototype.close = function() {
this.ke = !1;
if (this.Ca) {
this.Ca.gb.body.innerHTML = "";
var a = this;
setTimeout(function() {
null !== a.Ca && (document.body.removeChild(a.Ca), a.Ca = null)
}, Math.floor(0))
}
var b = this.jb;
b && (this.jb = null, b())
};
function ch(a) {
if (a.ke && a.Td && a.Oe.count() < (0 < a.$c.length ? 2 : 1)) {
a.se++;
var b = {};
b.id = a.rg;
b.pw = a.sg;
b.ser = a.se;
for (var b = a.gd(b), c = "", d = 0; 0 < a.$c.length;)
if (1870 >= a.$c[0].jf.length + 30 + c.length) {
var e = a.$c.shift(),
c = c + "&seg" + d + "=" + e.Jg + "&ts" + d + "=" + e.Rg + "&d" + d + "=" + e.jf;
d++
} else break;
dh(a, b + c, a.se);
return !0
}
return !1
}
function dh(a, b, c) {
function d() {
a.Oe.remove(c);
ch(a)
}
a.Oe.add(c, 1);
var e = setTimeout(d, Math.floor(25E3));
bh(a, b, function() {
clearTimeout(e);
d()
})
}
function bh(a, b, c) {
setTimeout(function() {
try {
if (a.Td) {
var d = a.Ca.gb.createElement("script");
d.type = "text/javascript";
d.async = !0;
d.src = b;
d.onload = d.onreadystatechange = function() {
var a = d.readyState;
a && "loaded" !== a && "complete" !== a || (d.onload = d.onreadystatechange = null, d.parentNode && d.parentNode.removeChild(d), c())
};
d.onerror = function() {
Bb("Long-poll script failed to load: " + b);
a.Td = !1;
a.close()
};
a.Ca.gb.body.appendChild(d)
}
} catch (e) {}
}, Math.floor(1))
};
var eh = null;
"undefined" !== typeof MozWebSocket ? eh = MozWebSocket : "undefined" !== typeof WebSocket && (eh = WebSocket);
function fh(a, b, c) {
this.qe = a;
this.f = Oc(this.qe);
this.frames = this.Jc = null;
this.ob = this.pb = this.bf = 0;
this.Va = Ob(b);
this.fb = (b.lb ? "wss://" : "ws://") + b.Oa + "/.ws?v=5";
"undefined" !== typeof location && location.href && -1 !== location.href.indexOf("firebaseio.com") && (this.fb += "&r=f");
b.host !== b.Oa && (this.fb = this.fb + "&ns=" + b.Cb);
c && (this.fb = this.fb + "&s=" + c)
}
var gh;
fh.prototype.open = function(a, b) {
this.jb = b;
this.wg = a;
this.f("Websocket connecting to " + this.fb);
this.Gc = !1;
Dc.set("previous_websocket_failure", !0);
try {
this.va = new eh(this.fb)
} catch (c) {
this.f("Error instantiating WebSocket.");
var d = c.message || c.data;
d && this.f(d);
this.ib();
return
}
var e = this;
this.va.onopen = function() {
e.f("Websocket connected.");
e.Gc = !0
};
this.va.onclose = function() {
e.f("Websocket connection was disconnected.");
e.va = null;
e.ib()
};
this.va.onmessage = function(a) {
if (null !== e.va)
if (a = a.data, e.ob +=
a.length, Lb(e.Va, "bytes_received", a.length), hh(e), null !== e.frames) ih(e, a);
else {
a: {
J(null === e.frames, "We already have a frame buffer");
if (6 >= a.length) {
var b = Number(a);
if (!isNaN(b)) {
e.bf = b;
e.frames = [];
a = null;
break a
}
}
e.bf = 1;
e.frames = []
}
null !== a && ih(e, a)
}
};
this.va.onerror = function(a) {
e.f("WebSocket error. Closing connection.");
(a = a.message || a.data) && e.f(a);
e.ib()
}
};
fh.prototype.start = function() {};
fh.isAvailable = function() {
var a = !1;
if ("undefined" !== typeof navigator && navigator.userAgent) {
var b = navigator.userAgent.match(/Android ([0-9]{0,}\.[0-9]{0,})/);
b && 1 < b.length && 4.4 > parseFloat(b[1]) && (a = !0)
}
return !a && null !== eh && !gh
};
fh.responsesRequiredToBeHealthy = 2;
fh.healthyTimeout = 3E4;
h = fh.prototype;
h.Bd = function() {
Dc.remove("previous_websocket_failure")
};
function ih(a, b) {
a.frames.push(b);
if (a.frames.length == a.bf) {
var c = a.frames.join("");
a.frames = null;
c = mb(c);
a.wg(c)
}
}
h.send = function(a) {
hh(this);
a = B(a);
this.pb += a.length;
Lb(this.Va, "bytes_sent", a.length);
a = Xc(a, 16384);
1 < a.length && this.va.send(String(a.length));
for (var b = 0; b < a.length; b++) this.va.send(a[b])
};
h.cd = function() {
this.zb = !0;
this.Jc && (clearInterval(this.Jc), this.Jc = null);
this.va && (this.va.close(), this.va = null)
};
h.ib = function() {
this.zb || (this.f("WebSocket is closing itself"), this.cd(), this.jb && (this.jb(this.Gc), this.jb = null))
};
h.close = function() {
this.zb || (this.f("WebSocket is being closed"), this.cd())
};
function hh(a) {
clearInterval(a.Jc);
a.Jc = setInterval(function() {
a.va && a.va.send("0");
hh(a)
}, Math.floor(45E3))
};
function jh(a) {
kh(this, a)
}
var lh = [Xg, fh];
function kh(a, b) {
var c = fh && fh.isAvailable(),
d = c && !(Dc.uf || !0 === Dc.get("previous_websocket_failure"));
b.Tg && (c || Q("wss:// URL used, but browser isn't known to support websockets. Trying anyway."), d = !0);
if (d) a.ed = [fh];
else {
var e = a.ed = [];
Yc(lh, function(a, b) {
b && b.isAvailable() && e.push(b)
})
}
}
function mh(a) {
if (0 < a.ed.length) return a.ed[0];
throw Error("No transports available");
};
function nh(a, b, c, d, e, f) {
this.id = a;
this.f = Oc("c:" + this.id + ":");
this.hc = c;
this.Vc = d;
this.ka = e;
this.Me = f;
this.H = b;
this.Jd = [];
this.ef = 0;
this.Nf = new jh(b);
this.Ua = 0;
this.f("Connection created");
oh(this)
}
function oh(a) {
var b = mh(a.Nf);
a.L = new b("c:" + a.id + ":" + a.ef++, a.H);
a.Qe = b.responsesRequiredToBeHealthy || 0;
var c = ph(a, a.L),
d = qh(a, a.L);
a.fd = a.L;
a.bd = a.L;
a.F = null;
a.Ab = !1;
setTimeout(function() {
a.L && a.L.open(c, d)
}, Math.floor(0));
b = b.healthyTimeout || 0;
0 < b && (a.vd = setTimeout(function() {
a.vd = null;
a.Ab || (a.L && 102400 < a.L.ob ? (a.f("Connection exceeded healthy timeout but has received " + a.L.ob + " bytes. Marking connection healthy."), a.Ab = !0, a.L.Bd()) : a.L && 10240 < a.L.pb ? a.f("Connection exceeded healthy timeout but has sent " +
a.L.pb + " bytes. Leaving connection alive.") : (a.f("Closing unhealthy connection after timeout."), a.close()))
}, Math.floor(b)))
}
function qh(a, b) {
return function(c) {
b === a.L ? (a.L = null, c || 0 !== a.Ua ? 1 === a.Ua && a.f("Realtime connection lost.") : (a.f("Realtime connection failed."), "s-" === a.H.Oa.substr(0, 2) && (Dc.remove("host:" + a.H.host), a.H.Oa = a.H.host)), a.close()) : b === a.F ? (a.f("Secondary connection lost."), c = a.F, a.F = null, a.fd !== c && a.bd !== c || a.close()) : a.f("closing an old connection")
}
}
function ph(a, b) {
return function(c) {
if (2 != a.Ua)
if (b === a.bd) {
var d = Vc("t", c);
c = Vc("d", c);
if ("c" == d) {
if (d = Vc("t", c), "d" in c)
if (c = c.d, "h" === d) {
var d = c.ts,
e = c.v,
f = c.h;
a.Vd = c.s;
Fc(a.H, f);
0 == a.Ua && (a.L.start(), rh(a, a.L, d), "5" !== e && Q("Protocol version mismatch detected"), c = a.Nf, (c = 1 < c.ed.length ? c.ed[1] : null) && sh(a, c))
} else if ("n" === d) {
a.f("recvd end transmission on primary");
a.bd = a.F;
for (c = 0; c < a.Jd.length; ++c) a.Fd(a.Jd[c]);
a.Jd = [];
th(a)
} else "s" === d ? (a.f("Connection shutdown command received. Shutting down..."),
a.Me && (a.Me(c), a.Me = null), a.ka = null, a.close()) : "r" === d ? (a.f("Reset packet received. New host: " + c), Fc(a.H, c), 1 === a.Ua ? a.close() : (uh(a), oh(a))) : "e" === d ? Pc("Server Error: " + c) : "o" === d ? (a.f("got pong on primary."), vh(a), wh(a)) : Pc("Unknown control packet command: " + d)
} else "d" == d && a.Fd(c)
} else if (b === a.F)
if (d = Vc("t", c), c = Vc("d", c), "c" == d) "t" in c && (c = c.t, "a" === c ? xh(a) : "r" === c ? (a.f("Got a reset on secondary, closing it"), a.F.close(), a.fd !== a.F && a.bd !== a.F || a.close()) : "o" === c && (a.f("got pong on secondary."),
a.Lf--, xh(a)));
else if ("d" == d) a.Jd.push(c);
else throw Error("Unknown protocol layer: " + d);
else a.f("message on old connection")
}
}
nh.prototype.Da = function(a) {
yh(this, {
t: "d",
d: a
})
};
function th(a) {
a.fd === a.F && a.bd === a.F && (a.f("cleaning up and promoting a connection: " + a.F.qe), a.L = a.F, a.F = null)
}
function xh(a) {
0 >= a.Lf ? (a.f("Secondary connection is healthy."), a.Ab = !0, a.F.Bd(), a.F.start(), a.f("sending client ack on secondary"), a.F.send({
t: "c",
d: {
t: "a",
d: {}
}
}), a.f("Ending transmission on primary"), a.L.send({
t: "c",
d: {
t: "n",
d: {}
}
}), a.fd = a.F, th(a)) : (a.f("sending ping on secondary."), a.F.send({
t: "c",
d: {
t: "p",
d: {}
}
}))
}
nh.prototype.Fd = function(a) {
vh(this);
this.hc(a)
};
function vh(a) {
a.Ab || (a.Qe--, 0 >= a.Qe && (a.f("Primary connection is healthy."), a.Ab = !0, a.L.Bd()))
}
function sh(a, b) {
a.F = new b("c:" + a.id + ":" + a.ef++, a.H, a.Vd);
a.Lf = b.responsesRequiredToBeHealthy || 0;
a.F.open(ph(a, a.F), qh(a, a.F));
setTimeout(function() {
a.F && (a.f("Timed out trying to upgrade."), a.F.close())
}, Math.floor(6E4))
}
function rh(a, b, c) {
a.f("Realtime connection established.");
a.L = b;
a.Ua = 1;
a.Vc && (a.Vc(c), a.Vc = null);
0 === a.Qe ? (a.f("Primary connection is healthy."), a.Ab = !0) : setTimeout(function() {
wh(a)
}, Math.floor(5E3))
}
function wh(a) {
a.Ab || 1 !== a.Ua || (a.f("sending ping on primary."), yh(a, {
t: "c",
d: {
t: "p",
d: {}
}
}))
}
function yh(a, b) {
if (1 !== a.Ua) throw "Connection is not connected";
a.fd.send(b)
}
nh.prototype.close = function() {
2 !== this.Ua && (this.f("Closing realtime connection."), this.Ua = 2, uh(this), this.ka && (this.ka(), this.ka = null))
};
function uh(a) {
a.f("Shutting down all connections");
a.L && (a.L.close(), a.L = null);
a.F && (a.F.close(), a.F = null);
a.vd && (clearTimeout(a.vd), a.vd = null)
};
function zh(a, b, c, d) {
this.id = Ah++;
this.f = Oc("p:" + this.id + ":");
this.wf = this.De = !1;
this.aa = {};
this.pa = [];
this.Xc = 0;
this.Uc = [];
this.ma = !1;
this.$a = 1E3;
this.Cd = 3E5;
this.Gb = b;
this.Tc = c;
this.Ne = d;
this.H = a;
this.We = null;
this.Qd = {};
this.Ig = 0;
this.mf = !0;
this.Kc = this.Fe = null;
Bh(this, 0);
Mf.ub().Eb("visible", this.zg, this); - 1 === a.host.indexOf("fblocal") && Lf.ub().Eb("online", this.xg, this)
}
var Ah = 0,
Ch = 0;
h = zh.prototype;
h.Da = function(a, b, c) {
var d = ++this.Ig;
a = {
r: d,
a: a,
b: b
};
this.f(B(a));
J(this.ma, "sendRequest call when we're not connected not allowed.");
this.Sa.Da(a);
c && (this.Qd[d] = c)
};
h.xf = function(a, b, c, d) {
var e = a.wa(),
f = a.path.toString();
this.f("Listen called for " + f + " " + e);
this.aa[f] = this.aa[f] || {};
J(!this.aa[f][e], "listen() called twice for same path/queryId.");
a = {
J: d,
ud: b,
Fg: a,
tag: c
};
this.aa[f][e] = a;
this.ma && Dh(this, a)
};
function Dh(a, b) {
var c = b.Fg,
d = c.path.toString(),
e = c.wa();
a.f("Listen on " + d + " for " + e);
var f = {
p: d
};
b.tag && (f.q = ce(c.o), f.t = b.tag);
f.h = b.ud();
a.Da("q", f, function(f) {
var k = f.d,
l = f.s;
if (k && "object" === typeof k && u(k, "w")) {
var m = w(k, "w");
ea(m) && 0 <= Na(m, "no_index") && Q("Using an unspecified index. Consider adding " + ('".indexOn": "' + c.o.g.toString() + '"') + " at " + c.path.toString() + " to your security rules for better performance")
}(a.aa[d] && a.aa[d][e]) === b && (a.f("listen response", f), "ok" !== l && Eh(a, d, e), b.J &&
b.J(l, k))
})
}
h.P = function(a, b, c) {
this.Fa = {
fg: a,
nf: !1,
yc: b,
jd: c
};
this.f("Authenticating using credential: " + a);
Fh(this);
(b = 40 == a.length) || (a = ad(a).Ac, b = "object" === typeof a && !0 === w(a, "admin"));
b && (this.f("Admin auth credential detected. Reducing max reconnect time."), this.Cd = 3E4)
};
h.ee = function(a) {
delete this.Fa;
this.ma && this.Da("unauth", {}, function(b) {
a(b.s, b.d)
})
};
function Fh(a) {
var b = a.Fa;
a.ma && b && a.Da("auth", {
cred: b.fg
}, function(c) {
var d = c.s;
c = c.d || "error";
"ok" !== d && a.Fa === b && delete a.Fa;
b.nf ? "ok" !== d && b.jd && b.jd(d, c) : (b.nf = !0, b.yc && b.yc(d, c))
})
}
h.Of = function(a, b) {
var c = a.path.toString(),
d = a.wa();
this.f("Unlisten called for " + c + " " + d);
if (Eh(this, c, d) && this.ma) {
var e = ce(a.o);
this.f("Unlisten on " + c + " for " + d);
c = {
p: c
};
b && (c.q = e, c.t = b);
this.Da("n", c)
}
};
h.Le = function(a, b, c) {
this.ma ? Gh(this, "o", a, b, c) : this.Uc.push({
Zc: a,
action: "o",
data: b,
J: c
})
};
h.Bf = function(a, b, c) {
this.ma ? Gh(this, "om", a, b, c) : this.Uc.push({
Zc: a,
action: "om",
data: b,
J: c
})
};
h.Gd = function(a, b) {
this.ma ? Gh(this, "oc", a, null, b) : this.Uc.push({
Zc: a,
action: "oc",
data: null,
J: b
})
};
function Gh(a, b, c, d, e) {
c = {
p: c,
d: d
};
a.f("onDisconnect " + b, c);
a.Da(b, c, function(a) {
e && setTimeout(function() {
e(a.s, a.d)
}, Math.floor(0))
})
}
h.put = function(a, b, c, d) {
Hh(this, "p", a, b, c, d)
};
h.yf = function(a, b, c, d) {
Hh(this, "m", a, b, c, d)
};
function Hh(a, b, c, d, e, f) {
d = {
p: c,
d: d
};
n(f) && (d.h = f);
a.pa.push({
action: b,
If: d,
J: e
});
a.Xc++;
b = a.pa.length - 1;
a.ma ? Ih(a, b) : a.f("Buffering put: " + c)
}
function Ih(a, b) {
var c = a.pa[b].action,
d = a.pa[b].If,
e = a.pa[b].J;
a.pa[b].Gg = a.ma;
a.Da(c, d, function(d) {
a.f(c + " response", d);
delete a.pa[b];
a.Xc--;
0 === a.Xc && (a.pa = []);
e && e(d.s, d.d)
})
}
h.Te = function(a) {
this.ma && (a = {
c: a
}, this.f("reportStats", a), this.Da("s", a, function(a) {
"ok" !== a.s && this.f("reportStats", "Error sending stats: " + a.d)
}))
};
h.Fd = function(a) {
if ("r" in a) {
this.f("from server: " + B(a));
var b = a.r,
c = this.Qd[b];
c && (delete this.Qd[b], c(a.b))
} else {
if ("error" in a) throw "A server-side error has occurred: " + a.error;
"a" in a && (b = a.a, c = a.b, this.f("handleServerMessage", b, c), "d" === b ? this.Gb(c.p, c.d, !1, c.t) : "m" === b ? this.Gb(c.p, c.d, !0, c.t) : "c" === b ? Jh(this, c.p, c.q) : "ac" === b ? (a = c.s, b = c.d, c = this.Fa, delete this.Fa, c && c.jd && c.jd(a, b)) : "sd" === b ? this.We ? this.We(c) : "msg" in c && "undefined" !== typeof console && console.log("FIREBASE: " + c.msg.replace("\n",
"\nFIREBASE: ")) : Pc("Unrecognized action received from server: " + B(b) + "\nAre you using the latest client?"))
}
};
h.Vc = function(a) {
this.f("connection ready");
this.ma = !0;
this.Kc = (new Date).getTime();
this.Ne({
serverTimeOffset: a - (new Date).getTime()
});
this.mf && (a = {}, a["sdk.js." + "2.2.7".replace(/\./g, "-")] = 1, ng() && (a["framework.cordova"] = 1), this.Te(a));
Kh(this);
this.mf = !1;
this.Tc(!0)
};
function Bh(a, b) {
J(!a.Sa, "Scheduling a connect when we're already connected/ing?");
a.Sb && clearTimeout(a.Sb);
a.Sb = setTimeout(function() {
a.Sb = null;
Lh(a)
}, Math.floor(b))
}
h.zg = function(a) {
a && !this.uc && this.$a === this.Cd && (this.f("Window became visible. Reducing delay."), this.$a = 1E3, this.Sa || Bh(this, 0));
this.uc = a
};
h.xg = function(a) {
a ? (this.f("Browser went online."), this.$a = 1E3, this.Sa || Bh(this, 0)) : (this.f("Browser went offline. Killing connection."), this.Sa && this.Sa.close())
};
h.Cf = function() {
this.f("data client disconnected");
this.ma = !1;
this.Sa = null;
for (var a = 0; a < this.pa.length; a++) {
var b = this.pa[a];
b && "h" in b.If && b.Gg && (b.J && b.J("disconnect"), delete this.pa[a], this.Xc--)
}
0 === this.Xc && (this.pa = []);
this.Qd = {};
Mh(this) && (this.uc ? this.Kc && (3E4 < (new Date).getTime() - this.Kc && (this.$a = 1E3), this.Kc = null) : (this.f("Window isn't visible. Delaying reconnect."), this.$a = this.Cd, this.Fe = (new Date).getTime()), a = Math.max(0, this.$a - ((new Date).getTime() - this.Fe)), a *= Math.random(), this.f("Trying to reconnect in " +
a + "ms"), Bh(this, a), this.$a = Math.min(this.Cd, 1.3 * this.$a));
this.Tc(!1)
};
function Lh(a) {
if (Mh(a)) {
a.f("Making a connection attempt");
a.Fe = (new Date).getTime();
a.Kc = null;
var b = q(a.Fd, a),
c = q(a.Vc, a),
d = q(a.Cf, a),
e = a.id + ":" + Ch++;
a.Sa = new nh(e, a.H, b, c, d, function(b) {
Q(b + " (" + a.H.toString() + ")");
a.wf = !0
})
}
}
h.yb = function() {
this.De = !0;
this.Sa ? this.Sa.close() : (this.Sb && (clearTimeout(this.Sb), this.Sb = null), this.ma && this.Cf())
};
h.qc = function() {
this.De = !1;
this.$a = 1E3;
this.Sa || Bh(this, 0)
};
function Jh(a, b, c) {
c = c ? Qa(c, function(a) {
return Wc(a)
}).join("$") : "default";
(a = Eh(a, b, c)) && a.J && a.J("permission_denied")
}
function Eh(a, b, c) {
b = (new K(b)).toString();
var d;
n(a.aa[b]) ? (d = a.aa[b][c], delete a.aa[b][c], 0 === pa(a.aa[b]) && delete a.aa[b]) : d = void 0;
return d
}
function Kh(a) {
Fh(a);
r(a.aa, function(b) {
r(b, function(b) {
Dh(a, b)
})
});
for (var b = 0; b < a.pa.length; b++) a.pa[b] && Ih(a, b);
for (; a.Uc.length;) b = a.Uc.shift(), Gh(a, b.action, b.Zc, b.data, b.J)
}
function Mh(a) {
var b;
b = Lf.ub().ic;
return !a.wf && !a.De && b
};
var V = {
lg: function() {
Yg = gh = !0
}
};
V.forceLongPolling = V.lg;
V.mg = function() {
Zg = !0
};
V.forceWebSockets = V.mg;
V.Mg = function(a, b) {
a.k.Ra.We = b
};
V.setSecurityDebugCallback = V.Mg;
V.Ye = function(a, b) {
a.k.Ye(b)
};
V.stats = V.Ye;
V.Ze = function(a, b) {
a.k.Ze(b)
};
V.statsIncrementCounter = V.Ze;
V.pd = function(a) {
return a.k.pd
};
V.dataUpdateCount = V.pd;
V.pg = function(a, b) {
a.k.Ce = b
};
V.interceptServerData = V.pg;
V.vg = function(a) {
new xg(a)
};
V.onPopupOpen = V.vg;
V.Kg = function(a) {
hg = a
};
V.setAuthenticationServer = V.Kg;
function S(a, b, c) {
this.B = a;
this.V = b;
this.g = c
}
S.prototype.K = function() {
x("Firebase.DataSnapshot.val", 0, 0, arguments.length);
return this.B.K()
};
S.prototype.val = S.prototype.K;
S.prototype.lf = function() {
x("Firebase.DataSnapshot.exportVal", 0, 0, arguments.length);
return this.B.K(!0)
};
S.prototype.exportVal = S.prototype.lf;
S.prototype.kg = function() {
x("Firebase.DataSnapshot.exists", 0, 0, arguments.length);
return !this.B.e()
};
S.prototype.exists = S.prototype.kg;
S.prototype.w = function(a) {
x("Firebase.DataSnapshot.child", 0, 1, arguments.length);
ga(a) && (a = String(a));
Yf("Firebase.DataSnapshot.child", a);
var b = new K(a),
c = this.V.w(b);
return new S(this.B.oa(b), c, M)
};
S.prototype.child = S.prototype.w;
S.prototype.Ha = function(a) {
x("Firebase.DataSnapshot.hasChild", 1, 1, arguments.length);
Yf("Firebase.DataSnapshot.hasChild", a);
var b = new K(a);
return !this.B.oa(b).e()
};
S.prototype.hasChild = S.prototype.Ha;
S.prototype.A = function() {
x("Firebase.DataSnapshot.getPriority", 0, 0, arguments.length);
return this.B.A().K()
};
S.prototype.getPriority = S.prototype.A;
S.prototype.forEach = function(a) {
x("Firebase.DataSnapshot.forEach", 1, 1, arguments.length);
A("Firebase.DataSnapshot.forEach", 1, a, !1);
if (this.B.N()) return !1;
var b = this;
return !!this.B.U(this.g, function(c, d) {
return a(new S(d, b.V.w(c), M))
})
};
S.prototype.forEach = S.prototype.forEach;
S.prototype.td = function() {
x("Firebase.DataSnapshot.hasChildren", 0, 0, arguments.length);
return this.B.N() ? !1 : !this.B.e()
};
S.prototype.hasChildren = S.prototype.td;
S.prototype.name = function() {
Q("Firebase.DataSnapshot.name() being deprecated. Please use Firebase.DataSnapshot.key() instead.");
x("Firebase.DataSnapshot.name", 0, 0, arguments.length);
return this.key()
};
S.prototype.name = S.prototype.name;
S.prototype.key = function() {
x("Firebase.DataSnapshot.key", 0, 0, arguments.length);
return this.V.key()
};
S.prototype.key = S.prototype.key;
S.prototype.Db = function() {
x("Firebase.DataSnapshot.numChildren", 0, 0, arguments.length);
return this.B.Db()
};
S.prototype.numChildren = S.prototype.Db;
S.prototype.lc = function() {
x("Firebase.DataSnapshot.ref", 0, 0, arguments.length);
return this.V
};
S.prototype.ref = S.prototype.lc;
function Nh(a, b) {
this.H = a;
this.Va = Ob(a);
this.ea = new ub;
this.Ed = 1;
this.Ra = null;
b || 0 <= ("object" === typeof window && window.navigator && window.navigator.userAgent || "").search(/googlebot|google webmaster tools|bingbot|yahoo! slurp|baiduspider|yandexbot|duckduckbot/i) ? (this.ca = new Ae(this.H, q(this.Gb, this)), setTimeout(q(this.Tc, this, !0), 0)) : this.ca = this.Ra = new zh(this.H, q(this.Gb, this), q(this.Tc, this), q(this.Ne, this));
this.Pg = Pb(a, q(function() {
return new Jb(this.Va, this.ca)
}, this));
this.tc = new Cf;
this.Be =
new nb;
var c = this;
this.zd = new gf({
Xe: function(a, b, f, g) {
b = [];
f = c.Be.j(a.path);
f.e() || (b = jf(c.zd, new Ub(ze, a.path, f)), setTimeout(function() {
g("ok")
}, 0));
return b
},
Zd: ba
});
Oh(this, "connected", !1);
this.ka = new qc;
this.P = new Hg(a, q(this.ca.P, this.ca), q(this.ca.ee, this.ca), q(this.Ke, this));
this.pd = 0;
this.Ce = null;
this.O = new gf({
Xe: function(a, b, f, g) {
c.ca.xf(a, f, b, function(b, e) {
var f = g(b, e);
zb(c.ea, a.path, f)
});
return []
},
Zd: function(a, b) {
c.ca.Of(a, b)
}
})
}
h = Nh.prototype;
h.toString = function() {
return (this.H.lb ? "https://" : "http://") + this.H.host
};
h.name = function() {
return this.H.Cb
};
function Ph(a) {
a = a.Be.j(new K(".info/serverTimeOffset")).K() || 0;
return (new Date).getTime() + a
}
function Qh(a) {
a = a = {
timestamp: Ph(a)
};
a.timestamp = a.timestamp || (new Date).getTime();
return a
}
h.Gb = function(a, b, c, d) {
this.pd++;
var e = new K(a);
b = this.Ce ? this.Ce(a, b) : b;
a = [];
d ? c ? (b = na(b, function(a) {
return L(a)
}), a = rf(this.O, e, b, d)) : (b = L(b), a = nf(this.O, e, b, d)) : c ? (d = na(b, function(a) {
return L(a)
}), a = mf(this.O, e, d)) : (d = L(b), a = jf(this.O, new Ub(ze, e, d)));
d = e;
0 < a.length && (d = Rh(this, e));
zb(this.ea, d, a)
};
h.Tc = function(a) {
Oh(this, "connected", a);
!1 === a && Sh(this)
};
h.Ne = function(a) {
var b = this;
Yc(a, function(a, d) {
Oh(b, d, a)
})
};
h.Ke = function(a) {
Oh(this, "authenticated", a)
};
function Oh(a, b, c) {
b = new K("/.info/" + b);
c = L(c);
var d = a.Be;
d.Sd = d.Sd.G(b, c);
c = jf(a.zd, new Ub(ze, b, c));
zb(a.ea, b, c)
}
h.Kb = function(a, b, c, d) {
this.f("set", {
path: a.toString(),
value: b,
Xg: c
});
var e = Qh(this);
b = L(b, c);
var e = sc(b, e),
f = this.Ed++,
e = hf(this.O, a, e, f, !0);
vb(this.ea, e);
var g = this;
this.ca.put(a.toString(), b.K(!0), function(b, c) {
var e = "ok" === b;
e || Q("set at " + a + " failed: " + b);
e = lf(g.O, f, !e);
zb(g.ea, a, e);
Th(d, b, c)
});
e = Uh(this, a);
Rh(this, e);
zb(this.ea, e, [])
};
h.update = function(a, b, c) {
this.f("update", {
path: a.toString(),
value: b
});
var d = !0,
e = Qh(this),
f = {};
r(b, function(a, b) {
d = !1;
var c = L(a);
f[b] = sc(c, e)
});
if (d) Bb("update() called with empty data. Don't do anything."), Th(c, "ok");
else {
var g = this.Ed++,
k = kf(this.O, a, f, g);
vb(this.ea, k);
var l = this;
this.ca.yf(a.toString(), b, function(b, d) {
var e = "ok" === b;
e || Q("update at " + a + " failed: " + b);
var e = lf(l.O, g, !e),
f = a;
0 < e.length && (f = Rh(l, a));
zb(l.ea, f, e);
Th(c, b, d)
});
b = Uh(this, a);
Rh(this, b);
zb(this.ea, a, [])
}
};
function Sh(a) {
a.f("onDisconnectEvents");
var b = Qh(a),
c = [];
rc(pc(a.ka, b), F, function(b, e) {
c = c.concat(jf(a.O, new Ub(ze, b, e)));
var f = Uh(a, b);
Rh(a, f)
});
a.ka = new qc;
zb(a.ea, F, c)
}
h.Gd = function(a, b) {
var c = this;
this.ca.Gd(a.toString(), function(d, e) {
"ok" === d && gg(c.ka, a);
Th(b, d, e)
})
};
function Vh(a, b, c, d) {
var e = L(c);
a.ca.Le(b.toString(), e.K(!0), function(c, g) {
"ok" === c && a.ka.mc(b, e);
Th(d, c, g)
})
}
function Wh(a, b, c, d, e) {
var f = L(c, d);
a.ca.Le(b.toString(), f.K(!0), function(c, d) {
"ok" === c && a.ka.mc(b, f);
Th(e, c, d)
})
}
function Xh(a, b, c, d) {
var e = !0,
f;
for (f in c) e = !1;
e ? (Bb("onDisconnect().update() called with empty data. Don't do anything."), Th(d, "ok")) : a.ca.Bf(b.toString(), c, function(e, f) {
if ("ok" === e)
for (var l in c) {
var m = L(c[l]);
a.ka.mc(b.w(l), m)
}
Th(d, e, f)
})
}
function Yh(a, b, c) {
c = ".info" === O(b.path) ? a.zd.Ob(b, c) : a.O.Ob(b, c);
xb(a.ea, b.path, c)
}
h.yb = function() {
this.Ra && this.Ra.yb()
};
h.qc = function() {
this.Ra && this.Ra.qc()
};
h.Ye = function(a) {
if ("undefined" !== typeof console) {
a ? (this.Yd || (this.Yd = new Ib(this.Va)), a = this.Yd.get()) : a = this.Va.get();
var b = Ra(sa(a), function(a, b) {
return Math.max(b.length, a)
}, 0),
c;
for (c in a) {
for (var d = a[c], e = c.length; e < b + 2; e++) c += " ";
console.log(c + d)
}
}
};
h.Ze = function(a) {
Lb(this.Va, a);
this.Pg.Mf[a] = !0
};
h.f = function(a) {
var b = "";
this.Ra && (b = this.Ra.id + ":");
Bb(b, arguments)
};
function Th(a, b, c) {
a && Cb(function() {
if ("ok" == b) a(null);
else {
var d = (b || "error").toUpperCase(),
e = d;
c && (e += ": " + c);
e = Error(e);
e.code = d;
a(e)
}
})
};
function Zh(a, b, c, d, e) {
function f() {}
a.f("transaction on " + b);
var g = new U(a, b);
g.Eb("value", f);
c = {
path: b,
update: c,
J: d,
status: null,
Ef: Gc(),
cf: e,
Kf: 0,
ge: function() {
g.gc("value", f)
},
je: null,
Aa: null,
md: null,
nd: null,
od: null
};
d = a.O.ua(b, void 0) || C;
c.md = d;
d = c.update(d.K());
if (n(d)) {
Tf("transaction failed: Data returned ", d, c.path);
c.status = 1;
e = Df(a.tc, b);
var k = e.Ba() || [];
k.push(c);
Ef(e, k);
"object" === typeof d && null !== d && u(d, ".priority") ? (k = w(d, ".priority"), J(Rf(k), "Invalid priority returned by transaction. Priority must be a valid string, finite number, server value, or null.")) :
k = (a.O.ua(b) || C).A().K();
e = Qh(a);
d = L(d, k);
e = sc(d, e);
c.nd = d;
c.od = e;
c.Aa = a.Ed++;
c = hf(a.O, b, e, c.Aa, c.cf);
zb(a.ea, b, c);
$h(a)
} else c.ge(), c.nd = null, c.od = null, c.J && (a = new S(c.md, new U(a, c.path), M), c.J(null, !1, a))
}
function $h(a, b) {
var c = b || a.tc;
b || ai(a, c);
if (null !== c.Ba()) {
var d = bi(a, c);
J(0 < d.length, "Sending zero length transaction queue");
Sa(d, function(a) {
return 1 === a.status
}) && ci(a, c.path(), d)
} else c.td() && c.U(function(b) {
$h(a, b)
})
}
function ci(a, b, c) {
for (var d = Qa(c, function(a) {
return a.Aa
}), e = a.O.ua(b, d) || C, d = e, e = e.hash(), f = 0; f < c.length; f++) {
var g = c[f];
J(1 === g.status, "tryToSendTransactionQueue_: items in queue should all be run.");
g.status = 2;
g.Kf++;
var k = N(b, g.path),
d = d.G(k, g.nd)
}
d = d.K(!0);
a.ca.put(b.toString(), d, function(d) {
a.f("transaction put response", {
path: b.toString(),
status: d
});
var e = [];
if ("ok" === d) {
d = [];
for (f = 0; f < c.length; f++) {
c[f].status = 3;
e = e.concat(lf(a.O, c[f].Aa));
if (c[f].J) {
var g = c[f].od,
k = new U(a, c[f].path);
d.push(q(c[f].J,
null, null, !0, new S(g, k, M)))
}
c[f].ge()
}
ai(a, Df(a.tc, b));
$h(a);
zb(a.ea, b, e);
for (f = 0; f < d.length; f++) Cb(d[f])
} else {
if ("datastale" === d)
for (f = 0; f < c.length; f++) c[f].status = 4 === c[f].status ? 5 : 1;
else
for (Q("transaction at " + b.toString() + " failed: " + d), f = 0; f < c.length; f++) c[f].status = 5, c[f].je = d;
Rh(a, b)
}
}, e)
}
function Rh(a, b) {
var c = di(a, b),
d = c.path(),
c = bi(a, c);
ei(a, c, d);
return d
}
function ei(a, b, c) {
if (0 !== b.length) {
for (var d = [], e = [], f = Qa(b, function(a) {
return a.Aa
}), g = 0; g < b.length; g++) {
var k = b[g],
l = N(c, k.path),
m = !1,
v;
J(null !== l, "rerunTransactionsUnderNode_: relativePath should not be null.");
if (5 === k.status) m = !0, v = k.je, e = e.concat(lf(a.O, k.Aa, !0));
else if (1 === k.status)
if (25 <= k.Kf) m = !0, v = "maxretry", e = e.concat(lf(a.O, k.Aa, !0));
else {
var y = a.O.ua(k.path, f) || C;
k.md = y;
var I = b[g].update(y.K());
n(I) ? (Tf("transaction failed: Data returned ", I, k.path), l = L(I), "object" === typeof I && null !=
I && u(I, ".priority") || (l = l.da(y.A())), y = k.Aa, I = Qh(a), I = sc(l, I), k.nd = l, k.od = I, k.Aa = a.Ed++, Va(f, y), e = e.concat(hf(a.O, k.path, I, k.Aa, k.cf)), e = e.concat(lf(a.O, y, !0))) : (m = !0, v = "nodata", e = e.concat(lf(a.O, k.Aa, !0)))
}
zb(a.ea, c, e);
e = [];
m && (b[g].status = 3, setTimeout(b[g].ge, Math.floor(0)), b[g].J && ("nodata" === v ? (k = new U(a, b[g].path), d.push(q(b[g].J, null, null, !1, new S(b[g].md, k, M)))) : d.push(q(b[g].J, null, Error(v), !1, null))))
}
ai(a, a.tc);
for (g = 0; g < d.length; g++) Cb(d[g]);
$h(a)
}
}
function di(a, b) {
for (var c, d = a.tc; null !== (c = O(b)) && null === d.Ba();) d = Df(d, c), b = G(b);
return d
}
function bi(a, b) {
var c = [];
fi(a, b, c);
c.sort(function(a, b) {
return a.Ef - b.Ef
});
return c
}
function fi(a, b, c) {
var d = b.Ba();
if (null !== d)
for (var e = 0; e < d.length; e++) c.push(d[e]);
b.U(function(b) {
fi(a, b, c)
})
}
function ai(a, b) {
var c = b.Ba();
if (c) {
for (var d = 0, e = 0; e < c.length; e++) 3 !== c[e].status && (c[d] = c[e], d++);
c.length = d;
Ef(b, 0 < c.length ? c : null)
}
b.U(function(b) {
ai(a, b)
})
}
function Uh(a, b) {
var c = di(a, b).path(),
d = Df(a.tc, b);
Hf(d, function(b) {
gi(a, b)
});
gi(a, d);
Gf(d, function(b) {
gi(a, b)
});
return c
}
function gi(a, b) {
var c = b.Ba();
if (null !== c) {
for (var d = [], e = [], f = -1, g = 0; g < c.length; g++) 4 !== c[g].status && (2 === c[g].status ? (J(f === g - 1, "All SENT items should be at beginning of queue."), f = g, c[g].status = 4, c[g].je = "set") : (J(1 === c[g].status, "Unexpected transaction status in abort"), c[g].ge(), e = e.concat(lf(a.O, c[g].Aa, !0)), c[g].J && d.push(q(c[g].J, null, Error("set"), !1, null)))); - 1 === f ? Ef(b, null) : c.length = f + 1;
zb(a.ea, b.path(), e);
for (g = 0; g < d.length; g++) Cb(d[g])
}
};
function W() {
this.nc = {};
this.Pf = !1
}
ca(W);
W.prototype.yb = function() {
for (var a in this.nc) this.nc[a].yb()
};
W.prototype.interrupt = W.prototype.yb;
W.prototype.qc = function() {
for (var a in this.nc) this.nc[a].qc()
};
W.prototype.resume = W.prototype.qc;
W.prototype.ue = function() {
this.Pf = !0
};
function X(a, b) {
this.ad = a;
this.qa = b
}
X.prototype.cancel = function(a) {
x("Firebase.onDisconnect().cancel", 0, 1, arguments.length);
A("Firebase.onDisconnect().cancel", 1, a, !0);
this.ad.Gd(this.qa, a || null)
};
X.prototype.cancel = X.prototype.cancel;
X.prototype.remove = function(a) {
x("Firebase.onDisconnect().remove", 0, 1, arguments.length);
Zf("Firebase.onDisconnect().remove", this.qa);
A("Firebase.onDisconnect().remove", 1, a, !0);
Vh(this.ad, this.qa, null, a)
};
X.prototype.remove = X.prototype.remove;
X.prototype.set = function(a, b) {
x("Firebase.onDisconnect().set", 1, 2, arguments.length);
Zf("Firebase.onDisconnect().set", this.qa);
Sf("Firebase.onDisconnect().set", a, this.qa, !1);
A("Firebase.onDisconnect().set", 2, b, !0);
Vh(this.ad, this.qa, a, b)
};
X.prototype.set = X.prototype.set;
X.prototype.Kb = function(a, b, c) {
x("Firebase.onDisconnect().setWithPriority", 2, 3, arguments.length);
Zf("Firebase.onDisconnect().setWithPriority", this.qa);
Sf("Firebase.onDisconnect().setWithPriority", a, this.qa, !1);
Vf("Firebase.onDisconnect().setWithPriority", 2, b);
A("Firebase.onDisconnect().setWithPriority", 3, c, !0);
Wh(this.ad, this.qa, a, b, c)
};
X.prototype.setWithPriority = X.prototype.Kb;
X.prototype.update = function(a, b) {
x("Firebase.onDisconnect().update", 1, 2, arguments.length);
Zf("Firebase.onDisconnect().update", this.qa);
if (ea(a)) {
for (var c = {}, d = 0; d < a.length; ++d) c["" + d] = a[d];
a = c;
Q("Passing an Array to Firebase.onDisconnect().update() is deprecated. Use set() if you want to overwrite the existing data, or an Object with integer keys if you really do want to only update some of the children.")
}
Uf("Firebase.onDisconnect().update", a, this.qa);
A("Firebase.onDisconnect().update", 2, b, !0);
Xh(this.ad, this.qa, a, b)
};
X.prototype.update = X.prototype.update;
function Y(a, b, c, d) {
this.k = a;
this.path = b;
this.o = c;
this.jc = d
}
function hi(a) {
var b = null,
c = null;
a.la && (b = od(a));
a.na && (c = qd(a));
if (a.g === Vd) {
if (a.la) {
if ("[MIN_NAME]" != nd(a)) throw Error("Query: When ordering by key, you may only pass one argument to startAt(), endAt(), or equalTo().");
if ("string" !== typeof b) throw Error("Query: When ordering by key, the argument passed to startAt(), endAt(),or equalTo() must be a string.");
}
if (a.na) {
if ("[MAX_NAME]" != pd(a)) throw Error("Query: When ordering by key, you may only pass one argument to startAt(), endAt(), or equalTo().");
if ("string" !==
typeof c) throw Error("Query: When ordering by key, the argument passed to startAt(), endAt(),or equalTo() must be a string.");
}
} else if (a.g === M) {
if (null != b && !Rf(b) || null != c && !Rf(c)) throw Error("Query: When ordering by priority, the first argument passed to startAt(), endAt(), or equalTo() must be a valid priority value (null, a number, or a string).");
} else if (J(a.g instanceof Rd || a.g === Yd, "unknown index type."), null != b && "object" === typeof b || null != c && "object" === typeof c) throw Error("Query: First argument passed to startAt(), endAt(), or equalTo() cannot be an object.");
}
function ii(a) {
if (a.la && a.na && a.ia && (!a.ia || "" === a.Nb)) throw Error("Query: Can't combine startAt(), endAt(), and limit(). Use limitToFirst() or limitToLast() instead.");
}
function ji(a, b) {
if (!0 === a.jc) throw Error(b + ": You can't combine multiple orderBy calls.");
}
Y.prototype.lc = function() {
x("Query.ref", 0, 0, arguments.length);
return new U(this.k, this.path)
};
Y.prototype.ref = Y.prototype.lc;
Y.prototype.Eb = function(a, b, c, d) {
x("Query.on", 2, 4, arguments.length);
Wf("Query.on", a, !1);
A("Query.on", 2, b, !1);
var e = ki("Query.on", c, d);
if ("value" === a) Yh(this.k, this, new jd(b, e.cancel || null, e.Ma || null));
else {
var f = {};
f[a] = b;
Yh(this.k, this, new kd(f, e.cancel, e.Ma))
}
return b
};
Y.prototype.on = Y.prototype.Eb;
Y.prototype.gc = function(a, b, c) {
x("Query.off", 0, 3, arguments.length);
Wf("Query.off", a, !0);
A("Query.off", 2, b, !0);
lb("Query.off", 3, c);
var d = null,
e = null;
"value" === a ? d = new jd(b || null, null, c || null) : a && (b && (e = {}, e[a] = b), d = new kd(e, null, c || null));
e = this.k;
d = ".info" === O(this.path) ? e.zd.kb(this, d) : e.O.kb(this, d);
xb(e.ea, this.path, d)
};
Y.prototype.off = Y.prototype.gc;
Y.prototype.Ag = function(a, b) {
function c(g) {
f && (f = !1, e.gc(a, c), b.call(d.Ma, g))
}
x("Query.once", 2, 4, arguments.length);
Wf("Query.once", a, !1);
A("Query.once", 2, b, !1);
var d = ki("Query.once", arguments[2], arguments[3]),
e = this,
f = !0;
this.Eb(a, c, function(b) {
e.gc(a, c);
d.cancel && d.cancel.call(d.Ma, b)
})
};
Y.prototype.once = Y.prototype.Ag;
Y.prototype.Ge = function(a) {
Q("Query.limit() being deprecated. Please use Query.limitToFirst() or Query.limitToLast() instead.");
x("Query.limit", 1, 1, arguments.length);
if (!ga(a) || Math.floor(a) !== a || 0 >= a) throw Error("Query.limit: First argument must be a positive integer.");
if (this.o.ia) throw Error("Query.limit: Limit was already set (by another call to limit, limitToFirst, orlimitToLast.");
var b = this.o.Ge(a);
ii(b);
return new Y(this.k, this.path, b, this.jc)
};
Y.prototype.limit = Y.prototype.Ge;
Y.prototype.He = function(a) {
x("Query.limitToFirst", 1, 1, arguments.length);
if (!ga(a) || Math.floor(a) !== a || 0 >= a) throw Error("Query.limitToFirst: First argument must be a positive integer.");
if (this.o.ia) throw Error("Query.limitToFirst: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");
return new Y(this.k, this.path, this.o.He(a), this.jc)
};
Y.prototype.limitToFirst = Y.prototype.He;
Y.prototype.Ie = function(a) {
x("Query.limitToLast", 1, 1, arguments.length);
if (!ga(a) || Math.floor(a) !== a || 0 >= a) throw Error("Query.limitToLast: First argument must be a positive integer.");
if (this.o.ia) throw Error("Query.limitToLast: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");
return new Y(this.k, this.path, this.o.Ie(a), this.jc)
};
Y.prototype.limitToLast = Y.prototype.Ie;
Y.prototype.Bg = function(a) {
x("Query.orderByChild", 1, 1, arguments.length);
if ("$key" === a) throw Error('Query.orderByChild: "$key" is invalid. Use Query.orderByKey() instead.');
if ("$priority" === a) throw Error('Query.orderByChild: "$priority" is invalid. Use Query.orderByPriority() instead.');
if ("$value" === a) throw Error('Query.orderByChild: "$value" is invalid. Use Query.orderByValue() instead.');
Xf("Query.orderByChild", 1, a, !1);
ji(this, "Query.orderByChild");
var b = be(this.o, new Rd(a));
hi(b);
return new Y(this.k,
this.path, b, !0)
};
Y.prototype.orderByChild = Y.prototype.Bg;
Y.prototype.Cg = function() {
x("Query.orderByKey", 0, 0, arguments.length);
ji(this, "Query.orderByKey");
var a = be(this.o, Vd);
hi(a);
return new Y(this.k, this.path, a, !0)
};
Y.prototype.orderByKey = Y.prototype.Cg;
Y.prototype.Dg = function() {
x("Query.orderByPriority", 0, 0, arguments.length);
ji(this, "Query.orderByPriority");
var a = be(this.o, M);
hi(a);
return new Y(this.k, this.path, a, !0)
};
Y.prototype.orderByPriority = Y.prototype.Dg;
Y.prototype.Eg = function() {
x("Query.orderByValue", 0, 0, arguments.length);
ji(this, "Query.orderByValue");
var a = be(this.o, Yd);
hi(a);
return new Y(this.k, this.path, a, !0)
};
Y.prototype.orderByValue = Y.prototype.Eg;
Y.prototype.Xd = function(a, b) {
x("Query.startAt", 0, 2, arguments.length);
Sf("Query.startAt", a, this.path, !0);
Xf("Query.startAt", 2, b, !0);
var c = this.o.Xd(a, b);
ii(c);
hi(c);
if (this.o.la) throw Error("Query.startAt: Starting point was already set (by another call to startAt or equalTo).");
n(a) || (b = a = null);
return new Y(this.k, this.path, c, this.jc)
};
Y.prototype.startAt = Y.prototype.Xd;
Y.prototype.qd = function(a, b) {
x("Query.endAt", 0, 2, arguments.length);
Sf("Query.endAt", a, this.path, !0);
Xf("Query.endAt", 2, b, !0);
var c = this.o.qd(a, b);
ii(c);
hi(c);
if (this.o.na) throw Error("Query.endAt: Ending point was already set (by another call to endAt or equalTo).");
return new Y(this.k, this.path, c, this.jc)
};
Y.prototype.endAt = Y.prototype.qd;
Y.prototype.hg = function(a, b) {
x("Query.equalTo", 1, 2, arguments.length);
Sf("Query.equalTo", a, this.path, !1);
Xf("Query.equalTo", 2, b, !0);
if (this.o.la) throw Error("Query.equalTo: Starting point was already set (by another call to endAt or equalTo).");
if (this.o.na) throw Error("Query.equalTo: Ending point was already set (by another call to endAt or equalTo).");
return this.Xd(a, b).qd(a, b)
};
Y.prototype.equalTo = Y.prototype.hg;
Y.prototype.toString = function() {
x("Query.toString", 0, 0, arguments.length);
for (var a = this.path, b = "", c = a.Y; c < a.n.length; c++) "" !== a.n[c] && (b += "/" + encodeURIComponent(String(a.n[c])));
return this.k.toString() + (b || "/")
};
Y.prototype.toString = Y.prototype.toString;
Y.prototype.wa = function() {
var a = Wc(ce(this.o));
return "{}" === a ? "default" : a
};
function ki(a, b, c) {
var d = {
cancel: null,
Ma: null
};
if (b && c) d.cancel = b, A(a, 3, d.cancel, !0), d.Ma = c, lb(a, 4, d.Ma);
else if (b)
if ("object" === typeof b && null !== b) d.Ma = b;
else if ("function" === typeof b) d.cancel = b;
else throw Error(z(a, 3, !0) + " must either be a cancel callback or a context object.");
return d
};
var Z = {};
Z.vc = zh;
Z.DataConnection = Z.vc;
zh.prototype.Og = function(a, b) {
this.Da("q", {
p: a
}, b)
};
Z.vc.prototype.simpleListen = Z.vc.prototype.Og;
zh.prototype.gg = function(a, b) {
this.Da("echo", {
d: a
}, b)
};
Z.vc.prototype.echo = Z.vc.prototype.gg;
zh.prototype.interrupt = zh.prototype.yb;
Z.Sf = nh;
Z.RealTimeConnection = Z.Sf;
nh.prototype.sendRequest = nh.prototype.Da;
nh.prototype.close = nh.prototype.close;
Z.og = function(a) {
var b = zh.prototype.put;
zh.prototype.put = function(c, d, e, f) {
n(f) && (f = a());
b.call(this, c, d, e, f)
};
return function() {
zh.prototype.put = b
}
};
Z.hijackHash = Z.og;
Z.Rf = Ec;
Z.ConnectionTarget = Z.Rf;
Z.wa = function(a) {
return a.wa()
};
Z.queryIdentifier = Z.wa;
Z.qg = function(a) {
return a.k.Ra.aa
};
Z.listens = Z.qg;
Z.ue = function(a) {
a.ue()
};
Z.forceRestClient = Z.ue;
function U(a, b) {
var c, d, e;
if (a instanceof Nh) c = a, d = b;
else {
x("new Firebase", 1, 2, arguments.length);
d = Rc(arguments[0]);
c = d.Qg;
"firebase" === d.domain && Qc(d.host + " is no longer supported. Please use <YOUR FIREBASE>.firebaseio.com instead");
c && "undefined" != c || Qc("Cannot parse Firebase url. Please use https://<YOUR FIREBASE>.firebaseio.com");
d.lb || "undefined" !== typeof window && window.location && window.location.protocol && -1 !== window.location.protocol.indexOf("https:") && Q("Insecure Firebase access from a secure page. Please use https in calls to new Firebase().");
c = new Ec(d.host, d.lb, c, "ws" === d.scheme || "wss" === d.scheme);
d = new K(d.Zc);
e = d.toString();
var f;
!(f = !p(c.host) || 0 === c.host.length || !Qf(c.Cb)) && (f = 0 !== e.length) && (e && (e = e.replace(/^\/*\.info(\/|$)/, "/")), f = !(p(e) && 0 !== e.length && !Of.test(e)));
if (f) throw Error(z("new Firebase", 1, !1) + 'must be a valid firebase URL and the path can\'t contain ".", "#", "$", "[", or "]".');
if (b)
if (b instanceof W) e = b;
else if (p(b)) e = W.ub(), c.Ld = b;
else throw Error("Expected a valid Firebase.Context for second argument to new Firebase()");
else e = W.ub();
f = c.toString();
var g = w(e.nc, f);
g || (g = new Nh(c, e.Pf), e.nc[f] = g);
c = g
}
Y.call(this, c, d, $d, !1)
}
ma(U, Y);
var li = U,
mi = ["Firebase"],
ni = aa;
mi[0] in ni || !ni.execScript || ni.execScript("var " + mi[0]);
for (var oi; mi.length && (oi = mi.shift());) !mi.length && n(li) ? ni[oi] = li : ni = ni[oi] ? ni[oi] : ni[oi] = {};
U.prototype.name = function() {
Q("Firebase.name() being deprecated. Please use Firebase.key() instead.");
x("Firebase.name", 0, 0, arguments.length);
return this.key()
};
U.prototype.name = U.prototype.name;
U.prototype.key = function() {
x("Firebase.key", 0, 0, arguments.length);
return this.path.e() ? null : vc(this.path)
};
U.prototype.key = U.prototype.key;
U.prototype.w = function(a) {
x("Firebase.child", 1, 1, arguments.length);
if (ga(a)) a = String(a);
else if (!(a instanceof K))
if (null === O(this.path)) {
var b = a;
b && (b = b.replace(/^\/*\.info(\/|$)/, "/"));
Yf("Firebase.child", b)
} else Yf("Firebase.child", a);
return new U(this.k, this.path.w(a))
};
U.prototype.child = U.prototype.w;
U.prototype.parent = function() {
x("Firebase.parent", 0, 0, arguments.length);
var a = this.path.parent();
return null === a ? null : new U(this.k, a)
};
U.prototype.parent = U.prototype.parent;
U.prototype.root = function() {
x("Firebase.ref", 0, 0, arguments.length);
for (var a = this; null !== a.parent();) a = a.parent();
return a
};
U.prototype.root = U.prototype.root;
U.prototype.set = function(a, b) {
x("Firebase.set", 1, 2, arguments.length);
Zf("Firebase.set", this.path);
Sf("Firebase.set", a, this.path, !1);
A("Firebase.set", 2, b, !0);
this.k.Kb(this.path, a, null, b || null)
};
U.prototype.set = U.prototype.set;
U.prototype.update = function(a, b) {
x("Firebase.update", 1, 2, arguments.length);
Zf("Firebase.update", this.path);
if (ea(a)) {
for (var c = {}, d = 0; d < a.length; ++d) c["" + d] = a[d];
a = c;
Q("Passing an Array to Firebase.update() is deprecated. Use set() if you want to overwrite the existing data, or an Object with integer keys if you really do want to only update some of the children.")
}
Uf("Firebase.update", a, this.path);
A("Firebase.update", 2, b, !0);
this.k.update(this.path, a, b || null)
};
U.prototype.update = U.prototype.update;
U.prototype.Kb = function(a, b, c) {
x("Firebase.setWithPriority", 2, 3, arguments.length);
Zf("Firebase.setWithPriority", this.path);
Sf("Firebase.setWithPriority", a, this.path, !1);
Vf("Firebase.setWithPriority", 2, b);
A("Firebase.setWithPriority", 3, c, !0);
if (".length" === this.key() || ".keys" === this.key()) throw "Firebase.setWithPriority failed: " + this.key() + " is a read-only object.";
this.k.Kb(this.path, a, b, c || null)
};
U.prototype.setWithPriority = U.prototype.Kb;
U.prototype.remove = function(a) {
x("Firebase.remove", 0, 1, arguments.length);
Zf("Firebase.remove", this.path);
A("Firebase.remove", 1, a, !0);
this.set(null, a)
};
U.prototype.remove = U.prototype.remove;
U.prototype.transaction = function(a, b, c) {
x("Firebase.transaction", 1, 3, arguments.length);
Zf("Firebase.transaction", this.path);
A("Firebase.transaction", 1, a, !1);
A("Firebase.transaction", 2, b, !0);
if (n(c) && "boolean" != typeof c) throw Error(z("Firebase.transaction", 3, !0) + "must be a boolean.");
if (".length" === this.key() || ".keys" === this.key()) throw "Firebase.transaction failed: " + this.key() + " is a read-only object.";
"undefined" === typeof c && (c = !0);
Zh(this.k, this.path, a, b || null, c)
};
U.prototype.transaction = U.prototype.transaction;
U.prototype.Lg = function(a, b) {
x("Firebase.setPriority", 1, 2, arguments.length);
Zf("Firebase.setPriority", this.path);
Vf("Firebase.setPriority", 1, a);
A("Firebase.setPriority", 2, b, !0);
this.k.Kb(this.path.w(".priority"), a, null, b)
};
U.prototype.setPriority = U.prototype.Lg;
U.prototype.push = function(a, b) {
x("Firebase.push", 0, 2, arguments.length);
Zf("Firebase.push", this.path);
Sf("Firebase.push", a, this.path, !0);
A("Firebase.push", 2, b, !0);
var c = Ph(this.k),
c = Kf(c),
c = this.w(c);
"undefined" !== typeof a && null !== a && c.set(a, b);
return c
};
U.prototype.push = U.prototype.push;
U.prototype.jb = function() {
Zf("Firebase.onDisconnect", this.path);
return new X(this.k, this.path)
};
U.prototype.onDisconnect = U.prototype.jb;
U.prototype.P = function(a, b, c) {
Q("FirebaseRef.auth() being deprecated. Please use FirebaseRef.authWithCustomToken() instead.");
x("Firebase.auth", 1, 3, arguments.length);
$f("Firebase.auth", a);
A("Firebase.auth", 2, b, !0);
A("Firebase.auth", 3, b, !0);
Ng(this.k.P, a, {}, {
remember: "none"
}, b, c)
};
U.prototype.auth = U.prototype.P;
U.prototype.ee = function(a) {
x("Firebase.unauth", 0, 1, arguments.length);
A("Firebase.unauth", 1, a, !0);
Og(this.k.P, a)
};
U.prototype.unauth = U.prototype.ee;
U.prototype.we = function() {
x("Firebase.getAuth", 0, 0, arguments.length);
return this.k.P.we()
};
U.prototype.getAuth = U.prototype.we;
U.prototype.ug = function(a, b) {
x("Firebase.onAuth", 1, 2, arguments.length);
A("Firebase.onAuth", 1, a, !1);
lb("Firebase.onAuth", 2, b);
this.k.P.Eb("auth_status", a, b)
};
U.prototype.onAuth = U.prototype.ug;
U.prototype.tg = function(a, b) {
x("Firebase.offAuth", 1, 2, arguments.length);
A("Firebase.offAuth", 1, a, !1);
lb("Firebase.offAuth", 2, b);
this.k.P.gc("auth_status", a, b)
};
U.prototype.offAuth = U.prototype.tg;
U.prototype.Wf = function(a, b, c) {
x("Firebase.authWithCustomToken", 2, 3, arguments.length);
$f("Firebase.authWithCustomToken", a);
A("Firebase.authWithCustomToken", 2, b, !1);
cg("Firebase.authWithCustomToken", 3, c, !0);
Ng(this.k.P, a, {}, c || {}, b)
};
U.prototype.authWithCustomToken = U.prototype.Wf;
U.prototype.Xf = function(a, b, c) {
x("Firebase.authWithOAuthPopup", 2, 3, arguments.length);
bg("Firebase.authWithOAuthPopup", a);
A("Firebase.authWithOAuthPopup", 2, b, !1);
cg("Firebase.authWithOAuthPopup", 3, c, !0);
Sg(this.k.P, a, c, b)
};
U.prototype.authWithOAuthPopup = U.prototype.Xf;
U.prototype.Yf = function(a, b, c) {
x("Firebase.authWithOAuthRedirect", 2, 3, arguments.length);
bg("Firebase.authWithOAuthRedirect", a);
A("Firebase.authWithOAuthRedirect", 2, b, !1);
cg("Firebase.authWithOAuthRedirect", 3, c, !0);
var d = this.k.P;
Qg(d);
var e = [zg],
f = kg(c);
"anonymous" === a || "firebase" === a ? R(b, Bg("TRANSPORT_UNAVAILABLE")) : (P.set("redirect_client_options", f.ld), Rg(d, e, "/auth/" + a, f, b))
};
U.prototype.authWithOAuthRedirect = U.prototype.Yf;
U.prototype.Zf = function(a, b, c, d) {
x("Firebase.authWithOAuthToken", 3, 4, arguments.length);
bg("Firebase.authWithOAuthToken", a);
A("Firebase.authWithOAuthToken", 3, c, !1);
cg("Firebase.authWithOAuthToken", 4, d, !0);
p(b) ? (ag("Firebase.authWithOAuthToken", 2, b), Pg(this.k.P, a + "/token", {
access_token: b
}, d, c)) : (cg("Firebase.authWithOAuthToken", 2, b, !1), Pg(this.k.P, a + "/token", b, d, c))
};
U.prototype.authWithOAuthToken = U.prototype.Zf;
U.prototype.Vf = function(a, b) {
x("Firebase.authAnonymously", 1, 2, arguments.length);
A("Firebase.authAnonymously", 1, a, !1);
cg("Firebase.authAnonymously", 2, b, !0);
Pg(this.k.P, "anonymous", {}, b, a)
};
U.prototype.authAnonymously = U.prototype.Vf;
U.prototype.$f = function(a, b, c) {
x("Firebase.authWithPassword", 2, 3, arguments.length);
cg("Firebase.authWithPassword", 1, a, !1);
dg("Firebase.authWithPassword", a, "email");
dg("Firebase.authWithPassword", a, "password");
A("Firebase.authWithPassword", 2, b, !1);
cg("Firebase.authWithPassword", 3, c, !0);
Pg(this.k.P, "password", a, c, b)
};
U.prototype.authWithPassword = U.prototype.$f;
U.prototype.re = function(a, b) {
x("Firebase.createUser", 2, 2, arguments.length);
cg("Firebase.createUser", 1, a, !1);
dg("Firebase.createUser", a, "email");
dg("Firebase.createUser", a, "password");
A("Firebase.createUser", 2, b, !1);
this.k.P.re(a, b)
};
U.prototype.createUser = U.prototype.re;
U.prototype.Se = function(a, b) {
x("Firebase.removeUser", 2, 2, arguments.length);
cg("Firebase.removeUser", 1, a, !1);
dg("Firebase.removeUser", a, "email");
dg("Firebase.removeUser", a, "password");
A("Firebase.removeUser", 2, b, !1);
this.k.P.Se(a, b)
};
U.prototype.removeUser = U.prototype.Se;
U.prototype.oe = function(a, b) {
x("Firebase.changePassword", 2, 2, arguments.length);
cg("Firebase.changePassword", 1, a, !1);
dg("Firebase.changePassword", a, "email");
dg("Firebase.changePassword", a, "oldPassword");
dg("Firebase.changePassword", a, "newPassword");
A("Firebase.changePassword", 2, b, !1);
this.k.P.oe(a, b)
};
U.prototype.changePassword = U.prototype.oe;
U.prototype.ne = function(a, b) {
x("Firebase.changeEmail", 2, 2, arguments.length);
cg("Firebase.changeEmail", 1, a, !1);
dg("Firebase.changeEmail", a, "oldEmail");
dg("Firebase.changeEmail", a, "newEmail");
dg("Firebase.changeEmail", a, "password");
A("Firebase.changeEmail", 2, b, !1);
this.k.P.ne(a, b)
};
U.prototype.changeEmail = U.prototype.ne;
U.prototype.Ue = function(a, b) {
x("Firebase.resetPassword", 2, 2, arguments.length);
cg("Firebase.resetPassword", 1, a, !1);
dg("Firebase.resetPassword", a, "email");
A("Firebase.resetPassword", 2, b, !1);
this.k.P.Ue(a, b)
};
U.prototype.resetPassword = U.prototype.Ue;
U.goOffline = function() {
x("Firebase.goOffline", 0, 0, arguments.length);
W.ub().yb()
};
U.goOnline = function() {
x("Firebase.goOnline", 0, 0, arguments.length);
W.ub().qc()
};
function Nc(a, b) {
J(!b || !0 === a || !1 === a, "Can't turn on custom loggers persistently.");
!0 === a ? ("undefined" !== typeof console && ("function" === typeof console.log ? Ab = q(console.log, console) : "object" === typeof console.log && (Ab = function(a) {
console.log(a)
})), b && P.set("logging_enabled", !0)) : a ? Ab = a : (Ab = null, P.remove("logging_enabled"))
}
U.enableLogging = Nc;
U.ServerValue = {
TIMESTAMP: {
".sv": "timestamp"
}
};
U.SDK_VERSION = "2.2.7";
U.INTERNAL = V;
U.Context = W;
U.TEST_ACCESS = Z;
})();
module.exports = Firebase;
/*! @license Firebase v2.2.7
License: https://www.firebase.com/terms/terms-of-service.html */
(function() {var h,aa=this;function n(a){return void 0!==a}function ba(){}function ca(a){a.ub=function(){return a.tf?a.tf:a.tf=new a}}
function da(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
else if("function"==b&&"undefined"==typeof a.call)return"object";return b}function ea(a){return"array"==da(a)}function fa(a){var b=da(a);return"array"==b||"object"==b&&"number"==typeof a.length}function p(a){return"string"==typeof a}function ga(a){return"number"==typeof a}function ha(a){return"function"==da(a)}function ia(a){var b=typeof a;return"object"==b&&null!=a||"function"==b}function ja(a,b,c){return a.call.apply(a.bind,arguments)}
function ka(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}}function q(a,b,c){q=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?ja:ka;return q.apply(null,arguments)}var la=Date.now||function(){return+new Date};
function ma(a,b){function c(){}c.prototype=b.prototype;a.Zg=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.Vg=function(a,c,f){for(var g=Array(arguments.length-2),k=2;k<arguments.length;k++)g[k-2]=arguments[k];return b.prototype[c].apply(a,g)}};function r(a,b){for(var c in a)b.call(void 0,a[c],c,a)}function na(a,b){var c={},d;for(d in a)c[d]=b.call(void 0,a[d],d,a);return c}function oa(a,b){for(var c in a)if(!b.call(void 0,a[c],c,a))return!1;return!0}function pa(a){var b=0,c;for(c in a)b++;return b}function qa(a){for(var b in a)return b}function ra(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b}function sa(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b}function ta(a,b){for(var c in a)if(a[c]==b)return!0;return!1}
function ua(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return d}function va(a,b){var c=ua(a,b,void 0);return c&&a[c]}function wa(a){for(var b in a)return!1;return!0}function xa(a){var b={},c;for(c in a)b[c]=a[c];return b}var ya="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
function za(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<ya.length;f++)c=ya[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};function Aa(a){a=String(a);if(/^\s*$/.test(a)?0:/^[\],:{}\s\u2028\u2029]*$/.test(a.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r\u2028\u2029\x00-\x08\x0a-\x1f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g,"")))try{return eval("("+a+")")}catch(b){}throw Error("Invalid JSON string: "+a);}function Ba(){this.Pd=void 0}
function Ca(a,b,c){switch(typeof b){case "string":Da(b,c);break;case "number":c.push(isFinite(b)&&!isNaN(b)?b:"null");break;case "boolean":c.push(b);break;case "undefined":c.push("null");break;case "object":if(null==b){c.push("null");break}if(ea(b)){var d=b.length;c.push("[");for(var e="",f=0;f<d;f++)c.push(e),e=b[f],Ca(a,a.Pd?a.Pd.call(b,String(f),e):e,c),e=",";c.push("]");break}c.push("{");d="";for(f in b)Object.prototype.hasOwnProperty.call(b,f)&&(e=b[f],"function"!=typeof e&&(c.push(d),Da(f,c),
c.push(":"),Ca(a,a.Pd?a.Pd.call(b,f,e):e,c),d=","));c.push("}");break;case "function":break;default:throw Error("Unknown type: "+typeof b);}}var Ea={'"':'\\"',"\\":"\\\\","/":"\\/","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\\u000b"},Fa=/\uffff/.test("\uffff")?/[\\\"\x00-\x1f\x7f-\uffff]/g:/[\\\"\x00-\x1f\x7f-\xff]/g;
function Da(a,b){b.push('"',a.replace(Fa,function(a){if(a in Ea)return Ea[a];var b=a.charCodeAt(0),e="\\u";16>b?e+="000":256>b?e+="00":4096>b&&(e+="0");return Ea[a]=e+b.toString(16)}),'"')};function Ga(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^la()).toString(36)};var Ha;a:{var Ia=aa.navigator;if(Ia){var Ja=Ia.userAgent;if(Ja){Ha=Ja;break a}}Ha=""};function Ka(){this.Wa=-1};function La(){this.Wa=-1;this.Wa=64;this.R=[];this.le=[];this.Tf=[];this.Id=[];this.Id[0]=128;for(var a=1;a<this.Wa;++a)this.Id[a]=0;this.be=this.$b=0;this.reset()}ma(La,Ka);La.prototype.reset=function(){this.R[0]=1732584193;this.R[1]=4023233417;this.R[2]=2562383102;this.R[3]=271733878;this.R[4]=3285377520;this.be=this.$b=0};
function Ma(a,b,c){c||(c=0);var d=a.Tf;if(p(b))for(var e=0;16>e;e++)d[e]=b.charCodeAt(c)<<24|b.charCodeAt(c+1)<<16|b.charCodeAt(c+2)<<8|b.charCodeAt(c+3),c+=4;else for(e=0;16>e;e++)d[e]=b[c]<<24|b[c+1]<<16|b[c+2]<<8|b[c+3],c+=4;for(e=16;80>e;e++){var f=d[e-3]^d[e-8]^d[e-14]^d[e-16];d[e]=(f<<1|f>>>31)&4294967295}b=a.R[0];c=a.R[1];for(var g=a.R[2],k=a.R[3],l=a.R[4],m,e=0;80>e;e++)40>e?20>e?(f=k^c&(g^k),m=1518500249):(f=c^g^k,m=1859775393):60>e?(f=c&g|k&(c|g),m=2400959708):(f=c^g^k,m=3395469782),f=(b<<
5|b>>>27)+f+l+m+d[e]&4294967295,l=k,k=g,g=(c<<30|c>>>2)&4294967295,c=b,b=f;a.R[0]=a.R[0]+b&4294967295;a.R[1]=a.R[1]+c&4294967295;a.R[2]=a.R[2]+g&4294967295;a.R[3]=a.R[3]+k&4294967295;a.R[4]=a.R[4]+l&4294967295}
La.prototype.update=function(a,b){if(null!=a){n(b)||(b=a.length);for(var c=b-this.Wa,d=0,e=this.le,f=this.$b;d<b;){if(0==f)for(;d<=c;)Ma(this,a,d),d+=this.Wa;if(p(a))for(;d<b;){if(e[f]=a.charCodeAt(d),++f,++d,f==this.Wa){Ma(this,e);f=0;break}}else for(;d<b;)if(e[f]=a[d],++f,++d,f==this.Wa){Ma(this,e);f=0;break}}this.$b=f;this.be+=b}};var t=Array.prototype,Na=t.indexOf?function(a,b,c){return t.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(p(a))return p(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1},Oa=t.forEach?function(a,b,c){t.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=p(a)?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)},Pa=t.filter?function(a,b,c){return t.filter.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,g=p(a)?
a.split(""):a,k=0;k<d;k++)if(k in g){var l=g[k];b.call(c,l,k,a)&&(e[f++]=l)}return e},Qa=t.map?function(a,b,c){return t.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f=p(a)?a.split(""):a,g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e},Ra=t.reduce?function(a,b,c,d){for(var e=[],f=1,g=arguments.length;f<g;f++)e.push(arguments[f]);d&&(e[0]=q(b,d));return t.reduce.apply(a,e)}:function(a,b,c,d){var e=c;Oa(a,function(c,g){e=b.call(d,e,c,g,a)});return e},Sa=t.every?function(a,b,
c){return t.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=p(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};function Ta(a,b){var c=Ua(a,b,void 0);return 0>c?null:p(a)?a.charAt(c):a[c]}function Ua(a,b,c){for(var d=a.length,e=p(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1}function Va(a,b){var c=Na(a,b);0<=c&&t.splice.call(a,c,1)}function Wa(a,b,c){return 2>=arguments.length?t.slice.call(a,b):t.slice.call(a,b,c)}
function Xa(a,b){a.sort(b||Ya)}function Ya(a,b){return a>b?1:a<b?-1:0};var Za=-1!=Ha.indexOf("Opera")||-1!=Ha.indexOf("OPR"),$a=-1!=Ha.indexOf("Trident")||-1!=Ha.indexOf("MSIE"),ab=-1!=Ha.indexOf("Gecko")&&-1==Ha.toLowerCase().indexOf("webkit")&&!(-1!=Ha.indexOf("Trident")||-1!=Ha.indexOf("MSIE")),bb=-1!=Ha.toLowerCase().indexOf("webkit");
(function(){var a="",b;if(Za&&aa.opera)return a=aa.opera.version,ha(a)?a():a;ab?b=/rv\:([^\);]+)(\)|;)/:$a?b=/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/:bb&&(b=/WebKit\/(\S+)/);b&&(a=(a=b.exec(Ha))?a[1]:"");return $a&&(b=(b=aa.document)?b.documentMode:void 0,b>parseFloat(a))?String(b):a})();var cb=null,db=null,eb=null;function fb(a,b){if(!fa(a))throw Error("encodeByteArray takes an array as a parameter");gb();for(var c=b?db:cb,d=[],e=0;e<a.length;e+=3){var f=a[e],g=e+1<a.length,k=g?a[e+1]:0,l=e+2<a.length,m=l?a[e+2]:0,v=f>>2,f=(f&3)<<4|k>>4,k=(k&15)<<2|m>>6,m=m&63;l||(m=64,g||(k=64));d.push(c[v],c[f],c[k],c[m])}return d.join("")}
function gb(){if(!cb){cb={};db={};eb={};for(var a=0;65>a;a++)cb[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a),db[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(a),eb[db[a]]=a,62<=a&&(eb["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a)]=a)}};function u(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function w(a,b){if(Object.prototype.hasOwnProperty.call(a,b))return a[b]}function hb(a,b){for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b(c,a[c])}function ib(a){var b={};hb(a,function(a,d){b[a]=d});return b};function jb(a){var b=[];hb(a,function(a,d){ea(d)?Oa(d,function(d){b.push(encodeURIComponent(a)+"="+encodeURIComponent(d))}):b.push(encodeURIComponent(a)+"="+encodeURIComponent(d))});return b.length?"&"+b.join("&"):""}function kb(a){var b={};a=a.replace(/^\?/,"").split("&");Oa(a,function(a){a&&(a=a.split("="),b[a[0]]=a[1])});return b};function x(a,b,c,d){var e;d<b?e="at least "+b:d>c&&(e=0===c?"none":"no more than "+c);if(e)throw Error(a+" failed: Was called with "+d+(1===d?" argument.":" arguments.")+" Expects "+e+".");}function z(a,b,c){var d="";switch(b){case 1:d=c?"first":"First";break;case 2:d=c?"second":"Second";break;case 3:d=c?"third":"Third";break;case 4:d=c?"fourth":"Fourth";break;default:throw Error("errorPrefix called with argumentNumber > 4. Need to update it?");}return a=a+" failed: "+(d+" argument ")}
function A(a,b,c,d){if((!d||n(c))&&!ha(c))throw Error(z(a,b,d)+"must be a valid function.");}function lb(a,b,c){if(n(c)&&(!ia(c)||null===c))throw Error(z(a,b,!0)+"must be a valid context object.");};function mb(a){return"undefined"!==typeof JSON&&n(JSON.parse)?JSON.parse(a):Aa(a)}function B(a){if("undefined"!==typeof JSON&&n(JSON.stringify))a=JSON.stringify(a);else{var b=[];Ca(new Ba,a,b);a=b.join("")}return a};function nb(){this.Sd=C}nb.prototype.j=function(a){return this.Sd.oa(a)};nb.prototype.toString=function(){return this.Sd.toString()};function ob(){}ob.prototype.pf=function(){return null};ob.prototype.xe=function(){return null};var pb=new ob;function qb(a,b,c){this.Qf=a;this.Ka=b;this.Hd=c}qb.prototype.pf=function(a){var b=this.Ka.D;if(rb(b,a))return b.j().M(a);b=null!=this.Hd?new sb(this.Hd,!0,!1):this.Ka.u();return this.Qf.Xa(a,b)};qb.prototype.xe=function(a,b,c){var d=null!=this.Hd?this.Hd:tb(this.Ka);a=this.Qf.me(d,b,1,c,a);return 0===a.length?null:a[0]};function ub(){this.tb=[]}function vb(a,b){for(var c=null,d=0;d<b.length;d++){var e=b[d],f=e.Yb();null===c||f.Z(c.Yb())||(a.tb.push(c),c=null);null===c&&(c=new wb(f));c.add(e)}c&&a.tb.push(c)}function xb(a,b,c){vb(a,c);yb(a,function(a){return a.Z(b)})}function zb(a,b,c){vb(a,c);yb(a,function(a){return a.contains(b)||b.contains(a)})}
function yb(a,b){for(var c=!0,d=0;d<a.tb.length;d++){var e=a.tb[d];if(e)if(e=e.Yb(),b(e)){for(var e=a.tb[d],f=0;f<e.sd.length;f++){var g=e.sd[f];if(null!==g){e.sd[f]=null;var k=g.Ub();Ab&&Bb("event: "+g.toString());Cb(k)}}a.tb[d]=null}else c=!1}c&&(a.tb=[])}function wb(a){this.qa=a;this.sd=[]}wb.prototype.add=function(a){this.sd.push(a)};wb.prototype.Yb=function(){return this.qa};function D(a,b,c,d){this.type=a;this.Ja=b;this.Ya=c;this.Je=d;this.Nd=void 0}function Db(a){return new D(Eb,a)}var Eb="value";function Fb(a,b,c,d){this.te=b;this.Wd=c;this.Nd=d;this.rd=a}Fb.prototype.Yb=function(){var a=this.Wd.lc();return"value"===this.rd?a.path:a.parent().path};Fb.prototype.ye=function(){return this.rd};Fb.prototype.Ub=function(){return this.te.Ub(this)};Fb.prototype.toString=function(){return this.Yb().toString()+":"+this.rd+":"+B(this.Wd.lf())};function Gb(a,b,c){this.te=a;this.error=b;this.path=c}Gb.prototype.Yb=function(){return this.path};Gb.prototype.ye=function(){return"cancel"};
Gb.prototype.Ub=function(){return this.te.Ub(this)};Gb.prototype.toString=function(){return this.path.toString()+":cancel"};function sb(a,b,c){this.B=a;this.$=b;this.Tb=c}function Hb(a){return a.$}function rb(a,b){return a.$&&!a.Tb||a.B.Ha(b)}sb.prototype.j=function(){return this.B};function Ib(a){this.dg=a;this.Ad=null}Ib.prototype.get=function(){var a=this.dg.get(),b=xa(a);if(this.Ad)for(var c in this.Ad)b[c]-=this.Ad[c];this.Ad=a;return b};function Jb(a,b){this.Mf={};this.Yd=new Ib(a);this.ca=b;var c=1E4+2E4*Math.random();setTimeout(q(this.Hf,this),Math.floor(c))}Jb.prototype.Hf=function(){var a=this.Yd.get(),b={},c=!1,d;for(d in a)0<a[d]&&u(this.Mf,d)&&(b[d]=a[d],c=!0);c&&this.ca.Te(b);setTimeout(q(this.Hf,this),Math.floor(6E5*Math.random()))};function Kb(){this.Dc={}}function Lb(a,b,c){n(c)||(c=1);u(a.Dc,b)||(a.Dc[b]=0);a.Dc[b]+=c}Kb.prototype.get=function(){return xa(this.Dc)};var Mb={},Nb={};function Ob(a){a=a.toString();Mb[a]||(Mb[a]=new Kb);return Mb[a]}function Pb(a,b){var c=a.toString();Nb[c]||(Nb[c]=b());return Nb[c]};function E(a,b){this.name=a;this.S=b}function Qb(a,b){return new E(a,b)};function Rb(a,b){return Sb(a.name,b.name)}function Tb(a,b){return Sb(a,b)};function Ub(a,b,c){this.type=Vb;this.source=a;this.path=b;this.Ia=c}Ub.prototype.Wc=function(a){return this.path.e()?new Ub(this.source,F,this.Ia.M(a)):new Ub(this.source,G(this.path),this.Ia)};Ub.prototype.toString=function(){return"Operation("+this.path+": "+this.source.toString()+" overwrite: "+this.Ia.toString()+")"};function Wb(a,b){this.type=Xb;this.source=Yb;this.path=a;this.Ve=b}Wb.prototype.Wc=function(){return this.path.e()?this:new Wb(G(this.path),this.Ve)};Wb.prototype.toString=function(){return"Operation("+this.path+": "+this.source.toString()+" ack write revert="+this.Ve+")"};function Zb(a,b){this.type=$b;this.source=a;this.path=b}Zb.prototype.Wc=function(){return this.path.e()?new Zb(this.source,F):new Zb(this.source,G(this.path))};Zb.prototype.toString=function(){return"Operation("+this.path+": "+this.source.toString()+" listen_complete)"};function ac(a,b){this.La=a;this.xa=b?b:bc}h=ac.prototype;h.Na=function(a,b){return new ac(this.La,this.xa.Na(a,b,this.La).X(null,null,!1,null,null))};h.remove=function(a){return new ac(this.La,this.xa.remove(a,this.La).X(null,null,!1,null,null))};h.get=function(a){for(var b,c=this.xa;!c.e();){b=this.La(a,c.key);if(0===b)return c.value;0>b?c=c.left:0<b&&(c=c.right)}return null};
function cc(a,b){for(var c,d=a.xa,e=null;!d.e();){c=a.La(b,d.key);if(0===c){if(d.left.e())return e?e.key:null;for(d=d.left;!d.right.e();)d=d.right;return d.key}0>c?d=d.left:0<c&&(e=d,d=d.right)}throw Error("Attempted to find predecessor key for a nonexistent key. What gives?");}h.e=function(){return this.xa.e()};h.count=function(){return this.xa.count()};h.Rc=function(){return this.xa.Rc()};h.ec=function(){return this.xa.ec()};h.ha=function(a){return this.xa.ha(a)};
h.Wb=function(a){return new dc(this.xa,null,this.La,!1,a)};h.Xb=function(a,b){return new dc(this.xa,a,this.La,!1,b)};h.Zb=function(a,b){return new dc(this.xa,a,this.La,!0,b)};h.rf=function(a){return new dc(this.xa,null,this.La,!0,a)};function dc(a,b,c,d,e){this.Rd=e||null;this.Ee=d;this.Pa=[];for(e=1;!a.e();)if(e=b?c(a.key,b):1,d&&(e*=-1),0>e)a=this.Ee?a.left:a.right;else if(0===e){this.Pa.push(a);break}else this.Pa.push(a),a=this.Ee?a.right:a.left}
function H(a){if(0===a.Pa.length)return null;var b=a.Pa.pop(),c;c=a.Rd?a.Rd(b.key,b.value):{key:b.key,value:b.value};if(a.Ee)for(b=b.left;!b.e();)a.Pa.push(b),b=b.right;else for(b=b.right;!b.e();)a.Pa.push(b),b=b.left;return c}function ec(a){if(0===a.Pa.length)return null;var b;b=a.Pa;b=b[b.length-1];return a.Rd?a.Rd(b.key,b.value):{key:b.key,value:b.value}}function fc(a,b,c,d,e){this.key=a;this.value=b;this.color=null!=c?c:!0;this.left=null!=d?d:bc;this.right=null!=e?e:bc}h=fc.prototype;
h.X=function(a,b,c,d,e){return new fc(null!=a?a:this.key,null!=b?b:this.value,null!=c?c:this.color,null!=d?d:this.left,null!=e?e:this.right)};h.count=function(){return this.left.count()+1+this.right.count()};h.e=function(){return!1};h.ha=function(a){return this.left.ha(a)||a(this.key,this.value)||this.right.ha(a)};function gc(a){return a.left.e()?a:gc(a.left)}h.Rc=function(){return gc(this).key};h.ec=function(){return this.right.e()?this.key:this.right.ec()};
h.Na=function(a,b,c){var d,e;e=this;d=c(a,e.key);e=0>d?e.X(null,null,null,e.left.Na(a,b,c),null):0===d?e.X(null,b,null,null,null):e.X(null,null,null,null,e.right.Na(a,b,c));return hc(e)};function ic(a){if(a.left.e())return bc;a.left.fa()||a.left.left.fa()||(a=jc(a));a=a.X(null,null,null,ic(a.left),null);return hc(a)}
h.remove=function(a,b){var c,d;c=this;if(0>b(a,c.key))c.left.e()||c.left.fa()||c.left.left.fa()||(c=jc(c)),c=c.X(null,null,null,c.left.remove(a,b),null);else{c.left.fa()&&(c=kc(c));c.right.e()||c.right.fa()||c.right.left.fa()||(c=lc(c),c.left.left.fa()&&(c=kc(c),c=lc(c)));if(0===b(a,c.key)){if(c.right.e())return bc;d=gc(c.right);c=c.X(d.key,d.value,null,null,ic(c.right))}c=c.X(null,null,null,null,c.right.remove(a,b))}return hc(c)};h.fa=function(){return this.color};
function hc(a){a.right.fa()&&!a.left.fa()&&(a=mc(a));a.left.fa()&&a.left.left.fa()&&(a=kc(a));a.left.fa()&&a.right.fa()&&(a=lc(a));return a}function jc(a){a=lc(a);a.right.left.fa()&&(a=a.X(null,null,null,null,kc(a.right)),a=mc(a),a=lc(a));return a}function mc(a){return a.right.X(null,null,a.color,a.X(null,null,!0,null,a.right.left),null)}function kc(a){return a.left.X(null,null,a.color,null,a.X(null,null,!0,a.left.right,null))}
function lc(a){return a.X(null,null,!a.color,a.left.X(null,null,!a.left.color,null,null),a.right.X(null,null,!a.right.color,null,null))}function nc(){}h=nc.prototype;h.X=function(){return this};h.Na=function(a,b){return new fc(a,b,null)};h.remove=function(){return this};h.count=function(){return 0};h.e=function(){return!0};h.ha=function(){return!1};h.Rc=function(){return null};h.ec=function(){return null};h.fa=function(){return!1};var bc=new nc;function oc(a,b){return a&&"object"===typeof a?(J(".sv"in a,"Unexpected leaf node or priority contents"),b[a[".sv"]]):a}function pc(a,b){var c=new qc;rc(a,new K(""),function(a,e){c.mc(a,sc(e,b))});return c}function sc(a,b){var c=a.A().K(),c=oc(c,b),d;if(a.N()){var e=oc(a.Ba(),b);return e!==a.Ba()||c!==a.A().K()?new tc(e,L(c)):a}d=a;c!==a.A().K()&&(d=d.da(new tc(c)));a.U(M,function(a,c){var e=sc(c,b);e!==c&&(d=d.Q(a,e))});return d};function K(a,b){if(1==arguments.length){this.n=a.split("/");for(var c=0,d=0;d<this.n.length;d++)0<this.n[d].length&&(this.n[c]=this.n[d],c++);this.n.length=c;this.Y=0}else this.n=a,this.Y=b}function N(a,b){var c=O(a);if(null===c)return b;if(c===O(b))return N(G(a),G(b));throw Error("INTERNAL ERROR: innerPath ("+b+") is not within outerPath ("+a+")");}function O(a){return a.Y>=a.n.length?null:a.n[a.Y]}function uc(a){return a.n.length-a.Y}
function G(a){var b=a.Y;b<a.n.length&&b++;return new K(a.n,b)}function vc(a){return a.Y<a.n.length?a.n[a.n.length-1]:null}h=K.prototype;h.toString=function(){for(var a="",b=this.Y;b<this.n.length;b++)""!==this.n[b]&&(a+="/"+this.n[b]);return a||"/"};h.slice=function(a){return this.n.slice(this.Y+(a||0))};h.parent=function(){if(this.Y>=this.n.length)return null;for(var a=[],b=this.Y;b<this.n.length-1;b++)a.push(this.n[b]);return new K(a,0)};
h.w=function(a){for(var b=[],c=this.Y;c<this.n.length;c++)b.push(this.n[c]);if(a instanceof K)for(c=a.Y;c<a.n.length;c++)b.push(a.n[c]);else for(a=a.split("/"),c=0;c<a.length;c++)0<a[c].length&&b.push(a[c]);return new K(b,0)};h.e=function(){return this.Y>=this.n.length};h.Z=function(a){if(uc(this)!==uc(a))return!1;for(var b=this.Y,c=a.Y;b<=this.n.length;b++,c++)if(this.n[b]!==a.n[c])return!1;return!0};
h.contains=function(a){var b=this.Y,c=a.Y;if(uc(this)>uc(a))return!1;for(;b<this.n.length;){if(this.n[b]!==a.n[c])return!1;++b;++c}return!0};var F=new K("");function wc(a,b){this.Qa=a.slice();this.Ea=Math.max(1,this.Qa.length);this.kf=b;for(var c=0;c<this.Qa.length;c++)this.Ea+=xc(this.Qa[c]);yc(this)}wc.prototype.push=function(a){0<this.Qa.length&&(this.Ea+=1);this.Qa.push(a);this.Ea+=xc(a);yc(this)};wc.prototype.pop=function(){var a=this.Qa.pop();this.Ea-=xc(a);0<this.Qa.length&&--this.Ea};
function yc(a){if(768<a.Ea)throw Error(a.kf+"has a key path longer than 768 bytes ("+a.Ea+").");if(32<a.Qa.length)throw Error(a.kf+"path specified exceeds the maximum depth that can be written (32) or object contains a cycle "+zc(a));}function zc(a){return 0==a.Qa.length?"":"in property '"+a.Qa.join(".")+"'"};function Ac(){this.wc={}}Ac.prototype.set=function(a,b){null==b?delete this.wc[a]:this.wc[a]=b};Ac.prototype.get=function(a){return u(this.wc,a)?this.wc[a]:null};Ac.prototype.remove=function(a){delete this.wc[a]};Ac.prototype.uf=!0;function Bc(a){this.Ec=a;this.Md="firebase:"}h=Bc.prototype;h.set=function(a,b){null==b?this.Ec.removeItem(this.Md+a):this.Ec.setItem(this.Md+a,B(b))};h.get=function(a){a=this.Ec.getItem(this.Md+a);return null==a?null:mb(a)};h.remove=function(a){this.Ec.removeItem(this.Md+a)};h.uf=!1;h.toString=function(){return this.Ec.toString()};function Cc(a){try{if("undefined"!==typeof window&&"undefined"!==typeof window[a]){var b=window[a];b.setItem("firebase:sentinel","cache");b.removeItem("firebase:sentinel");return new Bc(b)}}catch(c){}return new Ac}var Dc=Cc("localStorage"),P=Cc("sessionStorage");function Ec(a,b,c,d,e){this.host=a.toLowerCase();this.domain=this.host.substr(this.host.indexOf(".")+1);this.lb=b;this.Cb=c;this.Tg=d;this.Ld=e||"";this.Oa=Dc.get("host:"+a)||this.host}function Fc(a,b){b!==a.Oa&&(a.Oa=b,"s-"===a.Oa.substr(0,2)&&Dc.set("host:"+a.host,a.Oa))}Ec.prototype.toString=function(){var a=(this.lb?"https://":"http://")+this.host;this.Ld&&(a+="<"+this.Ld+">");return a};var Gc=function(){var a=1;return function(){return a++}}();function J(a,b){if(!a)throw Hc(b);}function Hc(a){return Error("Firebase (2.2.7) INTERNAL ASSERT FAILED: "+a)}
function Ic(a){try{var b;if("undefined"!==typeof atob)b=atob(a);else{gb();for(var c=eb,d=[],e=0;e<a.length;){var f=c[a.charAt(e++)],g=e<a.length?c[a.charAt(e)]:0;++e;var k=e<a.length?c[a.charAt(e)]:64;++e;var l=e<a.length?c[a.charAt(e)]:64;++e;if(null==f||null==g||null==k||null==l)throw Error();d.push(f<<2|g>>4);64!=k&&(d.push(g<<4&240|k>>2),64!=l&&d.push(k<<6&192|l))}if(8192>d.length)b=String.fromCharCode.apply(null,d);else{a="";for(c=0;c<d.length;c+=8192)a+=String.fromCharCode.apply(null,Wa(d,c,
c+8192));b=a}}return b}catch(m){Bb("base64Decode failed: ",m)}return null}function Jc(a){var b=Kc(a);a=new La;a.update(b);var b=[],c=8*a.be;56>a.$b?a.update(a.Id,56-a.$b):a.update(a.Id,a.Wa-(a.$b-56));for(var d=a.Wa-1;56<=d;d--)a.le[d]=c&255,c/=256;Ma(a,a.le);for(d=c=0;5>d;d++)for(var e=24;0<=e;e-=8)b[c]=a.R[d]>>e&255,++c;return fb(b)}
function Lc(a){for(var b="",c=0;c<arguments.length;c++)b=fa(arguments[c])?b+Lc.apply(null,arguments[c]):"object"===typeof arguments[c]?b+B(arguments[c]):b+arguments[c],b+=" ";return b}var Ab=null,Mc=!0;function Bb(a){!0===Mc&&(Mc=!1,null===Ab&&!0===P.get("logging_enabled")&&Nc(!0));if(Ab){var b=Lc.apply(null,arguments);Ab(b)}}function Oc(a){return function(){Bb(a,arguments)}}
function Pc(a){if("undefined"!==typeof console){var b="FIREBASE INTERNAL ERROR: "+Lc.apply(null,arguments);"undefined"!==typeof console.error?console.error(b):console.log(b)}}function Qc(a){var b=Lc.apply(null,arguments);throw Error("FIREBASE FATAL ERROR: "+b);}function Q(a){if("undefined"!==typeof console){var b="FIREBASE WARNING: "+Lc.apply(null,arguments);"undefined"!==typeof console.warn?console.warn(b):console.log(b)}}
function Rc(a){var b="",c="",d="",e="",f=!0,g="https",k=443;if(p(a)){var l=a.indexOf("//");0<=l&&(g=a.substring(0,l-1),a=a.substring(l+2));l=a.indexOf("/");-1===l&&(l=a.length);b=a.substring(0,l);e="";a=a.substring(l).split("/");for(l=0;l<a.length;l++)if(0<a[l].length){var m=a[l];try{m=decodeURIComponent(m.replace(/\+/g," "))}catch(v){}e+="/"+m}a=b.split(".");3===a.length?(c=a[1],d=a[0].toLowerCase()):2===a.length&&(c=a[0]);l=b.indexOf(":");0<=l&&(f="https"===g||"wss"===g,k=b.substring(l+1),isFinite(k)&&
(k=String(k)),k=p(k)?/^\s*-?0x/i.test(k)?parseInt(k,16):parseInt(k,10):NaN)}return{host:b,port:k,domain:c,Qg:d,lb:f,scheme:g,Zc:e}}function Sc(a){return ga(a)&&(a!=a||a==Number.POSITIVE_INFINITY||a==Number.NEGATIVE_INFINITY)}
function Tc(a){if("complete"===document.readyState)a();else{var b=!1,c=function(){document.body?b||(b=!0,a()):setTimeout(c,Math.floor(10))};document.addEventListener?(document.addEventListener("DOMContentLoaded",c,!1),window.addEventListener("load",c,!1)):document.attachEvent&&(document.attachEvent("onreadystatechange",function(){"complete"===document.readyState&&c()}),window.attachEvent("onload",c))}}
function Sb(a,b){if(a===b)return 0;if("[MIN_NAME]"===a||"[MAX_NAME]"===b)return-1;if("[MIN_NAME]"===b||"[MAX_NAME]"===a)return 1;var c=Uc(a),d=Uc(b);return null!==c?null!==d?0==c-d?a.length-b.length:c-d:-1:null!==d?1:a<b?-1:1}function Vc(a,b){if(b&&a in b)return b[a];throw Error("Missing required key ("+a+") in object: "+B(b));}
function Wc(a){if("object"!==typeof a||null===a)return B(a);var b=[],c;for(c in a)b.push(c);b.sort();c="{";for(var d=0;d<b.length;d++)0!==d&&(c+=","),c+=B(b[d]),c+=":",c+=Wc(a[b[d]]);return c+"}"}function Xc(a,b){if(a.length<=b)return[a];for(var c=[],d=0;d<a.length;d+=b)d+b>a?c.push(a.substring(d,a.length)):c.push(a.substring(d,d+b));return c}function Yc(a,b){if(ea(a))for(var c=0;c<a.length;++c)b(c,a[c]);else r(a,b)}
function Zc(a){J(!Sc(a),"Invalid JSON number");var b,c,d,e;0===a?(d=c=0,b=-Infinity===1/a?1:0):(b=0>a,a=Math.abs(a),a>=Math.pow(2,-1022)?(d=Math.min(Math.floor(Math.log(a)/Math.LN2),1023),c=d+1023,d=Math.round(a*Math.pow(2,52-d)-Math.pow(2,52))):(c=0,d=Math.round(a/Math.pow(2,-1074))));e=[];for(a=52;a;--a)e.push(d%2?1:0),d=Math.floor(d/2);for(a=11;a;--a)e.push(c%2?1:0),c=Math.floor(c/2);e.push(b?1:0);e.reverse();b=e.join("");c="";for(a=0;64>a;a+=8)d=parseInt(b.substr(a,8),2).toString(16),1===d.length&&
(d="0"+d),c+=d;return c.toLowerCase()}var $c=/^-?\d{1,10}$/;function Uc(a){return $c.test(a)&&(a=Number(a),-2147483648<=a&&2147483647>=a)?a:null}function Cb(a){try{a()}catch(b){setTimeout(function(){Q("Exception was thrown by user callback.",b.stack||"");throw b;},Math.floor(0))}}function R(a,b){if(ha(a)){var c=Array.prototype.slice.call(arguments,1).slice();Cb(function(){a.apply(null,c)})}};function Kc(a){for(var b=[],c=0,d=0;d<a.length;d++){var e=a.charCodeAt(d);55296<=e&&56319>=e&&(e-=55296,d++,J(d<a.length,"Surrogate pair missing trail surrogate."),e=65536+(e<<10)+(a.charCodeAt(d)-56320));128>e?b[c++]=e:(2048>e?b[c++]=e>>6|192:(65536>e?b[c++]=e>>12|224:(b[c++]=e>>18|240,b[c++]=e>>12&63|128),b[c++]=e>>6&63|128),b[c++]=e&63|128)}return b}function xc(a){for(var b=0,c=0;c<a.length;c++){var d=a.charCodeAt(c);128>d?b++:2048>d?b+=2:55296<=d&&56319>=d?(b+=4,c++):b+=3}return b};function ad(a){var b={},c={},d={},e="";try{var f=a.split("."),b=mb(Ic(f[0])||""),c=mb(Ic(f[1])||""),e=f[2],d=c.d||{};delete c.d}catch(g){}return{Wg:b,Ac:c,data:d,Ng:e}}function bd(a){a=ad(a).Ac;return"object"===typeof a&&a.hasOwnProperty("iat")?w(a,"iat"):null}function cd(a){a=ad(a);var b=a.Ac;return!!a.Ng&&!!b&&"object"===typeof b&&b.hasOwnProperty("iat")};function dd(a){this.V=a;this.g=a.o.g}function ed(a,b,c,d){var e=[],f=[];Oa(b,function(b){"child_changed"===b.type&&a.g.xd(b.Je,b.Ja)&&f.push(new D("child_moved",b.Ja,b.Ya))});fd(a,e,"child_removed",b,d,c);fd(a,e,"child_added",b,d,c);fd(a,e,"child_moved",f,d,c);fd(a,e,"child_changed",b,d,c);fd(a,e,Eb,b,d,c);return e}function fd(a,b,c,d,e,f){d=Pa(d,function(a){return a.type===c});Xa(d,q(a.eg,a));Oa(d,function(c){var d=gd(a,c,f);Oa(e,function(e){e.Jf(c.type)&&b.push(e.createEvent(d,a.V))})})}
function gd(a,b,c){"value"!==b.type&&"child_removed"!==b.type&&(b.Nd=c.qf(b.Ya,b.Ja,a.g));return b}dd.prototype.eg=function(a,b){if(null==a.Ya||null==b.Ya)throw Hc("Should only compare child_ events.");return this.g.compare(new E(a.Ya,a.Ja),new E(b.Ya,b.Ja))};function hd(){this.eb={}}
function id(a,b){var c=b.type,d=b.Ya;J("child_added"==c||"child_changed"==c||"child_removed"==c,"Only child changes supported for tracking");J(".priority"!==d,"Only non-priority child changes can be tracked.");var e=w(a.eb,d);if(e){var f=e.type;if("child_added"==c&&"child_removed"==f)a.eb[d]=new D("child_changed",b.Ja,d,e.Ja);else if("child_removed"==c&&"child_added"==f)delete a.eb[d];else if("child_removed"==c&&"child_changed"==f)a.eb[d]=new D("child_removed",e.Je,d);else if("child_changed"==c&&
"child_added"==f)a.eb[d]=new D("child_added",b.Ja,d);else if("child_changed"==c&&"child_changed"==f)a.eb[d]=new D("child_changed",b.Ja,d,e.Je);else throw Hc("Illegal combination of changes: "+b+" occurred after "+e);}else a.eb[d]=b};function jd(a,b,c){this.Pb=a;this.qb=b;this.sb=c||null}h=jd.prototype;h.Jf=function(a){return"value"===a};h.createEvent=function(a,b){var c=b.o.g;return new Fb("value",this,new S(a.Ja,b.lc(),c))};h.Ub=function(a){var b=this.sb;if("cancel"===a.ye()){J(this.qb,"Raising a cancel event on a listener with no cancel callback");var c=this.qb;return function(){c.call(b,a.error)}}var d=this.Pb;return function(){d.call(b,a.Wd)}};h.ff=function(a,b){return this.qb?new Gb(this,a,b):null};
h.matches=function(a){return a instanceof jd?a.Pb&&this.Pb?a.Pb===this.Pb&&a.sb===this.sb:!0:!1};h.sf=function(){return null!==this.Pb};function kd(a,b,c){this.ga=a;this.qb=b;this.sb=c}h=kd.prototype;h.Jf=function(a){a="children_added"===a?"child_added":a;return("children_removed"===a?"child_removed":a)in this.ga};h.ff=function(a,b){return this.qb?new Gb(this,a,b):null};
h.createEvent=function(a,b){J(null!=a.Ya,"Child events should have a childName.");var c=b.lc().w(a.Ya);return new Fb(a.type,this,new S(a.Ja,c,b.o.g),a.Nd)};h.Ub=function(a){var b=this.sb;if("cancel"===a.ye()){J(this.qb,"Raising a cancel event on a listener with no cancel callback");var c=this.qb;return function(){c.call(b,a.error)}}var d=this.ga[a.rd];return function(){d.call(b,a.Wd,a.Nd)}};
h.matches=function(a){if(a instanceof kd){if(!this.ga||!a.ga)return!0;if(this.sb===a.sb){var b=pa(a.ga);if(b===pa(this.ga)){if(1===b){var b=qa(a.ga),c=qa(this.ga);return c===b&&(!a.ga[b]||!this.ga[c]||a.ga[b]===this.ga[c])}return oa(this.ga,function(b,c){return a.ga[c]===b})}}}return!1};h.sf=function(){return null!==this.ga};function ld(a){this.g=a}h=ld.prototype;h.G=function(a,b,c,d,e){J(a.Ic(this.g),"A node must be indexed if only a child is updated");d=a.M(b);if(d.Z(c))return a;null!=e&&(c.e()?a.Ha(b)?id(e,new D("child_removed",d,b)):J(a.N(),"A child remove without an old child only makes sense on a leaf node"):d.e()?id(e,new D("child_added",c,b)):id(e,new D("child_changed",c,b,d)));return a.N()&&c.e()?a:a.Q(b,c).mb(this.g)};
h.ta=function(a,b,c){null!=c&&(a.N()||a.U(M,function(a,e){b.Ha(a)||id(c,new D("child_removed",e,a))}),b.N()||b.U(M,function(b,e){if(a.Ha(b)){var f=a.M(b);f.Z(e)||id(c,new D("child_changed",e,b,f))}else id(c,new D("child_added",e,b))}));return b.mb(this.g)};h.da=function(a,b){return a.e()?C:a.da(b)};h.Ga=function(){return!1};h.Vb=function(){return this};function md(a){this.Ae=new ld(a.g);this.g=a.g;var b;a.la?(b=nd(a),b=a.g.Oc(od(a),b)):b=a.g.Sc();this.dd=b;a.na?(b=pd(a),a=a.g.Oc(qd(a),b)):a=a.g.Pc();this.Fc=a}h=md.prototype;h.matches=function(a){return 0>=this.g.compare(this.dd,a)&&0>=this.g.compare(a,this.Fc)};h.G=function(a,b,c,d,e){this.matches(new E(b,c))||(c=C);return this.Ae.G(a,b,c,d,e)};h.ta=function(a,b,c){b.N()&&(b=C);var d=b.mb(this.g),d=d.da(C),e=this;b.U(M,function(a,b){e.matches(new E(a,b))||(d=d.Q(a,C))});return this.Ae.ta(a,d,c)};
h.da=function(a){return a};h.Ga=function(){return!0};h.Vb=function(){return this.Ae};function rd(a){this.ra=new md(a);this.g=a.g;J(a.ia,"Only valid if limit has been set");this.ja=a.ja;this.Jb=!sd(a)}h=rd.prototype;h.G=function(a,b,c,d,e){this.ra.matches(new E(b,c))||(c=C);return a.M(b).Z(c)?a:a.Db()<this.ja?this.ra.Vb().G(a,b,c,d,e):td(this,a,b,c,d,e)};
h.ta=function(a,b,c){var d;if(b.N()||b.e())d=C.mb(this.g);else if(2*this.ja<b.Db()&&b.Ic(this.g)){d=C.mb(this.g);b=this.Jb?b.Zb(this.ra.Fc,this.g):b.Xb(this.ra.dd,this.g);for(var e=0;0<b.Pa.length&&e<this.ja;){var f=H(b),g;if(g=this.Jb?0>=this.g.compare(this.ra.dd,f):0>=this.g.compare(f,this.ra.Fc))d=d.Q(f.name,f.S),e++;else break}}else{d=b.mb(this.g);d=d.da(C);var k,l,m;if(this.Jb){b=d.rf(this.g);k=this.ra.Fc;l=this.ra.dd;var v=ud(this.g);m=function(a,b){return v(b,a)}}else b=d.Wb(this.g),k=this.ra.dd,
l=this.ra.Fc,m=ud(this.g);for(var e=0,y=!1;0<b.Pa.length;)f=H(b),!y&&0>=m(k,f)&&(y=!0),(g=y&&e<this.ja&&0>=m(f,l))?e++:d=d.Q(f.name,C)}return this.ra.Vb().ta(a,d,c)};h.da=function(a){return a};h.Ga=function(){return!0};h.Vb=function(){return this.ra.Vb()};
function td(a,b,c,d,e,f){var g;if(a.Jb){var k=ud(a.g);g=function(a,b){return k(b,a)}}else g=ud(a.g);J(b.Db()==a.ja,"");var l=new E(c,d),m=a.Jb?wd(b,a.g):xd(b,a.g),v=a.ra.matches(l);if(b.Ha(c)){var y=b.M(c),m=e.xe(a.g,m,a.Jb);null!=m&&m.name==c&&(m=e.xe(a.g,m,a.Jb));e=null==m?1:g(m,l);if(v&&!d.e()&&0<=e)return null!=f&&id(f,new D("child_changed",d,c,y)),b.Q(c,d);null!=f&&id(f,new D("child_removed",y,c));b=b.Q(c,C);return null!=m&&a.ra.matches(m)?(null!=f&&id(f,new D("child_added",m.S,m.name)),b.Q(m.name,
m.S)):b}return d.e()?b:v&&0<=g(m,l)?(null!=f&&(id(f,new D("child_removed",m.S,m.name)),id(f,new D("child_added",d,c))),b.Q(c,d).Q(m.name,C)):b};function yd(a,b){this.he=a;this.cg=b}function zd(a){this.I=a}
zd.prototype.bb=function(a,b,c,d){var e=new hd,f;if(b.type===Vb)b.source.ve?c=Ad(this,a,b.path,b.Ia,c,d,e):(J(b.source.of,"Unknown source."),f=b.source.af,c=Bd(this,a,b.path,b.Ia,c,d,f,e));else if(b.type===Cd)b.source.ve?c=Dd(this,a,b.path,b.children,c,d,e):(J(b.source.of,"Unknown source."),f=b.source.af,c=Ed(this,a,b.path,b.children,c,d,f,e));else if(b.type===Xb)if(b.Ve)if(f=b.path,null!=c.sc(f))c=a;else{b=new qb(c,a,d);d=a.D.j();if(f.e()||".priority"===O(f))Hb(a.u())?b=c.ua(tb(a)):(b=a.u().j(),
J(b instanceof T,"serverChildren would be complete if leaf node"),b=c.xc(b)),b=this.I.ta(d,b,e);else{f=O(f);var g=c.Xa(f,a.u());null==g&&rb(a.u(),f)&&(g=d.M(f));b=null!=g?this.I.G(d,f,g,b,e):a.D.j().Ha(f)?this.I.G(d,f,C,b,e):d;b.e()&&Hb(a.u())&&(d=c.ua(tb(a)),d.N()&&(b=this.I.ta(b,d,e)))}d=Hb(a.u())||null!=c.sc(F);c=Fd(a,b,d,this.I.Ga())}else c=Gd(this,a,b.path,c,d,e);else if(b.type===$b)d=b.path,b=a.u(),f=b.j(),g=b.$||d.e(),c=Hd(this,new Id(a.D,new sb(f,g,b.Tb)),d,c,pb,e);else throw Hc("Unknown operation type: "+
b.type);e=ra(e.eb);d=c;b=d.D;b.$&&(f=b.j().N()||b.j().e(),g=Jd(a),(0<e.length||!a.D.$||f&&!b.j().Z(g)||!b.j().A().Z(g.A()))&&e.push(Db(Jd(d))));return new yd(c,e)};
function Hd(a,b,c,d,e,f){var g=b.D;if(null!=d.sc(c))return b;var k;if(c.e())J(Hb(b.u()),"If change path is empty, we must have complete server data"),b.u().Tb?(e=tb(b),d=d.xc(e instanceof T?e:C)):d=d.ua(tb(b)),f=a.I.ta(b.D.j(),d,f);else{var l=O(c);if(".priority"==l)J(1==uc(c),"Can't have a priority with additional path components"),f=g.j(),k=b.u().j(),d=d.hd(c,f,k),f=null!=d?a.I.da(f,d):g.j();else{var m=G(c);rb(g,l)?(k=b.u().j(),d=d.hd(c,g.j(),k),d=null!=d?g.j().M(l).G(m,d):g.j().M(l)):d=d.Xa(l,b.u());
f=null!=d?a.I.G(g.j(),l,d,e,f):g.j()}}return Fd(b,f,g.$||c.e(),a.I.Ga())}function Bd(a,b,c,d,e,f,g,k){var l=b.u();g=g?a.I:a.I.Vb();if(c.e())d=g.ta(l.j(),d,null);else if(g.Ga()&&!l.Tb)d=l.j().G(c,d),d=g.ta(l.j(),d,null);else{var m=O(c);if((c.e()?!l.$||l.Tb:!rb(l,O(c)))&&1<uc(c))return b;d=l.j().M(m).G(G(c),d);d=".priority"==m?g.da(l.j(),d):g.G(l.j(),m,d,pb,null)}l=l.$||c.e();b=new Id(b.D,new sb(d,l,g.Ga()));return Hd(a,b,c,e,new qb(e,b,f),k)}
function Ad(a,b,c,d,e,f,g){var k=b.D;e=new qb(e,b,f);if(c.e())g=a.I.ta(b.D.j(),d,g),a=Fd(b,g,!0,a.I.Ga());else if(f=O(c),".priority"===f)g=a.I.da(b.D.j(),d),a=Fd(b,g,k.$,k.Tb);else{var l=G(c);c=k.j().M(f);if(!l.e()){var m=e.pf(f);d=null!=m?".priority"===vc(l)&&m.oa(l.parent()).e()?m:m.G(l,d):C}c.Z(d)?a=b:(g=a.I.G(k.j(),f,d,e,g),a=Fd(b,g,k.$,a.I.Ga()))}return a}
function Dd(a,b,c,d,e,f,g){var k=b;Kd(d,function(d,m){var v=c.w(d);rb(b.D,O(v))&&(k=Ad(a,k,v,m,e,f,g))});Kd(d,function(d,m){var v=c.w(d);rb(b.D,O(v))||(k=Ad(a,k,v,m,e,f,g))});return k}function Ld(a,b){Kd(b,function(b,d){a=a.G(b,d)});return a}
function Ed(a,b,c,d,e,f,g,k){if(b.u().j().e()&&!Hb(b.u()))return b;var l=b;c=c.e()?d:Md(Nd,c,d);var m=b.u().j();c.children.ha(function(c,d){if(m.Ha(c)){var I=b.u().j().M(c),I=Ld(I,d);l=Bd(a,l,new K(c),I,e,f,g,k)}});c.children.ha(function(c,d){var I=!Hb(b.u())&&null==d.value;m.Ha(c)||I||(I=b.u().j().M(c),I=Ld(I,d),l=Bd(a,l,new K(c),I,e,f,g,k))});return l}
function Gd(a,b,c,d,e,f){if(null!=d.sc(c))return b;var g=new qb(d,b,e),k=e=b.D.j();if(Hb(b.u())){if(c.e())e=d.ua(tb(b)),k=a.I.ta(b.D.j(),e,f);else if(".priority"===O(c)){var l=d.Xa(O(c),b.u());null==l||e.e()||e.A().Z(l)||(k=a.I.da(e,l))}else l=O(c),e=d.Xa(l,b.u()),null!=e&&(k=a.I.G(b.D.j(),l,e,g,f));e=!0}else if(b.D.$||c.e())k=e,e=b.D.j(),e.N()||e.U(M,function(c){var e=d.Xa(c,b.u());null!=e&&(k=a.I.G(k,c,e,g,f))}),e=b.D.$;else{l=O(c);if(1==uc(c)||rb(b.D,l))c=d.Xa(l,b.u()),null!=c&&(k=a.I.G(e,l,c,
g,f));e=!1}return Fd(b,k,e,a.I.Ga())};function Od(){}var Pd={};function ud(a){return q(a.compare,a)}Od.prototype.xd=function(a,b){return 0!==this.compare(new E("[MIN_NAME]",a),new E("[MIN_NAME]",b))};Od.prototype.Sc=function(){return Qd};function Rd(a){this.bc=a}ma(Rd,Od);h=Rd.prototype;h.Hc=function(a){return!a.M(this.bc).e()};h.compare=function(a,b){var c=a.S.M(this.bc),d=b.S.M(this.bc),c=c.Cc(d);return 0===c?Sb(a.name,b.name):c};h.Oc=function(a,b){var c=L(a),c=C.Q(this.bc,c);return new E(b,c)};
h.Pc=function(){var a=C.Q(this.bc,Sd);return new E("[MAX_NAME]",a)};h.toString=function(){return this.bc};function Td(){}ma(Td,Od);h=Td.prototype;h.compare=function(a,b){var c=a.S.A(),d=b.S.A(),c=c.Cc(d);return 0===c?Sb(a.name,b.name):c};h.Hc=function(a){return!a.A().e()};h.xd=function(a,b){return!a.A().Z(b.A())};h.Sc=function(){return Qd};h.Pc=function(){return new E("[MAX_NAME]",new tc("[PRIORITY-POST]",Sd))};h.Oc=function(a,b){var c=L(a);return new E(b,new tc("[PRIORITY-POST]",c))};
h.toString=function(){return".priority"};var M=new Td;function Ud(){}ma(Ud,Od);h=Ud.prototype;h.compare=function(a,b){return Sb(a.name,b.name)};h.Hc=function(){throw Hc("KeyIndex.isDefinedOn not expected to be called.");};h.xd=function(){return!1};h.Sc=function(){return Qd};h.Pc=function(){return new E("[MAX_NAME]",C)};h.Oc=function(a){J(p(a),"KeyIndex indexValue must always be a string.");return new E(a,C)};h.toString=function(){return".key"};var Vd=new Ud;function Wd(){}ma(Wd,Od);h=Wd.prototype;
h.compare=function(a,b){var c=a.S.Cc(b.S);return 0===c?Sb(a.name,b.name):c};h.Hc=function(){return!0};h.xd=function(a,b){return!a.Z(b)};h.Sc=function(){return Qd};h.Pc=function(){return Xd};h.Oc=function(a,b){var c=L(a);return new E(b,c)};h.toString=function(){return".value"};var Yd=new Wd;function Zd(){this.Rb=this.na=this.Lb=this.la=this.ia=!1;this.ja=0;this.Nb="";this.dc=null;this.xb="";this.ac=null;this.vb="";this.g=M}var $d=new Zd;function sd(a){return""===a.Nb?a.la:"l"===a.Nb}function od(a){J(a.la,"Only valid if start has been set");return a.dc}function nd(a){J(a.la,"Only valid if start has been set");return a.Lb?a.xb:"[MIN_NAME]"}function qd(a){J(a.na,"Only valid if end has been set");return a.ac}
function pd(a){J(a.na,"Only valid if end has been set");return a.Rb?a.vb:"[MAX_NAME]"}function ae(a){var b=new Zd;b.ia=a.ia;b.ja=a.ja;b.la=a.la;b.dc=a.dc;b.Lb=a.Lb;b.xb=a.xb;b.na=a.na;b.ac=a.ac;b.Rb=a.Rb;b.vb=a.vb;b.g=a.g;return b}h=Zd.prototype;h.Ge=function(a){var b=ae(this);b.ia=!0;b.ja=a;b.Nb="";return b};h.He=function(a){var b=ae(this);b.ia=!0;b.ja=a;b.Nb="l";return b};h.Ie=function(a){var b=ae(this);b.ia=!0;b.ja=a;b.Nb="r";return b};
h.Xd=function(a,b){var c=ae(this);c.la=!0;n(a)||(a=null);c.dc=a;null!=b?(c.Lb=!0,c.xb=b):(c.Lb=!1,c.xb="");return c};h.qd=function(a,b){var c=ae(this);c.na=!0;n(a)||(a=null);c.ac=a;n(b)?(c.Rb=!0,c.vb=b):(c.Yg=!1,c.vb="");return c};function be(a,b){var c=ae(a);c.g=b;return c}function ce(a){var b={};a.la&&(b.sp=a.dc,a.Lb&&(b.sn=a.xb));a.na&&(b.ep=a.ac,a.Rb&&(b.en=a.vb));if(a.ia){b.l=a.ja;var c=a.Nb;""===c&&(c=sd(a)?"l":"r");b.vf=c}a.g!==M&&(b.i=a.g.toString());return b}
function de(a){return!(a.la||a.na||a.ia)}function ee(a){var b={};if(de(a)&&a.g==M)return b;var c;a.g===M?c="$priority":a.g===Yd?c="$value":a.g===Vd?c="$key":(J(a.g instanceof Rd,"Unrecognized index type!"),c=a.g.toString());b.orderBy=B(c);a.la&&(b.startAt=B(a.dc),a.Lb&&(b.startAt+=","+B(a.xb)));a.na&&(b.endAt=B(a.ac),a.Rb&&(b.endAt+=","+B(a.vb)));a.ia&&(sd(a)?b.limitToFirst=a.ja:b.limitToLast=a.ja);return b}h.toString=function(){return B(ce(this))};function fe(a,b){this.yd=a;this.cc=b}fe.prototype.get=function(a){var b=w(this.yd,a);if(!b)throw Error("No index defined for "+a);return b===Pd?null:b};function ge(a,b,c){var d=na(a.yd,function(d,f){var g=w(a.cc,f);J(g,"Missing index implementation for "+f);if(d===Pd){if(g.Hc(b.S)){for(var k=[],l=c.Wb(Qb),m=H(l);m;)m.name!=b.name&&k.push(m),m=H(l);k.push(b);return he(k,ud(g))}return Pd}g=c.get(b.name);k=d;g&&(k=k.remove(new E(b.name,g)));return k.Na(b,b.S)});return new fe(d,a.cc)}
function ie(a,b,c){var d=na(a.yd,function(a){if(a===Pd)return a;var d=c.get(b.name);return d?a.remove(new E(b.name,d)):a});return new fe(d,a.cc)}var je=new fe({".priority":Pd},{".priority":M});function tc(a,b){this.C=a;J(n(this.C)&&null!==this.C,"LeafNode shouldn't be created with null/undefined value.");this.ba=b||C;ke(this.ba);this.Bb=null}h=tc.prototype;h.N=function(){return!0};h.A=function(){return this.ba};h.da=function(a){return new tc(this.C,a)};h.M=function(a){return".priority"===a?this.ba:C};h.oa=function(a){return a.e()?this:".priority"===O(a)?this.ba:C};h.Ha=function(){return!1};h.qf=function(){return null};
h.Q=function(a,b){return".priority"===a?this.da(b):b.e()&&".priority"!==a?this:C.Q(a,b).da(this.ba)};h.G=function(a,b){var c=O(a);if(null===c)return b;if(b.e()&&".priority"!==c)return this;J(".priority"!==c||1===uc(a),".priority must be the last token in a path");return this.Q(c,C.G(G(a),b))};h.e=function(){return!1};h.Db=function(){return 0};h.K=function(a){return a&&!this.A().e()?{".value":this.Ba(),".priority":this.A().K()}:this.Ba()};
h.hash=function(){if(null===this.Bb){var a="";this.ba.e()||(a+="priority:"+le(this.ba.K())+":");var b=typeof this.C,a=a+(b+":"),a="number"===b?a+Zc(this.C):a+this.C;this.Bb=Jc(a)}return this.Bb};h.Ba=function(){return this.C};h.Cc=function(a){if(a===C)return 1;if(a instanceof T)return-1;J(a.N(),"Unknown node type");var b=typeof a.C,c=typeof this.C,d=Na(me,b),e=Na(me,c);J(0<=d,"Unknown leaf type: "+b);J(0<=e,"Unknown leaf type: "+c);return d===e?"object"===c?0:this.C<a.C?-1:this.C===a.C?0:1:e-d};
var me=["object","boolean","number","string"];tc.prototype.mb=function(){return this};tc.prototype.Ic=function(){return!0};tc.prototype.Z=function(a){return a===this?!0:a.N()?this.C===a.C&&this.ba.Z(a.ba):!1};tc.prototype.toString=function(){return B(this.K(!0))};function T(a,b,c){this.m=a;(this.ba=b)&&ke(this.ba);a.e()&&J(!this.ba||this.ba.e(),"An empty node cannot have a priority");this.wb=c;this.Bb=null}h=T.prototype;h.N=function(){return!1};h.A=function(){return this.ba||C};h.da=function(a){return this.m.e()?this:new T(this.m,a,this.wb)};h.M=function(a){if(".priority"===a)return this.A();a=this.m.get(a);return null===a?C:a};h.oa=function(a){var b=O(a);return null===b?this:this.M(b).oa(G(a))};h.Ha=function(a){return null!==this.m.get(a)};
h.Q=function(a,b){J(b,"We should always be passing snapshot nodes");if(".priority"===a)return this.da(b);var c=new E(a,b),d,e;b.e()?(d=this.m.remove(a),c=ie(this.wb,c,this.m)):(d=this.m.Na(a,b),c=ge(this.wb,c,this.m));e=d.e()?C:this.ba;return new T(d,e,c)};h.G=function(a,b){var c=O(a);if(null===c)return b;J(".priority"!==O(a)||1===uc(a),".priority must be the last token in a path");var d=this.M(c).G(G(a),b);return this.Q(c,d)};h.e=function(){return this.m.e()};h.Db=function(){return this.m.count()};
var ne=/^(0|[1-9]\d*)$/;h=T.prototype;h.K=function(a){if(this.e())return null;var b={},c=0,d=0,e=!0;this.U(M,function(f,g){b[f]=g.K(a);c++;e&&ne.test(f)?d=Math.max(d,Number(f)):e=!1});if(!a&&e&&d<2*c){var f=[],g;for(g in b)f[g]=b[g];return f}a&&!this.A().e()&&(b[".priority"]=this.A().K());return b};h.hash=function(){if(null===this.Bb){var a="";this.A().e()||(a+="priority:"+le(this.A().K())+":");this.U(M,function(b,c){var d=c.hash();""!==d&&(a+=":"+b+":"+d)});this.Bb=""===a?"":Jc(a)}return this.Bb};
h.qf=function(a,b,c){return(c=oe(this,c))?(a=cc(c,new E(a,b)))?a.name:null:cc(this.m,a)};function wd(a,b){var c;c=(c=oe(a,b))?(c=c.Rc())&&c.name:a.m.Rc();return c?new E(c,a.m.get(c)):null}function xd(a,b){var c;c=(c=oe(a,b))?(c=c.ec())&&c.name:a.m.ec();return c?new E(c,a.m.get(c)):null}h.U=function(a,b){var c=oe(this,a);return c?c.ha(function(a){return b(a.name,a.S)}):this.m.ha(b)};h.Wb=function(a){return this.Xb(a.Sc(),a)};
h.Xb=function(a,b){var c=oe(this,b);if(c)return c.Xb(a,function(a){return a});for(var c=this.m.Xb(a.name,Qb),d=ec(c);null!=d&&0>b.compare(d,a);)H(c),d=ec(c);return c};h.rf=function(a){return this.Zb(a.Pc(),a)};h.Zb=function(a,b){var c=oe(this,b);if(c)return c.Zb(a,function(a){return a});for(var c=this.m.Zb(a.name,Qb),d=ec(c);null!=d&&0<b.compare(d,a);)H(c),d=ec(c);return c};h.Cc=function(a){return this.e()?a.e()?0:-1:a.N()||a.e()?1:a===Sd?-1:0};
h.mb=function(a){if(a===Vd||ta(this.wb.cc,a.toString()))return this;var b=this.wb,c=this.m;J(a!==Vd,"KeyIndex always exists and isn't meant to be added to the IndexMap.");for(var d=[],e=!1,c=c.Wb(Qb),f=H(c);f;)e=e||a.Hc(f.S),d.push(f),f=H(c);d=e?he(d,ud(a)):Pd;e=a.toString();c=xa(b.cc);c[e]=a;a=xa(b.yd);a[e]=d;return new T(this.m,this.ba,new fe(a,c))};h.Ic=function(a){return a===Vd||ta(this.wb.cc,a.toString())};
h.Z=function(a){if(a===this)return!0;if(a.N())return!1;if(this.A().Z(a.A())&&this.m.count()===a.m.count()){var b=this.Wb(M);a=a.Wb(M);for(var c=H(b),d=H(a);c&&d;){if(c.name!==d.name||!c.S.Z(d.S))return!1;c=H(b);d=H(a)}return null===c&&null===d}return!1};function oe(a,b){return b===Vd?null:a.wb.get(b.toString())}h.toString=function(){return B(this.K(!0))};function L(a,b){if(null===a)return C;var c=null;"object"===typeof a&&".priority"in a?c=a[".priority"]:"undefined"!==typeof b&&(c=b);J(null===c||"string"===typeof c||"number"===typeof c||"object"===typeof c&&".sv"in c,"Invalid priority type found: "+typeof c);"object"===typeof a&&".value"in a&&null!==a[".value"]&&(a=a[".value"]);if("object"!==typeof a||".sv"in a)return new tc(a,L(c));if(a instanceof Array){var d=C,e=a;r(e,function(a,b){if(u(e,b)&&"."!==b.substring(0,1)){var c=L(a);if(c.N()||!c.e())d=
d.Q(b,c)}});return d.da(L(c))}var f=[],g=!1,k=a;hb(k,function(a){if("string"!==typeof a||"."!==a.substring(0,1)){var b=L(k[a]);b.e()||(g=g||!b.A().e(),f.push(new E(a,b)))}});if(0==f.length)return C;var l=he(f,Rb,function(a){return a.name},Tb);if(g){var m=he(f,ud(M));return new T(l,L(c),new fe({".priority":m},{".priority":M}))}return new T(l,L(c),je)}var pe=Math.log(2);
function qe(a){this.count=parseInt(Math.log(a+1)/pe,10);this.hf=this.count-1;this.bg=a+1&parseInt(Array(this.count+1).join("1"),2)}function re(a){var b=!(a.bg&1<<a.hf);a.hf--;return b}
function he(a,b,c,d){function e(b,d){var f=d-b;if(0==f)return null;if(1==f){var m=a[b],v=c?c(m):m;return new fc(v,m.S,!1,null,null)}var m=parseInt(f/2,10)+b,f=e(b,m),y=e(m+1,d),m=a[m],v=c?c(m):m;return new fc(v,m.S,!1,f,y)}a.sort(b);var f=function(b){function d(b,g){var k=v-b,y=v;v-=b;var y=e(k+1,y),k=a[k],I=c?c(k):k,y=new fc(I,k.S,g,null,y);f?f.left=y:m=y;f=y}for(var f=null,m=null,v=a.length,y=0;y<b.count;++y){var I=re(b),vd=Math.pow(2,b.count-(y+1));I?d(vd,!1):(d(vd,!1),d(vd,!0))}return m}(new qe(a.length));
return null!==f?new ac(d||b,f):new ac(d||b)}function le(a){return"number"===typeof a?"number:"+Zc(a):"string:"+a}function ke(a){if(a.N()){var b=a.K();J("string"===typeof b||"number"===typeof b||"object"===typeof b&&u(b,".sv"),"Priority must be a string or number.")}else J(a===Sd||a.e(),"priority of unexpected type.");J(a===Sd||a.A().e(),"Priority nodes can't have a priority of their own.")}var C=new T(new ac(Tb),null,je);function se(){T.call(this,new ac(Tb),C,je)}ma(se,T);h=se.prototype;
h.Cc=function(a){return a===this?0:1};h.Z=function(a){return a===this};h.A=function(){return this};h.M=function(){return C};h.e=function(){return!1};var Sd=new se,Qd=new E("[MIN_NAME]",C),Xd=new E("[MAX_NAME]",Sd);function Id(a,b){this.D=a;this.Ud=b}function Fd(a,b,c,d){return new Id(new sb(b,c,d),a.Ud)}function Jd(a){return a.D.$?a.D.j():null}Id.prototype.u=function(){return this.Ud};function tb(a){return a.Ud.$?a.Ud.j():null};function te(a,b){this.V=a;var c=a.o,d=new ld(c.g),c=de(c)?new ld(c.g):c.ia?new rd(c):new md(c);this.Gf=new zd(c);var e=b.u(),f=b.D,g=d.ta(C,e.j(),null),k=c.ta(C,f.j(),null);this.Ka=new Id(new sb(k,f.$,c.Ga()),new sb(g,e.$,d.Ga()));this.Za=[];this.ig=new dd(a)}function ue(a){return a.V}h=te.prototype;h.u=function(){return this.Ka.u().j()};h.hb=function(a){var b=tb(this.Ka);return b&&(de(this.V.o)||!a.e()&&!b.M(O(a)).e())?b.oa(a):null};h.e=function(){return 0===this.Za.length};h.Ob=function(a){this.Za.push(a)};
h.kb=function(a,b){var c=[];if(b){J(null==a,"A cancel should cancel all event registrations.");var d=this.V.path;Oa(this.Za,function(a){(a=a.ff(b,d))&&c.push(a)})}if(a){for(var e=[],f=0;f<this.Za.length;++f){var g=this.Za[f];if(!g.matches(a))e.push(g);else if(a.sf()){e=e.concat(this.Za.slice(f+1));break}}this.Za=e}else this.Za=[];return c};
h.bb=function(a,b,c){a.type===Cd&&null!==a.source.Ib&&(J(tb(this.Ka),"We should always have a full cache before handling merges"),J(Jd(this.Ka),"Missing event cache, even though we have a server cache"));var d=this.Ka;a=this.Gf.bb(d,a,b,c);b=this.Gf;c=a.he;J(c.D.j().Ic(b.I.g),"Event snap not indexed");J(c.u().j().Ic(b.I.g),"Server snap not indexed");J(Hb(a.he.u())||!Hb(d.u()),"Once a server snap is complete, it should never go back");this.Ka=a.he;return ve(this,a.cg,a.he.D.j(),null)};
function we(a,b){var c=a.Ka.D,d=[];c.j().N()||c.j().U(M,function(a,b){d.push(new D("child_added",b,a))});c.$&&d.push(Db(c.j()));return ve(a,d,c.j(),b)}function ve(a,b,c,d){return ed(a.ig,b,c,d?[d]:a.Za)};function xe(a,b,c){this.type=Cd;this.source=a;this.path=b;this.children=c}xe.prototype.Wc=function(a){if(this.path.e())return a=this.children.subtree(new K(a)),a.e()?null:a.value?new Ub(this.source,F,a.value):new xe(this.source,F,a);J(O(this.path)===a,"Can't get a merge for a child not on the path of the operation");return new xe(this.source,G(this.path),this.children)};xe.prototype.toString=function(){return"Operation("+this.path+": "+this.source.toString()+" merge: "+this.children.toString()+")"};var Vb=0,Cd=1,Xb=2,$b=3;function ye(a,b,c,d){this.ve=a;this.of=b;this.Ib=c;this.af=d;J(!d||b,"Tagged queries must be from server.")}var Yb=new ye(!0,!1,null,!1),ze=new ye(!1,!0,null,!1);ye.prototype.toString=function(){return this.ve?"user":this.af?"server(queryID="+this.Ib+")":"server"};function Ae(a,b){this.f=Oc("p:rest:");this.H=a;this.Gb=b;this.Fa=null;this.aa={}}function Be(a,b){if(n(b))return"tag$"+b;var c=a.o;J(de(c)&&c.g==M,"should have a tag if it's not a default query.");return a.path.toString()}h=Ae.prototype;
h.xf=function(a,b,c,d){var e=a.path.toString();this.f("Listen called for "+e+" "+a.wa());var f=Be(a,c),g={};this.aa[f]=g;a=ee(a.o);var k=this;Ce(this,e+".json",a,function(a,b){var v=b;404===a&&(a=v=null);null===a&&k.Gb(e,v,!1,c);w(k.aa,f)===g&&d(a?401==a?"permission_denied":"rest_error:"+a:"ok",null)})};h.Of=function(a,b){var c=Be(a,b);delete this.aa[c]};h.P=function(a,b){this.Fa=a;var c=ad(a),d=c.data,c=c.Ac&&c.Ac.exp;b&&b("ok",{auth:d,expires:c})};h.ee=function(a){this.Fa=null;a("ok",null)};
h.Le=function(){};h.Bf=function(){};h.Gd=function(){};h.put=function(){};h.yf=function(){};h.Te=function(){};
function Ce(a,b,c,d){c=c||{};c.format="export";a.Fa&&(c.auth=a.Fa);var e=(a.H.lb?"https://":"http://")+a.H.host+b+"?"+jb(c);a.f("Sending REST request for "+e);var f=new XMLHttpRequest;f.onreadystatechange=function(){if(d&&4===f.readyState){a.f("REST Response for "+e+" received. status:",f.status,"response:",f.responseText);var b=null;if(200<=f.status&&300>f.status){try{b=mb(f.responseText)}catch(c){Q("Failed to parse JSON response for "+e+": "+f.responseText)}d(null,b)}else 401!==f.status&&404!==
f.status&&Q("Got unsuccessful REST response for "+e+" Status: "+f.status),d(f.status);d=null}};f.open("GET",e,!0);f.send()};function De(a,b){this.value=a;this.children=b||Ee}var Ee=new ac(function(a,b){return a===b?0:a<b?-1:1});function Fe(a){var b=Nd;r(a,function(a,d){b=b.set(new K(d),a)});return b}h=De.prototype;h.e=function(){return null===this.value&&this.children.e()};function Ge(a,b,c){if(null!=a.value&&c(a.value))return{path:F,value:a.value};if(b.e())return null;var d=O(b);a=a.children.get(d);return null!==a?(b=Ge(a,G(b),c),null!=b?{path:(new K(d)).w(b.path),value:b.value}:null):null}
function He(a,b){return Ge(a,b,function(){return!0})}h.subtree=function(a){if(a.e())return this;var b=this.children.get(O(a));return null!==b?b.subtree(G(a)):Nd};h.set=function(a,b){if(a.e())return new De(b,this.children);var c=O(a),d=(this.children.get(c)||Nd).set(G(a),b),c=this.children.Na(c,d);return new De(this.value,c)};
h.remove=function(a){if(a.e())return this.children.e()?Nd:new De(null,this.children);var b=O(a),c=this.children.get(b);return c?(a=c.remove(G(a)),b=a.e()?this.children.remove(b):this.children.Na(b,a),null===this.value&&b.e()?Nd:new De(this.value,b)):this};h.get=function(a){if(a.e())return this.value;var b=this.children.get(O(a));return b?b.get(G(a)):null};
function Md(a,b,c){if(b.e())return c;var d=O(b);b=Md(a.children.get(d)||Nd,G(b),c);d=b.e()?a.children.remove(d):a.children.Na(d,b);return new De(a.value,d)}function Ie(a,b){return Je(a,F,b)}function Je(a,b,c){var d={};a.children.ha(function(a,f){d[a]=Je(f,b.w(a),c)});return c(b,a.value,d)}function Ke(a,b,c){return Le(a,b,F,c)}function Le(a,b,c,d){var e=a.value?d(c,a.value):!1;if(e)return e;if(b.e())return null;e=O(b);return(a=a.children.get(e))?Le(a,G(b),c.w(e),d):null}
function Me(a,b,c){var d=F;if(!b.e()){var e=!0;a.value&&(e=c(d,a.value));!0===e&&(e=O(b),(a=a.children.get(e))&&Ne(a,G(b),d.w(e),c))}}function Ne(a,b,c,d){if(b.e())return a;a.value&&d(c,a.value);var e=O(b);return(a=a.children.get(e))?Ne(a,G(b),c.w(e),d):Nd}function Kd(a,b){Oe(a,F,b)}function Oe(a,b,c){a.children.ha(function(a,e){Oe(e,b.w(a),c)});a.value&&c(b,a.value)}function Pe(a,b){a.children.ha(function(a,d){d.value&&b(a,d.value)})}var Nd=new De(null);
De.prototype.toString=function(){var a={};Kd(this,function(b,c){a[b.toString()]=c.toString()});return B(a)};function Qe(a){this.W=a}var Re=new Qe(new De(null));function Se(a,b,c){if(b.e())return new Qe(new De(c));var d=He(a.W,b);if(null!=d){var e=d.path,d=d.value;b=N(e,b);d=d.G(b,c);return new Qe(a.W.set(e,d))}a=Md(a.W,b,new De(c));return new Qe(a)}function Te(a,b,c){var d=a;hb(c,function(a,c){d=Se(d,b.w(a),c)});return d}Qe.prototype.Od=function(a){if(a.e())return Re;a=Md(this.W,a,Nd);return new Qe(a)};function Ue(a,b){var c=He(a.W,b);return null!=c?a.W.get(c.path).oa(N(c.path,b)):null}
function Ve(a){var b=[],c=a.W.value;null!=c?c.N()||c.U(M,function(a,c){b.push(new E(a,c))}):a.W.children.ha(function(a,c){null!=c.value&&b.push(new E(a,c.value))});return b}function We(a,b){if(b.e())return a;var c=Ue(a,b);return null!=c?new Qe(new De(c)):new Qe(a.W.subtree(b))}Qe.prototype.e=function(){return this.W.e()};Qe.prototype.apply=function(a){return Xe(F,this.W,a)};
function Xe(a,b,c){if(null!=b.value)return c.G(a,b.value);var d=null;b.children.ha(function(b,f){".priority"===b?(J(null!==f.value,"Priority writes must always be leaf nodes"),d=f.value):c=Xe(a.w(b),f,c)});c.oa(a).e()||null===d||(c=c.G(a.w(".priority"),d));return c};function Ye(){this.T=Re;this.za=[];this.Lc=-1}h=Ye.prototype;
h.Od=function(a){var b=Ua(this.za,function(b){return b.ie===a});J(0<=b,"removeWrite called with nonexistent writeId.");var c=this.za[b];this.za.splice(b,1);for(var d=c.visible,e=!1,f=this.za.length-1;d&&0<=f;){var g=this.za[f];g.visible&&(f>=b&&Ze(g,c.path)?d=!1:c.path.contains(g.path)&&(e=!0));f--}if(d){if(e)this.T=$e(this.za,af,F),this.Lc=0<this.za.length?this.za[this.za.length-1].ie:-1;else if(c.Ia)this.T=this.T.Od(c.path);else{var k=this;r(c.children,function(a,b){k.T=k.T.Od(c.path.w(b))})}return c.path}return null};
h.ua=function(a,b,c,d){if(c||d){var e=We(this.T,a);return!d&&e.e()?b:d||null!=b||null!=Ue(e,F)?(e=$e(this.za,function(b){return(b.visible||d)&&(!c||!(0<=Na(c,b.ie)))&&(b.path.contains(a)||a.contains(b.path))},a),b=b||C,e.apply(b)):null}e=Ue(this.T,a);if(null!=e)return e;e=We(this.T,a);return e.e()?b:null!=b||null!=Ue(e,F)?(b=b||C,e.apply(b)):null};
h.xc=function(a,b){var c=C,d=Ue(this.T,a);if(d)d.N()||d.U(M,function(a,b){c=c.Q(a,b)});else if(b){var e=We(this.T,a);b.U(M,function(a,b){var d=We(e,new K(a)).apply(b);c=c.Q(a,d)});Oa(Ve(e),function(a){c=c.Q(a.name,a.S)})}else e=We(this.T,a),Oa(Ve(e),function(a){c=c.Q(a.name,a.S)});return c};h.hd=function(a,b,c,d){J(c||d,"Either existingEventSnap or existingServerSnap must exist");a=a.w(b);if(null!=Ue(this.T,a))return null;a=We(this.T,a);return a.e()?d.oa(b):a.apply(d.oa(b))};
h.Xa=function(a,b,c){a=a.w(b);var d=Ue(this.T,a);return null!=d?d:rb(c,b)?We(this.T,a).apply(c.j().M(b)):null};h.sc=function(a){return Ue(this.T,a)};h.me=function(a,b,c,d,e,f){var g;a=We(this.T,a);g=Ue(a,F);if(null==g)if(null!=b)g=a.apply(b);else return[];g=g.mb(f);if(g.e()||g.N())return[];b=[];a=ud(f);e=e?g.Zb(c,f):g.Xb(c,f);for(f=H(e);f&&b.length<d;)0!==a(f,c)&&b.push(f),f=H(e);return b};
function Ze(a,b){return a.Ia?a.path.contains(b):!!ua(a.children,function(c,d){return a.path.w(d).contains(b)})}function af(a){return a.visible}
function $e(a,b,c){for(var d=Re,e=0;e<a.length;++e){var f=a[e];if(b(f)){var g=f.path;if(f.Ia)c.contains(g)?(g=N(c,g),d=Se(d,g,f.Ia)):g.contains(c)&&(g=N(g,c),d=Se(d,F,f.Ia.oa(g)));else if(f.children)if(c.contains(g))g=N(c,g),d=Te(d,g,f.children);else{if(g.contains(c))if(g=N(g,c),g.e())d=Te(d,F,f.children);else if(f=w(f.children,O(g)))f=f.oa(G(g)),d=Se(d,F,f)}else throw Hc("WriteRecord should have .snap or .children");}}return d}function bf(a,b){this.Mb=a;this.W=b}h=bf.prototype;
h.ua=function(a,b,c){return this.W.ua(this.Mb,a,b,c)};h.xc=function(a){return this.W.xc(this.Mb,a)};h.hd=function(a,b,c){return this.W.hd(this.Mb,a,b,c)};h.sc=function(a){return this.W.sc(this.Mb.w(a))};h.me=function(a,b,c,d,e){return this.W.me(this.Mb,a,b,c,d,e)};h.Xa=function(a,b){return this.W.Xa(this.Mb,a,b)};h.w=function(a){return new bf(this.Mb.w(a),this.W)};function cf(){this.ya={}}h=cf.prototype;h.e=function(){return wa(this.ya)};h.bb=function(a,b,c){var d=a.source.Ib;if(null!==d)return d=w(this.ya,d),J(null!=d,"SyncTree gave us an op for an invalid query."),d.bb(a,b,c);var e=[];r(this.ya,function(d){e=e.concat(d.bb(a,b,c))});return e};h.Ob=function(a,b,c,d,e){var f=a.wa(),g=w(this.ya,f);if(!g){var g=c.ua(e?d:null),k=!1;g?k=!0:(g=d instanceof T?c.xc(d):C,k=!1);g=new te(a,new Id(new sb(g,k,!1),new sb(d,e,!1)));this.ya[f]=g}g.Ob(b);return we(g,b)};
h.kb=function(a,b,c){var d=a.wa(),e=[],f=[],g=null!=df(this);if("default"===d){var k=this;r(this.ya,function(a,d){f=f.concat(a.kb(b,c));a.e()&&(delete k.ya[d],de(a.V.o)||e.push(a.V))})}else{var l=w(this.ya,d);l&&(f=f.concat(l.kb(b,c)),l.e()&&(delete this.ya[d],de(l.V.o)||e.push(l.V)))}g&&null==df(this)&&e.push(new U(a.k,a.path));return{Hg:e,jg:f}};function ef(a){return Pa(ra(a.ya),function(a){return!de(a.V.o)})}h.hb=function(a){var b=null;r(this.ya,function(c){b=b||c.hb(a)});return b};
function ff(a,b){if(de(b.o))return df(a);var c=b.wa();return w(a.ya,c)}function df(a){return va(a.ya,function(a){return de(a.V.o)})||null};function gf(a){this.sa=Nd;this.Hb=new Ye;this.$e={};this.kc={};this.Mc=a}function hf(a,b,c,d,e){var f=a.Hb,g=e;J(d>f.Lc,"Stacking an older write on top of newer ones");n(g)||(g=!0);f.za.push({path:b,Ia:c,ie:d,visible:g});g&&(f.T=Se(f.T,b,c));f.Lc=d;return e?jf(a,new Ub(Yb,b,c)):[]}function kf(a,b,c,d){var e=a.Hb;J(d>e.Lc,"Stacking an older merge on top of newer ones");e.za.push({path:b,children:c,ie:d,visible:!0});e.T=Te(e.T,b,c);e.Lc=d;c=Fe(c);return jf(a,new xe(Yb,b,c))}
function lf(a,b,c){c=c||!1;b=a.Hb.Od(b);return null==b?[]:jf(a,new Wb(b,c))}function mf(a,b,c){c=Fe(c);return jf(a,new xe(ze,b,c))}function nf(a,b,c,d){d=of(a,d);if(null!=d){var e=pf(d);d=e.path;e=e.Ib;b=N(d,b);c=new Ub(new ye(!1,!0,e,!0),b,c);return qf(a,d,c)}return[]}function rf(a,b,c,d){if(d=of(a,d)){var e=pf(d);d=e.path;e=e.Ib;b=N(d,b);c=Fe(c);c=new xe(new ye(!1,!0,e,!0),b,c);return qf(a,d,c)}return[]}
gf.prototype.Ob=function(a,b){var c=a.path,d=null,e=!1;Me(this.sa,c,function(a,b){var f=N(a,c);d=b.hb(f);e=e||null!=df(b);return!d});var f=this.sa.get(c);f?(e=e||null!=df(f),d=d||f.hb(F)):(f=new cf,this.sa=this.sa.set(c,f));var g;null!=d?g=!0:(g=!1,d=C,Pe(this.sa.subtree(c),function(a,b){var c=b.hb(F);c&&(d=d.Q(a,c))}));var k=null!=ff(f,a);if(!k&&!de(a.o)){var l=sf(a);J(!(l in this.kc),"View does not exist, but we have a tag");var m=tf++;this.kc[l]=m;this.$e["_"+m]=l}g=f.Ob(a,b,new bf(c,this.Hb),
d,g);k||e||(f=ff(f,a),g=g.concat(uf(this,a,f)));return g};
gf.prototype.kb=function(a,b,c){var d=a.path,e=this.sa.get(d),f=[];if(e&&("default"===a.wa()||null!=ff(e,a))){f=e.kb(a,b,c);e.e()&&(this.sa=this.sa.remove(d));e=f.Hg;f=f.jg;b=-1!==Ua(e,function(a){return de(a.o)});var g=Ke(this.sa,d,function(a,b){return null!=df(b)});if(b&&!g&&(d=this.sa.subtree(d),!d.e()))for(var d=vf(d),k=0;k<d.length;++k){var l=d[k],m=l.V,l=wf(this,l);this.Mc.Xe(m,xf(this,m),l.ud,l.J)}if(!g&&0<e.length&&!c)if(b)this.Mc.Zd(a,null);else{var v=this;Oa(e,function(a){a.wa();var b=v.kc[sf(a)];
v.Mc.Zd(a,b)})}yf(this,e)}return f};gf.prototype.ua=function(a,b){var c=this.Hb,d=Ke(this.sa,a,function(b,c){var d=N(b,a);if(d=c.hb(d))return d});return c.ua(a,d,b,!0)};function vf(a){return Ie(a,function(a,c,d){if(c&&null!=df(c))return[df(c)];var e=[];c&&(e=ef(c));r(d,function(a){e=e.concat(a)});return e})}function yf(a,b){for(var c=0;c<b.length;++c){var d=b[c];if(!de(d.o)){var d=sf(d),e=a.kc[d];delete a.kc[d];delete a.$e["_"+e]}}}
function uf(a,b,c){var d=b.path,e=xf(a,b);c=wf(a,c);b=a.Mc.Xe(b,e,c.ud,c.J);d=a.sa.subtree(d);if(e)J(null==df(d.value),"If we're adding a query, it shouldn't be shadowed");else for(e=Ie(d,function(a,b,c){if(!a.e()&&b&&null!=df(b))return[ue(df(b))];var d=[];b&&(d=d.concat(Qa(ef(b),function(a){return a.V})));r(c,function(a){d=d.concat(a)});return d}),d=0;d<e.length;++d)c=e[d],a.Mc.Zd(c,xf(a,c));return b}
function wf(a,b){var c=b.V,d=xf(a,c);return{ud:function(){return(b.u()||C).hash()},J:function(b){if("ok"===b){if(d){var f=c.path;if(b=of(a,d)){var g=pf(b);b=g.path;g=g.Ib;f=N(b,f);f=new Zb(new ye(!1,!0,g,!0),f);b=qf(a,b,f)}else b=[]}else b=jf(a,new Zb(ze,c.path));return b}f="Unknown Error";"too_big"===b?f="The data requested exceeds the maximum size that can be accessed with a single request.":"permission_denied"==b?f="Client doesn't have permission to access the desired data.":"unavailable"==b&&
(f="The service is unavailable");f=Error(b+": "+f);f.code=b.toUpperCase();return a.kb(c,null,f)}}}function sf(a){return a.path.toString()+"$"+a.wa()}function pf(a){var b=a.indexOf("$");J(-1!==b&&b<a.length-1,"Bad queryKey.");return{Ib:a.substr(b+1),path:new K(a.substr(0,b))}}function of(a,b){var c=a.$e,d="_"+b;return d in c?c[d]:void 0}function xf(a,b){var c=sf(b);return w(a.kc,c)}var tf=1;
function qf(a,b,c){var d=a.sa.get(b);J(d,"Missing sync point for query tag that we're tracking");return d.bb(c,new bf(b,a.Hb),null)}function jf(a,b){return zf(a,b,a.sa,null,new bf(F,a.Hb))}function zf(a,b,c,d,e){if(b.path.e())return Af(a,b,c,d,e);var f=c.get(F);null==d&&null!=f&&(d=f.hb(F));var g=[],k=O(b.path),l=b.Wc(k);if((c=c.children.get(k))&&l)var m=d?d.M(k):null,k=e.w(k),g=g.concat(zf(a,l,c,m,k));f&&(g=g.concat(f.bb(b,e,d)));return g}
function Af(a,b,c,d,e){var f=c.get(F);null==d&&null!=f&&(d=f.hb(F));var g=[];c.children.ha(function(c,f){var m=d?d.M(c):null,v=e.w(c),y=b.Wc(c);y&&(g=g.concat(Af(a,y,f,m,v)))});f&&(g=g.concat(f.bb(b,e,d)));return g};function Bf(){this.children={};this.kd=0;this.value=null}function Cf(a,b,c){this.Dd=a?a:"";this.Yc=b?b:null;this.B=c?c:new Bf}function Df(a,b){for(var c=b instanceof K?b:new K(b),d=a,e;null!==(e=O(c));)d=new Cf(e,d,w(d.B.children,e)||new Bf),c=G(c);return d}h=Cf.prototype;h.Ba=function(){return this.B.value};function Ef(a,b){J("undefined"!==typeof b,"Cannot set value to undefined");a.B.value=b;Ff(a)}h.clear=function(){this.B.value=null;this.B.children={};this.B.kd=0;Ff(this)};
h.td=function(){return 0<this.B.kd};h.e=function(){return null===this.Ba()&&!this.td()};h.U=function(a){var b=this;r(this.B.children,function(c,d){a(new Cf(d,b,c))})};function Gf(a,b,c,d){c&&!d&&b(a);a.U(function(a){Gf(a,b,!0,d)});c&&d&&b(a)}function Hf(a,b){for(var c=a.parent();null!==c&&!b(c);)c=c.parent()}h.path=function(){return new K(null===this.Yc?this.Dd:this.Yc.path()+"/"+this.Dd)};h.name=function(){return this.Dd};h.parent=function(){return this.Yc};
function Ff(a){if(null!==a.Yc){var b=a.Yc,c=a.Dd,d=a.e(),e=u(b.B.children,c);d&&e?(delete b.B.children[c],b.B.kd--,Ff(b)):d||e||(b.B.children[c]=a.B,b.B.kd++,Ff(b))}};function If(a){J(ea(a)&&0<a.length,"Requires a non-empty array");this.Uf=a;this.Nc={}}If.prototype.de=function(a,b){for(var c=this.Nc[a]||[],d=0;d<c.length;d++)c[d].yc.apply(c[d].Ma,Array.prototype.slice.call(arguments,1))};If.prototype.Eb=function(a,b,c){Jf(this,a);this.Nc[a]=this.Nc[a]||[];this.Nc[a].push({yc:b,Ma:c});(a=this.ze(a))&&b.apply(c,a)};If.prototype.gc=function(a,b,c){Jf(this,a);a=this.Nc[a]||[];for(var d=0;d<a.length;d++)if(a[d].yc===b&&(!c||c===a[d].Ma)){a.splice(d,1);break}};
function Jf(a,b){J(Ta(a.Uf,function(a){return a===b}),"Unknown event: "+b)};var Kf=function(){var a=0,b=[];return function(c){var d=c===a;a=c;for(var e=Array(8),f=7;0<=f;f--)e[f]="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".charAt(c%64),c=Math.floor(c/64);J(0===c,"Cannot push at time == 0");c=e.join("");if(d){for(f=11;0<=f&&63===b[f];f--)b[f]=0;b[f]++}else for(f=0;12>f;f++)b[f]=Math.floor(64*Math.random());for(f=0;12>f;f++)c+="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".charAt(b[f]);J(20===c.length,"nextPushId: Length should be 20.");
return c}}();function Lf(){If.call(this,["online"]);this.ic=!0;if("undefined"!==typeof window&&"undefined"!==typeof window.addEventListener){var a=this;window.addEventListener("online",function(){a.ic||(a.ic=!0,a.de("online",!0))},!1);window.addEventListener("offline",function(){a.ic&&(a.ic=!1,a.de("online",!1))},!1)}}ma(Lf,If);Lf.prototype.ze=function(a){J("online"===a,"Unknown event type: "+a);return[this.ic]};ca(Lf);function Mf(){If.call(this,["visible"]);var a,b;"undefined"!==typeof document&&"undefined"!==typeof document.addEventListener&&("undefined"!==typeof document.hidden?(b="visibilitychange",a="hidden"):"undefined"!==typeof document.mozHidden?(b="mozvisibilitychange",a="mozHidden"):"undefined"!==typeof document.msHidden?(b="msvisibilitychange",a="msHidden"):"undefined"!==typeof document.webkitHidden&&(b="webkitvisibilitychange",a="webkitHidden"));this.uc=!0;if(b){var c=this;document.addEventListener(b,
function(){var b=!document[a];b!==c.uc&&(c.uc=b,c.de("visible",b))},!1)}}ma(Mf,If);Mf.prototype.ze=function(a){J("visible"===a,"Unknown event type: "+a);return[this.uc]};ca(Mf);var Nf=/[\[\].#$\/\u0000-\u001F\u007F]/,Of=/[\[\].#$\u0000-\u001F\u007F]/,Pf=/^[a-zA-Z][a-zA-Z._\-+]+$/;function Qf(a){return p(a)&&0!==a.length&&!Nf.test(a)}function Rf(a){return null===a||p(a)||ga(a)&&!Sc(a)||ia(a)&&u(a,".sv")}function Sf(a,b,c,d){d&&!n(b)||Tf(z(a,1,d),b,c)}
function Tf(a,b,c){c instanceof K&&(c=new wc(c,a));if(!n(b))throw Error(a+"contains undefined "+zc(c));if(ha(b))throw Error(a+"contains a function "+zc(c)+" with contents: "+b.toString());if(Sc(b))throw Error(a+"contains "+b.toString()+" "+zc(c));if(p(b)&&b.length>10485760/3&&10485760<xc(b))throw Error(a+"contains a string greater than 10485760 utf8 bytes "+zc(c)+" ('"+b.substring(0,50)+"...')");if(ia(b)){var d=!1,e=!1;hb(b,function(b,g){if(".value"===b)d=!0;else if(".priority"!==b&&".sv"!==b&&(e=
!0,!Qf(b)))throw Error(a+" contains an invalid key ("+b+") "+zc(c)+'. Keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]"');c.push(b);Tf(a,g,c);c.pop()});if(d&&e)throw Error(a+' contains ".value" child '+zc(c)+" in addition to actual children.");}}
function Uf(a,b,c){if(!ia(b)||ea(b))throw Error(z(a,1,!1)+" must be an Object containing the children to replace.");if(u(b,".value"))throw Error(z(a,1,!1)+' must not contain ".value". To overwrite with a leaf value, just use .set() instead.');Sf(a,b,c,!1)}
function Vf(a,b,c){if(Sc(c))throw Error(z(a,b,!1)+"is "+c.toString()+", but must be a valid Firebase priority (a string, finite number, server value, or null).");if(!Rf(c))throw Error(z(a,b,!1)+"must be a valid Firebase priority (a string, finite number, server value, or null).");}
function Wf(a,b,c){if(!c||n(b))switch(b){case "value":case "child_added":case "child_removed":case "child_changed":case "child_moved":break;default:throw Error(z(a,1,c)+'must be a valid event type: "value", "child_added", "child_removed", "child_changed", or "child_moved".');}}function Xf(a,b,c,d){if((!d||n(c))&&!Qf(c))throw Error(z(a,b,d)+'was an invalid key: "'+c+'". Firebase keys must be non-empty strings and can\'t contain ".", "#", "$", "/", "[", or "]").');}
function Yf(a,b){if(!p(b)||0===b.length||Of.test(b))throw Error(z(a,1,!1)+'was an invalid path: "'+b+'". Paths must be non-empty strings and can\'t contain ".", "#", "$", "[", or "]"');}function Zf(a,b){if(".info"===O(b))throw Error(a+" failed: Can't modify data under /.info/");}function $f(a,b){if(!p(b))throw Error(z(a,1,!1)+"must be a valid credential (a string).");}function ag(a,b,c){if(!p(c))throw Error(z(a,b,!1)+"must be a valid string.");}
function bg(a,b){ag(a,1,b);if(!Pf.test(b))throw Error(z(a,1,!1)+"'"+b+"' is not a valid authentication provider.");}function cg(a,b,c,d){if(!d||n(c))if(!ia(c)||null===c)throw Error(z(a,b,d)+"must be a valid object.");}function dg(a,b,c){if(!ia(b)||!u(b,c))throw Error(z(a,1,!1)+'must contain the key "'+c+'"');if(!p(w(b,c)))throw Error(z(a,1,!1)+'must contain the key "'+c+'" with type "string"');};function eg(){this.set={}}h=eg.prototype;h.add=function(a,b){this.set[a]=null!==b?b:!0};h.contains=function(a){return u(this.set,a)};h.get=function(a){return this.contains(a)?this.set[a]:void 0};h.remove=function(a){delete this.set[a]};h.clear=function(){this.set={}};h.e=function(){return wa(this.set)};h.count=function(){return pa(this.set)};function fg(a,b){r(a.set,function(a,d){b(d,a)})}h.keys=function(){var a=[];r(this.set,function(b,c){a.push(c)});return a};function qc(){this.m=this.C=null}qc.prototype.find=function(a){if(null!=this.C)return this.C.oa(a);if(a.e()||null==this.m)return null;var b=O(a);a=G(a);return this.m.contains(b)?this.m.get(b).find(a):null};qc.prototype.mc=function(a,b){if(a.e())this.C=b,this.m=null;else if(null!==this.C)this.C=this.C.G(a,b);else{null==this.m&&(this.m=new eg);var c=O(a);this.m.contains(c)||this.m.add(c,new qc);c=this.m.get(c);a=G(a);c.mc(a,b)}};
function gg(a,b){if(b.e())return a.C=null,a.m=null,!0;if(null!==a.C){if(a.C.N())return!1;var c=a.C;a.C=null;c.U(M,function(b,c){a.mc(new K(b),c)});return gg(a,b)}return null!==a.m?(c=O(b),b=G(b),a.m.contains(c)&&gg(a.m.get(c),b)&&a.m.remove(c),a.m.e()?(a.m=null,!0):!1):!0}function rc(a,b,c){null!==a.C?c(b,a.C):a.U(function(a,e){var f=new K(b.toString()+"/"+a);rc(e,f,c)})}qc.prototype.U=function(a){null!==this.m&&fg(this.m,function(b,c){a(b,c)})};var hg="auth.firebase.com";function ig(a,b,c){this.ld=a||{};this.ce=b||{};this.ab=c||{};this.ld.remember||(this.ld.remember="default")}var jg=["remember","redirectTo"];function kg(a){var b={},c={};hb(a||{},function(a,e){0<=Na(jg,a)?b[a]=e:c[a]=e});return new ig(b,{},c)};function lg(a,b){this.Pe=["session",a.Ld,a.Cb].join(":");this.$d=b}lg.prototype.set=function(a,b){if(!b)if(this.$d.length)b=this.$d[0];else throw Error("fb.login.SessionManager : No storage options available!");b.set(this.Pe,a)};lg.prototype.get=function(){var a=Qa(this.$d,q(this.ng,this)),a=Pa(a,function(a){return null!==a});Xa(a,function(a,c){return bd(c.token)-bd(a.token)});return 0<a.length?a.shift():null};lg.prototype.ng=function(a){try{var b=a.get(this.Pe);if(b&&b.token)return b}catch(c){}return null};
lg.prototype.clear=function(){var a=this;Oa(this.$d,function(b){b.remove(a.Pe)})};function mg(){return"undefined"!==typeof navigator&&"string"===typeof navigator.userAgent?navigator.userAgent:""}function ng(){return"undefined"!==typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(mg())}function og(){return"undefined"!==typeof location&&/^file:\//.test(location.href)}
function pg(a){var b=mg();if(""===b)return!1;if("Microsoft Internet Explorer"===navigator.appName){if((b=b.match(/MSIE ([0-9]{1,}[\.0-9]{0,})/))&&1<b.length)return parseFloat(b[1])>=a}else if(-1<b.indexOf("Trident")&&(b=b.match(/rv:([0-9]{2,2}[\.0-9]{0,})/))&&1<b.length)return parseFloat(b[1])>=a;return!1};function qg(){var a=window.opener.frames,b;for(b=a.length-1;0<=b;b--)try{if(a[b].location.protocol===window.location.protocol&&a[b].location.host===window.location.host&&"__winchan_relay_frame"===a[b].name)return a[b]}catch(c){}return null}function rg(a,b,c){a.attachEvent?a.attachEvent("on"+b,c):a.addEventListener&&a.addEventListener(b,c,!1)}function sg(a,b,c){a.detachEvent?a.detachEvent("on"+b,c):a.removeEventListener&&a.removeEventListener(b,c,!1)}
function tg(a){/^https?:\/\//.test(a)||(a=window.location.href);var b=/^(https?:\/\/[\-_a-zA-Z\.0-9:]+)/.exec(a);return b?b[1]:a}function ug(a){var b="";try{a=a.replace("#","");var c=kb(a);c&&u(c,"__firebase_request_key")&&(b=w(c,"__firebase_request_key"))}catch(d){}return b}function vg(){var a=Rc(hg);return a.scheme+"://"+a.host+"/v2"}function wg(a){return vg()+"/"+a+"/auth/channel"};function xg(a){var b=this;this.zc=a;this.ae="*";pg(8)?this.Qc=this.wd=qg():(this.Qc=window.opener,this.wd=window);if(!b.Qc)throw"Unable to find relay frame";rg(this.wd,"message",q(this.hc,this));rg(this.wd,"message",q(this.Af,this));try{yg(this,{a:"ready"})}catch(c){rg(this.Qc,"load",function(){yg(b,{a:"ready"})})}rg(window,"unload",q(this.yg,this))}function yg(a,b){b=B(b);pg(8)?a.Qc.doPost(b,a.ae):a.Qc.postMessage(b,a.ae)}
xg.prototype.hc=function(a){var b=this,c;try{c=mb(a.data)}catch(d){}c&&"request"===c.a&&(sg(window,"message",this.hc),this.ae=a.origin,this.zc&&setTimeout(function(){b.zc(b.ae,c.d,function(a,c){b.ag=!c;b.zc=void 0;yg(b,{a:"response",d:a,forceKeepWindowOpen:c})})},0))};xg.prototype.yg=function(){try{sg(this.wd,"message",this.Af)}catch(a){}this.zc&&(yg(this,{a:"error",d:"unknown closed window"}),this.zc=void 0);try{window.close()}catch(b){}};xg.prototype.Af=function(a){if(this.ag&&"die"===a.data)try{window.close()}catch(b){}};function zg(a){this.oc=Ga()+Ga()+Ga();this.Df=a}zg.prototype.open=function(a,b){P.set("redirect_request_id",this.oc);P.set("redirect_request_id",this.oc);b.requestId=this.oc;b.redirectTo=b.redirectTo||window.location.href;a+=(/\?/.test(a)?"":"?")+jb(b);window.location=a};zg.isAvailable=function(){return!og()&&!ng()};zg.prototype.Bc=function(){return"redirect"};var Ag={NETWORK_ERROR:"Unable to contact the Firebase server.",SERVER_ERROR:"An unknown server error occurred.",TRANSPORT_UNAVAILABLE:"There are no login transports available for the requested method.",REQUEST_INTERRUPTED:"The browser redirected the page before the login request could complete.",USER_CANCELLED:"The user cancelled authentication."};function Bg(a){var b=Error(w(Ag,a),a);b.code=a;return b};function Cg(a){var b;(b=!a.window_features)||(b=mg(),b=-1!==b.indexOf("Fennec/")||-1!==b.indexOf("Firefox/")&&-1!==b.indexOf("Android"));b&&(a.window_features=void 0);a.window_name||(a.window_name="_blank");this.options=a}
Cg.prototype.open=function(a,b,c){function d(a){g&&(document.body.removeChild(g),g=void 0);v&&(v=clearInterval(v));sg(window,"message",e);sg(window,"unload",d);if(m&&!a)try{m.close()}catch(b){k.postMessage("die",l)}m=k=void 0}function e(a){if(a.origin===l)try{var b=mb(a.data);"ready"===b.a?k.postMessage(y,l):"error"===b.a?(d(!1),c&&(c(b.d),c=null)):"response"===b.a&&(d(b.forceKeepWindowOpen),c&&(c(null,b.d),c=null))}catch(e){}}var f=pg(8),g,k;if(!this.options.relay_url)return c(Error("invalid arguments: origin of url and relay_url must match"));
var l=tg(a);if(l!==tg(this.options.relay_url))c&&setTimeout(function(){c(Error("invalid arguments: origin of url and relay_url must match"))},0);else{f&&(g=document.createElement("iframe"),g.setAttribute("src",this.options.relay_url),g.style.display="none",g.setAttribute("name","__winchan_relay_frame"),document.body.appendChild(g),k=g.contentWindow);a+=(/\?/.test(a)?"":"?")+jb(b);var m=window.open(a,this.options.window_name,this.options.window_features);k||(k=m);var v=setInterval(function(){m&&m.closed&&
(d(!1),c&&(c(Bg("USER_CANCELLED")),c=null))},500),y=B({a:"request",d:b});rg(window,"unload",d);rg(window,"message",e)}};
Cg.isAvailable=function(){var a;if(a="postMessage"in window&&!og())(a=ng()||"undefined"!==typeof navigator&&(!!mg().match(/Windows Phone/)||!!window.Windows&&/^ms-appx:/.test(location.href)))||(a=mg(),a="undefined"!==typeof navigator&&"undefined"!==typeof window&&!!(a.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i)||a.match(/CriOS/)||a.match(/Twitter for iPhone/)||a.match(/FBAN\/FBIOS/)||window.navigator.standalone)),a=!a;return a&&!mg().match(/PhantomJS/)};Cg.prototype.Bc=function(){return"popup"};function Dg(a){a.method||(a.method="GET");a.headers||(a.headers={});a.headers.content_type||(a.headers.content_type="application/json");a.headers.content_type=a.headers.content_type.toLowerCase();this.options=a}
Dg.prototype.open=function(a,b,c){function d(){c&&(c(Bg("REQUEST_INTERRUPTED")),c=null)}var e=new XMLHttpRequest,f=this.options.method.toUpperCase(),g;rg(window,"beforeunload",d);e.onreadystatechange=function(){if(c&&4===e.readyState){var a;if(200<=e.status&&300>e.status){try{a=mb(e.responseText)}catch(b){}c(null,a)}else 500<=e.status&&600>e.status?c(Bg("SERVER_ERROR")):c(Bg("NETWORK_ERROR"));c=null;sg(window,"beforeunload",d)}};if("GET"===f)a+=(/\?/.test(a)?"":"?")+jb(b),g=null;else{var k=this.options.headers.content_type;
"application/json"===k&&(g=B(b));"application/x-www-form-urlencoded"===k&&(g=jb(b))}e.open(f,a,!0);a={"X-Requested-With":"XMLHttpRequest",Accept:"application/json;text/plain"};za(a,this.options.headers);for(var l in a)e.setRequestHeader(l,a[l]);e.send(g)};Dg.isAvailable=function(){var a;if(a=!!window.XMLHttpRequest)a=mg(),a=!(a.match(/MSIE/)||a.match(/Trident/))||pg(10);return a};Dg.prototype.Bc=function(){return"json"};function Eg(a){this.oc=Ga()+Ga()+Ga();this.Df=a}
Eg.prototype.open=function(a,b,c){function d(){c&&(c(Bg("USER_CANCELLED")),c=null)}var e=this,f=Rc(hg),g;b.requestId=this.oc;b.redirectTo=f.scheme+"://"+f.host+"/blank/page.html";a+=/\?/.test(a)?"":"?";a+=jb(b);(g=window.open(a,"_blank","location=no"))&&ha(g.addEventListener)?(g.addEventListener("loadstart",function(a){var b;if(b=a&&a.url)a:{try{var m=document.createElement("a");m.href=a.url;b=m.host===f.host&&"/blank/page.html"===m.pathname;break a}catch(v){}b=!1}b&&(a=ug(a.url),g.removeEventListener("exit",
d),g.close(),a=new ig(null,null,{requestId:e.oc,requestKey:a}),e.Df.requestWithCredential("/auth/session",a,c),c=null)}),g.addEventListener("exit",d)):c(Bg("TRANSPORT_UNAVAILABLE"))};Eg.isAvailable=function(){return ng()};Eg.prototype.Bc=function(){return"redirect"};function Fg(a){a.callback_parameter||(a.callback_parameter="callback");this.options=a;window.__firebase_auth_jsonp=window.__firebase_auth_jsonp||{}}
Fg.prototype.open=function(a,b,c){function d(){c&&(c(Bg("REQUEST_INTERRUPTED")),c=null)}function e(){setTimeout(function(){window.__firebase_auth_jsonp[f]=void 0;wa(window.__firebase_auth_jsonp)&&(window.__firebase_auth_jsonp=void 0);try{var a=document.getElementById(f);a&&a.parentNode.removeChild(a)}catch(b){}},1);sg(window,"beforeunload",d)}var f="fn"+(new Date).getTime()+Math.floor(99999*Math.random());b[this.options.callback_parameter]="__firebase_auth_jsonp."+f;a+=(/\?/.test(a)?"":"?")+jb(b);
rg(window,"beforeunload",d);window.__firebase_auth_jsonp[f]=function(a){c&&(c(null,a),c=null);e()};Gg(f,a,c)};
function Gg(a,b,c){setTimeout(function(){try{var d=document.createElement("script");d.type="text/javascript";d.id=a;d.async=!0;d.src=b;d.onerror=function(){var b=document.getElementById(a);null!==b&&b.parentNode.removeChild(b);c&&c(Bg("NETWORK_ERROR"))};var e=document.getElementsByTagName("head");(e&&0!=e.length?e[0]:document.documentElement).appendChild(d)}catch(f){c&&c(Bg("NETWORK_ERROR"))}},0)}Fg.isAvailable=function(){return"undefined"!==typeof document&&null!=document.createElement};
Fg.prototype.Bc=function(){return"json"};function Hg(a,b,c,d){If.call(this,["auth_status"]);this.H=a;this.df=b;this.Sg=c;this.Ke=d;this.rc=new lg(a,[Dc,P]);this.nb=null;this.Re=!1;Ig(this)}ma(Hg,If);h=Hg.prototype;h.we=function(){return this.nb||null};function Ig(a){P.get("redirect_request_id")&&Jg(a);var b=a.rc.get();b&&b.token?(Kg(a,b),a.df(b.token,function(c,d){Lg(a,c,d,!1,b.token,b)},function(b,d){Mg(a,"resumeSession()",b,d)})):Kg(a,null)}
function Ng(a,b,c,d,e,f){"firebaseio-demo.com"===a.H.domain&&Q("Firebase authentication is not supported on demo Firebases (*.firebaseio-demo.com). To secure your Firebase, create a production Firebase at https://www.firebase.com.");a.df(b,function(f,k){Lg(a,f,k,!0,b,c,d||{},e)},function(b,c){Mg(a,"auth()",b,c,f)})}function Og(a,b){a.rc.clear();Kg(a,null);a.Sg(function(a,d){if("ok"===a)R(b,null);else{var e=(a||"error").toUpperCase(),f=e;d&&(f+=": "+d);f=Error(f);f.code=e;R(b,f)}})}
function Lg(a,b,c,d,e,f,g,k){"ok"===b?(d&&(b=c.auth,f.auth=b,f.expires=c.expires,f.token=cd(e)?e:"",c=null,b&&u(b,"uid")?c=w(b,"uid"):u(f,"uid")&&(c=w(f,"uid")),f.uid=c,c="custom",b&&u(b,"provider")?c=w(b,"provider"):u(f,"provider")&&(c=w(f,"provider")),f.provider=c,a.rc.clear(),cd(e)&&(g=g||{},c=Dc,"sessionOnly"===g.remember&&(c=P),"none"!==g.remember&&a.rc.set(f,c)),Kg(a,f)),R(k,null,f)):(a.rc.clear(),Kg(a,null),f=a=(b||"error").toUpperCase(),c&&(f+=": "+c),f=Error(f),f.code=a,R(k,f))}
function Mg(a,b,c,d,e){Q(b+" was canceled: "+d);a.rc.clear();Kg(a,null);a=Error(d);a.code=c.toUpperCase();R(e,a)}function Pg(a,b,c,d,e){Qg(a);c=new ig(d||{},{},c||{});Rg(a,[Dg,Fg],"/auth/"+b,c,e)}
function Sg(a,b,c,d){Qg(a);var e=[Cg,Eg];c=kg(c);"anonymous"===b||"password"===b?setTimeout(function(){R(d,Bg("TRANSPORT_UNAVAILABLE"))},0):(c.ce.window_features="menubar=yes,modal=yes,alwaysRaised=yeslocation=yes,resizable=yes,scrollbars=yes,status=yes,height=625,width=625,top="+("object"===typeof screen?.5*(screen.height-625):0)+",left="+("object"===typeof screen?.5*(screen.width-625):0),c.ce.relay_url=wg(a.H.Cb),c.ce.requestWithCredential=q(a.pc,a),Rg(a,e,"/auth/"+b,c,d))}
function Jg(a){var b=P.get("redirect_request_id");if(b){var c=P.get("redirect_client_options");P.remove("redirect_request_id");P.remove("redirect_client_options");var d=[Dg,Fg],b={requestId:b,requestKey:ug(document.location.hash)},c=new ig(c,{},b);a.Re=!0;try{document.location.hash=document.location.hash.replace(/&__firebase_request_key=([a-zA-z0-9]*)/,"")}catch(e){}Rg(a,d,"/auth/session",c,function(){this.Re=!1}.bind(a))}}
h.re=function(a,b){Qg(this);var c=kg(a);c.ab._method="POST";this.pc("/users",c,function(a,c){a?R(b,a):R(b,a,c)})};h.Se=function(a,b){var c=this;Qg(this);var d="/users/"+encodeURIComponent(a.email),e=kg(a);e.ab._method="DELETE";this.pc(d,e,function(a,d){!a&&d&&d.uid&&c.nb&&c.nb.uid&&c.nb.uid===d.uid&&Og(c);R(b,a)})};h.oe=function(a,b){Qg(this);var c="/users/"+encodeURIComponent(a.email)+"/password",d=kg(a);d.ab._method="PUT";d.ab.password=a.newPassword;this.pc(c,d,function(a){R(b,a)})};
h.ne=function(a,b){Qg(this);var c="/users/"+encodeURIComponent(a.oldEmail)+"/email",d=kg(a);d.ab._method="PUT";d.ab.email=a.newEmail;d.ab.password=a.password;this.pc(c,d,function(a){R(b,a)})};h.Ue=function(a,b){Qg(this);var c="/users/"+encodeURIComponent(a.email)+"/password",d=kg(a);d.ab._method="POST";this.pc(c,d,function(a){R(b,a)})};h.pc=function(a,b,c){Tg(this,[Dg,Fg],a,b,c)};
function Rg(a,b,c,d,e){Tg(a,b,c,d,function(b,c){!b&&c&&c.token&&c.uid?Ng(a,c.token,c,d.ld,function(a,b){a?R(e,a):R(e,null,b)}):R(e,b||Bg("UNKNOWN_ERROR"))})}
function Tg(a,b,c,d,e){b=Pa(b,function(a){return"function"===typeof a.isAvailable&&a.isAvailable()});0===b.length?setTimeout(function(){R(e,Bg("TRANSPORT_UNAVAILABLE"))},0):(b=new (b.shift())(d.ce),d=ib(d.ab),d.v="js-2.2.7",d.transport=b.Bc(),d.suppress_status_codes=!0,a=vg()+"/"+a.H.Cb+c,b.open(a,d,function(a,b){if(a)R(e,a);else if(b&&b.error){var c=Error(b.error.message);c.code=b.error.code;c.details=b.error.details;R(e,c)}else R(e,null,b)}))}
function Kg(a,b){var c=null!==a.nb||null!==b;a.nb=b;c&&a.de("auth_status",b);a.Ke(null!==b)}h.ze=function(a){J("auth_status"===a,'initial event must be of type "auth_status"');return this.Re?null:[this.nb]};function Qg(a){var b=a.H;if("firebaseio.com"!==b.domain&&"firebaseio-demo.com"!==b.domain&&"auth.firebase.com"===hg)throw Error("This custom Firebase server ('"+a.H.domain+"') does not support delegated login.");};function Ug(a){this.hc=a;this.Kd=[];this.Qb=0;this.pe=-1;this.Fb=null}function Vg(a,b,c){a.pe=b;a.Fb=c;a.pe<a.Qb&&(a.Fb(),a.Fb=null)}function Wg(a,b,c){for(a.Kd[b]=c;a.Kd[a.Qb];){var d=a.Kd[a.Qb];delete a.Kd[a.Qb];for(var e=0;e<d.length;++e)if(d[e]){var f=a;Cb(function(){f.hc(d[e])})}if(a.Qb===a.pe){a.Fb&&(clearTimeout(a.Fb),a.Fb(),a.Fb=null);break}a.Qb++}};function Xg(a,b,c){this.qe=a;this.f=Oc(a);this.ob=this.pb=0;this.Va=Ob(b);this.Vd=c;this.Gc=!1;this.gd=function(a){b.host!==b.Oa&&(a.ns=b.Cb);var c=[],f;for(f in a)a.hasOwnProperty(f)&&c.push(f+"="+a[f]);return(b.lb?"https://":"http://")+b.Oa+"/.lp?"+c.join("&")}}var Yg,Zg;
Xg.prototype.open=function(a,b){this.gf=0;this.ka=b;this.zf=new Ug(a);this.zb=!1;var c=this;this.rb=setTimeout(function(){c.f("Timed out trying to connect.");c.ib();c.rb=null},Math.floor(3E4));Tc(function(){if(!c.zb){c.Ta=new $g(function(a,b,d,k,l){ah(c,arguments);if(c.Ta)if(c.rb&&(clearTimeout(c.rb),c.rb=null),c.Gc=!0,"start"==a)c.id=b,c.Ff=d;else if("close"===a)b?(c.Ta.Td=!1,Vg(c.zf,b,function(){c.ib()})):c.ib();else throw Error("Unrecognized command received: "+a);},function(a,b){ah(c,arguments);
Wg(c.zf,a,b)},function(){c.ib()},c.gd);var a={start:"t"};a.ser=Math.floor(1E8*Math.random());c.Ta.fe&&(a.cb=c.Ta.fe);a.v="5";c.Vd&&(a.s=c.Vd);"undefined"!==typeof location&&location.href&&-1!==location.href.indexOf("firebaseio.com")&&(a.r="f");a=c.gd(a);c.f("Connecting via long-poll to "+a);bh(c.Ta,a,function(){})}})};
Xg.prototype.start=function(){var a=this.Ta,b=this.Ff;a.rg=this.id;a.sg=b;for(a.ke=!0;ch(a););a=this.id;b=this.Ff;this.fc=document.createElement("iframe");var c={dframe:"t"};c.id=a;c.pw=b;this.fc.src=this.gd(c);this.fc.style.display="none";document.body.appendChild(this.fc)};
Xg.isAvailable=function(){return Yg||!Zg&&"undefined"!==typeof document&&null!=document.createElement&&!("object"===typeof window&&window.chrome&&window.chrome.extension&&!/^chrome/.test(window.location.href))&&!("object"===typeof Windows&&"object"===typeof Windows.Ug)};h=Xg.prototype;h.Bd=function(){};h.cd=function(){this.zb=!0;this.Ta&&(this.Ta.close(),this.Ta=null);this.fc&&(document.body.removeChild(this.fc),this.fc=null);this.rb&&(clearTimeout(this.rb),this.rb=null)};
h.ib=function(){this.zb||(this.f("Longpoll is closing itself"),this.cd(),this.ka&&(this.ka(this.Gc),this.ka=null))};h.close=function(){this.zb||(this.f("Longpoll is being closed."),this.cd())};h.send=function(a){a=B(a);this.pb+=a.length;Lb(this.Va,"bytes_sent",a.length);a=Kc(a);a=fb(a,!0);a=Xc(a,1840);for(var b=0;b<a.length;b++){var c=this.Ta;c.$c.push({Jg:this.gf,Rg:a.length,jf:a[b]});c.ke&&ch(c);this.gf++}};function ah(a,b){var c=B(b).length;a.ob+=c;Lb(a.Va,"bytes_received",c)}
function $g(a,b,c,d){this.gd=d;this.jb=c;this.Oe=new eg;this.$c=[];this.se=Math.floor(1E8*Math.random());this.Td=!0;this.fe=Gc();window["pLPCommand"+this.fe]=a;window["pRTLPCB"+this.fe]=b;a=document.createElement("iframe");a.style.display="none";if(document.body){document.body.appendChild(a);try{a.contentWindow.document||Bb("No IE domain setting required")}catch(e){a.src="javascript:void((function(){document.open();document.domain='"+document.domain+"';document.close();})())"}}else throw"Document body has not initialized. Wait to initialize Firebase until after the document is ready.";
a.contentDocument?a.gb=a.contentDocument:a.contentWindow?a.gb=a.contentWindow.document:a.document&&(a.gb=a.document);this.Ca=a;a="";this.Ca.src&&"javascript:"===this.Ca.src.substr(0,11)&&(a='<script>document.domain="'+document.domain+'";\x3c/script>');a="<html><body>"+a+"</body></html>";try{this.Ca.gb.open(),this.Ca.gb.write(a),this.Ca.gb.close()}catch(f){Bb("frame writing exception"),f.stack&&Bb(f.stack),Bb(f)}}
$g.prototype.close=function(){this.ke=!1;if(this.Ca){this.Ca.gb.body.innerHTML="";var a=this;setTimeout(function(){null!==a.Ca&&(document.body.removeChild(a.Ca),a.Ca=null)},Math.floor(0))}var b=this.jb;b&&(this.jb=null,b())};
function ch(a){if(a.ke&&a.Td&&a.Oe.count()<(0<a.$c.length?2:1)){a.se++;var b={};b.id=a.rg;b.pw=a.sg;b.ser=a.se;for(var b=a.gd(b),c="",d=0;0<a.$c.length;)if(1870>=a.$c[0].jf.length+30+c.length){var e=a.$c.shift(),c=c+"&seg"+d+"="+e.Jg+"&ts"+d+"="+e.Rg+"&d"+d+"="+e.jf;d++}else break;dh(a,b+c,a.se);return!0}return!1}function dh(a,b,c){function d(){a.Oe.remove(c);ch(a)}a.Oe.add(c,1);var e=setTimeout(d,Math.floor(25E3));bh(a,b,function(){clearTimeout(e);d()})}
function bh(a,b,c){setTimeout(function(){try{if(a.Td){var d=a.Ca.gb.createElement("script");d.type="text/javascript";d.async=!0;d.src=b;d.onload=d.onreadystatechange=function(){var a=d.readyState;a&&"loaded"!==a&&"complete"!==a||(d.onload=d.onreadystatechange=null,d.parentNode&&d.parentNode.removeChild(d),c())};d.onerror=function(){Bb("Long-poll script failed to load: "+b);a.Td=!1;a.close()};a.Ca.gb.body.appendChild(d)}}catch(e){}},Math.floor(1))};var eh=null;"undefined"!==typeof MozWebSocket?eh=MozWebSocket:"undefined"!==typeof WebSocket&&(eh=WebSocket);function fh(a,b,c){this.qe=a;this.f=Oc(this.qe);this.frames=this.Jc=null;this.ob=this.pb=this.bf=0;this.Va=Ob(b);this.fb=(b.lb?"wss://":"ws://")+b.Oa+"/.ws?v=5";"undefined"!==typeof location&&location.href&&-1!==location.href.indexOf("firebaseio.com")&&(this.fb+="&r=f");b.host!==b.Oa&&(this.fb=this.fb+"&ns="+b.Cb);c&&(this.fb=this.fb+"&s="+c)}var gh;
fh.prototype.open=function(a,b){this.jb=b;this.wg=a;this.f("Websocket connecting to "+this.fb);this.Gc=!1;Dc.set("previous_websocket_failure",!0);try{this.va=new eh(this.fb)}catch(c){this.f("Error instantiating WebSocket.");var d=c.message||c.data;d&&this.f(d);this.ib();return}var e=this;this.va.onopen=function(){e.f("Websocket connected.");e.Gc=!0};this.va.onclose=function(){e.f("Websocket connection was disconnected.");e.va=null;e.ib()};this.va.onmessage=function(a){if(null!==e.va)if(a=a.data,e.ob+=
a.length,Lb(e.Va,"bytes_received",a.length),hh(e),null!==e.frames)ih(e,a);else{a:{J(null===e.frames,"We already have a frame buffer");if(6>=a.length){var b=Number(a);if(!isNaN(b)){e.bf=b;e.frames=[];a=null;break a}}e.bf=1;e.frames=[]}null!==a&&ih(e,a)}};this.va.onerror=function(a){e.f("WebSocket error. Closing connection.");(a=a.message||a.data)&&e.f(a);e.ib()}};fh.prototype.start=function(){};
fh.isAvailable=function(){var a=!1;if("undefined"!==typeof navigator&&navigator.userAgent){var b=navigator.userAgent.match(/Android ([0-9]{0,}\.[0-9]{0,})/);b&&1<b.length&&4.4>parseFloat(b[1])&&(a=!0)}return!a&&null!==eh&&!gh};fh.responsesRequiredToBeHealthy=2;fh.healthyTimeout=3E4;h=fh.prototype;h.Bd=function(){Dc.remove("previous_websocket_failure")};function ih(a,b){a.frames.push(b);if(a.frames.length==a.bf){var c=a.frames.join("");a.frames=null;c=mb(c);a.wg(c)}}
h.send=function(a){hh(this);a=B(a);this.pb+=a.length;Lb(this.Va,"bytes_sent",a.length);a=Xc(a,16384);1<a.length&&this.va.send(String(a.length));for(var b=0;b<a.length;b++)this.va.send(a[b])};h.cd=function(){this.zb=!0;this.Jc&&(clearInterval(this.Jc),this.Jc=null);this.va&&(this.va.close(),this.va=null)};h.ib=function(){this.zb||(this.f("WebSocket is closing itself"),this.cd(),this.jb&&(this.jb(this.Gc),this.jb=null))};h.close=function(){this.zb||(this.f("WebSocket is being closed"),this.cd())};
function hh(a){clearInterval(a.Jc);a.Jc=setInterval(function(){a.va&&a.va.send("0");hh(a)},Math.floor(45E3))};function jh(a){kh(this,a)}var lh=[Xg,fh];function kh(a,b){var c=fh&&fh.isAvailable(),d=c&&!(Dc.uf||!0===Dc.get("previous_websocket_failure"));b.Tg&&(c||Q("wss:// URL used, but browser isn't known to support websockets. Trying anyway."),d=!0);if(d)a.ed=[fh];else{var e=a.ed=[];Yc(lh,function(a,b){b&&b.isAvailable()&&e.push(b)})}}function mh(a){if(0<a.ed.length)return a.ed[0];throw Error("No transports available");};function nh(a,b,c,d,e,f){this.id=a;this.f=Oc("c:"+this.id+":");this.hc=c;this.Vc=d;this.ka=e;this.Me=f;this.H=b;this.Jd=[];this.ef=0;this.Nf=new jh(b);this.Ua=0;this.f("Connection created");oh(this)}
function oh(a){var b=mh(a.Nf);a.L=new b("c:"+a.id+":"+a.ef++,a.H);a.Qe=b.responsesRequiredToBeHealthy||0;var c=ph(a,a.L),d=qh(a,a.L);a.fd=a.L;a.bd=a.L;a.F=null;a.Ab=!1;setTimeout(function(){a.L&&a.L.open(c,d)},Math.floor(0));b=b.healthyTimeout||0;0<b&&(a.vd=setTimeout(function(){a.vd=null;a.Ab||(a.L&&102400<a.L.ob?(a.f("Connection exceeded healthy timeout but has received "+a.L.ob+" bytes. Marking connection healthy."),a.Ab=!0,a.L.Bd()):a.L&&10240<a.L.pb?a.f("Connection exceeded healthy timeout but has sent "+
a.L.pb+" bytes. Leaving connection alive."):(a.f("Closing unhealthy connection after timeout."),a.close()))},Math.floor(b)))}function qh(a,b){return function(c){b===a.L?(a.L=null,c||0!==a.Ua?1===a.Ua&&a.f("Realtime connection lost."):(a.f("Realtime connection failed."),"s-"===a.H.Oa.substr(0,2)&&(Dc.remove("host:"+a.H.host),a.H.Oa=a.H.host)),a.close()):b===a.F?(a.f("Secondary connection lost."),c=a.F,a.F=null,a.fd!==c&&a.bd!==c||a.close()):a.f("closing an old connection")}}
function ph(a,b){return function(c){if(2!=a.Ua)if(b===a.bd){var d=Vc("t",c);c=Vc("d",c);if("c"==d){if(d=Vc("t",c),"d"in c)if(c=c.d,"h"===d){var d=c.ts,e=c.v,f=c.h;a.Vd=c.s;Fc(a.H,f);0==a.Ua&&(a.L.start(),rh(a,a.L,d),"5"!==e&&Q("Protocol version mismatch detected"),c=a.Nf,(c=1<c.ed.length?c.ed[1]:null)&&sh(a,c))}else if("n"===d){a.f("recvd end transmission on primary");a.bd=a.F;for(c=0;c<a.Jd.length;++c)a.Fd(a.Jd[c]);a.Jd=[];th(a)}else"s"===d?(a.f("Connection shutdown command received. Shutting down..."),
a.Me&&(a.Me(c),a.Me=null),a.ka=null,a.close()):"r"===d?(a.f("Reset packet received. New host: "+c),Fc(a.H,c),1===a.Ua?a.close():(uh(a),oh(a))):"e"===d?Pc("Server Error: "+c):"o"===d?(a.f("got pong on primary."),vh(a),wh(a)):Pc("Unknown control packet command: "+d)}else"d"==d&&a.Fd(c)}else if(b===a.F)if(d=Vc("t",c),c=Vc("d",c),"c"==d)"t"in c&&(c=c.t,"a"===c?xh(a):"r"===c?(a.f("Got a reset on secondary, closing it"),a.F.close(),a.fd!==a.F&&a.bd!==a.F||a.close()):"o"===c&&(a.f("got pong on secondary."),
a.Lf--,xh(a)));else if("d"==d)a.Jd.push(c);else throw Error("Unknown protocol layer: "+d);else a.f("message on old connection")}}nh.prototype.Da=function(a){yh(this,{t:"d",d:a})};function th(a){a.fd===a.F&&a.bd===a.F&&(a.f("cleaning up and promoting a connection: "+a.F.qe),a.L=a.F,a.F=null)}
function xh(a){0>=a.Lf?(a.f("Secondary connection is healthy."),a.Ab=!0,a.F.Bd(),a.F.start(),a.f("sending client ack on secondary"),a.F.send({t:"c",d:{t:"a",d:{}}}),a.f("Ending transmission on primary"),a.L.send({t:"c",d:{t:"n",d:{}}}),a.fd=a.F,th(a)):(a.f("sending ping on secondary."),a.F.send({t:"c",d:{t:"p",d:{}}}))}nh.prototype.Fd=function(a){vh(this);this.hc(a)};function vh(a){a.Ab||(a.Qe--,0>=a.Qe&&(a.f("Primary connection is healthy."),a.Ab=!0,a.L.Bd()))}
function sh(a,b){a.F=new b("c:"+a.id+":"+a.ef++,a.H,a.Vd);a.Lf=b.responsesRequiredToBeHealthy||0;a.F.open(ph(a,a.F),qh(a,a.F));setTimeout(function(){a.F&&(a.f("Timed out trying to upgrade."),a.F.close())},Math.floor(6E4))}function rh(a,b,c){a.f("Realtime connection established.");a.L=b;a.Ua=1;a.Vc&&(a.Vc(c),a.Vc=null);0===a.Qe?(a.f("Primary connection is healthy."),a.Ab=!0):setTimeout(function(){wh(a)},Math.floor(5E3))}
function wh(a){a.Ab||1!==a.Ua||(a.f("sending ping on primary."),yh(a,{t:"c",d:{t:"p",d:{}}}))}function yh(a,b){if(1!==a.Ua)throw"Connection is not connected";a.fd.send(b)}nh.prototype.close=function(){2!==this.Ua&&(this.f("Closing realtime connection."),this.Ua=2,uh(this),this.ka&&(this.ka(),this.ka=null))};function uh(a){a.f("Shutting down all connections");a.L&&(a.L.close(),a.L=null);a.F&&(a.F.close(),a.F=null);a.vd&&(clearTimeout(a.vd),a.vd=null)};function zh(a,b,c,d){this.id=Ah++;this.f=Oc("p:"+this.id+":");this.wf=this.De=!1;this.aa={};this.pa=[];this.Xc=0;this.Uc=[];this.ma=!1;this.$a=1E3;this.Cd=3E5;this.Gb=b;this.Tc=c;this.Ne=d;this.H=a;this.We=null;this.Qd={};this.Ig=0;this.mf=!0;this.Kc=this.Fe=null;Bh(this,0);Mf.ub().Eb("visible",this.zg,this);-1===a.host.indexOf("fblocal")&&Lf.ub().Eb("online",this.xg,this)}var Ah=0,Ch=0;h=zh.prototype;
h.Da=function(a,b,c){var d=++this.Ig;a={r:d,a:a,b:b};this.f(B(a));J(this.ma,"sendRequest call when we're not connected not allowed.");this.Sa.Da(a);c&&(this.Qd[d]=c)};h.xf=function(a,b,c,d){var e=a.wa(),f=a.path.toString();this.f("Listen called for "+f+" "+e);this.aa[f]=this.aa[f]||{};J(!this.aa[f][e],"listen() called twice for same path/queryId.");a={J:d,ud:b,Fg:a,tag:c};this.aa[f][e]=a;this.ma&&Dh(this,a)};
function Dh(a,b){var c=b.Fg,d=c.path.toString(),e=c.wa();a.f("Listen on "+d+" for "+e);var f={p:d};b.tag&&(f.q=ce(c.o),f.t=b.tag);f.h=b.ud();a.Da("q",f,function(f){var k=f.d,l=f.s;if(k&&"object"===typeof k&&u(k,"w")){var m=w(k,"w");ea(m)&&0<=Na(m,"no_index")&&Q("Using an unspecified index. Consider adding "+('".indexOn": "'+c.o.g.toString()+'"')+" at "+c.path.toString()+" to your security rules for better performance")}(a.aa[d]&&a.aa[d][e])===b&&(a.f("listen response",f),"ok"!==l&&Eh(a,d,e),b.J&&
b.J(l,k))})}h.P=function(a,b,c){this.Fa={fg:a,nf:!1,yc:b,jd:c};this.f("Authenticating using credential: "+a);Fh(this);(b=40==a.length)||(a=ad(a).Ac,b="object"===typeof a&&!0===w(a,"admin"));b&&(this.f("Admin auth credential detected. Reducing max reconnect time."),this.Cd=3E4)};h.ee=function(a){delete this.Fa;this.ma&&this.Da("unauth",{},function(b){a(b.s,b.d)})};
function Fh(a){var b=a.Fa;a.ma&&b&&a.Da("auth",{cred:b.fg},function(c){var d=c.s;c=c.d||"error";"ok"!==d&&a.Fa===b&&delete a.Fa;b.nf?"ok"!==d&&b.jd&&b.jd(d,c):(b.nf=!0,b.yc&&b.yc(d,c))})}h.Of=function(a,b){var c=a.path.toString(),d=a.wa();this.f("Unlisten called for "+c+" "+d);if(Eh(this,c,d)&&this.ma){var e=ce(a.o);this.f("Unlisten on "+c+" for "+d);c={p:c};b&&(c.q=e,c.t=b);this.Da("n",c)}};h.Le=function(a,b,c){this.ma?Gh(this,"o",a,b,c):this.Uc.push({Zc:a,action:"o",data:b,J:c})};
h.Bf=function(a,b,c){this.ma?Gh(this,"om",a,b,c):this.Uc.push({Zc:a,action:"om",data:b,J:c})};h.Gd=function(a,b){this.ma?Gh(this,"oc",a,null,b):this.Uc.push({Zc:a,action:"oc",data:null,J:b})};function Gh(a,b,c,d,e){c={p:c,d:d};a.f("onDisconnect "+b,c);a.Da(b,c,function(a){e&&setTimeout(function(){e(a.s,a.d)},Math.floor(0))})}h.put=function(a,b,c,d){Hh(this,"p",a,b,c,d)};h.yf=function(a,b,c,d){Hh(this,"m",a,b,c,d)};
function Hh(a,b,c,d,e,f){d={p:c,d:d};n(f)&&(d.h=f);a.pa.push({action:b,If:d,J:e});a.Xc++;b=a.pa.length-1;a.ma?Ih(a,b):a.f("Buffering put: "+c)}function Ih(a,b){var c=a.pa[b].action,d=a.pa[b].If,e=a.pa[b].J;a.pa[b].Gg=a.ma;a.Da(c,d,function(d){a.f(c+" response",d);delete a.pa[b];a.Xc--;0===a.Xc&&(a.pa=[]);e&&e(d.s,d.d)})}h.Te=function(a){this.ma&&(a={c:a},this.f("reportStats",a),this.Da("s",a,function(a){"ok"!==a.s&&this.f("reportStats","Error sending stats: "+a.d)}))};
h.Fd=function(a){if("r"in a){this.f("from server: "+B(a));var b=a.r,c=this.Qd[b];c&&(delete this.Qd[b],c(a.b))}else{if("error"in a)throw"A server-side error has occurred: "+a.error;"a"in a&&(b=a.a,c=a.b,this.f("handleServerMessage",b,c),"d"===b?this.Gb(c.p,c.d,!1,c.t):"m"===b?this.Gb(c.p,c.d,!0,c.t):"c"===b?Jh(this,c.p,c.q):"ac"===b?(a=c.s,b=c.d,c=this.Fa,delete this.Fa,c&&c.jd&&c.jd(a,b)):"sd"===b?this.We?this.We(c):"msg"in c&&"undefined"!==typeof console&&console.log("FIREBASE: "+c.msg.replace("\n",
"\nFIREBASE: ")):Pc("Unrecognized action received from server: "+B(b)+"\nAre you using the latest client?"))}};h.Vc=function(a){this.f("connection ready");this.ma=!0;this.Kc=(new Date).getTime();this.Ne({serverTimeOffset:a-(new Date).getTime()});this.mf&&(a={},a["sdk.js."+"2.2.7".replace(/\./g,"-")]=1,ng()&&(a["framework.cordova"]=1),this.Te(a));Kh(this);this.mf=!1;this.Tc(!0)};
function Bh(a,b){J(!a.Sa,"Scheduling a connect when we're already connected/ing?");a.Sb&&clearTimeout(a.Sb);a.Sb=setTimeout(function(){a.Sb=null;Lh(a)},Math.floor(b))}h.zg=function(a){a&&!this.uc&&this.$a===this.Cd&&(this.f("Window became visible. Reducing delay."),this.$a=1E3,this.Sa||Bh(this,0));this.uc=a};h.xg=function(a){a?(this.f("Browser went online."),this.$a=1E3,this.Sa||Bh(this,0)):(this.f("Browser went offline. Killing connection."),this.Sa&&this.Sa.close())};
h.Cf=function(){this.f("data client disconnected");this.ma=!1;this.Sa=null;for(var a=0;a<this.pa.length;a++){var b=this.pa[a];b&&"h"in b.If&&b.Gg&&(b.J&&b.J("disconnect"),delete this.pa[a],this.Xc--)}0===this.Xc&&(this.pa=[]);this.Qd={};Mh(this)&&(this.uc?this.Kc&&(3E4<(new Date).getTime()-this.Kc&&(this.$a=1E3),this.Kc=null):(this.f("Window isn't visible. Delaying reconnect."),this.$a=this.Cd,this.Fe=(new Date).getTime()),a=Math.max(0,this.$a-((new Date).getTime()-this.Fe)),a*=Math.random(),this.f("Trying to reconnect in "+
a+"ms"),Bh(this,a),this.$a=Math.min(this.Cd,1.3*this.$a));this.Tc(!1)};function Lh(a){if(Mh(a)){a.f("Making a connection attempt");a.Fe=(new Date).getTime();a.Kc=null;var b=q(a.Fd,a),c=q(a.Vc,a),d=q(a.Cf,a),e=a.id+":"+Ch++;a.Sa=new nh(e,a.H,b,c,d,function(b){Q(b+" ("+a.H.toString()+")");a.wf=!0})}}h.yb=function(){this.De=!0;this.Sa?this.Sa.close():(this.Sb&&(clearTimeout(this.Sb),this.Sb=null),this.ma&&this.Cf())};h.qc=function(){this.De=!1;this.$a=1E3;this.Sa||Bh(this,0)};
function Jh(a,b,c){c=c?Qa(c,function(a){return Wc(a)}).join("$"):"default";(a=Eh(a,b,c))&&a.J&&a.J("permission_denied")}function Eh(a,b,c){b=(new K(b)).toString();var d;n(a.aa[b])?(d=a.aa[b][c],delete a.aa[b][c],0===pa(a.aa[b])&&delete a.aa[b]):d=void 0;return d}function Kh(a){Fh(a);r(a.aa,function(b){r(b,function(b){Dh(a,b)})});for(var b=0;b<a.pa.length;b++)a.pa[b]&&Ih(a,b);for(;a.Uc.length;)b=a.Uc.shift(),Gh(a,b.action,b.Zc,b.data,b.J)}function Mh(a){var b;b=Lf.ub().ic;return!a.wf&&!a.De&&b};var V={lg:function(){Yg=gh=!0}};V.forceLongPolling=V.lg;V.mg=function(){Zg=!0};V.forceWebSockets=V.mg;V.Mg=function(a,b){a.k.Ra.We=b};V.setSecurityDebugCallback=V.Mg;V.Ye=function(a,b){a.k.Ye(b)};V.stats=V.Ye;V.Ze=function(a,b){a.k.Ze(b)};V.statsIncrementCounter=V.Ze;V.pd=function(a){return a.k.pd};V.dataUpdateCount=V.pd;V.pg=function(a,b){a.k.Ce=b};V.interceptServerData=V.pg;V.vg=function(a){new xg(a)};V.onPopupOpen=V.vg;V.Kg=function(a){hg=a};V.setAuthenticationServer=V.Kg;function S(a,b,c){this.B=a;this.V=b;this.g=c}S.prototype.K=function(){x("Firebase.DataSnapshot.val",0,0,arguments.length);return this.B.K()};S.prototype.val=S.prototype.K;S.prototype.lf=function(){x("Firebase.DataSnapshot.exportVal",0,0,arguments.length);return this.B.K(!0)};S.prototype.exportVal=S.prototype.lf;S.prototype.kg=function(){x("Firebase.DataSnapshot.exists",0,0,arguments.length);return!this.B.e()};S.prototype.exists=S.prototype.kg;
S.prototype.w=function(a){x("Firebase.DataSnapshot.child",0,1,arguments.length);ga(a)&&(a=String(a));Yf("Firebase.DataSnapshot.child",a);var b=new K(a),c=this.V.w(b);return new S(this.B.oa(b),c,M)};S.prototype.child=S.prototype.w;S.prototype.Ha=function(a){x("Firebase.DataSnapshot.hasChild",1,1,arguments.length);Yf("Firebase.DataSnapshot.hasChild",a);var b=new K(a);return!this.B.oa(b).e()};S.prototype.hasChild=S.prototype.Ha;
S.prototype.A=function(){x("Firebase.DataSnapshot.getPriority",0,0,arguments.length);return this.B.A().K()};S.prototype.getPriority=S.prototype.A;S.prototype.forEach=function(a){x("Firebase.DataSnapshot.forEach",1,1,arguments.length);A("Firebase.DataSnapshot.forEach",1,a,!1);if(this.B.N())return!1;var b=this;return!!this.B.U(this.g,function(c,d){return a(new S(d,b.V.w(c),M))})};S.prototype.forEach=S.prototype.forEach;
S.prototype.td=function(){x("Firebase.DataSnapshot.hasChildren",0,0,arguments.length);return this.B.N()?!1:!this.B.e()};S.prototype.hasChildren=S.prototype.td;S.prototype.name=function(){Q("Firebase.DataSnapshot.name() being deprecated. Please use Firebase.DataSnapshot.key() instead.");x("Firebase.DataSnapshot.name",0,0,arguments.length);return this.key()};S.prototype.name=S.prototype.name;S.prototype.key=function(){x("Firebase.DataSnapshot.key",0,0,arguments.length);return this.V.key()};
S.prototype.key=S.prototype.key;S.prototype.Db=function(){x("Firebase.DataSnapshot.numChildren",0,0,arguments.length);return this.B.Db()};S.prototype.numChildren=S.prototype.Db;S.prototype.lc=function(){x("Firebase.DataSnapshot.ref",0,0,arguments.length);return this.V};S.prototype.ref=S.prototype.lc;function Nh(a,b){this.H=a;this.Va=Ob(a);this.ea=new ub;this.Ed=1;this.Ra=null;b||0<=("object"===typeof window&&window.navigator&&window.navigator.userAgent||"").search(/googlebot|google webmaster tools|bingbot|yahoo! slurp|baiduspider|yandexbot|duckduckbot/i)?(this.ca=new Ae(this.H,q(this.Gb,this)),setTimeout(q(this.Tc,this,!0),0)):this.ca=this.Ra=new zh(this.H,q(this.Gb,this),q(this.Tc,this),q(this.Ne,this));this.Pg=Pb(a,q(function(){return new Jb(this.Va,this.ca)},this));this.tc=new Cf;this.Be=
new nb;var c=this;this.zd=new gf({Xe:function(a,b,f,g){b=[];f=c.Be.j(a.path);f.e()||(b=jf(c.zd,new Ub(ze,a.path,f)),setTimeout(function(){g("ok")},0));return b},Zd:ba});Oh(this,"connected",!1);this.ka=new qc;this.P=new Hg(a,q(this.ca.P,this.ca),q(this.ca.ee,this.ca),q(this.Ke,this));this.pd=0;this.Ce=null;this.O=new gf({Xe:function(a,b,f,g){c.ca.xf(a,f,b,function(b,e){var f=g(b,e);zb(c.ea,a.path,f)});return[]},Zd:function(a,b){c.ca.Of(a,b)}})}h=Nh.prototype;
h.toString=function(){return(this.H.lb?"https://":"http://")+this.H.host};h.name=function(){return this.H.Cb};function Ph(a){a=a.Be.j(new K(".info/serverTimeOffset")).K()||0;return(new Date).getTime()+a}function Qh(a){a=a={timestamp:Ph(a)};a.timestamp=a.timestamp||(new Date).getTime();return a}
h.Gb=function(a,b,c,d){this.pd++;var e=new K(a);b=this.Ce?this.Ce(a,b):b;a=[];d?c?(b=na(b,function(a){return L(a)}),a=rf(this.O,e,b,d)):(b=L(b),a=nf(this.O,e,b,d)):c?(d=na(b,function(a){return L(a)}),a=mf(this.O,e,d)):(d=L(b),a=jf(this.O,new Ub(ze,e,d)));d=e;0<a.length&&(d=Rh(this,e));zb(this.ea,d,a)};h.Tc=function(a){Oh(this,"connected",a);!1===a&&Sh(this)};h.Ne=function(a){var b=this;Yc(a,function(a,d){Oh(b,d,a)})};h.Ke=function(a){Oh(this,"authenticated",a)};
function Oh(a,b,c){b=new K("/.info/"+b);c=L(c);var d=a.Be;d.Sd=d.Sd.G(b,c);c=jf(a.zd,new Ub(ze,b,c));zb(a.ea,b,c)}h.Kb=function(a,b,c,d){this.f("set",{path:a.toString(),value:b,Xg:c});var e=Qh(this);b=L(b,c);var e=sc(b,e),f=this.Ed++,e=hf(this.O,a,e,f,!0);vb(this.ea,e);var g=this;this.ca.put(a.toString(),b.K(!0),function(b,c){var e="ok"===b;e||Q("set at "+a+" failed: "+b);e=lf(g.O,f,!e);zb(g.ea,a,e);Th(d,b,c)});e=Uh(this,a);Rh(this,e);zb(this.ea,e,[])};
h.update=function(a,b,c){this.f("update",{path:a.toString(),value:b});var d=!0,e=Qh(this),f={};r(b,function(a,b){d=!1;var c=L(a);f[b]=sc(c,e)});if(d)Bb("update() called with empty data. Don't do anything."),Th(c,"ok");else{var g=this.Ed++,k=kf(this.O,a,f,g);vb(this.ea,k);var l=this;this.ca.yf(a.toString(),b,function(b,d){var e="ok"===b;e||Q("update at "+a+" failed: "+b);var e=lf(l.O,g,!e),f=a;0<e.length&&(f=Rh(l,a));zb(l.ea,f,e);Th(c,b,d)});b=Uh(this,a);Rh(this,b);zb(this.ea,a,[])}};
function Sh(a){a.f("onDisconnectEvents");var b=Qh(a),c=[];rc(pc(a.ka,b),F,function(b,e){c=c.concat(jf(a.O,new Ub(ze,b,e)));var f=Uh(a,b);Rh(a,f)});a.ka=new qc;zb(a.ea,F,c)}h.Gd=function(a,b){var c=this;this.ca.Gd(a.toString(),function(d,e){"ok"===d&&gg(c.ka,a);Th(b,d,e)})};function Vh(a,b,c,d){var e=L(c);a.ca.Le(b.toString(),e.K(!0),function(c,g){"ok"===c&&a.ka.mc(b,e);Th(d,c,g)})}function Wh(a,b,c,d,e){var f=L(c,d);a.ca.Le(b.toString(),f.K(!0),function(c,d){"ok"===c&&a.ka.mc(b,f);Th(e,c,d)})}
function Xh(a,b,c,d){var e=!0,f;for(f in c)e=!1;e?(Bb("onDisconnect().update() called with empty data. Don't do anything."),Th(d,"ok")):a.ca.Bf(b.toString(),c,function(e,f){if("ok"===e)for(var l in c){var m=L(c[l]);a.ka.mc(b.w(l),m)}Th(d,e,f)})}function Yh(a,b,c){c=".info"===O(b.path)?a.zd.Ob(b,c):a.O.Ob(b,c);xb(a.ea,b.path,c)}h.yb=function(){this.Ra&&this.Ra.yb()};h.qc=function(){this.Ra&&this.Ra.qc()};
h.Ye=function(a){if("undefined"!==typeof console){a?(this.Yd||(this.Yd=new Ib(this.Va)),a=this.Yd.get()):a=this.Va.get();var b=Ra(sa(a),function(a,b){return Math.max(b.length,a)},0),c;for(c in a){for(var d=a[c],e=c.length;e<b+2;e++)c+=" ";console.log(c+d)}}};h.Ze=function(a){Lb(this.Va,a);this.Pg.Mf[a]=!0};h.f=function(a){var b="";this.Ra&&(b=this.Ra.id+":");Bb(b,arguments)};
function Th(a,b,c){a&&Cb(function(){if("ok"==b)a(null);else{var d=(b||"error").toUpperCase(),e=d;c&&(e+=": "+c);e=Error(e);e.code=d;a(e)}})};function Zh(a,b,c,d,e){function f(){}a.f("transaction on "+b);var g=new U(a,b);g.Eb("value",f);c={path:b,update:c,J:d,status:null,Ef:Gc(),cf:e,Kf:0,ge:function(){g.gc("value",f)},je:null,Aa:null,md:null,nd:null,od:null};d=a.O.ua(b,void 0)||C;c.md=d;d=c.update(d.K());if(n(d)){Tf("transaction failed: Data returned ",d,c.path);c.status=1;e=Df(a.tc,b);var k=e.Ba()||[];k.push(c);Ef(e,k);"object"===typeof d&&null!==d&&u(d,".priority")?(k=w(d,".priority"),J(Rf(k),"Invalid priority returned by transaction. Priority must be a valid string, finite number, server value, or null.")):
k=(a.O.ua(b)||C).A().K();e=Qh(a);d=L(d,k);e=sc(d,e);c.nd=d;c.od=e;c.Aa=a.Ed++;c=hf(a.O,b,e,c.Aa,c.cf);zb(a.ea,b,c);$h(a)}else c.ge(),c.nd=null,c.od=null,c.J&&(a=new S(c.md,new U(a,c.path),M),c.J(null,!1,a))}function $h(a,b){var c=b||a.tc;b||ai(a,c);if(null!==c.Ba()){var d=bi(a,c);J(0<d.length,"Sending zero length transaction queue");Sa(d,function(a){return 1===a.status})&&ci(a,c.path(),d)}else c.td()&&c.U(function(b){$h(a,b)})}
function ci(a,b,c){for(var d=Qa(c,function(a){return a.Aa}),e=a.O.ua(b,d)||C,d=e,e=e.hash(),f=0;f<c.length;f++){var g=c[f];J(1===g.status,"tryToSendTransactionQueue_: items in queue should all be run.");g.status=2;g.Kf++;var k=N(b,g.path),d=d.G(k,g.nd)}d=d.K(!0);a.ca.put(b.toString(),d,function(d){a.f("transaction put response",{path:b.toString(),status:d});var e=[];if("ok"===d){d=[];for(f=0;f<c.length;f++){c[f].status=3;e=e.concat(lf(a.O,c[f].Aa));if(c[f].J){var g=c[f].od,k=new U(a,c[f].path);d.push(q(c[f].J,
null,null,!0,new S(g,k,M)))}c[f].ge()}ai(a,Df(a.tc,b));$h(a);zb(a.ea,b,e);for(f=0;f<d.length;f++)Cb(d[f])}else{if("datastale"===d)for(f=0;f<c.length;f++)c[f].status=4===c[f].status?5:1;else for(Q("transaction at "+b.toString()+" failed: "+d),f=0;f<c.length;f++)c[f].status=5,c[f].je=d;Rh(a,b)}},e)}function Rh(a,b){var c=di(a,b),d=c.path(),c=bi(a,c);ei(a,c,d);return d}
function ei(a,b,c){if(0!==b.length){for(var d=[],e=[],f=Qa(b,function(a){return a.Aa}),g=0;g<b.length;g++){var k=b[g],l=N(c,k.path),m=!1,v;J(null!==l,"rerunTransactionsUnderNode_: relativePath should not be null.");if(5===k.status)m=!0,v=k.je,e=e.concat(lf(a.O,k.Aa,!0));else if(1===k.status)if(25<=k.Kf)m=!0,v="maxretry",e=e.concat(lf(a.O,k.Aa,!0));else{var y=a.O.ua(k.path,f)||C;k.md=y;var I=b[g].update(y.K());n(I)?(Tf("transaction failed: Data returned ",I,k.path),l=L(I),"object"===typeof I&&null!=
I&&u(I,".priority")||(l=l.da(y.A())),y=k.Aa,I=Qh(a),I=sc(l,I),k.nd=l,k.od=I,k.Aa=a.Ed++,Va(f,y),e=e.concat(hf(a.O,k.path,I,k.Aa,k.cf)),e=e.concat(lf(a.O,y,!0))):(m=!0,v="nodata",e=e.concat(lf(a.O,k.Aa,!0)))}zb(a.ea,c,e);e=[];m&&(b[g].status=3,setTimeout(b[g].ge,Math.floor(0)),b[g].J&&("nodata"===v?(k=new U(a,b[g].path),d.push(q(b[g].J,null,null,!1,new S(b[g].md,k,M)))):d.push(q(b[g].J,null,Error(v),!1,null))))}ai(a,a.tc);for(g=0;g<d.length;g++)Cb(d[g]);$h(a)}}
function di(a,b){for(var c,d=a.tc;null!==(c=O(b))&&null===d.Ba();)d=Df(d,c),b=G(b);return d}function bi(a,b){var c=[];fi(a,b,c);c.sort(function(a,b){return a.Ef-b.Ef});return c}function fi(a,b,c){var d=b.Ba();if(null!==d)for(var e=0;e<d.length;e++)c.push(d[e]);b.U(function(b){fi(a,b,c)})}function ai(a,b){var c=b.Ba();if(c){for(var d=0,e=0;e<c.length;e++)3!==c[e].status&&(c[d]=c[e],d++);c.length=d;Ef(b,0<c.length?c:null)}b.U(function(b){ai(a,b)})}
function Uh(a,b){var c=di(a,b).path(),d=Df(a.tc,b);Hf(d,function(b){gi(a,b)});gi(a,d);Gf(d,function(b){gi(a,b)});return c}
function gi(a,b){var c=b.Ba();if(null!==c){for(var d=[],e=[],f=-1,g=0;g<c.length;g++)4!==c[g].status&&(2===c[g].status?(J(f===g-1,"All SENT items should be at beginning of queue."),f=g,c[g].status=4,c[g].je="set"):(J(1===c[g].status,"Unexpected transaction status in abort"),c[g].ge(),e=e.concat(lf(a.O,c[g].Aa,!0)),c[g].J&&d.push(q(c[g].J,null,Error("set"),!1,null))));-1===f?Ef(b,null):c.length=f+1;zb(a.ea,b.path(),e);for(g=0;g<d.length;g++)Cb(d[g])}};function W(){this.nc={};this.Pf=!1}ca(W);W.prototype.yb=function(){for(var a in this.nc)this.nc[a].yb()};W.prototype.interrupt=W.prototype.yb;W.prototype.qc=function(){for(var a in this.nc)this.nc[a].qc()};W.prototype.resume=W.prototype.qc;W.prototype.ue=function(){this.Pf=!0};function X(a,b){this.ad=a;this.qa=b}X.prototype.cancel=function(a){x("Firebase.onDisconnect().cancel",0,1,arguments.length);A("Firebase.onDisconnect().cancel",1,a,!0);this.ad.Gd(this.qa,a||null)};X.prototype.cancel=X.prototype.cancel;X.prototype.remove=function(a){x("Firebase.onDisconnect().remove",0,1,arguments.length);Zf("Firebase.onDisconnect().remove",this.qa);A("Firebase.onDisconnect().remove",1,a,!0);Vh(this.ad,this.qa,null,a)};X.prototype.remove=X.prototype.remove;
X.prototype.set=function(a,b){x("Firebase.onDisconnect().set",1,2,arguments.length);Zf("Firebase.onDisconnect().set",this.qa);Sf("Firebase.onDisconnect().set",a,this.qa,!1);A("Firebase.onDisconnect().set",2,b,!0);Vh(this.ad,this.qa,a,b)};X.prototype.set=X.prototype.set;
X.prototype.Kb=function(a,b,c){x("Firebase.onDisconnect().setWithPriority",2,3,arguments.length);Zf("Firebase.onDisconnect().setWithPriority",this.qa);Sf("Firebase.onDisconnect().setWithPriority",a,this.qa,!1);Vf("Firebase.onDisconnect().setWithPriority",2,b);A("Firebase.onDisconnect().setWithPriority",3,c,!0);Wh(this.ad,this.qa,a,b,c)};X.prototype.setWithPriority=X.prototype.Kb;
X.prototype.update=function(a,b){x("Firebase.onDisconnect().update",1,2,arguments.length);Zf("Firebase.onDisconnect().update",this.qa);if(ea(a)){for(var c={},d=0;d<a.length;++d)c[""+d]=a[d];a=c;Q("Passing an Array to Firebase.onDisconnect().update() is deprecated. Use set() if you want to overwrite the existing data, or an Object with integer keys if you really do want to only update some of the children.")}Uf("Firebase.onDisconnect().update",a,this.qa);A("Firebase.onDisconnect().update",2,b,!0);
Xh(this.ad,this.qa,a,b)};X.prototype.update=X.prototype.update;function Y(a,b,c,d){this.k=a;this.path=b;this.o=c;this.jc=d}
function hi(a){var b=null,c=null;a.la&&(b=od(a));a.na&&(c=qd(a));if(a.g===Vd){if(a.la){if("[MIN_NAME]"!=nd(a))throw Error("Query: When ordering by key, you may only pass one argument to startAt(), endAt(), or equalTo().");if("string"!==typeof b)throw Error("Query: When ordering by key, the argument passed to startAt(), endAt(),or equalTo() must be a string.");}if(a.na){if("[MAX_NAME]"!=pd(a))throw Error("Query: When ordering by key, you may only pass one argument to startAt(), endAt(), or equalTo().");if("string"!==
typeof c)throw Error("Query: When ordering by key, the argument passed to startAt(), endAt(),or equalTo() must be a string.");}}else if(a.g===M){if(null!=b&&!Rf(b)||null!=c&&!Rf(c))throw Error("Query: When ordering by priority, the first argument passed to startAt(), endAt(), or equalTo() must be a valid priority value (null, a number, or a string).");}else if(J(a.g instanceof Rd||a.g===Yd,"unknown index type."),null!=b&&"object"===typeof b||null!=c&&"object"===typeof c)throw Error("Query: First argument passed to startAt(), endAt(), or equalTo() cannot be an object.");
}function ii(a){if(a.la&&a.na&&a.ia&&(!a.ia||""===a.Nb))throw Error("Query: Can't combine startAt(), endAt(), and limit(). Use limitToFirst() or limitToLast() instead.");}function ji(a,b){if(!0===a.jc)throw Error(b+": You can't combine multiple orderBy calls.");}Y.prototype.lc=function(){x("Query.ref",0,0,arguments.length);return new U(this.k,this.path)};Y.prototype.ref=Y.prototype.lc;
Y.prototype.Eb=function(a,b,c,d){x("Query.on",2,4,arguments.length);Wf("Query.on",a,!1);A("Query.on",2,b,!1);var e=ki("Query.on",c,d);if("value"===a)Yh(this.k,this,new jd(b,e.cancel||null,e.Ma||null));else{var f={};f[a]=b;Yh(this.k,this,new kd(f,e.cancel,e.Ma))}return b};Y.prototype.on=Y.prototype.Eb;
Y.prototype.gc=function(a,b,c){x("Query.off",0,3,arguments.length);Wf("Query.off",a,!0);A("Query.off",2,b,!0);lb("Query.off",3,c);var d=null,e=null;"value"===a?d=new jd(b||null,null,c||null):a&&(b&&(e={},e[a]=b),d=new kd(e,null,c||null));e=this.k;d=".info"===O(this.path)?e.zd.kb(this,d):e.O.kb(this,d);xb(e.ea,this.path,d)};Y.prototype.off=Y.prototype.gc;
Y.prototype.Ag=function(a,b){function c(g){f&&(f=!1,e.gc(a,c),b.call(d.Ma,g))}x("Query.once",2,4,arguments.length);Wf("Query.once",a,!1);A("Query.once",2,b,!1);var d=ki("Query.once",arguments[2],arguments[3]),e=this,f=!0;this.Eb(a,c,function(b){e.gc(a,c);d.cancel&&d.cancel.call(d.Ma,b)})};Y.prototype.once=Y.prototype.Ag;
Y.prototype.Ge=function(a){Q("Query.limit() being deprecated. Please use Query.limitToFirst() or Query.limitToLast() instead.");x("Query.limit",1,1,arguments.length);if(!ga(a)||Math.floor(a)!==a||0>=a)throw Error("Query.limit: First argument must be a positive integer.");if(this.o.ia)throw Error("Query.limit: Limit was already set (by another call to limit, limitToFirst, orlimitToLast.");var b=this.o.Ge(a);ii(b);return new Y(this.k,this.path,b,this.jc)};Y.prototype.limit=Y.prototype.Ge;
Y.prototype.He=function(a){x("Query.limitToFirst",1,1,arguments.length);if(!ga(a)||Math.floor(a)!==a||0>=a)throw Error("Query.limitToFirst: First argument must be a positive integer.");if(this.o.ia)throw Error("Query.limitToFirst: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");return new Y(this.k,this.path,this.o.He(a),this.jc)};Y.prototype.limitToFirst=Y.prototype.He;
Y.prototype.Ie=function(a){x("Query.limitToLast",1,1,arguments.length);if(!ga(a)||Math.floor(a)!==a||0>=a)throw Error("Query.limitToLast: First argument must be a positive integer.");if(this.o.ia)throw Error("Query.limitToLast: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");return new Y(this.k,this.path,this.o.Ie(a),this.jc)};Y.prototype.limitToLast=Y.prototype.Ie;
Y.prototype.Bg=function(a){x("Query.orderByChild",1,1,arguments.length);if("$key"===a)throw Error('Query.orderByChild: "$key" is invalid. Use Query.orderByKey() instead.');if("$priority"===a)throw Error('Query.orderByChild: "$priority" is invalid. Use Query.orderByPriority() instead.');if("$value"===a)throw Error('Query.orderByChild: "$value" is invalid. Use Query.orderByValue() instead.');Xf("Query.orderByChild",1,a,!1);ji(this,"Query.orderByChild");var b=be(this.o,new Rd(a));hi(b);return new Y(this.k,
this.path,b,!0)};Y.prototype.orderByChild=Y.prototype.Bg;Y.prototype.Cg=function(){x("Query.orderByKey",0,0,arguments.length);ji(this,"Query.orderByKey");var a=be(this.o,Vd);hi(a);return new Y(this.k,this.path,a,!0)};Y.prototype.orderByKey=Y.prototype.Cg;Y.prototype.Dg=function(){x("Query.orderByPriority",0,0,arguments.length);ji(this,"Query.orderByPriority");var a=be(this.o,M);hi(a);return new Y(this.k,this.path,a,!0)};Y.prototype.orderByPriority=Y.prototype.Dg;
Y.prototype.Eg=function(){x("Query.orderByValue",0,0,arguments.length);ji(this,"Query.orderByValue");var a=be(this.o,Yd);hi(a);return new Y(this.k,this.path,a,!0)};Y.prototype.orderByValue=Y.prototype.Eg;
Y.prototype.Xd=function(a,b){x("Query.startAt",0,2,arguments.length);Sf("Query.startAt",a,this.path,!0);Xf("Query.startAt",2,b,!0);var c=this.o.Xd(a,b);ii(c);hi(c);if(this.o.la)throw Error("Query.startAt: Starting point was already set (by another call to startAt or equalTo).");n(a)||(b=a=null);return new Y(this.k,this.path,c,this.jc)};Y.prototype.startAt=Y.prototype.Xd;
Y.prototype.qd=function(a,b){x("Query.endAt",0,2,arguments.length);Sf("Query.endAt",a,this.path,!0);Xf("Query.endAt",2,b,!0);var c=this.o.qd(a,b);ii(c);hi(c);if(this.o.na)throw Error("Query.endAt: Ending point was already set (by another call to endAt or equalTo).");return new Y(this.k,this.path,c,this.jc)};Y.prototype.endAt=Y.prototype.qd;
Y.prototype.hg=function(a,b){x("Query.equalTo",1,2,arguments.length);Sf("Query.equalTo",a,this.path,!1);Xf("Query.equalTo",2,b,!0);if(this.o.la)throw Error("Query.equalTo: Starting point was already set (by another call to endAt or equalTo).");if(this.o.na)throw Error("Query.equalTo: Ending point was already set (by another call to endAt or equalTo).");return this.Xd(a,b).qd(a,b)};Y.prototype.equalTo=Y.prototype.hg;
Y.prototype.toString=function(){x("Query.toString",0,0,arguments.length);for(var a=this.path,b="",c=a.Y;c<a.n.length;c++)""!==a.n[c]&&(b+="/"+encodeURIComponent(String(a.n[c])));return this.k.toString()+(b||"/")};Y.prototype.toString=Y.prototype.toString;Y.prototype.wa=function(){var a=Wc(ce(this.o));return"{}"===a?"default":a};
function ki(a,b,c){var d={cancel:null,Ma:null};if(b&&c)d.cancel=b,A(a,3,d.cancel,!0),d.Ma=c,lb(a,4,d.Ma);else if(b)if("object"===typeof b&&null!==b)d.Ma=b;else if("function"===typeof b)d.cancel=b;else throw Error(z(a,3,!0)+" must either be a cancel callback or a context object.");return d};var Z={};Z.vc=zh;Z.DataConnection=Z.vc;zh.prototype.Og=function(a,b){this.Da("q",{p:a},b)};Z.vc.prototype.simpleListen=Z.vc.prototype.Og;zh.prototype.gg=function(a,b){this.Da("echo",{d:a},b)};Z.vc.prototype.echo=Z.vc.prototype.gg;zh.prototype.interrupt=zh.prototype.yb;Z.Sf=nh;Z.RealTimeConnection=Z.Sf;nh.prototype.sendRequest=nh.prototype.Da;nh.prototype.close=nh.prototype.close;
Z.og=function(a){var b=zh.prototype.put;zh.prototype.put=function(c,d,e,f){n(f)&&(f=a());b.call(this,c,d,e,f)};return function(){zh.prototype.put=b}};Z.hijackHash=Z.og;Z.Rf=Ec;Z.ConnectionTarget=Z.Rf;Z.wa=function(a){return a.wa()};Z.queryIdentifier=Z.wa;Z.qg=function(a){return a.k.Ra.aa};Z.listens=Z.qg;Z.ue=function(a){a.ue()};Z.forceRestClient=Z.ue;function U(a,b){var c,d,e;if(a instanceof Nh)c=a,d=b;else{x("new Firebase",1,2,arguments.length);d=Rc(arguments[0]);c=d.Qg;"firebase"===d.domain&&Qc(d.host+" is no longer supported. Please use <YOUR FIREBASE>.firebaseio.com instead");c&&"undefined"!=c||Qc("Cannot parse Firebase url. Please use https://<YOUR FIREBASE>.firebaseio.com");d.lb||"undefined"!==typeof window&&window.location&&window.location.protocol&&-1!==window.location.protocol.indexOf("https:")&&Q("Insecure Firebase access from a secure page. Please use https in calls to new Firebase().");
c=new Ec(d.host,d.lb,c,"ws"===d.scheme||"wss"===d.scheme);d=new K(d.Zc);e=d.toString();var f;!(f=!p(c.host)||0===c.host.length||!Qf(c.Cb))&&(f=0!==e.length)&&(e&&(e=e.replace(/^\/*\.info(\/|$)/,"/")),f=!(p(e)&&0!==e.length&&!Of.test(e)));if(f)throw Error(z("new Firebase",1,!1)+'must be a valid firebase URL and the path can\'t contain ".", "#", "$", "[", or "]".');if(b)if(b instanceof W)e=b;else if(p(b))e=W.ub(),c.Ld=b;else throw Error("Expected a valid Firebase.Context for second argument to new Firebase()");
else e=W.ub();f=c.toString();var g=w(e.nc,f);g||(g=new Nh(c,e.Pf),e.nc[f]=g);c=g}Y.call(this,c,d,$d,!1)}ma(U,Y);var li=U,mi=["Firebase"],ni=aa;mi[0]in ni||!ni.execScript||ni.execScript("var "+mi[0]);for(var oi;mi.length&&(oi=mi.shift());)!mi.length&&n(li)?ni[oi]=li:ni=ni[oi]?ni[oi]:ni[oi]={};U.prototype.name=function(){Q("Firebase.name() being deprecated. Please use Firebase.key() instead.");x("Firebase.name",0,0,arguments.length);return this.key()};U.prototype.name=U.prototype.name;
U.prototype.key=function(){x("Firebase.key",0,0,arguments.length);return this.path.e()?null:vc(this.path)};U.prototype.key=U.prototype.key;U.prototype.w=function(a){x("Firebase.child",1,1,arguments.length);if(ga(a))a=String(a);else if(!(a instanceof K))if(null===O(this.path)){var b=a;b&&(b=b.replace(/^\/*\.info(\/|$)/,"/"));Yf("Firebase.child",b)}else Yf("Firebase.child",a);return new U(this.k,this.path.w(a))};U.prototype.child=U.prototype.w;
U.prototype.parent=function(){x("Firebase.parent",0,0,arguments.length);var a=this.path.parent();return null===a?null:new U(this.k,a)};U.prototype.parent=U.prototype.parent;U.prototype.root=function(){x("Firebase.ref",0,0,arguments.length);for(var a=this;null!==a.parent();)a=a.parent();return a};U.prototype.root=U.prototype.root;
U.prototype.set=function(a,b){x("Firebase.set",1,2,arguments.length);Zf("Firebase.set",this.path);Sf("Firebase.set",a,this.path,!1);A("Firebase.set",2,b,!0);this.k.Kb(this.path,a,null,b||null)};U.prototype.set=U.prototype.set;
U.prototype.update=function(a,b){x("Firebase.update",1,2,arguments.length);Zf("Firebase.update",this.path);if(ea(a)){for(var c={},d=0;d<a.length;++d)c[""+d]=a[d];a=c;Q("Passing an Array to Firebase.update() is deprecated. Use set() if you want to overwrite the existing data, or an Object with integer keys if you really do want to only update some of the children.")}Uf("Firebase.update",a,this.path);A("Firebase.update",2,b,!0);this.k.update(this.path,a,b||null)};U.prototype.update=U.prototype.update;
U.prototype.Kb=function(a,b,c){x("Firebase.setWithPriority",2,3,arguments.length);Zf("Firebase.setWithPriority",this.path);Sf("Firebase.setWithPriority",a,this.path,!1);Vf("Firebase.setWithPriority",2,b);A("Firebase.setWithPriority",3,c,!0);if(".length"===this.key()||".keys"===this.key())throw"Firebase.setWithPriority failed: "+this.key()+" is a read-only object.";this.k.Kb(this.path,a,b,c||null)};U.prototype.setWithPriority=U.prototype.Kb;
U.prototype.remove=function(a){x("Firebase.remove",0,1,arguments.length);Zf("Firebase.remove",this.path);A("Firebase.remove",1,a,!0);this.set(null,a)};U.prototype.remove=U.prototype.remove;
U.prototype.transaction=function(a,b,c){x("Firebase.transaction",1,3,arguments.length);Zf("Firebase.transaction",this.path);A("Firebase.transaction",1,a,!1);A("Firebase.transaction",2,b,!0);if(n(c)&&"boolean"!=typeof c)throw Error(z("Firebase.transaction",3,!0)+"must be a boolean.");if(".length"===this.key()||".keys"===this.key())throw"Firebase.transaction failed: "+this.key()+" is a read-only object.";"undefined"===typeof c&&(c=!0);Zh(this.k,this.path,a,b||null,c)};U.prototype.transaction=U.prototype.transaction;
U.prototype.Lg=function(a,b){x("Firebase.setPriority",1,2,arguments.length);Zf("Firebase.setPriority",this.path);Vf("Firebase.setPriority",1,a);A("Firebase.setPriority",2,b,!0);this.k.Kb(this.path.w(".priority"),a,null,b)};U.prototype.setPriority=U.prototype.Lg;
U.prototype.push=function(a,b){x("Firebase.push",0,2,arguments.length);Zf("Firebase.push",this.path);Sf("Firebase.push",a,this.path,!0);A("Firebase.push",2,b,!0);var c=Ph(this.k),c=Kf(c),c=this.w(c);"undefined"!==typeof a&&null!==a&&c.set(a,b);return c};U.prototype.push=U.prototype.push;U.prototype.jb=function(){Zf("Firebase.onDisconnect",this.path);return new X(this.k,this.path)};U.prototype.onDisconnect=U.prototype.jb;
U.prototype.P=function(a,b,c){Q("FirebaseRef.auth() being deprecated. Please use FirebaseRef.authWithCustomToken() instead.");x("Firebase.auth",1,3,arguments.length);$f("Firebase.auth",a);A("Firebase.auth",2,b,!0);A("Firebase.auth",3,b,!0);Ng(this.k.P,a,{},{remember:"none"},b,c)};U.prototype.auth=U.prototype.P;U.prototype.ee=function(a){x("Firebase.unauth",0,1,arguments.length);A("Firebase.unauth",1,a,!0);Og(this.k.P,a)};U.prototype.unauth=U.prototype.ee;
U.prototype.we=function(){x("Firebase.getAuth",0,0,arguments.length);return this.k.P.we()};U.prototype.getAuth=U.prototype.we;U.prototype.ug=function(a,b){x("Firebase.onAuth",1,2,arguments.length);A("Firebase.onAuth",1,a,!1);lb("Firebase.onAuth",2,b);this.k.P.Eb("auth_status",a,b)};U.prototype.onAuth=U.prototype.ug;U.prototype.tg=function(a,b){x("Firebase.offAuth",1,2,arguments.length);A("Firebase.offAuth",1,a,!1);lb("Firebase.offAuth",2,b);this.k.P.gc("auth_status",a,b)};U.prototype.offAuth=U.prototype.tg;
U.prototype.Wf=function(a,b,c){x("Firebase.authWithCustomToken",2,3,arguments.length);$f("Firebase.authWithCustomToken",a);A("Firebase.authWithCustomToken",2,b,!1);cg("Firebase.authWithCustomToken",3,c,!0);Ng(this.k.P,a,{},c||{},b)};U.prototype.authWithCustomToken=U.prototype.Wf;U.prototype.Xf=function(a,b,c){x("Firebase.authWithOAuthPopup",2,3,arguments.length);bg("Firebase.authWithOAuthPopup",a);A("Firebase.authWithOAuthPopup",2,b,!1);cg("Firebase.authWithOAuthPopup",3,c,!0);Sg(this.k.P,a,c,b)};
U.prototype.authWithOAuthPopup=U.prototype.Xf;U.prototype.Yf=function(a,b,c){x("Firebase.authWithOAuthRedirect",2,3,arguments.length);bg("Firebase.authWithOAuthRedirect",a);A("Firebase.authWithOAuthRedirect",2,b,!1);cg("Firebase.authWithOAuthRedirect",3,c,!0);var d=this.k.P;Qg(d);var e=[zg],f=kg(c);"anonymous"===a||"firebase"===a?R(b,Bg("TRANSPORT_UNAVAILABLE")):(P.set("redirect_client_options",f.ld),Rg(d,e,"/auth/"+a,f,b))};U.prototype.authWithOAuthRedirect=U.prototype.Yf;
U.prototype.Zf=function(a,b,c,d){x("Firebase.authWithOAuthToken",3,4,arguments.length);bg("Firebase.authWithOAuthToken",a);A("Firebase.authWithOAuthToken",3,c,!1);cg("Firebase.authWithOAuthToken",4,d,!0);p(b)?(ag("Firebase.authWithOAuthToken",2,b),Pg(this.k.P,a+"/token",{access_token:b},d,c)):(cg("Firebase.authWithOAuthToken",2,b,!1),Pg(this.k.P,a+"/token",b,d,c))};U.prototype.authWithOAuthToken=U.prototype.Zf;
U.prototype.Vf=function(a,b){x("Firebase.authAnonymously",1,2,arguments.length);A("Firebase.authAnonymously",1,a,!1);cg("Firebase.authAnonymously",2,b,!0);Pg(this.k.P,"anonymous",{},b,a)};U.prototype.authAnonymously=U.prototype.Vf;
U.prototype.$f=function(a,b,c){x("Firebase.authWithPassword",2,3,arguments.length);cg("Firebase.authWithPassword",1,a,!1);dg("Firebase.authWithPassword",a,"email");dg("Firebase.authWithPassword",a,"password");A("Firebase.authWithPassword",2,b,!1);cg("Firebase.authWithPassword",3,c,!0);Pg(this.k.P,"password",a,c,b)};U.prototype.authWithPassword=U.prototype.$f;
U.prototype.re=function(a,b){x("Firebase.createUser",2,2,arguments.length);cg("Firebase.createUser",1,a,!1);dg("Firebase.createUser",a,"email");dg("Firebase.createUser",a,"password");A("Firebase.createUser",2,b,!1);this.k.P.re(a,b)};U.prototype.createUser=U.prototype.re;U.prototype.Se=function(a,b){x("Firebase.removeUser",2,2,arguments.length);cg("Firebase.removeUser",1,a,!1);dg("Firebase.removeUser",a,"email");dg("Firebase.removeUser",a,"password");A("Firebase.removeUser",2,b,!1);this.k.P.Se(a,b)};
U.prototype.removeUser=U.prototype.Se;U.prototype.oe=function(a,b){x("Firebase.changePassword",2,2,arguments.length);cg("Firebase.changePassword",1,a,!1);dg("Firebase.changePassword",a,"email");dg("Firebase.changePassword",a,"oldPassword");dg("Firebase.changePassword",a,"newPassword");A("Firebase.changePassword",2,b,!1);this.k.P.oe(a,b)};U.prototype.changePassword=U.prototype.oe;
U.prototype.ne=function(a,b){x("Firebase.changeEmail",2,2,arguments.length);cg("Firebase.changeEmail",1,a,!1);dg("Firebase.changeEmail",a,"oldEmail");dg("Firebase.changeEmail",a,"newEmail");dg("Firebase.changeEmail",a,"password");A("Firebase.changeEmail",2,b,!1);this.k.P.ne(a,b)};U.prototype.changeEmail=U.prototype.ne;
U.prototype.Ue=function(a,b){x("Firebase.resetPassword",2,2,arguments.length);cg("Firebase.resetPassword",1,a,!1);dg("Firebase.resetPassword",a,"email");A("Firebase.resetPassword",2,b,!1);this.k.P.Ue(a,b)};U.prototype.resetPassword=U.prototype.Ue;U.goOffline=function(){x("Firebase.goOffline",0,0,arguments.length);W.ub().yb()};U.goOnline=function(){x("Firebase.goOnline",0,0,arguments.length);W.ub().qc()};
function Nc(a,b){J(!b||!0===a||!1===a,"Can't turn on custom loggers persistently.");!0===a?("undefined"!==typeof console&&("function"===typeof console.log?Ab=q(console.log,console):"object"===typeof console.log&&(Ab=function(a){console.log(a)})),b&&P.set("logging_enabled",!0)):a?Ab=a:(Ab=null,P.remove("logging_enabled"))}U.enableLogging=Nc;U.ServerValue={TIMESTAMP:{".sv":"timestamp"}};U.SDK_VERSION="2.2.7";U.INTERNAL=V;U.Context=W;U.TEST_ACCESS=Z;})();
module.exports = Firebase;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment