{"version":3,"file":"static/scripts/vendor.5f2ce81316122a835f2e.js","mappings":"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","sources":["webpack://app-publicsite-static/./node_modules/accounting/accounting.js","webpack://app-publicsite-static/./node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js","webpack://app-publicsite-static/./node_modules/bootstrap-sass/assets/javascripts/bootstrap.js","webpack://app-publicsite-static/./node_modules/d3/d3.js","webpack://app-publicsite-static/./node_modules/fontfaceobserver/fontfaceobserver.standalone.js","webpack://app-publicsite-static/./node_modules/jquery.animate-number/jquery.animateNumber.js","webpack://app-publicsite-static/./node_modules/jquery/dist/jquery.js","webpack://app-publicsite-static/./node_modules/moment/moment.js","webpack://app-publicsite-static/./node_modules/nod-validate/nod.js","webpack://app-publicsite-static/./node_modules/promise-polyfill/src/finally.js","webpack://app-publicsite-static/./node_modules/promise-polyfill/src/allSettled.js","webpack://app-publicsite-static/./node_modules/promise-polyfill/src/index.js","webpack://app-publicsite-static/./node_modules/promise-polyfill/src/polyfill.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_setup.js","webpack://app-publicsite-static/./node_modules/underscore/modules/restArguments.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isObject.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isNull.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isUndefined.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isBoolean.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isElement.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_tagTester.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isString.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isNumber.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isDate.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isRegExp.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isError.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isSymbol.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isArrayBuffer.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isFunction.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_hasObjectTag.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_stringTagBug.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isDataView.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isArray.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_has.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isArguments.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isFinite.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isNaN.js","webpack://app-publicsite-static/./node_modules/underscore/modules/constant.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_createSizePropertyCheck.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_shallowProperty.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_getByteLength.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_isBufferLike.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isTypedArray.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_getLength.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_collectNonEnumProps.js","webpack://app-publicsite-static/./node_modules/underscore/modules/keys.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isEmpty.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isMatch.js","webpack://app-publicsite-static/./node_modules/underscore/modules/underscore.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_toBufferView.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isEqual.js","webpack://app-publicsite-static/./node_modules/underscore/modules/allKeys.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_methodFingerprint.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isMap.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isWeakMap.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isSet.js","webpack://app-publicsite-static/./node_modules/underscore/modules/isWeakSet.js","webpack://app-publicsite-static/./node_modules/underscore/modules/values.js","webpack://app-publicsite-static/./node_modules/underscore/modules/pairs.js","webpack://app-publicsite-static/./node_modules/underscore/modules/invert.js","webpack://app-publicsite-static/./node_modules/underscore/modules/functions.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_createAssigner.js","webpack://app-publicsite-static/./node_modules/underscore/modules/extend.js","webpack://app-publicsite-static/./node_modules/underscore/modules/extendOwn.js","webpack://app-publicsite-static/./node_modules/underscore/modules/defaults.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_baseCreate.js","webpack://app-publicsite-static/./node_modules/underscore/modules/create.js","webpack://app-publicsite-static/./node_modules/underscore/modules/clone.js","webpack://app-publicsite-static/./node_modules/underscore/modules/tap.js","webpack://app-publicsite-static/./node_modules/underscore/modules/toPath.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_toPath.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_deepGet.js","webpack://app-publicsite-static/./node_modules/underscore/modules/get.js","webpack://app-publicsite-static/./node_modules/underscore/modules/has.js","webpack://app-publicsite-static/./node_modules/underscore/modules/identity.js","webpack://app-publicsite-static/./node_modules/underscore/modules/matcher.js","webpack://app-publicsite-static/./node_modules/underscore/modules/property.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_optimizeCb.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_baseIteratee.js","webpack://app-publicsite-static/./node_modules/underscore/modules/iteratee.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_cb.js","webpack://app-publicsite-static/./node_modules/underscore/modules/mapObject.js","webpack://app-publicsite-static/./node_modules/underscore/modules/noop.js","webpack://app-publicsite-static/./node_modules/underscore/modules/propertyOf.js","webpack://app-publicsite-static/./node_modules/underscore/modules/times.js","webpack://app-publicsite-static/./node_modules/underscore/modules/random.js","webpack://app-publicsite-static/./node_modules/underscore/modules/now.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_createEscaper.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_escapeMap.js","webpack://app-publicsite-static/./node_modules/underscore/modules/escape.js","webpack://app-publicsite-static/./node_modules/underscore/modules/unescape.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_unescapeMap.js","webpack://app-publicsite-static/./node_modules/underscore/modules/templateSettings.js","webpack://app-publicsite-static/./node_modules/underscore/modules/template.js","webpack://app-publicsite-static/./node_modules/underscore/modules/result.js","webpack://app-publicsite-static/./node_modules/underscore/modules/uniqueId.js","webpack://app-publicsite-static/./node_modules/underscore/modules/chain.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_executeBound.js","webpack://app-publicsite-static/./node_modules/underscore/modules/partial.js","webpack://app-publicsite-static/./node_modules/underscore/modules/bind.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_isArrayLike.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_flatten.js","webpack://app-publicsite-static/./node_modules/underscore/modules/bindAll.js","webpack://app-publicsite-static/./node_modules/underscore/modules/memoize.js","webpack://app-publicsite-static/./node_modules/underscore/modules/delay.js","webpack://app-publicsite-static/./node_modules/underscore/modules/defer.js","webpack://app-publicsite-static/./node_modules/underscore/modules/throttle.js","webpack://app-publicsite-static/./node_modules/underscore/modules/debounce.js","webpack://app-publicsite-static/./node_modules/underscore/modules/wrap.js","webpack://app-publicsite-static/./node_modules/underscore/modules/negate.js","webpack://app-publicsite-static/./node_modules/underscore/modules/compose.js","webpack://app-publicsite-static/./node_modules/underscore/modules/after.js","webpack://app-publicsite-static/./node_modules/underscore/modules/before.js","webpack://app-publicsite-static/./node_modules/underscore/modules/once.js","webpack://app-publicsite-static/./node_modules/underscore/modules/findKey.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack://app-publicsite-static/./node_modules/underscore/modules/findIndex.js","webpack://app-publicsite-static/./node_modules/underscore/modules/findLastIndex.js","webpack://app-publicsite-static/./node_modules/underscore/modules/sortedIndex.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_createIndexFinder.js","webpack://app-publicsite-static/./node_modules/underscore/modules/indexOf.js","webpack://app-publicsite-static/./node_modules/underscore/modules/lastIndexOf.js","webpack://app-publicsite-static/./node_modules/underscore/modules/find.js","webpack://app-publicsite-static/./node_modules/underscore/modules/findWhere.js","webpack://app-publicsite-static/./node_modules/underscore/modules/each.js","webpack://app-publicsite-static/./node_modules/underscore/modules/map.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_createReduce.js","webpack://app-publicsite-static/./node_modules/underscore/modules/reduce.js","webpack://app-publicsite-static/./node_modules/underscore/modules/reduceRight.js","webpack://app-publicsite-static/./node_modules/underscore/modules/filter.js","webpack://app-publicsite-static/./node_modules/underscore/modules/reject.js","webpack://app-publicsite-static/./node_modules/underscore/modules/every.js","webpack://app-publicsite-static/./node_modules/underscore/modules/some.js","webpack://app-publicsite-static/./node_modules/underscore/modules/contains.js","webpack://app-publicsite-static/./node_modules/underscore/modules/invoke.js","webpack://app-publicsite-static/./node_modules/underscore/modules/pluck.js","webpack://app-publicsite-static/./node_modules/underscore/modules/where.js","webpack://app-publicsite-static/./node_modules/underscore/modules/max.js","webpack://app-publicsite-static/./node_modules/underscore/modules/min.js","webpack://app-publicsite-static/./node_modules/underscore/modules/toArray.js","webpack://app-publicsite-static/./node_modules/underscore/modules/sample.js","webpack://app-publicsite-static/./node_modules/underscore/modules/shuffle.js","webpack://app-publicsite-static/./node_modules/underscore/modules/sortBy.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_group.js","webpack://app-publicsite-static/./node_modules/underscore/modules/groupBy.js","webpack://app-publicsite-static/./node_modules/underscore/modules/indexBy.js","webpack://app-publicsite-static/./node_modules/underscore/modules/countBy.js","webpack://app-publicsite-static/./node_modules/underscore/modules/partition.js","webpack://app-publicsite-static/./node_modules/underscore/modules/size.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_keyInObj.js","webpack://app-publicsite-static/./node_modules/underscore/modules/pick.js","webpack://app-publicsite-static/./node_modules/underscore/modules/omit.js","webpack://app-publicsite-static/./node_modules/underscore/modules/initial.js","webpack://app-publicsite-static/./node_modules/underscore/modules/first.js","webpack://app-publicsite-static/./node_modules/underscore/modules/rest.js","webpack://app-publicsite-static/./node_modules/underscore/modules/last.js","webpack://app-publicsite-static/./node_modules/underscore/modules/compact.js","webpack://app-publicsite-static/./node_modules/underscore/modules/flatten.js","webpack://app-publicsite-static/./node_modules/underscore/modules/difference.js","webpack://app-publicsite-static/./node_modules/underscore/modules/without.js","webpack://app-publicsite-static/./node_modules/underscore/modules/uniq.js","webpack://app-publicsite-static/./node_modules/underscore/modules/union.js","webpack://app-publicsite-static/./node_modules/underscore/modules/intersection.js","webpack://app-publicsite-static/./node_modules/underscore/modules/unzip.js","webpack://app-publicsite-static/./node_modules/underscore/modules/zip.js","webpack://app-publicsite-static/./node_modules/underscore/modules/object.js","webpack://app-publicsite-static/./node_modules/underscore/modules/range.js","webpack://app-publicsite-static/./node_modules/underscore/modules/chunk.js","webpack://app-publicsite-static/./node_modules/underscore/modules/_chainResult.js","webpack://app-publicsite-static/./node_modules/underscore/modules/mixin.js","webpack://app-publicsite-static/./node_modules/underscore/modules/underscore-array-methods.js","webpack://app-publicsite-static/./node_modules/underscore/modules/index-default.js"],"sourcesContent":["/*!\n * accounting.js v0.3.2\n * Copyright 2011, Joss Crowcroft\n *\n * Freely distributable under the MIT license.\n * Portions of accounting.js are inspired or borrowed from underscore.js\n *\n * Full details and documentation:\n * http://josscrowcroft.github.com/accounting.js/\n */\n\n(function(root, undefined) {\n\n\t/* --- Setup --- */\n\n\t// Create the local library object, to be exported or referenced globally later\n\tvar lib = {};\n\n\t// Current version\n\tlib.version = '0.3.2';\n\n\n\t/* --- Exposed settings --- */\n\n\t// The library's settings configuration object. Contains default parameters for\n\t// currency and number formatting\n\tlib.settings = {\n\t\tcurrency: {\n\t\t\tsymbol : \"$\",\t\t// default currency symbol is '$'\n\t\t\tformat : \"%s%v\",\t// controls output: %s = symbol, %v = value (can be object, see docs)\n\t\t\tdecimal : \".\",\t\t// decimal point separator\n\t\t\tthousand : \",\",\t\t// thousands separator\n\t\t\tprecision : 2,\t\t// decimal places\n\t\t\tgrouping : 3\t\t// digit grouping (not implemented yet)\n\t\t},\n\t\tnumber: {\n\t\t\tprecision : 0,\t\t// default precision on numbers is 0\n\t\t\tgrouping : 3,\t\t// digit grouping (not implemented yet)\n\t\t\tthousand : \",\",\n\t\t\tdecimal : \".\"\n\t\t}\n\t};\n\n\n\t/* --- Internal Helper Methods --- */\n\n\t// Store reference to possibly-available ECMAScript 5 methods for later\n\tvar nativeMap = Array.prototype.map,\n\t\tnativeIsArray = Array.isArray,\n\t\ttoString = Object.prototype.toString;\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js\n\t */\n\tfunction isString(obj) {\n\t\treturn !!(obj === '' || (obj && obj.charCodeAt && obj.substr));\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js, delegates to ECMA5's native Array.isArray\n\t */\n\tfunction isArray(obj) {\n\t\treturn nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === '[object Array]';\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a true object\n\t */\n\tfunction isObject(obj) {\n\t\treturn toString.call(obj) === '[object Object]';\n\t}\n\n\t/**\n\t * Extends an object with a defaults object, similar to underscore's _.defaults\n\t *\n\t * Used for abstracting parameter handling from API methods\n\t */\n\tfunction defaults(object, defs) {\n\t\tvar key;\n\t\tobject = object || {};\n\t\tdefs = defs || {};\n\t\t// Iterate over object non-prototype properties:\n\t\tfor (key in defs) {\n\t\t\tif (defs.hasOwnProperty(key)) {\n\t\t\t\t// Replace values with defaults only if undefined (allow empty/zero values):\n\t\t\t\tif (object[key] == null) object[key] = defs[key];\n\t\t\t}\n\t\t}\n\t\treturn object;\n\t}\n\n\t/**\n\t * Implementation of `Array.map()` for iteration loops\n\t *\n\t * Returns a new Array as a result of calling `iterator` on each array value.\n\t * Defers to native Array.map if available\n\t */\n\tfunction map(obj, iterator, context) {\n\t\tvar results = [], i, j;\n\n\t\tif (!obj) return results;\n\n\t\t// Use native .map method if it exists:\n\t\tif (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n\n\t\t// Fallback for native .map:\n\t\tfor (i = 0, j = obj.length; i < j; i++ ) {\n\t\t\tresults[i] = iterator.call(context, obj[i], i, obj);\n\t\t}\n\t\treturn results;\n\t}\n\n\t/**\n\t * Check and normalise the value of precision (must be positive integer)\n\t */\n\tfunction checkPrecision(val, base) {\n\t\tval = Math.round(Math.abs(val));\n\t\treturn isNaN(val)? base : val;\n\t}\n\n\n\t/**\n\t * Parses a format string or object and returns format obj for use in rendering\n\t *\n\t * `format` is either a string with the default (positive) format, or object\n\t * containing `pos` (required), `neg` and `zero` values (or a function returning\n\t * either a string or object)\n\t *\n\t * Either string or format.pos must contain \"%v\" (value) to be valid\n\t */\n\tfunction checkCurrencyFormat(format) {\n\t\tvar defaults = lib.settings.currency.format;\n\n\t\t// Allow function as format parameter (should return string or object):\n\t\tif ( typeof format === \"function\" ) format = format();\n\n\t\t// Format can be a string, in which case `value` (\"%v\") must be present:\n\t\tif ( isString( format ) && format.match(\"%v\") ) {\n\n\t\t\t// Create and return positive, negative and zero formats:\n\t\t\treturn {\n\t\t\t\tpos : format,\n\t\t\t\tneg : format.replace(\"-\", \"\").replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : format\n\t\t\t};\n\n\t\t// If no format, or object is missing valid positive value, use defaults:\n\t\t} else if ( !format || !format.pos || !format.pos.match(\"%v\") ) {\n\n\t\t\t// If defaults is a string, casts it to an object for faster checking next time:\n\t\t\treturn ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {\n\t\t\t\tpos : defaults,\n\t\t\t\tneg : defaults.replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : defaults\n\t\t\t};\n\n\t\t}\n\t\t// Otherwise, assume format was fine:\n\t\treturn format;\n\t}\n\n\n\t/* --- API Methods --- */\n\n\t/**\n\t * Takes a string/array of strings, removes all formatting/cruft and returns the raw float value\n\t * alias: accounting.`parse(string)`\n\t *\n\t * Decimal must be included in the regular expression to match floats (default: \".\"), so if the number\n\t * uses a non-standard decimal separator, provide it as the second argument.\n\t *\n\t * Also matches bracketed negatives (eg. \"$ (1.99)\" => -1.99)\n\t *\n\t * Doesn't throw any errors (`NaN`s become 0) but this may change in future\n\t */\n\tvar unformat = lib.unformat = lib.parse = function(value, decimal) {\n\t\t// Recursively unformat arrays:\n\t\tif (isArray(value)) {\n\t\t\treturn map(value, function(val) {\n\t\t\t\treturn unformat(val, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Fails silently (need decent errors):\n\t\tvalue = value || 0;\n\n\t\t// Return the value as-is if it's already a number:\n\t\tif (typeof value === \"number\") return value;\n\n\t\t// Default decimal point is \".\" but could be set to eg. \",\" in opts:\n\t\tdecimal = decimal || \".\";\n\n\t\t // Build regex to strip out everything except digits, decimal point and minus sign:\n\t\tvar regex = new RegExp(\"[^0-9-\" + decimal + \"]\", [\"g\"]),\n\t\t\tunformatted = parseFloat(\n\t\t\t\t(\"\" + value)\n\t\t\t\t.replace(/\\((.*)\\)/, \"-$1\") // replace bracketed values with negatives\n\t\t\t\t.replace(regex, '') // strip out any cruft\n\t\t\t\t.replace(decimal, '.') // make sure decimal point is standard\n\t\t\t);\n\n\t\t// This will fail silently which may cause trouble, let's wait and see:\n\t\treturn !isNaN(unformatted) ? unformatted : 0;\n\t};\n\n\n\t/**\n\t * Implementation of toFixed() that treats floats more like decimals\n\t *\n\t * Fixes binary rounding issues (eg. (0.615).toFixed(2) === \"0.61\") that present\n\t * problems for accounting- and finance-related software.\n\t */\n\tvar toFixed = lib.toFixed = function(value, precision) {\n\t\tprecision = checkPrecision(precision, lib.settings.number.precision);\n\t\tvar power = Math.pow(10, precision);\n\n\t\t// Multiply up by precision, round accurately, then divide and use native toFixed():\n\t\treturn (Math.round(lib.unformat(value) * power) / power).toFixed(precision);\n\t};\n\n\n\t/**\n\t * Format a number, with comma-separated thousands and custom precision/decimal places\n\t *\n\t * Localise by overriding the precision and thousand / decimal separators\n\t * 2nd parameter `precision` can be an object matching `settings.number`\n\t */\n\tvar formatNumber = lib.formatNumber = function(number, precision, thousand, decimal) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val) {\n\t\t\t\treturn formatNumber(val, precision, thousand, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(precision) ? precision : {\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal\n\t\t\t\t}),\n\t\t\t\tlib.settings.number\n\t\t\t),\n\n\t\t\t// Clean up precision\n\t\t\tusePrecision = checkPrecision(opts.precision),\n\n\t\t\t// Do some calc:\n\t\t\tnegative = number < 0 ? \"-\" : \"\",\n\t\t\tbase = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + \"\",\n\t\t\tmod = base.length > 3 ? base.length % 3 : 0;\n\n\t\t// Format the number:\n\t\treturn negative + (mod ? base.substr(0, mod) + opts.thousand : \"\") + base.substr(mod).replace(/(\\d{3})(?=\\d)/g, \"$1\" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split('.')[1] : \"\");\n\t};\n\n\n\t/**\n\t * Format a number into currency\n\t *\n\t * Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)\n\t * defaults: (0, \"$\", 2, \",\", \".\", \"%s%v\")\n\t *\n\t * Localise by overriding the symbol, precision, thousand / decimal separators and format\n\t * Second param can be an object matching `settings.currency` which is the easiest way.\n\t *\n\t * To do: tidy up the parameters\n\t */\n\tvar formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val){\n\t\t\t\treturn formatMoney(val, symbol, precision, thousand, decimal, format);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero):\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Choose which format to use for this value:\n\t\t\tuseFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;\n\n\t\t// Return with currency symbol added:\n\t\treturn useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\t};\n\n\n\t/**\n\t * Format a list of numbers into an accounting column, padding with whitespace\n\t * to line up currency symbols, thousand separators and decimals places\n\t *\n\t * List should be an array of numbers\n\t * Second parameter can be an object containing keys that match the params\n\t *\n\t * Returns array of accouting-formatted number strings of same length\n\t *\n\t * NB: `white-space:pre` CSS rule is required on the list container to prevent\n\t * browsers from collapsing the whitespace in the output strings.\n\t */\n\tlib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {\n\t\tif (!list) return [];\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero), only need pos for now:\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Whether to pad at start of string or after currency symbol:\n\t\t\tpadAfterSymbol = formats.pos.indexOf(\"%s\") < formats.pos.indexOf(\"%v\") ? true : false,\n\n\t\t\t// Store value for the length of the longest string in the column:\n\t\t\tmaxLength = 0,\n\n\t\t\t// Format the list according to options, store the length of the longest string:\n\t\t\tformatted = map(list, function(val, i) {\n\t\t\t\tif (isArray(val)) {\n\t\t\t\t\t// Recursively format columns if list is a multi-dimensional array:\n\t\t\t\t\treturn lib.formatColumn(val, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// Clean up the value\n\t\t\t\t\tval = unformat(val);\n\n\t\t\t\t\t// Choose which format to use for this value (pos, neg or zero):\n\t\t\t\t\tvar useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero,\n\n\t\t\t\t\t\t// Format this value, push into formatted list and save the length:\n\t\t\t\t\t\tfVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\n\t\t\t\t\tif (fVal.length > maxLength) maxLength = fVal.length;\n\t\t\t\t\treturn fVal;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Pad each number in the list and send back the column of numbers:\n\t\treturn map(formatted, function(val, i) {\n\t\t\t// Only if this is a string (not a nested array, which would have already been padded):\n\t\t\tif (isString(val) && val.length < maxLength) {\n\t\t\t\t// Depending on symbol position, pad after symbol or at index 0:\n\t\t\t\treturn padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(\" \"))) : (new Array(maxLength - val.length + 1).join(\" \")) + val;\n\t\t\t}\n\t\t\treturn val;\n\t\t});\n\t};\n\n\n\t/* --- Module Definition --- */\n\n\t// Export accounting for CommonJS. If being loaded as an AMD module, define it as such.\n\t// Otherwise, just add `accounting` to the global object\n\tif (typeof exports !== 'undefined') {\n\t\tif (typeof module !== 'undefined' && module.exports) {\n\t\t\texports = module.exports = lib;\n\t\t}\n\t\texports.accounting = lib;\n\t} else if (typeof define === 'function' && define.amd) {\n\t\t// Return the library as an AMD module:\n\t\tdefine([], function() {\n\t\t\treturn lib;\n\t\t});\n\t} else {\n\t\t// Use accounting.noConflict to restore `accounting` back to its original value.\n\t\t// Returns a reference to the library's `accounting` object;\n\t\t// e.g. `var numbers = accounting.noConflict();`\n\t\tlib.noConflict = (function(oldAccounting) {\n\t\t\treturn function() {\n\t\t\t\t// Reset the value of the root's `accounting` variable:\n\t\t\t\troot.accounting = oldAccounting;\n\t\t\t\t// Delete the noConflict method:\n\t\t\t\tlib.noConflict = undefined;\n\t\t\t\t// Return reference to the library to re-assign it:\n\t\t\t\treturn lib;\n\t\t\t};\n\t\t})(root.accounting);\n\n\t\t// Declare `fx` on the root (global/window) object:\n\t\troot['accounting'] = lib;\n\t}\n\n\t// Root will be `window` in browser or `global` on the server:\n}(this));\n","/*!\n * Datepicker for Bootstrap v1.9.0 (https://github.com/uxsolutions/bootstrap-datepicker)\n *\n * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)\n */\n\n(function(factory){\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n}(function($, undefined){\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n\t}\n\tfunction isUTCEquals(date1, date2) {\n\t\treturn (\n\t\t\tdate1.getUTCFullYear() === date2.getUTCFullYear() &&\n\t\t\tdate1.getUTCMonth() === date2.getUTCMonth() &&\n\t\t\tdate1.getUTCDate() === date2.getUTCDate()\n\t\t);\n\t}\n\tfunction alias(method, deprecationMsg){\n\t\treturn function(){\n\t\t\tif (deprecationMsg !== undefined) {\n\t\t\t\t$.fn.datepicker.deprecated(deprecationMsg);\n\t\t\t}\n\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\tfunction isValidDate(d) {\n\t\treturn d && !isNaN(d.getTime());\n\t}\n\n\tvar DateArray = (function(){\n\t\tvar extras = {\n\t\t\tget: function(i){\n\t\t\t\treturn this.slice(i)[0];\n\t\t\t},\n\t\t\tcontains: function(d){\n\t\t\t\t// Array.indexOf is not cross-browser;\n\t\t\t\t// $.inArray doesn't work with Dates\n\t\t\t\tvar val = d && d.valueOf();\n\t\t\t\tfor (var i=0, l=this.length; i < l; i++)\n // Use date arithmetic to allow dates with different times to match\n if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000*60*60*24)\n\t\t\t\t\t\treturn i;\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tremove: function(i){\n\t\t\t\tthis.splice(i,1);\n\t\t\t},\n\t\t\treplace: function(new_array){\n\t\t\t\tif (!new_array)\n\t\t\t\t\treturn;\n\t\t\t\tif (!$.isArray(new_array))\n\t\t\t\t\tnew_array = [new_array];\n\t\t\t\tthis.clear();\n\t\t\t\tthis.push.apply(this, new_array);\n\t\t\t},\n\t\t\tclear: function(){\n\t\t\t\tthis.length = 0;\n\t\t\t},\n\t\t\tcopy: function(){\n\t\t\t\tvar a = new DateArray();\n\t\t\t\ta.replace(this);\n\t\t\t\treturn a;\n\t\t\t}\n\t\t};\n\n\t\treturn function(){\n\t\t\tvar a = [];\n\t\t\ta.push.apply(a, arguments);\n\t\t\t$.extend(a, extras);\n\t\t\treturn a;\n\t\t};\n\t})();\n\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\n\t\tthis._events = [];\n\t\tthis._secondaryEvents = [];\n\n\t\tthis._process_options(options);\n\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = this.o.defaultViewDate;\n\t\tthis.focusDate = null;\n\n\t\tthis.element = $(element);\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.inputField = this.isInput ? this.element : this.element.find('input');\n\t\tthis.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false;\n\t\tif (this.component && this.component.length === 0)\n\t\t\tthis.component = false;\n\t\tthis.isInline = !this.component && this.element.is('div');\n\n\t\tthis.picker = $(DPGlobal.template);\n\n\t\t// Checking templates and inserting\n\t\tif (this._check_template(this.o.templates.leftArrow)) {\n\t\t\tthis.picker.find('.prev').html(this.o.templates.leftArrow);\n\t\t}\n\n\t\tif (this._check_template(this.o.templates.rightArrow)) {\n\t\t\tthis.picker.find('.next').html(this.o.templates.rightArrow);\n\t\t}\n\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif (this.isInline){\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t}\n\t\telse {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t}\n\n\t\tif (this.o.calendarWeeks) {\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear')\n\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\treturn Number(val) + 1;\n\t\t\t\t});\n\t\t}\n\n\t\tthis._process_options({\n\t\t\tstartDate: this._o.startDate,\n\t\t\tendDate: this._o.endDate,\n\t\t\tdaysOfWeekDisabled: this.o.daysOfWeekDisabled,\n\t\t\tdaysOfWeekHighlighted: this.o.daysOfWeekHighlighted,\n\t\t\tdatesDisabled: this.o.datesDisabled\n\t\t});\n\n\t\tthis._allow_update = false;\n\t\tthis.setViewMode(this.o.startView);\n\t\tthis._allow_update = true;\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis.update();\n\n\t\tif (this.isInline){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_resolveViewName: function(view){\n\t\t\t$.each(DPGlobal.viewModes, function(i, viewMode){\n\t\t\t\tif (view === i || $.inArray(view, viewMode.names) !== -1){\n\t\t\t\t\tview = i;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn view;\n\t\t},\n\n\t\t_resolveDaysOfWeek: function(daysOfWeek){\n\t\t\tif (!$.isArray(daysOfWeek))\n\t\t\t\tdaysOfWeek = daysOfWeek.split(/[,\\s]*/);\n\t\t\treturn $.map(daysOfWeek, Number);\n\t\t},\n\n\t\t_check_template: function(tmp){\n\t\t\ttry {\n\t\t\t\t// If empty\n\t\t\t\tif (tmp === undefined || tmp === \"\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// If no html, everything ok\n\t\t\t\tif ((tmp.match(/[<>]/g) || []).length <= 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Checking if html is fine\n\t\t\t\tvar jDom = $(tmp);\n\t\t\t\treturn jDom.length > 0;\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]){\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\t// Retrieve view index from any aliases\n\t\t\to.startView = this._resolveViewName(o.startView);\n\t\t\to.minViewMode = this._resolveViewName(o.minViewMode);\n\t\t\to.maxViewMode = this._resolveViewName(o.maxViewMode);\n\n\t\t\t// Check view is between min and max\n\t\t\to.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));\n\n\t\t\t// true, false, or Number > 0\n\t\t\tif (o.multidate !== true){\n\t\t\t\to.multidate = Number(o.multidate) || false;\n\t\t\t\tif (o.multidate !== false)\n\t\t\t\t\to.multidate = Math.max(0, o.multidate);\n\t\t\t}\n\t\t\to.multidateSeparator = String(o.multidateSeparator);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = (o.weekStart + 6) % 7;\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format);\n\t\t\tif (o.startDate !== -Infinity){\n\t\t\t\tif (!!o.startDate){\n\t\t\t\t\tif (o.startDate instanceof Date)\n\t\t\t\t\t\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.startDate = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity){\n\t\t\t\tif (!!o.endDate){\n\t\t\t\t\tif (o.endDate instanceof Date)\n\t\t\t\t\t\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.endDate = Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]);\n\t\t\to.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]);\n\n\t\t\to.datesDisabled = o.datesDisabled||[];\n\t\t\tif (!$.isArray(o.datesDisabled)) {\n\t\t\t\to.datesDisabled = o.datesDisabled.split(',');\n\t\t\t}\n\t\t\to.datesDisabled = $.map(o.datesDisabled, function(d){\n\t\t\t\treturn DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);\n\t\t\t});\n\n\t\t\tvar plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n\t\t\t\t_plc = o.orientation.toLowerCase();\n\t\t\tplc = $.grep(plc, function(word){\n\t\t\t\treturn /^auto|left|right|top|bottom$/.test(word);\n\t\t\t});\n\t\t\to.orientation = {x: 'auto', y: 'auto'};\n\t\t\tif (!_plc || _plc === 'auto')\n\t\t\t\t; // no action\n\t\t\telse if (plc.length === 1){\n\t\t\t\tswitch (plc[0]){\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\to.orientation.y = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\to.orientation.x = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^left|right$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.x = _plc[0] || 'auto';\n\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^top|bottom$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.y = _plc[0] || 'auto';\n\t\t\t}\n\t\t\tif (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {\n\t\t\t\to.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);\n\t\t\t} else if (o.defaultViewDate) {\n\t\t\t\tvar year = o.defaultViewDate.year || new Date().getFullYear();\n\t\t\t\tvar month = o.defaultViewDate.month || 0;\n\t\t\t\tvar day = o.defaultViewDate.day || 1;\n\t\t\t\to.defaultViewDate = UTCDate(year, month, day);\n\t\t\t} else {\n\t\t\t\to.defaultViewDate = UTCToday();\n\t\t\t}\n\t\t},\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ch, ev; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.on(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev, ch; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.off(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n var events = {\n keyup: $.proxy(function(e){\n if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\n this.update();\n }, this),\n keydown: $.proxy(this.keydown, this),\n paste: $.proxy(this.paste, this)\n };\n\n if (this.o.showOnFocus === true) {\n events.focus = $.proxy(this.show, this);\n }\n\n if (this.isInput) { // single input\n this._events = [\n [this.element, events]\n ];\n }\n // component: input + button\n else if (this.component && this.inputField.length) {\n this._events = [\n // For components that are not readonly, allow keyboard nav\n [this.inputField, events],\n [this.component, {\n click: $.proxy(this.show, this)\n }]\n ];\n }\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tthis._events.push(\n\t\t\t\t// Component: listen for blur on element descendants\n\t\t\t\t[this.element, '*', {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}],\n\t\t\t\t// Input: listen for blur on element\n\t\t\t\t[this.element, {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t);\n\n\t\t\tif (this.o.immediateUpdates) {\n\t\t\t\t// Trigger input updates immediately on changed year/month\n\t\t\t\tthis._events.push([this.element, {\n\t\t\t\t\t'changeYear changeMonth': $.proxy(function(e){\n\t\t\t\t\t\tthis.update(e.date);\n\t\t\t\t\t}, this)\n\t\t\t\t}]);\n\t\t\t}\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.prev, .next', {\n\t\t\t\t\tclick: $.proxy(this.navArrowsClick, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.day:not(.disabled)', {\n\t\t\t\t\tclick: $.proxy(this.dayCellClick, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\t'mousedown touchstart': $.proxy(function(e){\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).length ||\n\t\t\t\t\t\t\tthis.isInline\n\t\t\t\t\t\t)){\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.dates.get(-1),\n\t\t\t\tlocal_date = this._utc_to_local(date);\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tviewMode: this.viewMode,\n\t\t\t\tdates: $.map(this.dates, this._utc_to_local),\n\t\t\t\tformat: $.proxy(function(ix, format){\n\t\t\t\t\tif (arguments.length === 0){\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t\tformat = this.o.format;\n\t\t\t\t\t} else if (typeof ix === 'string'){\n\t\t\t\t\t\tformat = ix;\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tformat = format || this.o.format;\n\t\t\t\t\tvar date = this.dates.get(ix);\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(){\n\t\t\tif (this.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))\n\t\t\t\treturn;\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo(this.o.container);\n\t\t\tthis.place();\n\t\t\tthis.picker.show();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t\tif ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\n\t\t\t\t$(this.element).blur();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline || !this.picker.is(':visible'))\n\t\t\t\treturn this;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.setViewMode(this.o.startView);\n\n\t\t\tif (this.o.forceParse && this.inputField.val())\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t\treturn this;\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput){\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tpaste: function(e){\n\t\t\tvar dateString;\n\t\t\tif (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types\n\t\t\t\t&& $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {\n\t\t\t\tdateString = e.originalEvent.clipboardData.getData('text/plain');\n\t\t\t} else if (window.clipboardData) {\n\t\t\t\tdateString = window.clipboardData.getData('Text');\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.setDate(dateString);\n\t\t\tthis.update();\n\t\t\te.preventDefault();\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\tif (!utc) {\n\t\t\t\treturn utc;\n\t\t\t}\n\n\t\t\tvar local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));\n\n\t\t\tif (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {\n\t\t\t\tlocal = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));\n\t\t\t}\n\n\t\t\treturn local;\n\t\t},\n\t\t_local_to_utc: function(local){\n\t\t\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n\t\t},\n\t\t_zero_time: function(local){\n\t\t\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n\t\t},\n\t\t_zero_utc_time: function(utc){\n\t\t\treturn utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate());\n\t\t},\n\n\t\tgetDates: function(){\n\t\t\treturn $.map(this.dates, this._utc_to_local);\n\t\t},\n\n\t\tgetUTCDates: function(){\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn new Date(d);\n\t\t\t});\n\t\t},\n\n\t\tgetDate: function(){\n\t\t\treturn this._utc_to_local(this.getUTCDate());\n\t\t},\n\n\t\tgetUTCDate: function(){\n\t\t\tvar selected_date = this.dates.get(-1);\n\t\t\tif (selected_date !== undefined) {\n\t\t\t\treturn new Date(selected_date);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\n\t\tclearDates: function(){\n\t\t\tthis.inputField.val('');\n\t\t\tthis.update();\n\t\t\tthis._trigger('changeDate');\n\n\t\t\tif (this.o.autoclose) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tsetDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, args);\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.setDates.apply(this, $.map(args, this._utc_to_local));\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tthis.inputField.val(formatted);\n\t\t\treturn this;\n\t\t},\n\n\t\tgetFormattedDate: function(format){\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\n\t\t\tvar lang = this.o.language;\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn DPGlobal.formatDate(d, format, lang);\n\t\t\t}).join(this.o.multidateSeparator);\n\t\t},\n\n\t\tgetStartDate: function(){\n\t\t\treturn this.o.startDate;\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tgetEndDate: function(){\n\t\t\treturn this.o.endDate;\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekHighlighted: function(daysOfWeekHighlighted){\n\t\t\tthis._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDatesDisabled: function(datesDisabled){\n\t\t\tthis._process_options({datesDisabled: datesDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\n\t\t\tvar calendarWidth = this.picker.outerWidth(),\n\t\t\t\tcalendarHeight = this.picker.outerHeight(),\n\t\t\t\tvisualPadding = 10,\n\t\t\t\tcontainer = $(this.o.container),\n\t\t\t\twindowWidth = container.width(),\n\t\t\t\tscrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),\n\t\t\t\tappendOffset = container.offset();\n\n\t\t\tvar parentsZindex = [0];\n\t\t\tthis.element.parents().each(function(){\n\t\t\t\tvar itemZIndex = $(this).css('z-index');\n\t\t\t\tif (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));\n\t\t\t});\n\t\t\tvar zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n\t\t\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\n\t\t\tvar left = offset.left - appendOffset.left;\n\t\t\tvar top = offset.top - appendOffset.top;\n\n\t\t\tif (this.o.container !== 'body') {\n\t\t\t\ttop += scrollTop;\n\t\t\t}\n\n\t\t\tthis.picker.removeClass(\n\t\t\t\t'datepicker-orient-top datepicker-orient-bottom '+\n\t\t\t\t'datepicker-orient-right datepicker-orient-left'\n\t\t\t);\n\n\t\t\tif (this.o.orientation.x !== 'auto'){\n\t\t\t\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\n\t\t\t\tif (this.o.orientation.x === 'right')\n\t\t\t\t\tleft -= calendarWidth - width;\n\t\t\t}\n\t\t\t// auto x orientation is best-placement: if it crosses a window\n\t\t\t// edge, fudge it sideways\n\t\t\telse {\n\t\t\t\tif (offset.left < 0) {\n\t\t\t\t\t// component is outside the window on the left side. Move it into visible range\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\t} else if (left + calendarWidth > windowWidth) {\n\t\t\t\t\t// the calendar passes the widow right edge. Align it to component right side\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\tleft += width - calendarWidth;\n\t\t\t\t} else {\n\t\t\t\t\tif (this.o.rtl) {\n\t\t\t\t\t\t// Default to right\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Default to left\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// auto y orientation is best-situation: top or bottom, no fudging,\n\t\t\t// decision based on which shows more of the calendar\n\t\t\tvar yorient = this.o.orientation.y,\n\t\t\t\ttop_overflow;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + top - calendarHeight;\n\t\t\t\tyorient = top_overflow < 0 ? 'bottom' : 'top';\n\t\t\t}\n\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\t\t\telse\n\t\t\t\ttop += height;\n\n\t\t\tif (this.o.rtl) {\n\t\t\t\tvar right = windowWidth - (left + width);\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tright: right,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tleft: left,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn this;\n\n\t\t\tvar oldDates = this.dates.copy(),\n\t\t\t\tdates = [],\n\t\t\t\tfromArgs = false;\n\t\t\tif (arguments.length){\n\t\t\t\t$.each(arguments, $.proxy(function(i, date){\n\t\t\t\t\tif (date instanceof Date)\n\t\t\t\t\t\tdate = this._local_to_utc(date);\n\t\t\t\t\tdates.push(date);\n\t\t\t\t}, this));\n\t\t\t\tfromArgs = true;\n\t\t\t} else {\n\t\t\t\tdates = this.isInput\n\t\t\t\t\t\t? this.element.val()\n\t\t\t\t\t\t: this.element.data('date') || this.inputField.val();\n\t\t\t\tif (dates && this.o.multidate)\n\t\t\t\t\tdates = dates.split(this.o.multidateSeparator);\n\t\t\t\telse\n\t\t\t\t\tdates = [dates];\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tdates = $.map(dates, $.proxy(function(date){\n\t\t\t\treturn DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\t!this.dateWithinRange(date) ||\n\t\t\t\t\t!date\n\t\t\t\t);\n\t\t\t}, this), true);\n\t\t\tthis.dates.replace(dates);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\t\t\t\telse\n\t\t\t\t\tthis.viewDate = this.o.defaultViewDate;\n\t\t\t}\n\n\t\t\tif (fromArgs){\n\t\t\t\t// setting date by clicking\n\t\t\t\tthis.setValue();\n\t\t\t\tthis.element.change();\n\t\t\t}\n\t\t\telse if (this.dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates) && fromArgs) {\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\tthis.element.change();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length) {\n\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.element.change();\n\t\t\t}\n\n\t\t\tthis.fill();\n\t\t\treturn this;\n\t\t},\n\n\t\tfillDow: function(){\n if (this.o.showWeekDays) {\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\thtml += ' ';\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += '';\n\t\t\t}\n\t\t\thtml += '';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n }\n\t\t},\n\n\t\tfillMonths: function(){\n var localDate = this._utc_to_local(this.viewDate);\n\t\t\tvar html = '';\n\t\t\tvar focused;\n\t\t\tfor (var i = 0; i < 12; i++){\n\t\t\t\tfocused = localDate && localDate.getMonth() === i ? ' focused' : '';\n\t\t\t\thtml += '' + dates[this.o.language].monthsShort[i] + '';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){\n\t\t\t\t\treturn d.valueOf();\n\t\t\t\t});\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\ttoday = UTCToday();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t} else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n\t\t\t\tcls.push('focused');\n\t\t\t// Compare internal UTC date with UTC today, not local today\n\t\t\tif (this.o.todayHighlight && isUTCEquals(date, today)) {\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (this.dates.contains(date) !== -1)\n\t\t\t\tcls.push('active');\n\t\t\tif (!this.dateWithinRange(date)){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.dateIsDisabled(date)){\n\t\t\t\tcls.push('disabled', 'disabled-date');\n\t\t\t}\n\t\t\tif ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){\n\t\t\t\tcls.push('highlighted');\n\t\t\t}\n\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) !== -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t\tif (date.valueOf() === this.range[0]){\n cls.push('range-start');\n }\n if (date.valueOf() === this.range[this.range.length-1]){\n cls.push('range-end');\n }\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\t_fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn){\n\t\t\tvar html = '';\n\t\t\tvar step = factor / 10;\n\t\t\tvar view = this.picker.find(selector);\n\t\t\tvar startVal = Math.floor(year / factor) * factor;\n\t\t\tvar endVal = startVal + step * 9;\n\t\t\tvar focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\n\t\t\tvar selected = $.map(this.dates, function(d){\n\t\t\t\treturn Math.floor(d.getUTCFullYear() / step) * step;\n\t\t\t});\n\n\t\t\tvar classes, tooltip, before;\n\t\t\tfor (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\n\t\t\t\tclasses = [cssClass];\n\t\t\t\ttooltip = null;\n\n\t\t\t\tif (currVal === startVal - step) {\n\t\t\t\t\tclasses.push('old');\n\t\t\t\t} else if (currVal === endVal + step) {\n\t\t\t\t\tclasses.push('new');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(currVal, selected) !== -1) {\n\t\t\t\t\tclasses.push('active');\n\t\t\t\t}\n\t\t\t\tif (currVal < startYear || currVal > endYear) {\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t}\n\t\t\t\tif (currVal === focusedVal) {\n\t\t\t\t classes.push('focused');\n }\n\n\t\t\t\tif (beforeFn !== $.noop) {\n\t\t\t\t\tbefore = beforeFn(new Date(currVal, 0, 1));\n\t\t\t\t\tif (before === undefined) {\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\t} else if (typeof before === 'boolean') {\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\t} else if (typeof before === 'string') {\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\t}\n\t\t\t\t\tif (before.enabled === false) {\n\t\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t\t}\n\t\t\t\t\tif (before.classes) {\n\t\t\t\t\t\tclasses = classes.concat(before.classes.split(/\\s+/));\n\t\t\t\t\t}\n\t\t\t\t\tif (before.tooltip) {\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thtml += '' + currVal + '';\n\t\t\t}\n\n\t\t\tview.find('.datepicker-switch').text(startVal + '-' + endVal);\n\t\t\tview.find('td').html(html);\n\t\t},\n\n\t\tfill: function(){\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\n\t\t\t\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\n todayDate = UTCToday(),\n titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate),\n\t\t\t\ttooltip,\n\t\t\t\tbefore;\n\t\t\tif (isNaN(year) || isNaN(month))\n\t\t\t\treturn;\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch')\n\t\t\t\t\t\t.text(DPGlobal.formatDate(d, titleFormat, this.o.language));\n\t\t\tthis.picker.find('tfoot .today')\n\t\t\t\t\t\t.text(todaytxt)\n .css('display', titleBtnVisible ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('tfoot .clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.css('display', this.o.clearBtn === true ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('thead .datepicker-title')\n\t\t\t\t\t\t.text(this.o.title)\n\t\t\t\t\t\t.css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none');\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month, 0),\n\t\t\t\tday = prevMonth.getUTCDate();\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tif (prevMonth.getUTCFullYear() < 100){\n nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n }\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar weekDay, clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tweekDay = prevMonth.getUTCDay();\n\t\t\t\tif (weekDay === this.o.weekStart){\n\t\t\t\t\thtml.push('');\n\t\t\t\t\tif (this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek = (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push(''+ calWeek +'');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tvar content = prevMonth.getUTCDate();\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tbefore = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false)\n\t\t\t\t\t\tclsName.push('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\tif (before.content)\n\t\t\t\t\t\tcontent = before.content;\n\t\t\t\t}\n\n\t\t\t\t//Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\n\t\t\t\t//Fallback to unique function for older jquery versions\n\t\t\t\tif ($.isFunction($.uniqueSort)) {\n\t\t\t\t\tclsName = $.uniqueSort(clsName);\n\t\t\t\t} else {\n\t\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\t}\n\n\t\t\t\thtml.push('' + content + '');\n\t\t\t\ttooltip = null;\n\t\t\t\tif (weekDay === this.o.weekEnd){\n\t\t\t\t\thtml.push('');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').html(html.join(''));\n\n\t\t\tvar monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('.datepicker-switch')\n\t\t\t\t\t\t\t.text(this.o.maxViewMode < 2 ? monthsTitle : year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('tbody span').removeClass('active');\n\n\t\t\t$.each(this.dates, function(i, d){\n\t\t\t\tif (d.getUTCFullYear() === year)\n\t\t\t\t\tmonths.eq(d.getUTCMonth()).addClass('active');\n\t\t\t});\n\n\t\t\tif (year < startYear || year > endYear){\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year === startYear){\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year === endYear){\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\tif (this.o.beforeShowMonth !== $.noop){\n\t\t\t\tvar that = this;\n\t\t\t\t$.each(months, function(i, month){\n var moDate = new Date(year, i, 1);\n var before = that.o.beforeShowMonth(moDate);\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false && !$(month).hasClass('disabled'))\n\t\t\t\t\t $(month).addClass('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t $(month).addClass(before.classes);\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t $(month).prop('title', before.tooltip);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generating decade/years picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-years',\n\t\t\t\t'year',\n\t\t\t\t10,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowYear\n\t\t\t);\n\n\t\t\t// Generating century/decades picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-decades',\n\t\t\t\t'decade',\n\t\t\t\t100,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowDecade\n\t\t\t);\n\n\t\t\t// Generating millennium/centuries picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-centuries',\n\t\t\t\t'century',\n\t\t\t\t1000,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowCentury\n\t\t\t);\n\t\t},\n\n\t\tupdateNavArrows: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\tprevIsDisabled,\n\t\t\t\tnextIsDisabled,\n\t\t\t\tfactor = 1;\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 4:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 3:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 2:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\tprevIsDisabled = Math.floor(year / factor) * factor <= startYear;\n\t\t\t\t\tnextIsDisabled = Math.floor(year / factor) * factor + factor > endYear;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tprevIsDisabled = year <= startYear && month <= startMonth;\n\t\t\t\t\tnextIsDisabled = year >= endYear && month >= endMonth;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\n\t\t\tthis.picker.find('.next').toggleClass('disabled', nextIsDisabled);\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tvar target, dir, day, year, month;\n\t\t\ttarget = $(e.target);\n\n\t\t\t// Clicked on the switch\n\t\t\tif (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode){\n\t\t\t\tthis.setViewMode(this.viewMode + 1);\n\t\t\t}\n\n\t\t\t// Clicked on today button\n\t\t\tif (target.hasClass('today') && !target.hasClass('day')){\n\t\t\t\tthis.setViewMode(0);\n\t\t\t\tthis._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\n\t\t\t}\n\n\t\t\t// Clicked on clear button\n\t\t\tif (target.hasClass('clear')){\n\t\t\t\tthis.clearDates();\n\t\t\t}\n\n\t\t\tif (!target.hasClass('disabled')){\n\t\t\t\t// Clicked on a month, year, decade, century\n\t\t\t\tif (target.hasClass('month')\n\t\t\t\t\t\t|| target.hasClass('year')\n\t\t\t\t\t\t|| target.hasClass('decade')\n\t\t\t\t\t\t|| target.hasClass('century')) {\n\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\n\t\t\t\t\tday = 1;\n\t\t\t\t\tif (this.viewMode === 1){\n\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\tyear = Number(target.text());\n\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\n\n\t\t\t\t\tif (this.viewMode === this.o.minViewMode){\n\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setViewMode(this.viewMode - 1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\tthis._focused_from.focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\tdayCellClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar timestamp = $target.data('date');\n\t\t\tvar date = new Date(timestamp);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {\n\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t}\n\n\t\t\t\tif (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {\n\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._setDate(date);\n\t\t},\n\n\t\t// Clicked on prev or next\n\t\tnavArrowsClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar dir = $target.hasClass('prev') ? -1 : 1;\n\t\t\tif (this.viewMode !== 0){\n\t\t\t\tdir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\n\t\t\t}\n\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\n\t\t\tthis.fill();\n\t\t},\n\n\t\t_toggle_multidate: function(date){\n\t\t\tvar ix = this.dates.contains(date);\n\t\t\tif (!date){\n\t\t\t\tthis.dates.clear();\n\t\t\t}\n\n\t\t\tif (ix !== -1){\n\t\t\t\tif (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\n\t\t\t\t\tthis.dates.remove(ix);\n\t\t\t\t}\n\t\t\t} else if (this.o.multidate === false) {\n\t\t\t\tthis.dates.clear();\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\n\t\t\tif (typeof this.o.multidate === 'number')\n\t\t\t\twhile (this.dates.length > this.o.multidate)\n\t\t\t\t\tthis.dates.remove(0);\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which === 'date')\n\t\t\t\tthis._toggle_multidate(date && new Date(date));\n\t\t\tif ((!which && this.o.updateViewDate) || which === 'view')\n\t\t\t\tthis.viewDate = date && new Date(date);\n\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tif (!which || which !== 'view') {\n\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tthis.inputField.trigger('change');\n\t\t\tif (this.o.autoclose && (!which || which === 'date')){\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tmoveDay: function(date, dir){\n\t\t\tvar newDate = new Date(date);\n\t\t\tnewDate.setUTCDate(date.getUTCDate() + dir);\n\n\t\t\treturn newDate;\n\t\t},\n\n\t\tmoveWeek: function(date, dir){\n\t\t\treturn this.moveDay(date, dir * 7);\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!isValidDate(date))\n\t\t\t\treturn this.o.defaultViewDate;\n\t\t\tif (!dir)\n\t\t\t\treturn date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag === 1){\n\t\t\t\ttest = dir === -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() === month;\n\t\t\t\t\t}\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() !== new_month;\n\t\t\t\t\t};\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i < mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){\n\t\t\t\t\treturn new_month !== new_date.getUTCMonth();\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tmoveAvailableDate: function(date, dir, fn){\n\t\t\tdo {\n\t\t\t\tdate = this[fn](date, dir);\n\n\t\t\t\tif (!this.dateWithinRange(date))\n\t\t\t\t\treturn false;\n\n\t\t\t\tfn = 'moveDay';\n\t\t\t}\n\t\t\twhile (this.dateIsDisabled(date));\n\n\t\t\treturn date;\n\t\t},\n\n\t\tweekOfDateIsDisabled: function(date){\n\t\t\treturn $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n\t\t},\n\n\t\tdateIsDisabled: function(date){\n\t\t\treturn (\n\t\t\t\tthis.weekOfDateIsDisabled(date) ||\n\t\t\t\t$.grep(this.o.datesDisabled, function(d){\n\t\t\t\t\treturn isUTCEquals(date, d);\n\t\t\t\t}).length > 0\n\t\t\t);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (!this.picker.is(':visible')){\n\t\t\t\tif (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\t\te.stopPropagation();\n }\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, newViewDate,\n\t\t\t\tfocusDate = this.focusDate || this.viewDate;\n\t\t\tswitch (e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tif (this.focusDate){\n\t\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 39: // right\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n if (this.viewMode === 0) {\n \t\t\t\t\tif (e.ctrlKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n \t\t\t\t\t} else if (e.shiftKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n \t\t\t\t\t} else if (e.keyCode === 37 || e.keyCode === 39){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n \t\t\t\t\t} else if (!this.weekOfDateIsDisabled(focusDate)){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n \t\t\t\t\t}\n } else if (this.viewMode === 1) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n } else if (this.viewMode === 2) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n }\n\t\t\t\t\tif (newViewDate){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tif (!this.o.forceParse)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tif (this.o.keyboardNavigation) {\n\t\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.setValue();\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tif (this.picker.is(':visible')){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\telse\n\t\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.inputField.trigger('change');\n\t\t\t}\n\t\t},\n\n\t\tsetViewMode: function(viewMode){\n\t\t\tthis.viewMode = viewMode;\n\t\t\tthis.picker\n\t\t\t\t.children('div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)\n\t\t\t\t\t.show();\n\t\t\tthis.updateNavArrows();\n this._trigger('changeViewMode', new Date(this.viewDate));\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){\n\t\t\treturn i.jquery ? i[0] : i;\n\t\t});\n\t\tdelete options.inputs;\n\n\t\tthis.keepEmptyValues = options.keepEmptyValues;\n\t\tdelete options.keepEmptyValues;\n\n\t\tdatepickerPlugin.call($(this.inputs), options)\n\t\t\t.on('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $.data(i, 'datepicker');\n\t\t});\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){\n\t\t\t\treturn i.getUTCDate();\n\t\t\t});\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){\n\t\t\t\treturn d.valueOf();\n\t\t\t});\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tclearDates: function(){\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.clearDates();\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\t// `this.updating` is a workaround for preventing infinite recursion\n\t\t\t// between `changeDate` triggering and `setUTCDate` calling. Until\n\t\t\t// there is a better mechanism.\n\t\t\tif (this.updating)\n\t\t\t\treturn;\n\t\t\tthis.updating = true;\n\n\t\t\tvar dp = $.data(e.target, 'datepicker');\n\n\t\t\tif (dp === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar new_date = dp.getUTCDate(),\n\t\t\t\tkeep_empty_values = this.keepEmptyValues,\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tj = i - 1,\n\t\t\t\tk = i + 1,\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i === -1)\n\t\t\t\treturn;\n\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tif (!p.getUTCDate() && (p === dp || !keep_empty_values))\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[j]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (j >= 0 && new_date < this.dates[j]){\n\t\t\t\t\tthis.pickers[j--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t} else if (new_date > this.dates[k]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (k < l && new_date > this.dates[k]){\n\t\t\t\t\tthis.pickers[k++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\n\t\t\tdelete this.updating;\n\t\t},\n\t\tdestroy: function(){\n\t\t\t$.map(this.pickers, function(p){ p.destroy(); });\n\t\t\t$(this.inputs).off('changeDate', this.dateUpdated);\n\t\t\tdelete this.element.data().datepicker;\n\t\t},\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfunction re_lower(_,a){\n\t\t\treturn a.toLowerCase();\n\t\t}\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, re_lower);\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]){\n\t\t\tlang = lang.split('-')[0];\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\tvar datepickerPlugin = function(option){\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return;\n\t\tthis.each(function(){\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data){\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.hasClass('input-daterange') || opts.inputs){\n\t\t\t\t\t$.extend(opts, {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t});\n\t\t\t\t\tdata = new DateRangePicker(this, opts);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdata = new Datepicker(this, opts);\n\t\t\t\t}\n\t\t\t\t$this.data('datepicker', data);\n\t\t\t}\n\t\t\tif (typeof option === 'string' && typeof data[option] === 'function'){\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tinternal_return === undefined ||\n\t\t\tinternal_return instanceof Datepicker ||\n\t\t\tinternal_return instanceof DateRangePicker\n\t\t)\n\t\t\treturn this;\n\n\t\tif (this.length > 1)\n\t\t\tthrow new Error('Using only allowed for the collection of a single element (' + option + ' function)');\n\t\telse\n\t\t\treturn internal_return;\n\t};\n\t$.fn.datepicker = datepickerPlugin;\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tassumeNearbyYear: false,\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tbeforeShowMonth: $.noop,\n\t\tbeforeShowYear: $.noop,\n\t\tbeforeShowDecade: $.noop,\n\t\tbeforeShowCentury: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\ttoggleActive: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tdaysOfWeekHighlighted: [],\n\t\tdatesDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tkeepEmptyValues: false,\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmaxViewMode: 4,\n\t\tmultidate: false,\n\t\tmultidateSeparator: ',',\n\t\torientation: \"auto\",\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tupdateViewDate: true,\n\t\tweekStart: 0,\n\t\tdisableTouchKeyboard: false,\n\t\tenableOnReadonly: true,\n\t\tshowOnFocus: true,\n\t\tzIndexOffset: 10,\n\t\tcontainer: 'body',\n\t\timmediateUpdates: false,\n\t\ttitle: '',\n\t\ttemplates: {\n\t\t\tleftArrow: '«',\n\t\t\trightArrow: '»'\n\t\t},\n showWeekDays: true\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\",\n\t\t\ttitleFormat: \"MM yyyy\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tviewModes: [\n\t\t\t{\n\t\t\t\tnames: ['days', 'month'],\n\t\t\t\tclsName: 'days',\n\t\t\t\te: 'changeMonth'\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['months', 'year'],\n\t\t\t\tclsName: 'months',\n\t\t\t\te: 'changeYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['years', 'decade'],\n\t\t\t\tclsName: 'years',\n\t\t\t\te: 'changeDecade',\n\t\t\t\tnavStep: 10\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['decades', 'century'],\n\t\t\t\tclsName: 'decades',\n\t\t\t\te: 'changeCentury',\n\t\t\t\tnavStep: 100\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['centuries', 'millennium'],\n\t\t\t\tclsName: 'centuries',\n\t\t\t\te: 'changeMillennium',\n\t\t\t\tnavStep: 1000\n\t\t\t}\n\t\t],\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\u5e74\\u6708\\u65e5\\[-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\tif (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\n return format;\n // IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language, assumeNearby){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (date instanceof Date)\n\t\t\t\treturn date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toValue)\n\t\t\t\treturn format.toValue(date, format, language);\n\t\t\tvar fn_map = {\n\t\t\t\t\td: 'moveDay',\n\t\t\t\t\tm: 'moveMonth',\n\t\t\t\t\tw: 'moveWeek',\n\t\t\t\t\ty: 'moveYear'\n\t\t\t\t},\n\t\t\t\tdateAliases = {\n\t\t\t\t\tyesterday: '-1d',\n\t\t\t\t\ttoday: '+0d',\n\t\t\t\t\ttomorrow: '+1d'\n\t\t\t\t},\n\t\t\t\tparts, part, dir, i, fn;\n\t\t\tif (date in dateAliases){\n\t\t\t\tdate = dateAliases[date];\n\t\t\t}\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/i.test(date)){\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/gi);\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = parts[i].match(/([\\-+]\\d+)([dmwy])/i);\n\t\t\t\t\tdir = Number(part[1]);\n\t\t\t\t\tfn = fn_map[part[2].toLowerCase()];\n\t\t\t\t\tdate = Datepicker.prototype[fn](date, dir);\n\t\t\t\t}\n\t\t\t\treturn Datepicker.prototype._zero_utc_time(date);\n\t\t\t}\n\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\n\t\t\tfunction applyNearbyYear(year, threshold){\n\t\t\t\tif (threshold === true)\n\t\t\t\t\tthreshold = 10;\n\n\t\t\t\t// if year is 2 digits or less, than the user most likely is trying to get a recent century\n\t\t\t\tif (year < 100){\n\t\t\t\t\tyear += 2000;\n\t\t\t\t\t// if the new year is more than threshold years in advance, use last century\n\t\t\t\t\tif (year > ((new Date()).getFullYear()+threshold)){\n\t\t\t\t\t\tyear -= 100;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn year;\n\t\t\t}\n\n\t\t\tvar parsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);\n\t\t\t\t\t},\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tif (isNaN(d))\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v < 0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() !== v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){\n\t\t\t\t\t\treturn d.setUTCDate(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tval, filtered;\n\t\t\tsetters_map['yy'] = setters_map['yyyy'];\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCToday();\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length !== fparts.length){\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tfunction match_part(){\n\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\treturn m.toLowerCase() === p.toLowerCase();\n\t\t\t}\n\t\t\tif (parts.length === fparts.length){\n\t\t\t\tvar cnt;\n\t\t\t\tfor (i=0, cnt = fparts.length; i < cnt; i++){\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)){\n\t\t\t\t\t\tswitch (part){\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tvar _date, s;\n\t\t\t\tfor (i=0; i < setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s])){\n\t\t\t\t\t\t_date = new Date(date);\n\t\t\t\t\t\tsetters_map[s](_date, parsed[s]);\n\t\t\t\t\t\tif (!isNaN(_date))\n\t\t\t\t\t\t\tdate = _date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn '';\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toDisplay)\n return format.toDisplay(date, format, language);\n var val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tdate = [];\n\t\t\tvar seps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.leftArrow+''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.rightArrow+''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t'',\n\t\tcontTemplate: '',\n\t\tfootTemplate: ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t''\n\t};\n\tDPGlobal.template = '
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
';\n\n\t$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\t/* DATEPICKER VERSION\n\t * =================== */\n\t$.fn.datepicker.version = '1.9.0';\n\n\t$.fn.datepicker.deprecated = function(msg){\n\t\tvar console = window.console;\n\t\tif (console && console.warn) {\n\t\t\tconsole.warn('DEPRECATED: ' + msg);\n\t\t}\n\t};\n\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker'))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\tdatepickerPlugin.call($this, 'show');\n\t\t}\n\t);\n\t$(function(){\n\t\tdatepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n\t});\n\n}));\n","/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under the MIT license\n */\n\nif (typeof jQuery === 'undefined') {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n 'use strict';\n var version = $.fn.jquery.split(' ')[0].split('.')\n if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')\n }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // https://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.4.1'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n selector = selector === '#' ? [] : selector\n var $parent = $(document).find(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.4.1'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.4.1'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n if (typeof $next === 'object' && $next.length) {\n $next[0].offsetWidth // force reflow\n }\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n if (href) {\n href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n }\n\n var target = $this.attr('data-target') || href\n var $target = $(document).find(target)\n\n if (!$target.hasClass('carousel')) return\n\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.4.1'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(document).find(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(document).find(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.4.1'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.4.1'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n var scrollbarWidth = this.scrollbarWidth\n if (this.bodyIsOverflowing) {\n this.$body.css('padding-right', bodyPad + scrollbarWidth)\n $(this.fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight\n var calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n })\n }\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n $(this.fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var target = $this.attr('data-target') ||\n (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n var $target = $(document).find(target)\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n var uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n ]\n\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n }\n\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase()\n\n if ($.inArray(attrName, allowedAttributeList) !== -1) {\n if ($.inArray(attrName, uriAttrs) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n var regExp = $(allowedAttributeList).filter(function (index, value) {\n return value instanceof RegExp\n })\n\n // Check if a regular expression validates the attribute.\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n // IE 8 and below don't support createHTMLDocument\n if (!document.implementation || !document.implementation.createHTMLDocument) {\n return unsafeHtml\n }\n\n var createdDocument = document.implementation.createHTMLDocument('sanitization')\n createdDocument.body.innerHTML = unsafeHtml\n\n var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n var elements = $(createdDocument.body).find('*')\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var el = elements[i]\n var elName = el.nodeName.toLowerCase()\n\n if ($.inArray(elName, whitelistKeys) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n var attributeList = $.map(el.attributes, function (el) { return el })\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n el.removeAttribute(attributeList[j].nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n }\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.4.1'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n },\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n var dataAttributes = this.$element.data()\n\n for (var dataAttr in dataAttributes) {\n if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n delete dataAttributes[dataAttr]\n }\n }\n\n options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n if (options.sanitize) {\n options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n if (this.options.html) {\n if (this.options.sanitize) {\n title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n }\n\n $tip.find('.tooltip-inner').html(title)\n } else {\n $tip.find('.tooltip-inner').text(title)\n }\n\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n }\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.4.1'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n if (this.options.html) {\n var typeContent = typeof content\n\n if (this.options.sanitize) {\n title = this.sanitizeHtml(title)\n\n if (typeContent === 'string') {\n content = this.sanitizeHtml(content)\n }\n }\n\n $tip.find('.popover-title').html(title)\n $tip.find('.popover-content').children().detach().end()[\n typeContent === 'string' ? 'html' : 'append'\n ](content)\n } else {\n $tip.find('.popover-title').text(title)\n $tip.find('.popover-content').children().detach().end().text(content)\n }\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.4.1'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.4.1'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(document).find(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n this.$target = target\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.4.1'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","!function() {\n var d3 = {\n version: \"3.5.17\"\n };\n var d3_arraySlice = [].slice, d3_array = function(list) {\n return d3_arraySlice.call(list);\n };\n var d3_document = this.document;\n function d3_documentElement(node) {\n return node && (node.ownerDocument || node.document || node).documentElement;\n }\n function d3_window(node) {\n return node && (node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView);\n }\n if (d3_document) {\n try {\n d3_array(d3_document.documentElement.childNodes)[0].nodeType;\n } catch (e) {\n d3_array = function(list) {\n var i = list.length, array = new Array(i);\n while (i--) array[i] = list[i];\n return array;\n };\n }\n }\n if (!Date.now) Date.now = function() {\n return +new Date();\n };\n if (d3_document) {\n try {\n d3_document.createElement(\"DIV\").style.setProperty(\"opacity\", 0, \"\");\n } catch (error) {\n var d3_element_prototype = this.Element.prototype, d3_element_setAttribute = d3_element_prototype.setAttribute, d3_element_setAttributeNS = d3_element_prototype.setAttributeNS, d3_style_prototype = this.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;\n d3_element_prototype.setAttribute = function(name, value) {\n d3_element_setAttribute.call(this, name, value + \"\");\n };\n d3_element_prototype.setAttributeNS = function(space, local, value) {\n d3_element_setAttributeNS.call(this, space, local, value + \"\");\n };\n d3_style_prototype.setProperty = function(name, value, priority) {\n d3_style_setProperty.call(this, name, value + \"\", priority);\n };\n }\n }\n d3.ascending = d3_ascending;\n function d3_ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n }\n d3.descending = function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n };\n d3.min = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;\n }\n return a;\n };\n d3.max = function(array, f) {\n var i = -1, n = array.length, a, b;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;\n }\n return a;\n };\n d3.extent = function(array, f) {\n var i = -1, n = array.length, a, b, c;\n if (arguments.length === 1) {\n while (++i < n) if ((b = array[i]) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = array[i]) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n } else {\n while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) {\n a = c = b;\n break;\n }\n while (++i < n) if ((b = f.call(array, array[i], i)) != null) {\n if (a > b) a = b;\n if (c < b) c = b;\n }\n }\n return [ a, c ];\n };\n function d3_number(x) {\n return x === null ? NaN : +x;\n }\n function d3_numeric(x) {\n return !isNaN(x);\n }\n d3.sum = function(array, f) {\n var s = 0, n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = +array[i])) s += a;\n } else {\n while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;\n }\n return s;\n };\n d3.mean = function(array, f) {\n var s = 0, n = array.length, a, i = -1, j = n;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;\n }\n if (j) return s / j;\n };\n d3.quantile = function(values, p) {\n var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;\n return e ? v + e * (values[h] - v) : v;\n };\n d3.median = function(array, f) {\n var numbers = [], n = array.length, a, i = -1;\n if (arguments.length === 1) {\n while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);\n } else {\n while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);\n }\n if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);\n };\n d3.variance = function(array, f) {\n var n = array.length, m = 0, a, d, s = 0, i = -1, j = 0;\n if (arguments.length === 1) {\n while (++i < n) {\n if (d3_numeric(a = d3_number(array[i]))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n } else {\n while (++i < n) {\n if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {\n d = a - m;\n m += d / ++j;\n s += d * (a - m);\n }\n }\n }\n if (j > 1) return s / (j - 1);\n };\n d3.deviation = function() {\n var v = d3.variance.apply(this, arguments);\n return v ? Math.sqrt(v) : v;\n };\n function d3_bisector(compare) {\n return {\n left: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (arguments.length < 3) lo = 0;\n if (arguments.length < 4) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1;\n }\n return lo;\n }\n };\n }\n var d3_bisect = d3_bisector(d3_ascending);\n d3.bisectLeft = d3_bisect.left;\n d3.bisect = d3.bisectRight = d3_bisect.right;\n d3.bisector = function(f) {\n return d3_bisector(f.length === 1 ? function(d, x) {\n return d3_ascending(f(d), x);\n } : f);\n };\n d3.shuffle = function(array, i0, i1) {\n if ((m = arguments.length) < 3) {\n i1 = array.length;\n if (m < 2) i0 = 0;\n }\n var m = i1 - i0, t, i;\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;\n }\n return array;\n };\n d3.permute = function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n };\n d3.pairs = function(array) {\n var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = [ p0 = p1, p1 = array[++i] ];\n return pairs;\n };\n d3.transpose = function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = d3.min(matrix, d3_transposeLength), transpose = new Array(m); ++i < m; ) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n; ) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n };\n function d3_transposeLength(d) {\n return d.length;\n }\n d3.zip = function() {\n return d3.transpose(arguments);\n };\n d3.keys = function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n };\n d3.values = function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n };\n d3.entries = function(map) {\n var entries = [];\n for (var key in map) entries.push({\n key: key,\n value: map[key]\n });\n return entries;\n };\n d3.merge = function(arrays) {\n var n = arrays.length, m, i = -1, j = 0, merged, array;\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n return merged;\n };\n var abs = Math.abs;\n d3.range = function(start, stop, step) {\n if (arguments.length < 3) {\n step = 1;\n if (arguments.length < 2) {\n stop = start;\n start = 0;\n }\n }\n if ((stop - start) / step === Infinity) throw new Error(\"infinite range\");\n var range = [], k = d3_range_integerScale(abs(step)), i = -1, j;\n start *= k, stop *= k, step *= k;\n if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);\n return range;\n };\n function d3_range_integerScale(x) {\n var k = 1;\n while (x * k % 1) k *= 10;\n return k;\n }\n function d3_class(ctor, properties) {\n for (var key in properties) {\n Object.defineProperty(ctor.prototype, key, {\n value: properties[key],\n enumerable: false\n });\n }\n }\n d3.map = function(object, f) {\n var map = new d3_Map();\n if (object instanceof d3_Map) {\n object.forEach(function(key, value) {\n map.set(key, value);\n });\n } else if (Array.isArray(object)) {\n var i = -1, n = object.length, o;\n if (arguments.length === 1) while (++i < n) map.set(i, object[i]); else while (++i < n) map.set(f.call(object, o = object[i], i), o);\n } else {\n for (var key in object) map.set(key, object[key]);\n }\n return map;\n };\n function d3_Map() {\n this._ = Object.create(null);\n }\n var d3_map_proto = \"__proto__\", d3_map_zero = \"\\x00\";\n d3_class(d3_Map, {\n has: d3_map_has,\n get: function(key) {\n return this._[d3_map_escape(key)];\n },\n set: function(key, value) {\n return this._[d3_map_escape(key)] = value;\n },\n remove: d3_map_remove,\n keys: d3_map_keys,\n values: function() {\n var values = [];\n for (var key in this._) values.push(this._[key]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var key in this._) entries.push({\n key: d3_map_unescape(key),\n value: this._[key]\n });\n return entries;\n },\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);\n }\n });\n function d3_map_escape(key) {\n return (key += \"\") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;\n }\n function d3_map_unescape(key) {\n return (key += \"\")[0] === d3_map_zero ? key.slice(1) : key;\n }\n function d3_map_has(key) {\n return d3_map_escape(key) in this._;\n }\n function d3_map_remove(key) {\n return (key = d3_map_escape(key)) in this._ && delete this._[key];\n }\n function d3_map_keys() {\n var keys = [];\n for (var key in this._) keys.push(d3_map_unescape(key));\n return keys;\n }\n function d3_map_size() {\n var size = 0;\n for (var key in this._) ++size;\n return size;\n }\n function d3_map_empty() {\n for (var key in this._) return false;\n return true;\n }\n d3.nest = function() {\n var nest = {}, keys = [], sortKeys = [], sortValues, rollup;\n function map(mapType, array, depth) {\n if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;\n var i = -1, n = array.length, key = keys[depth++], keyValue, object, setter, valuesByKey = new d3_Map(), values;\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(object = array[i]))) {\n values.push(object);\n } else {\n valuesByKey.set(keyValue, [ object ]);\n }\n }\n if (mapType) {\n object = mapType();\n setter = function(keyValue, values) {\n object.set(keyValue, map(mapType, values, depth));\n };\n } else {\n object = {};\n setter = function(keyValue, values) {\n object[keyValue] = map(mapType, values, depth);\n };\n }\n valuesByKey.forEach(setter);\n return object;\n }\n function entries(map, depth) {\n if (depth >= keys.length) return map;\n var array = [], sortKey = sortKeys[depth++];\n map.forEach(function(key, keyMap) {\n array.push({\n key: key,\n values: entries(keyMap, depth)\n });\n });\n return sortKey ? array.sort(function(a, b) {\n return sortKey(a.key, b.key);\n }) : array;\n }\n nest.map = function(array, mapType) {\n return map(mapType, array, 0);\n };\n nest.entries = function(array) {\n return entries(map(d3.map, array, 0), 0);\n };\n nest.key = function(d) {\n keys.push(d);\n return nest;\n };\n nest.sortKeys = function(order) {\n sortKeys[keys.length - 1] = order;\n return nest;\n };\n nest.sortValues = function(order) {\n sortValues = order;\n return nest;\n };\n nest.rollup = function(f) {\n rollup = f;\n return nest;\n };\n return nest;\n };\n d3.set = function(array) {\n var set = new d3_Set();\n if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);\n return set;\n };\n function d3_Set() {\n this._ = Object.create(null);\n }\n d3_class(d3_Set, {\n has: d3_map_has,\n add: function(key) {\n this._[d3_map_escape(key += \"\")] = true;\n return key;\n },\n remove: d3_map_remove,\n values: d3_map_keys,\n size: d3_map_size,\n empty: d3_map_empty,\n forEach: function(f) {\n for (var key in this._) f.call(this, d3_map_unescape(key));\n }\n });\n d3.behavior = {};\n function d3_identity(d) {\n return d;\n }\n d3.rebind = function(target, source) {\n var i = 1, n = arguments.length, method;\n while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);\n return target;\n };\n function d3_rebind(target, source, method) {\n return function() {\n var value = method.apply(source, arguments);\n return value === source ? target : value;\n };\n }\n function d3_vendorSymbol(object, name) {\n if (name in object) return name;\n name = name.charAt(0).toUpperCase() + name.slice(1);\n for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {\n var prefixName = d3_vendorPrefixes[i] + name;\n if (prefixName in object) return prefixName;\n }\n }\n var d3_vendorPrefixes = [ \"webkit\", \"ms\", \"moz\", \"Moz\", \"o\", \"O\" ];\n function d3_noop() {}\n d3.dispatch = function() {\n var dispatch = new d3_dispatch(), i = -1, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n return dispatch;\n };\n function d3_dispatch() {}\n d3_dispatch.prototype.on = function(type, listener) {\n var i = type.indexOf(\".\"), name = \"\";\n if (i >= 0) {\n name = type.slice(i + 1);\n type = type.slice(0, i);\n }\n if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);\n if (arguments.length === 2) {\n if (listener == null) for (type in this) {\n if (this.hasOwnProperty(type)) this[type].on(name, null);\n }\n return this;\n }\n };\n function d3_dispatch_event(dispatch) {\n var listeners = [], listenerByName = new d3_Map();\n function event() {\n var z = listeners, i = -1, n = z.length, l;\n while (++i < n) if (l = z[i].on) l.apply(this, arguments);\n return dispatch;\n }\n event.on = function(name, listener) {\n var l = listenerByName.get(name), i;\n if (arguments.length < 2) return l && l.on;\n if (l) {\n l.on = null;\n listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));\n listenerByName.remove(name);\n }\n if (listener) listeners.push(listenerByName.set(name, {\n on: listener\n }));\n return dispatch;\n };\n return event;\n }\n d3.event = null;\n function d3_eventPreventDefault() {\n d3.event.preventDefault();\n }\n function d3_eventSource() {\n var e = d3.event, s;\n while (s = e.sourceEvent) e = s;\n return e;\n }\n function d3_eventDispatch(target) {\n var dispatch = new d3_dispatch(), i = 0, n = arguments.length;\n while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);\n dispatch.of = function(thiz, argumentz) {\n return function(e1) {\n try {\n var e0 = e1.sourceEvent = d3.event;\n e1.target = target;\n d3.event = e1;\n dispatch[e1.type].apply(thiz, argumentz);\n } finally {\n d3.event = e0;\n }\n };\n };\n return dispatch;\n }\n d3.requote = function(s) {\n return s.replace(d3_requote_re, \"\\\\$&\");\n };\n var d3_requote_re = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n var d3_subclass = {}.__proto__ ? function(object, prototype) {\n object.__proto__ = prototype;\n } : function(object, prototype) {\n for (var property in prototype) object[property] = prototype[property];\n };\n function d3_selection(groups) {\n d3_subclass(groups, d3_selectionPrototype);\n return groups;\n }\n var d3_select = function(s, n) {\n return n.querySelector(s);\n }, d3_selectAll = function(s, n) {\n return n.querySelectorAll(s);\n }, d3_selectMatches = function(n, s) {\n var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, \"matchesSelector\")];\n d3_selectMatches = function(n, s) {\n return d3_selectMatcher.call(n, s);\n };\n return d3_selectMatches(n, s);\n };\n if (typeof Sizzle === \"function\") {\n d3_select = function(s, n) {\n return Sizzle(s, n)[0] || null;\n };\n d3_selectAll = Sizzle;\n d3_selectMatches = Sizzle.matchesSelector;\n }\n d3.selection = function() {\n return d3.select(d3_document.documentElement);\n };\n var d3_selectionPrototype = d3.selection.prototype = [];\n d3_selectionPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, group, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(subnode = selector.call(node, node.__data__, i, j));\n if (subnode && \"__data__\" in node) subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selector(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_select(selector, this);\n };\n }\n d3_selectionPrototype.selectAll = function(selector) {\n var subgroups = [], subgroup, node;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));\n subgroup.parentNode = node;\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_selectorAll(selector) {\n return typeof selector === \"function\" ? selector : function() {\n return d3_selectAll(selector, this);\n };\n }\n var d3_nsXhtml = \"http://www.w3.org/1999/xhtml\";\n var d3_nsPrefix = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: d3_nsXhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n };\n d3.ns = {\n prefix: d3_nsPrefix,\n qualify: function(name) {\n var i = name.indexOf(\":\"), prefix = name;\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return d3_nsPrefix.hasOwnProperty(prefix) ? {\n space: d3_nsPrefix[prefix],\n local: name\n } : name;\n }\n };\n d3_selectionPrototype.attr = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node();\n name = d3.ns.qualify(name);\n return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);\n }\n for (value in name) this.each(d3_selection_attr(value, name[value]));\n return this;\n }\n return this.each(d3_selection_attr(name, value));\n };\n function d3_selection_attr(name, value) {\n name = d3.ns.qualify(name);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrConstant() {\n this.setAttribute(name, value);\n }\n function attrConstantNS() {\n this.setAttributeNS(name.space, name.local, value);\n }\n function attrFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);\n }\n function attrFunctionNS() {\n var x = value.apply(this, arguments);\n if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);\n }\n return value == null ? name.local ? attrNullNS : attrNull : typeof value === \"function\" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;\n }\n function d3_collapse(s) {\n return s.trim().replace(/\\s+/g, \" \");\n }\n d3_selectionPrototype.classed = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") {\n var node = this.node(), n = (name = d3_selection_classes(name)).length, i = -1;\n if (value = node.classList) {\n while (++i < n) if (!value.contains(name[i])) return false;\n } else {\n value = node.getAttribute(\"class\");\n while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;\n }\n return true;\n }\n for (value in name) this.each(d3_selection_classed(value, name[value]));\n return this;\n }\n return this.each(d3_selection_classed(name, value));\n };\n function d3_selection_classedRe(name) {\n return new RegExp(\"(?:^|\\\\s+)\" + d3.requote(name) + \"(?:\\\\s+|$)\", \"g\");\n }\n function d3_selection_classes(name) {\n return (name + \"\").trim().split(/^|\\s+/);\n }\n function d3_selection_classed(name, value) {\n name = d3_selection_classes(name).map(d3_selection_classedName);\n var n = name.length;\n function classedConstant() {\n var i = -1;\n while (++i < n) name[i](this, value);\n }\n function classedFunction() {\n var i = -1, x = value.apply(this, arguments);\n while (++i < n) name[i](this, x);\n }\n return typeof value === \"function\" ? classedFunction : classedConstant;\n }\n function d3_selection_classedName(name) {\n var re = d3_selection_classedRe(name);\n return function(node, value) {\n if (c = node.classList) return value ? c.add(name) : c.remove(name);\n var c = node.getAttribute(\"class\") || \"\";\n if (value) {\n re.lastIndex = 0;\n if (!re.test(c)) node.setAttribute(\"class\", d3_collapse(c + \" \" + name));\n } else {\n node.setAttribute(\"class\", d3_collapse(c.replace(re, \" \")));\n }\n };\n }\n d3_selectionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.each(d3_selection_style(priority, name[priority], value));\n return this;\n }\n if (n < 2) {\n var node = this.node();\n return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);\n }\n priority = \"\";\n }\n return this.each(d3_selection_style(name, value, priority));\n };\n function d3_selection_style(name, value, priority) {\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleConstant() {\n this.style.setProperty(name, value, priority);\n }\n function styleFunction() {\n var x = value.apply(this, arguments);\n if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);\n }\n return value == null ? styleNull : typeof value === \"function\" ? styleFunction : styleConstant;\n }\n d3_selectionPrototype.property = function(name, value) {\n if (arguments.length < 2) {\n if (typeof name === \"string\") return this.node()[name];\n for (value in name) this.each(d3_selection_property(value, name[value]));\n return this;\n }\n return this.each(d3_selection_property(name, value));\n };\n function d3_selection_property(name, value) {\n function propertyNull() {\n delete this[name];\n }\n function propertyConstant() {\n this[name] = value;\n }\n function propertyFunction() {\n var x = value.apply(this, arguments);\n if (x == null) delete this[name]; else this[name] = x;\n }\n return value == null ? propertyNull : typeof value === \"function\" ? propertyFunction : propertyConstant;\n }\n d3_selectionPrototype.text = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n } : value == null ? function() {\n this.textContent = \"\";\n } : function() {\n this.textContent = value;\n }) : this.node().textContent;\n };\n d3_selectionPrototype.html = function(value) {\n return arguments.length ? this.each(typeof value === \"function\" ? function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n } : value == null ? function() {\n this.innerHTML = \"\";\n } : function() {\n this.innerHTML = value;\n }) : this.node().innerHTML;\n };\n d3_selectionPrototype.append = function(name) {\n name = d3_selection_creator(name);\n return this.select(function() {\n return this.appendChild(name.apply(this, arguments));\n });\n };\n function d3_selection_creator(name) {\n function create() {\n var document = this.ownerDocument, namespace = this.namespaceURI;\n return namespace === d3_nsXhtml && document.documentElement.namespaceURI === d3_nsXhtml ? document.createElement(name) : document.createElementNS(namespace, name);\n }\n function createNS() {\n return this.ownerDocument.createElementNS(name.space, name.local);\n }\n return typeof name === \"function\" ? name : (name = d3.ns.qualify(name)).local ? createNS : create;\n }\n d3_selectionPrototype.insert = function(name, before) {\n name = d3_selection_creator(name);\n before = d3_selection_selector(before);\n return this.select(function() {\n return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);\n });\n };\n d3_selectionPrototype.remove = function() {\n return this.each(d3_selectionRemove);\n };\n function d3_selectionRemove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n }\n d3_selectionPrototype.data = function(value, key) {\n var i = -1, n = this.length, group, node;\n if (!arguments.length) {\n value = new Array(n = (group = this[0]).length);\n while (++i < n) {\n if (node = group[i]) {\n value[i] = node.__data__;\n }\n }\n return value;\n }\n function bind(group, groupData) {\n var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;\n if (key) {\n var nodeByKeyValue = new d3_Map(), keyValues = new Array(n), keyValue;\n for (i = -1; ++i < n; ) {\n if (node = group[i]) {\n if (nodeByKeyValue.has(keyValue = key.call(node, node.__data__, i))) {\n exitNodes[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n keyValues[i] = keyValue;\n }\n }\n for (i = -1; ++i < m; ) {\n if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n } else if (node !== true) {\n updateNodes[i] = node;\n node.__data__ = nodeData;\n }\n nodeByKeyValue.set(keyValue, true);\n }\n for (i = -1; ++i < n; ) {\n if (i in keyValues && nodeByKeyValue.get(keyValues[i]) !== true) {\n exitNodes[i] = group[i];\n }\n }\n } else {\n for (i = -1; ++i < n0; ) {\n node = group[i];\n nodeData = groupData[i];\n if (node) {\n node.__data__ = nodeData;\n updateNodes[i] = node;\n } else {\n enterNodes[i] = d3_selection_dataNode(nodeData);\n }\n }\n for (;i < m; ++i) {\n enterNodes[i] = d3_selection_dataNode(groupData[i]);\n }\n for (;i < n; ++i) {\n exitNodes[i] = group[i];\n }\n }\n enterNodes.update = updateNodes;\n enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;\n enter.push(enterNodes);\n update.push(updateNodes);\n exit.push(exitNodes);\n }\n var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);\n if (typeof value === \"function\") {\n while (++i < n) {\n bind(group = this[i], value.call(group, group.parentNode.__data__, i));\n }\n } else {\n while (++i < n) {\n bind(group = this[i], value);\n }\n }\n update.enter = function() {\n return enter;\n };\n update.exit = function() {\n return exit;\n };\n return update;\n };\n function d3_selection_dataNode(data) {\n return {\n __data__: data\n };\n }\n d3_selectionPrototype.datum = function(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.property(\"__data__\");\n };\n d3_selectionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n subgroup.parentNode = (group = this[j]).parentNode;\n for (var i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_selection(subgroups);\n };\n function d3_selection_filter(selector) {\n return function() {\n return d3_selectMatches(this, selector);\n };\n }\n d3_selectionPrototype.order = function() {\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n };\n d3_selectionPrototype.sort = function(comparator) {\n comparator = d3_selection_sortComparator.apply(this, arguments);\n for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);\n return this.order();\n };\n function d3_selection_sortComparator(comparator) {\n if (!arguments.length) comparator = d3_ascending;\n return function(a, b) {\n return a && b ? comparator(a.__data__, b.__data__) : !a - !b;\n };\n }\n d3_selectionPrototype.each = function(callback) {\n return d3_selection_each(this, function(node, i, j) {\n callback.call(node, node.__data__, i, j);\n });\n };\n function d3_selection_each(groups, callback) {\n for (var j = 0, m = groups.length; j < m; j++) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {\n if (node = group[i]) callback(node, i, j);\n }\n }\n return groups;\n }\n d3_selectionPrototype.call = function(callback) {\n var args = d3_array(arguments);\n callback.apply(args[0] = this, args);\n return this;\n };\n d3_selectionPrototype.empty = function() {\n return !this.node();\n };\n d3_selectionPrototype.node = function() {\n for (var j = 0, m = this.length; j < m; j++) {\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n var node = group[i];\n if (node) return node;\n }\n }\n return null;\n };\n d3_selectionPrototype.size = function() {\n var n = 0;\n d3_selection_each(this, function() {\n ++n;\n });\n return n;\n };\n function d3_selection_enter(selection) {\n d3_subclass(selection, d3_selection_enterPrototype);\n return selection;\n }\n var d3_selection_enterPrototype = [];\n d3.selection.enter = d3_selection_enter;\n d3.selection.enter.prototype = d3_selection_enterPrototype;\n d3_selection_enterPrototype.append = d3_selectionPrototype.append;\n d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;\n d3_selection_enterPrototype.node = d3_selectionPrototype.node;\n d3_selection_enterPrototype.call = d3_selectionPrototype.call;\n d3_selection_enterPrototype.size = d3_selectionPrototype.size;\n d3_selection_enterPrototype.select = function(selector) {\n var subgroups = [], subgroup, subnode, upgroup, group, node;\n for (var j = -1, m = this.length; ++j < m; ) {\n upgroup = (group = this[j]).update;\n subgroups.push(subgroup = []);\n subgroup.parentNode = group.parentNode;\n for (var i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));\n subnode.__data__ = node.__data__;\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_selection(subgroups);\n };\n d3_selection_enterPrototype.insert = function(name, before) {\n if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);\n return d3_selectionPrototype.insert.call(this, name, before);\n };\n function d3_selection_enterInsertBefore(enter) {\n var i0, j0;\n return function(d, i, j) {\n var group = enter[j].update, n = group.length, node;\n if (j != j0) j0 = j, i0 = 0;\n if (i >= i0) i0 = i + 1;\n while (!(node = group[i0]) && ++i0 < n) ;\n return node;\n };\n }\n d3.select = function(node) {\n var group;\n if (typeof node === \"string\") {\n group = [ d3_select(node, d3_document) ];\n group.parentNode = d3_document.documentElement;\n } else {\n group = [ node ];\n group.parentNode = d3_documentElement(node);\n }\n return d3_selection([ group ]);\n };\n d3.selectAll = function(nodes) {\n var group;\n if (typeof nodes === \"string\") {\n group = d3_array(d3_selectAll(nodes, d3_document));\n group.parentNode = d3_document.documentElement;\n } else {\n group = d3_array(nodes);\n group.parentNode = null;\n }\n return d3_selection([ group ]);\n };\n d3_selectionPrototype.on = function(type, listener, capture) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof type !== \"string\") {\n if (n < 2) listener = false;\n for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));\n return this;\n }\n if (n < 2) return (n = this.node()[\"__on\" + type]) && n._;\n capture = false;\n }\n return this.each(d3_selection_on(type, listener, capture));\n };\n function d3_selection_on(type, listener, capture) {\n var name = \"__on\" + type, i = type.indexOf(\".\"), wrap = d3_selection_onListener;\n if (i > 0) type = type.slice(0, i);\n var filter = d3_selection_onFilters.get(type);\n if (filter) type = filter, wrap = d3_selection_onFilter;\n function onRemove() {\n var l = this[name];\n if (l) {\n this.removeEventListener(type, l, l.$);\n delete this[name];\n }\n }\n function onAdd() {\n var l = wrap(listener, d3_array(arguments));\n onRemove.call(this);\n this.addEventListener(type, this[name] = l, l.$ = capture);\n l._ = listener;\n }\n function removeAll() {\n var re = new RegExp(\"^__on([^.]+)\" + d3.requote(type) + \"$\"), match;\n for (var name in this) {\n if (match = name.match(re)) {\n var l = this[name];\n this.removeEventListener(match[1], l, l.$);\n delete this[name];\n }\n }\n }\n return i ? listener ? onAdd : onRemove : listener ? d3_noop : removeAll;\n }\n var d3_selection_onFilters = d3.map({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n });\n if (d3_document) {\n d3_selection_onFilters.forEach(function(k) {\n if (\"on\" + k in d3_document) d3_selection_onFilters.remove(k);\n });\n }\n function d3_selection_onListener(listener, argumentz) {\n return function(e) {\n var o = d3.event;\n d3.event = e;\n argumentz[0] = this.__data__;\n try {\n listener.apply(this, argumentz);\n } finally {\n d3.event = o;\n }\n };\n }\n function d3_selection_onFilter(listener, argumentz) {\n var l = d3_selection_onListener(listener, argumentz);\n return function(e) {\n var target = this, related = e.relatedTarget;\n if (!related || related !== target && !(related.compareDocumentPosition(target) & 8)) {\n l.call(target, e);\n }\n };\n }\n var d3_event_dragSelect, d3_event_dragId = 0;\n function d3_event_dragSuppress(node) {\n var name = \".dragsuppress-\" + ++d3_event_dragId, click = \"click\" + name, w = d3.select(d3_window(node)).on(\"touchmove\" + name, d3_eventPreventDefault).on(\"dragstart\" + name, d3_eventPreventDefault).on(\"selectstart\" + name, d3_eventPreventDefault);\n if (d3_event_dragSelect == null) {\n d3_event_dragSelect = \"onselectstart\" in node ? false : d3_vendorSymbol(node.style, \"userSelect\");\n }\n if (d3_event_dragSelect) {\n var style = d3_documentElement(node).style, select = style[d3_event_dragSelect];\n style[d3_event_dragSelect] = \"none\";\n }\n return function(suppressClick) {\n w.on(name, null);\n if (d3_event_dragSelect) style[d3_event_dragSelect] = select;\n if (suppressClick) {\n var off = function() {\n w.on(click, null);\n };\n w.on(click, function() {\n d3_eventPreventDefault();\n off();\n }, true);\n setTimeout(off, 0);\n }\n };\n }\n d3.mouse = function(container) {\n return d3_mousePoint(container, d3_eventSource());\n };\n var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;\n function d3_mousePoint(container, e) {\n if (e.changedTouches) e = e.changedTouches[0];\n var svg = container.ownerSVGElement || container;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n if (d3_mouse_bug44083 < 0) {\n var window = d3_window(container);\n if (window.scrollX || window.scrollY) {\n svg = d3.select(\"body\").append(\"svg\").style({\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n border: \"none\"\n }, \"important\");\n var ctm = svg[0][0].getScreenCTM();\n d3_mouse_bug44083 = !(ctm.f || ctm.e);\n svg.remove();\n }\n }\n if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY; else point.x = e.clientX, \n point.y = e.clientY;\n point = point.matrixTransform(container.getScreenCTM().inverse());\n return [ point.x, point.y ];\n }\n var rect = container.getBoundingClientRect();\n return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];\n }\n d3.touch = function(container, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;\n if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return d3_mousePoint(container, touch);\n }\n }\n };\n d3.behavior.drag = function() {\n var event = d3_eventDispatch(drag, \"drag\", \"dragstart\", \"dragend\"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_window, \"mousemove\", \"mouseup\"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_identity, \"touchmove\", \"touchend\");\n function drag() {\n this.on(\"mousedown.drag\", mousedown).on(\"touchstart.drag\", touchstart);\n }\n function dragstart(id, position, subject, move, end) {\n return function() {\n var that = this, target = d3.event.target.correspondingElement || d3.event.target, parent = that.parentNode, dispatch = event.of(that, arguments), dragged = 0, dragId = id(), dragName = \".drag\" + (dragId == null ? \"\" : \"-\" + dragId), dragOffset, dragSubject = d3.select(subject(target)).on(move + dragName, moved).on(end + dragName, ended), dragRestore = d3_event_dragSuppress(target), position0 = position(parent, dragId);\n if (origin) {\n dragOffset = origin.apply(that, arguments);\n dragOffset = [ dragOffset.x - position0[0], dragOffset.y - position0[1] ];\n } else {\n dragOffset = [ 0, 0 ];\n }\n dispatch({\n type: \"dragstart\"\n });\n function moved() {\n var position1 = position(parent, dragId), dx, dy;\n if (!position1) return;\n dx = position1[0] - position0[0];\n dy = position1[1] - position0[1];\n dragged |= dx | dy;\n position0 = position1;\n dispatch({\n type: \"drag\",\n x: position1[0] + dragOffset[0],\n y: position1[1] + dragOffset[1],\n dx: dx,\n dy: dy\n });\n }\n function ended() {\n if (!position(parent, dragId)) return;\n dragSubject.on(move + dragName, null).on(end + dragName, null);\n dragRestore(dragged);\n dispatch({\n type: \"dragend\"\n });\n }\n };\n }\n drag.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return drag;\n };\n return d3.rebind(drag, event, \"on\");\n };\n function d3_behavior_dragTouchId() {\n return d3.event.changedTouches[0].identifier;\n }\n d3.touches = function(container, touches) {\n if (arguments.length < 2) touches = d3_eventSource().touches;\n return touches ? d3_array(touches).map(function(touch) {\n var point = d3_mousePoint(container, touch);\n point.identifier = touch.identifier;\n return point;\n }) : [];\n };\n var ε = 1e-6, ε2 = ε * ε, π = Math.PI, τ = 2 * π, τε = τ - ε, halfπ = π / 2, d3_radians = π / 180, d3_degrees = 180 / π;\n function d3_sgn(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n function d3_cross2d(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n }\n function d3_acos(x) {\n return x > 1 ? 0 : x < -1 ? π : Math.acos(x);\n }\n function d3_asin(x) {\n return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);\n }\n function d3_sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n }\n function d3_cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n }\n function d3_tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n }\n function d3_haversin(x) {\n return (x = Math.sin(x / 2)) * x;\n }\n var ρ = Math.SQRT2, ρ2 = 2, ρ4 = 4;\n d3.interpolateZoom = function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < ε2) {\n S = Math.log(w1 / w0) / ρ;\n i = function(t) {\n return [ ux0 + t * dx, uy0 + t * dy, w0 * Math.exp(ρ * t * S) ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1), b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / ρ;\n i = function(t) {\n var s = t * S, coshr0 = d3_cosh(r0), u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));\n return [ ux0 + u * dx, uy0 + u * dy, w0 * coshr0 / d3_cosh(ρ * s + r0) ];\n };\n }\n i.duration = S * 1e3;\n return i;\n };\n d3.behavior.zoom = function() {\n var view = {\n x: 0,\n y: 0,\n k: 1\n }, translate0, center0, center, size = [ 960, 500 ], scaleExtent = d3_behavior_zoomInfinity, duration = 250, zooming = 0, mousedown = \"mousedown.zoom\", mousemove = \"mousemove.zoom\", mouseup = \"mouseup.zoom\", mousewheelTimer, touchstart = \"touchstart.zoom\", touchtime, event = d3_eventDispatch(zoom, \"zoomstart\", \"zoom\", \"zoomend\"), x0, x1, y0, y1;\n if (!d3_behavior_zoomWheel) {\n d3_behavior_zoomWheel = \"onwheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);\n }, \"wheel\") : \"onmousewheel\" in d3_document ? (d3_behavior_zoomDelta = function() {\n return d3.event.wheelDelta;\n }, \"mousewheel\") : (d3_behavior_zoomDelta = function() {\n return -d3.event.detail;\n }, \"MozMousePixelScroll\");\n }\n function zoom(g) {\n g.on(mousedown, mousedowned).on(d3_behavior_zoomWheel + \".zoom\", mousewheeled).on(\"dblclick.zoom\", dblclicked).on(touchstart, touchstarted);\n }\n zoom.event = function(g) {\n g.each(function() {\n var dispatch = event.of(this, arguments), view1 = view;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.zoom\", function() {\n view = this.__chart__ || {\n x: 0,\n y: 0,\n k: 1\n };\n zoomstarted(dispatch);\n }).tween(\"zoom:zoom\", function() {\n var dx = size[0], dy = size[1], cx = center0 ? center0[0] : dx / 2, cy = center0 ? center0[1] : dy / 2, i = d3.interpolateZoom([ (cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k ], [ (cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k ]);\n return function(t) {\n var l = i(t), k = dx / l[2];\n this.__chart__ = view = {\n x: cx - l[0] * k,\n y: cy - l[1] * k,\n k: k\n };\n zoomed(dispatch);\n };\n }).each(\"interrupt.zoom\", function() {\n zoomended(dispatch);\n }).each(\"end.zoom\", function() {\n zoomended(dispatch);\n });\n } else {\n this.__chart__ = view;\n zoomstarted(dispatch);\n zoomed(dispatch);\n zoomended(dispatch);\n }\n });\n };\n zoom.translate = function(_) {\n if (!arguments.length) return [ view.x, view.y ];\n view = {\n x: +_[0],\n y: +_[1],\n k: view.k\n };\n rescale();\n return zoom;\n };\n zoom.scale = function(_) {\n if (!arguments.length) return view.k;\n view = {\n x: view.x,\n y: view.y,\n k: null\n };\n scaleTo(+_);\n rescale();\n return zoom;\n };\n zoom.scaleExtent = function(_) {\n if (!arguments.length) return scaleExtent;\n scaleExtent = _ == null ? d3_behavior_zoomInfinity : [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.center = function(_) {\n if (!arguments.length) return center;\n center = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.size = function(_) {\n if (!arguments.length) return size;\n size = _ && [ +_[0], +_[1] ];\n return zoom;\n };\n zoom.duration = function(_) {\n if (!arguments.length) return duration;\n duration = +_;\n return zoom;\n };\n zoom.x = function(z) {\n if (!arguments.length) return x1;\n x1 = z;\n x0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n zoom.y = function(z) {\n if (!arguments.length) return y1;\n y1 = z;\n y0 = z.copy();\n view = {\n x: 0,\n y: 0,\n k: 1\n };\n return zoom;\n };\n function location(p) {\n return [ (p[0] - view.x) / view.k, (p[1] - view.y) / view.k ];\n }\n function point(l) {\n return [ l[0] * view.k + view.x, l[1] * view.k + view.y ];\n }\n function scaleTo(s) {\n view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));\n }\n function translateTo(p, l) {\n l = point(l);\n view.x += p[0] - l[0];\n view.y += p[1] - l[1];\n }\n function zoomTo(that, p, l, k) {\n that.__chart__ = {\n x: view.x,\n y: view.y,\n k: view.k\n };\n scaleTo(Math.pow(2, k));\n translateTo(center0 = p, l);\n that = d3.select(that);\n if (duration > 0) that = that.transition().duration(duration);\n that.call(zoom.event);\n }\n function rescale() {\n if (x1) x1.domain(x0.range().map(function(x) {\n return (x - view.x) / view.k;\n }).map(x0.invert));\n if (y1) y1.domain(y0.range().map(function(y) {\n return (y - view.y) / view.k;\n }).map(y0.invert));\n }\n function zoomstarted(dispatch) {\n if (!zooming++) dispatch({\n type: \"zoomstart\"\n });\n }\n function zoomed(dispatch) {\n rescale();\n dispatch({\n type: \"zoom\",\n scale: view.k,\n translate: [ view.x, view.y ]\n });\n }\n function zoomended(dispatch) {\n if (!--zooming) dispatch({\n type: \"zoomend\"\n }), center0 = null;\n }\n function mousedowned() {\n var that = this, dispatch = event.of(that, arguments), dragged = 0, subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended), location0 = location(d3.mouse(that)), dragRestore = d3_event_dragSuppress(that);\n d3_selection_interrupt.call(that);\n zoomstarted(dispatch);\n function moved() {\n dragged = 1;\n translateTo(d3.mouse(that), location0);\n zoomed(dispatch);\n }\n function ended() {\n subject.on(mousemove, null).on(mouseup, null);\n dragRestore(dragged);\n zoomended(dispatch);\n }\n }\n function touchstarted() {\n var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = \".zoom-\" + d3.event.changedTouches[0].identifier, touchmove = \"touchmove\" + zoomName, touchend = \"touchend\" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(that);\n started();\n zoomstarted(dispatch);\n subject.on(mousedown, null).on(touchstart, started);\n function relocate() {\n var touches = d3.touches(that);\n scale0 = view.k;\n touches.forEach(function(t) {\n if (t.identifier in locations0) locations0[t.identifier] = location(t);\n });\n return touches;\n }\n function started() {\n var target = d3.event.target;\n d3.select(target).on(touchmove, moved).on(touchend, ended);\n targets.push(target);\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n locations0[changed[i].identifier] = null;\n }\n var touches = relocate(), now = Date.now();\n if (touches.length === 1) {\n if (now - touchtime < 500) {\n var p = touches[0];\n zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);\n d3_eventPreventDefault();\n }\n touchtime = now;\n } else if (touches.length > 1) {\n var p = touches[0], q = touches[1], dx = p[0] - q[0], dy = p[1] - q[1];\n distance0 = dx * dx + dy * dy;\n }\n }\n function moved() {\n var touches = d3.touches(that), p0, l0, p1, l1;\n d3_selection_interrupt.call(that);\n for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {\n p1 = touches[i];\n if (l1 = locations0[p1.identifier]) {\n if (l0) break;\n p0 = p1, l0 = l1;\n }\n }\n if (l1) {\n var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1, scale1 = distance0 && Math.sqrt(distance1 / distance0);\n p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];\n l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];\n scaleTo(scale1 * scale0);\n }\n touchtime = null;\n translateTo(p0, l0);\n zoomed(dispatch);\n }\n function ended() {\n if (d3.event.touches.length) {\n var changed = d3.event.changedTouches;\n for (var i = 0, n = changed.length; i < n; ++i) {\n delete locations0[changed[i].identifier];\n }\n for (var identifier in locations0) {\n return void relocate();\n }\n }\n d3.selectAll(targets).on(zoomName, null);\n subject.on(mousedown, mousedowned).on(touchstart, touchstarted);\n dragRestore();\n zoomended(dispatch);\n }\n }\n function mousewheeled() {\n var dispatch = event.of(this, arguments);\n if (mousewheelTimer) clearTimeout(mousewheelTimer); else d3_selection_interrupt.call(this), \n translate0 = location(center0 = center || d3.mouse(this)), zoomstarted(dispatch);\n mousewheelTimer = setTimeout(function() {\n mousewheelTimer = null;\n zoomended(dispatch);\n }, 50);\n d3_eventPreventDefault();\n scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);\n translateTo(center0, translate0);\n zoomed(dispatch);\n }\n function dblclicked() {\n var p = d3.mouse(this), k = Math.log(view.k) / Math.LN2;\n zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);\n }\n return d3.rebind(zoom, event, \"on\");\n };\n var d3_behavior_zoomInfinity = [ 0, Infinity ], d3_behavior_zoomDelta, d3_behavior_zoomWheel;\n d3.color = d3_color;\n function d3_color() {}\n d3_color.prototype.toString = function() {\n return this.rgb() + \"\";\n };\n d3.hsl = d3_hsl;\n function d3_hsl(h, s, l) {\n return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l) : arguments.length < 2 ? h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l) : d3_rgb_parse(\"\" + h, d3_rgb_hsl, d3_hsl) : new d3_hsl(h, s, l);\n }\n var d3_hslPrototype = d3_hsl.prototype = new d3_color();\n d3_hslPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, this.l / k);\n };\n d3_hslPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_hsl(this.h, this.s, k * this.l);\n };\n d3_hslPrototype.rgb = function() {\n return d3_hsl_rgb(this.h, this.s, this.l);\n };\n function d3_hsl_rgb(h, s, l) {\n var m1, m2;\n h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;\n s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n m2 = l <= .5 ? l * (1 + s) : l + s - l * s;\n m1 = 2 * l - m2;\n function v(h) {\n if (h > 360) h -= 360; else if (h < 0) h += 360;\n if (h < 60) return m1 + (m2 - m1) * h / 60;\n if (h < 180) return m2;\n if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;\n return m1;\n }\n function vv(h) {\n return Math.round(v(h) * 255);\n }\n return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));\n }\n d3.hcl = d3_hcl;\n function d3_hcl(h, c, l) {\n return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l) : arguments.length < 2 ? h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l) : h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : new d3_hcl(h, c, l);\n }\n var d3_hclPrototype = d3_hcl.prototype = new d3_color();\n d3_hclPrototype.brighter = function(k) {\n return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.darker = function(k) {\n return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));\n };\n d3_hclPrototype.rgb = function() {\n return d3_hcl_lab(this.h, this.c, this.l).rgb();\n };\n function d3_hcl_lab(h, c, l) {\n if (isNaN(h)) h = 0;\n if (isNaN(c)) c = 0;\n return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);\n }\n d3.lab = d3_lab;\n function d3_lab(l, a, b) {\n return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b) : arguments.length < 2 ? l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b) : l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l) : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b) : new d3_lab(l, a, b);\n }\n var d3_lab_K = 18;\n var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;\n var d3_labPrototype = d3_lab.prototype = new d3_color();\n d3_labPrototype.brighter = function(k) {\n return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.darker = function(k) {\n return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);\n };\n d3_labPrototype.rgb = function() {\n return d3_lab_rgb(this.l, this.a, this.b);\n };\n function d3_lab_rgb(l, a, b) {\n var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;\n x = d3_lab_xyz(x) * d3_lab_X;\n y = d3_lab_xyz(y) * d3_lab_Y;\n z = d3_lab_xyz(z) * d3_lab_Z;\n return new d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));\n }\n function d3_lab_hcl(l, a, b) {\n return l > 0 ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l) : new d3_hcl(NaN, NaN, l);\n }\n function d3_lab_xyz(x) {\n return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;\n }\n function d3_xyz_lab(x) {\n return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;\n }\n function d3_xyz_rgb(r) {\n return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));\n }\n d3.rgb = d3_rgb;\n function d3_rgb(r, g, b) {\n return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b) : arguments.length < 2 ? r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b) : d3_rgb_parse(\"\" + r, d3_rgb, d3_hsl_rgb) : new d3_rgb(r, g, b);\n }\n function d3_rgbNumber(value) {\n return new d3_rgb(value >> 16, value >> 8 & 255, value & 255);\n }\n function d3_rgbString(value) {\n return d3_rgbNumber(value) + \"\";\n }\n var d3_rgbPrototype = d3_rgb.prototype = new d3_color();\n d3_rgbPrototype.brighter = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n var r = this.r, g = this.g, b = this.b, i = 30;\n if (!r && !g && !b) return new d3_rgb(i, i, i);\n if (r && r < i) r = i;\n if (g && g < i) g = i;\n if (b && b < i) b = i;\n return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));\n };\n d3_rgbPrototype.darker = function(k) {\n k = Math.pow(.7, arguments.length ? k : 1);\n return new d3_rgb(k * this.r, k * this.g, k * this.b);\n };\n d3_rgbPrototype.hsl = function() {\n return d3_rgb_hsl(this.r, this.g, this.b);\n };\n d3_rgbPrototype.toString = function() {\n return \"#\" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);\n };\n function d3_rgb_hex(v) {\n return v < 16 ? \"0\" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);\n }\n function d3_rgb_parse(format, rgb, hsl) {\n var r = 0, g = 0, b = 0, m1, m2, color;\n m1 = /([a-z]+)\\((.*)\\)/.exec(format = format.toLowerCase());\n if (m1) {\n m2 = m1[2].split(\",\");\n switch (m1[1]) {\n case \"hsl\":\n {\n return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);\n }\n\n case \"rgb\":\n {\n return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));\n }\n }\n }\n if (color = d3_rgb_names.get(format)) {\n return rgb(color.r, color.g, color.b);\n }\n if (format != null && format.charAt(0) === \"#\" && !isNaN(color = parseInt(format.slice(1), 16))) {\n if (format.length === 4) {\n r = (color & 3840) >> 4;\n r = r >> 4 | r;\n g = color & 240;\n g = g >> 4 | g;\n b = color & 15;\n b = b << 4 | b;\n } else if (format.length === 7) {\n r = (color & 16711680) >> 16;\n g = (color & 65280) >> 8;\n b = color & 255;\n }\n }\n return rgb(r, g, b);\n }\n function d3_rgb_hsl(r, g, b) {\n var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;\n if (d) {\n s = l < .5 ? d / (max + min) : d / (2 - max - min);\n if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;\n h *= 60;\n } else {\n h = NaN;\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new d3_hsl(h, s, l);\n }\n function d3_rgb_lab(r, g, b) {\n r = d3_rgb_xyz(r);\n g = d3_rgb_xyz(g);\n b = d3_rgb_xyz(b);\n var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);\n return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));\n }\n function d3_rgb_xyz(r) {\n return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);\n }\n function d3_rgb_parseNumber(c) {\n var f = parseFloat(c);\n return c.charAt(c.length - 1) === \"%\" ? Math.round(f * 2.55) : f;\n }\n var d3_rgb_names = d3.map({\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n });\n d3_rgb_names.forEach(function(key, value) {\n d3_rgb_names.set(key, d3_rgbNumber(value));\n });\n function d3_functor(v) {\n return typeof v === \"function\" ? v : function() {\n return v;\n };\n }\n d3.functor = d3_functor;\n d3.xhr = d3_xhrType(d3_identity);\n function d3_xhrType(response) {\n return function(url, mimeType, callback) {\n if (arguments.length === 2 && typeof mimeType === \"function\") callback = mimeType, \n mimeType = null;\n return d3_xhr(url, mimeType, response, callback);\n };\n }\n function d3_xhr(url, mimeType, response, callback) {\n var xhr = {}, dispatch = d3.dispatch(\"beforesend\", \"progress\", \"load\", \"error\"), headers = {}, request = new XMLHttpRequest(), responseType = null;\n if (this.XDomainRequest && !(\"withCredentials\" in request) && /^(http(s)?:)?\\/\\//.test(url)) request = new XDomainRequest();\n \"onload\" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {\n request.readyState > 3 && respond();\n };\n function respond() {\n var status = request.status, result;\n if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {\n try {\n result = response.call(xhr, request);\n } catch (e) {\n dispatch.error.call(xhr, e);\n return;\n }\n dispatch.load.call(xhr, result);\n } else {\n dispatch.error.call(xhr, request);\n }\n }\n request.onprogress = function(event) {\n var o = d3.event;\n d3.event = event;\n try {\n dispatch.progress.call(xhr, request);\n } finally {\n d3.event = o;\n }\n };\n xhr.header = function(name, value) {\n name = (name + \"\").toLowerCase();\n if (arguments.length < 2) return headers[name];\n if (value == null) delete headers[name]; else headers[name] = value + \"\";\n return xhr;\n };\n xhr.mimeType = function(value) {\n if (!arguments.length) return mimeType;\n mimeType = value == null ? null : value + \"\";\n return xhr;\n };\n xhr.responseType = function(value) {\n if (!arguments.length) return responseType;\n responseType = value;\n return xhr;\n };\n xhr.response = function(value) {\n response = value;\n return xhr;\n };\n [ \"get\", \"post\" ].forEach(function(method) {\n xhr[method] = function() {\n return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));\n };\n });\n xhr.send = function(method, data, callback) {\n if (arguments.length === 2 && typeof data === \"function\") callback = data, data = null;\n request.open(method, url, true);\n if (mimeType != null && !(\"accept\" in headers)) headers[\"accept\"] = mimeType + \",*/*\";\n if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);\n if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);\n if (responseType != null) request.responseType = responseType;\n if (callback != null) xhr.on(\"error\", callback).on(\"load\", function(request) {\n callback(null, request);\n });\n dispatch.beforesend.call(xhr, request);\n request.send(data == null ? null : data);\n return xhr;\n };\n xhr.abort = function() {\n request.abort();\n return xhr;\n };\n d3.rebind(xhr, dispatch, \"on\");\n return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));\n }\n function d3_xhr_fixCallback(callback) {\n return callback.length === 1 ? function(error, request) {\n callback(error == null ? request : null);\n } : callback;\n }\n function d3_xhrHasResponse(request) {\n var type = request.responseType;\n return type && type !== \"text\" ? request.response : request.responseText;\n }\n d3.dsv = function(delimiter, mimeType) {\n var reFormat = new RegExp('[\"' + delimiter + \"\\n]\"), delimiterCode = delimiter.charCodeAt(0);\n function dsv(url, row, callback) {\n if (arguments.length < 3) callback = row, row = null;\n var xhr = d3_xhr(url, mimeType, row == null ? response : typedResponse(row), callback);\n xhr.row = function(_) {\n return arguments.length ? xhr.response((row = _) == null ? response : typedResponse(_)) : row;\n };\n return xhr;\n }\n function response(request) {\n return dsv.parse(request.responseText);\n }\n function typedResponse(f) {\n return function(request) {\n return dsv.parse(request.responseText, f);\n };\n }\n dsv.parse = function(text, f) {\n var o;\n return dsv.parseRows(text, function(row, i) {\n if (o) return o(row, i - 1);\n var a = new Function(\"d\", \"return {\" + row.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"]\";\n }).join(\",\") + \"}\");\n o = f ? function(row, i) {\n return f(a(row), i);\n } : a;\n });\n };\n dsv.parseRows = function(text, f) {\n var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;\n function token() {\n if (I >= N) return EOF;\n if (eol) return eol = false, EOL;\n var j = I;\n if (text.charCodeAt(j) === 34) {\n var i = j;\n while (i++ < N) {\n if (text.charCodeAt(i) === 34) {\n if (text.charCodeAt(i + 1) !== 34) break;\n ++i;\n }\n }\n I = i + 2;\n var c = text.charCodeAt(i + 1);\n if (c === 13) {\n eol = true;\n if (text.charCodeAt(i + 2) === 10) ++I;\n } else if (c === 10) {\n eol = true;\n }\n return text.slice(j + 1, i).replace(/\"\"/g, '\"');\n }\n while (I < N) {\n var c = text.charCodeAt(I++), k = 1;\n if (c === 10) eol = true; else if (c === 13) {\n eol = true;\n if (text.charCodeAt(I) === 10) ++I, ++k;\n } else if (c !== delimiterCode) continue;\n return text.slice(j, I - k);\n }\n return text.slice(j);\n }\n while ((t = token()) !== EOF) {\n var a = [];\n while (t !== EOL && t !== EOF) {\n a.push(t);\n t = token();\n }\n if (f && (a = f(a, n++)) == null) continue;\n rows.push(a);\n }\n return rows;\n };\n dsv.format = function(rows) {\n if (Array.isArray(rows[0])) return dsv.formatRows(rows);\n var fieldSet = new d3_Set(), fields = [];\n rows.forEach(function(row) {\n for (var field in row) {\n if (!fieldSet.has(field)) {\n fields.push(fieldSet.add(field));\n }\n }\n });\n return [ fields.map(formatValue).join(delimiter) ].concat(rows.map(function(row) {\n return fields.map(function(field) {\n return formatValue(row[field]);\n }).join(delimiter);\n })).join(\"\\n\");\n };\n dsv.formatRows = function(rows) {\n return rows.map(formatRow).join(\"\\n\");\n };\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n function formatValue(text) {\n return reFormat.test(text) ? '\"' + text.replace(/\\\"/g, '\"\"') + '\"' : text;\n }\n return dsv;\n };\n d3.csv = d3.dsv(\",\", \"text/csv\");\n d3.tsv = d3.dsv(\"\t\", \"text/tab-separated-values\");\n var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_frame = this[d3_vendorSymbol(this, \"requestAnimationFrame\")] || function(callback) {\n setTimeout(callback, 17);\n };\n d3.timer = function() {\n d3_timer.apply(this, arguments);\n };\n function d3_timer(callback, delay, then) {\n var n = arguments.length;\n if (n < 2) delay = 0;\n if (n < 3) then = Date.now();\n var time = then + delay, timer = {\n c: callback,\n t: time,\n n: null\n };\n if (d3_timer_queueTail) d3_timer_queueTail.n = timer; else d3_timer_queueHead = timer;\n d3_timer_queueTail = timer;\n if (!d3_timer_interval) {\n d3_timer_timeout = clearTimeout(d3_timer_timeout);\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n return timer;\n }\n function d3_timer_step() {\n var now = d3_timer_mark(), delay = d3_timer_sweep() - now;\n if (delay > 24) {\n if (isFinite(delay)) {\n clearTimeout(d3_timer_timeout);\n d3_timer_timeout = setTimeout(d3_timer_step, delay);\n }\n d3_timer_interval = 0;\n } else {\n d3_timer_interval = 1;\n d3_timer_frame(d3_timer_step);\n }\n }\n d3.timer.flush = function() {\n d3_timer_mark();\n d3_timer_sweep();\n };\n function d3_timer_mark() {\n var now = Date.now(), timer = d3_timer_queueHead;\n while (timer) {\n if (now >= timer.t && timer.c(now - timer.t)) timer.c = null;\n timer = timer.n;\n }\n return now;\n }\n function d3_timer_sweep() {\n var t0, t1 = d3_timer_queueHead, time = Infinity;\n while (t1) {\n if (t1.c) {\n if (t1.t < time) time = t1.t;\n t1 = (t0 = t1).n;\n } else {\n t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;\n }\n }\n d3_timer_queueTail = t0;\n return time;\n }\n function d3_format_precision(x, p) {\n return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);\n }\n d3.round = function(x, n) {\n return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);\n };\n var d3_formatPrefixes = [ \"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\" ].map(d3_formatPrefix);\n d3.formatPrefix = function(value, precision) {\n var i = 0;\n if (value = +value) {\n if (value < 0) value *= -1;\n if (precision) value = d3.round(value, d3_format_precision(value, precision));\n i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);\n i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));\n }\n return d3_formatPrefixes[8 + i / 3];\n };\n function d3_formatPrefix(d, i) {\n var k = Math.pow(10, abs(8 - i) * 3);\n return {\n scale: i > 8 ? function(d) {\n return d / k;\n } : function(d) {\n return d * k;\n },\n symbol: d\n };\n }\n function d3_locale_numberFormat(locale) {\n var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping && locale_thousands ? function(value, width) {\n var i = value.length, t = [], j = 0, g = locale_grouping[0], length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = locale_grouping[j = (j + 1) % locale_grouping.length];\n }\n return t.reverse().join(locale_thousands);\n } : d3_identity;\n return function(specifier) {\n var match = d3_format_re.exec(specifier), fill = match[1] || \" \", align = match[2] || \">\", sign = match[3] || \"-\", symbol = match[4] || \"\", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, prefix = \"\", suffix = \"\", integer = false, exponent = true;\n if (precision) precision = +precision.substring(1);\n if (zfill || fill === \"0\" && align === \"=\") {\n zfill = fill = \"0\";\n align = \"=\";\n }\n switch (type) {\n case \"n\":\n comma = true;\n type = \"g\";\n break;\n\n case \"%\":\n scale = 100;\n suffix = \"%\";\n type = \"f\";\n break;\n\n case \"p\":\n scale = 100;\n suffix = \"%\";\n type = \"r\";\n break;\n\n case \"b\":\n case \"o\":\n case \"x\":\n case \"X\":\n if (symbol === \"#\") prefix = \"0\" + type.toLowerCase();\n\n case \"c\":\n exponent = false;\n\n case \"d\":\n integer = true;\n precision = 0;\n break;\n\n case \"s\":\n scale = -1;\n type = \"r\";\n break;\n }\n if (symbol === \"$\") prefix = locale_currency[0], suffix = locale_currency[1];\n if (type == \"r\" && !precision) type = \"g\";\n if (precision != null) {\n if (type == \"g\") precision = Math.max(1, Math.min(21, precision)); else if (type == \"e\" || type == \"f\") precision = Math.max(0, Math.min(20, precision));\n }\n type = d3_format_types.get(type) || d3_format_typeDefault;\n var zcomma = zfill && comma;\n return function(value) {\n var fullSuffix = suffix;\n if (integer && value % 1) return \"\";\n var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, \"-\") : sign === \"-\" ? \"\" : sign;\n if (scale < 0) {\n var unit = d3.formatPrefix(value, precision);\n value = unit.scale(value);\n fullSuffix = unit.symbol + suffix;\n } else {\n value *= scale;\n }\n value = type(value, precision);\n var i = value.lastIndexOf(\".\"), before, after;\n if (i < 0) {\n var j = exponent ? value.lastIndexOf(\"e\") : -1;\n if (j < 0) before = value, after = \"\"; else before = value.substring(0, j), after = value.substring(j);\n } else {\n before = value.substring(0, i);\n after = locale_decimal + value.substring(i + 1);\n }\n if (!zfill && comma) before = formatGroup(before, Infinity);\n var length = prefix.length + before.length + after.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : \"\";\n if (zcomma) before = formatGroup(padding + before, padding.length ? width - after.length : Infinity);\n negative += prefix;\n value = before + after;\n return (align === \"<\" ? negative + value + padding : align === \">\" ? padding + negative + value : align === \"^\" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + fullSuffix;\n };\n };\n }\n var d3_format_re = /(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i;\n var d3_format_types = d3.map({\n b: function(x) {\n return x.toString(2);\n },\n c: function(x) {\n return String.fromCharCode(x);\n },\n o: function(x) {\n return x.toString(8);\n },\n x: function(x) {\n return x.toString(16);\n },\n X: function(x) {\n return x.toString(16).toUpperCase();\n },\n g: function(x, p) {\n return x.toPrecision(p);\n },\n e: function(x, p) {\n return x.toExponential(p);\n },\n f: function(x, p) {\n return x.toFixed(p);\n },\n r: function(x, p) {\n return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));\n }\n });\n function d3_format_typeDefault(x) {\n return x + \"\";\n }\n var d3_time = d3.time = {}, d3_date = Date;\n function d3_date_utc() {\n this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);\n }\n d3_date_utc.prototype = {\n getDate: function() {\n return this._.getUTCDate();\n },\n getDay: function() {\n return this._.getUTCDay();\n },\n getFullYear: function() {\n return this._.getUTCFullYear();\n },\n getHours: function() {\n return this._.getUTCHours();\n },\n getMilliseconds: function() {\n return this._.getUTCMilliseconds();\n },\n getMinutes: function() {\n return this._.getUTCMinutes();\n },\n getMonth: function() {\n return this._.getUTCMonth();\n },\n getSeconds: function() {\n return this._.getUTCSeconds();\n },\n getTime: function() {\n return this._.getTime();\n },\n getTimezoneOffset: function() {\n return 0;\n },\n valueOf: function() {\n return this._.valueOf();\n },\n setDate: function() {\n d3_time_prototype.setUTCDate.apply(this._, arguments);\n },\n setDay: function() {\n d3_time_prototype.setUTCDay.apply(this._, arguments);\n },\n setFullYear: function() {\n d3_time_prototype.setUTCFullYear.apply(this._, arguments);\n },\n setHours: function() {\n d3_time_prototype.setUTCHours.apply(this._, arguments);\n },\n setMilliseconds: function() {\n d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);\n },\n setMinutes: function() {\n d3_time_prototype.setUTCMinutes.apply(this._, arguments);\n },\n setMonth: function() {\n d3_time_prototype.setUTCMonth.apply(this._, arguments);\n },\n setSeconds: function() {\n d3_time_prototype.setUTCSeconds.apply(this._, arguments);\n },\n setTime: function() {\n d3_time_prototype.setTime.apply(this._, arguments);\n }\n };\n var d3_time_prototype = Date.prototype;\n function d3_time_interval(local, step, number) {\n function round(date) {\n var d0 = local(date), d1 = offset(d0, 1);\n return date - d0 < d1 - date ? d0 : d1;\n }\n function ceil(date) {\n step(date = local(new d3_date(date - 1)), 1);\n return date;\n }\n function offset(date, k) {\n step(date = new d3_date(+date), k);\n return date;\n }\n function range(t0, t1, dt) {\n var time = ceil(t0), times = [];\n if (dt > 1) {\n while (time < t1) {\n if (!(number(time) % dt)) times.push(new Date(+time));\n step(time, 1);\n }\n } else {\n while (time < t1) times.push(new Date(+time)), step(time, 1);\n }\n return times;\n }\n function range_utc(t0, t1, dt) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = t0;\n return range(utc, t1, dt);\n } finally {\n d3_date = Date;\n }\n }\n local.floor = local;\n local.round = round;\n local.ceil = ceil;\n local.offset = offset;\n local.range = range;\n var utc = local.utc = d3_time_interval_utc(local);\n utc.floor = utc;\n utc.round = d3_time_interval_utc(round);\n utc.ceil = d3_time_interval_utc(ceil);\n utc.offset = d3_time_interval_utc(offset);\n utc.range = range_utc;\n return local;\n }\n function d3_time_interval_utc(method) {\n return function(date, k) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date_utc();\n utc._ = date;\n return method(utc, k)._;\n } finally {\n d3_date = Date;\n }\n };\n }\n d3_time.year = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setMonth(0, 1);\n return date;\n }, function(date, offset) {\n date.setFullYear(date.getFullYear() + offset);\n }, function(date) {\n return date.getFullYear();\n });\n d3_time.years = d3_time.year.range;\n d3_time.years.utc = d3_time.year.utc.range;\n d3_time.day = d3_time_interval(function(date) {\n var day = new d3_date(2e3, 0);\n day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n return day;\n }, function(date, offset) {\n date.setDate(date.getDate() + offset);\n }, function(date) {\n return date.getDate() - 1;\n });\n d3_time.days = d3_time.day.range;\n d3_time.days.utc = d3_time.day.utc.range;\n d3_time.dayOfYear = function(date) {\n var year = d3_time.year(date);\n return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);\n };\n [ \"sunday\", \"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\", \"saturday\" ].forEach(function(day, i) {\n i = 7 - i;\n var interval = d3_time[day] = d3_time_interval(function(date) {\n (date = d3_time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);\n return date;\n }, function(date, offset) {\n date.setDate(date.getDate() + Math.floor(offset) * 7);\n }, function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);\n });\n d3_time[day + \"s\"] = interval.range;\n d3_time[day + \"s\"].utc = interval.utc.range;\n d3_time[day + \"OfYear\"] = function(date) {\n var day = d3_time.year(date).getDay();\n return Math.floor((d3_time.dayOfYear(date) + (day + i) % 7) / 7);\n };\n });\n d3_time.week = d3_time.sunday;\n d3_time.weeks = d3_time.sunday.range;\n d3_time.weeks.utc = d3_time.sunday.utc.range;\n d3_time.weekOfYear = d3_time.sundayOfYear;\n function d3_locale_timeFormat(locale) {\n var locale_dateTime = locale.dateTime, locale_date = locale.date, locale_time = locale.time, locale_periods = locale.periods, locale_days = locale.days, locale_shortDays = locale.shortDays, locale_months = locale.months, locale_shortMonths = locale.shortMonths;\n function d3_time_format(template) {\n var n = template.length;\n function format(date) {\n var string = [], i = -1, j = 0, c, p, f;\n while (++i < n) {\n if (template.charCodeAt(i) === 37) {\n string.push(template.slice(j, i));\n if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);\n if (f = d3_time_formats[c]) c = f(date, p == null ? c === \"e\" ? \" \" : \"0\" : p);\n string.push(c);\n j = i + 1;\n }\n }\n string.push(template.slice(j, i));\n return string.join(\"\");\n }\n format.parse = function(string) {\n var d = {\n y: 1900,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0,\n Z: null\n }, i = d3_time_parse(d, template, string, 0);\n if (i != string.length) return null;\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n var localZ = d.Z != null && d3_date !== d3_date_utc, date = new (localZ ? d3_date_utc : d3_date)();\n if (\"j\" in d) date.setFullYear(d.y, 0, d.j); else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n date.setFullYear(d.y, 0, 1);\n date.setFullYear(d.y, 0, \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7);\n } else date.setFullYear(d.y, d.m, d.d);\n date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L);\n return localZ ? date._ : date;\n };\n format.toString = function() {\n return template;\n };\n return format;\n }\n function d3_time_parse(date, template, string, j) {\n var c, p, t, i = 0, n = template.length, m = string.length;\n while (i < n) {\n if (j >= m) return -1;\n c = template.charCodeAt(i++);\n if (c === 37) {\n t = template.charAt(i++);\n p = d3_time_parsers[t in d3_time_formatPads ? template.charAt(i++) : t];\n if (!p || (j = p(date, string, j)) < 0) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n d3_time_format.utc = function(template) {\n var local = d3_time_format(template);\n function format(date) {\n try {\n d3_date = d3_date_utc;\n var utc = new d3_date();\n utc._ = date;\n return local(utc);\n } finally {\n d3_date = Date;\n }\n }\n format.parse = function(string) {\n try {\n d3_date = d3_date_utc;\n var date = local.parse(string);\n return date && date._;\n } finally {\n d3_date = Date;\n }\n };\n format.toString = local.toString;\n return format;\n };\n d3_time_format.multi = d3_time_format.utc.multi = d3_time_formatMulti;\n var d3_time_periodLookup = d3.map(), d3_time_dayRe = d3_time_formatRe(locale_days), d3_time_dayLookup = d3_time_formatLookup(locale_days), d3_time_dayAbbrevRe = d3_time_formatRe(locale_shortDays), d3_time_dayAbbrevLookup = d3_time_formatLookup(locale_shortDays), d3_time_monthRe = d3_time_formatRe(locale_months), d3_time_monthLookup = d3_time_formatLookup(locale_months), d3_time_monthAbbrevRe = d3_time_formatRe(locale_shortMonths), d3_time_monthAbbrevLookup = d3_time_formatLookup(locale_shortMonths);\n locale_periods.forEach(function(p, i) {\n d3_time_periodLookup.set(p.toLowerCase(), i);\n });\n var d3_time_formats = {\n a: function(d) {\n return locale_shortDays[d.getDay()];\n },\n A: function(d) {\n return locale_days[d.getDay()];\n },\n b: function(d) {\n return locale_shortMonths[d.getMonth()];\n },\n B: function(d) {\n return locale_months[d.getMonth()];\n },\n c: d3_time_format(locale_dateTime),\n d: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n e: function(d, p) {\n return d3_time_formatPad(d.getDate(), p, 2);\n },\n H: function(d, p) {\n return d3_time_formatPad(d.getHours(), p, 2);\n },\n I: function(d, p) {\n return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);\n },\n j: function(d, p) {\n return d3_time_formatPad(1 + d3_time.dayOfYear(d), p, 3);\n },\n L: function(d, p) {\n return d3_time_formatPad(d.getMilliseconds(), p, 3);\n },\n m: function(d, p) {\n return d3_time_formatPad(d.getMonth() + 1, p, 2);\n },\n M: function(d, p) {\n return d3_time_formatPad(d.getMinutes(), p, 2);\n },\n p: function(d) {\n return locale_periods[+(d.getHours() >= 12)];\n },\n S: function(d, p) {\n return d3_time_formatPad(d.getSeconds(), p, 2);\n },\n U: function(d, p) {\n return d3_time_formatPad(d3_time.sundayOfYear(d), p, 2);\n },\n w: function(d) {\n return d.getDay();\n },\n W: function(d, p) {\n return d3_time_formatPad(d3_time.mondayOfYear(d), p, 2);\n },\n x: d3_time_format(locale_date),\n X: d3_time_format(locale_time),\n y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 100, p, 2);\n },\n Y: function(d, p) {\n return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);\n },\n Z: d3_time_zone,\n \"%\": function() {\n return \"%\";\n }\n };\n var d3_time_parsers = {\n a: d3_time_parseWeekdayAbbrev,\n A: d3_time_parseWeekday,\n b: d3_time_parseMonthAbbrev,\n B: d3_time_parseMonth,\n c: d3_time_parseLocaleFull,\n d: d3_time_parseDay,\n e: d3_time_parseDay,\n H: d3_time_parseHour24,\n I: d3_time_parseHour24,\n j: d3_time_parseDayOfYear,\n L: d3_time_parseMilliseconds,\n m: d3_time_parseMonthNumber,\n M: d3_time_parseMinutes,\n p: d3_time_parseAmPm,\n S: d3_time_parseSeconds,\n U: d3_time_parseWeekNumberSunday,\n w: d3_time_parseWeekdayNumber,\n W: d3_time_parseWeekNumberMonday,\n x: d3_time_parseLocaleDate,\n X: d3_time_parseLocaleTime,\n y: d3_time_parseYear,\n Y: d3_time_parseFullYear,\n Z: d3_time_parseZone,\n \"%\": d3_time_parseLiteralPercent\n };\n function d3_time_parseWeekdayAbbrev(date, string, i) {\n d3_time_dayAbbrevRe.lastIndex = 0;\n var n = d3_time_dayAbbrevRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseWeekday(date, string, i) {\n d3_time_dayRe.lastIndex = 0;\n var n = d3_time_dayRe.exec(string.slice(i));\n return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonthAbbrev(date, string, i) {\n d3_time_monthAbbrevRe.lastIndex = 0;\n var n = d3_time_monthAbbrevRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseMonth(date, string, i) {\n d3_time_monthRe.lastIndex = 0;\n var n = d3_time_monthRe.exec(string.slice(i));\n return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n function d3_time_parseLocaleFull(date, string, i) {\n return d3_time_parse(date, d3_time_formats.c.toString(), string, i);\n }\n function d3_time_parseLocaleDate(date, string, i) {\n return d3_time_parse(date, d3_time_formats.x.toString(), string, i);\n }\n function d3_time_parseLocaleTime(date, string, i) {\n return d3_time_parse(date, d3_time_formats.X.toString(), string, i);\n }\n function d3_time_parseAmPm(date, string, i) {\n var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase());\n return n == null ? -1 : (date.p = n, i);\n }\n return d3_time_format;\n }\n var d3_time_formatPads = {\n \"-\": \"\",\n _: \" \",\n \"0\": \"0\"\n }, d3_time_numberRe = /^\\s*\\d+/, d3_time_percentRe = /^%/;\n function d3_time_formatPad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\", string = (sign ? -value : value) + \"\", length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n }\n function d3_time_formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(d3.requote).join(\"|\") + \")\", \"i\");\n }\n function d3_time_formatLookup(names) {\n var map = new d3_Map(), i = -1, n = names.length;\n while (++i < n) map.set(names[i].toLowerCase(), i);\n return map;\n }\n function d3_time_parseWeekdayNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 1));\n return n ? (date.w = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberSunday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.U = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseWeekNumberMonday(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i));\n return n ? (date.W = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseFullYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 4));\n return n ? (date.y = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;\n }\n function d3_time_parseZone(date, string, i) {\n return /^[+-]\\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, \n i + 5) : -1;\n }\n function d3_time_expandYear(d) {\n return d + (d > 68 ? 1900 : 2e3);\n }\n function d3_time_parseMonthNumber(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.m = n[0] - 1, i + n[0].length) : -1;\n }\n function d3_time_parseDay(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.d = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseDayOfYear(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.j = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseHour24(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.H = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMinutes(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.M = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseSeconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 2));\n return n ? (date.S = +n[0], i + n[0].length) : -1;\n }\n function d3_time_parseMilliseconds(date, string, i) {\n d3_time_numberRe.lastIndex = 0;\n var n = d3_time_numberRe.exec(string.slice(i, i + 3));\n return n ? (date.L = +n[0], i + n[0].length) : -1;\n }\n function d3_time_zone(d) {\n var z = d.getTimezoneOffset(), zs = z > 0 ? \"-\" : \"+\", zh = abs(z) / 60 | 0, zm = abs(z) % 60;\n return zs + d3_time_formatPad(zh, \"0\", 2) + d3_time_formatPad(zm, \"0\", 2);\n }\n function d3_time_parseLiteralPercent(date, string, i) {\n d3_time_percentRe.lastIndex = 0;\n var n = d3_time_percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n function d3_time_formatMulti(formats) {\n var n = formats.length, i = -1;\n while (++i < n) formats[i][0] = this(formats[i][0]);\n return function(date) {\n var i = 0, f = formats[i];\n while (!f[1](date)) f = formats[++i];\n return f[0](date);\n };\n }\n d3.locale = function(locale) {\n return {\n numberFormat: d3_locale_numberFormat(locale),\n timeFormat: d3_locale_timeFormat(locale)\n };\n };\n var d3_locale_enUS = d3.locale({\n decimal: \".\",\n thousands: \",\",\n grouping: [ 3 ],\n currency: [ \"$\", \"\" ],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%m/%d/%Y\",\n time: \"%H:%M:%S\",\n periods: [ \"AM\", \"PM\" ],\n days: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ],\n shortDays: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ],\n months: [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n shortMonths: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ]\n });\n d3.format = d3_locale_enUS.numberFormat;\n d3.geo = {};\n function d3_adder() {}\n d3_adder.prototype = {\n s: 0,\n t: 0,\n add: function(y) {\n d3_adderSum(y, this.t, d3_adderTemp);\n d3_adderSum(d3_adderTemp.s, this.s, this);\n if (this.s) this.t += d3_adderTemp.t; else this.s = d3_adderTemp.t;\n },\n reset: function() {\n this.s = this.t = 0;\n },\n valueOf: function() {\n return this.s;\n }\n };\n var d3_adderTemp = new d3_adder();\n function d3_adderSum(a, b, o) {\n var x = o.s = a + b, bv = x - a, av = x - bv;\n o.t = a - av + (b - bv);\n }\n d3.geo.stream = function(object, listener) {\n if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {\n d3_geo_streamObjectType[object.type](object, listener);\n } else {\n d3_geo_streamGeometry(object, listener);\n }\n };\n function d3_geo_streamGeometry(geometry, listener) {\n if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {\n d3_geo_streamGeometryType[geometry.type](geometry, listener);\n }\n }\n var d3_geo_streamObjectType = {\n Feature: function(feature, listener) {\n d3_geo_streamGeometry(feature.geometry, listener);\n },\n FeatureCollection: function(object, listener) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);\n }\n };\n var d3_geo_streamGeometryType = {\n Sphere: function(object, listener) {\n listener.sphere();\n },\n Point: function(object, listener) {\n object = object.coordinates;\n listener.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);\n },\n LineString: function(object, listener) {\n d3_geo_streamLine(object.coordinates, listener, 0);\n },\n MultiLineString: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);\n },\n Polygon: function(object, listener) {\n d3_geo_streamPolygon(object.coordinates, listener);\n },\n MultiPolygon: function(object, listener) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);\n },\n GeometryCollection: function(object, listener) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) d3_geo_streamGeometry(geometries[i], listener);\n }\n };\n function d3_geo_streamLine(coordinates, listener, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n listener.lineStart();\n while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);\n listener.lineEnd();\n }\n function d3_geo_streamPolygon(coordinates, listener) {\n var i = -1, n = coordinates.length;\n listener.polygonStart();\n while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);\n listener.polygonEnd();\n }\n d3.geo.area = function(object) {\n d3_geo_areaSum = 0;\n d3.geo.stream(object, d3_geo_area);\n return d3_geo_areaSum;\n };\n var d3_geo_areaSum, d3_geo_areaRingSum = new d3_adder();\n var d3_geo_area = {\n sphere: function() {\n d3_geo_areaSum += 4 * π;\n },\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_areaRingSum.reset();\n d3_geo_area.lineStart = d3_geo_areaRingStart;\n },\n polygonEnd: function() {\n var area = 2 * d3_geo_areaRingSum;\n d3_geo_areaSum += area < 0 ? 4 * π + area : area;\n d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;\n }\n };\n function d3_geo_areaRingStart() {\n var λ00, φ00, λ0, cosφ0, sinφ0;\n d3_geo_area.point = function(λ, φ) {\n d3_geo_area.point = nextPoint;\n λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), \n sinφ0 = Math.sin(φ);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n φ = φ * d3_radians / 2 + π / 4;\n var dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u = cosφ0 * cosφ + k * Math.cos(adλ), v = k * sdλ * Math.sin(adλ);\n d3_geo_areaRingSum.add(Math.atan2(v, u));\n λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;\n }\n d3_geo_area.lineEnd = function() {\n nextPoint(λ00, φ00);\n };\n }\n function d3_geo_cartesian(spherical) {\n var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);\n return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];\n }\n function d3_geo_cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n }\n function d3_geo_cartesianCross(a, b) {\n return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];\n }\n function d3_geo_cartesianAdd(a, b) {\n a[0] += b[0];\n a[1] += b[1];\n a[2] += b[2];\n }\n function d3_geo_cartesianScale(vector, k) {\n return [ vector[0] * k, vector[1] * k, vector[2] * k ];\n }\n function d3_geo_cartesianNormalize(d) {\n var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l;\n d[1] /= l;\n d[2] /= l;\n }\n function d3_geo_spherical(cartesian) {\n return [ Math.atan2(cartesian[1], cartesian[0]), d3_asin(cartesian[2]) ];\n }\n function d3_geo_sphericalEqual(a, b) {\n return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;\n }\n d3.geo.bounds = function() {\n var λ0, φ0, λ1, φ1, λ_, λ__, φ__, p0, dλSum, ranges, range;\n var bound = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n bound.point = ringPoint;\n bound.lineStart = ringStart;\n bound.lineEnd = ringEnd;\n dλSum = 0;\n d3_geo_area.polygonStart();\n },\n polygonEnd: function() {\n d3_geo_area.polygonEnd();\n bound.point = point;\n bound.lineStart = lineStart;\n bound.lineEnd = lineEnd;\n if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90); else if (dλSum > ε) φ1 = 90; else if (dλSum < -ε) φ0 = -90;\n range[0] = λ0, range[1] = λ1;\n }\n };\n function point(λ, φ) {\n ranges.push(range = [ λ0 = λ, λ1 = λ ]);\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n function linePoint(λ, φ) {\n var p = d3_geo_cartesian([ λ * d3_radians, φ * d3_radians ]);\n if (p0) {\n var normal = d3_geo_cartesianCross(p0, p), equatorial = [ normal[1], -normal[0], 0 ], inflection = d3_geo_cartesianCross(equatorial, normal);\n d3_geo_cartesianNormalize(inflection);\n inflection = d3_geo_spherical(inflection);\n var dλ = λ - λ_, s = dλ > 0 ? 1 : -1, λi = inflection[0] * d3_degrees * s, antimeridian = abs(dλ) > 180;\n if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = inflection[1] * d3_degrees;\n if (φi > φ1) φ1 = φi;\n } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {\n var φi = -inflection[1] * d3_degrees;\n if (φi < φ0) φ0 = φi;\n } else {\n if (φ < φ0) φ0 = φ;\n if (φ > φ1) φ1 = φ;\n }\n if (antimeridian) {\n if (λ < λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n } else {\n if (λ1 >= λ0) {\n if (λ < λ0) λ0 = λ;\n if (λ > λ1) λ1 = λ;\n } else {\n if (λ > λ_) {\n if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;\n } else {\n if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;\n }\n }\n }\n } else {\n point(λ, φ);\n }\n p0 = p, λ_ = λ;\n }\n function lineStart() {\n bound.point = linePoint;\n }\n function lineEnd() {\n range[0] = λ0, range[1] = λ1;\n bound.point = point;\n p0 = null;\n }\n function ringPoint(λ, φ) {\n if (p0) {\n var dλ = λ - λ_;\n dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;\n } else λ__ = λ, φ__ = φ;\n d3_geo_area.point(λ, φ);\n linePoint(λ, φ);\n }\n function ringStart() {\n d3_geo_area.lineStart();\n }\n function ringEnd() {\n ringPoint(λ__, φ__);\n d3_geo_area.lineEnd();\n if (abs(dλSum) > ε) λ0 = -(λ1 = 180);\n range[0] = λ0, range[1] = λ1;\n p0 = null;\n }\n function angle(λ0, λ1) {\n return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1;\n }\n function compareRanges(a, b) {\n return a[0] - b[0];\n }\n function withinRange(x, range) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n }\n return function(feature) {\n φ1 = λ1 = -(λ0 = φ0 = Infinity);\n ranges = [];\n d3.geo.stream(feature, bound);\n var n = ranges.length;\n if (n) {\n ranges.sort(compareRanges);\n for (var i = 1, a = ranges[0], b, merged = [ a ]; i < n; ++i) {\n b = ranges[i];\n if (withinRange(b[0], a) || withinRange(b[1], a)) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n var best = -Infinity, dλ;\n for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {\n b = merged[i];\n if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];\n }\n }\n ranges = range = null;\n return λ0 === Infinity || φ0 === Infinity ? [ [ NaN, NaN ], [ NaN, NaN ] ] : [ [ λ0, φ0 ], [ λ1, φ1 ] ];\n };\n }();\n d3.geo.centroid = function(object) {\n d3_geo_centroidW0 = d3_geo_centroidW1 = d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, d3_geo_centroid);\n var x = d3_geo_centroidX2, y = d3_geo_centroidY2, z = d3_geo_centroidZ2, m = x * x + y * y + z * z;\n if (m < ε2) {\n x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;\n if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;\n m = x * x + y * y + z * z;\n if (m < ε2) return [ NaN, NaN ];\n }\n return [ Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees ];\n };\n var d3_geo_centroidW0, d3_geo_centroidW1, d3_geo_centroidX0, d3_geo_centroidY0, d3_geo_centroidZ0, d3_geo_centroidX1, d3_geo_centroidY1, d3_geo_centroidZ1, d3_geo_centroidX2, d3_geo_centroidY2, d3_geo_centroidZ2;\n var d3_geo_centroid = {\n sphere: d3_noop,\n point: d3_geo_centroidPoint,\n lineStart: d3_geo_centroidLineStart,\n lineEnd: d3_geo_centroidLineEnd,\n polygonStart: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_centroid.lineStart = d3_geo_centroidLineStart;\n }\n };\n function d3_geo_centroidPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));\n }\n function d3_geo_centroidPointXYZ(x, y, z) {\n ++d3_geo_centroidW0;\n d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;\n d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;\n d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;\n }\n function d3_geo_centroidLineStart() {\n var x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroid.point = nextPoint;\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_centroidLineEnd() {\n d3_geo_centroid.point = d3_geo_centroidPoint;\n }\n function d3_geo_centroidRingStart() {\n var λ00, φ00, x0, y0, z0;\n d3_geo_centroid.point = function(λ, φ) {\n λ00 = λ, φ00 = φ;\n d3_geo_centroid.point = nextPoint;\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians);\n x0 = cosφ * Math.cos(λ);\n y0 = cosφ * Math.sin(λ);\n z0 = Math.sin(φ);\n d3_geo_centroidPointXYZ(x0, y0, z0);\n };\n d3_geo_centroid.lineEnd = function() {\n nextPoint(λ00, φ00);\n d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;\n d3_geo_centroid.point = d3_geo_centroidPoint;\n };\n function nextPoint(λ, φ) {\n λ *= d3_radians;\n var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), cx = y0 * z - z0 * y, cy = z0 * x - x0 * z, cz = x0 * y - y0 * x, m = Math.sqrt(cx * cx + cy * cy + cz * cz), u = x0 * x + y0 * y + z0 * z, v = m && -d3_acos(u) / m, w = Math.atan2(m, u);\n d3_geo_centroidX2 += v * cx;\n d3_geo_centroidY2 += v * cy;\n d3_geo_centroidZ2 += v * cz;\n d3_geo_centroidW1 += w;\n d3_geo_centroidX1 += w * (x0 + (x0 = x));\n d3_geo_centroidY1 += w * (y0 + (y0 = y));\n d3_geo_centroidZ1 += w * (z0 + (z0 = z));\n d3_geo_centroidPointXYZ(x0, y0, z0);\n }\n }\n function d3_geo_compose(a, b) {\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n return compose;\n }\n function d3_true() {\n return true;\n }\n function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {\n var subject = [], clip = [];\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n];\n if (d3_geo_sphericalEqual(p0, p1)) {\n listener.lineStart();\n for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);\n listener.lineEnd();\n return;\n }\n var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true), b = new d3_geo_clipPolygonIntersection(p0, null, a, false);\n a.o = b;\n subject.push(a);\n clip.push(b);\n a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);\n b = new d3_geo_clipPolygonIntersection(p1, null, a, true);\n a.o = b;\n subject.push(a);\n clip.push(b);\n });\n clip.sort(compare);\n d3_geo_clipPolygonLinkCircular(subject);\n d3_geo_clipPolygonLinkCircular(clip);\n if (!subject.length) return;\n for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {\n clip[i].e = entry = !entry;\n }\n var start = subject[0], points, point;\n while (1) {\n var current = start, isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n listener.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, listener);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, listener);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n listener.lineEnd();\n }\n }\n function d3_geo_clipPolygonLinkCircular(array) {\n if (!(n = array.length)) return;\n var n, i = 0, a = array[0], b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n }\n function d3_geo_clipPolygonIntersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other;\n this.e = entry;\n this.v = false;\n this.n = this.p = null;\n }\n function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {\n return function(rotate, listener) {\n var line = clipLine(listener), rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = d3.merge(segments);\n var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);\n if (segments.length) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);\n } else if (clipStartInside) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (polygonStarted) listener.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n listener.polygonStart();\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n listener.polygonEnd();\n }\n };\n function point(λ, φ) {\n var point = rotate(λ, φ);\n if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);\n }\n function pointLine(λ, φ) {\n var point = rotate(λ, φ);\n line.point(point[0], point[1]);\n }\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n var segments;\n var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), polygonStarted = false, polygon, ring;\n function pointRing(λ, φ) {\n ring.push([ λ, φ ]);\n var point = rotate(λ, φ);\n ringListener.point(point[0], point[1]);\n }\n function ringStart() {\n ringListener.lineStart();\n ring = [];\n }\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringListener.lineEnd();\n var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;\n ring.pop();\n polygon.push(ring);\n ring = null;\n if (!n) return;\n if (clean & 1) {\n segment = ringSegments[0];\n var n = segment.length - 1, i = -1, point;\n if (n > 0) {\n if (!polygonStarted) listener.polygonStart(), polygonStarted = true;\n listener.lineStart();\n while (++i < n) listener.point((point = segment[i])[0], point[1]);\n listener.lineEnd();\n }\n return;\n }\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));\n }\n return clip;\n };\n }\n function d3_geo_clipSegmentLength1(segment) {\n return segment.length > 1;\n }\n function d3_geo_clipBufferListener() {\n var lines = [], line;\n return {\n lineStart: function() {\n lines.push(line = []);\n },\n point: function(λ, φ) {\n line.push([ λ, φ ]);\n },\n lineEnd: d3_noop,\n buffer: function() {\n var buffer = lines;\n lines = [];\n line = null;\n return buffer;\n },\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n }\n };\n }\n function d3_geo_clipSort(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);\n }\n var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]);\n function d3_geo_clipAntimeridianLine(listener) {\n var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;\n return {\n lineStart: function() {\n listener.lineStart();\n clean = 1;\n },\n point: function(λ1, φ1) {\n var sλ1 = λ1 > 0 ? π : -π, dλ = abs(λ1 - λ0);\n if (abs(dλ - π) < ε) {\n listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n listener.point(λ1, φ0);\n clean = 0;\n } else if (sλ0 !== sλ1 && dλ >= π) {\n if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;\n if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;\n φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);\n listener.point(sλ0, φ0);\n listener.lineEnd();\n listener.lineStart();\n listener.point(sλ1, φ0);\n clean = 0;\n }\n listener.point(λ0 = λ1, φ0 = φ1);\n sλ0 = sλ1;\n },\n lineEnd: function() {\n listener.lineEnd();\n λ0 = φ0 = NaN;\n },\n clean: function() {\n return 2 - clean;\n }\n };\n }\n function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {\n var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);\n return abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;\n }\n function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {\n var φ;\n if (from == null) {\n φ = direction * halfπ;\n listener.point(-π, φ);\n listener.point(0, φ);\n listener.point(π, φ);\n listener.point(π, 0);\n listener.point(π, -φ);\n listener.point(0, -φ);\n listener.point(-π, -φ);\n listener.point(-π, 0);\n listener.point(-π, φ);\n } else if (abs(from[0] - to[0]) > ε) {\n var s = from[0] < to[0] ? π : -π;\n φ = direction * s / 2;\n listener.point(-s, φ);\n listener.point(0, φ);\n listener.point(s, φ);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function d3_geo_pointInPolygon(point, polygon) {\n var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0;\n d3_geo_areaRingSum.reset();\n for (var i = 0, n = polygon.length; i < n; ++i) {\n var ring = polygon[i], m = ring.length;\n if (!m) continue;\n var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1;\n while (true) {\n if (j === m) j = 0;\n point = ring[j];\n var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ;\n d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));\n polarAngle += antimeridian ? dλ + sdλ * τ : dλ;\n if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {\n var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));\n d3_geo_cartesianNormalize(arc);\n var intersection = d3_geo_cartesianCross(meridianNormal, arc);\n d3_geo_cartesianNormalize(intersection);\n var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);\n if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {\n winding += antimeridian ^ dλ >= 0 ? 1 : -1;\n }\n }\n if (!j++) break;\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;\n }\n }\n return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < -ε) ^ winding & 1;\n }\n function d3_geo_clipCircle(radius) {\n var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);\n return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]);\n function visible(λ, φ) {\n return Math.cos(λ) * Math.cos(φ) > cr;\n }\n function clipLine(listener) {\n var point0, c0, v0, v00, clean;\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(λ, φ) {\n var point1 = [ λ, φ ], point2, v = visible(λ, φ), c = smallRadius ? v ? 0 : code(λ, φ) : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;\n if (!point0 && (v00 = v0 = v)) listener.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {\n point1[0] += ε;\n point1[1] += ε;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n listener.lineStart();\n point2 = intersect(point1, point0);\n listener.point(point2[0], point2[1]);\n } else {\n point2 = intersect(point0, point1);\n listener.point(point2[0], point2[1]);\n listener.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n } else {\n listener.point(t[1][0], t[1][1]);\n listener.lineEnd();\n listener.lineStart();\n listener.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {\n listener.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) listener.lineEnd();\n point0 = null;\n },\n clean: function() {\n return clean | (v00 && v0) << 1;\n }\n };\n }\n function intersect(a, b, two) {\n var pa = d3_geo_cartesian(a), pb = d3_geo_cartesian(b);\n var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;\n if (!determinant) return !two && a;\n var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);\n d3_geo_cartesianAdd(A, B);\n var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);\n if (t2 < 0) return;\n var t = Math.sqrt(t2), q = d3_geo_cartesianScale(u, (-w - t) / uu);\n d3_geo_cartesianAdd(q, A);\n q = d3_geo_spherical(q);\n if (!two) return q;\n var λ0 = a[0], λ1 = b[0], φ0 = a[1], φ1 = b[1], z;\n if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;\n var δλ = λ1 - λ0, polar = abs(δλ - π) < ε, meridian = polar || δλ < ε;\n if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;\n if (meridian ? polar ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1) : φ0 <= q[1] && q[1] <= φ1 : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {\n var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);\n d3_geo_cartesianAdd(q1, A);\n return [ q, d3_geo_spherical(q1) ];\n }\n }\n function code(λ, φ) {\n var r = smallRadius ? radius : π - radius, code = 0;\n if (λ < -r) code |= 1; else if (λ > r) code |= 2;\n if (φ < -r) code |= 4; else if (φ > r) code |= 8;\n return code;\n }\n }\n function d3_geom_clipLine(x0, y0, x1, y1) {\n return function(line) {\n var a = line.a, b = line.b, ax = a.x, ay = a.y, bx = b.x, by = b.y, t0 = 0, t1 = 1, dx = bx - ax, dy = by - ay, r;\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n if (t0 > 0) line.a = {\n x: ax + t0 * dx,\n y: ay + t0 * dy\n };\n if (t1 < 1) line.b = {\n x: ax + t1 * dx,\n y: ay + t1 * dy\n };\n return line;\n };\n }\n var d3_geo_clipExtentMAX = 1e9;\n d3.geo.clipExtent = function() {\n var x0, y0, x1, y1, stream, clip, clipExtent = {\n stream: function(output) {\n if (stream) stream.valid = false;\n stream = clip(output);\n stream.valid = true;\n return stream;\n },\n extent: function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);\n if (stream) stream.valid = false, stream = null;\n return clipExtent;\n }\n };\n return clipExtent.extent([ [ 0, 0 ], [ 960, 500 ] ]);\n };\n function d3_geo_clipExtent(x0, y0, x1, y1) {\n return function(listener) {\n var listener_ = listener, bufferListener = d3_geo_clipBufferListener(), clipLine = d3_geom_clipLine(x0, y0, x1, y1), segments, polygon, ring;\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n listener = bufferListener;\n segments = [];\n polygon = [];\n clean = true;\n },\n polygonEnd: function() {\n listener = listener_;\n segments = d3.merge(segments);\n var clipStartInside = insidePolygon([ x0, y1 ]), inside = clean && clipStartInside, visible = segments.length;\n if (inside || visible) {\n listener.polygonStart();\n if (inside) {\n listener.lineStart();\n interpolate(null, null, 1, listener);\n listener.lineEnd();\n }\n if (visible) {\n d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);\n }\n listener.polygonEnd();\n }\n segments = polygon = ring = null;\n }\n };\n function insidePolygon(p) {\n var wn = 0, n = polygon.length, y = p[1];\n for (var i = 0; i < n; ++i) {\n for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {\n b = v[j];\n if (a[1] <= y) {\n if (b[1] > y && d3_cross2d(a, b, p) > 0) ++wn;\n } else {\n if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;\n }\n a = b;\n }\n }\n return wn !== 0;\n }\n function interpolate(from, to, direction, listener) {\n var a = 0, a1 = 0;\n if (from == null || (a = corner(from, direction)) !== (a1 = corner(to, direction)) || comparePoints(from, to) < 0 ^ direction > 0) {\n do {\n listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n } while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n listener.point(to[0], to[1]);\n }\n }\n function pointVisible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n function point(x, y) {\n if (pointVisible(x, y)) listener.point(x, y);\n }\n var x__, y__, v__, x_, y_, v_, first, clean;\n function lineStart() {\n clip.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferListener.rejoin();\n segments.push(bufferListener.buffer());\n }\n clip.point = point;\n if (v_) listener.lineEnd();\n }\n function linePoint(x, y) {\n x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));\n y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));\n var v = pointVisible(x, y);\n if (polygon) ring.push([ x, y ]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n listener.lineStart();\n listener.point(x, y);\n }\n } else {\n if (v && v_) listener.point(x, y); else {\n var l = {\n a: {\n x: x_,\n y: y_\n },\n b: {\n x: x,\n y: y\n }\n };\n if (clipLine(l)) {\n if (!v_) {\n listener.lineStart();\n listener.point(l.a.x, l.a.y);\n }\n listener.point(l.b.x, l.b.y);\n if (!v) listener.lineEnd();\n clean = false;\n } else if (v) {\n listener.lineStart();\n listener.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n return clip;\n };\n function corner(p, direction) {\n return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3 : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1 : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0 : direction > 0 ? 3 : 2;\n }\n function compare(a, b) {\n return comparePoints(a.x, b.x);\n }\n function comparePoints(a, b) {\n var ca = corner(a, 1), cb = corner(b, 1);\n return ca !== cb ? ca - cb : ca === 0 ? b[1] - a[1] : ca === 1 ? a[0] - b[0] : ca === 2 ? a[1] - b[1] : b[0] - a[0];\n }\n }\n function d3_geo_conic(projectAt) {\n var φ0 = 0, φ1 = π / 3, m = d3_geo_projectionMutator(projectAt), p = m(φ0, φ1);\n p.parallels = function(_) {\n if (!arguments.length) return [ φ0 / π * 180, φ1 / π * 180 ];\n return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);\n };\n return p;\n }\n function d3_geo_conicEqualArea(φ0, φ1) {\n var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;\n function forward(λ, φ) {\n var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;\n return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = ρ0 - y;\n return [ Math.atan2(x, ρ0_y) / n, d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];\n };\n return forward;\n }\n (d3.geo.conicEqualArea = function() {\n return d3_geo_conic(d3_geo_conicEqualArea);\n }).raw = d3_geo_conicEqualArea;\n d3.geo.albers = function() {\n return d3.geo.conicEqualArea().rotate([ 96, 0 ]).center([ -.6, 38.7 ]).parallels([ 29.5, 45.5 ]).scale(1070);\n };\n d3.geo.albersUsa = function() {\n var lower48 = d3.geo.albers();\n var alaska = d3.geo.conicEqualArea().rotate([ 154, 0 ]).center([ -2, 58.5 ]).parallels([ 55, 65 ]);\n var hawaii = d3.geo.conicEqualArea().rotate([ 157, 0 ]).center([ -3, 19.9 ]).parallels([ 8, 18 ]);\n var point, pointStream = {\n point: function(x, y) {\n point = [ x, y ];\n }\n }, lower48Point, alaskaPoint, hawaiiPoint;\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n point = null;\n (lower48Point(x, y), point) || (alaskaPoint(x, y), point) || hawaiiPoint(x, y);\n return point;\n }\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(), t = lower48.translate(), x = (coordinates[0] - t[0]) / k, y = (coordinates[1] - t[1]) / k;\n return (y >= .12 && y < .234 && x >= -.425 && x < -.214 ? alaska : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii : lower48).invert(coordinates);\n };\n albersUsa.stream = function(stream) {\n var lower48Stream = lower48.stream(stream), alaskaStream = alaska.stream(stream), hawaiiStream = hawaii.stream(stream);\n return {\n point: function(x, y) {\n lower48Stream.point(x, y);\n alaskaStream.point(x, y);\n hawaiiStream.point(x, y);\n },\n sphere: function() {\n lower48Stream.sphere();\n alaskaStream.sphere();\n hawaiiStream.sphere();\n },\n lineStart: function() {\n lower48Stream.lineStart();\n alaskaStream.lineStart();\n hawaiiStream.lineStart();\n },\n lineEnd: function() {\n lower48Stream.lineEnd();\n alaskaStream.lineEnd();\n hawaiiStream.lineEnd();\n },\n polygonStart: function() {\n lower48Stream.polygonStart();\n alaskaStream.polygonStart();\n hawaiiStream.polygonStart();\n },\n polygonEnd: function() {\n lower48Stream.polygonEnd();\n alaskaStream.polygonEnd();\n hawaiiStream.polygonEnd();\n }\n };\n };\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_);\n alaska.precision(_);\n hawaii.precision(_);\n return albersUsa;\n };\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_);\n alaska.scale(_ * .35);\n hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n lower48Point = lower48.translate(_).clipExtent([ [ x - .455 * k, y - .238 * k ], [ x + .455 * k, y + .238 * k ] ]).stream(pointStream).point;\n alaskaPoint = alaska.translate([ x - .307 * k, y + .201 * k ]).clipExtent([ [ x - .425 * k + ε, y + .12 * k + ε ], [ x - .214 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n hawaiiPoint = hawaii.translate([ x - .205 * k, y + .212 * k ]).clipExtent([ [ x - .214 * k + ε, y + .166 * k + ε ], [ x - .115 * k - ε, y + .234 * k - ε ] ]).stream(pointStream).point;\n return albersUsa;\n };\n return albersUsa.scale(1070);\n };\n var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {\n point: d3_noop,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: function() {\n d3_geo_pathAreaPolygon = 0;\n d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;\n d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);\n }\n };\n function d3_geo_pathAreaRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathArea.point = function(x, y) {\n d3_geo_pathArea.point = nextPoint;\n x00 = x0 = x, y00 = y0 = y;\n };\n function nextPoint(x, y) {\n d3_geo_pathAreaPolygon += y0 * x - x0 * y;\n x0 = x, y0 = y;\n }\n d3_geo_pathArea.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n var d3_geo_pathBoundsX0, d3_geo_pathBoundsY0, d3_geo_pathBoundsX1, d3_geo_pathBoundsY1;\n var d3_geo_pathBounds = {\n point: d3_geo_pathBoundsPoint,\n lineStart: d3_noop,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_pathBoundsPoint(x, y) {\n if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;\n if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;\n if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;\n if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;\n }\n function d3_geo_pathBuffer() {\n var pointCircle = d3_geo_pathBufferCircle(4.5), buffer = [];\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointCircle = d3_geo_pathBufferCircle(_);\n return stream;\n },\n result: function() {\n if (buffer.length) {\n var result = buffer.join(\"\");\n buffer = [];\n return result;\n }\n }\n };\n function point(x, y) {\n buffer.push(\"M\", x, \",\", y, pointCircle);\n }\n function pointLineStart(x, y) {\n buffer.push(\"M\", x, \",\", y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n buffer.push(\"L\", x, \",\", y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n buffer.push(\"Z\");\n }\n return stream;\n }\n function d3_geo_pathBufferCircle(radius) {\n return \"m0,\" + radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius + \"z\";\n }\n var d3_geo_pathCentroid = {\n point: d3_geo_pathCentroidPoint,\n lineStart: d3_geo_pathCentroidLineStart,\n lineEnd: d3_geo_pathCentroidLineEnd,\n polygonStart: function() {\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;\n },\n polygonEnd: function() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;\n d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;\n }\n };\n function d3_geo_pathCentroidPoint(x, y) {\n d3_geo_centroidX0 += x;\n d3_geo_centroidY0 += y;\n ++d3_geo_centroidZ0;\n }\n function d3_geo_pathCentroidLineStart() {\n var x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n }\n function d3_geo_pathCentroidLineEnd() {\n d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;\n }\n function d3_geo_pathCentroidRingStart() {\n var x00, y00, x0, y0;\n d3_geo_pathCentroid.point = function(x, y) {\n d3_geo_pathCentroid.point = nextPoint;\n d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);\n };\n function nextPoint(x, y) {\n var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);\n d3_geo_centroidX1 += z * (x0 + x) / 2;\n d3_geo_centroidY1 += z * (y0 + y) / 2;\n d3_geo_centroidZ1 += z;\n z = y0 * x - x0 * y;\n d3_geo_centroidX2 += z * (x0 + x);\n d3_geo_centroidY2 += z * (y0 + y);\n d3_geo_centroidZ2 += z * 3;\n d3_geo_pathCentroidPoint(x0 = x, y0 = y);\n }\n d3_geo_pathCentroid.lineEnd = function() {\n nextPoint(x00, y00);\n };\n }\n function d3_geo_pathContext(context) {\n var pointRadius = 4.5;\n var stream = {\n point: point,\n lineStart: function() {\n stream.point = pointLineStart;\n },\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.lineEnd = lineEndPolygon;\n },\n polygonEnd: function() {\n stream.lineEnd = lineEnd;\n stream.point = point;\n },\n pointRadius: function(_) {\n pointRadius = _;\n return stream;\n },\n result: d3_noop\n };\n function point(x, y) {\n context.moveTo(x + pointRadius, y);\n context.arc(x, y, pointRadius, 0, τ);\n }\n function pointLineStart(x, y) {\n context.moveTo(x, y);\n stream.point = pointLine;\n }\n function pointLine(x, y) {\n context.lineTo(x, y);\n }\n function lineEnd() {\n stream.point = point;\n }\n function lineEndPolygon() {\n context.closePath();\n }\n return stream;\n }\n function d3_geo_resample(project) {\n var δ2 = .5, cosMinDistance = Math.cos(30 * d3_radians), maxDepth = 16;\n function resample(stream) {\n return (maxDepth ? resampleRecursive : resampleNone)(stream);\n }\n function resampleNone(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n });\n }\n function resampleRecursive(stream) {\n var λ00, φ00, x00, y00, a00, b00, c00, λ0, x0, y0, a0, b0, c0;\n var resample = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n stream.polygonStart();\n resample.lineStart = ringStart;\n },\n polygonEnd: function() {\n stream.polygonEnd();\n resample.lineStart = lineStart;\n }\n };\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n function lineStart() {\n x0 = NaN;\n resample.point = linePoint;\n stream.lineStart();\n }\n function linePoint(λ, φ) {\n var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n function lineEnd() {\n resample.point = point;\n stream.lineEnd();\n }\n function ringStart() {\n lineStart();\n resample.point = ringPoint;\n resample.lineEnd = ringEnd;\n }\n function ringPoint(λ, φ) {\n linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resample.point = linePoint;\n }\n function ringEnd() {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);\n resample.lineEnd = lineEnd;\n lineEnd();\n }\n return resample;\n }\n function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;\n if (d2 > 4 * δ2 && depth--) {\n var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > δ2 || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) {\n resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);\n }\n }\n }\n resample.precision = function(_) {\n if (!arguments.length) return Math.sqrt(δ2);\n maxDepth = (δ2 = _ * _) > 0 && 16;\n return resample;\n };\n return resample;\n }\n d3.geo.path = function() {\n var pointRadius = 4.5, projection, context, projectStream, contextStream, cacheStream;\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);\n d3.geo.stream(object, cacheStream);\n }\n return contextStream.result();\n }\n path.area = function(object) {\n d3_geo_pathAreaSum = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathArea));\n return d3_geo_pathAreaSum;\n };\n path.centroid = function(object) {\n d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 = d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 = d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;\n d3.geo.stream(object, projectStream(d3_geo_pathCentroid));\n return d3_geo_centroidZ2 ? [ d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2 ] : d3_geo_centroidZ1 ? [ d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1 ] : d3_geo_centroidZ0 ? [ d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0 ] : [ NaN, NaN ];\n };\n path.bounds = function(object) {\n d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);\n d3.geo.stream(object, projectStream(d3_geo_pathBounds));\n return [ [ d3_geo_pathBoundsX0, d3_geo_pathBoundsY0 ], [ d3_geo_pathBoundsX1, d3_geo_pathBoundsY1 ] ];\n };\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;\n return reset();\n };\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return reset();\n };\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n function reset() {\n cacheStream = null;\n return path;\n }\n return path.projection(d3.geo.albersUsa()).context(null);\n };\n function d3_geo_pathProjectStream(project) {\n var resample = d3_geo_resample(function(x, y) {\n return project([ x * d3_degrees, y * d3_degrees ]);\n });\n return function(stream) {\n return d3_geo_projectionRadians(resample(stream));\n };\n }\n d3.geo.transform = function(methods) {\n return {\n stream: function(stream) {\n var transform = new d3_geo_transform(stream);\n for (var k in methods) transform[k] = methods[k];\n return transform;\n }\n };\n };\n function d3_geo_transform(stream) {\n this.stream = stream;\n }\n d3_geo_transform.prototype = {\n point: function(x, y) {\n this.stream.point(x, y);\n },\n sphere: function() {\n this.stream.sphere();\n },\n lineStart: function() {\n this.stream.lineStart();\n },\n lineEnd: function() {\n this.stream.lineEnd();\n },\n polygonStart: function() {\n this.stream.polygonStart();\n },\n polygonEnd: function() {\n this.stream.polygonEnd();\n }\n };\n function d3_geo_transformPoint(stream, point) {\n return {\n point: point,\n sphere: function() {\n stream.sphere();\n },\n lineStart: function() {\n stream.lineStart();\n },\n lineEnd: function() {\n stream.lineEnd();\n },\n polygonStart: function() {\n stream.polygonStart();\n },\n polygonEnd: function() {\n stream.polygonEnd();\n }\n };\n }\n d3.geo.projection = d3_geo_projection;\n d3.geo.projectionMutator = d3_geo_projectionMutator;\n function d3_geo_projection(project) {\n return d3_geo_projectionMutator(function() {\n return project;\n })();\n }\n function d3_geo_projectionMutator(projectAt) {\n var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {\n x = project(x, y);\n return [ x[0] * k + δx, δy - x[1] * k ];\n }), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, preclip = d3_geo_clipAntimeridian, postclip = d3_identity, clipAngle = null, clipExtent = null, stream;\n function projection(point) {\n point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);\n return [ point[0] * k + δx, δy - point[1] * k ];\n }\n function invert(point) {\n point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);\n return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];\n }\n projection.stream = function(output) {\n if (stream) stream.valid = false;\n stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));\n stream.valid = true;\n return stream;\n };\n projection.clipAngle = function(_) {\n if (!arguments.length) return clipAngle;\n preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);\n return invalidate();\n };\n projection.clipExtent = function(_) {\n if (!arguments.length) return clipExtent;\n clipExtent = _;\n postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;\n return invalidate();\n };\n projection.scale = function(_) {\n if (!arguments.length) return k;\n k = +_;\n return reset();\n };\n projection.translate = function(_) {\n if (!arguments.length) return [ x, y ];\n x = +_[0];\n y = +_[1];\n return reset();\n };\n projection.center = function(_) {\n if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];\n λ = _[0] % 360 * d3_radians;\n φ = _[1] % 360 * d3_radians;\n return reset();\n };\n projection.rotate = function(_) {\n if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];\n δλ = _[0] % 360 * d3_radians;\n δφ = _[1] % 360 * d3_radians;\n δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;\n return reset();\n };\n d3.rebind(projection, projectResample, \"precision\");\n function reset() {\n projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);\n var center = project(λ, φ);\n δx = x - center[0] * k;\n δy = y + center[1] * k;\n return invalidate();\n }\n function invalidate() {\n if (stream) stream.valid = false, stream = null;\n return projection;\n }\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return reset();\n };\n }\n function d3_geo_projectionRadians(stream) {\n return d3_geo_transformPoint(stream, function(x, y) {\n stream.point(x * d3_radians, y * d3_radians);\n });\n }\n function d3_geo_equirectangular(λ, φ) {\n return [ λ, φ ];\n }\n (d3.geo.equirectangular = function() {\n return d3_geo_projection(d3_geo_equirectangular);\n }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;\n d3.geo.rotation = function(rotate) {\n rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n }\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);\n return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;\n };\n return forward;\n };\n function d3_geo_identityRotation(λ, φ) {\n return [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n }\n d3_geo_identityRotation.invert = d3_geo_equirectangular;\n function d3_geo_rotation(δλ, δφ, δγ) {\n return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_identityRotation;\n }\n function d3_geo_forwardRotationλ(δλ) {\n return function(λ, φ) {\n return λ += δλ, [ λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ ];\n };\n }\n function d3_geo_rotationλ(δλ) {\n var rotation = d3_geo_forwardRotationλ(δλ);\n rotation.invert = d3_geo_forwardRotationλ(-δλ);\n return rotation;\n }\n function d3_geo_rotationφγ(δφ, δγ) {\n var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);\n function rotation(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;\n return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), d3_asin(k * cosδγ + y * sinδγ) ];\n }\n rotation.invert = function(λ, φ) {\n var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;\n return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), d3_asin(k * cosδφ - x * sinδφ) ];\n };\n return rotation;\n }\n d3.geo.circle = function() {\n var origin = [ 0, 0 ], angle, precision = 6, interpolate;\n function circle() {\n var center = typeof origin === \"function\" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];\n interpolate(null, null, 1, {\n point: function(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= d3_degrees, x[1] *= d3_degrees;\n }\n });\n return {\n type: \"Polygon\",\n coordinates: [ ring ]\n };\n }\n circle.origin = function(x) {\n if (!arguments.length) return origin;\n origin = x;\n return circle;\n };\n circle.angle = function(x) {\n if (!arguments.length) return angle;\n interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);\n return circle;\n };\n circle.precision = function(_) {\n if (!arguments.length) return precision;\n interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);\n return circle;\n };\n return circle.angle(90);\n };\n function d3_geo_circleInterpolate(radius, precision) {\n var cr = Math.cos(radius), sr = Math.sin(radius);\n return function(from, to, direction, listener) {\n var step = direction * precision;\n if (from != null) {\n from = d3_geo_circleAngle(cr, from);\n to = d3_geo_circleAngle(cr, to);\n if (direction > 0 ? from < to : from > to) from += direction * τ;\n } else {\n from = radius + direction * τ;\n to = radius - .5 * step;\n }\n for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {\n listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);\n }\n };\n }\n function d3_geo_circleAngle(cr, point) {\n var a = d3_geo_cartesian(point);\n a[0] -= cr;\n d3_geo_cartesianNormalize(a);\n var angle = d3_acos(-a[1]);\n return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);\n }\n d3.geo.distance = function(a, b) {\n var Δλ = (b[0] - a[0]) * d3_radians, φ0 = a[1] * d3_radians, φ1 = b[1] * d3_radians, sinΔλ = Math.sin(Δλ), cosΔλ = Math.cos(Δλ), sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), sinφ1 = Math.sin(φ1), cosφ1 = Math.cos(φ1), t;\n return Math.atan2(Math.sqrt((t = cosφ1 * sinΔλ) * t + (t = cosφ0 * sinφ1 - sinφ0 * cosφ1 * cosΔλ) * t), sinφ0 * sinφ1 + cosφ0 * cosφ1 * cosΔλ);\n };\n d3.geo.graticule = function() {\n var x1, x0, X1, X0, y1, y0, Y1, Y0, dx = 10, dy = dx, DX = 90, DY = 360, x, y, X, Y, precision = 2.5;\n function graticule() {\n return {\n type: \"MultiLineString\",\n coordinates: lines()\n };\n }\n function lines() {\n return d3.range(Math.ceil(X0 / DX) * DX, X1, DX).map(X).concat(d3.range(Math.ceil(Y0 / DY) * DY, Y1, DY).map(Y)).concat(d3.range(Math.ceil(x0 / dx) * dx, x1, dx).filter(function(x) {\n return abs(x % DX) > ε;\n }).map(x)).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).filter(function(y) {\n return abs(y % DY) > ε;\n }).map(y));\n }\n graticule.lines = function() {\n return lines().map(function(coordinates) {\n return {\n type: \"LineString\",\n coordinates: coordinates\n };\n });\n };\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [ X(X0).concat(Y(Y1).slice(1), X(X1).reverse().slice(1), Y(Y0).reverse().slice(1)) ]\n };\n };\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.minorExtent();\n return graticule.majorExtent(_).minorExtent(_);\n };\n graticule.majorExtent = function(_) {\n if (!arguments.length) return [ [ X0, Y0 ], [ X1, Y1 ] ];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n graticule.minorExtent = function(_) {\n if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n graticule.step = function(_) {\n if (!arguments.length) return graticule.minorStep();\n return graticule.majorStep(_).minorStep(_);\n };\n graticule.majorStep = function(_) {\n if (!arguments.length) return [ DX, DY ];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n graticule.minorStep = function(_) {\n if (!arguments.length) return [ dx, dy ];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = d3_geo_graticuleX(y0, y1, 90);\n y = d3_geo_graticuleY(x0, x1, precision);\n X = d3_geo_graticuleX(Y0, Y1, 90);\n Y = d3_geo_graticuleY(X0, X1, precision);\n return graticule;\n };\n return graticule.majorExtent([ [ -180, -90 + ε ], [ 180, 90 - ε ] ]).minorExtent([ [ -180, -80 - ε ], [ 180, 80 + ε ] ]);\n };\n function d3_geo_graticuleX(y0, y1, dy) {\n var y = d3.range(y0, y1 - ε, dy).concat(y1);\n return function(x) {\n return y.map(function(y) {\n return [ x, y ];\n });\n };\n }\n function d3_geo_graticuleY(x0, x1, dx) {\n var x = d3.range(x0, x1 - ε, dx).concat(x1);\n return function(y) {\n return x.map(function(x) {\n return [ x, y ];\n });\n };\n }\n function d3_source(d) {\n return d.source;\n }\n function d3_target(d) {\n return d.target;\n }\n d3.geo.greatArc = function() {\n var source = d3_source, source_, target = d3_target, target_;\n function greatArc() {\n return {\n type: \"LineString\",\n coordinates: [ source_ || source.apply(this, arguments), target_ || target.apply(this, arguments) ]\n };\n }\n greatArc.distance = function() {\n return d3.geo.distance(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments));\n };\n greatArc.source = function(_) {\n if (!arguments.length) return source;\n source = _, source_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.target = function(_) {\n if (!arguments.length) return target;\n target = _, target_ = typeof _ === \"function\" ? null : _;\n return greatArc;\n };\n greatArc.precision = function() {\n return arguments.length ? greatArc : 0;\n };\n return greatArc;\n };\n d3.geo.interpolate = function(source, target) {\n return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);\n };\n function d3_geo_interpolate(x0, y0, x1, y1) {\n var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_haversin(y1 - y0) + cy0 * cy1 * d3_haversin(x1 - x0))), k = 1 / Math.sin(d);\n var interpolate = d ? function(t) {\n var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;\n return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];\n } : function() {\n return [ x0 * d3_degrees, y0 * d3_degrees ];\n };\n interpolate.distance = d;\n return interpolate;\n }\n d3.geo.length = function(object) {\n d3_geo_lengthSum = 0;\n d3.geo.stream(object, d3_geo_length);\n return d3_geo_lengthSum;\n };\n var d3_geo_lengthSum;\n var d3_geo_length = {\n sphere: d3_noop,\n point: d3_noop,\n lineStart: d3_geo_lengthLineStart,\n lineEnd: d3_noop,\n polygonStart: d3_noop,\n polygonEnd: d3_noop\n };\n function d3_geo_lengthLineStart() {\n var λ0, sinφ0, cosφ0;\n d3_geo_length.point = function(λ, φ) {\n λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);\n d3_geo_length.point = nextPoint;\n };\n d3_geo_length.lineEnd = function() {\n d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;\n };\n function nextPoint(λ, φ) {\n var sinφ = Math.sin(φ *= d3_radians), cosφ = Math.cos(φ), t = abs((λ *= d3_radians) - λ0), cosΔλ = Math.cos(t);\n d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);\n λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;\n }\n }\n function d3_geo_azimuthal(scale, angle) {\n function azimuthal(λ, φ) {\n var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);\n return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];\n }\n azimuthal.invert = function(x, y) {\n var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);\n return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];\n };\n return azimuthal;\n }\n var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {\n return Math.sqrt(2 / (1 + cosλcosφ));\n }, function(ρ) {\n return 2 * Math.asin(ρ / 2);\n });\n (d3.geo.azimuthalEqualArea = function() {\n return d3_geo_projection(d3_geo_azimuthalEqualArea);\n }).raw = d3_geo_azimuthalEqualArea;\n var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {\n var c = Math.acos(cosλcosφ);\n return c && c / Math.sin(c);\n }, d3_identity);\n (d3.geo.azimuthalEquidistant = function() {\n return d3_geo_projection(d3_geo_azimuthalEquidistant);\n }).raw = d3_geo_azimuthalEquidistant;\n function d3_geo_conicConformal(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), t = function(φ) {\n return Math.tan(π / 4 + φ / 2);\n }, n = φ0 === φ1 ? Math.sin(φ0) : Math.log(cosφ0 / Math.cos(φ1)) / Math.log(t(φ1) / t(φ0)), F = cosφ0 * Math.pow(t(φ0), n) / n;\n if (!n) return d3_geo_mercator;\n function forward(λ, φ) {\n if (F > 0) {\n if (φ < -halfπ + ε) φ = -halfπ + ε;\n } else {\n if (φ > halfπ - ε) φ = halfπ - ε;\n }\n var ρ = F / Math.pow(t(φ), n);\n return [ ρ * Math.sin(n * λ), F - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = F - y, ρ = d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y);\n return [ Math.atan2(x, ρ0_y) / n, 2 * Math.atan(Math.pow(F / ρ, 1 / n)) - halfπ ];\n };\n return forward;\n }\n (d3.geo.conicConformal = function() {\n return d3_geo_conic(d3_geo_conicConformal);\n }).raw = d3_geo_conicConformal;\n function d3_geo_conicEquidistant(φ0, φ1) {\n var cosφ0 = Math.cos(φ0), n = φ0 === φ1 ? Math.sin(φ0) : (cosφ0 - Math.cos(φ1)) / (φ1 - φ0), G = cosφ0 / n + φ0;\n if (abs(n) < ε) return d3_geo_equirectangular;\n function forward(λ, φ) {\n var ρ = G - φ;\n return [ ρ * Math.sin(n * λ), G - ρ * Math.cos(n * λ) ];\n }\n forward.invert = function(x, y) {\n var ρ0_y = G - y;\n return [ Math.atan2(x, ρ0_y) / n, G - d3_sgn(n) * Math.sqrt(x * x + ρ0_y * ρ0_y) ];\n };\n return forward;\n }\n (d3.geo.conicEquidistant = function() {\n return d3_geo_conic(d3_geo_conicEquidistant);\n }).raw = d3_geo_conicEquidistant;\n var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / cosλcosφ;\n }, Math.atan);\n (d3.geo.gnomonic = function() {\n return d3_geo_projection(d3_geo_gnomonic);\n }).raw = d3_geo_gnomonic;\n function d3_geo_mercator(λ, φ) {\n return [ λ, Math.log(Math.tan(π / 4 + φ / 2)) ];\n }\n d3_geo_mercator.invert = function(x, y) {\n return [ x, 2 * Math.atan(Math.exp(y)) - halfπ ];\n };\n function d3_geo_mercatorProjection(project) {\n var m = d3_geo_projection(project), scale = m.scale, translate = m.translate, clipExtent = m.clipExtent, clipAuto;\n m.scale = function() {\n var v = scale.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.translate = function() {\n var v = translate.apply(m, arguments);\n return v === m ? clipAuto ? m.clipExtent(null) : m : v;\n };\n m.clipExtent = function(_) {\n var v = clipExtent.apply(m, arguments);\n if (v === m) {\n if (clipAuto = _ == null) {\n var k = π * scale(), t = translate();\n clipExtent([ [ t[0] - k, t[1] - k ], [ t[0] + k, t[1] + k ] ]);\n }\n } else if (clipAuto) {\n v = null;\n }\n return v;\n };\n return m.clipExtent(null);\n }\n (d3.geo.mercator = function() {\n return d3_geo_mercatorProjection(d3_geo_mercator);\n }).raw = d3_geo_mercator;\n var d3_geo_orthographic = d3_geo_azimuthal(function() {\n return 1;\n }, Math.asin);\n (d3.geo.orthographic = function() {\n return d3_geo_projection(d3_geo_orthographic);\n }).raw = d3_geo_orthographic;\n var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {\n return 1 / (1 + cosλcosφ);\n }, function(ρ) {\n return 2 * Math.atan(ρ);\n });\n (d3.geo.stereographic = function() {\n return d3_geo_projection(d3_geo_stereographic);\n }).raw = d3_geo_stereographic;\n function d3_geo_transverseMercator(λ, φ) {\n return [ Math.log(Math.tan(π / 4 + φ / 2)), -λ ];\n }\n d3_geo_transverseMercator.invert = function(x, y) {\n return [ -y, 2 * Math.atan(Math.exp(x)) - halfπ ];\n };\n (d3.geo.transverseMercator = function() {\n var projection = d3_geo_mercatorProjection(d3_geo_transverseMercator), center = projection.center, rotate = projection.rotate;\n projection.center = function(_) {\n return _ ? center([ -_[1], _[0] ]) : (_ = center(), [ _[1], -_[0] ]);\n };\n projection.rotate = function(_) {\n return _ ? rotate([ _[0], _[1], _.length > 2 ? _[2] + 90 : 90 ]) : (_ = rotate(), \n [ _[0], _[1], _[2] - 90 ]);\n };\n return rotate([ 0, 0, 90 ]);\n }).raw = d3_geo_transverseMercator;\n d3.geom = {};\n function d3_geom_pointX(d) {\n return d[0];\n }\n function d3_geom_pointY(d) {\n return d[1];\n }\n d3.geom.hull = function(vertices) {\n var x = d3_geom_pointX, y = d3_geom_pointY;\n if (arguments.length) return hull(vertices);\n function hull(data) {\n if (data.length < 3) return [];\n var fx = d3_functor(x), fy = d3_functor(y), i, n = data.length, points = [], flippedPoints = [];\n for (i = 0; i < n; i++) {\n points.push([ +fx.call(this, data[i], i), +fy.call(this, data[i], i), i ]);\n }\n points.sort(d3_geom_hullOrder);\n for (i = 0; i < n; i++) flippedPoints.push([ points[i][0], -points[i][1] ]);\n var upper = d3_geom_hullUpper(points), lower = d3_geom_hullUpper(flippedPoints);\n var skipLeft = lower[0] === upper[0], skipRight = lower[lower.length - 1] === upper[upper.length - 1], polygon = [];\n for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);\n for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);\n return polygon;\n }\n hull.x = function(_) {\n return arguments.length ? (x = _, hull) : x;\n };\n hull.y = function(_) {\n return arguments.length ? (y = _, hull) : y;\n };\n return hull;\n };\n function d3_geom_hullUpper(points) {\n var n = points.length, hull = [ 0, 1 ], hs = 2;\n for (var i = 2; i < n; i++) {\n while (hs > 1 && d3_cross2d(points[hull[hs - 2]], points[hull[hs - 1]], points[i]) <= 0) --hs;\n hull[hs++] = i;\n }\n return hull.slice(0, hs);\n }\n function d3_geom_hullOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n }\n d3.geom.polygon = function(coordinates) {\n d3_subclass(coordinates, d3_geom_polygonPrototype);\n return coordinates;\n };\n var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];\n d3_geom_polygonPrototype.area = function() {\n var i = -1, n = this.length, a, b = this[n - 1], area = 0;\n while (++i < n) {\n a = b;\n b = this[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n return area * .5;\n };\n d3_geom_polygonPrototype.centroid = function(k) {\n var i = -1, n = this.length, x = 0, y = 0, a, b = this[n - 1], c;\n if (!arguments.length) k = -1 / (6 * this.area());\n while (++i < n) {\n a = b;\n b = this[i];\n c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n return [ x * k, y * k ];\n };\n d3_geom_polygonPrototype.clip = function(subject) {\n var input, closed = d3_geom_polygonClosed(subject), i = -1, n = this.length - d3_geom_polygonClosed(this), j, m, a = this[n - 1], b, c, d;\n while (++i < n) {\n input = subject.slice();\n subject.length = 0;\n b = this[i];\n c = input[(m = input.length - closed) - 1];\n j = -1;\n while (++j < m) {\n d = input[j];\n if (d3_geom_polygonInside(d, a, b)) {\n if (!d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n subject.push(d);\n } else if (d3_geom_polygonInside(c, a, b)) {\n subject.push(d3_geom_polygonIntersect(c, d, a, b));\n }\n c = d;\n }\n if (closed) subject.push(subject[0]);\n a = b;\n }\n return subject;\n };\n function d3_geom_polygonInside(p, a, b) {\n return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);\n }\n function d3_geom_polygonIntersect(c, d, a, b) {\n var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);\n return [ x1 + ua * x21, y1 + ua * y21 ];\n }\n function d3_geom_polygonClosed(coordinates) {\n var a = coordinates[0], b = coordinates[coordinates.length - 1];\n return !(a[0] - b[0] || a[1] - b[1]);\n }\n var d3_geom_voronoiEdges, d3_geom_voronoiCells, d3_geom_voronoiBeaches, d3_geom_voronoiBeachPool = [], d3_geom_voronoiFirstCircle, d3_geom_voronoiCircles, d3_geom_voronoiCirclePool = [];\n function d3_geom_voronoiBeach() {\n d3_geom_voronoiRedBlackNode(this);\n this.edge = this.site = this.circle = null;\n }\n function d3_geom_voronoiCreateBeach(site) {\n var beach = d3_geom_voronoiBeachPool.pop() || new d3_geom_voronoiBeach();\n beach.site = site;\n return beach;\n }\n function d3_geom_voronoiDetachBeach(beach) {\n d3_geom_voronoiDetachCircle(beach);\n d3_geom_voronoiBeaches.remove(beach);\n d3_geom_voronoiBeachPool.push(beach);\n d3_geom_voronoiRedBlackNode(beach);\n }\n function d3_geom_voronoiRemoveBeach(beach) {\n var circle = beach.circle, x = circle.x, y = circle.cy, vertex = {\n x: x,\n y: y\n }, previous = beach.P, next = beach.N, disappearing = [ beach ];\n d3_geom_voronoiDetachBeach(beach);\n var lArc = previous;\n while (lArc.circle && abs(x - lArc.circle.x) < ε && abs(y - lArc.circle.cy) < ε) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachBeach(lArc);\n lArc = previous;\n }\n disappearing.unshift(lArc);\n d3_geom_voronoiDetachCircle(lArc);\n var rArc = next;\n while (rArc.circle && abs(x - rArc.circle.x) < ε && abs(y - rArc.circle.cy) < ε) {\n next = rArc.N;\n disappearing.push(rArc);\n d3_geom_voronoiDetachBeach(rArc);\n rArc = next;\n }\n disappearing.push(rArc);\n d3_geom_voronoiDetachCircle(rArc);\n var nArcs = disappearing.length, iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, rArc.site, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiAddBeach(site) {\n var x = site.x, directrix = site.y, lArc, rArc, dxl, dxr, node = d3_geom_voronoiBeaches._;\n while (node) {\n dxl = d3_geom_voronoiLeftBreakPoint(node, directrix) - x;\n if (dxl > ε) node = node.L; else {\n dxr = x - d3_geom_voronoiRightBreakPoint(node, directrix);\n if (dxr > ε) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -ε) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -ε) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n var newArc = d3_geom_voronoiCreateBeach(site);\n d3_geom_voronoiBeaches.insert(lArc, newArc);\n if (!lArc && !rArc) return;\n if (lArc === rArc) {\n d3_geom_voronoiDetachCircle(lArc);\n rArc = d3_geom_voronoiCreateBeach(lArc.site);\n d3_geom_voronoiBeaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n return;\n }\n if (!rArc) {\n newArc.edge = d3_geom_voronoiCreateEdge(lArc.site, newArc.site);\n return;\n }\n d3_geom_voronoiDetachCircle(lArc);\n d3_geom_voronoiDetachCircle(rArc);\n var lSite = lArc.site, ax = lSite.x, ay = lSite.y, bx = site.x - ax, by = site.y - ay, rSite = rArc.site, cx = rSite.x - ax, cy = rSite.y - ay, d = 2 * (bx * cy - by * cx), hb = bx * bx + by * by, hc = cx * cx + cy * cy, vertex = {\n x: (cy * hb - by * hc) / d + ax,\n y: (bx * hc - cx * hb) / d + ay\n };\n d3_geom_voronoiSetEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = d3_geom_voronoiCreateEdge(lSite, site, null, vertex);\n rArc.edge = d3_geom_voronoiCreateEdge(site, rSite, null, vertex);\n d3_geom_voronoiAttachCircle(lArc);\n d3_geom_voronoiAttachCircle(rArc);\n }\n function d3_geom_voronoiLeftBreakPoint(arc, directrix) {\n var site = arc.site, rfocx = site.x, rfocy = site.y, pby2 = rfocy - directrix;\n if (!pby2) return rfocx;\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n site = lArc.site;\n var lfocx = site.x, lfocy = site.y, plby2 = lfocy - directrix;\n if (!plby2) return lfocx;\n var hl = lfocx - rfocx, aby2 = 1 / pby2 - 1 / plby2, b = hl / plby2;\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n return (rfocx + lfocx) / 2;\n }\n function d3_geom_voronoiRightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return d3_geom_voronoiLeftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site.y === directrix ? site.x : Infinity;\n }\n function d3_geom_voronoiCell(site) {\n this.site = site;\n this.edges = [];\n }\n d3_geom_voronoiCell.prototype.prepare = function() {\n var halfEdges = this.edges, iHalfEdge = halfEdges.length, edge;\n while (iHalfEdge--) {\n edge = halfEdges[iHalfEdge].edge;\n if (!edge.b || !edge.a) halfEdges.splice(iHalfEdge, 1);\n }\n halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);\n return halfEdges.length;\n };\n function d3_geom_voronoiCloseCells(extent) {\n var x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], x2, y2, x3, y3, cells = d3_geom_voronoiCells, iCell = cells.length, cell, iHalfEdge, halfEdges, nHalfEdges, start, end;\n while (iCell--) {\n cell = cells[iCell];\n if (!cell || !cell.prepare()) continue;\n halfEdges = cell.edges;\n nHalfEdges = halfEdges.length;\n iHalfEdge = 0;\n while (iHalfEdge < nHalfEdges) {\n end = halfEdges[iHalfEdge].end(), x3 = end.x, y3 = end.y;\n start = halfEdges[++iHalfEdge % nHalfEdges].start(), x2 = start.x, y2 = start.y;\n if (abs(x3 - x2) > ε || abs(y3 - y2) > ε) {\n halfEdges.splice(iHalfEdge, 0, new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site, end, abs(x3 - x0) < ε && y1 - y3 > ε ? {\n x: x0,\n y: abs(x2 - x0) < ε ? y2 : y1\n } : abs(y3 - y1) < ε && x1 - x3 > ε ? {\n x: abs(y2 - y1) < ε ? x2 : x1,\n y: y1\n } : abs(x3 - x1) < ε && y3 - y0 > ε ? {\n x: x1,\n y: abs(x2 - x1) < ε ? y2 : y0\n } : abs(y3 - y0) < ε && x3 - x0 > ε ? {\n x: abs(y2 - y0) < ε ? x2 : x0,\n y: y0\n } : null), cell.site, null));\n ++nHalfEdges;\n }\n }\n }\n }\n function d3_geom_voronoiHalfEdgeOrder(a, b) {\n return b.angle - a.angle;\n }\n function d3_geom_voronoiCircle() {\n d3_geom_voronoiRedBlackNode(this);\n this.x = this.y = this.arc = this.site = this.cy = null;\n }\n function d3_geom_voronoiAttachCircle(arc) {\n var lArc = arc.P, rArc = arc.N;\n if (!lArc || !rArc) return;\n var lSite = lArc.site, cSite = arc.site, rSite = rArc.site;\n if (lSite === rSite) return;\n var bx = cSite.x, by = cSite.y, ax = lSite.x - bx, ay = lSite.y - by, cx = rSite.x - bx, cy = rSite.y - by;\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -ε2) return;\n var ha = ax * ax + ay * ay, hc = cx * cx + cy * cy, x = (cy * ha - ay * hc) / d, y = (ax * hc - cx * ha) / d, cy = y + by;\n var circle = d3_geom_voronoiCirclePool.pop() || new d3_geom_voronoiCircle();\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = cy + Math.sqrt(x * x + y * y);\n circle.cy = cy;\n arc.circle = circle;\n var before = null, node = d3_geom_voronoiCircles._;\n while (node) {\n if (circle.y < node.y || circle.y === node.y && circle.x <= node.x) {\n if (node.L) node = node.L; else {\n before = node.P;\n break;\n }\n } else {\n if (node.R) node = node.R; else {\n before = node;\n break;\n }\n }\n }\n d3_geom_voronoiCircles.insert(before, circle);\n if (!before) d3_geom_voronoiFirstCircle = circle;\n }\n function d3_geom_voronoiDetachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) d3_geom_voronoiFirstCircle = circle.N;\n d3_geom_voronoiCircles.remove(circle);\n d3_geom_voronoiCirclePool.push(circle);\n d3_geom_voronoiRedBlackNode(circle);\n arc.circle = null;\n }\n }\n function d3_geom_voronoiClipEdges(extent) {\n var edges = d3_geom_voronoiEdges, clip = d3_geom_clipLine(extent[0][0], extent[0][1], extent[1][0], extent[1][1]), i = edges.length, e;\n while (i--) {\n e = edges[i];\n if (!d3_geom_voronoiConnectEdge(e, extent) || !clip(e) || abs(e.a.x - e.b.x) < ε && abs(e.a.y - e.b.y) < ε) {\n e.a = e.b = null;\n edges.splice(i, 1);\n }\n }\n }\n function d3_geom_voronoiConnectEdge(edge, extent) {\n var vb = edge.b;\n if (vb) return true;\n var va = edge.a, x0 = extent[0][0], x1 = extent[1][0], y0 = extent[0][1], y1 = extent[1][1], lSite = edge.l, rSite = edge.r, lx = lSite.x, ly = lSite.y, rx = rSite.x, ry = rSite.y, fx = (lx + rx) / 2, fy = (ly + ry) / 2, fm, fb;\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!va) va = {\n x: fx,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: fx,\n y: y1\n };\n } else {\n if (!va) va = {\n x: fx,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: fx,\n y: y0\n };\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!va) va = {\n x: (y0 - fb) / fm,\n y: y0\n }; else if (va.y >= y1) return;\n vb = {\n x: (y1 - fb) / fm,\n y: y1\n };\n } else {\n if (!va) va = {\n x: (y1 - fb) / fm,\n y: y1\n }; else if (va.y < y0) return;\n vb = {\n x: (y0 - fb) / fm,\n y: y0\n };\n }\n } else {\n if (ly < ry) {\n if (!va) va = {\n x: x0,\n y: fm * x0 + fb\n }; else if (va.x >= x1) return;\n vb = {\n x: x1,\n y: fm * x1 + fb\n };\n } else {\n if (!va) va = {\n x: x1,\n y: fm * x1 + fb\n }; else if (va.x < x0) return;\n vb = {\n x: x0,\n y: fm * x0 + fb\n };\n }\n }\n }\n edge.a = va;\n edge.b = vb;\n return true;\n }\n function d3_geom_voronoiEdge(lSite, rSite) {\n this.l = lSite;\n this.r = rSite;\n this.a = this.b = null;\n }\n function d3_geom_voronoiCreateEdge(lSite, rSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, rSite);\n d3_geom_voronoiEdges.push(edge);\n if (va) d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, va);\n if (vb) d3_geom_voronoiSetEdgeEnd(edge, rSite, lSite, vb);\n d3_geom_voronoiCells[lSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, lSite, rSite));\n d3_geom_voronoiCells[rSite.i].edges.push(new d3_geom_voronoiHalfEdge(edge, rSite, lSite));\n return edge;\n }\n function d3_geom_voronoiCreateBorderEdge(lSite, va, vb) {\n var edge = new d3_geom_voronoiEdge(lSite, null);\n edge.a = va;\n edge.b = vb;\n d3_geom_voronoiEdges.push(edge);\n return edge;\n }\n function d3_geom_voronoiSetEdgeEnd(edge, lSite, rSite, vertex) {\n if (!edge.a && !edge.b) {\n edge.a = vertex;\n edge.l = lSite;\n edge.r = rSite;\n } else if (edge.l === rSite) {\n edge.b = vertex;\n } else {\n edge.a = vertex;\n }\n }\n function d3_geom_voronoiHalfEdge(edge, lSite, rSite) {\n var va = edge.a, vb = edge.b;\n this.edge = edge;\n this.site = lSite;\n this.angle = rSite ? Math.atan2(rSite.y - lSite.y, rSite.x - lSite.x) : edge.l === lSite ? Math.atan2(vb.x - va.x, va.y - vb.y) : Math.atan2(va.x - vb.x, vb.y - va.y);\n }\n d3_geom_voronoiHalfEdge.prototype = {\n start: function() {\n return this.edge.l === this.site ? this.edge.a : this.edge.b;\n },\n end: function() {\n return this.edge.l === this.site ? this.edge.b : this.edge.a;\n }\n };\n function d3_geom_voronoiRedBlackTree() {\n this._ = null;\n }\n function d3_geom_voronoiRedBlackNode(node) {\n node.U = node.C = node.L = node.R = node.P = node.N = null;\n }\n d3_geom_voronoiRedBlackTree.prototype = {\n insert: function(after, node) {\n var parent, grandpa, uncle;\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = d3_geom_voronoiRedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n var parent = node.U, sibling, left = node.L, right = node.R, next, red;\n if (!left) next = right; else if (!right) next = left; else next = d3_geom_voronoiRedBlackFirst(right);\n if (parent) {\n if (parent.L === node) parent.L = next; else parent.R = next;\n } else {\n this._ = next;\n }\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) {\n node.C = false;\n return;\n }\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n d3_geom_voronoiRedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if (sibling.L && sibling.L.C || sibling.R && sibling.R.C) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n d3_geom_voronoiRedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n d3_geom_voronoiRedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n if (node) node.C = false;\n }\n };\n function d3_geom_voronoiRedBlackRotateLeft(tree, node) {\n var p = node, q = node.R, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n }\n function d3_geom_voronoiRedBlackRotateRight(tree, node) {\n var p = node, q = node.L, parent = p.U;\n if (parent) {\n if (parent.L === p) parent.L = q; else parent.R = q;\n } else {\n tree._ = q;\n }\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n }\n function d3_geom_voronoiRedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n }\n function d3_geom_voronoi(sites, bbox) {\n var site = sites.sort(d3_geom_voronoiVertexOrder).pop(), x0, y0, circle;\n d3_geom_voronoiEdges = [];\n d3_geom_voronoiCells = new Array(sites.length);\n d3_geom_voronoiBeaches = new d3_geom_voronoiRedBlackTree();\n d3_geom_voronoiCircles = new d3_geom_voronoiRedBlackTree();\n while (true) {\n circle = d3_geom_voronoiFirstCircle;\n if (site && (!circle || site.y < circle.y || site.y === circle.y && site.x < circle.x)) {\n if (site.x !== x0 || site.y !== y0) {\n d3_geom_voronoiCells[site.i] = new d3_geom_voronoiCell(site);\n d3_geom_voronoiAddBeach(site);\n x0 = site.x, y0 = site.y;\n }\n site = sites.pop();\n } else if (circle) {\n d3_geom_voronoiRemoveBeach(circle.arc);\n } else {\n break;\n }\n }\n if (bbox) d3_geom_voronoiClipEdges(bbox), d3_geom_voronoiCloseCells(bbox);\n var diagram = {\n cells: d3_geom_voronoiCells,\n edges: d3_geom_voronoiEdges\n };\n d3_geom_voronoiBeaches = d3_geom_voronoiCircles = d3_geom_voronoiEdges = d3_geom_voronoiCells = null;\n return diagram;\n }\n function d3_geom_voronoiVertexOrder(a, b) {\n return b.y - a.y || b.x - a.x;\n }\n d3.geom.voronoi = function(points) {\n var x = d3_geom_pointX, y = d3_geom_pointY, fx = x, fy = y, clipExtent = d3_geom_voronoiClipExtent;\n if (points) return voronoi(points);\n function voronoi(data) {\n var polygons = new Array(data.length), x0 = clipExtent[0][0], y0 = clipExtent[0][1], x1 = clipExtent[1][0], y1 = clipExtent[1][1];\n d3_geom_voronoi(sites(data), clipExtent).cells.forEach(function(cell, i) {\n var edges = cell.edges, site = cell.site, polygon = polygons[i] = edges.length ? edges.map(function(e) {\n var s = e.start();\n return [ s.x, s.y ];\n }) : site.x >= x0 && site.x <= x1 && site.y >= y0 && site.y <= y1 ? [ [ x0, y1 ], [ x1, y1 ], [ x1, y0 ], [ x0, y0 ] ] : [];\n polygon.point = data[i];\n });\n return polygons;\n }\n function sites(data) {\n return data.map(function(d, i) {\n return {\n x: Math.round(fx(d, i) / ε) * ε,\n y: Math.round(fy(d, i) / ε) * ε,\n i: i\n };\n });\n }\n voronoi.links = function(data) {\n return d3_geom_voronoi(sites(data)).edges.filter(function(edge) {\n return edge.l && edge.r;\n }).map(function(edge) {\n return {\n source: data[edge.l.i],\n target: data[edge.r.i]\n };\n });\n };\n voronoi.triangles = function(data) {\n var triangles = [];\n d3_geom_voronoi(sites(data)).cells.forEach(function(cell, i) {\n var site = cell.site, edges = cell.edges.sort(d3_geom_voronoiHalfEdgeOrder), j = -1, m = edges.length, e0, s0, e1 = edges[m - 1].edge, s1 = e1.l === site ? e1.r : e1.l;\n while (++j < m) {\n e0 = e1;\n s0 = s1;\n e1 = edges[j].edge;\n s1 = e1.l === site ? e1.r : e1.l;\n if (i < s0.i && i < s1.i && d3_geom_voronoiTriangleArea(site, s0, s1) < 0) {\n triangles.push([ data[i], data[s0.i], data[s1.i] ]);\n }\n }\n });\n return triangles;\n };\n voronoi.x = function(_) {\n return arguments.length ? (fx = d3_functor(x = _), voronoi) : x;\n };\n voronoi.y = function(_) {\n return arguments.length ? (fy = d3_functor(y = _), voronoi) : y;\n };\n voronoi.clipExtent = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent;\n clipExtent = _ == null ? d3_geom_voronoiClipExtent : _;\n return voronoi;\n };\n voronoi.size = function(_) {\n if (!arguments.length) return clipExtent === d3_geom_voronoiClipExtent ? null : clipExtent && clipExtent[1];\n return voronoi.clipExtent(_ && [ [ 0, 0 ], _ ]);\n };\n return voronoi;\n };\n var d3_geom_voronoiClipExtent = [ [ -1e6, -1e6 ], [ 1e6, 1e6 ] ];\n function d3_geom_voronoiTriangleArea(a, b, c) {\n return (a.x - c.x) * (b.y - a.y) - (a.x - b.x) * (c.y - a.y);\n }\n d3.geom.delaunay = function(vertices) {\n return d3.geom.voronoi().triangles(vertices);\n };\n d3.geom.quadtree = function(points, x1, y1, x2, y2) {\n var x = d3_geom_pointX, y = d3_geom_pointY, compat;\n if (compat = arguments.length) {\n x = d3_geom_quadtreeCompatX;\n y = d3_geom_quadtreeCompatY;\n if (compat === 3) {\n y2 = y1;\n x2 = x1;\n y1 = x1 = 0;\n }\n return quadtree(points);\n }\n function quadtree(data) {\n var d, fx = d3_functor(x), fy = d3_functor(y), xs, ys, i, n, x1_, y1_, x2_, y2_;\n if (x1 != null) {\n x1_ = x1, y1_ = y1, x2_ = x2, y2_ = y2;\n } else {\n x2_ = y2_ = -(x1_ = y1_ = Infinity);\n xs = [], ys = [];\n n = data.length;\n if (compat) for (i = 0; i < n; ++i) {\n d = data[i];\n if (d.x < x1_) x1_ = d.x;\n if (d.y < y1_) y1_ = d.y;\n if (d.x > x2_) x2_ = d.x;\n if (d.y > y2_) y2_ = d.y;\n xs.push(d.x);\n ys.push(d.y);\n } else for (i = 0; i < n; ++i) {\n var x_ = +fx(d = data[i], i), y_ = +fy(d, i);\n if (x_ < x1_) x1_ = x_;\n if (y_ < y1_) y1_ = y_;\n if (x_ > x2_) x2_ = x_;\n if (y_ > y2_) y2_ = y_;\n xs.push(x_);\n ys.push(y_);\n }\n }\n var dx = x2_ - x1_, dy = y2_ - y1_;\n if (dx > dy) y2_ = y1_ + dx; else x2_ = x1_ + dy;\n function insert(n, d, x, y, x1, y1, x2, y2) {\n if (isNaN(x) || isNaN(y)) return;\n if (n.leaf) {\n var nx = n.x, ny = n.y;\n if (nx != null) {\n if (abs(nx - x) + abs(ny - y) < .01) {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n } else {\n var nPoint = n.point;\n n.x = n.y = n.point = null;\n insertChild(n, nPoint, nx, ny, x1, y1, x2, y2);\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n } else {\n n.x = x, n.y = y, n.point = d;\n }\n } else {\n insertChild(n, d, x, y, x1, y1, x2, y2);\n }\n }\n function insertChild(n, d, x, y, x1, y1, x2, y2) {\n var xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym, i = below << 1 | right;\n n.leaf = false;\n n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());\n if (right) x1 = xm; else x2 = xm;\n if (below) y1 = ym; else y2 = ym;\n insert(n, d, x, y, x1, y1, x2, y2);\n }\n var root = d3_geom_quadtreeNode();\n root.add = function(d) {\n insert(root, d, +fx(d, ++i), +fy(d, i), x1_, y1_, x2_, y2_);\n };\n root.visit = function(f) {\n d3_geom_quadtreeVisit(f, root, x1_, y1_, x2_, y2_);\n };\n root.find = function(point) {\n return d3_geom_quadtreeFind(root, point[0], point[1], x1_, y1_, x2_, y2_);\n };\n i = -1;\n if (x1 == null) {\n while (++i < n) {\n insert(root, data[i], xs[i], ys[i], x1_, y1_, x2_, y2_);\n }\n --i;\n } else data.forEach(root.add);\n xs = ys = data = d = null;\n return root;\n }\n quadtree.x = function(_) {\n return arguments.length ? (x = _, quadtree) : x;\n };\n quadtree.y = function(_) {\n return arguments.length ? (y = _, quadtree) : y;\n };\n quadtree.extent = function(_) {\n if (!arguments.length) return x1 == null ? null : [ [ x1, y1 ], [ x2, y2 ] ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = +_[0][0], y1 = +_[0][1], x2 = +_[1][0], \n y2 = +_[1][1];\n return quadtree;\n };\n quadtree.size = function(_) {\n if (!arguments.length) return x1 == null ? null : [ x2 - x1, y2 - y1 ];\n if (_ == null) x1 = y1 = x2 = y2 = null; else x1 = y1 = 0, x2 = +_[0], y2 = +_[1];\n return quadtree;\n };\n return quadtree;\n };\n function d3_geom_quadtreeCompatX(d) {\n return d.x;\n }\n function d3_geom_quadtreeCompatY(d) {\n return d.y;\n }\n function d3_geom_quadtreeNode() {\n return {\n leaf: true,\n nodes: [],\n point: null,\n x: null,\n y: null\n };\n }\n function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {\n if (!f(node, x1, y1, x2, y2)) {\n var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;\n if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);\n if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);\n if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);\n if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);\n }\n }\n function d3_geom_quadtreeFind(root, x, y, x0, y0, x3, y3) {\n var minDistance2 = Infinity, closestPoint;\n (function find(node, x1, y1, x2, y2) {\n if (x1 > x3 || y1 > y3 || x2 < x0 || y2 < y0) return;\n if (point = node.point) {\n var point, dx = x - node.x, dy = y - node.y, distance2 = dx * dx + dy * dy;\n if (distance2 < minDistance2) {\n var distance = Math.sqrt(minDistance2 = distance2);\n x0 = x - distance, y0 = y - distance;\n x3 = x + distance, y3 = y + distance;\n closestPoint = point;\n }\n }\n var children = node.nodes, xm = (x1 + x2) * .5, ym = (y1 + y2) * .5, right = x >= xm, below = y >= ym;\n for (var i = below << 1 | right, j = i + 4; i < j; ++i) {\n if (node = children[i & 3]) switch (i & 3) {\n case 0:\n find(node, x1, y1, xm, ym);\n break;\n\n case 1:\n find(node, xm, y1, x2, ym);\n break;\n\n case 2:\n find(node, x1, ym, xm, y2);\n break;\n\n case 3:\n find(node, xm, ym, x2, y2);\n break;\n }\n }\n })(root, x0, y0, x3, y3);\n return closestPoint;\n }\n d3.interpolateRgb = d3_interpolateRgb;\n function d3_interpolateRgb(a, b) {\n a = d3.rgb(a);\n b = d3.rgb(b);\n var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;\n return function(t) {\n return \"#\" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));\n };\n }\n d3.interpolateObject = d3_interpolateObject;\n function d3_interpolateObject(a, b) {\n var i = {}, c = {}, k;\n for (k in a) {\n if (k in b) {\n i[k] = d3_interpolate(a[k], b[k]);\n } else {\n c[k] = a[k];\n }\n }\n for (k in b) {\n if (!(k in a)) {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n }\n d3.interpolateNumber = d3_interpolateNumber;\n function d3_interpolateNumber(a, b) {\n a = +a, b = +b;\n return function(t) {\n return a * (1 - t) + b * t;\n };\n }\n d3.interpolateString = d3_interpolateString;\n function d3_interpolateString(a, b) {\n var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i]) s[i] += bm; else s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({\n i: i,\n x: d3_interpolateNumber(am, bm)\n });\n }\n bi = d3_interpolate_numberB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; else s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? (b = q[0].x, function(t) {\n return b(t) + \"\";\n }) : function() {\n return b;\n } : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n }\n var d3_interpolate_numberA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, \"g\");\n d3.interpolate = d3_interpolate;\n function d3_interpolate(a, b) {\n var i = d3.interpolators.length, f;\n while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;\n return f;\n }\n d3.interpolators = [ function(a, b) {\n var t = typeof b;\n return (t === \"string\" ? d3_rgb_names.has(b.toLowerCase()) || /^(#|rgb\\(|hsl\\()/i.test(b) ? d3_interpolateRgb : d3_interpolateString : b instanceof d3_color ? d3_interpolateRgb : Array.isArray(b) ? d3_interpolateArray : t === \"object\" && isNaN(b) ? d3_interpolateObject : d3_interpolateNumber)(a, b);\n } ];\n d3.interpolateArray = d3_interpolateArray;\n function d3_interpolateArray(a, b) {\n var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;\n for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));\n for (;i < na; ++i) c[i] = a[i];\n for (;i < nb; ++i) c[i] = b[i];\n return function(t) {\n for (i = 0; i < n0; ++i) c[i] = x[i](t);\n return c;\n };\n }\n var d3_ease_default = function() {\n return d3_identity;\n };\n var d3_ease = d3.map({\n linear: d3_ease_default,\n poly: d3_ease_poly,\n quad: function() {\n return d3_ease_quad;\n },\n cubic: function() {\n return d3_ease_cubic;\n },\n sin: function() {\n return d3_ease_sin;\n },\n exp: function() {\n return d3_ease_exp;\n },\n circle: function() {\n return d3_ease_circle;\n },\n elastic: d3_ease_elastic,\n back: d3_ease_back,\n bounce: function() {\n return d3_ease_bounce;\n }\n });\n var d3_ease_mode = d3.map({\n \"in\": d3_identity,\n out: d3_ease_reverse,\n \"in-out\": d3_ease_reflect,\n \"out-in\": function(f) {\n return d3_ease_reflect(d3_ease_reverse(f));\n }\n });\n d3.ease = function(name) {\n var i = name.indexOf(\"-\"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : \"in\";\n t = d3_ease.get(t) || d3_ease_default;\n m = d3_ease_mode.get(m) || d3_identity;\n return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));\n };\n function d3_ease_clamp(f) {\n return function(t) {\n return t <= 0 ? 0 : t >= 1 ? 1 : f(t);\n };\n }\n function d3_ease_reverse(f) {\n return function(t) {\n return 1 - f(1 - t);\n };\n }\n function d3_ease_reflect(f) {\n return function(t) {\n return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));\n };\n }\n function d3_ease_quad(t) {\n return t * t;\n }\n function d3_ease_cubic(t) {\n return t * t * t;\n }\n function d3_ease_cubicInOut(t) {\n if (t <= 0) return 0;\n if (t >= 1) return 1;\n var t2 = t * t, t3 = t2 * t;\n return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);\n }\n function d3_ease_poly(e) {\n return function(t) {\n return Math.pow(t, e);\n };\n }\n function d3_ease_sin(t) {\n return 1 - Math.cos(t * halfπ);\n }\n function d3_ease_exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n function d3_ease_circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n function d3_ease_elastic(a, p) {\n var s;\n if (arguments.length < 2) p = .45;\n if (arguments.length) s = p / τ * Math.asin(1 / a); else a = 1, s = p / 4;\n return function(t) {\n return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);\n };\n }\n function d3_ease_back(s) {\n if (!s) s = 1.70158;\n return function(t) {\n return t * t * ((s + 1) * t - s);\n };\n }\n function d3_ease_bounce(t) {\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;\n }\n d3.interpolateHcl = d3_interpolateHcl;\n function d3_interpolateHcl(a, b) {\n a = d3.hcl(a);\n b = d3.hcl(b);\n var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;\n if (isNaN(bc)) bc = 0, ac = isNaN(ac) ? b.c : ac;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateHsl = d3_interpolateHsl;\n function d3_interpolateHsl(a, b) {\n a = d3.hsl(a);\n b = d3.hsl(b);\n var ah = a.h, as = a.s, al = a.l, bh = b.h - ah, bs = b.s - as, bl = b.l - al;\n if (isNaN(bs)) bs = 0, as = isNaN(as) ? b.s : as;\n if (isNaN(bh)) bh = 0, ah = isNaN(ah) ? b.h : ah; else if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;\n return function(t) {\n return d3_hsl_rgb(ah + bh * t, as + bs * t, al + bl * t) + \"\";\n };\n }\n d3.interpolateLab = d3_interpolateLab;\n function d3_interpolateLab(a, b) {\n a = d3.lab(a);\n b = d3.lab(b);\n var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;\n return function(t) {\n return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + \"\";\n };\n }\n d3.interpolateRound = d3_interpolateRound;\n function d3_interpolateRound(a, b) {\n b -= a;\n return function(t) {\n return Math.round(a + b * t);\n };\n }\n d3.transform = function(string) {\n var g = d3_document.createElementNS(d3.ns.prefix.svg, \"g\");\n return (d3.transform = function(string) {\n if (string != null) {\n g.setAttribute(\"transform\", string);\n var t = g.transform.baseVal.consolidate();\n }\n return new d3_transform(t ? t.matrix : d3_transformIdentity);\n })(string);\n };\n function d3_transform(m) {\n var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;\n if (r0[0] * r1[1] < r1[0] * r0[1]) {\n r0[0] *= -1;\n r0[1] *= -1;\n kx *= -1;\n kz *= -1;\n }\n this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;\n this.translate = [ m.e, m.f ];\n this.scale = [ kx, ky ];\n this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;\n }\n d3_transform.prototype.toString = function() {\n return \"translate(\" + this.translate + \")rotate(\" + this.rotate + \")skewX(\" + this.skew + \")scale(\" + this.scale + \")\";\n };\n function d3_transformDot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n }\n function d3_transformNormalize(a) {\n var k = Math.sqrt(d3_transformDot(a, a));\n if (k) {\n a[0] /= k;\n a[1] /= k;\n }\n return k;\n }\n function d3_transformCombine(a, b, k) {\n a[0] += k * b[0];\n a[1] += k * b[1];\n return a;\n }\n var d3_transformIdentity = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 0\n };\n d3.interpolateTransform = d3_interpolateTransform;\n function d3_interpolateTransformPop(s) {\n return s.length ? s.pop() + \",\" : \"\";\n }\n function d3_interpolateTranslate(ta, tb, s, q) {\n if (ta[0] !== tb[0] || ta[1] !== tb[1]) {\n var i = s.push(\"translate(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ta[0], tb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ta[1], tb[1])\n });\n } else if (tb[0] || tb[1]) {\n s.push(\"translate(\" + tb + \")\");\n }\n }\n function d3_interpolateRotate(ra, rb, s, q) {\n if (ra !== rb) {\n if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"rotate(\", null, \")\") - 2,\n x: d3_interpolateNumber(ra, rb)\n });\n } else if (rb) {\n s.push(d3_interpolateTransformPop(s) + \"rotate(\" + rb + \")\");\n }\n }\n function d3_interpolateSkew(wa, wb, s, q) {\n if (wa !== wb) {\n q.push({\n i: s.push(d3_interpolateTransformPop(s) + \"skewX(\", null, \")\") - 2,\n x: d3_interpolateNumber(wa, wb)\n });\n } else if (wb) {\n s.push(d3_interpolateTransformPop(s) + \"skewX(\" + wb + \")\");\n }\n }\n function d3_interpolateScale(ka, kb, s, q) {\n if (ka[0] !== kb[0] || ka[1] !== kb[1]) {\n var i = s.push(d3_interpolateTransformPop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({\n i: i - 4,\n x: d3_interpolateNumber(ka[0], kb[0])\n }, {\n i: i - 2,\n x: d3_interpolateNumber(ka[1], kb[1])\n });\n } else if (kb[0] !== 1 || kb[1] !== 1) {\n s.push(d3_interpolateTransformPop(s) + \"scale(\" + kb + \")\");\n }\n }\n function d3_interpolateTransform(a, b) {\n var s = [], q = [];\n a = d3.transform(a), b = d3.transform(b);\n d3_interpolateTranslate(a.translate, b.translate, s, q);\n d3_interpolateRotate(a.rotate, b.rotate, s, q);\n d3_interpolateSkew(a.skew, b.skew, s, q);\n d3_interpolateScale(a.scale, b.scale, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n }\n function d3_uninterpolateNumber(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return (x - a) / b;\n };\n }\n function d3_uninterpolateClamp(a, b) {\n b = (b -= a = +a) || 1 / b;\n return function(x) {\n return Math.max(0, Math.min(1, (x - a) / b));\n };\n }\n d3.layout = {};\n d3.layout.bundle = function() {\n return function(links) {\n var paths = [], i = -1, n = links.length;\n while (++i < n) paths.push(d3_layout_bundlePath(links[i]));\n return paths;\n };\n };\n function d3_layout_bundlePath(link) {\n var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];\n while (start !== lca) {\n start = start.parent;\n points.push(start);\n }\n var k = points.length;\n while (end !== lca) {\n points.splice(k, 0, end);\n end = end.parent;\n }\n return points;\n }\n function d3_layout_bundleAncestors(node) {\n var ancestors = [], parent = node.parent;\n while (parent != null) {\n ancestors.push(node);\n node = parent;\n parent = parent.parent;\n }\n ancestors.push(node);\n return ancestors;\n }\n function d3_layout_bundleLeastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;\n while (aNode === bNode) {\n sharedNode = aNode;\n aNode = aNodes.pop();\n bNode = bNodes.pop();\n }\n return sharedNode;\n }\n d3.layout.chord = function() {\n var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;\n function relayout() {\n var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;\n chords = [];\n groups = [];\n k = 0, i = -1;\n while (++i < n) {\n x = 0, j = -1;\n while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(d3.range(n));\n k += x;\n }\n if (sortGroups) {\n groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n }\n if (sortSubgroups) {\n subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n }\n k = (τ - padding * n) / k;\n x = 0, i = -1;\n while (++i < n) {\n x0 = x, j = -1;\n while (++j < n) {\n var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;\n subgroups[di + \"-\" + dj] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += padding;\n }\n i = -1;\n while (++i < n) {\n j = i - 1;\n while (++j < n) {\n var source = subgroups[i + \"-\" + j], target = subgroups[j + \"-\" + i];\n if (source.value || target.value) {\n chords.push(source.value < target.value ? {\n source: target,\n target: source\n } : {\n source: source,\n target: target\n });\n }\n }\n }\n if (sortChords) resort();\n }\n function resort() {\n chords.sort(function(a, b) {\n return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);\n });\n }\n chord.matrix = function(x) {\n if (!arguments.length) return matrix;\n n = (matrix = x) && matrix.length;\n chords = groups = null;\n return chord;\n };\n chord.padding = function(x) {\n if (!arguments.length) return padding;\n padding = x;\n chords = groups = null;\n return chord;\n };\n chord.sortGroups = function(x) {\n if (!arguments.length) return sortGroups;\n sortGroups = x;\n chords = groups = null;\n return chord;\n };\n chord.sortSubgroups = function(x) {\n if (!arguments.length) return sortSubgroups;\n sortSubgroups = x;\n chords = null;\n return chord;\n };\n chord.sortChords = function(x) {\n if (!arguments.length) return sortChords;\n sortChords = x;\n if (chords) resort();\n return chord;\n };\n chord.chords = function() {\n if (!chords) relayout();\n return chords;\n };\n chord.groups = function() {\n if (!groups) relayout();\n return groups;\n };\n return chord;\n };\n d3.layout.force = function() {\n var force = {}, event = d3.dispatch(\"start\", \"tick\", \"end\"), timer, size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, chargeDistance2 = d3_layout_forceChargeDistance2, gravity = .1, theta2 = .64, nodes = [], links = [], distances, strengths, charges;\n function repulse(node) {\n return function(quad, x1, _, x2) {\n if (quad.point !== node) {\n var dx = quad.cx - node.x, dy = quad.cy - node.y, dw = x2 - x1, dn = dx * dx + dy * dy;\n if (dw * dw / theta2 < dn) {\n if (dn < chargeDistance2) {\n var k = quad.charge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n return true;\n }\n if (quad.point && dn && dn < chargeDistance2) {\n var k = quad.pointCharge / dn;\n node.px -= dx * k;\n node.py -= dy * k;\n }\n }\n return !quad.charge;\n };\n }\n force.tick = function() {\n if ((alpha *= .99) < .005) {\n timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n return true;\n }\n var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;\n for (i = 0; i < m; ++i) {\n o = links[i];\n s = o.source;\n t = o.target;\n x = t.x - s.x;\n y = t.y - s.y;\n if (l = x * x + y * y) {\n l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;\n x *= l;\n y *= l;\n t.x -= x * (k = s.weight + t.weight ? s.weight / (s.weight + t.weight) : .5);\n t.y -= y * k;\n s.x += x * (k = 1 - k);\n s.y += y * k;\n }\n }\n if (k = alpha * gravity) {\n x = size[0] / 2;\n y = size[1] / 2;\n i = -1;\n if (k) while (++i < n) {\n o = nodes[i];\n o.x += (x - o.x) * k;\n o.y += (y - o.y) * k;\n }\n }\n if (charge) {\n d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);\n i = -1;\n while (++i < n) {\n if (!(o = nodes[i]).fixed) {\n q.visit(repulse(o));\n }\n }\n }\n i = -1;\n while (++i < n) {\n o = nodes[i];\n if (o.fixed) {\n o.x = o.px;\n o.y = o.py;\n } else {\n o.x -= (o.px - (o.px = o.x)) * friction;\n o.y -= (o.py - (o.py = o.y)) * friction;\n }\n }\n event.tick({\n type: \"tick\",\n alpha: alpha\n });\n };\n force.nodes = function(x) {\n if (!arguments.length) return nodes;\n nodes = x;\n return force;\n };\n force.links = function(x) {\n if (!arguments.length) return links;\n links = x;\n return force;\n };\n force.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return force;\n };\n force.linkDistance = function(x) {\n if (!arguments.length) return linkDistance;\n linkDistance = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.distance = force.linkDistance;\n force.linkStrength = function(x) {\n if (!arguments.length) return linkStrength;\n linkStrength = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.friction = function(x) {\n if (!arguments.length) return friction;\n friction = +x;\n return force;\n };\n force.charge = function(x) {\n if (!arguments.length) return charge;\n charge = typeof x === \"function\" ? x : +x;\n return force;\n };\n force.chargeDistance = function(x) {\n if (!arguments.length) return Math.sqrt(chargeDistance2);\n chargeDistance2 = x * x;\n return force;\n };\n force.gravity = function(x) {\n if (!arguments.length) return gravity;\n gravity = +x;\n return force;\n };\n force.theta = function(x) {\n if (!arguments.length) return Math.sqrt(theta2);\n theta2 = x * x;\n return force;\n };\n force.alpha = function(x) {\n if (!arguments.length) return alpha;\n x = +x;\n if (alpha) {\n if (x > 0) {\n alpha = x;\n } else {\n timer.c = null, timer.t = NaN, timer = null;\n event.end({\n type: \"end\",\n alpha: alpha = 0\n });\n }\n } else if (x > 0) {\n event.start({\n type: \"start\",\n alpha: alpha = x\n });\n timer = d3_timer(force.tick);\n }\n return force;\n };\n force.start = function() {\n var i, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;\n for (i = 0; i < n; ++i) {\n (o = nodes[i]).index = i;\n o.weight = 0;\n }\n for (i = 0; i < m; ++i) {\n o = links[i];\n if (typeof o.source == \"number\") o.source = nodes[o.source];\n if (typeof o.target == \"number\") o.target = nodes[o.target];\n ++o.source.weight;\n ++o.target.weight;\n }\n for (i = 0; i < n; ++i) {\n o = nodes[i];\n if (isNaN(o.x)) o.x = position(\"x\", w);\n if (isNaN(o.y)) o.y = position(\"y\", h);\n if (isNaN(o.px)) o.px = o.x;\n if (isNaN(o.py)) o.py = o.y;\n }\n distances = [];\n if (typeof linkDistance === \"function\") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;\n strengths = [];\n if (typeof linkStrength === \"function\") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;\n charges = [];\n if (typeof charge === \"function\") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;\n function position(dimension, size) {\n if (!neighbors) {\n neighbors = new Array(n);\n for (j = 0; j < n; ++j) {\n neighbors[j] = [];\n }\n for (j = 0; j < m; ++j) {\n var o = links[j];\n neighbors[o.source.index].push(o.target);\n neighbors[o.target.index].push(o.source);\n }\n }\n var candidates = neighbors[i], j = -1, l = candidates.length, x;\n while (++j < l) if (!isNaN(x = candidates[j][dimension])) return x;\n return Math.random() * size;\n }\n return force.resume();\n };\n force.resume = function() {\n return force.alpha(.1);\n };\n force.stop = function() {\n return force.alpha(0);\n };\n force.drag = function() {\n if (!drag) drag = d3.behavior.drag().origin(d3_identity).on(\"dragstart.force\", d3_layout_forceDragstart).on(\"drag.force\", dragmove).on(\"dragend.force\", d3_layout_forceDragend);\n if (!arguments.length) return drag;\n this.on(\"mouseover.force\", d3_layout_forceMouseover).on(\"mouseout.force\", d3_layout_forceMouseout).call(drag);\n };\n function dragmove(d) {\n d.px = d3.event.x, d.py = d3.event.y;\n force.resume();\n }\n return d3.rebind(force, event, \"on\");\n };\n function d3_layout_forceDragstart(d) {\n d.fixed |= 2;\n }\n function d3_layout_forceDragend(d) {\n d.fixed &= ~6;\n }\n function d3_layout_forceMouseover(d) {\n d.fixed |= 4;\n d.px = d.x, d.py = d.y;\n }\n function d3_layout_forceMouseout(d) {\n d.fixed &= ~4;\n }\n function d3_layout_forceAccumulate(quad, alpha, charges) {\n var cx = 0, cy = 0;\n quad.charge = 0;\n if (!quad.leaf) {\n var nodes = quad.nodes, n = nodes.length, i = -1, c;\n while (++i < n) {\n c = nodes[i];\n if (c == null) continue;\n d3_layout_forceAccumulate(c, alpha, charges);\n quad.charge += c.charge;\n cx += c.charge * c.cx;\n cy += c.charge * c.cy;\n }\n }\n if (quad.point) {\n if (!quad.leaf) {\n quad.point.x += Math.random() - .5;\n quad.point.y += Math.random() - .5;\n }\n var k = alpha * charges[quad.point.index];\n quad.charge += quad.pointCharge = k;\n cx += k * quad.point.x;\n cy += k * quad.point.y;\n }\n quad.cx = cx / quad.charge;\n quad.cy = cy / quad.charge;\n }\n var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1, d3_layout_forceChargeDistance2 = Infinity;\n d3.layout.hierarchy = function() {\n var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;\n function hierarchy(root) {\n var stack = [ root ], nodes = [], node;\n root.depth = 0;\n while ((node = stack.pop()) != null) {\n nodes.push(node);\n if ((childs = children.call(hierarchy, node, node.depth)) && (n = childs.length)) {\n var n, childs, child;\n while (--n >= 0) {\n stack.push(child = childs[n]);\n child.parent = node;\n child.depth = node.depth + 1;\n }\n if (value) node.value = 0;\n node.children = childs;\n } else {\n if (value) node.value = +value.call(hierarchy, node, node.depth) || 0;\n delete node.children;\n }\n }\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var childs, parent;\n if (sort && (childs = node.children)) childs.sort(sort);\n if (value && (parent = node.parent)) parent.value += node.value;\n });\n return nodes;\n }\n hierarchy.sort = function(x) {\n if (!arguments.length) return sort;\n sort = x;\n return hierarchy;\n };\n hierarchy.children = function(x) {\n if (!arguments.length) return children;\n children = x;\n return hierarchy;\n };\n hierarchy.value = function(x) {\n if (!arguments.length) return value;\n value = x;\n return hierarchy;\n };\n hierarchy.revalue = function(root) {\n if (value) {\n d3_layout_hierarchyVisitBefore(root, function(node) {\n if (node.children) node.value = 0;\n });\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var parent;\n if (!node.children) node.value = +value.call(hierarchy, node, node.depth) || 0;\n if (parent = node.parent) parent.value += node.value;\n });\n }\n return root;\n };\n return hierarchy;\n };\n function d3_layout_hierarchyRebind(object, hierarchy) {\n d3.rebind(object, hierarchy, \"sort\", \"children\", \"value\");\n object.nodes = object;\n object.links = d3_layout_hierarchyLinks;\n return object;\n }\n function d3_layout_hierarchyVisitBefore(node, callback) {\n var nodes = [ node ];\n while ((node = nodes.pop()) != null) {\n callback(node);\n if ((children = node.children) && (n = children.length)) {\n var n, children;\n while (--n >= 0) nodes.push(children[n]);\n }\n }\n }\n function d3_layout_hierarchyVisitAfter(node, callback) {\n var nodes = [ node ], nodes2 = [];\n while ((node = nodes.pop()) != null) {\n nodes2.push(node);\n if ((children = node.children) && (n = children.length)) {\n var i = -1, n, children;\n while (++i < n) nodes.push(children[i]);\n }\n }\n while ((node = nodes2.pop()) != null) {\n callback(node);\n }\n }\n function d3_layout_hierarchyChildren(d) {\n return d.children;\n }\n function d3_layout_hierarchyValue(d) {\n return d.value;\n }\n function d3_layout_hierarchySort(a, b) {\n return b.value - a.value;\n }\n function d3_layout_hierarchyLinks(nodes) {\n return d3.merge(nodes.map(function(parent) {\n return (parent.children || []).map(function(child) {\n return {\n source: parent,\n target: child\n };\n });\n }));\n }\n d3.layout.partition = function() {\n var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];\n function position(node, x, dx, dy) {\n var children = node.children;\n node.x = x;\n node.y = node.depth * dy;\n node.dx = dx;\n node.dy = dy;\n if (children && (n = children.length)) {\n var i = -1, n, c, d;\n dx = node.value ? dx / node.value : 0;\n while (++i < n) {\n position(c = children[i], x, d = c.value * dx, dy);\n x += d;\n }\n }\n }\n function depth(node) {\n var children = node.children, d = 0;\n if (children && (n = children.length)) {\n var i = -1, n;\n while (++i < n) d = Math.max(d, depth(children[i]));\n }\n return 1 + d;\n }\n function partition(d, i) {\n var nodes = hierarchy.call(this, d, i);\n position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));\n return nodes;\n }\n partition.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return partition;\n };\n return d3_layout_hierarchyRebind(partition, hierarchy);\n };\n d3.layout.pie = function() {\n var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = τ, padAngle = 0;\n function pie(data) {\n var n = data.length, values = data.map(function(d, i) {\n return +value.call(pie, d, i);\n }), a = +(typeof startAngle === \"function\" ? startAngle.apply(this, arguments) : startAngle), da = (typeof endAngle === \"function\" ? endAngle.apply(this, arguments) : endAngle) - a, p = Math.min(Math.abs(da) / n, +(typeof padAngle === \"function\" ? padAngle.apply(this, arguments) : padAngle)), pa = p * (da < 0 ? -1 : 1), sum = d3.sum(values), k = sum ? (da - n * pa) / sum : 0, index = d3.range(n), arcs = [], v;\n if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {\n return values[j] - values[i];\n } : function(i, j) {\n return sort(data[i], data[j]);\n });\n index.forEach(function(i) {\n arcs[i] = {\n data: data[i],\n value: v = values[i],\n startAngle: a,\n endAngle: a += v * k + pa,\n padAngle: p\n };\n });\n return arcs;\n }\n pie.value = function(_) {\n if (!arguments.length) return value;\n value = _;\n return pie;\n };\n pie.sort = function(_) {\n if (!arguments.length) return sort;\n sort = _;\n return pie;\n };\n pie.startAngle = function(_) {\n if (!arguments.length) return startAngle;\n startAngle = _;\n return pie;\n };\n pie.endAngle = function(_) {\n if (!arguments.length) return endAngle;\n endAngle = _;\n return pie;\n };\n pie.padAngle = function(_) {\n if (!arguments.length) return padAngle;\n padAngle = _;\n return pie;\n };\n return pie;\n };\n var d3_layout_pieSortByValue = {};\n d3.layout.stack = function() {\n var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;\n function stack(data, index) {\n if (!(n = data.length)) return data;\n var series = data.map(function(d, i) {\n return values.call(stack, d, i);\n });\n var points = series.map(function(d) {\n return d.map(function(v, i) {\n return [ x.call(stack, v, i), y.call(stack, v, i) ];\n });\n });\n var orders = order.call(stack, points, index);\n series = d3.permute(series, orders);\n points = d3.permute(points, orders);\n var offsets = offset.call(stack, points, index);\n var m = series[0].length, n, i, j, o;\n for (j = 0; j < m; ++j) {\n out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);\n for (i = 1; i < n; ++i) {\n out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);\n }\n }\n return data;\n }\n stack.values = function(x) {\n if (!arguments.length) return values;\n values = x;\n return stack;\n };\n stack.order = function(x) {\n if (!arguments.length) return order;\n order = typeof x === \"function\" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;\n return stack;\n };\n stack.offset = function(x) {\n if (!arguments.length) return offset;\n offset = typeof x === \"function\" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;\n return stack;\n };\n stack.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n return stack;\n };\n stack.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n return stack;\n };\n stack.out = function(z) {\n if (!arguments.length) return out;\n out = z;\n return stack;\n };\n return stack;\n };\n function d3_layout_stackX(d) {\n return d.x;\n }\n function d3_layout_stackY(d) {\n return d.y;\n }\n function d3_layout_stackOut(d, y0, y) {\n d.y0 = y0;\n d.y = y;\n }\n var d3_layout_stackOrders = d3.map({\n \"inside-out\": function(data) {\n var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {\n return max[a] - max[b];\n }), top = 0, bottom = 0, tops = [], bottoms = [];\n for (i = 0; i < n; ++i) {\n j = index[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n return bottoms.reverse().concat(tops);\n },\n reverse: function(data) {\n return d3.range(data.length).reverse();\n },\n \"default\": d3_layout_stackOrderDefault\n });\n var d3_layout_stackOffsets = d3.map({\n silhouette: function(data) {\n var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o > max) max = o;\n sums.push(o);\n }\n for (j = 0; j < m; ++j) {\n y0[j] = (max - sums[j]) / 2;\n }\n return y0;\n },\n wiggle: function(data) {\n var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];\n y0[0] = o = o0 = 0;\n for (j = 1; j < m; ++j) {\n for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];\n for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {\n for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {\n s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;\n }\n s2 += s3 * data[i][j][1];\n }\n y0[j] = o -= s1 ? s2 / s1 * dx : 0;\n if (o < o0) o0 = o;\n }\n for (j = 0; j < m; ++j) y0[j] -= o0;\n return y0;\n },\n expand: function(data) {\n var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];\n for (j = 0; j < m; ++j) {\n for (i = 0, o = 0; i < n; i++) o += data[i][j][1];\n if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;\n }\n for (j = 0; j < m; ++j) y0[j] = 0;\n return y0;\n },\n zero: d3_layout_stackOffsetZero\n });\n function d3_layout_stackOrderDefault(data) {\n return d3.range(data.length);\n }\n function d3_layout_stackOffsetZero(data) {\n var j = -1, m = data[0].length, y0 = [];\n while (++j < m) y0[j] = 0;\n return y0;\n }\n function d3_layout_stackMaxIndex(array) {\n var i = 1, j = 0, v = array[0][1], k, n = array.length;\n for (;i < n; ++i) {\n if ((k = array[i][1]) > v) {\n j = i;\n v = k;\n }\n }\n return j;\n }\n function d3_layout_stackReduceSum(d) {\n return d.reduce(d3_layout_stackSum, 0);\n }\n function d3_layout_stackSum(p, d) {\n return p + d[1];\n }\n d3.layout.histogram = function() {\n var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;\n function histogram(data, i) {\n var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;\n while (++i < m) {\n bin = bins[i] = [];\n bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);\n bin.y = 0;\n }\n if (m > 0) {\n i = -1;\n while (++i < n) {\n x = values[i];\n if (x >= range[0] && x <= range[1]) {\n bin = bins[d3.bisect(thresholds, x, 1, m) - 1];\n bin.y += k;\n bin.push(data[i]);\n }\n }\n }\n return bins;\n }\n histogram.value = function(x) {\n if (!arguments.length) return valuer;\n valuer = x;\n return histogram;\n };\n histogram.range = function(x) {\n if (!arguments.length) return ranger;\n ranger = d3_functor(x);\n return histogram;\n };\n histogram.bins = function(x) {\n if (!arguments.length) return binner;\n binner = typeof x === \"number\" ? function(range) {\n return d3_layout_histogramBinFixed(range, x);\n } : d3_functor(x);\n return histogram;\n };\n histogram.frequency = function(x) {\n if (!arguments.length) return frequency;\n frequency = !!x;\n return histogram;\n };\n return histogram;\n };\n function d3_layout_histogramBinSturges(range, values) {\n return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));\n }\n function d3_layout_histogramBinFixed(range, n) {\n var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];\n while (++x <= n) f[x] = m * x + b;\n return f;\n }\n function d3_layout_histogramRange(values) {\n return [ d3.min(values), d3.max(values) ];\n }\n d3.layout.pack = function() {\n var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ], radius;\n function pack(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], w = size[0], h = size[1], r = radius == null ? Math.sqrt : typeof radius === \"function\" ? radius : function() {\n return radius;\n };\n root.x = root.y = 0;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r = +r(d.value);\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n if (padding) {\n var dr = padding * (radius ? 1 : Math.max(2 * root.r / w, 2 * root.r / h)) / 2;\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r += dr;\n });\n d3_layout_hierarchyVisitAfter(root, d3_layout_packSiblings);\n d3_layout_hierarchyVisitAfter(root, function(d) {\n d.r -= dr;\n });\n }\n d3_layout_packTransform(root, w / 2, h / 2, radius ? 1 : 1 / Math.max(2 * root.r / w, 2 * root.r / h));\n return nodes;\n }\n pack.size = function(_) {\n if (!arguments.length) return size;\n size = _;\n return pack;\n };\n pack.radius = function(_) {\n if (!arguments.length) return radius;\n radius = _ == null || typeof _ === \"function\" ? _ : +_;\n return pack;\n };\n pack.padding = function(_) {\n if (!arguments.length) return padding;\n padding = +_;\n return pack;\n };\n return d3_layout_hierarchyRebind(pack, hierarchy);\n };\n function d3_layout_packSort(a, b) {\n return a.value - b.value;\n }\n function d3_layout_packInsert(a, b) {\n var c = a._pack_next;\n a._pack_next = b;\n b._pack_prev = a;\n b._pack_next = c;\n c._pack_prev = b;\n }\n function d3_layout_packSplice(a, b) {\n a._pack_next = b;\n b._pack_prev = a;\n }\n function d3_layout_packIntersects(a, b) {\n var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;\n return .999 * dr * dr > dx * dx + dy * dy;\n }\n function d3_layout_packSiblings(node) {\n if (!(nodes = node.children) || !(n = nodes.length)) return;\n var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;\n function bound(node) {\n xMin = Math.min(node.x - node.r, xMin);\n xMax = Math.max(node.x + node.r, xMax);\n yMin = Math.min(node.y - node.r, yMin);\n yMax = Math.max(node.y + node.r, yMax);\n }\n nodes.forEach(d3_layout_packLink);\n a = nodes[0];\n a.x = -a.r;\n a.y = 0;\n bound(a);\n if (n > 1) {\n b = nodes[1];\n b.x = b.r;\n b.y = 0;\n bound(b);\n if (n > 2) {\n c = nodes[2];\n d3_layout_packPlace(a, b, c);\n bound(c);\n d3_layout_packInsert(a, c);\n a._pack_prev = c;\n d3_layout_packInsert(c, b);\n b = a._pack_next;\n for (i = 3; i < n; i++) {\n d3_layout_packPlace(a, b, c = nodes[i]);\n var isect = 0, s1 = 1, s2 = 1;\n for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {\n if (d3_layout_packIntersects(j, c)) {\n isect = 1;\n break;\n }\n }\n if (isect == 1) {\n for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {\n if (d3_layout_packIntersects(k, c)) {\n break;\n }\n }\n }\n if (isect) {\n if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);\n i--;\n } else {\n d3_layout_packInsert(a, c);\n b = c;\n bound(c);\n }\n }\n }\n }\n var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;\n for (i = 0; i < n; i++) {\n c = nodes[i];\n c.x -= cx;\n c.y -= cy;\n cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));\n }\n node.r = cr;\n nodes.forEach(d3_layout_packUnlink);\n }\n function d3_layout_packLink(node) {\n node._pack_next = node._pack_prev = node;\n }\n function d3_layout_packUnlink(node) {\n delete node._pack_next;\n delete node._pack_prev;\n }\n function d3_layout_packTransform(node, x, y, k) {\n var children = node.children;\n node.x = x += k * node.x;\n node.y = y += k * node.y;\n node.r *= k;\n if (children) {\n var i = -1, n = children.length;\n while (++i < n) d3_layout_packTransform(children[i], x, y, k);\n }\n }\n function d3_layout_packPlace(a, b, c) {\n var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;\n if (db && (dx || dy)) {\n var da = b.r + c.r, dc = dx * dx + dy * dy;\n da *= da;\n db *= db;\n var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);\n c.x = a.x + x * dx + y * dy;\n c.y = a.y + x * dy - y * dx;\n } else {\n c.x = a.x + db;\n c.y = a.y;\n }\n }\n d3.layout.tree = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = null;\n function tree(d, i) {\n var nodes = hierarchy.call(this, d, i), root0 = nodes[0], root1 = wrapTree(root0);\n d3_layout_hierarchyVisitAfter(root1, firstWalk), root1.parent.m = -root1.z;\n d3_layout_hierarchyVisitBefore(root1, secondWalk);\n if (nodeSize) d3_layout_hierarchyVisitBefore(root0, sizeNode); else {\n var left = root0, right = root0, bottom = root0;\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var tx = separation(left, right) / 2 - left.x, kx = size[0] / (right.x + separation(right, left) / 2 + tx), ky = size[1] / (bottom.depth || 1);\n d3_layout_hierarchyVisitBefore(root0, function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n return nodes;\n }\n function wrapTree(root0) {\n var root1 = {\n A: null,\n children: [ root0 ]\n }, queue = [ root1 ], node1;\n while ((node1 = queue.pop()) != null) {\n for (var children = node1.children, child, i = 0, n = children.length; i < n; ++i) {\n queue.push((children[i] = child = {\n _: children[i],\n parent: node1,\n children: (child = children[i].children) && child.slice() || [],\n A: null,\n a: null,\n z: 0,\n m: 0,\n c: 0,\n s: 0,\n t: null,\n i: i\n }).a = child);\n }\n }\n return root1.children[0];\n }\n function firstWalk(v) {\n var children = v.children, siblings = v.parent.children, w = v.i ? siblings[v.i - 1] : null;\n if (children.length) {\n d3_layout_treeShift(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v, vop = v, vim = w, vom = vip.parent.children[0], sip = vip.m, sop = vop.m, sim = vim.m, som = vom.m, shift;\n while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {\n vom = d3_layout_treeLeft(vom);\n vop = d3_layout_treeRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n d3_layout_treeMove(d3_layout_treeAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !d3_layout_treeRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !d3_layout_treeLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n function sizeNode(node) {\n node.x *= size[0];\n node.y = node.depth * size[1];\n }\n tree.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return tree;\n };\n tree.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null ? sizeNode : null;\n return tree;\n };\n tree.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) == null ? null : sizeNode;\n return tree;\n };\n return d3_layout_hierarchyRebind(tree, hierarchy);\n };\n function d3_layout_treeSeparation(a, b) {\n return a.parent == b.parent ? 1 : 2;\n }\n function d3_layout_treeLeft(v) {\n var children = v.children;\n return children.length ? children[0] : v.t;\n }\n function d3_layout_treeRight(v) {\n var children = v.children, n;\n return (n = children.length) ? children[n - 1] : v.t;\n }\n function d3_layout_treeMove(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n }\n function d3_layout_treeShift(v) {\n var shift = 0, change = 0, children = v.children, i = children.length, w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n }\n function d3_layout_treeAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n }\n d3.layout.cluster = function() {\n var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ], nodeSize = false;\n function cluster(d, i) {\n var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;\n d3_layout_hierarchyVisitAfter(root, function(node) {\n var children = node.children;\n if (children && children.length) {\n node.x = d3_layout_clusterX(children);\n node.y = d3_layout_clusterY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;\n d3_layout_hierarchyVisitAfter(root, nodeSize ? function(node) {\n node.x = (node.x - root.x) * size[0];\n node.y = (root.y - node.y) * size[1];\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * size[0];\n node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];\n });\n return nodes;\n }\n cluster.separation = function(x) {\n if (!arguments.length) return separation;\n separation = x;\n return cluster;\n };\n cluster.size = function(x) {\n if (!arguments.length) return nodeSize ? null : size;\n nodeSize = (size = x) == null;\n return cluster;\n };\n cluster.nodeSize = function(x) {\n if (!arguments.length) return nodeSize ? size : null;\n nodeSize = (size = x) != null;\n return cluster;\n };\n return d3_layout_hierarchyRebind(cluster, hierarchy);\n };\n function d3_layout_clusterY(children) {\n return 1 + d3.max(children, function(child) {\n return child.y;\n });\n }\n function d3_layout_clusterX(children) {\n return children.reduce(function(x, child) {\n return x + child.x;\n }, 0) / children.length;\n }\n function d3_layout_clusterLeft(node) {\n var children = node.children;\n return children && children.length ? d3_layout_clusterLeft(children[0]) : node;\n }\n function d3_layout_clusterRight(node) {\n var children = node.children, n;\n return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;\n }\n d3.layout.treemap = function() {\n var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = \"squarify\", ratio = .5 * (1 + Math.sqrt(5));\n function scale(children, k) {\n var i = -1, n = children.length, child, area;\n while (++i < n) {\n area = (child = children[i]).value * (k < 0 ? 0 : k);\n child.area = isNaN(area) || area <= 0 ? 0 : area;\n }\n }\n function squarify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === \"slice\" ? rect.dx : mode === \"dice\" ? rect.dy : mode === \"slice-dice\" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while ((n = remaining.length) > 0) {\n row.push(child = remaining[n - 1]);\n row.area += child.area;\n if (mode !== \"squarify\" || (score = worst(row, u)) <= best) {\n remaining.pop();\n best = score;\n } else {\n row.area -= row.pop().area;\n position(row, u, rect, false);\n u = Math.min(rect.dx, rect.dy);\n row.length = row.area = 0;\n best = Infinity;\n }\n }\n if (row.length) {\n position(row, u, rect, true);\n row.length = row.area = 0;\n }\n children.forEach(squarify);\n }\n }\n function stickify(node) {\n var children = node.children;\n if (children && children.length) {\n var rect = pad(node), remaining = children.slice(), child, row = [];\n scale(remaining, rect.dx * rect.dy / node.value);\n row.area = 0;\n while (child = remaining.pop()) {\n row.push(child);\n row.area += child.area;\n if (child.z != null) {\n position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);\n row.length = row.area = 0;\n }\n }\n children.forEach(stickify);\n }\n }\n function worst(row, u) {\n var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;\n while (++i < n) {\n if (!(r = row[i].area)) continue;\n if (r < rmin) rmin = r;\n if (r > rmax) rmax = r;\n }\n s *= s;\n u *= u;\n return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;\n }\n function position(row, u, rect, flush) {\n var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;\n if (u == rect.dx) {\n if (flush || v > rect.dy) v = rect.dy;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dy = v;\n x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);\n }\n o.z = true;\n o.dx += rect.x + rect.dx - x;\n rect.y += v;\n rect.dy -= v;\n } else {\n if (flush || v > rect.dx) v = rect.dx;\n while (++i < n) {\n o = row[i];\n o.x = x;\n o.y = y;\n o.dx = v;\n y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);\n }\n o.z = false;\n o.dy += rect.y + rect.dy - y;\n rect.x += v;\n rect.dx -= v;\n }\n }\n function treemap(d) {\n var nodes = stickies || hierarchy(d), root = nodes[0];\n root.x = root.y = 0;\n if (root.value) root.dx = size[0], root.dy = size[1]; else root.dx = root.dy = 0;\n if (stickies) hierarchy.revalue(root);\n scale([ root ], root.dx * root.dy / root.value);\n (stickies ? stickify : squarify)(root);\n if (sticky) stickies = nodes;\n return nodes;\n }\n treemap.size = function(x) {\n if (!arguments.length) return size;\n size = x;\n return treemap;\n };\n treemap.padding = function(x) {\n if (!arguments.length) return padding;\n function padFunction(node) {\n var p = x.call(treemap, node, node.depth);\n return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === \"number\" ? [ p, p, p, p ] : p);\n }\n function padConstant(node) {\n return d3_layout_treemapPad(node, x);\n }\n var type;\n pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === \"function\" ? padFunction : type === \"number\" ? (x = [ x, x, x, x ], \n padConstant) : padConstant;\n return treemap;\n };\n treemap.round = function(x) {\n if (!arguments.length) return round != Number;\n round = x ? Math.round : Number;\n return treemap;\n };\n treemap.sticky = function(x) {\n if (!arguments.length) return sticky;\n sticky = x;\n stickies = null;\n return treemap;\n };\n treemap.ratio = function(x) {\n if (!arguments.length) return ratio;\n ratio = x;\n return treemap;\n };\n treemap.mode = function(x) {\n if (!arguments.length) return mode;\n mode = x + \"\";\n return treemap;\n };\n return d3_layout_hierarchyRebind(treemap, hierarchy);\n };\n function d3_layout_treemapPadNull(node) {\n return {\n x: node.x,\n y: node.y,\n dx: node.dx,\n dy: node.dy\n };\n }\n function d3_layout_treemapPad(node, padding) {\n var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];\n if (dx < 0) {\n x += dx / 2;\n dx = 0;\n }\n if (dy < 0) {\n y += dy / 2;\n dy = 0;\n }\n return {\n x: x,\n y: y,\n dx: dx,\n dy: dy\n };\n }\n d3.random = {\n normal: function(µ, σ) {\n var n = arguments.length;\n if (n < 2) σ = 1;\n if (n < 1) µ = 0;\n return function() {\n var x, y, r;\n do {\n x = Math.random() * 2 - 1;\n y = Math.random() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);\n };\n },\n logNormal: function() {\n var random = d3.random.normal.apply(d3, arguments);\n return function() {\n return Math.exp(random());\n };\n },\n bates: function(m) {\n var random = d3.random.irwinHall(m);\n return function() {\n return random() / m;\n };\n },\n irwinHall: function(m) {\n return function() {\n for (var s = 0, j = 0; j < m; j++) s += Math.random();\n return s;\n };\n }\n };\n d3.scale = {};\n function d3_scaleExtent(domain) {\n var start = domain[0], stop = domain[domain.length - 1];\n return start < stop ? [ start, stop ] : [ stop, start ];\n }\n function d3_scaleRange(scale) {\n return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());\n }\n function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {\n var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);\n return function(x) {\n return i(u(x));\n };\n }\n function d3_scale_nice(domain, nice) {\n var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;\n if (x1 < x0) {\n dx = i0, i0 = i1, i1 = dx;\n dx = x0, x0 = x1, x1 = dx;\n }\n domain[i0] = nice.floor(x0);\n domain[i1] = nice.ceil(x1);\n return domain;\n }\n function d3_scale_niceStep(step) {\n return step ? {\n floor: function(x) {\n return Math.floor(x / step) * step;\n },\n ceil: function(x) {\n return Math.ceil(x / step) * step;\n }\n } : d3_scale_niceIdentity;\n }\n var d3_scale_niceIdentity = {\n floor: d3_identity,\n ceil: d3_identity\n };\n function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {\n var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;\n if (domain[k] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n while (++j <= k) {\n u.push(uninterpolate(domain[j - 1], domain[j]));\n i.push(interpolate(range[j - 1], range[j]));\n }\n return function(x) {\n var j = d3.bisect(domain, x, 1, k) - 1;\n return i[j](u[j](x));\n };\n }\n d3.scale.linear = function() {\n return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3_interpolate, false);\n };\n function d3_scale_linear(domain, range, interpolate, clamp) {\n var output, input;\n function rescale() {\n var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;\n output = linear(domain, range, uninterpolate, interpolate);\n input = linear(range, domain, uninterpolate, d3_interpolate);\n return scale;\n }\n function scale(x) {\n return output(x);\n }\n scale.invert = function(y) {\n return input(y);\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(Number);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.rangeRound = function(x) {\n return scale.range(x).interpolate(d3_interpolateRound);\n };\n scale.clamp = function(x) {\n if (!arguments.length) return clamp;\n clamp = x;\n return rescale();\n };\n scale.interpolate = function(x) {\n if (!arguments.length) return interpolate;\n interpolate = x;\n return rescale();\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n d3_scale_linearNice(domain, m);\n return rescale();\n };\n scale.copy = function() {\n return d3_scale_linear(domain, range, interpolate, clamp);\n };\n return rescale();\n }\n function d3_scale_linearRebind(scale, linear) {\n return d3.rebind(scale, linear, \"range\", \"rangeRound\", \"interpolate\", \"clamp\");\n }\n function d3_scale_linearNice(domain, m) {\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n d3_scale_nice(domain, d3_scale_niceStep(d3_scale_linearTickRange(domain, m)[2]));\n return domain;\n }\n function d3_scale_linearTickRange(domain, m) {\n if (m == null) m = 10;\n var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;\n if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;\n extent[0] = Math.ceil(extent[0] / step) * step;\n extent[1] = Math.floor(extent[1] / step) * step + step * .5;\n extent[2] = step;\n return extent;\n }\n function d3_scale_linearTicks(domain, m) {\n return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));\n }\n function d3_scale_linearTickFormat(domain, m, format) {\n var range = d3_scale_linearTickRange(domain, m);\n if (format) {\n var match = d3_format_re.exec(format);\n match.shift();\n if (match[8] === \"s\") {\n var prefix = d3.formatPrefix(Math.max(abs(range[0]), abs(range[1])));\n if (!match[7]) match[7] = \".\" + d3_scale_linearPrecision(prefix.scale(range[2]));\n match[8] = \"f\";\n format = d3.format(match.join(\"\"));\n return function(d) {\n return format(prefix.scale(d)) + prefix.symbol;\n };\n }\n if (!match[7]) match[7] = \".\" + d3_scale_linearFormatPrecision(match[8], range);\n format = match.join(\"\");\n } else {\n format = \",.\" + d3_scale_linearPrecision(range[2]) + \"f\";\n }\n return d3.format(format);\n }\n var d3_scale_linearFormatSignificant = {\n s: 1,\n g: 1,\n p: 1,\n r: 1,\n e: 1\n };\n function d3_scale_linearPrecision(value) {\n return -Math.floor(Math.log(value) / Math.LN10 + .01);\n }\n function d3_scale_linearFormatPrecision(type, range) {\n var p = d3_scale_linearPrecision(range[2]);\n return type in d3_scale_linearFormatSignificant ? Math.abs(p - d3_scale_linearPrecision(Math.max(abs(range[0]), abs(range[1])))) + +(type !== \"e\") : p - (type === \"%\") * 2;\n }\n d3.scale.log = function() {\n return d3_scale_log(d3.scale.linear().domain([ 0, 1 ]), 10, true, [ 1, 10 ]);\n };\n function d3_scale_log(linear, base, positive, domain) {\n function log(x) {\n return (positive ? Math.log(x < 0 ? 0 : x) : -Math.log(x > 0 ? 0 : -x)) / Math.log(base);\n }\n function pow(x) {\n return positive ? Math.pow(base, x) : -Math.pow(base, -x);\n }\n function scale(x) {\n return linear(log(x));\n }\n scale.invert = function(x) {\n return pow(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n positive = x[0] >= 0;\n linear.domain((domain = x.map(Number)).map(log));\n return scale;\n };\n scale.base = function(_) {\n if (!arguments.length) return base;\n base = +_;\n linear.domain(domain.map(log));\n return scale;\n };\n scale.nice = function() {\n var niced = d3_scale_nice(domain.map(log), positive ? Math : d3_scale_logNiceNegative);\n linear.domain(niced);\n domain = niced.map(pow);\n return scale;\n };\n scale.ticks = function() {\n var extent = d3_scaleExtent(domain), ticks = [], u = extent[0], v = extent[1], i = Math.floor(log(u)), j = Math.ceil(log(v)), n = base % 1 ? 2 : base;\n if (isFinite(j - i)) {\n if (positive) {\n for (;i < j; i++) for (var k = 1; k < n; k++) ticks.push(pow(i) * k);\n ticks.push(pow(i));\n } else {\n ticks.push(pow(i));\n for (;i++ < j; ) for (var k = n - 1; k > 0; k--) ticks.push(pow(i) * k);\n }\n for (i = 0; ticks[i] < u; i++) {}\n for (j = ticks.length; ticks[j - 1] > v; j--) {}\n ticks = ticks.slice(i, j);\n }\n return ticks;\n };\n scale.tickFormat = function(n, format) {\n if (!arguments.length) return d3_scale_logFormat;\n if (arguments.length < 2) format = d3_scale_logFormat; else if (typeof format !== \"function\") format = d3.format(format);\n var k = Math.max(1, base * n / scale.ticks().length);\n return function(d) {\n var i = d / pow(Math.round(log(d)));\n if (i * base < base - .5) i *= base;\n return i <= k ? format(d) : \"\";\n };\n };\n scale.copy = function() {\n return d3_scale_log(linear.copy(), base, positive, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n var d3_scale_logFormat = d3.format(\".0e\"), d3_scale_logNiceNegative = {\n floor: function(x) {\n return -Math.ceil(-x);\n },\n ceil: function(x) {\n return -Math.floor(-x);\n }\n };\n d3.scale.pow = function() {\n return d3_scale_pow(d3.scale.linear(), 1, [ 0, 1 ]);\n };\n function d3_scale_pow(linear, exponent, domain) {\n var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);\n function scale(x) {\n return linear(powp(x));\n }\n scale.invert = function(x) {\n return powb(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n linear.domain((domain = x.map(Number)).map(powp));\n return scale;\n };\n scale.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n scale.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n scale.nice = function(m) {\n return scale.domain(d3_scale_linearNice(domain, m));\n };\n scale.exponent = function(x) {\n if (!arguments.length) return exponent;\n powp = d3_scale_powPow(exponent = x);\n powb = d3_scale_powPow(1 / exponent);\n linear.domain(domain.map(powp));\n return scale;\n };\n scale.copy = function() {\n return d3_scale_pow(linear.copy(), exponent, domain);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_scale_powPow(e) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);\n };\n }\n d3.scale.sqrt = function() {\n return d3.scale.pow().exponent(.5);\n };\n d3.scale.ordinal = function() {\n return d3_scale_ordinal([], {\n t: \"range\",\n a: [ [] ]\n });\n };\n function d3_scale_ordinal(domain, ranger) {\n var index, range, rangeBand;\n function scale(x) {\n return range[((index.get(x) || (ranger.t === \"range\" ? index.set(x, domain.push(x)) : NaN)) - 1) % range.length];\n }\n function steps(start, step) {\n return d3.range(domain.length).map(function(i) {\n return start + step * i;\n });\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = [];\n index = new d3_Map();\n var i = -1, n = x.length, xi;\n while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));\n return scale[ranger.t].apply(scale, ranger.a);\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n rangeBand = 0;\n ranger = {\n t: \"range\",\n a: arguments\n };\n return scale;\n };\n scale.rangePoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = (start + stop) / 2, \n 0) : (stop - start) / (domain.length - 1 + padding);\n range = steps(start + step * padding / 2, step);\n rangeBand = 0;\n ranger = {\n t: \"rangePoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundPoints = function(x, padding) {\n if (arguments.length < 2) padding = 0;\n var start = x[0], stop = x[1], step = domain.length < 2 ? (start = stop = Math.round((start + stop) / 2), \n 0) : (stop - start) / (domain.length - 1 + padding) | 0;\n range = steps(start + Math.round(step * padding / 2 + (stop - start - (domain.length - 1 + padding) * step) / 2), step);\n rangeBand = 0;\n ranger = {\n t: \"rangeRoundPoints\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);\n range = steps(start + step * outerPadding, step);\n if (reverse) range.reverse();\n rangeBand = step * (1 - padding);\n ranger = {\n t: \"rangeBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeRoundBands = function(x, padding, outerPadding) {\n if (arguments.length < 2) padding = 0;\n if (arguments.length < 3) outerPadding = padding;\n var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding));\n range = steps(start + Math.round((stop - start - (domain.length - padding) * step) / 2), step);\n if (reverse) range.reverse();\n rangeBand = Math.round(step * (1 - padding));\n ranger = {\n t: \"rangeRoundBands\",\n a: arguments\n };\n return scale;\n };\n scale.rangeBand = function() {\n return rangeBand;\n };\n scale.rangeExtent = function() {\n return d3_scaleExtent(ranger.a[0]);\n };\n scale.copy = function() {\n return d3_scale_ordinal(domain, ranger);\n };\n return scale.domain(domain);\n }\n d3.scale.category10 = function() {\n return d3.scale.ordinal().range(d3_category10);\n };\n d3.scale.category20 = function() {\n return d3.scale.ordinal().range(d3_category20);\n };\n d3.scale.category20b = function() {\n return d3.scale.ordinal().range(d3_category20b);\n };\n d3.scale.category20c = function() {\n return d3.scale.ordinal().range(d3_category20c);\n };\n var d3_category10 = [ 2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175 ].map(d3_rgbString);\n var d3_category20 = [ 2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725 ].map(d3_rgbString);\n var d3_category20b = [ 3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654 ].map(d3_rgbString);\n var d3_category20c = [ 3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081 ].map(d3_rgbString);\n d3.scale.quantile = function() {\n return d3_scale_quantile([], []);\n };\n function d3_scale_quantile(domain, range) {\n var thresholds;\n function rescale() {\n var k = 0, q = range.length;\n thresholds = [];\n while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);\n return scale;\n }\n function scale(x) {\n if (!isNaN(x = +x)) return range[d3.bisect(thresholds, x)];\n }\n scale.domain = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(d3_number).filter(d3_numeric).sort(d3_ascending);\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.quantiles = function() {\n return thresholds;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return y < 0 ? [ NaN, NaN ] : [ y > 0 ? thresholds[y - 1] : domain[0], y < thresholds.length ? thresholds[y] : domain[domain.length - 1] ];\n };\n scale.copy = function() {\n return d3_scale_quantile(domain, range);\n };\n return rescale();\n }\n d3.scale.quantize = function() {\n return d3_scale_quantize(0, 1, [ 0, 1 ]);\n };\n function d3_scale_quantize(x0, x1, range) {\n var kx, i;\n function scale(x) {\n return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];\n }\n function rescale() {\n kx = range.length / (x1 - x0);\n i = range.length - 1;\n return scale;\n }\n scale.domain = function(x) {\n if (!arguments.length) return [ x0, x1 ];\n x0 = +x[0];\n x1 = +x[x.length - 1];\n return rescale();\n };\n scale.range = function(x) {\n if (!arguments.length) return range;\n range = x;\n return rescale();\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n y = y < 0 ? NaN : y / kx + x0;\n return [ y, y + 1 / kx ];\n };\n scale.copy = function() {\n return d3_scale_quantize(x0, x1, range);\n };\n return rescale();\n }\n d3.scale.threshold = function() {\n return d3_scale_threshold([ .5 ], [ 0, 1 ]);\n };\n function d3_scale_threshold(domain, range) {\n function scale(x) {\n if (x <= x) return range[d3.bisect(domain, x)];\n }\n scale.domain = function(_) {\n if (!arguments.length) return domain;\n domain = _;\n return scale;\n };\n scale.range = function(_) {\n if (!arguments.length) return range;\n range = _;\n return scale;\n };\n scale.invertExtent = function(y) {\n y = range.indexOf(y);\n return [ domain[y - 1], domain[y] ];\n };\n scale.copy = function() {\n return d3_scale_threshold(domain, range);\n };\n return scale;\n }\n d3.scale.identity = function() {\n return d3_scale_identity([ 0, 1 ]);\n };\n function d3_scale_identity(domain) {\n function identity(x) {\n return +x;\n }\n identity.invert = identity;\n identity.domain = identity.range = function(x) {\n if (!arguments.length) return domain;\n domain = x.map(identity);\n return identity;\n };\n identity.ticks = function(m) {\n return d3_scale_linearTicks(domain, m);\n };\n identity.tickFormat = function(m, format) {\n return d3_scale_linearTickFormat(domain, m, format);\n };\n identity.copy = function() {\n return d3_scale_identity(domain);\n };\n return identity;\n }\n d3.svg = {};\n function d3_zero() {\n return 0;\n }\n d3.svg.arc = function() {\n var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, cornerRadius = d3_zero, padRadius = d3_svg_arcAuto, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle, padAngle = d3_svg_arcPadAngle;\n function arc() {\n var r0 = Math.max(0, +innerRadius.apply(this, arguments)), r1 = Math.max(0, +outerRadius.apply(this, arguments)), a0 = startAngle.apply(this, arguments) - halfπ, a1 = endAngle.apply(this, arguments) - halfπ, da = Math.abs(a1 - a0), cw = a0 > a1 ? 0 : 1;\n if (r1 < r0) rc = r1, r1 = r0, r0 = rc;\n if (da >= τε) return circleSegment(r1, cw) + (r0 ? circleSegment(r0, 1 - cw) : \"\") + \"Z\";\n var rc, cr, rp, ap, p0 = 0, p1 = 0, x0, y0, x1, y1, x2, y2, x3, y3, path = [];\n if (ap = (+padAngle.apply(this, arguments) || 0) / 2) {\n rp = padRadius === d3_svg_arcAuto ? Math.sqrt(r0 * r0 + r1 * r1) : +padRadius.apply(this, arguments);\n if (!cw) p1 *= -1;\n if (r1) p1 = d3_asin(rp / r1 * Math.sin(ap));\n if (r0) p0 = d3_asin(rp / r0 * Math.sin(ap));\n }\n if (r1) {\n x0 = r1 * Math.cos(a0 + p1);\n y0 = r1 * Math.sin(a0 + p1);\n x1 = r1 * Math.cos(a1 - p1);\n y1 = r1 * Math.sin(a1 - p1);\n var l1 = Math.abs(a1 - a0 - 2 * p1) <= π ? 0 : 1;\n if (p1 && d3_svg_arcSweep(x0, y0, x1, y1) === cw ^ l1) {\n var h1 = (a0 + a1) / 2;\n x0 = r1 * Math.cos(h1);\n y0 = r1 * Math.sin(h1);\n x1 = y1 = null;\n }\n } else {\n x0 = y0 = 0;\n }\n if (r0) {\n x2 = r0 * Math.cos(a1 - p0);\n y2 = r0 * Math.sin(a1 - p0);\n x3 = r0 * Math.cos(a0 + p0);\n y3 = r0 * Math.sin(a0 + p0);\n var l0 = Math.abs(a0 - a1 + 2 * p0) <= π ? 0 : 1;\n if (p0 && d3_svg_arcSweep(x2, y2, x3, y3) === 1 - cw ^ l0) {\n var h0 = (a0 + a1) / 2;\n x2 = r0 * Math.cos(h0);\n y2 = r0 * Math.sin(h0);\n x3 = y3 = null;\n }\n } else {\n x2 = y2 = 0;\n }\n if (da > ε && (rc = Math.min(Math.abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments))) > .001) {\n cr = r0 < r1 ^ cw ? 0 : 1;\n var rc1 = rc, rc0 = rc;\n if (da < π) {\n var oc = x3 == null ? [ x2, y2 ] : x1 == null ? [ x0, y0 ] : d3_geom_polygonIntersect([ x0, y0 ], [ x3, y3 ], [ x1, y1 ], [ x2, y2 ]), ax = x0 - oc[0], ay = y0 - oc[1], bx = x1 - oc[0], by = y1 - oc[1], kc = 1 / Math.sin(Math.acos((ax * bx + ay * by) / (Math.sqrt(ax * ax + ay * ay) * Math.sqrt(bx * bx + by * by))) / 2), lc = Math.sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = Math.min(rc, (r0 - lc) / (kc - 1));\n rc1 = Math.min(rc, (r1 - lc) / (kc + 1));\n }\n if (x1 != null) {\n var t30 = d3_svg_arcCornerTangents(x3 == null ? [ x2, y2 ] : [ x3, y3 ], [ x0, y0 ], r1, rc1, cw), t12 = d3_svg_arcCornerTangents([ x1, y1 ], [ x2, y2 ], r1, rc1, cw);\n if (rc === rc1) {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t30[1], \"A\", r1, \",\", r1, \" 0 \", 1 - cw ^ d3_svg_arcSweep(t30[1][0], t30[1][1], t12[1][0], t12[1][1]), \",\", cw, \" \", t12[1], \"A\", rc1, \",\", rc1, \" 0 0,\", cr, \" \", t12[0]);\n } else {\n path.push(\"M\", t30[0], \"A\", rc1, \",\", rc1, \" 0 1,\", cr, \" \", t12[0]);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n }\n if (x3 != null) {\n var t03 = d3_svg_arcCornerTangents([ x0, y0 ], [ x3, y3 ], r0, -rc0, cw), t21 = d3_svg_arcCornerTangents([ x2, y2 ], x1 == null ? [ x0, y0 ] : [ x1, y1 ], r0, -rc0, cw);\n if (rc === rc0) {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t21[1], \"A\", r0, \",\", r0, \" 0 \", cw ^ d3_svg_arcSweep(t21[1][0], t21[1][1], t03[1][0], t03[1][1]), \",\", 1 - cw, \" \", t03[1], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n } else {\n path.push(\"L\", t21[0], \"A\", rc0, \",\", rc0, \" 0 0,\", cr, \" \", t03[0]);\n }\n } else {\n path.push(\"L\", x2, \",\", y2);\n }\n } else {\n path.push(\"M\", x0, \",\", y0);\n if (x1 != null) path.push(\"A\", r1, \",\", r1, \" 0 \", l1, \",\", cw, \" \", x1, \",\", y1);\n path.push(\"L\", x2, \",\", y2);\n if (x3 != null) path.push(\"A\", r0, \",\", r0, \" 0 \", l0, \",\", 1 - cw, \" \", x3, \",\", y3);\n }\n path.push(\"Z\");\n return path.join(\"\");\n }\n function circleSegment(r1, cw) {\n return \"M0,\" + r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + -r1 + \"A\" + r1 + \",\" + r1 + \" 0 1,\" + cw + \" 0,\" + r1;\n }\n arc.innerRadius = function(v) {\n if (!arguments.length) return innerRadius;\n innerRadius = d3_functor(v);\n return arc;\n };\n arc.outerRadius = function(v) {\n if (!arguments.length) return outerRadius;\n outerRadius = d3_functor(v);\n return arc;\n };\n arc.cornerRadius = function(v) {\n if (!arguments.length) return cornerRadius;\n cornerRadius = d3_functor(v);\n return arc;\n };\n arc.padRadius = function(v) {\n if (!arguments.length) return padRadius;\n padRadius = v == d3_svg_arcAuto ? d3_svg_arcAuto : d3_functor(v);\n return arc;\n };\n arc.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return arc;\n };\n arc.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return arc;\n };\n arc.padAngle = function(v) {\n if (!arguments.length) return padAngle;\n padAngle = d3_functor(v);\n return arc;\n };\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2, a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - halfπ;\n return [ Math.cos(a) * r, Math.sin(a) * r ];\n };\n return arc;\n };\n var d3_svg_arcAuto = \"auto\";\n function d3_svg_arcInnerRadius(d) {\n return d.innerRadius;\n }\n function d3_svg_arcOuterRadius(d) {\n return d.outerRadius;\n }\n function d3_svg_arcStartAngle(d) {\n return d.startAngle;\n }\n function d3_svg_arcEndAngle(d) {\n return d.endAngle;\n }\n function d3_svg_arcPadAngle(d) {\n return d && d.padAngle;\n }\n function d3_svg_arcSweep(x0, y0, x1, y1) {\n return (x0 - x1) * y0 - (y0 - y1) * x0 > 0 ? 0 : 1;\n }\n function d3_svg_arcCornerTangents(p0, p1, r1, rc, cw) {\n var x01 = p0[0] - p1[0], y01 = p0[1] - p1[1], lo = (cw ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01), ox = lo * y01, oy = -lo * x01, x1 = p0[0] + ox, y1 = p0[1] + oy, x2 = p1[0] + ox, y2 = p1[1] + oy, x3 = (x1 + x2) / 2, y3 = (y1 + y2) / 2, dx = x2 - x1, dy = y2 - y1, d2 = dx * dx + dy * dy, r = r1 - rc, D = x1 * y2 - x2 * y1, d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D)), cx0 = (D * dy - dx * d) / d2, cy0 = (-D * dx - dy * d) / d2, cx1 = (D * dy + dx * d) / d2, cy1 = (-D * dx + dy * d) / d2, dx0 = cx0 - x3, dy0 = cy0 - y3, dx1 = cx1 - x3, dy1 = cy1 - y3;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n return [ [ cx0 - ox, cy0 - oy ], [ cx0 * r1 / r, cy0 * r1 / r ] ];\n }\n function d3_svg_line(projection) {\n var x = d3_geom_pointX, y = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;\n function line(data) {\n var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);\n function segment() {\n segments.push(\"M\", interpolate(projection(points), tension));\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);\n } else if (points.length) {\n segment();\n points = [];\n }\n }\n if (points.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n line.x = function(_) {\n if (!arguments.length) return x;\n x = _;\n return line;\n };\n line.y = function(_) {\n if (!arguments.length) return y;\n y = _;\n return line;\n };\n line.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return line;\n };\n line.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n return line;\n };\n line.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return line;\n };\n return line;\n }\n d3.svg.line = function() {\n return d3_svg_line(d3_identity);\n };\n var d3_svg_lineInterpolators = d3.map({\n linear: d3_svg_lineLinear,\n \"linear-closed\": d3_svg_lineLinearClosed,\n step: d3_svg_lineStep,\n \"step-before\": d3_svg_lineStepBefore,\n \"step-after\": d3_svg_lineStepAfter,\n basis: d3_svg_lineBasis,\n \"basis-open\": d3_svg_lineBasisOpen,\n \"basis-closed\": d3_svg_lineBasisClosed,\n bundle: d3_svg_lineBundle,\n cardinal: d3_svg_lineCardinal,\n \"cardinal-open\": d3_svg_lineCardinalOpen,\n \"cardinal-closed\": d3_svg_lineCardinalClosed,\n monotone: d3_svg_lineMonotone\n });\n d3_svg_lineInterpolators.forEach(function(key, value) {\n value.key = key;\n value.closed = /-closed$/.test(key);\n });\n function d3_svg_lineLinear(points) {\n return points.length > 1 ? points.join(\"L\") : points + \"Z\";\n }\n function d3_svg_lineLinearClosed(points) {\n return points.join(\"L\") + \"Z\";\n }\n function d3_svg_lineStep(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p[0] + (p = points[i])[0]) / 2, \"V\", p[1]);\n if (n > 1) path.push(\"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepBefore(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"V\", (p = points[i])[1], \"H\", p[0]);\n return path.join(\"\");\n }\n function d3_svg_lineStepAfter(points) {\n var i = 0, n = points.length, p = points[0], path = [ p[0], \",\", p[1] ];\n while (++i < n) path.push(\"H\", (p = points[i])[0], \"V\", p[1]);\n return path.join(\"\");\n }\n function d3_svg_lineCardinalOpen(points, tension) {\n return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, -1), d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineCardinalClosed(points, tension) {\n return points.length < 3 ? d3_svg_lineLinearClosed(points) : points[0] + d3_svg_lineHermite((points.push(points[0]), \n points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));\n }\n function d3_svg_lineCardinal(points, tension) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));\n }\n function d3_svg_lineHermite(points, tangents) {\n if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {\n return d3_svg_lineLinear(points);\n }\n var quad = points.length != tangents.length, path = \"\", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;\n if (quad) {\n path += \"Q\" + (p[0] - t0[0] * 2 / 3) + \",\" + (p[1] - t0[1] * 2 / 3) + \",\" + p[0] + \",\" + p[1];\n p0 = points[1];\n pi = 2;\n }\n if (tangents.length > 1) {\n t = tangents[1];\n p = points[pi];\n pi++;\n path += \"C\" + (p0[0] + t0[0]) + \",\" + (p0[1] + t0[1]) + \",\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n for (var i = 2; i < tangents.length; i++, pi++) {\n p = points[pi];\n t = tangents[i];\n path += \"S\" + (p[0] - t[0]) + \",\" + (p[1] - t[1]) + \",\" + p[0] + \",\" + p[1];\n }\n }\n if (quad) {\n var lp = points[pi];\n path += \"Q\" + (p[0] + t[0] * 2 / 3) + \",\" + (p[1] + t[1] * 2 / 3) + \",\" + lp[0] + \",\" + lp[1];\n }\n return path;\n }\n function d3_svg_lineCardinalTangents(points, tension) {\n var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;\n while (++i < n) {\n p0 = p1;\n p1 = p2;\n p2 = points[i];\n tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);\n }\n return tangents;\n }\n function d3_svg_lineBasis(points) {\n if (points.length < 3) return d3_svg_lineLinear(points);\n var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, \",\", y0, \"L\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n points.push(points[n - 1]);\n while (++i <= n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n points.pop();\n path.push(\"L\", pi);\n return path.join(\"\");\n }\n function d3_svg_lineBasisOpen(points) {\n if (points.length < 4) return d3_svg_lineLinear(points);\n var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];\n while (++i < 3) {\n pi = points[i];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + \",\" + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));\n --i;\n while (++i < n) {\n pi = points[i];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBasisClosed(points) {\n var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];\n while (++i < 4) {\n pi = points[i % n];\n px.push(pi[0]);\n py.push(pi[1]);\n }\n path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];\n --i;\n while (++i < m) {\n pi = points[i % n];\n px.shift();\n px.push(pi[0]);\n py.shift();\n py.push(pi[1]);\n d3_svg_lineBasisBezier(path, px, py);\n }\n return path.join(\"\");\n }\n function d3_svg_lineBundle(points, tension) {\n var n = points.length - 1;\n if (n) {\n var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;\n while (++i <= n) {\n p = points[i];\n t = i / n;\n p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);\n p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);\n }\n }\n return d3_svg_lineBasis(points);\n }\n function d3_svg_lineDot4(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n }\n var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];\n function d3_svg_lineBasisBezier(path, x, y) {\n path.push(\"C\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), \",\", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));\n }\n function d3_svg_lineSlope(p0, p1) {\n return (p1[1] - p0[1]) / (p1[0] - p0[0]);\n }\n function d3_svg_lineFiniteDifferences(points) {\n var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);\n while (++i < j) {\n m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;\n }\n m[i] = d;\n return m;\n }\n function d3_svg_lineMonotoneTangents(points) {\n var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;\n while (++i < j) {\n d = d3_svg_lineSlope(points[i], points[i + 1]);\n if (abs(d) < ε) {\n m[i] = m[i + 1] = 0;\n } else {\n a = m[i] / d;\n b = m[i + 1] / d;\n s = a * a + b * b;\n if (s > 9) {\n s = d * 3 / Math.sqrt(s);\n m[i] = s * a;\n m[i + 1] = s * b;\n }\n }\n }\n i = -1;\n while (++i <= j) {\n s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));\n tangents.push([ s || 0, m[i] * s || 0 ]);\n }\n return tangents;\n }\n function d3_svg_lineMonotone(points) {\n return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));\n }\n d3.svg.line.radial = function() {\n var line = d3_svg_line(d3_svg_lineRadial);\n line.radius = line.x, delete line.x;\n line.angle = line.y, delete line.y;\n return line;\n };\n function d3_svg_lineRadial(points) {\n var point, i = -1, n = points.length, r, a;\n while (++i < n) {\n point = points[i];\n r = point[0];\n a = point[1] - halfπ;\n point[0] = r * Math.cos(a);\n point[1] = r * Math.sin(a);\n }\n return points;\n }\n function d3_svg_area(projection) {\n var x0 = d3_geom_pointX, x1 = d3_geom_pointX, y0 = 0, y1 = d3_geom_pointY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = \"L\", tension = .7;\n function area(data) {\n var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {\n return x;\n } : d3_functor(x1), fy1 = y0 === y1 ? function() {\n return y;\n } : d3_functor(y1), x, y;\n function segment() {\n segments.push(\"M\", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), \"Z\");\n }\n while (++i < n) {\n if (defined.call(this, d = data[i], i)) {\n points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);\n points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);\n } else if (points0.length) {\n segment();\n points0 = [];\n points1 = [];\n }\n }\n if (points0.length) segment();\n return segments.length ? segments.join(\"\") : null;\n }\n area.x = function(_) {\n if (!arguments.length) return x1;\n x0 = x1 = _;\n return area;\n };\n area.x0 = function(_) {\n if (!arguments.length) return x0;\n x0 = _;\n return area;\n };\n area.x1 = function(_) {\n if (!arguments.length) return x1;\n x1 = _;\n return area;\n };\n area.y = function(_) {\n if (!arguments.length) return y1;\n y0 = y1 = _;\n return area;\n };\n area.y0 = function(_) {\n if (!arguments.length) return y0;\n y0 = _;\n return area;\n };\n area.y1 = function(_) {\n if (!arguments.length) return y1;\n y1 = _;\n return area;\n };\n area.defined = function(_) {\n if (!arguments.length) return defined;\n defined = _;\n return area;\n };\n area.interpolate = function(_) {\n if (!arguments.length) return interpolateKey;\n if (typeof _ === \"function\") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;\n interpolateReverse = interpolate.reverse || interpolate;\n L = interpolate.closed ? \"M\" : \"L\";\n return area;\n };\n area.tension = function(_) {\n if (!arguments.length) return tension;\n tension = _;\n return area;\n };\n return area;\n }\n d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;\n d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;\n d3.svg.area = function() {\n return d3_svg_area(d3_identity);\n };\n d3.svg.area.radial = function() {\n var area = d3_svg_area(d3_svg_lineRadial);\n area.radius = area.x, delete area.x;\n area.innerRadius = area.x0, delete area.x0;\n area.outerRadius = area.x1, delete area.x1;\n area.angle = area.y, delete area.y;\n area.startAngle = area.y0, delete area.y0;\n area.endAngle = area.y1, delete area.y1;\n return area;\n };\n d3.svg.chord = function() {\n var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;\n function chord(d, i) {\n var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);\n return \"M\" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + \"Z\";\n }\n function subgroup(self, f, d, i) {\n var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) - halfπ, a1 = endAngle.call(self, subgroup, i) - halfπ;\n return {\n r: r,\n a0: a0,\n a1: a1,\n p0: [ r * Math.cos(a0), r * Math.sin(a0) ],\n p1: [ r * Math.cos(a1), r * Math.sin(a1) ]\n };\n }\n function equals(a, b) {\n return a.a0 == b.a0 && a.a1 == b.a1;\n }\n function arc(r, p, a) {\n return \"A\" + r + \",\" + r + \" 0 \" + +(a > π) + \",1 \" + p;\n }\n function curve(r0, p0, r1, p1) {\n return \"Q 0,0 \" + p1;\n }\n chord.radius = function(v) {\n if (!arguments.length) return radius;\n radius = d3_functor(v);\n return chord;\n };\n chord.source = function(v) {\n if (!arguments.length) return source;\n source = d3_functor(v);\n return chord;\n };\n chord.target = function(v) {\n if (!arguments.length) return target;\n target = d3_functor(v);\n return chord;\n };\n chord.startAngle = function(v) {\n if (!arguments.length) return startAngle;\n startAngle = d3_functor(v);\n return chord;\n };\n chord.endAngle = function(v) {\n if (!arguments.length) return endAngle;\n endAngle = d3_functor(v);\n return chord;\n };\n return chord;\n };\n function d3_svg_chordRadius(d) {\n return d.radius;\n }\n d3.svg.diagonal = function() {\n var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;\n function diagonal(d, i) {\n var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {\n x: p0.x,\n y: m\n }, {\n x: p3.x,\n y: m\n }, p3 ];\n p = p.map(projection);\n return \"M\" + p[0] + \"C\" + p[1] + \" \" + p[2] + \" \" + p[3];\n }\n diagonal.source = function(x) {\n if (!arguments.length) return source;\n source = d3_functor(x);\n return diagonal;\n };\n diagonal.target = function(x) {\n if (!arguments.length) return target;\n target = d3_functor(x);\n return diagonal;\n };\n diagonal.projection = function(x) {\n if (!arguments.length) return projection;\n projection = x;\n return diagonal;\n };\n return diagonal;\n };\n function d3_svg_diagonalProjection(d) {\n return [ d.x, d.y ];\n }\n d3.svg.diagonal.radial = function() {\n var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;\n diagonal.projection = function(x) {\n return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;\n };\n return diagonal;\n };\n function d3_svg_diagonalRadialProjection(projection) {\n return function() {\n var d = projection.apply(this, arguments), r = d[0], a = d[1] - halfπ;\n return [ r * Math.cos(a), r * Math.sin(a) ];\n };\n }\n d3.svg.symbol = function() {\n var type = d3_svg_symbolType, size = d3_svg_symbolSize;\n function symbol(d, i) {\n return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));\n }\n symbol.type = function(x) {\n if (!arguments.length) return type;\n type = d3_functor(x);\n return symbol;\n };\n symbol.size = function(x) {\n if (!arguments.length) return size;\n size = d3_functor(x);\n return symbol;\n };\n return symbol;\n };\n function d3_svg_symbolSize() {\n return 64;\n }\n function d3_svg_symbolType() {\n return \"circle\";\n }\n function d3_svg_symbolCircle(size) {\n var r = Math.sqrt(size / π);\n return \"M0,\" + r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + -r + \"A\" + r + \",\" + r + \" 0 1,1 0,\" + r + \"Z\";\n }\n var d3_svg_symbols = d3.map({\n circle: d3_svg_symbolCircle,\n cross: function(size) {\n var r = Math.sqrt(size / 5) / 2;\n return \"M\" + -3 * r + \",\" + -r + \"H\" + -r + \"V\" + -3 * r + \"H\" + r + \"V\" + -r + \"H\" + 3 * r + \"V\" + r + \"H\" + r + \"V\" + 3 * r + \"H\" + -r + \"V\" + r + \"H\" + -3 * r + \"Z\";\n },\n diamond: function(size) {\n var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;\n return \"M0,\" + -ry + \"L\" + rx + \",0\" + \" 0,\" + ry + \" \" + -rx + \",0\" + \"Z\";\n },\n square: function(size) {\n var r = Math.sqrt(size) / 2;\n return \"M\" + -r + \",\" + -r + \"L\" + r + \",\" + -r + \" \" + r + \",\" + r + \" \" + -r + \",\" + r + \"Z\";\n },\n \"triangle-down\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + ry + \"L\" + rx + \",\" + -ry + \" \" + -rx + \",\" + -ry + \"Z\";\n },\n \"triangle-up\": function(size) {\n var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;\n return \"M0,\" + -ry + \"L\" + rx + \",\" + ry + \" \" + -rx + \",\" + ry + \"Z\";\n }\n });\n d3.svg.symbolTypes = d3_svg_symbols.keys();\n var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);\n d3_selectionPrototype.transition = function(name) {\n var id = d3_transitionInheritId || ++d3_transitionId, ns = d3_transitionNamespace(name), subgroups = [], subgroup, node, transition = d3_transitionInherit || {\n time: Date.now(),\n ease: d3_ease_cubicInOut,\n delay: 0,\n duration: 250\n };\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_selectionPrototype.interrupt = function(name) {\n return this.each(name == null ? d3_selection_interrupt : d3_selection_interruptNS(d3_transitionNamespace(name)));\n };\n var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());\n function d3_selection_interruptNS(ns) {\n return function() {\n var lock, activeId, active;\n if ((lock = this[ns]) && (active = lock[activeId = lock.active])) {\n active.timer.c = null;\n active.timer.t = NaN;\n if (--lock.count) delete lock[activeId]; else delete this[ns];\n lock.active += .5;\n active.event && active.event.interrupt.call(this, this.__data__, active.index);\n }\n };\n }\n function d3_transition(groups, ns, id) {\n d3_subclass(groups, d3_transitionPrototype);\n groups.namespace = ns;\n groups.id = id;\n return groups;\n }\n var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit;\n d3_transitionPrototype.call = d3_selectionPrototype.call;\n d3_transitionPrototype.empty = d3_selectionPrototype.empty;\n d3_transitionPrototype.node = d3_selectionPrototype.node;\n d3_transitionPrototype.size = d3_selectionPrototype.size;\n d3.transition = function(selection, name) {\n return selection && selection.transition ? d3_transitionInheritId ? selection.transition(name) : selection : d3.selection().transition(selection);\n };\n d3.transition.prototype = d3_transitionPrototype;\n d3_transitionPrototype.select = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnode, node;\n selector = d3_selection_selector(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n d3_transitionNode(subnode, i, ns, id, node[ns][id]);\n subgroup.push(subnode);\n } else {\n subgroup.push(null);\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.selectAll = function(selector) {\n var id = this.id, ns = this.namespace, subgroups = [], subgroup, subnodes, node, subnode, transition;\n selector = d3_selection_selectorAll(selector);\n for (var j = -1, m = this.length; ++j < m; ) {\n for (var group = this[j], i = -1, n = group.length; ++i < n; ) {\n if (node = group[i]) {\n transition = node[ns][id];\n subnodes = selector.call(node, node.__data__, i, j);\n subgroups.push(subgroup = []);\n for (var k = -1, o = subnodes.length; ++k < o; ) {\n if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);\n subgroup.push(subnode);\n }\n }\n }\n }\n return d3_transition(subgroups, ns, id);\n };\n d3_transitionPrototype.filter = function(filter) {\n var subgroups = [], subgroup, group, node;\n if (typeof filter !== \"function\") filter = d3_selection_filter(filter);\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {\n subgroup.push(node);\n }\n }\n }\n return d3_transition(subgroups, this.namespace, this.id);\n };\n d3_transitionPrototype.tween = function(name, tween) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) return this.node()[ns][id].tween.get(name);\n return d3_selection_each(this, tween == null ? function(node) {\n node[ns][id].tween.remove(name);\n } : function(node) {\n node[ns][id].tween.set(name, tween);\n });\n };\n function d3_transition_tween(groups, name, value, tween) {\n var id = groups.id, ns = groups.namespace;\n return d3_selection_each(groups, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j)));\n } : (value = tween(value), function(node) {\n node[ns][id].tween.set(name, value);\n }));\n }\n d3_transitionPrototype.attr = function(nameNS, value) {\n if (arguments.length < 2) {\n for (value in nameNS) this.attr(value, nameNS[value]);\n return this;\n }\n var interpolate = nameNS == \"transform\" ? d3_interpolateTransform : d3_interpolate, name = d3.ns.qualify(nameNS);\n function attrNull() {\n this.removeAttribute(name);\n }\n function attrNullNS() {\n this.removeAttributeNS(name.space, name.local);\n }\n function attrTween(b) {\n return b == null ? attrNull : (b += \"\", function() {\n var a = this.getAttribute(name), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttribute(name, i(t));\n });\n });\n }\n function attrTweenNS(b) {\n return b == null ? attrNullNS : (b += \"\", function() {\n var a = this.getAttributeNS(name.space, name.local), i;\n return a !== b && (i = interpolate(a, b), function(t) {\n this.setAttributeNS(name.space, name.local, i(t));\n });\n });\n }\n return d3_transition_tween(this, \"attr.\" + nameNS, value, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.attrTween = function(nameNS, tween) {\n var name = d3.ns.qualify(nameNS);\n function attrTween(d, i) {\n var f = tween.call(this, d, i, this.getAttribute(name));\n return f && function(t) {\n this.setAttribute(name, f(t));\n };\n }\n function attrTweenNS(d, i) {\n var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));\n return f && function(t) {\n this.setAttributeNS(name.space, name.local, f(t));\n };\n }\n return this.tween(\"attr.\" + nameNS, name.local ? attrTweenNS : attrTween);\n };\n d3_transitionPrototype.style = function(name, value, priority) {\n var n = arguments.length;\n if (n < 3) {\n if (typeof name !== \"string\") {\n if (n < 2) value = \"\";\n for (priority in name) this.style(priority, name[priority], value);\n return this;\n }\n priority = \"\";\n }\n function styleNull() {\n this.style.removeProperty(name);\n }\n function styleString(b) {\n return b == null ? styleNull : (b += \"\", function() {\n var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;\n return a !== b && (i = d3_interpolate(a, b), function(t) {\n this.style.setProperty(name, i(t), priority);\n });\n });\n }\n return d3_transition_tween(this, \"style.\" + name, value, styleString);\n };\n d3_transitionPrototype.styleTween = function(name, tween, priority) {\n if (arguments.length < 3) priority = \"\";\n function styleTween(d, i) {\n var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));\n return f && function(t) {\n this.style.setProperty(name, f(t), priority);\n };\n }\n return this.tween(\"style.\" + name, styleTween);\n };\n d3_transitionPrototype.text = function(value) {\n return d3_transition_tween(this, \"text\", value, d3_transition_text);\n };\n function d3_transition_text(b) {\n if (b == null) b = \"\";\n return function() {\n this.textContent = b;\n };\n }\n d3_transitionPrototype.remove = function() {\n var ns = this.namespace;\n return this.each(\"end.transition\", function() {\n var p;\n if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);\n });\n };\n d3_transitionPrototype.ease = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].ease;\n if (typeof value !== \"function\") value = d3.ease.apply(d3, arguments);\n return d3_selection_each(this, function(node) {\n node[ns][id].ease = value;\n });\n };\n d3_transitionPrototype.delay = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].delay;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].delay = +value.call(node, node.__data__, i, j);\n } : (value = +value, function(node) {\n node[ns][id].delay = value;\n }));\n };\n d3_transitionPrototype.duration = function(value) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 1) return this.node()[ns][id].duration;\n return d3_selection_each(this, typeof value === \"function\" ? function(node, i, j) {\n node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j));\n } : (value = Math.max(1, value), function(node) {\n node[ns][id].duration = value;\n }));\n };\n d3_transitionPrototype.each = function(type, listener) {\n var id = this.id, ns = this.namespace;\n if (arguments.length < 2) {\n var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;\n try {\n d3_transitionInheritId = id;\n d3_selection_each(this, function(node, i, j) {\n d3_transitionInherit = node[ns][id];\n type.call(node, node.__data__, i, j);\n });\n } finally {\n d3_transitionInherit = inherit;\n d3_transitionInheritId = inheritId;\n }\n } else {\n d3_selection_each(this, function(node) {\n var transition = node[ns][id];\n (transition.event || (transition.event = d3.dispatch(\"start\", \"end\", \"interrupt\"))).on(type, listener);\n });\n }\n return this;\n };\n d3_transitionPrototype.transition = function() {\n var id0 = this.id, id1 = ++d3_transitionId, ns = this.namespace, subgroups = [], subgroup, group, node, transition;\n for (var j = 0, m = this.length; j < m; j++) {\n subgroups.push(subgroup = []);\n for (var group = this[j], i = 0, n = group.length; i < n; i++) {\n if (node = group[i]) {\n transition = node[ns][id0];\n d3_transitionNode(node, i, ns, id1, {\n time: transition.time,\n ease: transition.ease,\n delay: transition.delay + transition.duration,\n duration: transition.duration\n });\n }\n subgroup.push(node);\n }\n }\n return d3_transition(subgroups, ns, id1);\n };\n function d3_transitionNamespace(name) {\n return name == null ? \"__transition__\" : \"__transition_\" + name + \"__\";\n }\n function d3_transitionNode(node, i, ns, id, inherit) {\n var lock = node[ns] || (node[ns] = {\n active: 0,\n count: 0\n }), transition = lock[id], time, timer, duration, ease, tweens;\n function schedule(elapsed) {\n var delay = transition.delay;\n timer.t = delay + time;\n if (delay <= elapsed) return start(elapsed - delay);\n timer.c = start;\n }\n function start(elapsed) {\n var activeId = lock.active, active = lock[activeId];\n if (active) {\n active.timer.c = null;\n active.timer.t = NaN;\n --lock.count;\n delete lock[activeId];\n active.event && active.event.interrupt.call(node, node.__data__, active.index);\n }\n for (var cancelId in lock) {\n if (+cancelId < id) {\n var cancel = lock[cancelId];\n cancel.timer.c = null;\n cancel.timer.t = NaN;\n --lock.count;\n delete lock[cancelId];\n }\n }\n timer.c = tick;\n d3_timer(function() {\n if (timer.c && tick(elapsed || 1)) {\n timer.c = null;\n timer.t = NaN;\n }\n return 1;\n }, 0, time);\n lock.active = id;\n transition.event && transition.event.start.call(node, node.__data__, i);\n tweens = [];\n transition.tween.forEach(function(key, value) {\n if (value = value.call(node, node.__data__, i)) {\n tweens.push(value);\n }\n });\n ease = transition.ease;\n duration = transition.duration;\n }\n function tick(elapsed) {\n var t = elapsed / duration, e = ease(t), n = tweens.length;\n while (n > 0) {\n tweens[--n].call(node, e);\n }\n if (t >= 1) {\n transition.event && transition.event.end.call(node, node.__data__, i);\n if (--lock.count) delete lock[id]; else delete node[ns];\n return 1;\n }\n }\n if (!transition) {\n time = inherit.time;\n timer = d3_timer(schedule, 0, time);\n transition = lock[id] = {\n tween: new d3_Map(),\n time: time,\n timer: timer,\n delay: inherit.delay,\n duration: inherit.duration,\n ease: inherit.ease,\n index: i\n };\n inherit = null;\n ++lock.count;\n }\n }\n d3.svg.axis = function() {\n var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, innerTickSize = 6, outerTickSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_;\n function axis(g) {\n g.each(function() {\n var g = d3.select(this);\n var scale0 = this.__chart__ || scale, scale1 = this.__chart__ = scale.copy();\n var ticks = tickValues == null ? scale1.ticks ? scale1.ticks.apply(scale1, tickArguments_) : scale1.domain() : tickValues, tickFormat = tickFormat_ == null ? scale1.tickFormat ? scale1.tickFormat.apply(scale1, tickArguments_) : d3_identity : tickFormat_, tick = g.selectAll(\".tick\").data(ticks, scale1), tickEnter = tick.enter().insert(\"g\", \".domain\").attr(\"class\", \"tick\").style(\"opacity\", ε), tickExit = d3.transition(tick.exit()).style(\"opacity\", ε).remove(), tickUpdate = d3.transition(tick.order()).style(\"opacity\", 1), tickSpacing = Math.max(innerTickSize, 0) + tickPadding, tickTransform;\n var range = d3_scaleRange(scale1), path = g.selectAll(\".domain\").data([ 0 ]), pathUpdate = (path.enter().append(\"path\").attr(\"class\", \"domain\"), \n d3.transition(path));\n tickEnter.append(\"line\");\n tickEnter.append(\"text\");\n var lineEnter = tickEnter.select(\"line\"), lineUpdate = tickUpdate.select(\"line\"), text = tick.select(\"text\").text(tickFormat), textEnter = tickEnter.select(\"text\"), textUpdate = tickUpdate.select(\"text\"), sign = orient === \"top\" || orient === \"left\" ? -1 : 1, x1, x2, y1, y2;\n if (orient === \"bottom\" || orient === \"top\") {\n tickTransform = d3_svg_axisX, x1 = \"x\", y1 = \"y\", x2 = \"x2\", y2 = \"y2\";\n text.attr(\"dy\", sign < 0 ? \"0em\" : \".71em\").style(\"text-anchor\", \"middle\");\n pathUpdate.attr(\"d\", \"M\" + range[0] + \",\" + sign * outerTickSize + \"V0H\" + range[1] + \"V\" + sign * outerTickSize);\n } else {\n tickTransform = d3_svg_axisY, x1 = \"y\", y1 = \"x\", x2 = \"y2\", y2 = \"x2\";\n text.attr(\"dy\", \".32em\").style(\"text-anchor\", sign < 0 ? \"end\" : \"start\");\n pathUpdate.attr(\"d\", \"M\" + sign * outerTickSize + \",\" + range[0] + \"H0V\" + range[1] + \"H\" + sign * outerTickSize);\n }\n lineEnter.attr(y2, sign * innerTickSize);\n textEnter.attr(y1, sign * tickSpacing);\n lineUpdate.attr(x2, 0).attr(y2, sign * innerTickSize);\n textUpdate.attr(x1, 0).attr(y1, sign * tickSpacing);\n if (scale1.rangeBand) {\n var x = scale1, dx = x.rangeBand() / 2;\n scale0 = scale1 = function(d) {\n return x(d) + dx;\n };\n } else if (scale0.rangeBand) {\n scale0 = scale1;\n } else {\n tickExit.call(tickTransform, scale1, scale0);\n }\n tickEnter.call(tickTransform, scale0, scale1);\n tickUpdate.call(tickTransform, scale1, scale1);\n });\n }\n axis.scale = function(x) {\n if (!arguments.length) return scale;\n scale = x;\n return axis;\n };\n axis.orient = function(x) {\n if (!arguments.length) return orient;\n orient = x in d3_svg_axisOrients ? x + \"\" : d3_svg_axisDefaultOrient;\n return axis;\n };\n axis.ticks = function() {\n if (!arguments.length) return tickArguments_;\n tickArguments_ = d3_array(arguments);\n return axis;\n };\n axis.tickValues = function(x) {\n if (!arguments.length) return tickValues;\n tickValues = x;\n return axis;\n };\n axis.tickFormat = function(x) {\n if (!arguments.length) return tickFormat_;\n tickFormat_ = x;\n return axis;\n };\n axis.tickSize = function(x) {\n var n = arguments.length;\n if (!n) return innerTickSize;\n innerTickSize = +x;\n outerTickSize = +arguments[n - 1];\n return axis;\n };\n axis.innerTickSize = function(x) {\n if (!arguments.length) return innerTickSize;\n innerTickSize = +x;\n return axis;\n };\n axis.outerTickSize = function(x) {\n if (!arguments.length) return outerTickSize;\n outerTickSize = +x;\n return axis;\n };\n axis.tickPadding = function(x) {\n if (!arguments.length) return tickPadding;\n tickPadding = +x;\n return axis;\n };\n axis.tickSubdivide = function() {\n return arguments.length && axis;\n };\n return axis;\n };\n var d3_svg_axisDefaultOrient = \"bottom\", d3_svg_axisOrients = {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n };\n function d3_svg_axisX(selection, x0, x1) {\n selection.attr(\"transform\", function(d) {\n var v0 = x0(d);\n return \"translate(\" + (isFinite(v0) ? v0 : x1(d)) + \",0)\";\n });\n }\n function d3_svg_axisY(selection, y0, y1) {\n selection.attr(\"transform\", function(d) {\n var v0 = y0(d);\n return \"translate(0,\" + (isFinite(v0) ? v0 : y1(d)) + \")\";\n });\n }\n d3.svg.brush = function() {\n var event = d3_eventDispatch(brush, \"brushstart\", \"brush\", \"brushend\"), x = null, y = null, xExtent = [ 0, 0 ], yExtent = [ 0, 0 ], xExtentDomain, yExtentDomain, xClamp = true, yClamp = true, resizes = d3_svg_brushResizes[0];\n function brush(g) {\n g.each(function() {\n var g = d3.select(this).style(\"pointer-events\", \"all\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\").on(\"mousedown.brush\", brushstart).on(\"touchstart.brush\", brushstart);\n var background = g.selectAll(\".background\").data([ 0 ]);\n background.enter().append(\"rect\").attr(\"class\", \"background\").style(\"visibility\", \"hidden\").style(\"cursor\", \"crosshair\");\n g.selectAll(\".extent\").data([ 0 ]).enter().append(\"rect\").attr(\"class\", \"extent\").style(\"cursor\", \"move\");\n var resize = g.selectAll(\".resize\").data(resizes, d3_identity);\n resize.exit().remove();\n resize.enter().append(\"g\").attr(\"class\", function(d) {\n return \"resize \" + d;\n }).style(\"cursor\", function(d) {\n return d3_svg_brushCursor[d];\n }).append(\"rect\").attr(\"x\", function(d) {\n return /[ew]$/.test(d) ? -3 : null;\n }).attr(\"y\", function(d) {\n return /^[ns]/.test(d) ? -3 : null;\n }).attr(\"width\", 6).attr(\"height\", 6).style(\"visibility\", \"hidden\");\n resize.style(\"display\", brush.empty() ? \"none\" : null);\n var gUpdate = d3.transition(g), backgroundUpdate = d3.transition(background), range;\n if (x) {\n range = d3_scaleRange(x);\n backgroundUpdate.attr(\"x\", range[0]).attr(\"width\", range[1] - range[0]);\n redrawX(gUpdate);\n }\n if (y) {\n range = d3_scaleRange(y);\n backgroundUpdate.attr(\"y\", range[0]).attr(\"height\", range[1] - range[0]);\n redrawY(gUpdate);\n }\n redraw(gUpdate);\n });\n }\n brush.event = function(g) {\n g.each(function() {\n var event_ = event.of(this, arguments), extent1 = {\n x: xExtent,\n y: yExtent,\n i: xExtentDomain,\n j: yExtentDomain\n }, extent0 = this.__chart__ || extent1;\n this.__chart__ = extent1;\n if (d3_transitionInheritId) {\n d3.select(this).transition().each(\"start.brush\", function() {\n xExtentDomain = extent0.i;\n yExtentDomain = extent0.j;\n xExtent = extent0.x;\n yExtent = extent0.y;\n event_({\n type: \"brushstart\"\n });\n }).tween(\"brush:brush\", function() {\n var xi = d3_interpolateArray(xExtent, extent1.x), yi = d3_interpolateArray(yExtent, extent1.y);\n xExtentDomain = yExtentDomain = null;\n return function(t) {\n xExtent = extent1.x = xi(t);\n yExtent = extent1.y = yi(t);\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n };\n }).each(\"end.brush\", function() {\n xExtentDomain = extent1.i;\n yExtentDomain = extent1.j;\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n });\n } else {\n event_({\n type: \"brushstart\"\n });\n event_({\n type: \"brush\",\n mode: \"resize\"\n });\n event_({\n type: \"brushend\"\n });\n }\n });\n };\n function redraw(g) {\n g.selectAll(\".resize\").attr(\"transform\", function(d) {\n return \"translate(\" + xExtent[+/e$/.test(d)] + \",\" + yExtent[+/^s/.test(d)] + \")\";\n });\n }\n function redrawX(g) {\n g.select(\".extent\").attr(\"x\", xExtent[0]);\n g.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\", xExtent[1] - xExtent[0]);\n }\n function redrawY(g) {\n g.select(\".extent\").attr(\"y\", yExtent[0]);\n g.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\", yExtent[1] - yExtent[0]);\n }\n function brushstart() {\n var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed(\"extent\"), dragRestore = d3_event_dragSuppress(target), center, origin = d3.mouse(target), offset;\n var w = d3.select(d3_window(target)).on(\"keydown.brush\", keydown).on(\"keyup.brush\", keyup);\n if (d3.event.changedTouches) {\n w.on(\"touchmove.brush\", brushmove).on(\"touchend.brush\", brushend);\n } else {\n w.on(\"mousemove.brush\", brushmove).on(\"mouseup.brush\", brushend);\n }\n g.interrupt().selectAll(\"*\").interrupt();\n if (dragging) {\n origin[0] = xExtent[0] - origin[0];\n origin[1] = yExtent[0] - origin[1];\n } else if (resizing) {\n var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);\n offset = [ xExtent[1 - ex] - origin[0], yExtent[1 - ey] - origin[1] ];\n origin[0] = xExtent[ex];\n origin[1] = yExtent[ey];\n } else if (d3.event.altKey) center = origin.slice();\n g.style(\"pointer-events\", \"none\").selectAll(\".resize\").style(\"display\", null);\n d3.select(\"body\").style(\"cursor\", eventTarget.style(\"cursor\"));\n event_({\n type: \"brushstart\"\n });\n brushmove();\n function keydown() {\n if (d3.event.keyCode == 32) {\n if (!dragging) {\n center = null;\n origin[0] -= xExtent[1];\n origin[1] -= yExtent[1];\n dragging = 2;\n }\n d3_eventPreventDefault();\n }\n }\n function keyup() {\n if (d3.event.keyCode == 32 && dragging == 2) {\n origin[0] += xExtent[1];\n origin[1] += yExtent[1];\n dragging = 0;\n d3_eventPreventDefault();\n }\n }\n function brushmove() {\n var point = d3.mouse(target), moved = false;\n if (offset) {\n point[0] += offset[0];\n point[1] += offset[1];\n }\n if (!dragging) {\n if (d3.event.altKey) {\n if (!center) center = [ (xExtent[0] + xExtent[1]) / 2, (yExtent[0] + yExtent[1]) / 2 ];\n origin[0] = xExtent[+(point[0] < center[0])];\n origin[1] = yExtent[+(point[1] < center[1])];\n } else center = null;\n }\n if (resizingX && move1(point, x, 0)) {\n redrawX(g);\n moved = true;\n }\n if (resizingY && move1(point, y, 1)) {\n redrawY(g);\n moved = true;\n }\n if (moved) {\n redraw(g);\n event_({\n type: \"brush\",\n mode: dragging ? \"move\" : \"resize\"\n });\n }\n }\n function move1(point, scale, i) {\n var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], extent = i ? yExtent : xExtent, size = extent[1] - extent[0], min, max;\n if (dragging) {\n r0 -= position;\n r1 -= size + position;\n }\n min = (i ? yClamp : xClamp) ? Math.max(r0, Math.min(r1, point[i])) : point[i];\n if (dragging) {\n max = (min += position) + size;\n } else {\n if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));\n if (position < min) {\n max = min;\n min = position;\n } else {\n max = position;\n }\n }\n if (extent[0] != min || extent[1] != max) {\n if (i) yExtentDomain = null; else xExtentDomain = null;\n extent[0] = min;\n extent[1] = max;\n return true;\n }\n }\n function brushend() {\n brushmove();\n g.style(\"pointer-events\", \"all\").selectAll(\".resize\").style(\"display\", brush.empty() ? \"none\" : null);\n d3.select(\"body\").style(\"cursor\", null);\n w.on(\"mousemove.brush\", null).on(\"mouseup.brush\", null).on(\"touchmove.brush\", null).on(\"touchend.brush\", null).on(\"keydown.brush\", null).on(\"keyup.brush\", null);\n dragRestore();\n event_({\n type: \"brushend\"\n });\n }\n }\n brush.x = function(z) {\n if (!arguments.length) return x;\n x = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.y = function(z) {\n if (!arguments.length) return y;\n y = z;\n resizes = d3_svg_brushResizes[!x << 1 | !y];\n return brush;\n };\n brush.clamp = function(z) {\n if (!arguments.length) return x && y ? [ xClamp, yClamp ] : x ? xClamp : y ? yClamp : null;\n if (x && y) xClamp = !!z[0], yClamp = !!z[1]; else if (x) xClamp = !!z; else if (y) yClamp = !!z;\n return brush;\n };\n brush.extent = function(z) {\n var x0, x1, y0, y1, t;\n if (!arguments.length) {\n if (x) {\n if (xExtentDomain) {\n x0 = xExtentDomain[0], x1 = xExtentDomain[1];\n } else {\n x0 = xExtent[0], x1 = xExtent[1];\n if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n }\n }\n if (y) {\n if (yExtentDomain) {\n y0 = yExtentDomain[0], y1 = yExtentDomain[1];\n } else {\n y0 = yExtent[0], y1 = yExtent[1];\n if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n }\n }\n return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];\n }\n if (x) {\n x0 = z[0], x1 = z[1];\n if (y) x0 = x0[0], x1 = x1[0];\n xExtentDomain = [ x0, x1 ];\n if (x.invert) x0 = x(x0), x1 = x(x1);\n if (x1 < x0) t = x0, x0 = x1, x1 = t;\n if (x0 != xExtent[0] || x1 != xExtent[1]) xExtent = [ x0, x1 ];\n }\n if (y) {\n y0 = z[0], y1 = z[1];\n if (x) y0 = y0[1], y1 = y1[1];\n yExtentDomain = [ y0, y1 ];\n if (y.invert) y0 = y(y0), y1 = y(y1);\n if (y1 < y0) t = y0, y0 = y1, y1 = t;\n if (y0 != yExtent[0] || y1 != yExtent[1]) yExtent = [ y0, y1 ];\n }\n return brush;\n };\n brush.clear = function() {\n if (!brush.empty()) {\n xExtent = [ 0, 0 ], yExtent = [ 0, 0 ];\n xExtentDomain = yExtentDomain = null;\n }\n return brush;\n };\n brush.empty = function() {\n return !!x && xExtent[0] == xExtent[1] || !!y && yExtent[0] == yExtent[1];\n };\n return d3.rebind(brush, event, \"on\");\n };\n var d3_svg_brushCursor = {\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n };\n var d3_svg_brushResizes = [ [ \"n\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\" ], [ \"e\", \"w\" ], [ \"n\", \"s\" ], [] ];\n var d3_time_format = d3_time.format = d3_locale_enUS.timeFormat;\n var d3_time_formatUtc = d3_time_format.utc;\n var d3_time_formatIso = d3_time_formatUtc(\"%Y-%m-%dT%H:%M:%S.%LZ\");\n d3_time_format.iso = Date.prototype.toISOString && +new Date(\"2000-01-01T00:00:00.000Z\") ? d3_time_formatIsoNative : d3_time_formatIso;\n function d3_time_formatIsoNative(date) {\n return date.toISOString();\n }\n d3_time_formatIsoNative.parse = function(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n };\n d3_time_formatIsoNative.toString = d3_time_formatIso.toString;\n d3_time.second = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 1e3) * 1e3);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 1e3);\n }, function(date) {\n return date.getSeconds();\n });\n d3_time.seconds = d3_time.second.range;\n d3_time.seconds.utc = d3_time.second.utc.range;\n d3_time.minute = d3_time_interval(function(date) {\n return new d3_date(Math.floor(date / 6e4) * 6e4);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 6e4);\n }, function(date) {\n return date.getMinutes();\n });\n d3_time.minutes = d3_time.minute.range;\n d3_time.minutes.utc = d3_time.minute.utc.range;\n d3_time.hour = d3_time_interval(function(date) {\n var timezone = date.getTimezoneOffset() / 60;\n return new d3_date((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);\n }, function(date, offset) {\n date.setTime(date.getTime() + Math.floor(offset) * 36e5);\n }, function(date) {\n return date.getHours();\n });\n d3_time.hours = d3_time.hour.range;\n d3_time.hours.utc = d3_time.hour.utc.range;\n d3_time.month = d3_time_interval(function(date) {\n date = d3_time.day(date);\n date.setDate(1);\n return date;\n }, function(date, offset) {\n date.setMonth(date.getMonth() + offset);\n }, function(date) {\n return date.getMonth();\n });\n d3_time.months = d3_time.month.range;\n d3_time.months.utc = d3_time.month.utc.range;\n function d3_time_scale(linear, methods, format) {\n function scale(x) {\n return linear(x);\n }\n scale.invert = function(x) {\n return d3_time_scaleDate(linear.invert(x));\n };\n scale.domain = function(x) {\n if (!arguments.length) return linear.domain().map(d3_time_scaleDate);\n linear.domain(x);\n return scale;\n };\n function tickMethod(extent, count) {\n var span = extent[1] - extent[0], target = span / count, i = d3.bisect(d3_time_scaleSteps, target);\n return i == d3_time_scaleSteps.length ? [ methods.year, d3_scale_linearTickRange(extent.map(function(d) {\n return d / 31536e6;\n }), count)[2] ] : !i ? [ d3_time_scaleMilliseconds, d3_scale_linearTickRange(extent, count)[2] ] : methods[target / d3_time_scaleSteps[i - 1] < d3_time_scaleSteps[i] / target ? i - 1 : i];\n }\n scale.nice = function(interval, skip) {\n var domain = scale.domain(), extent = d3_scaleExtent(domain), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" && tickMethod(extent, interval);\n if (method) interval = method[0], skip = method[1];\n function skipped(date) {\n return !isNaN(date) && !interval.range(date, d3_time_scaleDate(+date + 1), skip).length;\n }\n return scale.domain(d3_scale_nice(domain, skip > 1 ? {\n floor: function(date) {\n while (skipped(date = interval.floor(date))) date = d3_time_scaleDate(date - 1);\n return date;\n },\n ceil: function(date) {\n while (skipped(date = interval.ceil(date))) date = d3_time_scaleDate(+date + 1);\n return date;\n }\n } : interval));\n };\n scale.ticks = function(interval, skip) {\n var extent = d3_scaleExtent(scale.domain()), method = interval == null ? tickMethod(extent, 10) : typeof interval === \"number\" ? tickMethod(extent, interval) : !interval.range && [ {\n range: interval\n }, skip ];\n if (method) interval = method[0], skip = method[1];\n return interval.range(extent[0], d3_time_scaleDate(+extent[1] + 1), skip < 1 ? 1 : skip);\n };\n scale.tickFormat = function() {\n return format;\n };\n scale.copy = function() {\n return d3_time_scale(linear.copy(), methods, format);\n };\n return d3_scale_linearRebind(scale, linear);\n }\n function d3_time_scaleDate(t) {\n return new Date(t);\n }\n var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];\n var d3_time_scaleLocalMethods = [ [ d3_time.second, 1 ], [ d3_time.second, 5 ], [ d3_time.second, 15 ], [ d3_time.second, 30 ], [ d3_time.minute, 1 ], [ d3_time.minute, 5 ], [ d3_time.minute, 15 ], [ d3_time.minute, 30 ], [ d3_time.hour, 1 ], [ d3_time.hour, 3 ], [ d3_time.hour, 6 ], [ d3_time.hour, 12 ], [ d3_time.day, 1 ], [ d3_time.day, 2 ], [ d3_time.week, 1 ], [ d3_time.month, 1 ], [ d3_time.month, 3 ], [ d3_time.year, 1 ] ];\n var d3_time_scaleLocalFormat = d3_time_format.multi([ [ \".%L\", function(d) {\n return d.getMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getHours();\n } ], [ \"%a %d\", function(d) {\n return d.getDay() && d.getDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getMonth();\n } ], [ \"%Y\", d3_true ] ]);\n var d3_time_scaleMilliseconds = {\n range: function(start, stop, step) {\n return d3.range(Math.ceil(start / step) * step, +stop, step).map(d3_time_scaleDate);\n },\n floor: d3_identity,\n ceil: d3_identity\n };\n d3_time_scaleLocalMethods.year = d3_time.year;\n d3_time.scale = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);\n };\n var d3_time_scaleUtcMethods = d3_time_scaleLocalMethods.map(function(m) {\n return [ m[0].utc, m[1] ];\n });\n var d3_time_scaleUtcFormat = d3_time_formatUtc.multi([ [ \".%L\", function(d) {\n return d.getUTCMilliseconds();\n } ], [ \":%S\", function(d) {\n return d.getUTCSeconds();\n } ], [ \"%I:%M\", function(d) {\n return d.getUTCMinutes();\n } ], [ \"%I %p\", function(d) {\n return d.getUTCHours();\n } ], [ \"%a %d\", function(d) {\n return d.getUTCDay() && d.getUTCDate() != 1;\n } ], [ \"%b %d\", function(d) {\n return d.getUTCDate() != 1;\n } ], [ \"%B\", function(d) {\n return d.getUTCMonth();\n } ], [ \"%Y\", d3_true ] ]);\n d3_time_scaleUtcMethods.year = d3_time.year.utc;\n d3_time.scale.utc = function() {\n return d3_time_scale(d3.scale.linear(), d3_time_scaleUtcMethods, d3_time_scaleUtcFormat);\n };\n d3.text = d3_xhrType(function(request) {\n return request.responseText;\n });\n d3.json = function(url, callback) {\n return d3_xhr(url, \"application/json\", d3_json, callback);\n };\n function d3_json(request) {\n return JSON.parse(request.responseText);\n }\n d3.html = function(url, callback) {\n return d3_xhr(url, \"text/html\", d3_html, callback);\n };\n function d3_html(request) {\n var range = d3_document.createRange();\n range.selectNode(d3_document.body);\n return range.createContextualFragment(request.responseText);\n }\n d3.xml = d3_xhrType(function(request) {\n return request.responseXML;\n });\n if (typeof define === \"function\" && define.amd) this.d3 = d3, define(d3); else if (typeof module === \"object\" && module.exports) module.exports = d3; else this.d3 = d3;\n}();","/* Font Face Observer v2.3.0 - © Bram Stein. License: BSD-3-Clause */(function(){function p(a,c){document.addEventListener?a.addEventListener(\"scroll\",c,!1):a.attachEvent(\"scroll\",c)}function u(a){document.body?a():document.addEventListener?document.addEventListener(\"DOMContentLoaded\",function b(){document.removeEventListener(\"DOMContentLoaded\",b);a()}):document.attachEvent(\"onreadystatechange\",function g(){if(\"interactive\"==document.readyState||\"complete\"==document.readyState)document.detachEvent(\"onreadystatechange\",g),a()})};function w(a){this.g=document.createElement(\"div\");this.g.setAttribute(\"aria-hidden\",\"true\");this.g.appendChild(document.createTextNode(a));this.h=document.createElement(\"span\");this.i=document.createElement(\"span\");this.m=document.createElement(\"span\");this.j=document.createElement(\"span\");this.l=-1;this.h.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";this.i.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\nthis.j.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";this.m.style.cssText=\"display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;\";this.h.appendChild(this.m);this.i.appendChild(this.j);this.g.appendChild(this.h);this.g.appendChild(this.i)}\nfunction x(a,c){a.g.style.cssText=\"max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:\"+c+\";\"}function B(a){var c=a.g.offsetWidth,b=c+100;a.j.style.width=b+\"px\";a.i.scrollLeft=b;a.h.scrollLeft=a.h.scrollWidth+100;return a.l!==c?(a.l=c,!0):!1}function C(a,c){function b(){var e=g;B(e)&&null!==e.g.parentNode&&c(e.l)}var g=a;p(a.h,b);p(a.i,b);B(a)};function D(a,c,b){c=c||{};b=b||window;this.family=a;this.style=c.style||\"normal\";this.weight=c.weight||\"normal\";this.stretch=c.stretch||\"normal\";this.context=b}var E=null,F=null,G=null,H=null;function I(a){null===F&&(M(a)&&/Apple/.test(window.navigator.vendor)?(a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent),F=!!a&&603>parseInt(a[1],10)):F=!1);return F}function M(a){null===H&&(H=!!a.document.fonts);return H}\nfunction N(a,c){var b=a.style,g=a.weight;if(null===G){var e=document.createElement(\"div\");try{e.style.font=\"condensed 100px sans-serif\"}catch(q){}G=\"\"!==e.style.font}return[b,g,G?a.stretch:\"\",\"100px\",c].join(\" \")}\nD.prototype.load=function(a,c){var b=this,g=a||\"BESbswy\",e=0,q=c||3E3,J=(new Date).getTime();return new Promise(function(K,L){if(M(b.context)&&!I(b.context)){var O=new Promise(function(r,t){function h(){(new Date).getTime()-J>=q?t(Error(\"\"+q+\"ms timeout exceeded\")):b.context.document.fonts.load(N(b,'\"'+b.family+'\"'),g).then(function(n){1<=n.length?r():setTimeout(h,25)},t)}h()}),P=new Promise(function(r,t){e=setTimeout(function(){t(Error(\"\"+q+\"ms timeout exceeded\"))},q)});Promise.race([P,O]).then(function(){clearTimeout(e);\nK(b)},L)}else u(function(){function r(){var d;if(d=-1!=k&&-1!=l||-1!=k&&-1!=m||-1!=l&&-1!=m)(d=k!=l&&k!=m&&l!=m)||(null===E&&(d=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent),E=!!d&&(536>parseInt(d[1],10)||536===parseInt(d[1],10)&&11>=parseInt(d[2],10))),d=E&&(k==y&&l==y&&m==y||k==z&&l==z&&m==z||k==A&&l==A&&m==A)),d=!d;d&&(null!==f.parentNode&&f.parentNode.removeChild(f),clearTimeout(e),K(b))}function t(){if((new Date).getTime()-J>=q)null!==f.parentNode&&f.parentNode.removeChild(f),\nL(Error(\"\"+q+\"ms timeout exceeded\"));else{var d=b.context.document.hidden;if(!0===d||void 0===d)k=h.g.offsetWidth,l=n.g.offsetWidth,m=v.g.offsetWidth,r();e=setTimeout(t,50)}}var h=new w(g),n=new w(g),v=new w(g),k=-1,l=-1,m=-1,y=-1,z=-1,A=-1,f=document.createElement(\"div\");f.dir=\"ltr\";x(h,N(b,\"sans-serif\"));x(n,N(b,\"serif\"));x(v,N(b,\"monospace\"));f.appendChild(h.g);f.appendChild(n.g);f.appendChild(v.g);b.context.document.body.appendChild(f);y=h.g.offsetWidth;z=n.g.offsetWidth;A=v.g.offsetWidth;t();\nC(h,function(d){k=d;r()});x(h,N(b,'\"'+b.family+'\",sans-serif'));C(n,function(d){l=d;r()});x(n,N(b,'\"'+b.family+'\",serif'));C(v,function(d){m=d;r()});x(v,N(b,'\"'+b.family+'\",monospace'))})})};\"object\"===typeof module?module.exports=D:(window.FontFaceObserver=D,window.FontFaceObserver.prototype.load=D.prototype.load);}());\n","/** @preserve jQuery animateNumber plugin v0.0.14\n * (c) 2013, Alexandr Borisov.\n * https://github.com/aishek/jquery-animateNumber\n */\n\n// ['...'] notation using to avoid names minification by Google Closure Compiler\n(function($) {\n var reverse = function(value) {\n return value.split('').reverse().join('');\n };\n\n var defaults = {\n numberStep: function(now, tween) {\n var floored_number = Math.floor(now),\n target = $(tween.elem);\n\n target.text(floored_number);\n }\n };\n\n var handle = function( tween ) {\n var elem = tween.elem;\n if ( elem.nodeType && elem.parentNode ) {\n var handler = elem._animateNumberSetter;\n if (!handler) {\n handler = defaults.numberStep;\n }\n handler(tween.now, tween);\n }\n };\n\n if (!$.Tween || !$.Tween.propHooks) {\n $.fx.step.number = handle;\n } else {\n $.Tween.propHooks.number = {\n set: handle\n };\n }\n\n var extract_number_parts = function(separated_number, group_length) {\n var numbers = separated_number.split('').reverse(),\n number_parts = [],\n current_number_part,\n current_index,\n q;\n\n for(var i = 0, l = Math.ceil(separated_number.length / group_length); i < l; i++) {\n current_number_part = '';\n for(q = 0; q < group_length; q++) {\n current_index = i * group_length + q;\n if (current_index === separated_number.length) {\n break;\n }\n\n current_number_part = current_number_part + numbers[current_index];\n }\n number_parts.push(current_number_part);\n }\n\n return number_parts;\n };\n\n var remove_precending_zeros = function(number_parts) {\n var last_index = number_parts.length - 1,\n last = reverse(number_parts[last_index]);\n\n number_parts[last_index] = reverse(parseInt(last, 10).toString());\n return number_parts;\n };\n\n $.animateNumber = {\n numberStepFactories: {\n /**\n * Creates numberStep handler, which appends string to floored animated number on each step.\n *\n * @example\n * // will animate to 100 with \"1 %\", \"2 %\", \"3 %\", ...\n * $('#someid').animateNumber({\n * number: 100,\n * numberStep: $.animateNumber.numberStepFactories.append(' %')\n * });\n *\n * @params {String} suffix string to append to animated number\n * @returns {Function} numberStep-compatible function for use in animateNumber's parameters\n */\n append: function(suffix) {\n return function(now, tween) {\n var floored_number = Math.floor(now),\n target = $(tween.elem);\n\n target.prop('number', now).text(floored_number + suffix);\n };\n },\n\n /**\n * Creates numberStep handler, which format floored numbers by separating them to groups.\n *\n * @example\n * // will animate with 1 ... 217,980 ... 95,217,980 ... 7,095,217,980\n * $('#world-population').animateNumber({\n * number: 7095217980,\n * numberStep: $.animateNumber.numberStepFactories.separator(',')\n * });\n * @example\n * // will animate with 1% ... 217,980% ... 95,217,980% ... 7,095,217,980%\n * $('#salesIncrease').animateNumber({\n * number: 7095217980,\n * numberStep: $.animateNumber.numberStepFactories.separator(',', 3, '%')\n * });\n *\n * @params {String} [separator=' '] string to separate number groups\n * @params {String} [group_length=3] number group length\n * @params {String} [suffix=''] suffix to append to number\n * @returns {Function} numberStep-compatible function for use in animateNumber's parameters\n */\n separator: function(separator, group_length, suffix) {\n separator = separator || ' ';\n group_length = group_length || 3;\n suffix = suffix || '';\n\n return function(now, tween) {\n var negative = now < 0,\n floored_number = Math.floor((negative ? -1 : 1) * now),\n separated_number = floored_number.toString(),\n target = $(tween.elem);\n\n if (separated_number.length > group_length) {\n var number_parts = extract_number_parts(separated_number, group_length);\n\n separated_number = remove_precending_zeros(number_parts).join(separator);\n separated_number = reverse(separated_number);\n }\n\n target.prop('number', now).text((negative ? '-' : '') + separated_number + suffix);\n };\n }\n }\n };\n\n $.fn.animateNumber = function() {\n var options = arguments[0],\n settings = $.extend({}, defaults, options),\n\n target = $(this),\n args = [settings];\n\n for(var i = 1, l = arguments.length; i < l; i++) {\n args.push(arguments[i]);\n }\n\n // needs of custom step function usage\n if (options.numberStep) {\n // assigns custom step functions\n var items = this.each(function(){\n this._animateNumberSetter = options.numberStep;\n });\n\n // cleanup of custom step functions after animation\n var generic_complete = settings.complete;\n settings.complete = function() {\n items.each(function(){\n delete this._animateNumberSetter;\n });\n\n if ( generic_complete ) {\n generic_complete.apply(this, arguments);\n }\n };\n }\n\n return target.animate.apply(target, args);\n };\n\n}(jQuery));\n","/*!\n * jQuery JavaScript Library v3.6.4\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-03-08T15:28Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.10\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2023-02-14\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t// Make sure the the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\n\t\t\t// Support: IE <9 only\n\t\t\t// IE doesn't have `contains` on `document` so we need to check for\n\t\t\t// `documentElement` presence.\n\t\t\t// We need to fall back to `a` when `documentElement` is missing\n\t\t\t// as `ownerDocument` of elements within `