blacklight_allmaps 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +38 -24
  3. data/Rakefile +2 -1
  4. data/app/assets/javascripts/blacklight/allmaps/blacklight-allmaps.esm.js +26776 -0
  5. data/app/assets/javascripts/blacklight/allmaps/blacklight-allmaps.esm.js.map +1 -0
  6. data/app/assets/javascripts/blacklight/allmaps/blacklight-allmaps.js +26783 -0
  7. data/app/assets/javascripts/blacklight/allmaps/blacklight-allmaps.js.map +1 -0
  8. data/app/assets/stylesheets/blacklight/allmaps/base.scss +9 -0
  9. data/app/javascript/blacklight/allmaps/index.js +11 -0
  10. data/app/javascript/blacklight/allmaps/initialize_blacklight_map.js +44 -0
  11. data/app/javascript/blacklight/allmaps/initialize_geoblacklight_map.js +53 -0
  12. data/app/javascript/blacklight/allmaps/leaflet_layer_opacity.js +69 -0
  13. data/app/views/allmaps/show/_blacklight.html.erb +1 -211
  14. data/app/views/allmaps/show/_geoblacklight.html.erb +1 -45
  15. data/app/views/catalog/_blacklight_allmaps.html.erb +5 -0
  16. data/app/views/catalog/_show_allmaps_tabbed_viewer_container.html.erb +53 -0
  17. data/db/migrate/{20240307155110_create_solr_document_sidecars.rb → 20240307155110_create_solr_document_sidecar_allmaps.rb} +1 -1
  18. data/lib/blacklight/allmaps/tasks/index.rake +53 -4
  19. data/lib/blacklight/allmaps/version.rb +10 -1
  20. data/lib/blacklight/allmaps.rb +1 -0
  21. data/lib/generators/blacklight/allmaps/config_generator.rb +67 -5
  22. metadata +20 -13
  23. data/app/assets/stylesheets/blacklight_allmaps/application.css +0 -15
  24. data/app/javascripts/map_controller.js +0 -39
  25. data/app/views/catalog/_show_default_viewer_container.html.erb +0 -52
  26. data/app/views/catalog/_show_main_content.html.erb +0 -58
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blacklight-allmaps.esm.js","sources":["../../../../../node_modules/leaflet/dist/leaflet-src.js","../../../../../node_modules/leaflet-fullscreen/dist/Leaflet.fullscreen.js","../../../../../node_modules/@allmaps/leaflet/dist/bundled/allmaps-leaflet-1.9.es.js","../../../../javascript/blacklight/allmaps/leaflet_layer_opacity.js","../../../../javascript/blacklight/allmaps/initialize_geoblacklight_map.js","../../../../javascript/blacklight/allmaps/initialize_blacklight_map.js","../../../../javascript/blacklight/allmaps/index.js"],"sourcesContent":["/* @preserve\n * Leaflet 1.9.4, a JS library for interactive maps. https://leafletjs.com\n * (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.leaflet = {}));\n})(this, (function (exports) { 'use strict';\n\n var version = \"1.9.4\";\n\n /*\r\n * @namespace Util\r\n *\r\n * Various utility functions, used by Leaflet internally.\r\n */\r\n\r\n // @function extend(dest: Object, src?: Object): Object\r\n // Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.\r\n function extend(dest) {\r\n \tvar i, j, len, src;\r\n\r\n \tfor (j = 1, len = arguments.length; j < len; j++) {\r\n \t\tsrc = arguments[j];\r\n \t\tfor (i in src) {\r\n \t\t\tdest[i] = src[i];\r\n \t\t}\r\n \t}\r\n \treturn dest;\r\n }\r\n\r\n // @function create(proto: Object, properties?: Object): Object\r\n // Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)\r\n var create$2 = Object.create || (function () {\r\n \tfunction F() {}\r\n \treturn function (proto) {\r\n \t\tF.prototype = proto;\r\n \t\treturn new F();\r\n \t};\r\n })();\r\n\r\n // @function bind(fn: Function, …): Function\r\n // Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\r\n // Has a `L.bind()` shortcut.\r\n function bind(fn, obj) {\r\n \tvar slice = Array.prototype.slice;\r\n\r\n \tif (fn.bind) {\r\n \t\treturn fn.bind.apply(fn, slice.call(arguments, 1));\r\n \t}\r\n\r\n \tvar args = slice.call(arguments, 2);\r\n\r\n \treturn function () {\r\n \t\treturn fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);\r\n \t};\r\n }\r\n\r\n // @property lastId: Number\r\n // Last unique ID used by [`stamp()`](#util-stamp)\r\n var lastId = 0;\r\n\r\n // @function stamp(obj: Object): Number\r\n // Returns the unique ID of an object, assigning it one if it doesn't have it.\r\n function stamp(obj) {\r\n \tif (!('_leaflet_id' in obj)) {\r\n \t\tobj['_leaflet_id'] = ++lastId;\r\n \t}\r\n \treturn obj._leaflet_id;\r\n }\r\n\r\n // @function throttle(fn: Function, time: Number, context: Object): Function\r\n // Returns a function which executes function `fn` with the given scope `context`\r\n // (so that the `this` keyword refers to `context` inside `fn`'s code). The function\r\n // `fn` will be called no more than one time per given amount of `time`. The arguments\r\n // received by the bound function will be any arguments passed when binding the\r\n // function, followed by any arguments passed when invoking the bound function.\r\n // Has an `L.throttle` shortcut.\r\n function throttle(fn, time, context) {\r\n \tvar lock, args, wrapperFn, later;\r\n\r\n \tlater = function () {\r\n \t\t// reset lock and call if queued\r\n \t\tlock = false;\r\n \t\tif (args) {\r\n \t\t\twrapperFn.apply(context, args);\r\n \t\t\targs = false;\r\n \t\t}\r\n \t};\r\n\r\n \twrapperFn = function () {\r\n \t\tif (lock) {\r\n \t\t\t// called too soon, queue to call later\r\n \t\t\targs = arguments;\r\n\r\n \t\t} else {\r\n \t\t\t// call and lock until later\r\n \t\t\tfn.apply(context, arguments);\r\n \t\t\tsetTimeout(later, time);\r\n \t\t\tlock = true;\r\n \t\t}\r\n \t};\r\n\r\n \treturn wrapperFn;\r\n }\r\n\r\n // @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number\r\n // Returns the number `num` modulo `range` in such a way so it lies within\r\n // `range[0]` and `range[1]`. The returned value will be always smaller than\r\n // `range[1]` unless `includeMax` is set to `true`.\r\n function wrapNum(x, range, includeMax) {\r\n \tvar max = range[1],\r\n \t min = range[0],\r\n \t d = max - min;\r\n \treturn x === max && includeMax ? x : ((x - min) % d + d) % d + min;\r\n }\r\n\r\n // @function falseFn(): Function\r\n // Returns a function which always returns `false`.\r\n function falseFn() { return false; }\r\n\r\n // @function formatNum(num: Number, precision?: Number|false): Number\r\n // Returns the number `num` rounded with specified `precision`.\r\n // The default `precision` value is 6 decimal places.\r\n // `false` can be passed to skip any processing (can be useful to avoid round-off errors).\r\n function formatNum(num, precision) {\r\n \tif (precision === false) { return num; }\r\n \tvar pow = Math.pow(10, precision === undefined ? 6 : precision);\r\n \treturn Math.round(num * pow) / pow;\r\n }\r\n\r\n // @function trim(str: String): String\r\n // Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)\r\n function trim(str) {\r\n \treturn str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n }\r\n\r\n // @function splitWords(str: String): String[]\r\n // Trims and splits the string on whitespace and returns the array of parts.\r\n function splitWords(str) {\r\n \treturn trim(str).split(/\\s+/);\r\n }\r\n\r\n // @function setOptions(obj: Object, options: Object): Object\r\n // Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.\r\n function setOptions(obj, options) {\r\n \tif (!Object.prototype.hasOwnProperty.call(obj, 'options')) {\r\n \t\tobj.options = obj.options ? create$2(obj.options) : {};\r\n \t}\r\n \tfor (var i in options) {\r\n \t\tobj.options[i] = options[i];\r\n \t}\r\n \treturn obj.options;\r\n }\r\n\r\n // @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String\r\n // Converts an object into a parameter URL string, e.g. `{a: \"foo\", b: \"bar\"}`\r\n // translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will\r\n // be appended at the end. If `uppercase` is `true`, the parameter names will\r\n // be uppercased (e.g. `'?A=foo&B=bar'`)\r\n function getParamString(obj, existingUrl, uppercase) {\r\n \tvar params = [];\r\n \tfor (var i in obj) {\r\n \t\tparams.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));\r\n \t}\r\n \treturn ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\r\n }\r\n\r\n var templateRe = /\\{ *([\\w_ -]+) *\\}/g;\r\n\r\n // @function template(str: String, data: Object): String\r\n // Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`\r\n // and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string\r\n // `('Hello foo, bar')`. You can also specify functions instead of strings for\r\n // data values — they will be evaluated passing `data` as an argument.\r\n function template(str, data) {\r\n \treturn str.replace(templateRe, function (str, key) {\r\n \t\tvar value = data[key];\r\n\r\n \t\tif (value === undefined) {\r\n \t\t\tthrow new Error('No value provided for variable ' + str);\r\n\r\n \t\t} else if (typeof value === 'function') {\r\n \t\t\tvalue = value(data);\r\n \t\t}\r\n \t\treturn value;\r\n \t});\r\n }\r\n\r\n // @function isArray(obj): Boolean\r\n // Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)\r\n var isArray = Array.isArray || function (obj) {\r\n \treturn (Object.prototype.toString.call(obj) === '[object Array]');\r\n };\r\n\r\n // @function indexOf(array: Array, el: Object): Number\r\n // Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)\r\n function indexOf(array, el) {\r\n \tfor (var i = 0; i < array.length; i++) {\r\n \t\tif (array[i] === el) { return i; }\r\n \t}\r\n \treturn -1;\r\n }\r\n\r\n // @property emptyImageUrl: String\r\n // Data URI string containing a base64-encoded empty GIF image.\r\n // Used as a hack to free memory from unused images on WebKit-powered\r\n // mobile devices (by setting image `src` to this string).\r\n var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n\r\n // inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\r\n function getPrefixed(name) {\r\n \treturn window['webkit' + name] || window['moz' + name] || window['ms' + name];\r\n }\r\n\r\n var lastTime = 0;\r\n\r\n // fallback for IE 7-8\r\n function timeoutDefer(fn) {\r\n \tvar time = +new Date(),\r\n \t timeToCall = Math.max(0, 16 - (time - lastTime));\r\n\r\n \tlastTime = time + timeToCall;\r\n \treturn window.setTimeout(fn, timeToCall);\r\n }\r\n\r\n var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;\r\n var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') ||\r\n \t\tgetPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); };\r\n\r\n // @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number\r\n // Schedules `fn` to be executed when the browser repaints. `fn` is bound to\r\n // `context` if given. When `immediate` is set, `fn` is called immediately if\r\n // the browser doesn't have native support for\r\n // [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),\r\n // otherwise it's delayed. Returns a request ID that can be used to cancel the request.\r\n function requestAnimFrame(fn, context, immediate) {\r\n \tif (immediate && requestFn === timeoutDefer) {\r\n \t\tfn.call(context);\r\n \t} else {\r\n \t\treturn requestFn.call(window, bind(fn, context));\r\n \t}\r\n }\r\n\r\n // @function cancelAnimFrame(id: Number): undefined\r\n // Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).\r\n function cancelAnimFrame(id) {\r\n \tif (id) {\r\n \t\tcancelFn.call(window, id);\r\n \t}\r\n }\n\n var Util = {\n __proto__: null,\n extend: extend,\n create: create$2,\n bind: bind,\n get lastId () { return lastId; },\n stamp: stamp,\n throttle: throttle,\n wrapNum: wrapNum,\n falseFn: falseFn,\n formatNum: formatNum,\n trim: trim,\n splitWords: splitWords,\n setOptions: setOptions,\n getParamString: getParamString,\n template: template,\n isArray: isArray,\n indexOf: indexOf,\n emptyImageUrl: emptyImageUrl,\n requestFn: requestFn,\n cancelFn: cancelFn,\n requestAnimFrame: requestAnimFrame,\n cancelAnimFrame: cancelAnimFrame\n };\n\n // @class Class\r\n // @aka L.Class\r\n\r\n // @section\r\n // @uninheritable\r\n\r\n // Thanks to John Resig and Dean Edwards for inspiration!\r\n\r\n function Class() {}\r\n\r\n Class.extend = function (props) {\r\n\r\n \t// @function extend(props: Object): Function\r\n \t// [Extends the current class](#class-inheritance) given the properties to be included.\r\n \t// Returns a Javascript function that is a class constructor (to be called with `new`).\r\n \tvar NewClass = function () {\r\n\r\n \t\tsetOptions(this);\r\n\r\n \t\t// call the constructor\r\n \t\tif (this.initialize) {\r\n \t\t\tthis.initialize.apply(this, arguments);\r\n \t\t}\r\n\r\n \t\t// call all constructor hooks\r\n \t\tthis.callInitHooks();\r\n \t};\r\n\r\n \tvar parentProto = NewClass.__super__ = this.prototype;\r\n\r\n \tvar proto = create$2(parentProto);\r\n \tproto.constructor = NewClass;\r\n\r\n \tNewClass.prototype = proto;\r\n\r\n \t// inherit parent's statics\r\n \tfor (var i in this) {\r\n \t\tif (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') {\r\n \t\t\tNewClass[i] = this[i];\r\n \t\t}\r\n \t}\r\n\r\n \t// mix static properties into the class\r\n \tif (props.statics) {\r\n \t\textend(NewClass, props.statics);\r\n \t}\r\n\r\n \t// mix includes into the prototype\r\n \tif (props.includes) {\r\n \t\tcheckDeprecatedMixinEvents(props.includes);\r\n \t\textend.apply(null, [proto].concat(props.includes));\r\n \t}\r\n\r\n \t// mix given properties into the prototype\r\n \textend(proto, props);\r\n \tdelete proto.statics;\r\n \tdelete proto.includes;\r\n\r\n \t// merge options\r\n \tif (proto.options) {\r\n \t\tproto.options = parentProto.options ? create$2(parentProto.options) : {};\r\n \t\textend(proto.options, props.options);\r\n \t}\r\n\r\n \tproto._initHooks = [];\r\n\r\n \t// add method for calling all hooks\r\n \tproto.callInitHooks = function () {\r\n\r\n \t\tif (this._initHooksCalled) { return; }\r\n\r\n \t\tif (parentProto.callInitHooks) {\r\n \t\t\tparentProto.callInitHooks.call(this);\r\n \t\t}\r\n\r\n \t\tthis._initHooksCalled = true;\r\n\r\n \t\tfor (var i = 0, len = proto._initHooks.length; i < len; i++) {\r\n \t\t\tproto._initHooks[i].call(this);\r\n \t\t}\r\n \t};\r\n\r\n \treturn NewClass;\r\n };\r\n\r\n\r\n // @function include(properties: Object): this\r\n // [Includes a mixin](#class-includes) into the current class.\r\n Class.include = function (props) {\r\n \tvar parentOptions = this.prototype.options;\r\n \textend(this.prototype, props);\r\n \tif (props.options) {\r\n \t\tthis.prototype.options = parentOptions;\r\n \t\tthis.mergeOptions(props.options);\r\n \t}\r\n \treturn this;\r\n };\r\n\r\n // @function mergeOptions(options: Object): this\r\n // [Merges `options`](#class-options) into the defaults of the class.\r\n Class.mergeOptions = function (options) {\r\n \textend(this.prototype.options, options);\r\n \treturn this;\r\n };\r\n\r\n // @function addInitHook(fn: Function): this\r\n // Adds a [constructor hook](#class-constructor-hooks) to the class.\r\n Class.addInitHook = function (fn) { // (Function) || (String, args...)\r\n \tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n \tvar init = typeof fn === 'function' ? fn : function () {\r\n \t\tthis[fn].apply(this, args);\r\n \t};\r\n\r\n \tthis.prototype._initHooks = this.prototype._initHooks || [];\r\n \tthis.prototype._initHooks.push(init);\r\n \treturn this;\r\n };\r\n\r\n function checkDeprecatedMixinEvents(includes) {\r\n \t/* global L: true */\r\n \tif (typeof L === 'undefined' || !L || !L.Mixin) { return; }\r\n\r\n \tincludes = isArray(includes) ? includes : [includes];\r\n\r\n \tfor (var i = 0; i < includes.length; i++) {\r\n \t\tif (includes[i] === L.Mixin.Events) {\r\n \t\t\tconsole.warn('Deprecated include of L.Mixin.Events: ' +\r\n \t\t\t\t'this property will be removed in future releases, ' +\r\n \t\t\t\t'please inherit from L.Evented instead.', new Error().stack);\r\n \t\t}\r\n \t}\r\n }\n\n /*\r\n * @class Evented\r\n * @aka L.Evented\r\n * @inherits Class\r\n *\r\n * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * map.on('click', function(e) {\r\n * \talert(e.latlng);\r\n * } );\r\n * ```\r\n *\r\n * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:\r\n *\r\n * ```js\r\n * function onClick(e) { ... }\r\n *\r\n * map.on('click', onClick);\r\n * map.off('click', onClick);\r\n * ```\r\n */\r\n\r\n var Events = {\r\n \t/* @method on(type: String, fn: Function, context?: Object): this\r\n \t * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).\r\n \t *\r\n \t * @alternative\r\n \t * @method on(eventMap: Object): this\r\n \t * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n \t */\r\n \ton: function (types, fn, context) {\r\n\r\n \t\t// types can be a map of types/handlers\r\n \t\tif (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\t// we don't process space-separated events here for performance;\r\n \t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n \t\t\t\tthis._on(type, types[type], fn);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\t// types can be a string of space-separated words\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tthis._on(types[i], fn, context);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t/* @method off(type: String, fn?: Function, context?: Object): this\r\n \t * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.\r\n \t *\r\n \t * @alternative\r\n \t * @method off(eventMap: Object): this\r\n \t * Removes a set of type/listener pairs.\r\n \t *\r\n \t * @alternative\r\n \t * @method off: this\r\n \t * Removes all listeners to all events on the object. This includes implicitly attached events.\r\n \t */\r\n \toff: function (types, fn, context) {\r\n\r\n \t\tif (!arguments.length) {\r\n \t\t\t// clear all listeners if called without arguments\r\n \t\t\tdelete this._events;\r\n\r\n \t\t} else if (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\tthis._off(type, types[type], fn);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tvar removeAll = arguments.length === 1;\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tif (removeAll) {\r\n \t\t\t\t\tthis._off(types[i]);\r\n \t\t\t\t} else {\r\n \t\t\t\t\tthis._off(types[i], fn, context);\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// attach listener (without syntactic sugar now)\r\n \t_on: function (type, fn, context, _once) {\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// check if fn already there\r\n \t\tif (this._listens(type, fn, context) !== false) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (context === this) {\r\n \t\t\t// Less memory footprint.\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tvar newListener = {fn: fn, ctx: context};\r\n \t\tif (_once) {\r\n \t\t\tnewListener.once = true;\r\n \t\t}\r\n\r\n \t\tthis._events = this._events || {};\r\n \t\tthis._events[type] = this._events[type] || [];\r\n \t\tthis._events[type].push(newListener);\r\n \t},\r\n\r\n \t_off: function (type, fn, context) {\r\n \t\tvar listeners,\r\n \t\t i,\r\n \t\t len;\r\n\r\n \t\tif (!this._events) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tlisteners = this._events[type];\r\n \t\tif (!listeners) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (arguments.length === 1) { // remove all\r\n \t\t\tif (this._firingCount) {\r\n \t\t\t\t// Set all removed listeners to noop\r\n \t\t\t\t// so they are not called if remove happens in fire\r\n \t\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\t\t\tlisteners[i].fn = falseFn;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\t// clear all listeners for a type if function isn't specified\r\n \t\t\tdelete this._events[type];\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tconsole.warn('wrong listener type: ' + typeof fn);\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// find fn and remove it\r\n \t\tvar index = this._listens(type, fn, context);\r\n \t\tif (index !== false) {\r\n \t\t\tvar listener = listeners[index];\r\n \t\t\tif (this._firingCount) {\r\n \t\t\t\t// set the removed listener to noop so that's not called if remove happens in fire\r\n \t\t\t\tlistener.fn = falseFn;\r\n\r\n \t\t\t\t/* copy array in case events are being fired */\r\n \t\t\t\tthis._events[type] = listeners = listeners.slice();\r\n \t\t\t}\r\n \t\t\tlisteners.splice(index, 1);\r\n \t\t}\r\n \t},\r\n\r\n \t// @method fire(type: String, data?: Object, propagate?: Boolean): this\r\n \t// Fires an event of the specified type. You can optionally provide a data\r\n \t// object — the first argument of the listener function will contain its\r\n \t// properties. The event can optionally be propagated to event parents.\r\n \tfire: function (type, data, propagate) {\r\n \t\tif (!this.listens(type, propagate)) { return this; }\r\n\r\n \t\tvar event = extend({}, data, {\r\n \t\t\ttype: type,\r\n \t\t\ttarget: this,\r\n \t\t\tsourceTarget: data && data.sourceTarget || this\r\n \t\t});\r\n\r\n \t\tif (this._events) {\r\n \t\t\tvar listeners = this._events[type];\r\n \t\t\tif (listeners) {\r\n \t\t\t\tthis._firingCount = (this._firingCount + 1) || 1;\r\n \t\t\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\t\t\tvar l = listeners[i];\r\n \t\t\t\t\t// off overwrites l.fn, so we need to copy fn to a var\r\n \t\t\t\t\tvar fn = l.fn;\r\n \t\t\t\t\tif (l.once) {\r\n \t\t\t\t\t\tthis.off(type, fn, l.ctx);\r\n \t\t\t\t\t}\r\n \t\t\t\t\tfn.call(l.ctx || this, event);\r\n \t\t\t\t}\r\n\r\n \t\t\t\tthis._firingCount--;\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (propagate) {\r\n \t\t\t// propagate the event to parents (set with addEventParent)\r\n \t\t\tthis._propagateEvent(event);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method listens(type: String, propagate?: Boolean): Boolean\r\n \t// @method listens(type: String, fn: Function, context?: Object, propagate?: Boolean): Boolean\r\n \t// Returns `true` if a particular event type has any listeners attached to it.\r\n \t// The verification can optionally be propagated, it will return `true` if parents have the listener attached to it.\r\n \tlistens: function (type, fn, context, propagate) {\r\n \t\tif (typeof type !== 'string') {\r\n \t\t\tconsole.warn('\"string\" type argument expected');\r\n \t\t}\r\n\r\n \t\t// we don't overwrite the input `fn` value, because we need to use it for propagation\r\n \t\tvar _fn = fn;\r\n \t\tif (typeof fn !== 'function') {\r\n \t\t\tpropagate = !!fn;\r\n \t\t\t_fn = undefined;\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tvar listeners = this._events && this._events[type];\r\n \t\tif (listeners && listeners.length) {\r\n \t\t\tif (this._listens(type, _fn, context) !== false) {\r\n \t\t\t\treturn true;\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (propagate) {\r\n \t\t\t// also check parents for listeners if event propagates\r\n \t\t\tfor (var id in this._eventParents) {\r\n \t\t\t\tif (this._eventParents[id].listens(type, fn, context, propagate)) { return true; }\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn false;\r\n \t},\r\n\r\n \t// returns the index (number) or false\r\n \t_listens: function (type, fn, context) {\r\n \t\tif (!this._events) {\r\n \t\t\treturn false;\r\n \t\t}\r\n\r\n \t\tvar listeners = this._events[type] || [];\r\n \t\tif (!fn) {\r\n \t\t\treturn !!listeners.length;\r\n \t\t}\r\n\r\n \t\tif (context === this) {\r\n \t\t\t// Less memory footprint.\r\n \t\t\tcontext = undefined;\r\n \t\t}\r\n\r\n \t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n \t\t\tif (listeners[i].fn === fn && listeners[i].ctx === context) {\r\n \t\t\t\treturn i;\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn false;\r\n\r\n \t},\r\n\r\n \t// @method once(…): this\r\n \t// Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed.\r\n \tonce: function (types, fn, context) {\r\n\r\n \t\t// types can be a map of types/handlers\r\n \t\tif (typeof types === 'object') {\r\n \t\t\tfor (var type in types) {\r\n \t\t\t\t// we don't process space-separated events here for performance;\r\n \t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n \t\t\t\tthis._on(type, types[type], fn, true);\r\n \t\t\t}\r\n\r\n \t\t} else {\r\n \t\t\t// types can be a string of space-separated words\r\n \t\t\ttypes = splitWords(types);\r\n\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tthis._on(types[i], fn, context, true);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method addEventParent(obj: Evented): this\r\n \t// Adds an event parent - an `Evented` that will receive propagated events\r\n \taddEventParent: function (obj) {\r\n \t\tthis._eventParents = this._eventParents || {};\r\n \t\tthis._eventParents[stamp(obj)] = obj;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method removeEventParent(obj: Evented): this\r\n \t// Removes an event parent, so it will stop receiving propagated events\r\n \tremoveEventParent: function (obj) {\r\n \t\tif (this._eventParents) {\r\n \t\t\tdelete this._eventParents[stamp(obj)];\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_propagateEvent: function (e) {\r\n \t\tfor (var id in this._eventParents) {\r\n \t\t\tthis._eventParents[id].fire(e.type, extend({\r\n \t\t\t\tlayer: e.target,\r\n \t\t\t\tpropagatedFrom: e.target\r\n \t\t\t}, e), true);\r\n \t\t}\r\n \t}\r\n };\r\n\r\n // aliases; we should ditch those eventually\r\n\r\n // @method addEventListener(…): this\r\n // Alias to [`on(…)`](#evented-on)\r\n Events.addEventListener = Events.on;\r\n\r\n // @method removeEventListener(…): this\r\n // Alias to [`off(…)`](#evented-off)\r\n\r\n // @method clearAllEventListeners(…): this\r\n // Alias to [`off()`](#evented-off)\r\n Events.removeEventListener = Events.clearAllEventListeners = Events.off;\r\n\r\n // @method addOneTimeEventListener(…): this\r\n // Alias to [`once(…)`](#evented-once)\r\n Events.addOneTimeEventListener = Events.once;\r\n\r\n // @method fireEvent(…): this\r\n // Alias to [`fire(…)`](#evented-fire)\r\n Events.fireEvent = Events.fire;\r\n\r\n // @method hasEventListeners(…): Boolean\r\n // Alias to [`listens(…)`](#evented-listens)\r\n Events.hasEventListeners = Events.listens;\r\n\r\n var Evented = Class.extend(Events);\n\n /*\r\n * @class Point\r\n * @aka L.Point\r\n *\r\n * Represents a point with `x` and `y` coordinates in pixels.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var point = L.point(200, 300);\r\n * ```\r\n *\r\n * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```js\r\n * map.panBy([200, 300]);\r\n * map.panBy(L.point(200, 300));\r\n * ```\r\n *\r\n * Note that `Point` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function Point(x, y, round) {\r\n \t// @property x: Number; The `x` coordinate of the point\r\n \tthis.x = (round ? Math.round(x) : x);\r\n \t// @property y: Number; The `y` coordinate of the point\r\n \tthis.y = (round ? Math.round(y) : y);\r\n }\r\n\r\n var trunc = Math.trunc || function (v) {\r\n \treturn v > 0 ? Math.floor(v) : Math.ceil(v);\r\n };\r\n\r\n Point.prototype = {\r\n\r\n \t// @method clone(): Point\r\n \t// Returns a copy of the current point.\r\n \tclone: function () {\r\n \t\treturn new Point(this.x, this.y);\r\n \t},\r\n\r\n \t// @method add(otherPoint: Point): Point\r\n \t// Returns the result of addition of the current and the given points.\r\n \tadd: function (point) {\r\n \t\t// non-destructive, returns a new point\r\n \t\treturn this.clone()._add(toPoint(point));\r\n \t},\r\n\r\n \t_add: function (point) {\r\n \t\t// destructive, used directly for performance in situations where it's safe to modify existing point\r\n \t\tthis.x += point.x;\r\n \t\tthis.y += point.y;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method subtract(otherPoint: Point): Point\r\n \t// Returns the result of subtraction of the given point from the current.\r\n \tsubtract: function (point) {\r\n \t\treturn this.clone()._subtract(toPoint(point));\r\n \t},\r\n\r\n \t_subtract: function (point) {\r\n \t\tthis.x -= point.x;\r\n \t\tthis.y -= point.y;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method divideBy(num: Number): Point\r\n \t// Returns the result of division of the current point by the given number.\r\n \tdivideBy: function (num) {\r\n \t\treturn this.clone()._divideBy(num);\r\n \t},\r\n\r\n \t_divideBy: function (num) {\r\n \t\tthis.x /= num;\r\n \t\tthis.y /= num;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method multiplyBy(num: Number): Point\r\n \t// Returns the result of multiplication of the current point by the given number.\r\n \tmultiplyBy: function (num) {\r\n \t\treturn this.clone()._multiplyBy(num);\r\n \t},\r\n\r\n \t_multiplyBy: function (num) {\r\n \t\tthis.x *= num;\r\n \t\tthis.y *= num;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method scaleBy(scale: Point): Point\r\n \t// Multiply each coordinate of the current point by each coordinate of\r\n \t// `scale`. In linear algebra terms, multiply the point by the\r\n \t// [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)\r\n \t// defined by `scale`.\r\n \tscaleBy: function (point) {\r\n \t\treturn new Point(this.x * point.x, this.y * point.y);\r\n \t},\r\n\r\n \t// @method unscaleBy(scale: Point): Point\r\n \t// Inverse of `scaleBy`. Divide each coordinate of the current point by\r\n \t// each coordinate of `scale`.\r\n \tunscaleBy: function (point) {\r\n \t\treturn new Point(this.x / point.x, this.y / point.y);\r\n \t},\r\n\r\n \t// @method round(): Point\r\n \t// Returns a copy of the current point with rounded coordinates.\r\n \tround: function () {\r\n \t\treturn this.clone()._round();\r\n \t},\r\n\r\n \t_round: function () {\r\n \t\tthis.x = Math.round(this.x);\r\n \t\tthis.y = Math.round(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method floor(): Point\r\n \t// Returns a copy of the current point with floored coordinates (rounded down).\r\n \tfloor: function () {\r\n \t\treturn this.clone()._floor();\r\n \t},\r\n\r\n \t_floor: function () {\r\n \t\tthis.x = Math.floor(this.x);\r\n \t\tthis.y = Math.floor(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method ceil(): Point\r\n \t// Returns a copy of the current point with ceiled coordinates (rounded up).\r\n \tceil: function () {\r\n \t\treturn this.clone()._ceil();\r\n \t},\r\n\r\n \t_ceil: function () {\r\n \t\tthis.x = Math.ceil(this.x);\r\n \t\tthis.y = Math.ceil(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method trunc(): Point\r\n \t// Returns a copy of the current point with truncated coordinates (rounded towards zero).\r\n \ttrunc: function () {\r\n \t\treturn this.clone()._trunc();\r\n \t},\r\n\r\n \t_trunc: function () {\r\n \t\tthis.x = trunc(this.x);\r\n \t\tthis.y = trunc(this.y);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method distanceTo(otherPoint: Point): Number\r\n \t// Returns the cartesian distance between the current and the given points.\r\n \tdistanceTo: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\tvar x = point.x - this.x,\r\n \t\t y = point.y - this.y;\r\n\r\n \t\treturn Math.sqrt(x * x + y * y);\r\n \t},\r\n\r\n \t// @method equals(otherPoint: Point): Boolean\r\n \t// Returns `true` if the given point has the same coordinates.\r\n \tequals: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\treturn point.x === this.x &&\r\n \t\t point.y === this.y;\r\n \t},\r\n\r\n \t// @method contains(otherPoint: Point): Boolean\r\n \t// Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).\r\n \tcontains: function (point) {\r\n \t\tpoint = toPoint(point);\r\n\r\n \t\treturn Math.abs(point.x) <= Math.abs(this.x) &&\r\n \t\t Math.abs(point.y) <= Math.abs(this.y);\r\n \t},\r\n\r\n \t// @method toString(): String\r\n \t// Returns a string representation of the point for debugging purposes.\r\n \ttoString: function () {\r\n \t\treturn 'Point(' +\r\n \t\t formatNum(this.x) + ', ' +\r\n \t\t formatNum(this.y) + ')';\r\n \t}\r\n };\r\n\r\n // @factory L.point(x: Number, y: Number, round?: Boolean)\r\n // Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.\r\n\r\n // @alternative\r\n // @factory L.point(coords: Number[])\r\n // Expects an array of the form `[x, y]` instead.\r\n\r\n // @alternative\r\n // @factory L.point(coords: Object)\r\n // Expects a plain object of the form `{x: Number, y: Number}` instead.\r\n function toPoint(x, y, round) {\r\n \tif (x instanceof Point) {\r\n \t\treturn x;\r\n \t}\r\n \tif (isArray(x)) {\r\n \t\treturn new Point(x[0], x[1]);\r\n \t}\r\n \tif (x === undefined || x === null) {\r\n \t\treturn x;\r\n \t}\r\n \tif (typeof x === 'object' && 'x' in x && 'y' in x) {\r\n \t\treturn new Point(x.x, x.y);\r\n \t}\r\n \treturn new Point(x, y, round);\r\n }\n\n /*\r\n * @class Bounds\r\n * @aka L.Bounds\r\n *\r\n * Represents a rectangular area in pixel coordinates.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var p1 = L.point(10, 10),\r\n * p2 = L.point(40, 60),\r\n * bounds = L.bounds(p1, p2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * otherBounds.intersects([[10, 10], [40, 60]]);\r\n * ```\r\n *\r\n * Note that `Bounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function Bounds(a, b) {\r\n \tif (!a) { return; }\r\n\r\n \tvar points = b ? [a, b] : a;\r\n\r\n \tfor (var i = 0, len = points.length; i < len; i++) {\r\n \t\tthis.extend(points[i]);\r\n \t}\r\n }\r\n\r\n Bounds.prototype = {\r\n \t// @method extend(point: Point): this\r\n \t// Extends the bounds to contain the given point.\r\n\r\n \t// @alternative\r\n \t// @method extend(otherBounds: Bounds): this\r\n \t// Extend the bounds to contain the given bounds\r\n \textend: function (obj) {\r\n \t\tvar min2, max2;\r\n \t\tif (!obj) { return this; }\r\n\r\n \t\tif (obj instanceof Point || typeof obj[0] === 'number' || 'x' in obj) {\r\n \t\t\tmin2 = max2 = toPoint(obj);\r\n \t\t} else {\r\n \t\t\tobj = toBounds(obj);\r\n \t\t\tmin2 = obj.min;\r\n \t\t\tmax2 = obj.max;\r\n\r\n \t\t\tif (!min2 || !max2) { return this; }\r\n \t\t}\r\n\r\n \t\t// @property min: Point\r\n \t\t// The top left corner of the rectangle.\r\n \t\t// @property max: Point\r\n \t\t// The bottom right corner of the rectangle.\r\n \t\tif (!this.min && !this.max) {\r\n \t\t\tthis.min = min2.clone();\r\n \t\t\tthis.max = max2.clone();\r\n \t\t} else {\r\n \t\t\tthis.min.x = Math.min(min2.x, this.min.x);\r\n \t\t\tthis.max.x = Math.max(max2.x, this.max.x);\r\n \t\t\tthis.min.y = Math.min(min2.y, this.min.y);\r\n \t\t\tthis.max.y = Math.max(max2.y, this.max.y);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method getCenter(round?: Boolean): Point\r\n \t// Returns the center point of the bounds.\r\n \tgetCenter: function (round) {\r\n \t\treturn toPoint(\r\n \t\t (this.min.x + this.max.x) / 2,\r\n \t\t (this.min.y + this.max.y) / 2, round);\r\n \t},\r\n\r\n \t// @method getBottomLeft(): Point\r\n \t// Returns the bottom-left point of the bounds.\r\n \tgetBottomLeft: function () {\r\n \t\treturn toPoint(this.min.x, this.max.y);\r\n \t},\r\n\r\n \t// @method getTopRight(): Point\r\n \t// Returns the top-right point of the bounds.\r\n \tgetTopRight: function () { // -> Point\r\n \t\treturn toPoint(this.max.x, this.min.y);\r\n \t},\r\n\r\n \t// @method getTopLeft(): Point\r\n \t// Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).\r\n \tgetTopLeft: function () {\r\n \t\treturn this.min; // left, top\r\n \t},\r\n\r\n \t// @method getBottomRight(): Point\r\n \t// Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).\r\n \tgetBottomRight: function () {\r\n \t\treturn this.max; // right, bottom\r\n \t},\r\n\r\n \t// @method getSize(): Point\r\n \t// Returns the size of the given bounds\r\n \tgetSize: function () {\r\n \t\treturn this.max.subtract(this.min);\r\n \t},\r\n\r\n \t// @method contains(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle contains the given one.\r\n \t// @alternative\r\n \t// @method contains(point: Point): Boolean\r\n \t// Returns `true` if the rectangle contains the given point.\r\n \tcontains: function (obj) {\r\n \t\tvar min, max;\r\n\r\n \t\tif (typeof obj[0] === 'number' || obj instanceof Point) {\r\n \t\t\tobj = toPoint(obj);\r\n \t\t} else {\r\n \t\t\tobj = toBounds(obj);\r\n \t\t}\r\n\r\n \t\tif (obj instanceof Bounds) {\r\n \t\t\tmin = obj.min;\r\n \t\t\tmax = obj.max;\r\n \t\t} else {\r\n \t\t\tmin = max = obj;\r\n \t\t}\r\n\r\n \t\treturn (min.x >= this.min.x) &&\r\n \t\t (max.x <= this.max.x) &&\r\n \t\t (min.y >= this.min.y) &&\r\n \t\t (max.y <= this.max.y);\r\n \t},\r\n\r\n \t// @method intersects(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle intersects the given bounds. Two bounds\r\n \t// intersect if they have at least one point in common.\r\n \tintersects: function (bounds) { // (Bounds) -> Boolean\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\tvar min = this.min,\r\n \t\t max = this.max,\r\n \t\t min2 = bounds.min,\r\n \t\t max2 = bounds.max,\r\n \t\t xIntersects = (max2.x >= min.x) && (min2.x <= max.x),\r\n \t\t yIntersects = (max2.y >= min.y) && (min2.y <= max.y);\r\n\r\n \t\treturn xIntersects && yIntersects;\r\n \t},\r\n\r\n \t// @method overlaps(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle overlaps the given bounds. Two bounds\r\n \t// overlap if their intersection is an area.\r\n \toverlaps: function (bounds) { // (Bounds) -> Boolean\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\tvar min = this.min,\r\n \t\t max = this.max,\r\n \t\t min2 = bounds.min,\r\n \t\t max2 = bounds.max,\r\n \t\t xOverlaps = (max2.x > min.x) && (min2.x < max.x),\r\n \t\t yOverlaps = (max2.y > min.y) && (min2.y < max.y);\r\n\r\n \t\treturn xOverlaps && yOverlaps;\r\n \t},\r\n\r\n \t// @method isValid(): Boolean\r\n \t// Returns `true` if the bounds are properly initialized.\r\n \tisValid: function () {\r\n \t\treturn !!(this.min && this.max);\r\n \t},\r\n\r\n\r\n \t// @method pad(bufferRatio: Number): Bounds\r\n \t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n \t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n \t// Negative values will retract the bounds.\r\n \tpad: function (bufferRatio) {\r\n \t\tvar min = this.min,\r\n \t\tmax = this.max,\r\n \t\theightBuffer = Math.abs(min.x - max.x) * bufferRatio,\r\n \t\twidthBuffer = Math.abs(min.y - max.y) * bufferRatio;\r\n\r\n\r\n \t\treturn toBounds(\r\n \t\t\ttoPoint(min.x - heightBuffer, min.y - widthBuffer),\r\n \t\t\ttoPoint(max.x + heightBuffer, max.y + widthBuffer));\r\n \t},\r\n\r\n\r\n \t// @method equals(otherBounds: Bounds): Boolean\r\n \t// Returns `true` if the rectangle is equivalent to the given bounds.\r\n \tequals: function (bounds) {\r\n \t\tif (!bounds) { return false; }\r\n\r\n \t\tbounds = toBounds(bounds);\r\n\r\n \t\treturn this.min.equals(bounds.getTopLeft()) &&\r\n \t\t\tthis.max.equals(bounds.getBottomRight());\r\n \t},\r\n };\r\n\r\n\r\n // @factory L.bounds(corner1: Point, corner2: Point)\r\n // Creates a Bounds object from two corners coordinate pairs.\r\n // @alternative\r\n // @factory L.bounds(points: Point[])\r\n // Creates a Bounds object from the given array of points.\r\n function toBounds(a, b) {\r\n \tif (!a || a instanceof Bounds) {\r\n \t\treturn a;\r\n \t}\r\n \treturn new Bounds(a, b);\r\n }\n\n /*\r\n * @class LatLngBounds\r\n * @aka L.LatLngBounds\r\n *\r\n * Represents a rectangular geographical area on a map.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var corner1 = L.latLng(40.712, -74.227),\r\n * corner2 = L.latLng(40.774, -74.125),\r\n * bounds = L.latLngBounds(corner1, corner2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * map.fitBounds([\r\n * \t[40.712, -74.227],\r\n * \t[40.774, -74.125]\r\n * ]);\r\n * ```\r\n *\r\n * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.\r\n *\r\n * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[])\r\n \tif (!corner1) { return; }\r\n\r\n \tvar latlngs = corner2 ? [corner1, corner2] : corner1;\r\n\r\n \tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n \t\tthis.extend(latlngs[i]);\r\n \t}\r\n }\r\n\r\n LatLngBounds.prototype = {\r\n\r\n \t// @method extend(latlng: LatLng): this\r\n \t// Extend the bounds to contain the given point\r\n\r\n \t// @alternative\r\n \t// @method extend(otherBounds: LatLngBounds): this\r\n \t// Extend the bounds to contain the given bounds\r\n \textend: function (obj) {\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2, ne2;\r\n\r\n \t\tif (obj instanceof LatLng) {\r\n \t\t\tsw2 = obj;\r\n \t\t\tne2 = obj;\r\n\r\n \t\t} else if (obj instanceof LatLngBounds) {\r\n \t\t\tsw2 = obj._southWest;\r\n \t\t\tne2 = obj._northEast;\r\n\r\n \t\t\tif (!sw2 || !ne2) { return this; }\r\n\r\n \t\t} else {\r\n \t\t\treturn obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;\r\n \t\t}\r\n\r\n \t\tif (!sw && !ne) {\r\n \t\t\tthis._southWest = new LatLng(sw2.lat, sw2.lng);\r\n \t\t\tthis._northEast = new LatLng(ne2.lat, ne2.lng);\r\n \t\t} else {\r\n \t\t\tsw.lat = Math.min(sw2.lat, sw.lat);\r\n \t\t\tsw.lng = Math.min(sw2.lng, sw.lng);\r\n \t\t\tne.lat = Math.max(ne2.lat, ne.lat);\r\n \t\t\tne.lng = Math.max(ne2.lng, ne.lng);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method pad(bufferRatio: Number): LatLngBounds\r\n \t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n \t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n \t// Negative values will retract the bounds.\r\n \tpad: function (bufferRatio) {\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,\r\n \t\t widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;\r\n\r\n \t\treturn new LatLngBounds(\r\n \t\t new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer),\r\n \t\t new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));\r\n \t},\r\n\r\n \t// @method getCenter(): LatLng\r\n \t// Returns the center point of the bounds.\r\n \tgetCenter: function () {\r\n \t\treturn new LatLng(\r\n \t\t (this._southWest.lat + this._northEast.lat) / 2,\r\n \t\t (this._southWest.lng + this._northEast.lng) / 2);\r\n \t},\r\n\r\n \t// @method getSouthWest(): LatLng\r\n \t// Returns the south-west point of the bounds.\r\n \tgetSouthWest: function () {\r\n \t\treturn this._southWest;\r\n \t},\r\n\r\n \t// @method getNorthEast(): LatLng\r\n \t// Returns the north-east point of the bounds.\r\n \tgetNorthEast: function () {\r\n \t\treturn this._northEast;\r\n \t},\r\n\r\n \t// @method getNorthWest(): LatLng\r\n \t// Returns the north-west point of the bounds.\r\n \tgetNorthWest: function () {\r\n \t\treturn new LatLng(this.getNorth(), this.getWest());\r\n \t},\r\n\r\n \t// @method getSouthEast(): LatLng\r\n \t// Returns the south-east point of the bounds.\r\n \tgetSouthEast: function () {\r\n \t\treturn new LatLng(this.getSouth(), this.getEast());\r\n \t},\r\n\r\n \t// @method getWest(): Number\r\n \t// Returns the west longitude of the bounds\r\n \tgetWest: function () {\r\n \t\treturn this._southWest.lng;\r\n \t},\r\n\r\n \t// @method getSouth(): Number\r\n \t// Returns the south latitude of the bounds\r\n \tgetSouth: function () {\r\n \t\treturn this._southWest.lat;\r\n \t},\r\n\r\n \t// @method getEast(): Number\r\n \t// Returns the east longitude of the bounds\r\n \tgetEast: function () {\r\n \t\treturn this._northEast.lng;\r\n \t},\r\n\r\n \t// @method getNorth(): Number\r\n \t// Returns the north latitude of the bounds\r\n \tgetNorth: function () {\r\n \t\treturn this._northEast.lat;\r\n \t},\r\n\r\n \t// @method contains(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle contains the given one.\r\n\r\n \t// @alternative\r\n \t// @method contains (latlng: LatLng): Boolean\r\n \t// Returns `true` if the rectangle contains the given point.\r\n \tcontains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean\r\n \t\tif (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {\r\n \t\t\tobj = toLatLng(obj);\r\n \t\t} else {\r\n \t\t\tobj = toLatLngBounds(obj);\r\n \t\t}\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2, ne2;\r\n\r\n \t\tif (obj instanceof LatLngBounds) {\r\n \t\t\tsw2 = obj.getSouthWest();\r\n \t\t\tne2 = obj.getNorthEast();\r\n \t\t} else {\r\n \t\t\tsw2 = ne2 = obj;\r\n \t\t}\r\n\r\n \t\treturn (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) &&\r\n \t\t (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng);\r\n \t},\r\n\r\n \t// @method intersects(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.\r\n \tintersects: function (bounds) {\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2 = bounds.getSouthWest(),\r\n \t\t ne2 = bounds.getNorthEast(),\r\n\r\n \t\t latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat),\r\n \t\t lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng);\r\n\r\n \t\treturn latIntersects && lngIntersects;\r\n \t},\r\n\r\n \t// @method overlaps(otherBounds: LatLngBounds): Boolean\r\n \t// Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.\r\n \toverlaps: function (bounds) {\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\tvar sw = this._southWest,\r\n \t\t ne = this._northEast,\r\n \t\t sw2 = bounds.getSouthWest(),\r\n \t\t ne2 = bounds.getNorthEast(),\r\n\r\n \t\t latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat),\r\n \t\t lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng);\r\n\r\n \t\treturn latOverlaps && lngOverlaps;\r\n \t},\r\n\r\n \t// @method toBBoxString(): String\r\n \t// Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.\r\n \ttoBBoxString: function () {\r\n \t\treturn [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');\r\n \t},\r\n\r\n \t// @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean\r\n \t// Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.\r\n \tequals: function (bounds, maxMargin) {\r\n \t\tif (!bounds) { return false; }\r\n\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\treturn this._southWest.equals(bounds.getSouthWest(), maxMargin) &&\r\n \t\t this._northEast.equals(bounds.getNorthEast(), maxMargin);\r\n \t},\r\n\r\n \t// @method isValid(): Boolean\r\n \t// Returns `true` if the bounds are properly initialized.\r\n \tisValid: function () {\r\n \t\treturn !!(this._southWest && this._northEast);\r\n \t}\r\n };\r\n\r\n // TODO International date line?\r\n\r\n // @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)\r\n // Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.\r\n\r\n // @alternative\r\n // @factory L.latLngBounds(latlngs: LatLng[])\r\n // Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).\r\n function toLatLngBounds(a, b) {\r\n \tif (a instanceof LatLngBounds) {\r\n \t\treturn a;\r\n \t}\r\n \treturn new LatLngBounds(a, b);\r\n }\n\n /* @class LatLng\r\n * @aka L.LatLng\r\n *\r\n * Represents a geographical point with a certain latitude and longitude.\r\n *\r\n * @example\r\n *\r\n * ```\r\n * var latlng = L.latLng(50.5, 30.5);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```\r\n * map.panTo([50, 30]);\r\n * map.panTo({lon: 30, lat: 50});\r\n * map.panTo({lat: 50, lng: 30});\r\n * map.panTo(L.latLng(50, 30));\r\n * ```\r\n *\r\n * Note that `LatLng` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\n function LatLng(lat, lng, alt) {\r\n \tif (isNaN(lat) || isNaN(lng)) {\r\n \t\tthrow new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\r\n \t}\r\n\r\n \t// @property lat: Number\r\n \t// Latitude in degrees\r\n \tthis.lat = +lat;\r\n\r\n \t// @property lng: Number\r\n \t// Longitude in degrees\r\n \tthis.lng = +lng;\r\n\r\n \t// @property alt: Number\r\n \t// Altitude in meters (optional)\r\n \tif (alt !== undefined) {\r\n \t\tthis.alt = +alt;\r\n \t}\r\n }\r\n\r\n LatLng.prototype = {\r\n \t// @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean\r\n \t// Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.\r\n \tequals: function (obj, maxMargin) {\r\n \t\tif (!obj) { return false; }\r\n\r\n \t\tobj = toLatLng(obj);\r\n\r\n \t\tvar margin = Math.max(\r\n \t\t Math.abs(this.lat - obj.lat),\r\n \t\t Math.abs(this.lng - obj.lng));\r\n\r\n \t\treturn margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);\r\n \t},\r\n\r\n \t// @method toString(): String\r\n \t// Returns a string representation of the point (for debugging purposes).\r\n \ttoString: function (precision) {\r\n \t\treturn 'LatLng(' +\r\n \t\t formatNum(this.lat, precision) + ', ' +\r\n \t\t formatNum(this.lng, precision) + ')';\r\n \t},\r\n\r\n \t// @method distanceTo(otherLatLng: LatLng): Number\r\n \t// Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).\r\n \tdistanceTo: function (other) {\r\n \t\treturn Earth.distance(this, toLatLng(other));\r\n \t},\r\n\r\n \t// @method wrap(): LatLng\r\n \t// Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.\r\n \twrap: function () {\r\n \t\treturn Earth.wrapLatLng(this);\r\n \t},\r\n\r\n \t// @method toBounds(sizeInMeters: Number): LatLngBounds\r\n \t// Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.\r\n \ttoBounds: function (sizeInMeters) {\r\n \t\tvar latAccuracy = 180 * sizeInMeters / 40075017,\r\n \t\t lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\r\n\r\n \t\treturn toLatLngBounds(\r\n \t\t [this.lat - latAccuracy, this.lng - lngAccuracy],\r\n \t\t [this.lat + latAccuracy, this.lng + lngAccuracy]);\r\n \t},\r\n\r\n \tclone: function () {\r\n \t\treturn new LatLng(this.lat, this.lng, this.alt);\r\n \t}\r\n };\r\n\r\n\r\n\r\n // @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng\r\n // Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).\r\n\r\n // @alternative\r\n // @factory L.latLng(coords: Array): LatLng\r\n // Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.\r\n\r\n // @alternative\r\n // @factory L.latLng(coords: Object): LatLng\r\n // Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.\r\n\r\n function toLatLng(a, b, c) {\r\n \tif (a instanceof LatLng) {\r\n \t\treturn a;\r\n \t}\r\n \tif (isArray(a) && typeof a[0] !== 'object') {\r\n \t\tif (a.length === 3) {\r\n \t\t\treturn new LatLng(a[0], a[1], a[2]);\r\n \t\t}\r\n \t\tif (a.length === 2) {\r\n \t\t\treturn new LatLng(a[0], a[1]);\r\n \t\t}\r\n \t\treturn null;\r\n \t}\r\n \tif (a === undefined || a === null) {\r\n \t\treturn a;\r\n \t}\r\n \tif (typeof a === 'object' && 'lat' in a) {\r\n \t\treturn new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);\r\n \t}\r\n \tif (b === undefined) {\r\n \t\treturn null;\r\n \t}\r\n \treturn new LatLng(a, b, c);\r\n }\n\n /*\r\n * @namespace CRS\r\n * @crs L.CRS.Base\r\n * Object that defines coordinate reference systems for projecting\r\n * geographical points into pixel (screen) coordinates and back (and to\r\n * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See\r\n * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system).\r\n *\r\n * Leaflet defines the most usual CRSs by default. If you want to use a\r\n * CRS not defined by default, take a look at the\r\n * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.\r\n *\r\n * Note that the CRS instances do not inherit from Leaflet's `Class` object,\r\n * and can't be instantiated. Also, new classes can't inherit from them,\r\n * and methods can't be added to them with the `include` function.\r\n */\r\n\r\n var CRS = {\r\n \t// @method latLngToPoint(latlng: LatLng, zoom: Number): Point\r\n \t// Projects geographical coordinates into pixel coordinates for a given zoom.\r\n \tlatLngToPoint: function (latlng, zoom) {\r\n \t\tvar projectedPoint = this.projection.project(latlng),\r\n \t\t scale = this.scale(zoom);\r\n\r\n \t\treturn this.transformation._transform(projectedPoint, scale);\r\n \t},\r\n\r\n \t// @method pointToLatLng(point: Point, zoom: Number): LatLng\r\n \t// The inverse of `latLngToPoint`. Projects pixel coordinates on a given\r\n \t// zoom into geographical coordinates.\r\n \tpointToLatLng: function (point, zoom) {\r\n \t\tvar scale = this.scale(zoom),\r\n \t\t untransformedPoint = this.transformation.untransform(point, scale);\r\n\r\n \t\treturn this.projection.unproject(untransformedPoint);\r\n \t},\r\n\r\n \t// @method project(latlng: LatLng): Point\r\n \t// Projects geographical coordinates into coordinates in units accepted for\r\n \t// this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).\r\n \tproject: function (latlng) {\r\n \t\treturn this.projection.project(latlng);\r\n \t},\r\n\r\n \t// @method unproject(point: Point): LatLng\r\n \t// Given a projected coordinate returns the corresponding LatLng.\r\n \t// The inverse of `project`.\r\n \tunproject: function (point) {\r\n \t\treturn this.projection.unproject(point);\r\n \t},\r\n\r\n \t// @method scale(zoom: Number): Number\r\n \t// Returns the scale used when transforming projected coordinates into\r\n \t// pixel coordinates for a particular zoom. For example, it returns\r\n \t// `256 * 2^zoom` for Mercator-based CRS.\r\n \tscale: function (zoom) {\r\n \t\treturn 256 * Math.pow(2, zoom);\r\n \t},\r\n\r\n \t// @method zoom(scale: Number): Number\r\n \t// Inverse of `scale()`, returns the zoom level corresponding to a scale\r\n \t// factor of `scale`.\r\n \tzoom: function (scale) {\r\n \t\treturn Math.log(scale / 256) / Math.LN2;\r\n \t},\r\n\r\n \t// @method getProjectedBounds(zoom: Number): Bounds\r\n \t// Returns the projection's bounds scaled and transformed for the provided `zoom`.\r\n \tgetProjectedBounds: function (zoom) {\r\n \t\tif (this.infinite) { return null; }\r\n\r\n \t\tvar b = this.projection.bounds,\r\n \t\t s = this.scale(zoom),\r\n \t\t min = this.transformation.transform(b.min, s),\r\n \t\t max = this.transformation.transform(b.max, s);\r\n\r\n \t\treturn new Bounds(min, max);\r\n \t},\r\n\r\n \t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n \t// Returns the distance between two geographical coordinates.\r\n\r\n \t// @property code: String\r\n \t// Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)\r\n \t//\r\n \t// @property wrapLng: Number[]\r\n \t// An array of two numbers defining whether the longitude (horizontal) coordinate\r\n \t// axis wraps around a given range and how. Defaults to `[-180, 180]` in most\r\n \t// geographical CRSs. If `undefined`, the longitude axis does not wrap around.\r\n \t//\r\n \t// @property wrapLat: Number[]\r\n \t// Like `wrapLng`, but for the latitude (vertical) axis.\r\n\r\n \t// wrapLng: [min, max],\r\n \t// wrapLat: [min, max],\r\n\r\n \t// @property infinite: Boolean\r\n \t// If true, the coordinate space will be unbounded (infinite in both axes)\r\n \tinfinite: false,\r\n\r\n \t// @method wrapLatLng(latlng: LatLng): LatLng\r\n \t// Returns a `LatLng` where lat and lng has been wrapped according to the\r\n \t// CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.\r\n \twrapLatLng: function (latlng) {\r\n \t\tvar lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,\r\n \t\t lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,\r\n \t\t alt = latlng.alt;\r\n\r\n \t\treturn new LatLng(lat, lng, alt);\r\n \t},\r\n\r\n \t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n \t// Returns a `LatLngBounds` with the same size as the given one, ensuring\r\n \t// that its center is within the CRS's bounds.\r\n \t// Only accepts actual `L.LatLngBounds` instances, not arrays.\r\n \twrapLatLngBounds: function (bounds) {\r\n \t\tvar center = bounds.getCenter(),\r\n \t\t newCenter = this.wrapLatLng(center),\r\n \t\t latShift = center.lat - newCenter.lat,\r\n \t\t lngShift = center.lng - newCenter.lng;\r\n\r\n \t\tif (latShift === 0 && lngShift === 0) {\r\n \t\t\treturn bounds;\r\n \t\t}\r\n\r\n \t\tvar sw = bounds.getSouthWest(),\r\n \t\t ne = bounds.getNorthEast(),\r\n \t\t newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),\r\n \t\t newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);\r\n\r\n \t\treturn new LatLngBounds(newSw, newNe);\r\n \t}\r\n };\n\n /*\n * @namespace CRS\n * @crs L.CRS.Earth\n *\n * Serves as the base for CRS that are global such that they cover the earth.\n * Can only be used as the base for other CRS and cannot be used directly,\n * since it does not have a `code`, `projection` or `transformation`. `distance()` returns\n * meters.\n */\n\n var Earth = extend({}, CRS, {\n \twrapLng: [-180, 180],\n\n \t// Mean Earth Radius, as recommended for use by\n \t// the International Union of Geodesy and Geophysics,\n \t// see https://rosettacode.org/wiki/Haversine_formula\n \tR: 6371000,\n\n \t// distance between two geographical points using spherical law of cosines approximation\n \tdistance: function (latlng1, latlng2) {\n \t\tvar rad = Math.PI / 180,\n \t\t lat1 = latlng1.lat * rad,\n \t\t lat2 = latlng2.lat * rad,\n \t\t sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),\n \t\t sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),\n \t\t a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,\n \t\t c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n \t\treturn this.R * c;\n \t}\n });\n\n /*\r\n * @namespace Projection\r\n * @projection L.Projection.SphericalMercator\r\n *\r\n * Spherical Mercator projection — the most common projection for online maps,\r\n * used by almost all free and commercial tile providers. Assumes that Earth is\r\n * a sphere. Used by the `EPSG:3857` CRS.\r\n */\r\n\r\n var earthRadius = 6378137;\r\n\r\n var SphericalMercator = {\r\n\r\n \tR: earthRadius,\r\n \tMAX_LATITUDE: 85.0511287798,\r\n\r\n \tproject: function (latlng) {\r\n \t\tvar d = Math.PI / 180,\r\n \t\t max = this.MAX_LATITUDE,\r\n \t\t lat = Math.max(Math.min(max, latlng.lat), -max),\r\n \t\t sin = Math.sin(lat * d);\r\n\r\n \t\treturn new Point(\r\n \t\t\tthis.R * latlng.lng * d,\r\n \t\t\tthis.R * Math.log((1 + sin) / (1 - sin)) / 2);\r\n \t},\r\n\r\n \tunproject: function (point) {\r\n \t\tvar d = 180 / Math.PI;\r\n\r\n \t\treturn new LatLng(\r\n \t\t\t(2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d,\r\n \t\t\tpoint.x * d / this.R);\r\n \t},\r\n\r\n \tbounds: (function () {\r\n \t\tvar d = earthRadius * Math.PI;\r\n \t\treturn new Bounds([-d, -d], [d, d]);\r\n \t})()\r\n };\n\n /*\r\n * @class Transformation\r\n * @aka L.Transformation\r\n *\r\n * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`\r\n * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing\r\n * the reverse. Used by Leaflet in its projections code.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var transformation = L.transformation(2, 5, -1, 10),\r\n * \tp = L.point(1, 2),\r\n * \tp2 = transformation.transform(p), // L.point(7, 8)\r\n * \tp3 = transformation.untransform(p2); // L.point(1, 2)\r\n * ```\r\n */\r\n\r\n\r\n // factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)\r\n // Creates a `Transformation` object with the given coefficients.\r\n function Transformation(a, b, c, d) {\r\n \tif (isArray(a)) {\r\n \t\t// use array properties\r\n \t\tthis._a = a[0];\r\n \t\tthis._b = a[1];\r\n \t\tthis._c = a[2];\r\n \t\tthis._d = a[3];\r\n \t\treturn;\r\n \t}\r\n \tthis._a = a;\r\n \tthis._b = b;\r\n \tthis._c = c;\r\n \tthis._d = d;\r\n }\r\n\r\n Transformation.prototype = {\r\n \t// @method transform(point: Point, scale?: Number): Point\r\n \t// Returns a transformed point, optionally multiplied by the given scale.\r\n \t// Only accepts actual `L.Point` instances, not arrays.\r\n \ttransform: function (point, scale) { // (Point, Number) -> Point\r\n \t\treturn this._transform(point.clone(), scale);\r\n \t},\r\n\r\n \t// destructive transform (faster)\r\n \t_transform: function (point, scale) {\r\n \t\tscale = scale || 1;\r\n \t\tpoint.x = scale * (this._a * point.x + this._b);\r\n \t\tpoint.y = scale * (this._c * point.y + this._d);\r\n \t\treturn point;\r\n \t},\r\n\r\n \t// @method untransform(point: Point, scale?: Number): Point\r\n \t// Returns the reverse transformation of the given point, optionally divided\r\n \t// by the given scale. Only accepts actual `L.Point` instances, not arrays.\r\n \tuntransform: function (point, scale) {\r\n \t\tscale = scale || 1;\r\n \t\treturn new Point(\r\n \t\t (point.x / scale - this._b) / this._a,\r\n \t\t (point.y / scale - this._d) / this._c);\r\n \t}\r\n };\r\n\r\n // factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n\r\n // @factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n // Instantiates a Transformation object with the given coefficients.\r\n\r\n // @alternative\r\n // @factory L.transformation(coefficients: Array): Transformation\r\n // Expects an coefficients array of the form\r\n // `[a: Number, b: Number, c: Number, d: Number]`.\r\n\r\n function toTransformation(a, b, c, d) {\r\n \treturn new Transformation(a, b, c, d);\r\n }\n\n /*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3857\r\n *\r\n * The most common CRS for online maps, used by almost all free and commercial\r\n * tile providers. Uses Spherical Mercator projection. Set in by default in\r\n * Map's `crs` option.\r\n */\r\n\r\n var EPSG3857 = extend({}, Earth, {\r\n \tcode: 'EPSG:3857',\r\n \tprojection: SphericalMercator,\r\n\r\n \ttransformation: (function () {\r\n \t\tvar scale = 0.5 / (Math.PI * SphericalMercator.R);\r\n \t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n \t}())\r\n });\r\n\r\n var EPSG900913 = extend({}, EPSG3857, {\r\n \tcode: 'EPSG:900913'\r\n });\n\n // @namespace SVG; @section\n // There are several static functions which can be called without instantiating L.SVG:\n\n // @function create(name: String): SVGElement\n // Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),\n // corresponding to the class name passed. For example, using 'line' will return\n // an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).\n function svgCreate(name) {\n \treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n }\n\n // @function pointsToPath(rings: Point[], closed: Boolean): String\n // Generates a SVG path string for multiple rings, with each ring turning\n // into \"M..L..L..\" instructions\n function pointsToPath(rings, closed) {\n \tvar str = '',\n \ti, j, len, len2, points, p;\n\n \tfor (i = 0, len = rings.length; i < len; i++) {\n \t\tpoints = rings[i];\n\n \t\tfor (j = 0, len2 = points.length; j < len2; j++) {\n \t\t\tp = points[j];\n \t\t\tstr += (j ? 'L' : 'M') + p.x + ' ' + p.y;\n \t\t}\n\n \t\t// closes the ring for polygons; \"x\" is VML syntax\n \t\tstr += closed ? (Browser.svg ? 'z' : 'x') : '';\n \t}\n\n \t// SVG complains about empty path strings\n \treturn str || 'M0 0';\n }\n\n /*\r\n * @namespace Browser\r\n * @aka L.Browser\r\n *\r\n * A namespace with static properties for browser/feature detection used by Leaflet internally.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * if (L.Browser.ielt9) {\r\n * alert('Upgrade your browser, dude!');\r\n * }\r\n * ```\r\n */\r\n\r\n var style = document.documentElement.style;\r\n\r\n // @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).\r\n var ie = 'ActiveXObject' in window;\r\n\r\n // @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.\r\n var ielt9 = ie && !document.addEventListener;\r\n\r\n // @property edge: Boolean; `true` for the Edge web browser.\r\n var edge = 'msLaunchUri' in navigator && !('documentMode' in document);\r\n\r\n // @property webkit: Boolean;\r\n // `true` for webkit-based browsers like Chrome and Safari (including mobile versions).\r\n var webkit = userAgentContains('webkit');\r\n\r\n // @property android: Boolean\r\n // **Deprecated.** `true` for any browser running on an Android platform.\r\n var android = userAgentContains('android');\r\n\r\n // @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3.\r\n var android23 = userAgentContains('android 2') || userAgentContains('android 3');\r\n\r\n /* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */\r\n var webkitVer = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit\r\n // @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome)\r\n var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);\r\n\r\n // @property opera: Boolean; `true` for the Opera browser\r\n var opera = !!window.opera;\r\n\r\n // @property chrome: Boolean; `true` for the Chrome browser.\r\n var chrome = !edge && userAgentContains('chrome');\r\n\r\n // @property gecko: Boolean; `true` for gecko-based browsers like Firefox.\r\n var gecko = userAgentContains('gecko') && !webkit && !opera && !ie;\r\n\r\n // @property safari: Boolean; `true` for the Safari browser.\r\n var safari = !chrome && userAgentContains('safari');\r\n\r\n var phantom = userAgentContains('phantom');\r\n\r\n // @property opera12: Boolean\r\n // `true` for the Opera browser supporting CSS transforms (version 12 or later).\r\n var opera12 = 'OTransition' in style;\r\n\r\n // @property win: Boolean; `true` when the browser is running in a Windows platform\r\n var win = navigator.platform.indexOf('Win') === 0;\r\n\r\n // @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.\r\n var ie3d = ie && ('transition' in style);\r\n\r\n // @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.\r\n var webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23;\r\n\r\n // @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.\r\n var gecko3d = 'MozPerspective' in style;\r\n\r\n // @property any3d: Boolean\r\n // `true` for all browsers supporting CSS transforms.\r\n var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;\r\n\r\n // @property mobile: Boolean; `true` for all browsers running in a mobile device.\r\n var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');\r\n\r\n // @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.\r\n var mobileWebkit = mobile && webkit;\r\n\r\n // @property mobileWebkit3d: Boolean\r\n // `true` for all webkit-based browsers in a mobile device supporting CSS transforms.\r\n var mobileWebkit3d = mobile && webkit3d;\r\n\r\n // @property msPointer: Boolean\r\n // `true` for browsers implementing the Microsoft touch events model (notably IE10).\r\n var msPointer = !window.PointerEvent && window.MSPointerEvent;\r\n\r\n // @property pointer: Boolean\r\n // `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).\r\n var pointer = !!(window.PointerEvent || msPointer);\r\n\r\n // @property touchNative: Boolean\r\n // `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).\r\n // **This does not necessarily mean** that the browser is running in a computer with\r\n // a touchscreen, it only means that the browser is capable of understanding\r\n // touch events.\r\n var touchNative = 'ontouchstart' in window || !!window.TouchEvent;\r\n\r\n // @property touch: Boolean\r\n // `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events.\r\n // Note: pointer events will be preferred (if available), and processed for all `touch*` listeners.\r\n var touch = !window.L_NO_TOUCH && (touchNative || pointer);\r\n\r\n // @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.\r\n var mobileOpera = mobile && opera;\r\n\r\n // @property mobileGecko: Boolean\r\n // `true` for gecko-based browsers running in a mobile device.\r\n var mobileGecko = mobile && gecko;\r\n\r\n // @property retina: Boolean\r\n // `true` for browsers on a high-resolution \"retina\" screen or on any screen when browser's display zoom is more than 100%.\r\n var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;\r\n\r\n // @property passiveEvents: Boolean\r\n // `true` for browsers that support passive events.\r\n var passiveEvents = (function () {\r\n \tvar supportsPassiveOption = false;\r\n \ttry {\r\n \t\tvar opts = Object.defineProperty({}, 'passive', {\r\n \t\t\tget: function () { // eslint-disable-line getter-return\r\n \t\t\t\tsupportsPassiveOption = true;\r\n \t\t\t}\r\n \t\t});\r\n \t\twindow.addEventListener('testPassiveEventSupport', falseFn, opts);\r\n \t\twindow.removeEventListener('testPassiveEventSupport', falseFn, opts);\r\n \t} catch (e) {\r\n \t\t// Errors can safely be ignored since this is only a browser support test.\r\n \t}\r\n \treturn supportsPassiveOption;\r\n }());\r\n\r\n // @property canvas: Boolean\r\n // `true` when the browser supports [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\r\n var canvas$1 = (function () {\r\n \treturn !!document.createElement('canvas').getContext;\r\n }());\r\n\r\n // @property svg: Boolean\r\n // `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).\r\n var svg$1 = !!(document.createElementNS && svgCreate('svg').createSVGRect);\r\n\r\n var inlineSvg = !!svg$1 && (function () {\r\n \tvar div = document.createElement('div');\r\n \tdiv.innerHTML = '<svg/>';\r\n \treturn (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';\r\n })();\r\n\r\n // @property vml: Boolean\r\n // `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).\r\n var vml = !svg$1 && (function () {\r\n \ttry {\r\n \t\tvar div = document.createElement('div');\r\n \t\tdiv.innerHTML = '<v:shape adj=\"1\"/>';\r\n\r\n \t\tvar shape = div.firstChild;\r\n \t\tshape.style.behavior = 'url(#default#VML)';\r\n\r\n \t\treturn shape && (typeof shape.adj === 'object');\r\n\r\n \t} catch (e) {\r\n \t\treturn false;\r\n \t}\r\n }());\r\n\r\n\r\n // @property mac: Boolean; `true` when the browser is running in a Mac platform\r\n var mac = navigator.platform.indexOf('Mac') === 0;\r\n\r\n // @property mac: Boolean; `true` when the browser is running in a Linux platform\r\n var linux = navigator.platform.indexOf('Linux') === 0;\r\n\r\n function userAgentContains(str) {\r\n \treturn navigator.userAgent.toLowerCase().indexOf(str) >= 0;\r\n }\r\n\r\n\r\n var Browser = {\r\n \tie: ie,\r\n \tielt9: ielt9,\r\n \tedge: edge,\r\n \twebkit: webkit,\r\n \tandroid: android,\r\n \tandroid23: android23,\r\n \tandroidStock: androidStock,\r\n \topera: opera,\r\n \tchrome: chrome,\r\n \tgecko: gecko,\r\n \tsafari: safari,\r\n \tphantom: phantom,\r\n \topera12: opera12,\r\n \twin: win,\r\n \tie3d: ie3d,\r\n \twebkit3d: webkit3d,\r\n \tgecko3d: gecko3d,\r\n \tany3d: any3d,\r\n \tmobile: mobile,\r\n \tmobileWebkit: mobileWebkit,\r\n \tmobileWebkit3d: mobileWebkit3d,\r\n \tmsPointer: msPointer,\r\n \tpointer: pointer,\r\n \ttouch: touch,\r\n \ttouchNative: touchNative,\r\n \tmobileOpera: mobileOpera,\r\n \tmobileGecko: mobileGecko,\r\n \tretina: retina,\r\n \tpassiveEvents: passiveEvents,\r\n \tcanvas: canvas$1,\r\n \tsvg: svg$1,\r\n \tvml: vml,\r\n \tinlineSvg: inlineSvg,\r\n \tmac: mac,\r\n \tlinux: linux\r\n };\n\n /*\n * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.\n */\n\n var POINTER_DOWN = Browser.msPointer ? 'MSPointerDown' : 'pointerdown';\n var POINTER_MOVE = Browser.msPointer ? 'MSPointerMove' : 'pointermove';\n var POINTER_UP = Browser.msPointer ? 'MSPointerUp' : 'pointerup';\n var POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel';\n var pEvent = {\n \ttouchstart : POINTER_DOWN,\n \ttouchmove : POINTER_MOVE,\n \ttouchend : POINTER_UP,\n \ttouchcancel : POINTER_CANCEL\n };\n var handle = {\n \ttouchstart : _onPointerStart,\n \ttouchmove : _handlePointer,\n \ttouchend : _handlePointer,\n \ttouchcancel : _handlePointer\n };\n var _pointers = {};\n var _pointerDocListener = false;\n\n // Provides a touch events wrapper for (ms)pointer events.\n // ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890\n\n function addPointerListener(obj, type, handler) {\n \tif (type === 'touchstart') {\n \t\t_addPointerDocListener();\n \t}\n \tif (!handle[type]) {\n \t\tconsole.warn('wrong event specified:', type);\n \t\treturn falseFn;\n \t}\n \thandler = handle[type].bind(this, handler);\n \tobj.addEventListener(pEvent[type], handler, false);\n \treturn handler;\n }\n\n function removePointerListener(obj, type, handler) {\n \tif (!pEvent[type]) {\n \t\tconsole.warn('wrong event specified:', type);\n \t\treturn;\n \t}\n \tobj.removeEventListener(pEvent[type], handler, false);\n }\n\n function _globalPointerDown(e) {\n \t_pointers[e.pointerId] = e;\n }\n\n function _globalPointerMove(e) {\n \tif (_pointers[e.pointerId]) {\n \t\t_pointers[e.pointerId] = e;\n \t}\n }\n\n function _globalPointerUp(e) {\n \tdelete _pointers[e.pointerId];\n }\n\n function _addPointerDocListener() {\n \t// need to keep track of what pointers and how many are active to provide e.touches emulation\n \tif (!_pointerDocListener) {\n \t\t// we listen document as any drags that end by moving the touch off the screen get fired there\n \t\tdocument.addEventListener(POINTER_DOWN, _globalPointerDown, true);\n \t\tdocument.addEventListener(POINTER_MOVE, _globalPointerMove, true);\n \t\tdocument.addEventListener(POINTER_UP, _globalPointerUp, true);\n \t\tdocument.addEventListener(POINTER_CANCEL, _globalPointerUp, true);\n\n \t\t_pointerDocListener = true;\n \t}\n }\n\n function _handlePointer(handler, e) {\n \tif (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; }\n\n \te.touches = [];\n \tfor (var i in _pointers) {\n \t\te.touches.push(_pointers[i]);\n \t}\n \te.changedTouches = [e];\n\n \thandler(e);\n }\n\n function _onPointerStart(handler, e) {\n \t// IE10 specific: MsTouch needs preventDefault. See #2000\n \tif (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) {\n \t\tpreventDefault(e);\n \t}\n \t_handlePointer(handler, e);\n }\n\n /*\r\n * Extends the event handling code with double tap support for mobile browsers.\r\n *\r\n * Note: currently most browsers fire native dblclick, with only a few exceptions\r\n * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386)\r\n */\r\n\r\n function makeDblclick(event) {\r\n \t// in modern browsers `type` cannot be just overridden:\r\n \t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only\r\n \tvar newEvent = {},\r\n \t prop, i;\r\n \tfor (i in event) {\r\n \t\tprop = event[i];\r\n \t\tnewEvent[i] = prop && prop.bind ? prop.bind(event) : prop;\r\n \t}\r\n \tevent = newEvent;\r\n \tnewEvent.type = 'dblclick';\r\n \tnewEvent.detail = 2;\r\n \tnewEvent.isTrusted = false;\r\n \tnewEvent._simulated = true; // for debug purposes\r\n \treturn newEvent;\r\n }\r\n\r\n var delay = 200;\r\n function addDoubleTapListener(obj, handler) {\r\n \t// Most browsers handle double tap natively\r\n \tobj.addEventListener('dblclick', handler);\r\n\r\n \t// On some platforms the browser doesn't fire native dblclicks for touch events.\r\n \t// It seems that in all such cases `detail` property of `click` event is always `1`.\r\n \t// So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed.\r\n \tvar last = 0,\r\n \t detail;\r\n \tfunction simDblclick(e) {\r\n \t\tif (e.detail !== 1) {\r\n \t\t\tdetail = e.detail; // keep in sync to avoid false dblclick in some cases\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (e.pointerType === 'mouse' ||\r\n \t\t\t(e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) {\r\n\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\t// When clicking on an <input>, the browser generates a click on its\r\n \t\t// <label> (and vice versa) triggering two clicks in quick succession.\r\n \t\t// This ignores clicks on elements which are a label with a 'for'\r\n \t\t// attribute (or children of such a label), but not children of\r\n \t\t// a <input>.\r\n \t\tvar path = getPropagationPath(e);\r\n \t\tif (path.some(function (el) {\r\n \t\t\treturn el instanceof HTMLLabelElement && el.attributes.for;\r\n \t\t}) &&\r\n \t\t\t!path.some(function (el) {\r\n \t\t\t\treturn (\r\n \t\t\t\t\tel instanceof HTMLInputElement ||\r\n \t\t\t\t\tel instanceof HTMLSelectElement\r\n \t\t\t\t);\r\n \t\t\t})\r\n \t\t) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tvar now = Date.now();\r\n \t\tif (now - last <= delay) {\r\n \t\t\tdetail++;\r\n \t\t\tif (detail === 2) {\r\n \t\t\t\thandler(makeDblclick(e));\r\n \t\t\t}\r\n \t\t} else {\r\n \t\t\tdetail = 1;\r\n \t\t}\r\n \t\tlast = now;\r\n \t}\r\n\r\n \tobj.addEventListener('click', simDblclick);\r\n\r\n \treturn {\r\n \t\tdblclick: handler,\r\n \t\tsimDblclick: simDblclick\r\n \t};\r\n }\r\n\r\n function removeDoubleTapListener(obj, handlers) {\r\n \tobj.removeEventListener('dblclick', handlers.dblclick);\r\n \tobj.removeEventListener('click', handlers.simDblclick);\r\n }\n\n /*\r\n * @namespace DomUtil\r\n *\r\n * Utility functions to work with the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model)\r\n * tree, used by Leaflet internally.\r\n *\r\n * Most functions expecting or returning a `HTMLElement` also work for\r\n * SVG elements. The only difference is that classes refer to CSS classes\r\n * in HTML and SVG classes in SVG.\r\n */\r\n\r\n\r\n // @property TRANSFORM: String\r\n // Vendor-prefixed transform style name (e.g. `'webkitTransform'` for WebKit).\r\n var TRANSFORM = testProp(\r\n \t['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']);\r\n\r\n // webkitTransition comes first because some browser versions that drop vendor prefix don't do\r\n // the same for the transitionend event, in particular the Android 4.1 stock browser\r\n\r\n // @property TRANSITION: String\r\n // Vendor-prefixed transition style name.\r\n var TRANSITION = testProp(\r\n \t['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']);\r\n\r\n // @property TRANSITION_END: String\r\n // Vendor-prefixed transitionend event name.\r\n var TRANSITION_END =\r\n \tTRANSITION === 'webkitTransition' || TRANSITION === 'OTransition' ? TRANSITION + 'End' : 'transitionend';\r\n\r\n\r\n // @function get(id: String|HTMLElement): HTMLElement\r\n // Returns an element given its DOM id, or returns the element itself\r\n // if it was passed directly.\r\n function get(id) {\r\n \treturn typeof id === 'string' ? document.getElementById(id) : id;\r\n }\r\n\r\n // @function getStyle(el: HTMLElement, styleAttrib: String): String\r\n // Returns the value for a certain style attribute on an element,\r\n // including computed values or values set through CSS.\r\n function getStyle(el, style) {\r\n \tvar value = el.style[style] || (el.currentStyle && el.currentStyle[style]);\r\n\r\n \tif ((!value || value === 'auto') && document.defaultView) {\r\n \t\tvar css = document.defaultView.getComputedStyle(el, null);\r\n \t\tvalue = css ? css[style] : null;\r\n \t}\r\n \treturn value === 'auto' ? null : value;\r\n }\r\n\r\n // @function create(tagName: String, className?: String, container?: HTMLElement): HTMLElement\r\n // Creates an HTML element with `tagName`, sets its class to `className`, and optionally appends it to `container` element.\r\n function create$1(tagName, className, container) {\r\n \tvar el = document.createElement(tagName);\r\n \tel.className = className || '';\r\n\r\n \tif (container) {\r\n \t\tcontainer.appendChild(el);\r\n \t}\r\n \treturn el;\r\n }\r\n\r\n // @function remove(el: HTMLElement)\r\n // Removes `el` from its parent element\r\n function remove(el) {\r\n \tvar parent = el.parentNode;\r\n \tif (parent) {\r\n \t\tparent.removeChild(el);\r\n \t}\r\n }\r\n\r\n // @function empty(el: HTMLElement)\r\n // Removes all of `el`'s children elements from `el`\r\n function empty(el) {\r\n \twhile (el.firstChild) {\r\n \t\tel.removeChild(el.firstChild);\r\n \t}\r\n }\r\n\r\n // @function toFront(el: HTMLElement)\r\n // Makes `el` the last child of its parent, so it renders in front of the other children.\r\n function toFront(el) {\r\n \tvar parent = el.parentNode;\r\n \tif (parent && parent.lastChild !== el) {\r\n \t\tparent.appendChild(el);\r\n \t}\r\n }\r\n\r\n // @function toBack(el: HTMLElement)\r\n // Makes `el` the first child of its parent, so it renders behind the other children.\r\n function toBack(el) {\r\n \tvar parent = el.parentNode;\r\n \tif (parent && parent.firstChild !== el) {\r\n \t\tparent.insertBefore(el, parent.firstChild);\r\n \t}\r\n }\r\n\r\n // @function hasClass(el: HTMLElement, name: String): Boolean\r\n // Returns `true` if the element's class attribute contains `name`.\r\n function hasClass(el, name) {\r\n \tif (el.classList !== undefined) {\r\n \t\treturn el.classList.contains(name);\r\n \t}\r\n \tvar className = getClass(el);\r\n \treturn className.length > 0 && new RegExp('(^|\\\\s)' + name + '(\\\\s|$)').test(className);\r\n }\r\n\r\n // @function addClass(el: HTMLElement, name: String)\r\n // Adds `name` to the element's class attribute.\r\n function addClass(el, name) {\r\n \tif (el.classList !== undefined) {\r\n \t\tvar classes = splitWords(name);\r\n \t\tfor (var i = 0, len = classes.length; i < len; i++) {\r\n \t\t\tel.classList.add(classes[i]);\r\n \t\t}\r\n \t} else if (!hasClass(el, name)) {\r\n \t\tvar className = getClass(el);\r\n \t\tsetClass(el, (className ? className + ' ' : '') + name);\r\n \t}\r\n }\r\n\r\n // @function removeClass(el: HTMLElement, name: String)\r\n // Removes `name` from the element's class attribute.\r\n function removeClass(el, name) {\r\n \tif (el.classList !== undefined) {\r\n \t\tel.classList.remove(name);\r\n \t} else {\r\n \t\tsetClass(el, trim((' ' + getClass(el) + ' ').replace(' ' + name + ' ', ' ')));\r\n \t}\r\n }\r\n\r\n // @function setClass(el: HTMLElement, name: String)\r\n // Sets the element's class.\r\n function setClass(el, name) {\r\n \tif (el.className.baseVal === undefined) {\r\n \t\tel.className = name;\r\n \t} else {\r\n \t\t// in case of SVG element\r\n \t\tel.className.baseVal = name;\r\n \t}\r\n }\r\n\r\n // @function getClass(el: HTMLElement): String\r\n // Returns the element's class.\r\n function getClass(el) {\r\n \t// Check if the element is an SVGElementInstance and use the correspondingElement instead\r\n \t// (Required for linked SVG elements in IE11.)\r\n \tif (el.correspondingElement) {\r\n \t\tel = el.correspondingElement;\r\n \t}\r\n \treturn el.className.baseVal === undefined ? el.className : el.className.baseVal;\r\n }\r\n\r\n // @function setOpacity(el: HTMLElement, opacity: Number)\r\n // Set the opacity of an element (including old IE support).\r\n // `opacity` must be a number from `0` to `1`.\r\n function setOpacity(el, value) {\r\n \tif ('opacity' in el.style) {\r\n \t\tel.style.opacity = value;\r\n \t} else if ('filter' in el.style) {\r\n \t\t_setOpacityIE(el, value);\r\n \t}\r\n }\r\n\r\n function _setOpacityIE(el, value) {\r\n \tvar filter = false,\r\n \t filterName = 'DXImageTransform.Microsoft.Alpha';\r\n\r\n \t// filters collection throws an error if we try to retrieve a filter that doesn't exist\r\n \ttry {\r\n \t\tfilter = el.filters.item(filterName);\r\n \t} catch (e) {\r\n \t\t// don't set opacity to 1 if we haven't already set an opacity,\r\n \t\t// it isn't needed and breaks transparent pngs.\r\n \t\tif (value === 1) { return; }\r\n \t}\r\n\r\n \tvalue = Math.round(value * 100);\r\n\r\n \tif (filter) {\r\n \t\tfilter.Enabled = (value !== 100);\r\n \t\tfilter.Opacity = value;\r\n \t} else {\r\n \t\tel.style.filter += ' progid:' + filterName + '(opacity=' + value + ')';\r\n \t}\r\n }\r\n\r\n // @function testProp(props: String[]): String|false\r\n // Goes through the array of style names and returns the first name\r\n // that is a valid style name for an element. If no such name is found,\r\n // it returns false. Useful for vendor-prefixed styles like `transform`.\r\n function testProp(props) {\r\n \tvar style = document.documentElement.style;\r\n\r\n \tfor (var i = 0; i < props.length; i++) {\r\n \t\tif (props[i] in style) {\r\n \t\t\treturn props[i];\r\n \t\t}\r\n \t}\r\n \treturn false;\r\n }\r\n\r\n // @function setTransform(el: HTMLElement, offset: Point, scale?: Number)\r\n // Resets the 3D CSS transform of `el` so it is translated by `offset` pixels\r\n // and optionally scaled by `scale`. Does not have an effect if the\r\n // browser doesn't support 3D CSS transforms.\r\n function setTransform(el, offset, scale) {\r\n \tvar pos = offset || new Point(0, 0);\r\n\r\n \tel.style[TRANSFORM] =\r\n \t\t(Browser.ie3d ?\r\n \t\t\t'translate(' + pos.x + 'px,' + pos.y + 'px)' :\r\n \t\t\t'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') +\r\n \t\t(scale ? ' scale(' + scale + ')' : '');\r\n }\r\n\r\n // @function setPosition(el: HTMLElement, position: Point)\r\n // Sets the position of `el` to coordinates specified by `position`,\r\n // using CSS translate or top/left positioning depending on the browser\r\n // (used by Leaflet internally to position its layers).\r\n function setPosition(el, point) {\r\n\r\n \t/*eslint-disable */\r\n \tel._leaflet_pos = point;\r\n \t/* eslint-enable */\r\n\r\n \tif (Browser.any3d) {\r\n \t\tsetTransform(el, point);\r\n \t} else {\r\n \t\tel.style.left = point.x + 'px';\r\n \t\tel.style.top = point.y + 'px';\r\n \t}\r\n }\r\n\r\n // @function getPosition(el: HTMLElement): Point\r\n // Returns the coordinates of an element previously positioned with setPosition.\r\n function getPosition(el) {\r\n \t// this method is only used for elements previously positioned using setPosition,\r\n \t// so it's safe to cache the position for performance\r\n\r\n \treturn el._leaflet_pos || new Point(0, 0);\r\n }\r\n\r\n // @function disableTextSelection()\r\n // Prevents the user from generating `selectstart` DOM events, usually generated\r\n // when the user drags the mouse through a page with text. Used internally\r\n // by Leaflet to override the behaviour of any click-and-drag interaction on\r\n // the map. Affects drag interactions on the whole document.\r\n\r\n // @function enableTextSelection()\r\n // Cancels the effects of a previous [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection).\r\n var disableTextSelection;\r\n var enableTextSelection;\r\n var _userSelect;\r\n if ('onselectstart' in document) {\r\n \tdisableTextSelection = function () {\r\n \t\ton(window, 'selectstart', preventDefault);\r\n \t};\r\n \tenableTextSelection = function () {\r\n \t\toff(window, 'selectstart', preventDefault);\r\n \t};\r\n } else {\r\n \tvar userSelectProperty = testProp(\r\n \t\t['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']);\r\n\r\n \tdisableTextSelection = function () {\r\n \t\tif (userSelectProperty) {\r\n \t\t\tvar style = document.documentElement.style;\r\n \t\t\t_userSelect = style[userSelectProperty];\r\n \t\t\tstyle[userSelectProperty] = 'none';\r\n \t\t}\r\n \t};\r\n \tenableTextSelection = function () {\r\n \t\tif (userSelectProperty) {\r\n \t\t\tdocument.documentElement.style[userSelectProperty] = _userSelect;\r\n \t\t\t_userSelect = undefined;\r\n \t\t}\r\n \t};\r\n }\r\n\r\n // @function disableImageDrag()\r\n // As [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection), but\r\n // for `dragstart` DOM events, usually generated when the user drags an image.\r\n function disableImageDrag() {\r\n \ton(window, 'dragstart', preventDefault);\r\n }\r\n\r\n // @function enableImageDrag()\r\n // Cancels the effects of a previous [`L.DomUtil.disableImageDrag`](#domutil-disabletextselection).\r\n function enableImageDrag() {\r\n \toff(window, 'dragstart', preventDefault);\r\n }\r\n\r\n var _outlineElement, _outlineStyle;\r\n // @function preventOutline(el: HTMLElement)\r\n // Makes the [outline](https://developer.mozilla.org/docs/Web/CSS/outline)\r\n // of the element `el` invisible. Used internally by Leaflet to prevent\r\n // focusable elements from displaying an outline when the user performs a\r\n // drag interaction on them.\r\n function preventOutline(element) {\r\n \twhile (element.tabIndex === -1) {\r\n \t\telement = element.parentNode;\r\n \t}\r\n \tif (!element.style) { return; }\r\n \trestoreOutline();\r\n \t_outlineElement = element;\r\n \t_outlineStyle = element.style.outlineStyle;\r\n \telement.style.outlineStyle = 'none';\r\n \ton(window, 'keydown', restoreOutline);\r\n }\r\n\r\n // @function restoreOutline()\r\n // Cancels the effects of a previous [`L.DomUtil.preventOutline`]().\r\n function restoreOutline() {\r\n \tif (!_outlineElement) { return; }\r\n \t_outlineElement.style.outlineStyle = _outlineStyle;\r\n \t_outlineElement = undefined;\r\n \t_outlineStyle = undefined;\r\n \toff(window, 'keydown', restoreOutline);\r\n }\r\n\r\n // @function getSizedParentNode(el: HTMLElement): HTMLElement\r\n // Finds the closest parent node which size (width and height) is not null.\r\n function getSizedParentNode(element) {\r\n \tdo {\r\n \t\telement = element.parentNode;\r\n \t} while ((!element.offsetWidth || !element.offsetHeight) && element !== document.body);\r\n \treturn element;\r\n }\r\n\r\n // @function getScale(el: HTMLElement): Object\r\n // Computes the CSS scale currently applied on the element.\r\n // Returns an object with `x` and `y` members as horizontal and vertical scales respectively,\r\n // and `boundingClientRect` as the result of [`getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).\r\n function getScale(element) {\r\n \tvar rect = element.getBoundingClientRect(); // Read-only in old browsers.\r\n\r\n \treturn {\r\n \t\tx: rect.width / element.offsetWidth || 1,\r\n \t\ty: rect.height / element.offsetHeight || 1,\r\n \t\tboundingClientRect: rect\r\n \t};\r\n }\n\n var DomUtil = {\n __proto__: null,\n TRANSFORM: TRANSFORM,\n TRANSITION: TRANSITION,\n TRANSITION_END: TRANSITION_END,\n get: get,\n getStyle: getStyle,\n create: create$1,\n remove: remove,\n empty: empty,\n toFront: toFront,\n toBack: toBack,\n hasClass: hasClass,\n addClass: addClass,\n removeClass: removeClass,\n setClass: setClass,\n getClass: getClass,\n setOpacity: setOpacity,\n testProp: testProp,\n setTransform: setTransform,\n setPosition: setPosition,\n getPosition: getPosition,\n get disableTextSelection () { return disableTextSelection; },\n get enableTextSelection () { return enableTextSelection; },\n disableImageDrag: disableImageDrag,\n enableImageDrag: enableImageDrag,\n preventOutline: preventOutline,\n restoreOutline: restoreOutline,\n getSizedParentNode: getSizedParentNode,\n getScale: getScale\n };\n\n /*\r\n * @namespace DomEvent\r\n * Utility functions to work with the [DOM events](https://developer.mozilla.org/docs/Web/API/Event), used by Leaflet internally.\r\n */\r\n\r\n // Inspired by John Resig, Dean Edwards and YUI addEvent implementations.\r\n\r\n // @function on(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n // Adds a listener function (`fn`) to a particular DOM event type of the\r\n // element `el`. You can optionally specify the context of the listener\r\n // (object the `this` keyword will point to). You can also pass several\r\n // space-separated types (e.g. `'click dblclick'`).\r\n\r\n // @alternative\r\n // @function on(el: HTMLElement, eventMap: Object, context?: Object): this\r\n // Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n function on(obj, types, fn, context) {\r\n\r\n \tif (types && typeof types === 'object') {\r\n \t\tfor (var type in types) {\r\n \t\t\taddOne(obj, type, types[type], fn);\r\n \t\t}\r\n \t} else {\r\n \t\ttypes = splitWords(types);\r\n\r\n \t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\taddOne(obj, types[i], fn, context);\r\n \t\t}\r\n \t}\r\n\r\n \treturn this;\r\n }\r\n\r\n var eventsKey = '_leaflet_events';\r\n\r\n // @function off(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n // Removes a previously added listener function.\r\n // Note that if you passed a custom context to on, you must pass the same\r\n // context to `off` in order to remove the listener.\r\n\r\n // @alternative\r\n // @function off(el: HTMLElement, eventMap: Object, context?: Object): this\r\n // Removes a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n\r\n // @alternative\r\n // @function off(el: HTMLElement, types: String): this\r\n // Removes all previously added listeners of given types.\r\n\r\n // @alternative\r\n // @function off(el: HTMLElement): this\r\n // Removes all previously added listeners from given HTMLElement\r\n function off(obj, types, fn, context) {\r\n\r\n \tif (arguments.length === 1) {\r\n \t\tbatchRemove(obj);\r\n \t\tdelete obj[eventsKey];\r\n\r\n \t} else if (types && typeof types === 'object') {\r\n \t\tfor (var type in types) {\r\n \t\t\tremoveOne(obj, type, types[type], fn);\r\n \t\t}\r\n\r\n \t} else {\r\n \t\ttypes = splitWords(types);\r\n\r\n \t\tif (arguments.length === 2) {\r\n \t\t\tbatchRemove(obj, function (type) {\r\n \t\t\t\treturn indexOf(types, type) !== -1;\r\n \t\t\t});\r\n \t\t} else {\r\n \t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n \t\t\t\tremoveOne(obj, types[i], fn, context);\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n\r\n \treturn this;\r\n }\r\n\r\n function batchRemove(obj, filterFn) {\r\n \tfor (var id in obj[eventsKey]) {\r\n \t\tvar type = id.split(/\\d/)[0];\r\n \t\tif (!filterFn || filterFn(type)) {\r\n \t\t\tremoveOne(obj, type, null, null, id);\r\n \t\t}\r\n \t}\r\n }\r\n\r\n var mouseSubst = {\r\n \tmouseenter: 'mouseover',\r\n \tmouseleave: 'mouseout',\r\n \twheel: !('onwheel' in window) && 'mousewheel'\r\n };\r\n\r\n function addOne(obj, type, fn, context) {\r\n \tvar id = type + stamp(fn) + (context ? '_' + stamp(context) : '');\r\n\r\n \tif (obj[eventsKey] && obj[eventsKey][id]) { return this; }\r\n\r\n \tvar handler = function (e) {\r\n \t\treturn fn.call(context || obj, e || window.event);\r\n \t};\r\n\r\n \tvar originalHandler = handler;\r\n\r\n \tif (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) {\r\n \t\t// Needs DomEvent.Pointer.js\r\n \t\thandler = addPointerListener(obj, type, handler);\r\n\r\n \t} else if (Browser.touch && (type === 'dblclick')) {\r\n \t\thandler = addDoubleTapListener(obj, handler);\r\n\r\n \t} else if ('addEventListener' in obj) {\r\n\r\n \t\tif (type === 'touchstart' || type === 'touchmove' || type === 'wheel' || type === 'mousewheel') {\r\n \t\t\tobj.addEventListener(mouseSubst[type] || type, handler, Browser.passiveEvents ? {passive: false} : false);\r\n\r\n \t\t} else if (type === 'mouseenter' || type === 'mouseleave') {\r\n \t\t\thandler = function (e) {\r\n \t\t\t\te = e || window.event;\r\n \t\t\t\tif (isExternalTarget(obj, e)) {\r\n \t\t\t\t\toriginalHandler(e);\r\n \t\t\t\t}\r\n \t\t\t};\r\n \t\t\tobj.addEventListener(mouseSubst[type], handler, false);\r\n\r\n \t\t} else {\r\n \t\t\tobj.addEventListener(type, originalHandler, false);\r\n \t\t}\r\n\r\n \t} else {\r\n \t\tobj.attachEvent('on' + type, handler);\r\n \t}\r\n\r\n \tobj[eventsKey] = obj[eventsKey] || {};\r\n \tobj[eventsKey][id] = handler;\r\n }\r\n\r\n function removeOne(obj, type, fn, context, id) {\r\n \tid = id || type + stamp(fn) + (context ? '_' + stamp(context) : '');\r\n \tvar handler = obj[eventsKey] && obj[eventsKey][id];\r\n\r\n \tif (!handler) { return this; }\r\n\r\n \tif (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) {\r\n \t\tremovePointerListener(obj, type, handler);\r\n\r\n \t} else if (Browser.touch && (type === 'dblclick')) {\r\n \t\tremoveDoubleTapListener(obj, handler);\r\n\r\n \t} else if ('removeEventListener' in obj) {\r\n\r\n \t\tobj.removeEventListener(mouseSubst[type] || type, handler, false);\r\n\r\n \t} else {\r\n \t\tobj.detachEvent('on' + type, handler);\r\n \t}\r\n\r\n \tobj[eventsKey][id] = null;\r\n }\r\n\r\n // @function stopPropagation(ev: DOMEvent): this\r\n // Stop the given event from propagation to parent elements. Used inside the listener functions:\r\n // ```js\r\n // L.DomEvent.on(div, 'click', function (ev) {\r\n // \tL.DomEvent.stopPropagation(ev);\r\n // });\r\n // ```\r\n function stopPropagation(e) {\r\n\r\n \tif (e.stopPropagation) {\r\n \t\te.stopPropagation();\r\n \t} else if (e.originalEvent) { // In case of Leaflet event.\r\n \t\te.originalEvent._stopped = true;\r\n \t} else {\r\n \t\te.cancelBubble = true;\r\n \t}\r\n\r\n \treturn this;\r\n }\r\n\r\n // @function disableScrollPropagation(el: HTMLElement): this\r\n // Adds `stopPropagation` to the element's `'wheel'` events (plus browser variants).\r\n function disableScrollPropagation(el) {\r\n \taddOne(el, 'wheel', stopPropagation);\r\n \treturn this;\r\n }\r\n\r\n // @function disableClickPropagation(el: HTMLElement): this\r\n // Adds `stopPropagation` to the element's `'click'`, `'dblclick'`, `'contextmenu'`,\r\n // `'mousedown'` and `'touchstart'` events (plus browser variants).\r\n function disableClickPropagation(el) {\r\n \ton(el, 'mousedown touchstart dblclick contextmenu', stopPropagation);\r\n \tel['_leaflet_disable_click'] = true;\r\n \treturn this;\r\n }\r\n\r\n // @function preventDefault(ev: DOMEvent): this\r\n // Prevents the default action of the DOM Event `ev` from happening (such as\r\n // following a link in the href of the a element, or doing a POST request\r\n // with page reload when a `<form>` is submitted).\r\n // Use it inside listener functions.\r\n function preventDefault(e) {\r\n \tif (e.preventDefault) {\r\n \t\te.preventDefault();\r\n \t} else {\r\n \t\te.returnValue = false;\r\n \t}\r\n \treturn this;\r\n }\r\n\r\n // @function stop(ev: DOMEvent): this\r\n // Does `stopPropagation` and `preventDefault` at the same time.\r\n function stop(e) {\r\n \tpreventDefault(e);\r\n \tstopPropagation(e);\r\n \treturn this;\r\n }\r\n\r\n // @function getPropagationPath(ev: DOMEvent): Array\r\n // Compatibility polyfill for [`Event.composedPath()`](https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath).\r\n // Returns an array containing the `HTMLElement`s that the given DOM event\r\n // should propagate to (if not stopped).\r\n function getPropagationPath(ev) {\r\n \tif (ev.composedPath) {\r\n \t\treturn ev.composedPath();\r\n \t}\r\n\r\n \tvar path = [];\r\n \tvar el = ev.target;\r\n\r\n \twhile (el) {\r\n \t\tpath.push(el);\r\n \t\tel = el.parentNode;\r\n \t}\r\n \treturn path;\r\n }\r\n\r\n\r\n // @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point\r\n // Gets normalized mouse position from a DOM event relative to the\r\n // `container` (border excluded) or to the whole page if not specified.\r\n function getMousePosition(e, container) {\r\n \tif (!container) {\r\n \t\treturn new Point(e.clientX, e.clientY);\r\n \t}\r\n\r\n \tvar scale = getScale(container),\r\n \t offset = scale.boundingClientRect; // left and top values are in page scale (like the event clientX/Y)\r\n\r\n \treturn new Point(\r\n \t\t// offset.left/top values are in page scale (like clientX/Y),\r\n \t\t// whereas clientLeft/Top (border width) values are the original values (before CSS scale applies).\r\n \t\t(e.clientX - offset.left) / scale.x - container.clientLeft,\r\n \t\t(e.clientY - offset.top) / scale.y - container.clientTop\r\n \t);\r\n }\r\n\r\n\r\n // except , Safari and\r\n // We need double the scroll pixels (see #7403 and #4538) for all Browsers\r\n // except OSX (Mac) -> 3x, Chrome running on Linux 1x\r\n\r\n var wheelPxFactor =\r\n \t(Browser.linux && Browser.chrome) ? window.devicePixelRatio :\r\n \tBrowser.mac ? window.devicePixelRatio * 3 :\r\n \twindow.devicePixelRatio > 0 ? 2 * window.devicePixelRatio : 1;\r\n // @function getWheelDelta(ev: DOMEvent): Number\r\n // Gets normalized wheel delta from a wheel DOM event, in vertical\r\n // pixels scrolled (negative if scrolling down).\r\n // Events from pointing devices without precise scrolling are mapped to\r\n // a best guess of 60 pixels.\r\n function getWheelDelta(e) {\r\n \treturn (Browser.edge) ? e.wheelDeltaY / 2 : // Don't trust window-geometry-based delta\r\n \t (e.deltaY && e.deltaMode === 0) ? -e.deltaY / wheelPxFactor : // Pixels\r\n \t (e.deltaY && e.deltaMode === 1) ? -e.deltaY * 20 : // Lines\r\n \t (e.deltaY && e.deltaMode === 2) ? -e.deltaY * 60 : // Pages\r\n \t (e.deltaX || e.deltaZ) ? 0 :\t// Skip horizontal/depth wheel events\r\n \t e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 : // Legacy IE pixels\r\n \t (e.detail && Math.abs(e.detail) < 32765) ? -e.detail * 20 : // Legacy Moz lines\r\n \t e.detail ? e.detail / -32765 * 60 : // Legacy Moz pages\r\n \t 0;\r\n }\r\n\r\n // check if element really left/entered the event target (for mouseenter/mouseleave)\r\n function isExternalTarget(el, e) {\r\n\r\n \tvar related = e.relatedTarget;\r\n\r\n \tif (!related) { return true; }\r\n\r\n \ttry {\r\n \t\twhile (related && (related !== el)) {\r\n \t\t\trelated = related.parentNode;\r\n \t\t}\r\n \t} catch (err) {\r\n \t\treturn false;\r\n \t}\r\n \treturn (related !== el);\r\n }\n\n var DomEvent = {\n __proto__: null,\n on: on,\n off: off,\n stopPropagation: stopPropagation,\n disableScrollPropagation: disableScrollPropagation,\n disableClickPropagation: disableClickPropagation,\n preventDefault: preventDefault,\n stop: stop,\n getPropagationPath: getPropagationPath,\n getMousePosition: getMousePosition,\n getWheelDelta: getWheelDelta,\n isExternalTarget: isExternalTarget,\n addListener: on,\n removeListener: off\n };\n\n /*\n * @class PosAnimation\n * @aka L.PosAnimation\n * @inherits Evented\n * Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9.\n *\n * @example\n * ```js\n * var myPositionMarker = L.marker([48.864716, 2.294694]).addTo(map);\n *\n * myPositionMarker.on(\"click\", function() {\n * \tvar pos = map.latLngToLayerPoint(myPositionMarker.getLatLng());\n * \tpos.y -= 25;\n * \tvar fx = new L.PosAnimation();\n *\n * \tfx.once('end',function() {\n * \t\tpos.y += 25;\n * \t\tfx.run(myPositionMarker._icon, pos, 0.8);\n * \t});\n *\n * \tfx.run(myPositionMarker._icon, pos, 0.3);\n * });\n *\n * ```\n *\n * @constructor L.PosAnimation()\n * Creates a `PosAnimation` object.\n *\n */\n\n var PosAnimation = Evented.extend({\n\n \t// @method run(el: HTMLElement, newPos: Point, duration?: Number, easeLinearity?: Number)\n \t// Run an animation of a given element to a new position, optionally setting\n \t// duration in seconds (`0.25` by default) and easing linearity factor (3rd\n \t// argument of the [cubic bezier curve](https://cubic-bezier.com/#0,0,.5,1),\n \t// `0.5` by default).\n \trun: function (el, newPos, duration, easeLinearity) {\n \t\tthis.stop();\n\n \t\tthis._el = el;\n \t\tthis._inProgress = true;\n \t\tthis._duration = duration || 0.25;\n \t\tthis._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2);\n\n \t\tthis._startPos = getPosition(el);\n \t\tthis._offset = newPos.subtract(this._startPos);\n \t\tthis._startTime = +new Date();\n\n \t\t// @event start: Event\n \t\t// Fired when the animation starts\n \t\tthis.fire('start');\n\n \t\tthis._animate();\n \t},\n\n \t// @method stop()\n \t// Stops the animation (if currently running).\n \tstop: function () {\n \t\tif (!this._inProgress) { return; }\n\n \t\tthis._step(true);\n \t\tthis._complete();\n \t},\n\n \t_animate: function () {\n \t\t// animation loop\n \t\tthis._animId = requestAnimFrame(this._animate, this);\n \t\tthis._step();\n \t},\n\n \t_step: function (round) {\n \t\tvar elapsed = (+new Date()) - this._startTime,\n \t\t duration = this._duration * 1000;\n\n \t\tif (elapsed < duration) {\n \t\t\tthis._runFrame(this._easeOut(elapsed / duration), round);\n \t\t} else {\n \t\t\tthis._runFrame(1);\n \t\t\tthis._complete();\n \t\t}\n \t},\n\n \t_runFrame: function (progress, round) {\n \t\tvar pos = this._startPos.add(this._offset.multiplyBy(progress));\n \t\tif (round) {\n \t\t\tpos._round();\n \t\t}\n \t\tsetPosition(this._el, pos);\n\n \t\t// @event step: Event\n \t\t// Fired continuously during the animation.\n \t\tthis.fire('step');\n \t},\n\n \t_complete: function () {\n \t\tcancelAnimFrame(this._animId);\n\n \t\tthis._inProgress = false;\n \t\t// @event end: Event\n \t\t// Fired when the animation ends.\n \t\tthis.fire('end');\n \t},\n\n \t_easeOut: function (t) {\n \t\treturn 1 - Math.pow(1 - t, this._easeOutPower);\n \t}\n });\n\n /*\r\n * @class Map\r\n * @aka L.Map\r\n * @inherits Evented\r\n *\r\n * The central class of the API — it is used to create a map on a page and manipulate it.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * // initialize the map on the \"map\" div with a given center and zoom\r\n * var map = L.map('map', {\r\n * \tcenter: [51.505, -0.09],\r\n * \tzoom: 13\r\n * });\r\n * ```\r\n *\r\n */\r\n\r\n var Map = Evented.extend({\r\n\r\n \toptions: {\r\n \t\t// @section Map State Options\r\n \t\t// @option crs: CRS = L.CRS.EPSG3857\r\n \t\t// The [Coordinate Reference System](#crs) to use. Don't change this if you're not\r\n \t\t// sure what it means.\r\n \t\tcrs: EPSG3857,\r\n\r\n \t\t// @option center: LatLng = undefined\r\n \t\t// Initial geographic center of the map\r\n \t\tcenter: undefined,\r\n\r\n \t\t// @option zoom: Number = undefined\r\n \t\t// Initial map zoom level\r\n \t\tzoom: undefined,\r\n\r\n \t\t// @option minZoom: Number = *\r\n \t\t// Minimum zoom level of the map.\r\n \t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n \t\t// the lowest of their `minZoom` options will be used instead.\r\n \t\tminZoom: undefined,\r\n\r\n \t\t// @option maxZoom: Number = *\r\n \t\t// Maximum zoom level of the map.\r\n \t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n \t\t// the highest of their `maxZoom` options will be used instead.\r\n \t\tmaxZoom: undefined,\r\n\r\n \t\t// @option layers: Layer[] = []\r\n \t\t// Array of layers that will be added to the map initially\r\n \t\tlayers: [],\r\n\r\n \t\t// @option maxBounds: LatLngBounds = null\r\n \t\t// When this option is set, the map restricts the view to the given\r\n \t\t// geographical bounds, bouncing the user back if the user tries to pan\r\n \t\t// outside the view. To set the restriction dynamically, use\r\n \t\t// [`setMaxBounds`](#map-setmaxbounds) method.\r\n \t\tmaxBounds: undefined,\r\n\r\n \t\t// @option renderer: Renderer = *\r\n \t\t// The default method for drawing vector layers on the map. `L.SVG`\r\n \t\t// or `L.Canvas` by default depending on browser support.\r\n \t\trenderer: undefined,\r\n\r\n\r\n \t\t// @section Animation Options\r\n \t\t// @option zoomAnimation: Boolean = true\r\n \t\t// Whether the map zoom animation is enabled. By default it's enabled\r\n \t\t// in all browsers that support CSS3 Transitions except Android.\r\n \t\tzoomAnimation: true,\r\n\r\n \t\t// @option zoomAnimationThreshold: Number = 4\r\n \t\t// Won't animate zoom if the zoom difference exceeds this value.\r\n \t\tzoomAnimationThreshold: 4,\r\n\r\n \t\t// @option fadeAnimation: Boolean = true\r\n \t\t// Whether the tile fade animation is enabled. By default it's enabled\r\n \t\t// in all browsers that support CSS3 Transitions except Android.\r\n \t\tfadeAnimation: true,\r\n\r\n \t\t// @option markerZoomAnimation: Boolean = true\r\n \t\t// Whether markers animate their zoom with the zoom animation, if disabled\r\n \t\t// they will disappear for the length of the animation. By default it's\r\n \t\t// enabled in all browsers that support CSS3 Transitions except Android.\r\n \t\tmarkerZoomAnimation: true,\r\n\r\n \t\t// @option transform3DLimit: Number = 2^23\r\n \t\t// Defines the maximum size of a CSS translation transform. The default\r\n \t\t// value should not be changed unless a web browser positions layers in\r\n \t\t// the wrong place after doing a large `panBy`.\r\n \t\ttransform3DLimit: 8388608, // Precision limit of a 32-bit float\r\n\r\n \t\t// @section Interaction Options\r\n \t\t// @option zoomSnap: Number = 1\r\n \t\t// Forces the map's zoom level to always be a multiple of this, particularly\r\n \t\t// right after a [`fitBounds()`](#map-fitbounds) or a pinch-zoom.\r\n \t\t// By default, the zoom level snaps to the nearest integer; lower values\r\n \t\t// (e.g. `0.5` or `0.1`) allow for greater granularity. A value of `0`\r\n \t\t// means the zoom level will not be snapped after `fitBounds` or a pinch-zoom.\r\n \t\tzoomSnap: 1,\r\n\r\n \t\t// @option zoomDelta: Number = 1\r\n \t\t// Controls how much the map's zoom level will change after a\r\n \t\t// [`zoomIn()`](#map-zoomin), [`zoomOut()`](#map-zoomout), pressing `+`\r\n \t\t// or `-` on the keyboard, or using the [zoom controls](#control-zoom).\r\n \t\t// Values smaller than `1` (e.g. `0.5`) allow for greater granularity.\r\n \t\tzoomDelta: 1,\r\n\r\n \t\t// @option trackResize: Boolean = true\r\n \t\t// Whether the map automatically handles browser window resize to update itself.\r\n \t\ttrackResize: true\r\n \t},\r\n\r\n \tinitialize: function (id, options) { // (HTMLElement or String, Object)\r\n \t\toptions = setOptions(this, options);\r\n\r\n \t\t// Make sure to assign internal flags at the beginning,\r\n \t\t// to avoid inconsistent state in some edge cases.\r\n \t\tthis._handlers = [];\r\n \t\tthis._layers = {};\r\n \t\tthis._zoomBoundLayers = {};\r\n \t\tthis._sizeChanged = true;\r\n\r\n \t\tthis._initContainer(id);\r\n \t\tthis._initLayout();\r\n\r\n \t\t// hack for https://github.com/Leaflet/Leaflet/issues/1980\r\n \t\tthis._onResize = bind(this._onResize, this);\r\n\r\n \t\tthis._initEvents();\r\n\r\n \t\tif (options.maxBounds) {\r\n \t\t\tthis.setMaxBounds(options.maxBounds);\r\n \t\t}\r\n\r\n \t\tif (options.zoom !== undefined) {\r\n \t\t\tthis._zoom = this._limitZoom(options.zoom);\r\n \t\t}\r\n\r\n \t\tif (options.center && options.zoom !== undefined) {\r\n \t\t\tthis.setView(toLatLng(options.center), options.zoom, {reset: true});\r\n \t\t}\r\n\r\n \t\tthis.callInitHooks();\r\n\r\n \t\t// don't animate on browsers without hardware-accelerated transitions or old Android/Opera\r\n \t\tthis._zoomAnimated = TRANSITION && Browser.any3d && !Browser.mobileOpera &&\r\n \t\t\t\tthis.options.zoomAnimation;\r\n\r\n \t\t// zoom transitions run with the same duration for all layers, so if one of transitionend events\r\n \t\t// happens after starting zoom animation (propagating to the map pane), we know that it ended globally\r\n \t\tif (this._zoomAnimated) {\r\n \t\t\tthis._createAnimProxy();\r\n \t\t\ton(this._proxy, TRANSITION_END, this._catchTransitionEnd, this);\r\n \t\t}\r\n\r\n \t\tthis._addLayers(this.options.layers);\r\n \t},\r\n\r\n\r\n \t// @section Methods for modifying map state\r\n\r\n \t// @method setView(center: LatLng, zoom: Number, options?: Zoom/pan options): this\r\n \t// Sets the view of the map (geographical center and zoom) with the given\r\n \t// animation options.\r\n \tsetView: function (center, zoom, options) {\r\n\r\n \t\tzoom = zoom === undefined ? this._zoom : this._limitZoom(zoom);\r\n \t\tcenter = this._limitCenter(toLatLng(center), zoom, this.options.maxBounds);\r\n \t\toptions = options || {};\r\n\r\n \t\tthis._stop();\r\n\r\n \t\tif (this._loaded && !options.reset && options !== true) {\r\n\r\n \t\t\tif (options.animate !== undefined) {\r\n \t\t\t\toptions.zoom = extend({animate: options.animate}, options.zoom);\r\n \t\t\t\toptions.pan = extend({animate: options.animate, duration: options.duration}, options.pan);\r\n \t\t\t}\r\n\r\n \t\t\t// try animating pan or zoom\r\n \t\t\tvar moved = (this._zoom !== zoom) ?\r\n \t\t\t\tthis._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) :\r\n \t\t\t\tthis._tryAnimatedPan(center, options.pan);\r\n\r\n \t\t\tif (moved) {\r\n \t\t\t\t// prevent resize handler call, the view will refresh after animation anyway\r\n \t\t\t\tclearTimeout(this._sizeTimer);\r\n \t\t\t\treturn this;\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\t// animation didn't start, just reset the map view\r\n \t\tthis._resetView(center, zoom, options.pan && options.pan.noMoveStart);\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method setZoom(zoom: Number, options?: Zoom/pan options): this\r\n \t// Sets the zoom of the map.\r\n \tsetZoom: function (zoom, options) {\r\n \t\tif (!this._loaded) {\r\n \t\t\tthis._zoom = zoom;\r\n \t\t\treturn this;\r\n \t\t}\r\n \t\treturn this.setView(this.getCenter(), zoom, {zoom: options});\r\n \t},\r\n\r\n \t// @method zoomIn(delta?: Number, options?: Zoom options): this\r\n \t// Increases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n \tzoomIn: function (delta, options) {\r\n \t\tdelta = delta || (Browser.any3d ? this.options.zoomDelta : 1);\r\n \t\treturn this.setZoom(this._zoom + delta, options);\r\n \t},\r\n\r\n \t// @method zoomOut(delta?: Number, options?: Zoom options): this\r\n \t// Decreases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n \tzoomOut: function (delta, options) {\r\n \t\tdelta = delta || (Browser.any3d ? this.options.zoomDelta : 1);\r\n \t\treturn this.setZoom(this._zoom - delta, options);\r\n \t},\r\n\r\n \t// @method setZoomAround(latlng: LatLng, zoom: Number, options: Zoom options): this\r\n \t// Zooms the map while keeping a specified geographical point on the map\r\n \t// stationary (e.g. used internally for scroll zoom and double-click zoom).\r\n \t// @alternative\r\n \t// @method setZoomAround(offset: Point, zoom: Number, options: Zoom options): this\r\n \t// Zooms the map while keeping a specified pixel on the map (relative to the top-left corner) stationary.\r\n \tsetZoomAround: function (latlng, zoom, options) {\r\n \t\tvar scale = this.getZoomScale(zoom),\r\n \t\t viewHalf = this.getSize().divideBy(2),\r\n \t\t containerPoint = latlng instanceof Point ? latlng : this.latLngToContainerPoint(latlng),\r\n\r\n \t\t centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale),\r\n \t\t newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset));\r\n\r\n \t\treturn this.setView(newCenter, zoom, {zoom: options});\r\n \t},\r\n\r\n \t_getBoundsCenterZoom: function (bounds, options) {\r\n\r\n \t\toptions = options || {};\r\n \t\tbounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds);\r\n\r\n \t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n \t\t paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n\r\n \t\t zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR));\r\n\r\n \t\tzoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom;\r\n\r\n \t\tif (zoom === Infinity) {\r\n \t\t\treturn {\r\n \t\t\t\tcenter: bounds.getCenter(),\r\n \t\t\t\tzoom: zoom\r\n \t\t\t};\r\n \t\t}\r\n\r\n \t\tvar paddingOffset = paddingBR.subtract(paddingTL).divideBy(2),\r\n\r\n \t\t swPoint = this.project(bounds.getSouthWest(), zoom),\r\n \t\t nePoint = this.project(bounds.getNorthEast(), zoom),\r\n \t\t center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom);\r\n\r\n \t\treturn {\r\n \t\t\tcenter: center,\r\n \t\t\tzoom: zoom\r\n \t\t};\r\n \t},\r\n\r\n \t// @method fitBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n \t// Sets a map view that contains the given geographical bounds with the\r\n \t// maximum zoom level possible.\r\n \tfitBounds: function (bounds, options) {\r\n\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\tif (!bounds.isValid()) {\r\n \t\t\tthrow new Error('Bounds are not valid.');\r\n \t\t}\r\n\r\n \t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n \t\treturn this.setView(target.center, target.zoom, options);\r\n \t},\r\n\r\n \t// @method fitWorld(options?: fitBounds options): this\r\n \t// Sets a map view that mostly contains the whole world with the maximum\r\n \t// zoom level possible.\r\n \tfitWorld: function (options) {\r\n \t\treturn this.fitBounds([[-90, -180], [90, 180]], options);\r\n \t},\r\n\r\n \t// @method panTo(latlng: LatLng, options?: Pan options): this\r\n \t// Pans the map to a given center.\r\n \tpanTo: function (center, options) { // (LatLng)\r\n \t\treturn this.setView(center, this._zoom, {pan: options});\r\n \t},\r\n\r\n \t// @method panBy(offset: Point, options?: Pan options): this\r\n \t// Pans the map by a given number of pixels (animated).\r\n \tpanBy: function (offset, options) {\r\n \t\toffset = toPoint(offset).round();\r\n \t\toptions = options || {};\r\n\r\n \t\tif (!offset.x && !offset.y) {\r\n \t\t\treturn this.fire('moveend');\r\n \t\t}\r\n \t\t// If we pan too far, Chrome gets issues with tiles\r\n \t\t// and makes them disappear or appear in the wrong place (slightly offset) #2602\r\n \t\tif (options.animate !== true && !this.getSize().contains(offset)) {\r\n \t\t\tthis._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom());\r\n \t\t\treturn this;\r\n \t\t}\r\n\r\n \t\tif (!this._panAnim) {\r\n \t\t\tthis._panAnim = new PosAnimation();\r\n\r\n \t\t\tthis._panAnim.on({\r\n \t\t\t\t'step': this._onPanTransitionStep,\r\n \t\t\t\t'end': this._onPanTransitionEnd\r\n \t\t\t}, this);\r\n \t\t}\r\n\r\n \t\t// don't fire movestart if animating inertia\r\n \t\tif (!options.noMoveStart) {\r\n \t\t\tthis.fire('movestart');\r\n \t\t}\r\n\r\n \t\t// animate pan unless animate: false specified\r\n \t\tif (options.animate !== false) {\r\n \t\t\taddClass(this._mapPane, 'leaflet-pan-anim');\r\n\r\n \t\t\tvar newPos = this._getMapPanePos().subtract(offset).round();\r\n \t\t\tthis._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity);\r\n \t\t} else {\r\n \t\t\tthis._rawPanBy(offset);\r\n \t\t\tthis.fire('move').fire('moveend');\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method flyTo(latlng: LatLng, zoom?: Number, options?: Zoom/pan options): this\r\n \t// Sets the view of the map (geographical center and zoom) performing a smooth\r\n \t// pan-zoom animation.\r\n \tflyTo: function (targetCenter, targetZoom, options) {\r\n\r\n \t\toptions = options || {};\r\n \t\tif (options.animate === false || !Browser.any3d) {\r\n \t\t\treturn this.setView(targetCenter, targetZoom, options);\r\n \t\t}\r\n\r\n \t\tthis._stop();\r\n\r\n \t\tvar from = this.project(this.getCenter()),\r\n \t\t to = this.project(targetCenter),\r\n \t\t size = this.getSize(),\r\n \t\t startZoom = this._zoom;\r\n\r\n \t\ttargetCenter = toLatLng(targetCenter);\r\n \t\ttargetZoom = targetZoom === undefined ? startZoom : targetZoom;\r\n\r\n \t\tvar w0 = Math.max(size.x, size.y),\r\n \t\t w1 = w0 * this.getZoomScale(startZoom, targetZoom),\r\n \t\t u1 = (to.distanceTo(from)) || 1,\r\n \t\t rho = 1.42,\r\n \t\t rho2 = rho * rho;\r\n\r\n \t\tfunction r(i) {\r\n \t\t\tvar s1 = i ? -1 : 1,\r\n \t\t\t s2 = i ? w1 : w0,\r\n \t\t\t t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1,\r\n \t\t\t b1 = 2 * s2 * rho2 * u1,\r\n \t\t\t b = t1 / b1,\r\n \t\t\t sq = Math.sqrt(b * b + 1) - b;\r\n\r\n \t\t\t // workaround for floating point precision bug when sq = 0, log = -Infinite,\r\n \t\t\t // thus triggering an infinite loop in flyTo\r\n \t\t\t var log = sq < 0.000000001 ? -18 : Math.log(sq);\r\n\r\n \t\t\treturn log;\r\n \t\t}\r\n\r\n \t\tfunction sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; }\r\n \t\tfunction cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; }\r\n \t\tfunction tanh(n) { return sinh(n) / cosh(n); }\r\n\r\n \t\tvar r0 = r(0);\r\n\r\n \t\tfunction w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); }\r\n \t\tfunction u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; }\r\n\r\n \t\tfunction easeOut(t) { return 1 - Math.pow(1 - t, 1.5); }\r\n\r\n \t\tvar start = Date.now(),\r\n \t\t S = (r(1) - r0) / rho,\r\n \t\t duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8;\r\n\r\n \t\tfunction frame() {\r\n \t\t\tvar t = (Date.now() - start) / duration,\r\n \t\t\t s = easeOut(t) * S;\r\n\r\n \t\t\tif (t <= 1) {\r\n \t\t\t\tthis._flyToFrame = requestAnimFrame(frame, this);\r\n\r\n \t\t\t\tthis._move(\r\n \t\t\t\t\tthis.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom),\r\n \t\t\t\t\tthis.getScaleZoom(w0 / w(s), startZoom),\r\n \t\t\t\t\t{flyTo: true});\r\n\r\n \t\t\t} else {\r\n \t\t\t\tthis\r\n \t\t\t\t\t._move(targetCenter, targetZoom)\r\n \t\t\t\t\t._moveEnd(true);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tthis._moveStart(true, options.noMoveStart);\r\n\r\n \t\tframe.call(this);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n \t// Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto),\r\n \t// but takes a bounds parameter like [`fitBounds`](#map-fitbounds).\r\n \tflyToBounds: function (bounds, options) {\r\n \t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n \t\treturn this.flyTo(target.center, target.zoom, options);\r\n \t},\r\n\r\n \t// @method setMaxBounds(bounds: LatLngBounds): this\r\n \t// Restricts the map view to the given bounds (see the [maxBounds](#map-maxbounds) option).\r\n \tsetMaxBounds: function (bounds) {\r\n \t\tbounds = toLatLngBounds(bounds);\r\n\r\n \t\tif (this.listens('moveend', this._panInsideMaxBounds)) {\r\n \t\t\tthis.off('moveend', this._panInsideMaxBounds);\r\n \t\t}\r\n\r\n \t\tif (!bounds.isValid()) {\r\n \t\t\tthis.options.maxBounds = null;\r\n \t\t\treturn this;\r\n \t\t}\r\n\r\n \t\tthis.options.maxBounds = bounds;\r\n\r\n \t\tif (this._loaded) {\r\n \t\t\tthis._panInsideMaxBounds();\r\n \t\t}\r\n\r\n \t\treturn this.on('moveend', this._panInsideMaxBounds);\r\n \t},\r\n\r\n \t// @method setMinZoom(zoom: Number): this\r\n \t// Sets the lower limit for the available zoom levels (see the [minZoom](#map-minzoom) option).\r\n \tsetMinZoom: function (zoom) {\r\n \t\tvar oldZoom = this.options.minZoom;\r\n \t\tthis.options.minZoom = zoom;\r\n\r\n \t\tif (this._loaded && oldZoom !== zoom) {\r\n \t\t\tthis.fire('zoomlevelschange');\r\n\r\n \t\t\tif (this.getZoom() < this.options.minZoom) {\r\n \t\t\t\treturn this.setZoom(zoom);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method setMaxZoom(zoom: Number): this\r\n \t// Sets the upper limit for the available zoom levels (see the [maxZoom](#map-maxzoom) option).\r\n \tsetMaxZoom: function (zoom) {\r\n \t\tvar oldZoom = this.options.maxZoom;\r\n \t\tthis.options.maxZoom = zoom;\r\n\r\n \t\tif (this._loaded && oldZoom !== zoom) {\r\n \t\t\tthis.fire('zoomlevelschange');\r\n\r\n \t\t\tif (this.getZoom() > this.options.maxZoom) {\r\n \t\t\t\treturn this.setZoom(zoom);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method panInsideBounds(bounds: LatLngBounds, options?: Pan options): this\r\n \t// Pans the map to the closest view that would lie inside the given bounds (if it's not already), controlling the animation using the options specific, if any.\r\n \tpanInsideBounds: function (bounds, options) {\r\n \t\tthis._enforcingBounds = true;\r\n \t\tvar center = this.getCenter(),\r\n \t\t newCenter = this._limitCenter(center, this._zoom, toLatLngBounds(bounds));\r\n\r\n \t\tif (!center.equals(newCenter)) {\r\n \t\t\tthis.panTo(newCenter, options);\r\n \t\t}\r\n\r\n \t\tthis._enforcingBounds = false;\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method panInside(latlng: LatLng, options?: padding options): this\r\n \t// Pans the map the minimum amount to make the `latlng` visible. Use\r\n \t// padding options to fit the display to more restricted bounds.\r\n \t// If `latlng` is already within the (optionally padded) display bounds,\r\n \t// the map will not be panned.\r\n \tpanInside: function (latlng, options) {\r\n \t\toptions = options || {};\r\n\r\n \t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n \t\t paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n \t\t pixelCenter = this.project(this.getCenter()),\r\n \t\t pixelPoint = this.project(latlng),\r\n \t\t pixelBounds = this.getPixelBounds(),\r\n \t\t paddedBounds = toBounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]),\r\n \t\t paddedSize = paddedBounds.getSize();\r\n\r\n \t\tif (!paddedBounds.contains(pixelPoint)) {\r\n \t\t\tthis._enforcingBounds = true;\r\n \t\t\tvar centerOffset = pixelPoint.subtract(paddedBounds.getCenter());\r\n \t\t\tvar offset = paddedBounds.extend(pixelPoint).getSize().subtract(paddedSize);\r\n \t\t\tpixelCenter.x += centerOffset.x < 0 ? -offset.x : offset.x;\r\n \t\t\tpixelCenter.y += centerOffset.y < 0 ? -offset.y : offset.y;\r\n \t\t\tthis.panTo(this.unproject(pixelCenter), options);\r\n \t\t\tthis._enforcingBounds = false;\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method invalidateSize(options: Zoom/pan options): this\r\n \t// Checks if the map container size changed and updates the map if so —\r\n \t// call it after you've changed the map size dynamically, also animating\r\n \t// pan by default. If `options.pan` is `false`, panning will not occur.\r\n \t// If `options.debounceMoveend` is `true`, it will delay `moveend` event so\r\n \t// that it doesn't happen often even if the method is called many\r\n \t// times in a row.\r\n\r\n \t// @alternative\r\n \t// @method invalidateSize(animate: Boolean): this\r\n \t// Checks if the map container size changed and updates the map if so —\r\n \t// call it after you've changed the map size dynamically, also animating\r\n \t// pan by default.\r\n \tinvalidateSize: function (options) {\r\n \t\tif (!this._loaded) { return this; }\r\n\r\n \t\toptions = extend({\r\n \t\t\tanimate: false,\r\n \t\t\tpan: true\r\n \t\t}, options === true ? {animate: true} : options);\r\n\r\n \t\tvar oldSize = this.getSize();\r\n \t\tthis._sizeChanged = true;\r\n \t\tthis._lastCenter = null;\r\n\r\n \t\tvar newSize = this.getSize(),\r\n \t\t oldCenter = oldSize.divideBy(2).round(),\r\n \t\t newCenter = newSize.divideBy(2).round(),\r\n \t\t offset = oldCenter.subtract(newCenter);\r\n\r\n \t\tif (!offset.x && !offset.y) { return this; }\r\n\r\n \t\tif (options.animate && options.pan) {\r\n \t\t\tthis.panBy(offset);\r\n\r\n \t\t} else {\r\n \t\t\tif (options.pan) {\r\n \t\t\t\tthis._rawPanBy(offset);\r\n \t\t\t}\r\n\r\n \t\t\tthis.fire('move');\r\n\r\n \t\t\tif (options.debounceMoveend) {\r\n \t\t\t\tclearTimeout(this._sizeTimer);\r\n \t\t\t\tthis._sizeTimer = setTimeout(bind(this.fire, this, 'moveend'), 200);\r\n \t\t\t} else {\r\n \t\t\t\tthis.fire('moveend');\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\t// @section Map state change events\r\n \t\t// @event resize: ResizeEvent\r\n \t\t// Fired when the map is resized.\r\n \t\treturn this.fire('resize', {\r\n \t\t\toldSize: oldSize,\r\n \t\t\tnewSize: newSize\r\n \t\t});\r\n \t},\r\n\r\n \t// @section Methods for modifying map state\r\n \t// @method stop(): this\r\n \t// Stops the currently running `panTo` or `flyTo` animation, if any.\r\n \tstop: function () {\r\n \t\tthis.setZoom(this._limitZoom(this._zoom));\r\n \t\tif (!this.options.zoomSnap) {\r\n \t\t\tthis.fire('viewreset');\r\n \t\t}\r\n \t\treturn this._stop();\r\n \t},\r\n\r\n \t// @section Geolocation methods\r\n \t// @method locate(options?: Locate options): this\r\n \t// Tries to locate the user using the Geolocation API, firing a [`locationfound`](#map-locationfound)\r\n \t// event with location data on success or a [`locationerror`](#map-locationerror) event on failure,\r\n \t// and optionally sets the map view to the user's location with respect to\r\n \t// detection accuracy (or to the world view if geolocation failed).\r\n \t// Note that, if your page doesn't use HTTPS, this method will fail in\r\n \t// modern browsers ([Chrome 50 and newer](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins))\r\n \t// See `Locate options` for more details.\r\n \tlocate: function (options) {\r\n\r\n \t\toptions = this._locateOptions = extend({\r\n \t\t\ttimeout: 10000,\r\n \t\t\twatch: false\r\n \t\t\t// setView: false\r\n \t\t\t// maxZoom: <Number>\r\n \t\t\t// maximumAge: 0\r\n \t\t\t// enableHighAccuracy: false\r\n \t\t}, options);\r\n\r\n \t\tif (!('geolocation' in navigator)) {\r\n \t\t\tthis._handleGeolocationError({\r\n \t\t\t\tcode: 0,\r\n \t\t\t\tmessage: 'Geolocation not supported.'\r\n \t\t\t});\r\n \t\t\treturn this;\r\n \t\t}\r\n\r\n \t\tvar onResponse = bind(this._handleGeolocationResponse, this),\r\n \t\t onError = bind(this._handleGeolocationError, this);\r\n\r\n \t\tif (options.watch) {\r\n \t\t\tthis._locationWatchId =\r\n \t\t\t navigator.geolocation.watchPosition(onResponse, onError, options);\r\n \t\t} else {\r\n \t\t\tnavigator.geolocation.getCurrentPosition(onResponse, onError, options);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method stopLocate(): this\r\n \t// Stops watching location previously initiated by `map.locate({watch: true})`\r\n \t// and aborts resetting the map view if map.locate was called with\r\n \t// `{setView: true}`.\r\n \tstopLocate: function () {\r\n \t\tif (navigator.geolocation && navigator.geolocation.clearWatch) {\r\n \t\t\tnavigator.geolocation.clearWatch(this._locationWatchId);\r\n \t\t}\r\n \t\tif (this._locateOptions) {\r\n \t\t\tthis._locateOptions.setView = false;\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_handleGeolocationError: function (error) {\r\n \t\tif (!this._container._leaflet_id) { return; }\r\n\r\n \t\tvar c = error.code,\r\n \t\t message = error.message ||\r\n \t\t (c === 1 ? 'permission denied' :\r\n \t\t (c === 2 ? 'position unavailable' : 'timeout'));\r\n\r\n \t\tif (this._locateOptions.setView && !this._loaded) {\r\n \t\t\tthis.fitWorld();\r\n \t\t}\r\n\r\n \t\t// @section Location events\r\n \t\t// @event locationerror: ErrorEvent\r\n \t\t// Fired when geolocation (using the [`locate`](#map-locate) method) failed.\r\n \t\tthis.fire('locationerror', {\r\n \t\t\tcode: c,\r\n \t\t\tmessage: 'Geolocation error: ' + message + '.'\r\n \t\t});\r\n \t},\r\n\r\n \t_handleGeolocationResponse: function (pos) {\r\n \t\tif (!this._container._leaflet_id) { return; }\r\n\r\n \t\tvar lat = pos.coords.latitude,\r\n \t\t lng = pos.coords.longitude,\r\n \t\t latlng = new LatLng(lat, lng),\r\n \t\t bounds = latlng.toBounds(pos.coords.accuracy * 2),\r\n \t\t options = this._locateOptions;\r\n\r\n \t\tif (options.setView) {\r\n \t\t\tvar zoom = this.getBoundsZoom(bounds);\r\n \t\t\tthis.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom);\r\n \t\t}\r\n\r\n \t\tvar data = {\r\n \t\t\tlatlng: latlng,\r\n \t\t\tbounds: bounds,\r\n \t\t\ttimestamp: pos.timestamp\r\n \t\t};\r\n\r\n \t\tfor (var i in pos.coords) {\r\n \t\t\tif (typeof pos.coords[i] === 'number') {\r\n \t\t\t\tdata[i] = pos.coords[i];\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\t// @event locationfound: LocationEvent\r\n \t\t// Fired when geolocation (using the [`locate`](#map-locate) method)\r\n \t\t// went successfully.\r\n \t\tthis.fire('locationfound', data);\r\n \t},\r\n\r\n \t// TODO Appropriate docs section?\r\n \t// @section Other Methods\r\n \t// @method addHandler(name: String, HandlerClass: Function): this\r\n \t// Adds a new `Handler` to the map, given its name and constructor function.\r\n \taddHandler: function (name, HandlerClass) {\r\n \t\tif (!HandlerClass) { return this; }\r\n\r\n \t\tvar handler = this[name] = new HandlerClass(this);\r\n\r\n \t\tthis._handlers.push(handler);\r\n\r\n \t\tif (this.options[name]) {\r\n \t\t\thandler.enable();\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method remove(): this\r\n \t// Destroys the map and clears all related event listeners.\r\n \tremove: function () {\r\n\r\n \t\tthis._initEvents(true);\r\n \t\tif (this.options.maxBounds) { this.off('moveend', this._panInsideMaxBounds); }\r\n\r\n \t\tif (this._containerId !== this._container._leaflet_id) {\r\n \t\t\tthrow new Error('Map container is being reused by another instance');\r\n \t\t}\r\n\r\n \t\ttry {\r\n \t\t\t// throws error in IE6-8\r\n \t\t\tdelete this._container._leaflet_id;\r\n \t\t\tdelete this._containerId;\r\n \t\t} catch (e) {\r\n \t\t\t/*eslint-disable */\r\n \t\t\tthis._container._leaflet_id = undefined;\r\n \t\t\t/* eslint-enable */\r\n \t\t\tthis._containerId = undefined;\r\n \t\t}\r\n\r\n \t\tif (this._locationWatchId !== undefined) {\r\n \t\t\tthis.stopLocate();\r\n \t\t}\r\n\r\n \t\tthis._stop();\r\n\r\n \t\tremove(this._mapPane);\r\n\r\n \t\tif (this._clearControlPos) {\r\n \t\t\tthis._clearControlPos();\r\n \t\t}\r\n \t\tif (this._resizeRequest) {\r\n \t\t\tcancelAnimFrame(this._resizeRequest);\r\n \t\t\tthis._resizeRequest = null;\r\n \t\t}\r\n\r\n \t\tthis._clearHandlers();\r\n\r\n \t\tif (this._loaded) {\r\n \t\t\t// @section Map state change events\r\n \t\t\t// @event unload: Event\r\n \t\t\t// Fired when the map is destroyed with [remove](#map-remove) method.\r\n \t\t\tthis.fire('unload');\r\n \t\t}\r\n\r\n \t\tvar i;\r\n \t\tfor (i in this._layers) {\r\n \t\t\tthis._layers[i].remove();\r\n \t\t}\r\n \t\tfor (i in this._panes) {\r\n \t\t\tremove(this._panes[i]);\r\n \t\t}\r\n\r\n \t\tthis._layers = [];\r\n \t\tthis._panes = [];\r\n \t\tdelete this._mapPane;\r\n \t\tdelete this._renderer;\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @section Other Methods\r\n \t// @method createPane(name: String, container?: HTMLElement): HTMLElement\r\n \t// Creates a new [map pane](#map-pane) with the given name if it doesn't exist already,\r\n \t// then returns it. The pane is created as a child of `container`, or\r\n \t// as a child of the main map pane if not set.\r\n \tcreatePane: function (name, container) {\r\n \t\tvar className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''),\r\n \t\t pane = create$1('div', className, container || this._mapPane);\r\n\r\n \t\tif (name) {\r\n \t\t\tthis._panes[name] = pane;\r\n \t\t}\r\n \t\treturn pane;\r\n \t},\r\n\r\n \t// @section Methods for Getting Map State\r\n\r\n \t// @method getCenter(): LatLng\r\n \t// Returns the geographical center of the map view\r\n \tgetCenter: function () {\r\n \t\tthis._checkIfLoaded();\r\n\r\n \t\tif (this._lastCenter && !this._moved()) {\r\n \t\t\treturn this._lastCenter.clone();\r\n \t\t}\r\n \t\treturn this.layerPointToLatLng(this._getCenterLayerPoint());\r\n \t},\r\n\r\n \t// @method getZoom(): Number\r\n \t// Returns the current zoom level of the map view\r\n \tgetZoom: function () {\r\n \t\treturn this._zoom;\r\n \t},\r\n\r\n \t// @method getBounds(): LatLngBounds\r\n \t// Returns the geographical bounds visible in the current map view\r\n \tgetBounds: function () {\r\n \t\tvar bounds = this.getPixelBounds(),\r\n \t\t sw = this.unproject(bounds.getBottomLeft()),\r\n \t\t ne = this.unproject(bounds.getTopRight());\r\n\r\n \t\treturn new LatLngBounds(sw, ne);\r\n \t},\r\n\r\n \t// @method getMinZoom(): Number\r\n \t// Returns the minimum zoom level of the map (if set in the `minZoom` option of the map or of any layers), or `0` by default.\r\n \tgetMinZoom: function () {\r\n \t\treturn this.options.minZoom === undefined ? this._layersMinZoom || 0 : this.options.minZoom;\r\n \t},\r\n\r\n \t// @method getMaxZoom(): Number\r\n \t// Returns the maximum zoom level of the map (if set in the `maxZoom` option of the map or of any layers).\r\n \tgetMaxZoom: function () {\r\n \t\treturn this.options.maxZoom === undefined ?\r\n \t\t\t(this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) :\r\n \t\t\tthis.options.maxZoom;\r\n \t},\r\n\r\n \t// @method getBoundsZoom(bounds: LatLngBounds, inside?: Boolean, padding?: Point): Number\r\n \t// Returns the maximum zoom level on which the given bounds fit to the map\r\n \t// view in its entirety. If `inside` (optional) is set to `true`, the method\r\n \t// instead returns the minimum zoom level on which the map view fits into\r\n \t// the given bounds in its entirety.\r\n \tgetBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number\r\n \t\tbounds = toLatLngBounds(bounds);\r\n \t\tpadding = toPoint(padding || [0, 0]);\r\n\r\n \t\tvar zoom = this.getZoom() || 0,\r\n \t\t min = this.getMinZoom(),\r\n \t\t max = this.getMaxZoom(),\r\n \t\t nw = bounds.getNorthWest(),\r\n \t\t se = bounds.getSouthEast(),\r\n \t\t size = this.getSize().subtract(padding),\r\n \t\t boundsSize = toBounds(this.project(se, zoom), this.project(nw, zoom)).getSize(),\r\n \t\t snap = Browser.any3d ? this.options.zoomSnap : 1,\r\n \t\t scalex = size.x / boundsSize.x,\r\n \t\t scaley = size.y / boundsSize.y,\r\n \t\t scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley);\r\n\r\n \t\tzoom = this.getScaleZoom(scale, zoom);\r\n\r\n \t\tif (snap) {\r\n \t\t\tzoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level\r\n \t\t\tzoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap;\r\n \t\t}\r\n\r\n \t\treturn Math.max(min, Math.min(max, zoom));\r\n \t},\r\n\r\n \t// @method getSize(): Point\r\n \t// Returns the current size of the map container (in pixels).\r\n \tgetSize: function () {\r\n \t\tif (!this._size || this._sizeChanged) {\r\n \t\t\tthis._size = new Point(\r\n \t\t\t\tthis._container.clientWidth || 0,\r\n \t\t\t\tthis._container.clientHeight || 0);\r\n\r\n \t\t\tthis._sizeChanged = false;\r\n \t\t}\r\n \t\treturn this._size.clone();\r\n \t},\r\n\r\n \t// @method getPixelBounds(): Bounds\r\n \t// Returns the bounds of the current map view in projected pixel\r\n \t// coordinates (sometimes useful in layer and overlay implementations).\r\n \tgetPixelBounds: function (center, zoom) {\r\n \t\tvar topLeftPoint = this._getTopLeftPoint(center, zoom);\r\n \t\treturn new Bounds(topLeftPoint, topLeftPoint.add(this.getSize()));\r\n \t},\r\n\r\n \t// TODO: Check semantics - isn't the pixel origin the 0,0 coord relative to\r\n \t// the map pane? \"left point of the map layer\" can be confusing, specially\r\n \t// since there can be negative offsets.\r\n \t// @method getPixelOrigin(): Point\r\n \t// Returns the projected pixel coordinates of the top left point of\r\n \t// the map layer (useful in custom layer and overlay implementations).\r\n \tgetPixelOrigin: function () {\r\n \t\tthis._checkIfLoaded();\r\n \t\treturn this._pixelOrigin;\r\n \t},\r\n\r\n \t// @method getPixelWorldBounds(zoom?: Number): Bounds\r\n \t// Returns the world's bounds in pixel coordinates for zoom level `zoom`.\r\n \t// If `zoom` is omitted, the map's current zoom level is used.\r\n \tgetPixelWorldBounds: function (zoom) {\r\n \t\treturn this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom);\r\n \t},\r\n\r\n \t// @section Other Methods\r\n\r\n \t// @method getPane(pane: String|HTMLElement): HTMLElement\r\n \t// Returns a [map pane](#map-pane), given its name or its HTML element (its identity).\r\n \tgetPane: function (pane) {\r\n \t\treturn typeof pane === 'string' ? this._panes[pane] : pane;\r\n \t},\r\n\r\n \t// @method getPanes(): Object\r\n \t// Returns a plain object containing the names of all [panes](#map-pane) as keys and\r\n \t// the panes as values.\r\n \tgetPanes: function () {\r\n \t\treturn this._panes;\r\n \t},\r\n\r\n \t// @method getContainer: HTMLElement\r\n \t// Returns the HTML element that contains the map.\r\n \tgetContainer: function () {\r\n \t\treturn this._container;\r\n \t},\r\n\r\n\r\n \t// @section Conversion Methods\r\n\r\n \t// @method getZoomScale(toZoom: Number, fromZoom: Number): Number\r\n \t// Returns the scale factor to be applied to a map transition from zoom level\r\n \t// `fromZoom` to `toZoom`. Used internally to help with zoom animations.\r\n \tgetZoomScale: function (toZoom, fromZoom) {\r\n \t\t// TODO replace with universal implementation after refactoring projections\r\n \t\tvar crs = this.options.crs;\r\n \t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n \t\treturn crs.scale(toZoom) / crs.scale(fromZoom);\r\n \t},\r\n\r\n \t// @method getScaleZoom(scale: Number, fromZoom: Number): Number\r\n \t// Returns the zoom level that the map would end up at, if it is at `fromZoom`\r\n \t// level and everything is scaled by a factor of `scale`. Inverse of\r\n \t// [`getZoomScale`](#map-getZoomScale).\r\n \tgetScaleZoom: function (scale, fromZoom) {\r\n \t\tvar crs = this.options.crs;\r\n \t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n \t\tvar zoom = crs.zoom(scale * crs.scale(fromZoom));\r\n \t\treturn isNaN(zoom) ? Infinity : zoom;\r\n \t},\r\n\r\n \t// @method project(latlng: LatLng, zoom: Number): Point\r\n \t// Projects a geographical coordinate `LatLng` according to the projection\r\n \t// of the map's CRS, then scales it according to `zoom` and the CRS's\r\n \t// `Transformation`. The result is pixel coordinate relative to\r\n \t// the CRS origin.\r\n \tproject: function (latlng, zoom) {\r\n \t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n \t\treturn this.options.crs.latLngToPoint(toLatLng(latlng), zoom);\r\n \t},\r\n\r\n \t// @method unproject(point: Point, zoom: Number): LatLng\r\n \t// Inverse of [`project`](#map-project).\r\n \tunproject: function (point, zoom) {\r\n \t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n \t\treturn this.options.crs.pointToLatLng(toPoint(point), zoom);\r\n \t},\r\n\r\n \t// @method layerPointToLatLng(point: Point): LatLng\r\n \t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n \t// returns the corresponding geographical coordinate (for the current zoom level).\r\n \tlayerPointToLatLng: function (point) {\r\n \t\tvar projectedPoint = toPoint(point).add(this.getPixelOrigin());\r\n \t\treturn this.unproject(projectedPoint);\r\n \t},\r\n\r\n \t// @method latLngToLayerPoint(latlng: LatLng): Point\r\n \t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n \t// relative to the [origin pixel](#map-getpixelorigin).\r\n \tlatLngToLayerPoint: function (latlng) {\r\n \t\tvar projectedPoint = this.project(toLatLng(latlng))._round();\r\n \t\treturn projectedPoint._subtract(this.getPixelOrigin());\r\n \t},\r\n\r\n \t// @method wrapLatLng(latlng: LatLng): LatLng\r\n \t// Returns a `LatLng` where `lat` and `lng` has been wrapped according to the\r\n \t// map's CRS's `wrapLat` and `wrapLng` properties, if they are outside the\r\n \t// CRS's bounds.\r\n \t// By default this means longitude is wrapped around the dateline so its\r\n \t// value is between -180 and +180 degrees.\r\n \twrapLatLng: function (latlng) {\r\n \t\treturn this.options.crs.wrapLatLng(toLatLng(latlng));\r\n \t},\r\n\r\n \t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n \t// Returns a `LatLngBounds` with the same size as the given one, ensuring that\r\n \t// its center is within the CRS's bounds.\r\n \t// By default this means the center longitude is wrapped around the dateline so its\r\n \t// value is between -180 and +180 degrees, and the majority of the bounds\r\n \t// overlaps the CRS's bounds.\r\n \twrapLatLngBounds: function (latlng) {\r\n \t\treturn this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng));\r\n \t},\r\n\r\n \t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n \t// Returns the distance between two geographical coordinates according to\r\n \t// the map's CRS. By default this measures distance in meters.\r\n \tdistance: function (latlng1, latlng2) {\r\n \t\treturn this.options.crs.distance(toLatLng(latlng1), toLatLng(latlng2));\r\n \t},\r\n\r\n \t// @method containerPointToLayerPoint(point: Point): Point\r\n \t// Given a pixel coordinate relative to the map container, returns the corresponding\r\n \t// pixel coordinate relative to the [origin pixel](#map-getpixelorigin).\r\n \tcontainerPointToLayerPoint: function (point) { // (Point)\r\n \t\treturn toPoint(point).subtract(this._getMapPanePos());\r\n \t},\r\n\r\n \t// @method layerPointToContainerPoint(point: Point): Point\r\n \t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n \t// returns the corresponding pixel coordinate relative to the map container.\r\n \tlayerPointToContainerPoint: function (point) { // (Point)\r\n \t\treturn toPoint(point).add(this._getMapPanePos());\r\n \t},\r\n\r\n \t// @method containerPointToLatLng(point: Point): LatLng\r\n \t// Given a pixel coordinate relative to the map container, returns\r\n \t// the corresponding geographical coordinate (for the current zoom level).\r\n \tcontainerPointToLatLng: function (point) {\r\n \t\tvar layerPoint = this.containerPointToLayerPoint(toPoint(point));\r\n \t\treturn this.layerPointToLatLng(layerPoint);\r\n \t},\r\n\r\n \t// @method latLngToContainerPoint(latlng: LatLng): Point\r\n \t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n \t// relative to the map container.\r\n \tlatLngToContainerPoint: function (latlng) {\r\n \t\treturn this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng)));\r\n \t},\r\n\r\n \t// @method mouseEventToContainerPoint(ev: MouseEvent): Point\r\n \t// Given a MouseEvent object, returns the pixel coordinate relative to the\r\n \t// map container where the event took place.\r\n \tmouseEventToContainerPoint: function (e) {\r\n \t\treturn getMousePosition(e, this._container);\r\n \t},\r\n\r\n \t// @method mouseEventToLayerPoint(ev: MouseEvent): Point\r\n \t// Given a MouseEvent object, returns the pixel coordinate relative to\r\n \t// the [origin pixel](#map-getpixelorigin) where the event took place.\r\n \tmouseEventToLayerPoint: function (e) {\r\n \t\treturn this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e));\r\n \t},\r\n\r\n \t// @method mouseEventToLatLng(ev: MouseEvent): LatLng\r\n \t// Given a MouseEvent object, returns geographical coordinate where the\r\n \t// event took place.\r\n \tmouseEventToLatLng: function (e) { // (MouseEvent)\r\n \t\treturn this.layerPointToLatLng(this.mouseEventToLayerPoint(e));\r\n \t},\r\n\r\n\r\n \t// map initialization methods\r\n\r\n \t_initContainer: function (id) {\r\n \t\tvar container = this._container = get(id);\r\n\r\n \t\tif (!container) {\r\n \t\t\tthrow new Error('Map container not found.');\r\n \t\t} else if (container._leaflet_id) {\r\n \t\t\tthrow new Error('Map container is already initialized.');\r\n \t\t}\r\n\r\n \t\ton(container, 'scroll', this._onScroll, this);\r\n \t\tthis._containerId = stamp(container);\r\n \t},\r\n\r\n \t_initLayout: function () {\r\n \t\tvar container = this._container;\r\n\r\n \t\tthis._fadeAnimated = this.options.fadeAnimation && Browser.any3d;\r\n\r\n \t\taddClass(container, 'leaflet-container' +\r\n \t\t\t(Browser.touch ? ' leaflet-touch' : '') +\r\n \t\t\t(Browser.retina ? ' leaflet-retina' : '') +\r\n \t\t\t(Browser.ielt9 ? ' leaflet-oldie' : '') +\r\n \t\t\t(Browser.safari ? ' leaflet-safari' : '') +\r\n \t\t\t(this._fadeAnimated ? ' leaflet-fade-anim' : ''));\r\n\r\n \t\tvar position = getStyle(container, 'position');\r\n\r\n \t\tif (position !== 'absolute' && position !== 'relative' && position !== 'fixed' && position !== 'sticky') {\r\n \t\t\tcontainer.style.position = 'relative';\r\n \t\t}\r\n\r\n \t\tthis._initPanes();\r\n\r\n \t\tif (this._initControlPos) {\r\n \t\t\tthis._initControlPos();\r\n \t\t}\r\n \t},\r\n\r\n \t_initPanes: function () {\r\n \t\tvar panes = this._panes = {};\r\n \t\tthis._paneRenderers = {};\r\n\r\n \t\t// @section\r\n \t\t//\r\n \t\t// Panes are DOM elements used to control the ordering of layers on the map. You\r\n \t\t// can access panes with [`map.getPane`](#map-getpane) or\r\n \t\t// [`map.getPanes`](#map-getpanes) methods. New panes can be created with the\r\n \t\t// [`map.createPane`](#map-createpane) method.\r\n \t\t//\r\n \t\t// Every map has the following default panes that differ only in zIndex.\r\n \t\t//\r\n \t\t// @pane mapPane: HTMLElement = 'auto'\r\n \t\t// Pane that contains all other map panes\r\n\r\n \t\tthis._mapPane = this.createPane('mapPane', this._container);\r\n \t\tsetPosition(this._mapPane, new Point(0, 0));\r\n\r\n \t\t// @pane tilePane: HTMLElement = 200\r\n \t\t// Pane for `GridLayer`s and `TileLayer`s\r\n \t\tthis.createPane('tilePane');\r\n \t\t// @pane overlayPane: HTMLElement = 400\r\n \t\t// Pane for vectors (`Path`s, like `Polyline`s and `Polygon`s), `ImageOverlay`s and `VideoOverlay`s\r\n \t\tthis.createPane('overlayPane');\r\n \t\t// @pane shadowPane: HTMLElement = 500\r\n \t\t// Pane for overlay shadows (e.g. `Marker` shadows)\r\n \t\tthis.createPane('shadowPane');\r\n \t\t// @pane markerPane: HTMLElement = 600\r\n \t\t// Pane for `Icon`s of `Marker`s\r\n \t\tthis.createPane('markerPane');\r\n \t\t// @pane tooltipPane: HTMLElement = 650\r\n \t\t// Pane for `Tooltip`s.\r\n \t\tthis.createPane('tooltipPane');\r\n \t\t// @pane popupPane: HTMLElement = 700\r\n \t\t// Pane for `Popup`s.\r\n \t\tthis.createPane('popupPane');\r\n\r\n \t\tif (!this.options.markerZoomAnimation) {\r\n \t\t\taddClass(panes.markerPane, 'leaflet-zoom-hide');\r\n \t\t\taddClass(panes.shadowPane, 'leaflet-zoom-hide');\r\n \t\t}\r\n \t},\r\n\r\n\r\n \t// private methods that modify map state\r\n\r\n \t// @section Map state change events\r\n \t_resetView: function (center, zoom, noMoveStart) {\r\n \t\tsetPosition(this._mapPane, new Point(0, 0));\r\n\r\n \t\tvar loading = !this._loaded;\r\n \t\tthis._loaded = true;\r\n \t\tzoom = this._limitZoom(zoom);\r\n\r\n \t\tthis.fire('viewprereset');\r\n\r\n \t\tvar zoomChanged = this._zoom !== zoom;\r\n \t\tthis\r\n \t\t\t._moveStart(zoomChanged, noMoveStart)\r\n \t\t\t._move(center, zoom)\r\n \t\t\t._moveEnd(zoomChanged);\r\n\r\n \t\t// @event viewreset: Event\r\n \t\t// Fired when the map needs to redraw its content (this usually happens\r\n \t\t// on map zoom or load). Very useful for creating custom overlays.\r\n \t\tthis.fire('viewreset');\r\n\r\n \t\t// @event load: Event\r\n \t\t// Fired when the map is initialized (when its center and zoom are set\r\n \t\t// for the first time).\r\n \t\tif (loading) {\r\n \t\t\tthis.fire('load');\r\n \t\t}\r\n \t},\r\n\r\n \t_moveStart: function (zoomChanged, noMoveStart) {\r\n \t\t// @event zoomstart: Event\r\n \t\t// Fired when the map zoom is about to change (e.g. before zoom animation).\r\n \t\t// @event movestart: Event\r\n \t\t// Fired when the view of the map starts changing (e.g. user starts dragging the map).\r\n \t\tif (zoomChanged) {\r\n \t\t\tthis.fire('zoomstart');\r\n \t\t}\r\n \t\tif (!noMoveStart) {\r\n \t\t\tthis.fire('movestart');\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_move: function (center, zoom, data, supressEvent) {\r\n \t\tif (zoom === undefined) {\r\n \t\t\tzoom = this._zoom;\r\n \t\t}\r\n \t\tvar zoomChanged = this._zoom !== zoom;\r\n\r\n \t\tthis._zoom = zoom;\r\n \t\tthis._lastCenter = center;\r\n \t\tthis._pixelOrigin = this._getNewPixelOrigin(center);\r\n\r\n \t\tif (!supressEvent) {\r\n \t\t\t// @event zoom: Event\r\n \t\t\t// Fired repeatedly during any change in zoom level,\r\n \t\t\t// including zoom and fly animations.\r\n \t\t\tif (zoomChanged || (data && data.pinch)) {\t// Always fire 'zoom' if pinching because #3530\r\n \t\t\t\tthis.fire('zoom', data);\r\n \t\t\t}\r\n\r\n \t\t\t// @event move: Event\r\n \t\t\t// Fired repeatedly during any movement of the map,\r\n \t\t\t// including pan and fly animations.\r\n \t\t\tthis.fire('move', data);\r\n \t\t} else if (data && data.pinch) {\t// Always fire 'zoom' if pinching because #3530\r\n \t\t\tthis.fire('zoom', data);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_moveEnd: function (zoomChanged) {\r\n \t\t// @event zoomend: Event\r\n \t\t// Fired when the map zoom changed, after any animations.\r\n \t\tif (zoomChanged) {\r\n \t\t\tthis.fire('zoomend');\r\n \t\t}\r\n\r\n \t\t// @event moveend: Event\r\n \t\t// Fired when the center of the map stops changing\r\n \t\t// (e.g. user stopped dragging the map or after non-centered zoom).\r\n \t\treturn this.fire('moveend');\r\n \t},\r\n\r\n \t_stop: function () {\r\n \t\tcancelAnimFrame(this._flyToFrame);\r\n \t\tif (this._panAnim) {\r\n \t\t\tthis._panAnim.stop();\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_rawPanBy: function (offset) {\r\n \t\tsetPosition(this._mapPane, this._getMapPanePos().subtract(offset));\r\n \t},\r\n\r\n \t_getZoomSpan: function () {\r\n \t\treturn this.getMaxZoom() - this.getMinZoom();\r\n \t},\r\n\r\n \t_panInsideMaxBounds: function () {\r\n \t\tif (!this._enforcingBounds) {\r\n \t\t\tthis.panInsideBounds(this.options.maxBounds);\r\n \t\t}\r\n \t},\r\n\r\n \t_checkIfLoaded: function () {\r\n \t\tif (!this._loaded) {\r\n \t\t\tthrow new Error('Set map center and zoom first.');\r\n \t\t}\r\n \t},\r\n\r\n \t// DOM event handling\r\n\r\n \t// @section Interaction events\r\n \t_initEvents: function (remove) {\r\n \t\tthis._targets = {};\r\n \t\tthis._targets[stamp(this._container)] = this;\r\n\r\n \t\tvar onOff = remove ? off : on;\r\n\r\n \t\t// @event click: MouseEvent\r\n \t\t// Fired when the user clicks (or taps) the map.\r\n \t\t// @event dblclick: MouseEvent\r\n \t\t// Fired when the user double-clicks (or double-taps) the map.\r\n \t\t// @event mousedown: MouseEvent\r\n \t\t// Fired when the user pushes the mouse button on the map.\r\n \t\t// @event mouseup: MouseEvent\r\n \t\t// Fired when the user releases the mouse button on the map.\r\n \t\t// @event mouseover: MouseEvent\r\n \t\t// Fired when the mouse enters the map.\r\n \t\t// @event mouseout: MouseEvent\r\n \t\t// Fired when the mouse leaves the map.\r\n \t\t// @event mousemove: MouseEvent\r\n \t\t// Fired while the mouse moves over the map.\r\n \t\t// @event contextmenu: MouseEvent\r\n \t\t// Fired when the user pushes the right mouse button on the map, prevents\r\n \t\t// default browser context menu from showing if there are listeners on\r\n \t\t// this event. Also fired on mobile when the user holds a single touch\r\n \t\t// for a second (also called long press).\r\n \t\t// @event keypress: KeyboardEvent\r\n \t\t// Fired when the user presses a key from the keyboard that produces a character value while the map is focused.\r\n \t\t// @event keydown: KeyboardEvent\r\n \t\t// Fired when the user presses a key from the keyboard while the map is focused. Unlike the `keypress` event,\r\n \t\t// the `keydown` event is fired for keys that produce a character value and for keys\r\n \t\t// that do not produce a character value.\r\n \t\t// @event keyup: KeyboardEvent\r\n \t\t// Fired when the user releases a key from the keyboard while the map is focused.\r\n \t\tonOff(this._container, 'click dblclick mousedown mouseup ' +\r\n \t\t\t'mouseover mouseout mousemove contextmenu keypress keydown keyup', this._handleDOMEvent, this);\r\n\r\n \t\tif (this.options.trackResize) {\r\n \t\t\tonOff(window, 'resize', this._onResize, this);\r\n \t\t}\r\n\r\n \t\tif (Browser.any3d && this.options.transform3DLimit) {\r\n \t\t\t(remove ? this.off : this.on).call(this, 'moveend', this._onMoveEnd);\r\n \t\t}\r\n \t},\r\n\r\n \t_onResize: function () {\r\n \t\tcancelAnimFrame(this._resizeRequest);\r\n \t\tthis._resizeRequest = requestAnimFrame(\r\n \t\t function () { this.invalidateSize({debounceMoveend: true}); }, this);\r\n \t},\r\n\r\n \t_onScroll: function () {\r\n \t\tthis._container.scrollTop = 0;\r\n \t\tthis._container.scrollLeft = 0;\r\n \t},\r\n\r\n \t_onMoveEnd: function () {\r\n \t\tvar pos = this._getMapPanePos();\r\n \t\tif (Math.max(Math.abs(pos.x), Math.abs(pos.y)) >= this.options.transform3DLimit) {\r\n \t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=1203873 but Webkit also have\r\n \t\t\t// a pixel offset on very high values, see: https://jsfiddle.net/dg6r5hhb/\r\n \t\t\tthis._resetView(this.getCenter(), this.getZoom());\r\n \t\t}\r\n \t},\r\n\r\n \t_findEventTargets: function (e, type) {\r\n \t\tvar targets = [],\r\n \t\t target,\r\n \t\t isHover = type === 'mouseout' || type === 'mouseover',\r\n \t\t src = e.target || e.srcElement,\r\n \t\t dragging = false;\r\n\r\n \t\twhile (src) {\r\n \t\t\ttarget = this._targets[stamp(src)];\r\n \t\t\tif (target && (type === 'click' || type === 'preclick') && this._draggableMoved(target)) {\r\n \t\t\t\t// Prevent firing click after you just dragged an object.\r\n \t\t\t\tdragging = true;\r\n \t\t\t\tbreak;\r\n \t\t\t}\r\n \t\t\tif (target && target.listens(type, true)) {\r\n \t\t\t\tif (isHover && !isExternalTarget(src, e)) { break; }\r\n \t\t\t\ttargets.push(target);\r\n \t\t\t\tif (isHover) { break; }\r\n \t\t\t}\r\n \t\t\tif (src === this._container) { break; }\r\n \t\t\tsrc = src.parentNode;\r\n \t\t}\r\n \t\tif (!targets.length && !dragging && !isHover && this.listens(type, true)) {\r\n \t\t\ttargets = [this];\r\n \t\t}\r\n \t\treturn targets;\r\n \t},\r\n\r\n \t_isClickDisabled: function (el) {\r\n \t\twhile (el && el !== this._container) {\r\n \t\t\tif (el['_leaflet_disable_click']) { return true; }\r\n \t\t\tel = el.parentNode;\r\n \t\t}\r\n \t},\r\n\r\n \t_handleDOMEvent: function (e) {\r\n \t\tvar el = (e.target || e.srcElement);\r\n \t\tif (!this._loaded || el['_leaflet_disable_events'] || e.type === 'click' && this._isClickDisabled(el)) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tvar type = e.type;\r\n\r\n \t\tif (type === 'mousedown') {\r\n \t\t\t// prevents outline when clicking on keyboard-focusable element\r\n \t\t\tpreventOutline(el);\r\n \t\t}\r\n\r\n \t\tthis._fireDOMEvent(e, type);\r\n \t},\r\n\r\n \t_mouseEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'],\r\n\r\n \t_fireDOMEvent: function (e, type, canvasTargets) {\r\n\r\n \t\tif (e.type === 'click') {\r\n \t\t\t// Fire a synthetic 'preclick' event which propagates up (mainly for closing popups).\r\n \t\t\t// @event preclick: MouseEvent\r\n \t\t\t// Fired before mouse click on the map (sometimes useful when you\r\n \t\t\t// want something to happen on click before any existing click\r\n \t\t\t// handlers start running).\r\n \t\t\tvar synth = extend({}, e);\r\n \t\t\tsynth.type = 'preclick';\r\n \t\t\tthis._fireDOMEvent(synth, synth.type, canvasTargets);\r\n \t\t}\r\n\r\n \t\t// Find the layer the event is propagating from and its parents.\r\n \t\tvar targets = this._findEventTargets(e, type);\r\n\r\n \t\tif (canvasTargets) {\r\n \t\t\tvar filtered = []; // pick only targets with listeners\r\n \t\t\tfor (var i = 0; i < canvasTargets.length; i++) {\r\n \t\t\t\tif (canvasTargets[i].listens(type, true)) {\r\n \t\t\t\t\tfiltered.push(canvasTargets[i]);\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\ttargets = filtered.concat(targets);\r\n \t\t}\r\n\r\n \t\tif (!targets.length) { return; }\r\n\r\n \t\tif (type === 'contextmenu') {\r\n \t\t\tpreventDefault(e);\r\n \t\t}\r\n\r\n \t\tvar target = targets[0];\r\n \t\tvar data = {\r\n \t\t\toriginalEvent: e\r\n \t\t};\r\n\r\n \t\tif (e.type !== 'keypress' && e.type !== 'keydown' && e.type !== 'keyup') {\r\n \t\t\tvar isMarker = target.getLatLng && (!target._radius || target._radius <= 10);\r\n \t\t\tdata.containerPoint = isMarker ?\r\n \t\t\t\tthis.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e);\r\n \t\t\tdata.layerPoint = this.containerPointToLayerPoint(data.containerPoint);\r\n \t\t\tdata.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint);\r\n \t\t}\r\n\r\n \t\tfor (i = 0; i < targets.length; i++) {\r\n \t\t\ttargets[i].fire(type, data, true);\r\n \t\t\tif (data.originalEvent._stopped ||\r\n \t\t\t\t(targets[i].options.bubblingMouseEvents === false && indexOf(this._mouseEvents, type) !== -1)) { return; }\r\n \t\t}\r\n \t},\r\n\r\n \t_draggableMoved: function (obj) {\r\n \t\tobj = obj.dragging && obj.dragging.enabled() ? obj : this;\r\n \t\treturn (obj.dragging && obj.dragging.moved()) || (this.boxZoom && this.boxZoom.moved());\r\n \t},\r\n\r\n \t_clearHandlers: function () {\r\n \t\tfor (var i = 0, len = this._handlers.length; i < len; i++) {\r\n \t\t\tthis._handlers[i].disable();\r\n \t\t}\r\n \t},\r\n\r\n \t// @section Other Methods\r\n\r\n \t// @method whenReady(fn: Function, context?: Object): this\r\n \t// Runs the given function `fn` when the map gets initialized with\r\n \t// a view (center and zoom) and at least one layer, or immediately\r\n \t// if it's already initialized, optionally passing a function context.\r\n \twhenReady: function (callback, context) {\r\n \t\tif (this._loaded) {\r\n \t\t\tcallback.call(context || this, {target: this});\r\n \t\t} else {\r\n \t\t\tthis.on('load', callback, context);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n\r\n \t// private methods for getting map state\r\n\r\n \t_getMapPanePos: function () {\r\n \t\treturn getPosition(this._mapPane) || new Point(0, 0);\r\n \t},\r\n\r\n \t_moved: function () {\r\n \t\tvar pos = this._getMapPanePos();\r\n \t\treturn pos && !pos.equals([0, 0]);\r\n \t},\r\n\r\n \t_getTopLeftPoint: function (center, zoom) {\r\n \t\tvar pixelOrigin = center && zoom !== undefined ?\r\n \t\t\tthis._getNewPixelOrigin(center, zoom) :\r\n \t\t\tthis.getPixelOrigin();\r\n \t\treturn pixelOrigin.subtract(this._getMapPanePos());\r\n \t},\r\n\r\n \t_getNewPixelOrigin: function (center, zoom) {\r\n \t\tvar viewHalf = this.getSize()._divideBy(2);\r\n \t\treturn this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round();\r\n \t},\r\n\r\n \t_latLngToNewLayerPoint: function (latlng, zoom, center) {\r\n \t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n \t\treturn this.project(latlng, zoom)._subtract(topLeft);\r\n \t},\r\n\r\n \t_latLngBoundsToNewLayerBounds: function (latLngBounds, zoom, center) {\r\n \t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n \t\treturn toBounds([\r\n \t\t\tthis.project(latLngBounds.getSouthWest(), zoom)._subtract(topLeft),\r\n \t\t\tthis.project(latLngBounds.getNorthWest(), zoom)._subtract(topLeft),\r\n \t\t\tthis.project(latLngBounds.getSouthEast(), zoom)._subtract(topLeft),\r\n \t\t\tthis.project(latLngBounds.getNorthEast(), zoom)._subtract(topLeft)\r\n \t\t]);\r\n \t},\r\n\r\n \t// layer point of the current center\r\n \t_getCenterLayerPoint: function () {\r\n \t\treturn this.containerPointToLayerPoint(this.getSize()._divideBy(2));\r\n \t},\r\n\r\n \t// offset of the specified place to the current center in pixels\r\n \t_getCenterOffset: function (latlng) {\r\n \t\treturn this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint());\r\n \t},\r\n\r\n \t// adjust center for view to get inside bounds\r\n \t_limitCenter: function (center, zoom, bounds) {\r\n\r\n \t\tif (!bounds) { return center; }\r\n\r\n \t\tvar centerPoint = this.project(center, zoom),\r\n \t\t viewHalf = this.getSize().divideBy(2),\r\n \t\t viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)),\r\n \t\t offset = this._getBoundsOffset(viewBounds, bounds, zoom);\r\n\r\n \t\t// If offset is less than a pixel, ignore.\r\n \t\t// This prevents unstable projections from getting into\r\n \t\t// an infinite loop of tiny offsets.\r\n \t\tif (Math.abs(offset.x) <= 1 && Math.abs(offset.y) <= 1) {\r\n \t\t\treturn center;\r\n \t\t}\r\n\r\n \t\treturn this.unproject(centerPoint.add(offset), zoom);\r\n \t},\r\n\r\n \t// adjust offset for view to get inside bounds\r\n \t_limitOffset: function (offset, bounds) {\r\n \t\tif (!bounds) { return offset; }\r\n\r\n \t\tvar viewBounds = this.getPixelBounds(),\r\n \t\t newBounds = new Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset));\r\n\r\n \t\treturn offset.add(this._getBoundsOffset(newBounds, bounds));\r\n \t},\r\n\r\n \t// returns offset needed for pxBounds to get inside maxBounds at a specified zoom\r\n \t_getBoundsOffset: function (pxBounds, maxBounds, zoom) {\r\n \t\tvar projectedMaxBounds = toBounds(\r\n \t\t this.project(maxBounds.getNorthEast(), zoom),\r\n \t\t this.project(maxBounds.getSouthWest(), zoom)\r\n \t\t ),\r\n \t\t minOffset = projectedMaxBounds.min.subtract(pxBounds.min),\r\n \t\t maxOffset = projectedMaxBounds.max.subtract(pxBounds.max),\r\n\r\n \t\t dx = this._rebound(minOffset.x, -maxOffset.x),\r\n \t\t dy = this._rebound(minOffset.y, -maxOffset.y);\r\n\r\n \t\treturn new Point(dx, dy);\r\n \t},\r\n\r\n \t_rebound: function (left, right) {\r\n \t\treturn left + right > 0 ?\r\n \t\t\tMath.round(left - right) / 2 :\r\n \t\t\tMath.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right));\r\n \t},\r\n\r\n \t_limitZoom: function (zoom) {\r\n \t\tvar min = this.getMinZoom(),\r\n \t\t max = this.getMaxZoom(),\r\n \t\t snap = Browser.any3d ? this.options.zoomSnap : 1;\r\n \t\tif (snap) {\r\n \t\t\tzoom = Math.round(zoom / snap) * snap;\r\n \t\t}\r\n \t\treturn Math.max(min, Math.min(max, zoom));\r\n \t},\r\n\r\n \t_onPanTransitionStep: function () {\r\n \t\tthis.fire('move');\r\n \t},\r\n\r\n \t_onPanTransitionEnd: function () {\r\n \t\tremoveClass(this._mapPane, 'leaflet-pan-anim');\r\n \t\tthis.fire('moveend');\r\n \t},\r\n\r\n \t_tryAnimatedPan: function (center, options) {\r\n \t\t// difference between the new and current centers in pixels\r\n \t\tvar offset = this._getCenterOffset(center)._trunc();\r\n\r\n \t\t// don't animate too far unless animate: true specified in options\r\n \t\tif ((options && options.animate) !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n \t\tthis.panBy(offset, options);\r\n\r\n \t\treturn true;\r\n \t},\r\n\r\n \t_createAnimProxy: function () {\r\n\r\n \t\tvar proxy = this._proxy = create$1('div', 'leaflet-proxy leaflet-zoom-animated');\r\n \t\tthis._panes.mapPane.appendChild(proxy);\r\n\r\n \t\tthis.on('zoomanim', function (e) {\r\n \t\t\tvar prop = TRANSFORM,\r\n \t\t\t transform = this._proxy.style[prop];\r\n\r\n \t\t\tsetTransform(this._proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1));\r\n\r\n \t\t\t// workaround for case when transform is the same and so transitionend event is not fired\r\n \t\t\tif (transform === this._proxy.style[prop] && this._animatingZoom) {\r\n \t\t\t\tthis._onZoomTransitionEnd();\r\n \t\t\t}\r\n \t\t}, this);\r\n\r\n \t\tthis.on('load moveend', this._animMoveEnd, this);\r\n\r\n \t\tthis._on('unload', this._destroyAnimProxy, this);\r\n \t},\r\n\r\n \t_destroyAnimProxy: function () {\r\n \t\tremove(this._proxy);\r\n \t\tthis.off('load moveend', this._animMoveEnd, this);\r\n \t\tdelete this._proxy;\r\n \t},\r\n\r\n \t_animMoveEnd: function () {\r\n \t\tvar c = this.getCenter(),\r\n \t\t z = this.getZoom();\r\n \t\tsetTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1));\r\n \t},\r\n\r\n \t_catchTransitionEnd: function (e) {\r\n \t\tif (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) {\r\n \t\t\tthis._onZoomTransitionEnd();\r\n \t\t}\r\n \t},\r\n\r\n \t_nothingToAnimate: function () {\r\n \t\treturn !this._container.getElementsByClassName('leaflet-zoom-animated').length;\r\n \t},\r\n\r\n \t_tryAnimatedZoom: function (center, zoom, options) {\r\n\r\n \t\tif (this._animatingZoom) { return true; }\r\n\r\n \t\toptions = options || {};\r\n\r\n \t\t// don't animate if disabled, not supported or zoom difference is too large\r\n \t\tif (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() ||\r\n \t\t Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; }\r\n\r\n \t\t// offset is the pixel coords of the zoom origin relative to the current center\r\n \t\tvar scale = this.getZoomScale(zoom),\r\n \t\t offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale);\r\n\r\n \t\t// don't animate if the zoom origin isn't within one screen from the current center, unless forced\r\n \t\tif (options.animate !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n \t\trequestAnimFrame(function () {\r\n \t\t\tthis\r\n \t\t\t ._moveStart(true, options.noMoveStart || false)\r\n \t\t\t ._animateZoom(center, zoom, true);\r\n \t\t}, this);\r\n\r\n \t\treturn true;\r\n \t},\r\n\r\n \t_animateZoom: function (center, zoom, startAnim, noUpdate) {\r\n \t\tif (!this._mapPane) { return; }\r\n\r\n \t\tif (startAnim) {\r\n \t\t\tthis._animatingZoom = true;\r\n\r\n \t\t\t// remember what center/zoom to set after animation\r\n \t\t\tthis._animateToCenter = center;\r\n \t\t\tthis._animateToZoom = zoom;\r\n\r\n \t\t\taddClass(this._mapPane, 'leaflet-zoom-anim');\r\n \t\t}\r\n\r\n \t\t// @section Other Events\r\n \t\t// @event zoomanim: ZoomAnimEvent\r\n \t\t// Fired at least once per zoom animation. For continuous zoom, like pinch zooming, fired once per frame during zoom.\r\n \t\tthis.fire('zoomanim', {\r\n \t\t\tcenter: center,\r\n \t\t\tzoom: zoom,\r\n \t\t\tnoUpdate: noUpdate\r\n \t\t});\r\n\r\n \t\tif (!this._tempFireZoomEvent) {\r\n \t\t\tthis._tempFireZoomEvent = this._zoom !== this._animateToZoom;\r\n \t\t}\r\n\r\n \t\tthis._move(this._animateToCenter, this._animateToZoom, undefined, true);\r\n\r\n \t\t// Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693\r\n \t\tsetTimeout(bind(this._onZoomTransitionEnd, this), 250);\r\n \t},\r\n\r\n \t_onZoomTransitionEnd: function () {\r\n \t\tif (!this._animatingZoom) { return; }\r\n\r\n \t\tif (this._mapPane) {\r\n \t\t\tremoveClass(this._mapPane, 'leaflet-zoom-anim');\r\n \t\t}\r\n\r\n \t\tthis._animatingZoom = false;\r\n\r\n \t\tthis._move(this._animateToCenter, this._animateToZoom, undefined, true);\r\n\r\n \t\tif (this._tempFireZoomEvent) {\r\n \t\t\tthis.fire('zoom');\r\n \t\t}\r\n \t\tdelete this._tempFireZoomEvent;\r\n\r\n \t\tthis.fire('move');\r\n\r\n \t\tthis._moveEnd(true);\r\n \t}\r\n });\r\n\r\n // @section\r\n\r\n // @factory L.map(id: String, options?: Map options)\r\n // Instantiates a map object given the DOM ID of a `<div>` element\r\n // and optionally an object literal with `Map options`.\r\n //\r\n // @alternative\r\n // @factory L.map(el: HTMLElement, options?: Map options)\r\n // Instantiates a map object given an instance of a `<div>` HTML element\r\n // and optionally an object literal with `Map options`.\r\n function createMap(id, options) {\r\n \treturn new Map(id, options);\r\n }\n\n /*\r\n * @class Control\r\n * @aka L.Control\r\n * @inherits Class\r\n *\r\n * L.Control is a base class for implementing map controls. Handles positioning.\r\n * All other controls extend from this class.\r\n */\r\n\r\n var Control = Class.extend({\r\n \t// @section\r\n \t// @aka Control Options\r\n \toptions: {\r\n \t\t// @option position: String = 'topright'\r\n \t\t// The position of the control (one of the map corners). Possible values are `'topleft'`,\r\n \t\t// `'topright'`, `'bottomleft'` or `'bottomright'`\r\n \t\tposition: 'topright'\r\n \t},\r\n\r\n \tinitialize: function (options) {\r\n \t\tsetOptions(this, options);\r\n \t},\r\n\r\n \t/* @section\r\n \t * Classes extending L.Control will inherit the following methods:\r\n \t *\r\n \t * @method getPosition: string\r\n \t * Returns the position of the control.\r\n \t */\r\n \tgetPosition: function () {\r\n \t\treturn this.options.position;\r\n \t},\r\n\r\n \t// @method setPosition(position: string): this\r\n \t// Sets the position of the control.\r\n \tsetPosition: function (position) {\r\n \t\tvar map = this._map;\r\n\r\n \t\tif (map) {\r\n \t\t\tmap.removeControl(this);\r\n \t\t}\r\n\r\n \t\tthis.options.position = position;\r\n\r\n \t\tif (map) {\r\n \t\t\tmap.addControl(this);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method getContainer: HTMLElement\r\n \t// Returns the HTMLElement that contains the control.\r\n \tgetContainer: function () {\r\n \t\treturn this._container;\r\n \t},\r\n\r\n \t// @method addTo(map: Map): this\r\n \t// Adds the control to the given map.\r\n \taddTo: function (map) {\r\n \t\tthis.remove();\r\n \t\tthis._map = map;\r\n\r\n \t\tvar container = this._container = this.onAdd(map),\r\n \t\t pos = this.getPosition(),\r\n \t\t corner = map._controlCorners[pos];\r\n\r\n \t\taddClass(container, 'leaflet-control');\r\n\r\n \t\tif (pos.indexOf('bottom') !== -1) {\r\n \t\t\tcorner.insertBefore(container, corner.firstChild);\r\n \t\t} else {\r\n \t\t\tcorner.appendChild(container);\r\n \t\t}\r\n\r\n \t\tthis._map.on('unload', this.remove, this);\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method remove: this\r\n \t// Removes the control from the map it is currently active on.\r\n \tremove: function () {\r\n \t\tif (!this._map) {\r\n \t\t\treturn this;\r\n \t\t}\r\n\r\n \t\tremove(this._container);\r\n\r\n \t\tif (this.onRemove) {\r\n \t\t\tthis.onRemove(this._map);\r\n \t\t}\r\n\r\n \t\tthis._map.off('unload', this.remove, this);\r\n \t\tthis._map = null;\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_refocusOnMap: function (e) {\r\n \t\t// if map exists and event is not a keyboard event\r\n \t\tif (this._map && e && e.screenX > 0 && e.screenY > 0) {\r\n \t\t\tthis._map.getContainer().focus();\r\n \t\t}\r\n \t}\r\n });\r\n\r\n var control = function (options) {\r\n \treturn new Control(options);\r\n };\r\n\r\n /* @section Extension methods\r\n * @uninheritable\r\n *\r\n * Every control should extend from `L.Control` and (re-)implement the following methods.\r\n *\r\n * @method onAdd(map: Map): HTMLElement\r\n * Should return the container DOM element for the control and add listeners on relevant map events. Called on [`control.addTo(map)`](#control-addTo).\r\n *\r\n * @method onRemove(map: Map)\r\n * Optional method. Should contain all clean up code that removes the listeners previously added in [`onAdd`](#control-onadd). Called on [`control.remove()`](#control-remove).\r\n */\r\n\r\n /* @namespace Map\r\n * @section Methods for Layers and Controls\r\n */\r\n Map.include({\r\n \t// @method addControl(control: Control): this\r\n \t// Adds the given control to the map\r\n \taddControl: function (control) {\r\n \t\tcontrol.addTo(this);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method removeControl(control: Control): this\r\n \t// Removes the given control from the map\r\n \tremoveControl: function (control) {\r\n \t\tcontrol.remove();\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_initControlPos: function () {\r\n \t\tvar corners = this._controlCorners = {},\r\n \t\t l = 'leaflet-',\r\n \t\t container = this._controlContainer =\r\n \t\t create$1('div', l + 'control-container', this._container);\r\n\r\n \t\tfunction createCorner(vSide, hSide) {\r\n \t\t\tvar className = l + vSide + ' ' + l + hSide;\r\n\r\n \t\t\tcorners[vSide + hSide] = create$1('div', className, container);\r\n \t\t}\r\n\r\n \t\tcreateCorner('top', 'left');\r\n \t\tcreateCorner('top', 'right');\r\n \t\tcreateCorner('bottom', 'left');\r\n \t\tcreateCorner('bottom', 'right');\r\n \t},\r\n\r\n \t_clearControlPos: function () {\r\n \t\tfor (var i in this._controlCorners) {\r\n \t\t\tremove(this._controlCorners[i]);\r\n \t\t}\r\n \t\tremove(this._controlContainer);\r\n \t\tdelete this._controlCorners;\r\n \t\tdelete this._controlContainer;\r\n \t}\r\n });\n\n /*\r\n * @class Control.Layers\r\n * @aka L.Control.Layers\r\n * @inherits Control\r\n *\r\n * The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the [detailed example](https://leafletjs.com/examples/layers-control/)). Extends `Control`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var baseLayers = {\r\n * \t\"Mapbox\": mapbox,\r\n * \t\"OpenStreetMap\": osm\r\n * };\r\n *\r\n * var overlays = {\r\n * \t\"Marker\": marker,\r\n * \t\"Roads\": roadsLayer\r\n * };\r\n *\r\n * L.control.layers(baseLayers, overlays).addTo(map);\r\n * ```\r\n *\r\n * The `baseLayers` and `overlays` parameters are object literals with layer names as keys and `Layer` objects as values:\r\n *\r\n * ```js\r\n * {\r\n * \"<someName1>\": layer1,\r\n * \"<someName2>\": layer2\r\n * }\r\n * ```\r\n *\r\n * The layer names can contain HTML, which allows you to add additional styling to the items:\r\n *\r\n * ```js\r\n * {\"<img src='my-layer-icon' /> <span class='my-layer-item'>My Layer</span>\": myLayer}\r\n * ```\r\n */\r\n\r\n var Layers = Control.extend({\r\n \t// @section\r\n \t// @aka Control.Layers options\r\n \toptions: {\r\n \t\t// @option collapsed: Boolean = true\r\n \t\t// If `true`, the control will be collapsed into an icon and expanded on mouse hover, touch, or keyboard activation.\r\n \t\tcollapsed: true,\r\n \t\tposition: 'topright',\r\n\r\n \t\t// @option autoZIndex: Boolean = true\r\n \t\t// If `true`, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off.\r\n \t\tautoZIndex: true,\r\n\r\n \t\t// @option hideSingleBase: Boolean = false\r\n \t\t// If `true`, the base layers in the control will be hidden when there is only one.\r\n \t\thideSingleBase: false,\r\n\r\n \t\t// @option sortLayers: Boolean = false\r\n \t\t// Whether to sort the layers. When `false`, layers will keep the order\r\n \t\t// in which they were added to the control.\r\n \t\tsortLayers: false,\r\n\r\n \t\t// @option sortFunction: Function = *\r\n \t\t// A [compare function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)\r\n \t\t// that will be used for sorting the layers, when `sortLayers` is `true`.\r\n \t\t// The function receives both the `L.Layer` instances and their names, as in\r\n \t\t// `sortFunction(layerA, layerB, nameA, nameB)`.\r\n \t\t// By default, it sorts layers alphabetically by their name.\r\n \t\tsortFunction: function (layerA, layerB, nameA, nameB) {\r\n \t\t\treturn nameA < nameB ? -1 : (nameB < nameA ? 1 : 0);\r\n \t\t}\r\n \t},\r\n\r\n \tinitialize: function (baseLayers, overlays, options) {\r\n \t\tsetOptions(this, options);\r\n\r\n \t\tthis._layerControlInputs = [];\r\n \t\tthis._layers = [];\r\n \t\tthis._lastZIndex = 0;\r\n \t\tthis._handlingClick = false;\r\n \t\tthis._preventClick = false;\r\n\r\n \t\tfor (var i in baseLayers) {\r\n \t\t\tthis._addLayer(baseLayers[i], i);\r\n \t\t}\r\n\r\n \t\tfor (i in overlays) {\r\n \t\t\tthis._addLayer(overlays[i], i, true);\r\n \t\t}\r\n \t},\r\n\r\n \tonAdd: function (map) {\r\n \t\tthis._initLayout();\r\n \t\tthis._update();\r\n\r\n \t\tthis._map = map;\r\n \t\tmap.on('zoomend', this._checkDisabledLayers, this);\r\n\r\n \t\tfor (var i = 0; i < this._layers.length; i++) {\r\n \t\t\tthis._layers[i].layer.on('add remove', this._onLayerChange, this);\r\n \t\t}\r\n\r\n \t\treturn this._container;\r\n \t},\r\n\r\n \taddTo: function (map) {\r\n \t\tControl.prototype.addTo.call(this, map);\r\n \t\t// Trigger expand after Layers Control has been inserted into DOM so that is now has an actual height.\r\n \t\treturn this._expandIfNotCollapsed();\r\n \t},\r\n\r\n \tonRemove: function () {\r\n \t\tthis._map.off('zoomend', this._checkDisabledLayers, this);\r\n\r\n \t\tfor (var i = 0; i < this._layers.length; i++) {\r\n \t\t\tthis._layers[i].layer.off('add remove', this._onLayerChange, this);\r\n \t\t}\r\n \t},\r\n\r\n \t// @method addBaseLayer(layer: Layer, name: String): this\r\n \t// Adds a base layer (radio button entry) with the given name to the control.\r\n \taddBaseLayer: function (layer, name) {\r\n \t\tthis._addLayer(layer, name);\r\n \t\treturn (this._map) ? this._update() : this;\r\n \t},\r\n\r\n \t// @method addOverlay(layer: Layer, name: String): this\r\n \t// Adds an overlay (checkbox entry) with the given name to the control.\r\n \taddOverlay: function (layer, name) {\r\n \t\tthis._addLayer(layer, name, true);\r\n \t\treturn (this._map) ? this._update() : this;\r\n \t},\r\n\r\n \t// @method removeLayer(layer: Layer): this\r\n \t// Remove the given layer from the control.\r\n \tremoveLayer: function (layer) {\r\n \t\tlayer.off('add remove', this._onLayerChange, this);\r\n\r\n \t\tvar obj = this._getLayer(stamp(layer));\r\n \t\tif (obj) {\r\n \t\t\tthis._layers.splice(this._layers.indexOf(obj), 1);\r\n \t\t}\r\n \t\treturn (this._map) ? this._update() : this;\r\n \t},\r\n\r\n \t// @method expand(): this\r\n \t// Expand the control container if collapsed.\r\n \texpand: function () {\r\n \t\taddClass(this._container, 'leaflet-control-layers-expanded');\r\n \t\tthis._section.style.height = null;\r\n \t\tvar acceptableHeight = this._map.getSize().y - (this._container.offsetTop + 50);\r\n \t\tif (acceptableHeight < this._section.clientHeight) {\r\n \t\t\taddClass(this._section, 'leaflet-control-layers-scrollbar');\r\n \t\t\tthis._section.style.height = acceptableHeight + 'px';\r\n \t\t} else {\r\n \t\t\tremoveClass(this._section, 'leaflet-control-layers-scrollbar');\r\n \t\t}\r\n \t\tthis._checkDisabledLayers();\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method collapse(): this\r\n \t// Collapse the control container if expanded.\r\n \tcollapse: function () {\r\n \t\tremoveClass(this._container, 'leaflet-control-layers-expanded');\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_initLayout: function () {\r\n \t\tvar className = 'leaflet-control-layers',\r\n \t\t container = this._container = create$1('div', className),\r\n \t\t collapsed = this.options.collapsed;\r\n\r\n \t\t// makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released\r\n \t\tcontainer.setAttribute('aria-haspopup', true);\r\n\r\n \t\tdisableClickPropagation(container);\r\n \t\tdisableScrollPropagation(container);\r\n\r\n \t\tvar section = this._section = create$1('section', className + '-list');\r\n\r\n \t\tif (collapsed) {\r\n \t\t\tthis._map.on('click', this.collapse, this);\r\n\r\n \t\t\ton(container, {\r\n \t\t\t\tmouseenter: this._expandSafely,\r\n \t\t\t\tmouseleave: this.collapse\r\n \t\t\t}, this);\r\n \t\t}\r\n\r\n \t\tvar link = this._layersLink = create$1('a', className + '-toggle', container);\r\n \t\tlink.href = '#';\r\n \t\tlink.title = 'Layers';\r\n \t\tlink.setAttribute('role', 'button');\r\n\r\n \t\ton(link, {\r\n \t\t\tkeydown: function (e) {\r\n \t\t\t\tif (e.keyCode === 13) {\r\n \t\t\t\t\tthis._expandSafely();\r\n \t\t\t\t}\r\n \t\t\t},\r\n \t\t\t// Certain screen readers intercept the key event and instead send a click event\r\n \t\t\tclick: function (e) {\r\n \t\t\t\tpreventDefault(e);\r\n \t\t\t\tthis._expandSafely();\r\n \t\t\t}\r\n \t\t}, this);\r\n\r\n \t\tif (!collapsed) {\r\n \t\t\tthis.expand();\r\n \t\t}\r\n\r\n \t\tthis._baseLayersList = create$1('div', className + '-base', section);\r\n \t\tthis._separator = create$1('div', className + '-separator', section);\r\n \t\tthis._overlaysList = create$1('div', className + '-overlays', section);\r\n\r\n \t\tcontainer.appendChild(section);\r\n \t},\r\n\r\n \t_getLayer: function (id) {\r\n \t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\r\n \t\t\tif (this._layers[i] && stamp(this._layers[i].layer) === id) {\r\n \t\t\t\treturn this._layers[i];\r\n \t\t\t}\r\n \t\t}\r\n \t},\r\n\r\n \t_addLayer: function (layer, name, overlay) {\r\n \t\tif (this._map) {\r\n \t\t\tlayer.on('add remove', this._onLayerChange, this);\r\n \t\t}\r\n\r\n \t\tthis._layers.push({\r\n \t\t\tlayer: layer,\r\n \t\t\tname: name,\r\n \t\t\toverlay: overlay\r\n \t\t});\r\n\r\n \t\tif (this.options.sortLayers) {\r\n \t\t\tthis._layers.sort(bind(function (a, b) {\r\n \t\t\t\treturn this.options.sortFunction(a.layer, b.layer, a.name, b.name);\r\n \t\t\t}, this));\r\n \t\t}\r\n\r\n \t\tif (this.options.autoZIndex && layer.setZIndex) {\r\n \t\t\tthis._lastZIndex++;\r\n \t\t\tlayer.setZIndex(this._lastZIndex);\r\n \t\t}\r\n\r\n \t\tthis._expandIfNotCollapsed();\r\n \t},\r\n\r\n \t_update: function () {\r\n \t\tif (!this._container) { return this; }\r\n\r\n \t\tempty(this._baseLayersList);\r\n \t\tempty(this._overlaysList);\r\n\r\n \t\tthis._layerControlInputs = [];\r\n \t\tvar baseLayersPresent, overlaysPresent, i, obj, baseLayersCount = 0;\r\n\r\n \t\tfor (i = 0; i < this._layers.length; i++) {\r\n \t\t\tobj = this._layers[i];\r\n \t\t\tthis._addItem(obj);\r\n \t\t\toverlaysPresent = overlaysPresent || obj.overlay;\r\n \t\t\tbaseLayersPresent = baseLayersPresent || !obj.overlay;\r\n \t\t\tbaseLayersCount += !obj.overlay ? 1 : 0;\r\n \t\t}\r\n\r\n \t\t// Hide base layers section if there's only one layer.\r\n \t\tif (this.options.hideSingleBase) {\r\n \t\t\tbaseLayersPresent = baseLayersPresent && baseLayersCount > 1;\r\n \t\t\tthis._baseLayersList.style.display = baseLayersPresent ? '' : 'none';\r\n \t\t}\r\n\r\n \t\tthis._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none';\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_onLayerChange: function (e) {\r\n \t\tif (!this._handlingClick) {\r\n \t\t\tthis._update();\r\n \t\t}\r\n\r\n \t\tvar obj = this._getLayer(stamp(e.target));\r\n\r\n \t\t// @namespace Map\r\n \t\t// @section Layer events\r\n \t\t// @event baselayerchange: LayersControlEvent\r\n \t\t// Fired when the base layer is changed through the [layers control](#control-layers).\r\n \t\t// @event overlayadd: LayersControlEvent\r\n \t\t// Fired when an overlay is selected through the [layers control](#control-layers).\r\n \t\t// @event overlayremove: LayersControlEvent\r\n \t\t// Fired when an overlay is deselected through the [layers control](#control-layers).\r\n \t\t// @namespace Control.Layers\r\n \t\tvar type = obj.overlay ?\r\n \t\t\t(e.type === 'add' ? 'overlayadd' : 'overlayremove') :\r\n \t\t\t(e.type === 'add' ? 'baselayerchange' : null);\r\n\r\n \t\tif (type) {\r\n \t\t\tthis._map.fire(type, obj);\r\n \t\t}\r\n \t},\r\n\r\n \t// IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see https://stackoverflow.com/a/119079)\r\n \t_createRadioElement: function (name, checked) {\r\n\r\n \t\tvar radioHtml = '<input type=\"radio\" class=\"leaflet-control-layers-selector\" name=\"' +\r\n \t\t\t\tname + '\"' + (checked ? ' checked=\"checked\"' : '') + '/>';\r\n\r\n \t\tvar radioFragment = document.createElement('div');\r\n \t\tradioFragment.innerHTML = radioHtml;\r\n\r\n \t\treturn radioFragment.firstChild;\r\n \t},\r\n\r\n \t_addItem: function (obj) {\r\n \t\tvar label = document.createElement('label'),\r\n \t\t checked = this._map.hasLayer(obj.layer),\r\n \t\t input;\r\n\r\n \t\tif (obj.overlay) {\r\n \t\t\tinput = document.createElement('input');\r\n \t\t\tinput.type = 'checkbox';\r\n \t\t\tinput.className = 'leaflet-control-layers-selector';\r\n \t\t\tinput.defaultChecked = checked;\r\n \t\t} else {\r\n \t\t\tinput = this._createRadioElement('leaflet-base-layers_' + stamp(this), checked);\r\n \t\t}\r\n\r\n \t\tthis._layerControlInputs.push(input);\r\n \t\tinput.layerId = stamp(obj.layer);\r\n\r\n \t\ton(input, 'click', this._onInputClick, this);\r\n\r\n \t\tvar name = document.createElement('span');\r\n \t\tname.innerHTML = ' ' + obj.name;\r\n\r\n \t\t// Helps from preventing layer control flicker when checkboxes are disabled\r\n \t\t// https://github.com/Leaflet/Leaflet/issues/2771\r\n \t\tvar holder = document.createElement('span');\r\n\r\n \t\tlabel.appendChild(holder);\r\n \t\tholder.appendChild(input);\r\n \t\tholder.appendChild(name);\r\n\r\n \t\tvar container = obj.overlay ? this._overlaysList : this._baseLayersList;\r\n \t\tcontainer.appendChild(label);\r\n\r\n \t\tthis._checkDisabledLayers();\r\n \t\treturn label;\r\n \t},\r\n\r\n \t_onInputClick: function () {\r\n \t\t// expanding the control on mobile with a click can cause adding a layer - we don't want this\r\n \t\tif (this._preventClick) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tvar inputs = this._layerControlInputs,\r\n \t\t input, layer;\r\n \t\tvar addedLayers = [],\r\n \t\t removedLayers = [];\r\n\r\n \t\tthis._handlingClick = true;\r\n\r\n \t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n \t\t\tinput = inputs[i];\r\n \t\t\tlayer = this._getLayer(input.layerId).layer;\r\n\r\n \t\t\tif (input.checked) {\r\n \t\t\t\taddedLayers.push(layer);\r\n \t\t\t} else if (!input.checked) {\r\n \t\t\t\tremovedLayers.push(layer);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\t// Bugfix issue 2318: Should remove all old layers before readding new ones\r\n \t\tfor (i = 0; i < removedLayers.length; i++) {\r\n \t\t\tif (this._map.hasLayer(removedLayers[i])) {\r\n \t\t\t\tthis._map.removeLayer(removedLayers[i]);\r\n \t\t\t}\r\n \t\t}\r\n \t\tfor (i = 0; i < addedLayers.length; i++) {\r\n \t\t\tif (!this._map.hasLayer(addedLayers[i])) {\r\n \t\t\t\tthis._map.addLayer(addedLayers[i]);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tthis._handlingClick = false;\r\n\r\n \t\tthis._refocusOnMap();\r\n \t},\r\n\r\n \t_checkDisabledLayers: function () {\r\n \t\tvar inputs = this._layerControlInputs,\r\n \t\t input,\r\n \t\t layer,\r\n \t\t zoom = this._map.getZoom();\r\n\r\n \t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n \t\t\tinput = inputs[i];\r\n \t\t\tlayer = this._getLayer(input.layerId).layer;\r\n \t\t\tinput.disabled = (layer.options.minZoom !== undefined && zoom < layer.options.minZoom) ||\r\n \t\t\t (layer.options.maxZoom !== undefined && zoom > layer.options.maxZoom);\r\n\r\n \t\t}\r\n \t},\r\n\r\n \t_expandIfNotCollapsed: function () {\r\n \t\tif (this._map && !this.options.collapsed) {\r\n \t\t\tthis.expand();\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_expandSafely: function () {\r\n \t\tvar section = this._section;\r\n \t\tthis._preventClick = true;\r\n \t\ton(section, 'click', preventDefault);\r\n \t\tthis.expand();\r\n \t\tvar that = this;\r\n \t\tsetTimeout(function () {\r\n \t\t\toff(section, 'click', preventDefault);\r\n \t\t\tthat._preventClick = false;\r\n \t\t});\r\n \t}\r\n\r\n });\r\n\r\n\r\n // @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options)\r\n // Creates a layers control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation.\r\n var layers = function (baseLayers, overlays, options) {\r\n \treturn new Layers(baseLayers, overlays, options);\r\n };\n\n /*\r\n * @class Control.Zoom\r\n * @aka L.Control.Zoom\r\n * @inherits Control\r\n *\r\n * A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its [`zoomControl` option](#map-zoomcontrol) to `false`. Extends `Control`.\r\n */\r\n\r\n var Zoom = Control.extend({\r\n \t// @section\r\n \t// @aka Control.Zoom options\r\n \toptions: {\r\n \t\tposition: 'topleft',\r\n\r\n \t\t// @option zoomInText: String = '<span aria-hidden=\"true\">+</span>'\r\n \t\t// The text set on the 'zoom in' button.\r\n \t\tzoomInText: '<span aria-hidden=\"true\">+</span>',\r\n\r\n \t\t// @option zoomInTitle: String = 'Zoom in'\r\n \t\t// The title set on the 'zoom in' button.\r\n \t\tzoomInTitle: 'Zoom in',\r\n\r\n \t\t// @option zoomOutText: String = '<span aria-hidden=\"true\">&#x2212;</span>'\r\n \t\t// The text set on the 'zoom out' button.\r\n \t\tzoomOutText: '<span aria-hidden=\"true\">&#x2212;</span>',\r\n\r\n \t\t// @option zoomOutTitle: String = 'Zoom out'\r\n \t\t// The title set on the 'zoom out' button.\r\n \t\tzoomOutTitle: 'Zoom out'\r\n \t},\r\n\r\n \tonAdd: function (map) {\r\n \t\tvar zoomName = 'leaflet-control-zoom',\r\n \t\t container = create$1('div', zoomName + ' leaflet-bar'),\r\n \t\t options = this.options;\r\n\r\n \t\tthis._zoomInButton = this._createButton(options.zoomInText, options.zoomInTitle,\r\n \t\t zoomName + '-in', container, this._zoomIn);\r\n \t\tthis._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle,\r\n \t\t zoomName + '-out', container, this._zoomOut);\r\n\r\n \t\tthis._updateDisabled();\r\n \t\tmap.on('zoomend zoomlevelschange', this._updateDisabled, this);\r\n\r\n \t\treturn container;\r\n \t},\r\n\r\n \tonRemove: function (map) {\r\n \t\tmap.off('zoomend zoomlevelschange', this._updateDisabled, this);\r\n \t},\r\n\r\n \tdisable: function () {\r\n \t\tthis._disabled = true;\r\n \t\tthis._updateDisabled();\r\n \t\treturn this;\r\n \t},\r\n\r\n \tenable: function () {\r\n \t\tthis._disabled = false;\r\n \t\tthis._updateDisabled();\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_zoomIn: function (e) {\r\n \t\tif (!this._disabled && this._map._zoom < this._map.getMaxZoom()) {\r\n \t\t\tthis._map.zoomIn(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n \t\t}\r\n \t},\r\n\r\n \t_zoomOut: function (e) {\r\n \t\tif (!this._disabled && this._map._zoom > this._map.getMinZoom()) {\r\n \t\t\tthis._map.zoomOut(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n \t\t}\r\n \t},\r\n\r\n \t_createButton: function (html, title, className, container, fn) {\r\n \t\tvar link = create$1('a', className, container);\r\n \t\tlink.innerHTML = html;\r\n \t\tlink.href = '#';\r\n \t\tlink.title = title;\r\n\r\n \t\t/*\r\n \t\t * Will force screen readers like VoiceOver to read this as \"Zoom in - button\"\r\n \t\t */\r\n \t\tlink.setAttribute('role', 'button');\r\n \t\tlink.setAttribute('aria-label', title);\r\n\r\n \t\tdisableClickPropagation(link);\r\n \t\ton(link, 'click', stop);\r\n \t\ton(link, 'click', fn, this);\r\n \t\ton(link, 'click', this._refocusOnMap, this);\r\n\r\n \t\treturn link;\r\n \t},\r\n\r\n \t_updateDisabled: function () {\r\n \t\tvar map = this._map,\r\n \t\t className = 'leaflet-disabled';\r\n\r\n \t\tremoveClass(this._zoomInButton, className);\r\n \t\tremoveClass(this._zoomOutButton, className);\r\n \t\tthis._zoomInButton.setAttribute('aria-disabled', 'false');\r\n \t\tthis._zoomOutButton.setAttribute('aria-disabled', 'false');\r\n\r\n \t\tif (this._disabled || map._zoom === map.getMinZoom()) {\r\n \t\t\taddClass(this._zoomOutButton, className);\r\n \t\t\tthis._zoomOutButton.setAttribute('aria-disabled', 'true');\r\n \t\t}\r\n \t\tif (this._disabled || map._zoom === map.getMaxZoom()) {\r\n \t\t\taddClass(this._zoomInButton, className);\r\n \t\t\tthis._zoomInButton.setAttribute('aria-disabled', 'true');\r\n \t\t}\r\n \t}\r\n });\r\n\r\n // @namespace Map\r\n // @section Control options\r\n // @option zoomControl: Boolean = true\r\n // Whether a [zoom control](#control-zoom) is added to the map by default.\r\n Map.mergeOptions({\r\n \tzoomControl: true\r\n });\r\n\r\n Map.addInitHook(function () {\r\n \tif (this.options.zoomControl) {\r\n \t\t// @section Controls\r\n \t\t// @property zoomControl: Control.Zoom\r\n \t\t// The default zoom control (only available if the\r\n \t\t// [`zoomControl` option](#map-zoomcontrol) was `true` when creating the map).\r\n \t\tthis.zoomControl = new Zoom();\r\n \t\tthis.addControl(this.zoomControl);\r\n \t}\r\n });\r\n\r\n // @namespace Control.Zoom\r\n // @factory L.control.zoom(options: Control.Zoom options)\r\n // Creates a zoom control\r\n var zoom = function (options) {\r\n \treturn new Zoom(options);\r\n };\n\n /*\n * @class Control.Scale\n * @aka L.Control.Scale\n * @inherits Control\n *\n * A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends `Control`.\n *\n * @example\n *\n * ```js\n * L.control.scale().addTo(map);\n * ```\n */\n\n var Scale = Control.extend({\n \t// @section\n \t// @aka Control.Scale options\n \toptions: {\n \t\tposition: 'bottomleft',\n\n \t\t// @option maxWidth: Number = 100\n \t\t// Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500).\n \t\tmaxWidth: 100,\n\n \t\t// @option metric: Boolean = True\n \t\t// Whether to show the metric scale line (m/km).\n \t\tmetric: true,\n\n \t\t// @option imperial: Boolean = True\n \t\t// Whether to show the imperial scale line (mi/ft).\n \t\timperial: true\n\n \t\t// @option updateWhenIdle: Boolean = false\n \t\t// If `true`, the control is updated on [`moveend`](#map-moveend), otherwise it's always up-to-date (updated on [`move`](#map-move)).\n \t},\n\n \tonAdd: function (map) {\n \t\tvar className = 'leaflet-control-scale',\n \t\t container = create$1('div', className),\n \t\t options = this.options;\n\n \t\tthis._addScales(options, className + '-line', container);\n\n \t\tmap.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n \t\tmap.whenReady(this._update, this);\n\n \t\treturn container;\n \t},\n\n \tonRemove: function (map) {\n \t\tmap.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n \t},\n\n \t_addScales: function (options, className, container) {\n \t\tif (options.metric) {\n \t\t\tthis._mScale = create$1('div', className, container);\n \t\t}\n \t\tif (options.imperial) {\n \t\t\tthis._iScale = create$1('div', className, container);\n \t\t}\n \t},\n\n \t_update: function () {\n \t\tvar map = this._map,\n \t\t y = map.getSize().y / 2;\n\n \t\tvar maxMeters = map.distance(\n \t\t\tmap.containerPointToLatLng([0, y]),\n \t\t\tmap.containerPointToLatLng([this.options.maxWidth, y]));\n\n \t\tthis._updateScales(maxMeters);\n \t},\n\n \t_updateScales: function (maxMeters) {\n \t\tif (this.options.metric && maxMeters) {\n \t\t\tthis._updateMetric(maxMeters);\n \t\t}\n \t\tif (this.options.imperial && maxMeters) {\n \t\t\tthis._updateImperial(maxMeters);\n \t\t}\n \t},\n\n \t_updateMetric: function (maxMeters) {\n \t\tvar meters = this._getRoundNum(maxMeters),\n \t\t label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km';\n\n \t\tthis._updateScale(this._mScale, label, meters / maxMeters);\n \t},\n\n \t_updateImperial: function (maxMeters) {\n \t\tvar maxFeet = maxMeters * 3.2808399,\n \t\t maxMiles, miles, feet;\n\n \t\tif (maxFeet > 5280) {\n \t\t\tmaxMiles = maxFeet / 5280;\n \t\t\tmiles = this._getRoundNum(maxMiles);\n \t\t\tthis._updateScale(this._iScale, miles + ' mi', miles / maxMiles);\n\n \t\t} else {\n \t\t\tfeet = this._getRoundNum(maxFeet);\n \t\t\tthis._updateScale(this._iScale, feet + ' ft', feet / maxFeet);\n \t\t}\n \t},\n\n \t_updateScale: function (scale, text, ratio) {\n \t\tscale.style.width = Math.round(this.options.maxWidth * ratio) + 'px';\n \t\tscale.innerHTML = text;\n \t},\n\n \t_getRoundNum: function (num) {\n \t\tvar pow10 = Math.pow(10, (Math.floor(num) + '').length - 1),\n \t\t d = num / pow10;\n\n \t\td = d >= 10 ? 10 :\n \t\t d >= 5 ? 5 :\n \t\t d >= 3 ? 3 :\n \t\t d >= 2 ? 2 : 1;\n\n \t\treturn pow10 * d;\n \t}\n });\n\n\n // @factory L.control.scale(options?: Control.Scale options)\n // Creates an scale control with the given options.\n var scale = function (options) {\n \treturn new Scale(options);\n };\n\n var ukrainianFlag = '<svg aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"8\" viewBox=\"0 0 12 8\" class=\"leaflet-attribution-flag\"><path fill=\"#4C7BE1\" d=\"M0 0h12v4H0z\"/><path fill=\"#FFD500\" d=\"M0 4h12v3H0z\"/><path fill=\"#E0BC00\" d=\"M0 7h12v1H0z\"/></svg>';\r\n\r\n\r\n /*\r\n * @class Control.Attribution\r\n * @aka L.Control.Attribution\r\n * @inherits Control\r\n *\r\n * The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its [`attributionControl` option](#map-attributioncontrol) to `false`, and it fetches attribution texts from layers with the [`getAttribution` method](#layer-getattribution) automatically. Extends Control.\r\n */\r\n\r\n var Attribution = Control.extend({\r\n \t// @section\r\n \t// @aka Control.Attribution options\r\n \toptions: {\r\n \t\tposition: 'bottomright',\r\n\r\n \t\t// @option prefix: String|false = 'Leaflet'\r\n \t\t// The HTML text shown before the attributions. Pass `false` to disable.\r\n \t\tprefix: '<a href=\"https://leafletjs.com\" title=\"A JavaScript library for interactive maps\">' + (Browser.inlineSvg ? ukrainianFlag + ' ' : '') + 'Leaflet</a>'\r\n \t},\r\n\r\n \tinitialize: function (options) {\r\n \t\tsetOptions(this, options);\r\n\r\n \t\tthis._attributions = {};\r\n \t},\r\n\r\n \tonAdd: function (map) {\r\n \t\tmap.attributionControl = this;\r\n \t\tthis._container = create$1('div', 'leaflet-control-attribution');\r\n \t\tdisableClickPropagation(this._container);\r\n\r\n \t\t// TODO ugly, refactor\r\n \t\tfor (var i in map._layers) {\r\n \t\t\tif (map._layers[i].getAttribution) {\r\n \t\t\t\tthis.addAttribution(map._layers[i].getAttribution());\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tthis._update();\r\n\r\n \t\tmap.on('layeradd', this._addAttribution, this);\r\n\r\n \t\treturn this._container;\r\n \t},\r\n\r\n \tonRemove: function (map) {\r\n \t\tmap.off('layeradd', this._addAttribution, this);\r\n \t},\r\n\r\n \t_addAttribution: function (ev) {\r\n \t\tif (ev.layer.getAttribution) {\r\n \t\t\tthis.addAttribution(ev.layer.getAttribution());\r\n \t\t\tev.layer.once('remove', function () {\r\n \t\t\t\tthis.removeAttribution(ev.layer.getAttribution());\r\n \t\t\t}, this);\r\n \t\t}\r\n \t},\r\n\r\n \t// @method setPrefix(prefix: String|false): this\r\n \t// The HTML text shown before the attributions. Pass `false` to disable.\r\n \tsetPrefix: function (prefix) {\r\n \t\tthis.options.prefix = prefix;\r\n \t\tthis._update();\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method addAttribution(text: String): this\r\n \t// Adds an attribution text (e.g. `'&copy; OpenStreetMap contributors'`).\r\n \taddAttribution: function (text) {\r\n \t\tif (!text) { return this; }\r\n\r\n \t\tif (!this._attributions[text]) {\r\n \t\t\tthis._attributions[text] = 0;\r\n \t\t}\r\n \t\tthis._attributions[text]++;\r\n\r\n \t\tthis._update();\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method removeAttribution(text: String): this\r\n \t// Removes an attribution text.\r\n \tremoveAttribution: function (text) {\r\n \t\tif (!text) { return this; }\r\n\r\n \t\tif (this._attributions[text]) {\r\n \t\t\tthis._attributions[text]--;\r\n \t\t\tthis._update();\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_update: function () {\r\n \t\tif (!this._map) { return; }\r\n\r\n \t\tvar attribs = [];\r\n\r\n \t\tfor (var i in this._attributions) {\r\n \t\t\tif (this._attributions[i]) {\r\n \t\t\t\tattribs.push(i);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tvar prefixAndAttribs = [];\r\n\r\n \t\tif (this.options.prefix) {\r\n \t\t\tprefixAndAttribs.push(this.options.prefix);\r\n \t\t}\r\n \t\tif (attribs.length) {\r\n \t\t\tprefixAndAttribs.push(attribs.join(', '));\r\n \t\t}\r\n\r\n \t\tthis._container.innerHTML = prefixAndAttribs.join(' <span aria-hidden=\"true\">|</span> ');\r\n \t}\r\n });\r\n\r\n // @namespace Map\r\n // @section Control options\r\n // @option attributionControl: Boolean = true\r\n // Whether a [attribution control](#control-attribution) is added to the map by default.\r\n Map.mergeOptions({\r\n \tattributionControl: true\r\n });\r\n\r\n Map.addInitHook(function () {\r\n \tif (this.options.attributionControl) {\r\n \t\tnew Attribution().addTo(this);\r\n \t}\r\n });\r\n\r\n // @namespace Control.Attribution\r\n // @factory L.control.attribution(options: Control.Attribution options)\r\n // Creates an attribution control.\r\n var attribution = function (options) {\r\n \treturn new Attribution(options);\r\n };\n\n Control.Layers = Layers;\n Control.Zoom = Zoom;\n Control.Scale = Scale;\n Control.Attribution = Attribution;\n\n control.layers = layers;\n control.zoom = zoom;\n control.scale = scale;\n control.attribution = attribution;\n\n /*\n \tL.Handler is a base class for handler classes that are used internally to inject\n \tinteraction features like dragging to classes like Map and Marker.\n */\n\n // @class Handler\n // @aka L.Handler\n // Abstract class for map interaction handlers\n\n var Handler = Class.extend({\n \tinitialize: function (map) {\n \t\tthis._map = map;\n \t},\n\n \t// @method enable(): this\n \t// Enables the handler\n \tenable: function () {\n \t\tif (this._enabled) { return this; }\n\n \t\tthis._enabled = true;\n \t\tthis.addHooks();\n \t\treturn this;\n \t},\n\n \t// @method disable(): this\n \t// Disables the handler\n \tdisable: function () {\n \t\tif (!this._enabled) { return this; }\n\n \t\tthis._enabled = false;\n \t\tthis.removeHooks();\n \t\treturn this;\n \t},\n\n \t// @method enabled(): Boolean\n \t// Returns `true` if the handler is enabled\n \tenabled: function () {\n \t\treturn !!this._enabled;\n \t}\n\n \t// @section Extension methods\n \t// Classes inheriting from `Handler` must implement the two following methods:\n \t// @method addHooks()\n \t// Called when the handler is enabled, should add event hooks.\n \t// @method removeHooks()\n \t// Called when the handler is disabled, should remove the event hooks added previously.\n });\n\n // @section There is static function which can be called without instantiating L.Handler:\n // @function addTo(map: Map, name: String): this\n // Adds a new Handler to the given map with the given name.\n Handler.addTo = function (map, name) {\n \tmap.addHandler(name, this);\n \treturn this;\n };\n\n var Mixin = {Events: Events};\n\n /*\r\n * @class Draggable\r\n * @aka L.Draggable\r\n * @inherits Evented\r\n *\r\n * A class for making DOM elements draggable (including touch support).\r\n * Used internally for map and marker dragging. Only works for elements\r\n * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition).\r\n *\r\n * @example\r\n * ```js\r\n * var draggable = new L.Draggable(elementToDrag);\r\n * draggable.enable();\r\n * ```\r\n */\r\n\r\n var START = Browser.touch ? 'touchstart mousedown' : 'mousedown';\r\n\r\n var Draggable = Evented.extend({\r\n\r\n \toptions: {\r\n \t\t// @section\r\n \t\t// @aka Draggable options\r\n \t\t// @option clickTolerance: Number = 3\r\n \t\t// The max number of pixels a user can shift the mouse pointer during a click\r\n \t\t// for it to be considered a valid click (as opposed to a mouse drag).\r\n \t\tclickTolerance: 3\r\n \t},\r\n\r\n \t// @constructor L.Draggable(el: HTMLElement, dragHandle?: HTMLElement, preventOutline?: Boolean, options?: Draggable options)\r\n \t// Creates a `Draggable` object for moving `el` when you start dragging the `dragHandle` element (equals `el` itself by default).\r\n \tinitialize: function (element, dragStartTarget, preventOutline, options) {\r\n \t\tsetOptions(this, options);\r\n\r\n \t\tthis._element = element;\r\n \t\tthis._dragStartTarget = dragStartTarget || element;\r\n \t\tthis._preventOutline = preventOutline;\r\n \t},\r\n\r\n \t// @method enable()\r\n \t// Enables the dragging ability\r\n \tenable: function () {\r\n \t\tif (this._enabled) { return; }\r\n\r\n \t\ton(this._dragStartTarget, START, this._onDown, this);\r\n\r\n \t\tthis._enabled = true;\r\n \t},\r\n\r\n \t// @method disable()\r\n \t// Disables the dragging ability\r\n \tdisable: function () {\r\n \t\tif (!this._enabled) { return; }\r\n\r\n \t\t// If we're currently dragging this draggable,\r\n \t\t// disabling it counts as first ending the drag.\r\n \t\tif (Draggable._dragging === this) {\r\n \t\t\tthis.finishDrag(true);\r\n \t\t}\r\n\r\n \t\toff(this._dragStartTarget, START, this._onDown, this);\r\n\r\n \t\tthis._enabled = false;\r\n \t\tthis._moved = false;\r\n \t},\r\n\r\n \t_onDown: function (e) {\r\n \t\t// Ignore the event if disabled; this happens in IE11\r\n \t\t// under some circumstances, see #3666.\r\n \t\tif (!this._enabled) { return; }\r\n\r\n \t\tthis._moved = false;\r\n\r\n \t\tif (hasClass(this._element, 'leaflet-zoom-anim')) { return; }\r\n\r\n \t\tif (e.touches && e.touches.length !== 1) {\r\n \t\t\t// Finish dragging to avoid conflict with touchZoom\r\n \t\t\tif (Draggable._dragging === this) {\r\n \t\t\t\tthis.finishDrag();\r\n \t\t\t}\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (Draggable._dragging || e.shiftKey || ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; }\r\n \t\tDraggable._dragging = this; // Prevent dragging multiple objects at once.\r\n\r\n \t\tif (this._preventOutline) {\r\n \t\t\tpreventOutline(this._element);\r\n \t\t}\r\n\r\n \t\tdisableImageDrag();\r\n \t\tdisableTextSelection();\r\n\r\n \t\tif (this._moving) { return; }\r\n\r\n \t\t// @event down: Event\r\n \t\t// Fired when a drag is about to start.\r\n \t\tthis.fire('down');\r\n\r\n \t\tvar first = e.touches ? e.touches[0] : e,\r\n \t\t sizedParent = getSizedParentNode(this._element);\r\n\r\n \t\tthis._startPoint = new Point(first.clientX, first.clientY);\r\n \t\tthis._startPos = getPosition(this._element);\r\n\r\n \t\t// Cache the scale, so that we can continuously compensate for it during drag (_onMove).\r\n \t\tthis._parentScale = getScale(sizedParent);\r\n\r\n \t\tvar mouseevent = e.type === 'mousedown';\r\n \t\ton(document, mouseevent ? 'mousemove' : 'touchmove', this._onMove, this);\r\n \t\ton(document, mouseevent ? 'mouseup' : 'touchend touchcancel', this._onUp, this);\r\n \t},\r\n\r\n \t_onMove: function (e) {\r\n \t\t// Ignore the event if disabled; this happens in IE11\r\n \t\t// under some circumstances, see #3666.\r\n \t\tif (!this._enabled) { return; }\r\n\r\n \t\tif (e.touches && e.touches.length > 1) {\r\n \t\t\tthis._moved = true;\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tvar first = (e.touches && e.touches.length === 1 ? e.touches[0] : e),\r\n \t\t offset = new Point(first.clientX, first.clientY)._subtract(this._startPoint);\r\n\r\n \t\tif (!offset.x && !offset.y) { return; }\r\n \t\tif (Math.abs(offset.x) + Math.abs(offset.y) < this.options.clickTolerance) { return; }\r\n\r\n \t\t// We assume that the parent container's position, border and scale do not change for the duration of the drag.\r\n \t\t// Therefore there is no need to account for the position and border (they are eliminated by the subtraction)\r\n \t\t// and we can use the cached value for the scale.\r\n \t\toffset.x /= this._parentScale.x;\r\n \t\toffset.y /= this._parentScale.y;\r\n\r\n \t\tpreventDefault(e);\r\n\r\n \t\tif (!this._moved) {\r\n \t\t\t// @event dragstart: Event\r\n \t\t\t// Fired when a drag starts\r\n \t\t\tthis.fire('dragstart');\r\n\r\n \t\t\tthis._moved = true;\r\n\r\n \t\t\taddClass(document.body, 'leaflet-dragging');\r\n\r\n \t\t\tthis._lastTarget = e.target || e.srcElement;\r\n \t\t\t// IE and Edge do not give the <use> element, so fetch it\r\n \t\t\t// if necessary\r\n \t\t\tif (window.SVGElementInstance && this._lastTarget instanceof window.SVGElementInstance) {\r\n \t\t\t\tthis._lastTarget = this._lastTarget.correspondingUseElement;\r\n \t\t\t}\r\n \t\t\taddClass(this._lastTarget, 'leaflet-drag-target');\r\n \t\t}\r\n\r\n \t\tthis._newPos = this._startPos.add(offset);\r\n \t\tthis._moving = true;\r\n\r\n \t\tthis._lastEvent = e;\r\n \t\tthis._updatePosition();\r\n \t},\r\n\r\n \t_updatePosition: function () {\r\n \t\tvar e = {originalEvent: this._lastEvent};\r\n\r\n \t\t// @event predrag: Event\r\n \t\t// Fired continuously during dragging *before* each corresponding\r\n \t\t// update of the element's position.\r\n \t\tthis.fire('predrag', e);\r\n \t\tsetPosition(this._element, this._newPos);\r\n\r\n \t\t// @event drag: Event\r\n \t\t// Fired continuously during dragging.\r\n \t\tthis.fire('drag', e);\r\n \t},\r\n\r\n \t_onUp: function () {\r\n \t\t// Ignore the event if disabled; this happens in IE11\r\n \t\t// under some circumstances, see #3666.\r\n \t\tif (!this._enabled) { return; }\r\n \t\tthis.finishDrag();\r\n \t},\r\n\r\n \tfinishDrag: function (noInertia) {\r\n \t\tremoveClass(document.body, 'leaflet-dragging');\r\n\r\n \t\tif (this._lastTarget) {\r\n \t\t\tremoveClass(this._lastTarget, 'leaflet-drag-target');\r\n \t\t\tthis._lastTarget = null;\r\n \t\t}\r\n\r\n \t\toff(document, 'mousemove touchmove', this._onMove, this);\r\n \t\toff(document, 'mouseup touchend touchcancel', this._onUp, this);\r\n\r\n \t\tenableImageDrag();\r\n \t\tenableTextSelection();\r\n\r\n \t\tvar fireDragend = this._moved && this._moving;\r\n\r\n \t\tthis._moving = false;\r\n \t\tDraggable._dragging = false;\r\n\r\n \t\tif (fireDragend) {\r\n \t\t\t// @event dragend: DragEndEvent\r\n \t\t\t// Fired when the drag ends.\r\n \t\t\tthis.fire('dragend', {\r\n \t\t\t\tnoInertia: noInertia,\r\n \t\t\t\tdistance: this._newPos.distanceTo(this._startPos)\r\n \t\t\t});\r\n \t\t}\r\n \t}\r\n\r\n });\n\n /*\r\n * @namespace PolyUtil\r\n * Various utility functions for polygon geometries.\r\n */\r\n\r\n /* @function clipPolygon(points: Point[], bounds: Bounds, round?: Boolean): Point[]\r\n * Clips the polygon geometry defined by the given `points` by the given bounds (using the [Sutherland-Hodgman algorithm](https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)).\r\n * Used by Leaflet to only show polygon points that are on the screen or near, increasing\r\n * performance. Note that polygon points needs different algorithm for clipping\r\n * than polyline, so there's a separate method for it.\r\n */\r\n function clipPolygon(points, bounds, round) {\r\n \tvar clippedPoints,\r\n \t edges = [1, 4, 2, 8],\r\n \t i, j, k,\r\n \t a, b,\r\n \t len, edge, p;\r\n\r\n \tfor (i = 0, len = points.length; i < len; i++) {\r\n \t\tpoints[i]._code = _getBitCode(points[i], bounds);\r\n \t}\r\n\r\n \t// for each edge (left, bottom, right, top)\r\n \tfor (k = 0; k < 4; k++) {\r\n \t\tedge = edges[k];\r\n \t\tclippedPoints = [];\r\n\r\n \t\tfor (i = 0, len = points.length, j = len - 1; i < len; j = i++) {\r\n \t\t\ta = points[i];\r\n \t\t\tb = points[j];\r\n\r\n \t\t\t// if a is inside the clip window\r\n \t\t\tif (!(a._code & edge)) {\r\n \t\t\t\t// if b is outside the clip window (a->b goes out of screen)\r\n \t\t\t\tif (b._code & edge) {\r\n \t\t\t\t\tp = _getEdgeIntersection(b, a, edge, bounds, round);\r\n \t\t\t\t\tp._code = _getBitCode(p, bounds);\r\n \t\t\t\t\tclippedPoints.push(p);\r\n \t\t\t\t}\r\n \t\t\t\tclippedPoints.push(a);\r\n\r\n \t\t\t// else if b is inside the clip window (a->b enters the screen)\r\n \t\t\t} else if (!(b._code & edge)) {\r\n \t\t\t\tp = _getEdgeIntersection(b, a, edge, bounds, round);\r\n \t\t\t\tp._code = _getBitCode(p, bounds);\r\n \t\t\t\tclippedPoints.push(p);\r\n \t\t\t}\r\n \t\t}\r\n \t\tpoints = clippedPoints;\r\n \t}\r\n\r\n \treturn points;\r\n }\r\n\r\n /* @function polygonCenter(latlngs: LatLng[], crs: CRS): LatLng\r\n * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polygon.\r\n */\r\n function polygonCenter(latlngs, crs) {\r\n \tvar i, j, p1, p2, f, area, x, y, center;\r\n\r\n \tif (!latlngs || latlngs.length === 0) {\r\n \t\tthrow new Error('latlngs not passed');\r\n \t}\r\n\r\n \tif (!isFlat(latlngs)) {\r\n \t\tconsole.warn('latlngs are not flat! Only the first ring will be used');\r\n \t\tlatlngs = latlngs[0];\r\n \t}\r\n\r\n \tvar centroidLatLng = toLatLng([0, 0]);\r\n\r\n \tvar bounds = toLatLngBounds(latlngs);\r\n \tvar areaBounds = bounds.getNorthWest().distanceTo(bounds.getSouthWest()) * bounds.getNorthEast().distanceTo(bounds.getNorthWest());\r\n \t// tests showed that below 1700 rounding errors are happening\r\n \tif (areaBounds < 1700) {\r\n \t\t// getting a inexact center, to move the latlngs near to [0, 0] to prevent rounding errors\r\n \t\tcentroidLatLng = centroid(latlngs);\r\n \t}\r\n\r\n \tvar len = latlngs.length;\r\n \tvar points = [];\r\n \tfor (i = 0; i < len; i++) {\r\n \t\tvar latlng = toLatLng(latlngs[i]);\r\n \t\tpoints.push(crs.project(toLatLng([latlng.lat - centroidLatLng.lat, latlng.lng - centroidLatLng.lng])));\r\n \t}\r\n\r\n \tarea = x = y = 0;\r\n\r\n \t// polygon centroid algorithm;\r\n \tfor (i = 0, j = len - 1; i < len; j = i++) {\r\n \t\tp1 = points[i];\r\n \t\tp2 = points[j];\r\n\r\n \t\tf = p1.y * p2.x - p2.y * p1.x;\r\n \t\tx += (p1.x + p2.x) * f;\r\n \t\ty += (p1.y + p2.y) * f;\r\n \t\tarea += f * 3;\r\n \t}\r\n\r\n \tif (area === 0) {\r\n \t\t// Polygon is so small that all points are on same pixel.\r\n \t\tcenter = points[0];\r\n \t} else {\r\n \t\tcenter = [x / area, y / area];\r\n \t}\r\n\r\n \tvar latlngCenter = crs.unproject(toPoint(center));\r\n \treturn toLatLng([latlngCenter.lat + centroidLatLng.lat, latlngCenter.lng + centroidLatLng.lng]);\r\n }\r\n\r\n /* @function centroid(latlngs: LatLng[]): LatLng\r\n * Returns the 'center of mass' of the passed LatLngs.\r\n */\r\n function centroid(coords) {\r\n \tvar latSum = 0;\r\n \tvar lngSum = 0;\r\n \tvar len = 0;\r\n \tfor (var i = 0; i < coords.length; i++) {\r\n \t\tvar latlng = toLatLng(coords[i]);\r\n \t\tlatSum += latlng.lat;\r\n \t\tlngSum += latlng.lng;\r\n \t\tlen++;\r\n \t}\r\n \treturn toLatLng([latSum / len, lngSum / len]);\r\n }\n\n var PolyUtil = {\n __proto__: null,\n clipPolygon: clipPolygon,\n polygonCenter: polygonCenter,\n centroid: centroid\n };\n\n /*\r\n * @namespace LineUtil\r\n *\r\n * Various utility functions for polyline points processing, used by Leaflet internally to make polylines lightning-fast.\r\n */\r\n\r\n // Simplify polyline with vertex reduction and Douglas-Peucker simplification.\r\n // Improves rendering performance dramatically by lessening the number of points to draw.\r\n\r\n // @function simplify(points: Point[], tolerance: Number): Point[]\r\n // Dramatically reduces the number of points in a polyline while retaining\r\n // its shape and returns a new array of simplified points, using the\r\n // [Ramer-Douglas-Peucker algorithm](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm).\r\n // Used for a huge performance boost when processing/displaying Leaflet polylines for\r\n // each zoom level and also reducing visual noise. tolerance affects the amount of\r\n // simplification (lesser value means higher quality but slower and with more points).\r\n // Also released as a separated micro-library [Simplify.js](https://mourner.github.io/simplify-js/).\r\n function simplify(points, tolerance) {\r\n \tif (!tolerance || !points.length) {\r\n \t\treturn points.slice();\r\n \t}\r\n\r\n \tvar sqTolerance = tolerance * tolerance;\r\n\r\n \t // stage 1: vertex reduction\r\n \t points = _reducePoints(points, sqTolerance);\r\n\r\n \t // stage 2: Douglas-Peucker simplification\r\n \t points = _simplifyDP(points, sqTolerance);\r\n\r\n \treturn points;\r\n }\r\n\r\n // @function pointToSegmentDistance(p: Point, p1: Point, p2: Point): Number\r\n // Returns the distance between point `p` and segment `p1` to `p2`.\r\n function pointToSegmentDistance(p, p1, p2) {\r\n \treturn Math.sqrt(_sqClosestPointOnSegment(p, p1, p2, true));\r\n }\r\n\r\n // @function closestPointOnSegment(p: Point, p1: Point, p2: Point): Number\r\n // Returns the closest point from a point `p` on a segment `p1` to `p2`.\r\n function closestPointOnSegment(p, p1, p2) {\r\n \treturn _sqClosestPointOnSegment(p, p1, p2);\r\n }\r\n\r\n // Ramer-Douglas-Peucker simplification, see https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm\r\n function _simplifyDP(points, sqTolerance) {\r\n\r\n \tvar len = points.length,\r\n \t ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array,\r\n \t markers = new ArrayConstructor(len);\r\n\r\n \t markers[0] = markers[len - 1] = 1;\r\n\r\n \t_simplifyDPStep(points, markers, sqTolerance, 0, len - 1);\r\n\r\n \tvar i,\r\n \t newPoints = [];\r\n\r\n \tfor (i = 0; i < len; i++) {\r\n \t\tif (markers[i]) {\r\n \t\t\tnewPoints.push(points[i]);\r\n \t\t}\r\n \t}\r\n\r\n \treturn newPoints;\r\n }\r\n\r\n function _simplifyDPStep(points, markers, sqTolerance, first, last) {\r\n\r\n \tvar maxSqDist = 0,\r\n \tindex, i, sqDist;\r\n\r\n \tfor (i = first + 1; i <= last - 1; i++) {\r\n \t\tsqDist = _sqClosestPointOnSegment(points[i], points[first], points[last], true);\r\n\r\n \t\tif (sqDist > maxSqDist) {\r\n \t\t\tindex = i;\r\n \t\t\tmaxSqDist = sqDist;\r\n \t\t}\r\n \t}\r\n\r\n \tif (maxSqDist > sqTolerance) {\r\n \t\tmarkers[index] = 1;\r\n\r\n \t\t_simplifyDPStep(points, markers, sqTolerance, first, index);\r\n \t\t_simplifyDPStep(points, markers, sqTolerance, index, last);\r\n \t}\r\n }\r\n\r\n // reduce points that are too close to each other to a single point\r\n function _reducePoints(points, sqTolerance) {\r\n \tvar reducedPoints = [points[0]];\r\n\r\n \tfor (var i = 1, prev = 0, len = points.length; i < len; i++) {\r\n \t\tif (_sqDist(points[i], points[prev]) > sqTolerance) {\r\n \t\t\treducedPoints.push(points[i]);\r\n \t\t\tprev = i;\r\n \t\t}\r\n \t}\r\n \tif (prev < len - 1) {\r\n \t\treducedPoints.push(points[len - 1]);\r\n \t}\r\n \treturn reducedPoints;\r\n }\r\n\r\n var _lastCode;\r\n\r\n // @function clipSegment(a: Point, b: Point, bounds: Bounds, useLastCode?: Boolean, round?: Boolean): Point[]|Boolean\r\n // Clips the segment a to b by rectangular bounds with the\r\n // [Cohen-Sutherland algorithm](https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm)\r\n // (modifying the segment points directly!). Used by Leaflet to only show polyline\r\n // points that are on the screen or near, increasing performance.\r\n function clipSegment(a, b, bounds, useLastCode, round) {\r\n \tvar codeA = useLastCode ? _lastCode : _getBitCode(a, bounds),\r\n \t codeB = _getBitCode(b, bounds),\r\n\r\n \t codeOut, p, newCode;\r\n\r\n \t // save 2nd code to avoid calculating it on the next segment\r\n \t _lastCode = codeB;\r\n\r\n \twhile (true) {\r\n \t\t// if a,b is inside the clip window (trivial accept)\r\n \t\tif (!(codeA | codeB)) {\r\n \t\t\treturn [a, b];\r\n \t\t}\r\n\r\n \t\t// if a,b is outside the clip window (trivial reject)\r\n \t\tif (codeA & codeB) {\r\n \t\t\treturn false;\r\n \t\t}\r\n\r\n \t\t// other cases\r\n \t\tcodeOut = codeA || codeB;\r\n \t\tp = _getEdgeIntersection(a, b, codeOut, bounds, round);\r\n \t\tnewCode = _getBitCode(p, bounds);\r\n\r\n \t\tif (codeOut === codeA) {\r\n \t\t\ta = p;\r\n \t\t\tcodeA = newCode;\r\n \t\t} else {\r\n \t\t\tb = p;\r\n \t\t\tcodeB = newCode;\r\n \t\t}\r\n \t}\r\n }\r\n\r\n function _getEdgeIntersection(a, b, code, bounds, round) {\r\n \tvar dx = b.x - a.x,\r\n \t dy = b.y - a.y,\r\n \t min = bounds.min,\r\n \t max = bounds.max,\r\n \t x, y;\r\n\r\n \tif (code & 8) { // top\r\n \t\tx = a.x + dx * (max.y - a.y) / dy;\r\n \t\ty = max.y;\r\n\r\n \t} else if (code & 4) { // bottom\r\n \t\tx = a.x + dx * (min.y - a.y) / dy;\r\n \t\ty = min.y;\r\n\r\n \t} else if (code & 2) { // right\r\n \t\tx = max.x;\r\n \t\ty = a.y + dy * (max.x - a.x) / dx;\r\n\r\n \t} else if (code & 1) { // left\r\n \t\tx = min.x;\r\n \t\ty = a.y + dy * (min.x - a.x) / dx;\r\n \t}\r\n\r\n \treturn new Point(x, y, round);\r\n }\r\n\r\n function _getBitCode(p, bounds) {\r\n \tvar code = 0;\r\n\r\n \tif (p.x < bounds.min.x) { // left\r\n \t\tcode |= 1;\r\n \t} else if (p.x > bounds.max.x) { // right\r\n \t\tcode |= 2;\r\n \t}\r\n\r\n \tif (p.y < bounds.min.y) { // bottom\r\n \t\tcode |= 4;\r\n \t} else if (p.y > bounds.max.y) { // top\r\n \t\tcode |= 8;\r\n \t}\r\n\r\n \treturn code;\r\n }\r\n\r\n // square distance (to avoid unnecessary Math.sqrt calls)\r\n function _sqDist(p1, p2) {\r\n \tvar dx = p2.x - p1.x,\r\n \t dy = p2.y - p1.y;\r\n \treturn dx * dx + dy * dy;\r\n }\r\n\r\n // return closest point on segment or distance to that point\r\n function _sqClosestPointOnSegment(p, p1, p2, sqDist) {\r\n \tvar x = p1.x,\r\n \t y = p1.y,\r\n \t dx = p2.x - x,\r\n \t dy = p2.y - y,\r\n \t dot = dx * dx + dy * dy,\r\n \t t;\r\n\r\n \tif (dot > 0) {\r\n \t\tt = ((p.x - x) * dx + (p.y - y) * dy) / dot;\r\n\r\n \t\tif (t > 1) {\r\n \t\t\tx = p2.x;\r\n \t\t\ty = p2.y;\r\n \t\t} else if (t > 0) {\r\n \t\t\tx += dx * t;\r\n \t\t\ty += dy * t;\r\n \t\t}\r\n \t}\r\n\r\n \tdx = p.x - x;\r\n \tdy = p.y - y;\r\n\r\n \treturn sqDist ? dx * dx + dy * dy : new Point(x, y);\r\n }\r\n\r\n\r\n // @function isFlat(latlngs: LatLng[]): Boolean\r\n // Returns true if `latlngs` is a flat array, false is nested.\r\n function isFlat(latlngs) {\r\n \treturn !isArray(latlngs[0]) || (typeof latlngs[0][0] !== 'object' && typeof latlngs[0][0] !== 'undefined');\r\n }\r\n\r\n function _flat(latlngs) {\r\n \tconsole.warn('Deprecated use of _flat, please use L.LineUtil.isFlat instead.');\r\n \treturn isFlat(latlngs);\r\n }\r\n\r\n /* @function polylineCenter(latlngs: LatLng[], crs: CRS): LatLng\r\n * Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the passed LatLngs (first ring) from a polyline.\r\n */\r\n function polylineCenter(latlngs, crs) {\r\n \tvar i, halfDist, segDist, dist, p1, p2, ratio, center;\r\n\r\n \tif (!latlngs || latlngs.length === 0) {\r\n \t\tthrow new Error('latlngs not passed');\r\n \t}\r\n\r\n \tif (!isFlat(latlngs)) {\r\n \t\tconsole.warn('latlngs are not flat! Only the first ring will be used');\r\n \t\tlatlngs = latlngs[0];\r\n \t}\r\n\r\n \tvar centroidLatLng = toLatLng([0, 0]);\r\n\r\n \tvar bounds = toLatLngBounds(latlngs);\r\n \tvar areaBounds = bounds.getNorthWest().distanceTo(bounds.getSouthWest()) * bounds.getNorthEast().distanceTo(bounds.getNorthWest());\r\n \t// tests showed that below 1700 rounding errors are happening\r\n \tif (areaBounds < 1700) {\r\n \t\t// getting a inexact center, to move the latlngs near to [0, 0] to prevent rounding errors\r\n \t\tcentroidLatLng = centroid(latlngs);\r\n \t}\r\n\r\n \tvar len = latlngs.length;\r\n \tvar points = [];\r\n \tfor (i = 0; i < len; i++) {\r\n \t\tvar latlng = toLatLng(latlngs[i]);\r\n \t\tpoints.push(crs.project(toLatLng([latlng.lat - centroidLatLng.lat, latlng.lng - centroidLatLng.lng])));\r\n \t}\r\n\r\n \tfor (i = 0, halfDist = 0; i < len - 1; i++) {\r\n \t\thalfDist += points[i].distanceTo(points[i + 1]) / 2;\r\n \t}\r\n\r\n \t// The line is so small in the current view that all points are on the same pixel.\r\n \tif (halfDist === 0) {\r\n \t\tcenter = points[0];\r\n \t} else {\r\n \t\tfor (i = 0, dist = 0; i < len - 1; i++) {\r\n \t\t\tp1 = points[i];\r\n \t\t\tp2 = points[i + 1];\r\n \t\t\tsegDist = p1.distanceTo(p2);\r\n \t\t\tdist += segDist;\r\n\r\n \t\t\tif (dist > halfDist) {\r\n \t\t\t\tratio = (dist - halfDist) / segDist;\r\n \t\t\t\tcenter = [\r\n \t\t\t\t\tp2.x - ratio * (p2.x - p1.x),\r\n \t\t\t\t\tp2.y - ratio * (p2.y - p1.y)\r\n \t\t\t\t];\r\n \t\t\t\tbreak;\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n\r\n \tvar latlngCenter = crs.unproject(toPoint(center));\r\n \treturn toLatLng([latlngCenter.lat + centroidLatLng.lat, latlngCenter.lng + centroidLatLng.lng]);\r\n }\n\n var LineUtil = {\n __proto__: null,\n simplify: simplify,\n pointToSegmentDistance: pointToSegmentDistance,\n closestPointOnSegment: closestPointOnSegment,\n clipSegment: clipSegment,\n _getEdgeIntersection: _getEdgeIntersection,\n _getBitCode: _getBitCode,\n _sqClosestPointOnSegment: _sqClosestPointOnSegment,\n isFlat: isFlat,\n _flat: _flat,\n polylineCenter: polylineCenter\n };\n\n /*\r\n * @namespace Projection\r\n * @section\r\n * Leaflet comes with a set of already defined Projections out of the box:\r\n *\r\n * @projection L.Projection.LonLat\r\n *\r\n * Equirectangular, or Plate Carree projection — the most simple projection,\r\n * mostly used by GIS enthusiasts. Directly maps `x` as longitude, and `y` as\r\n * latitude. Also suitable for flat worlds, e.g. game maps. Used by the\r\n * `EPSG:4326` and `Simple` CRS.\r\n */\r\n\r\n var LonLat = {\r\n \tproject: function (latlng) {\r\n \t\treturn new Point(latlng.lng, latlng.lat);\r\n \t},\r\n\r\n \tunproject: function (point) {\r\n \t\treturn new LatLng(point.y, point.x);\r\n \t},\r\n\r\n \tbounds: new Bounds([-180, -90], [180, 90])\r\n };\n\n /*\r\n * @namespace Projection\r\n * @projection L.Projection.Mercator\r\n *\r\n * Elliptical Mercator projection — more complex than Spherical Mercator. Assumes that Earth is an ellipsoid. Used by the EPSG:3395 CRS.\r\n */\r\n\r\n var Mercator = {\r\n \tR: 6378137,\r\n \tR_MINOR: 6356752.314245179,\r\n\r\n \tbounds: new Bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),\r\n\r\n \tproject: function (latlng) {\r\n \t\tvar d = Math.PI / 180,\r\n \t\t r = this.R,\r\n \t\t y = latlng.lat * d,\r\n \t\t tmp = this.R_MINOR / r,\r\n \t\t e = Math.sqrt(1 - tmp * tmp),\r\n \t\t con = e * Math.sin(y);\r\n\r\n \t\tvar ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2);\r\n \t\ty = -r * Math.log(Math.max(ts, 1E-10));\r\n\r\n \t\treturn new Point(latlng.lng * d * r, y);\r\n \t},\r\n\r\n \tunproject: function (point) {\r\n \t\tvar d = 180 / Math.PI,\r\n \t\t r = this.R,\r\n \t\t tmp = this.R_MINOR / r,\r\n \t\t e = Math.sqrt(1 - tmp * tmp),\r\n \t\t ts = Math.exp(-point.y / r),\r\n \t\t phi = Math.PI / 2 - 2 * Math.atan(ts);\r\n\r\n \t\tfor (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) {\r\n \t\t\tcon = e * Math.sin(phi);\r\n \t\t\tcon = Math.pow((1 - con) / (1 + con), e / 2);\r\n \t\t\tdphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi;\r\n \t\t\tphi += dphi;\r\n \t\t}\r\n\r\n \t\treturn new LatLng(phi * d, point.x * d / r);\r\n \t}\r\n };\n\n /*\n * @class Projection\n\n * An object with methods for projecting geographical coordinates of the world onto\n * a flat surface (and back). See [Map projection](https://en.wikipedia.org/wiki/Map_projection).\n\n * @property bounds: Bounds\n * The bounds (specified in CRS units) where the projection is valid\n\n * @method project(latlng: LatLng): Point\n * Projects geographical coordinates into a 2D point.\n * Only accepts actual `L.LatLng` instances, not arrays.\n\n * @method unproject(point: Point): LatLng\n * The inverse of `project`. Projects a 2D point into a geographical location.\n * Only accepts actual `L.Point` instances, not arrays.\n\n * Note that the projection instances do not inherit from Leaflet's `Class` object,\n * and can't be instantiated. Also, new classes can't inherit from them,\n * and methods can't be added to them with the `include` function.\n\n */\n\n var index = {\n __proto__: null,\n LonLat: LonLat,\n Mercator: Mercator,\n SphericalMercator: SphericalMercator\n };\n\n /*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3395\r\n *\r\n * Rarely used by some commercial tile providers. Uses Elliptical Mercator projection.\r\n */\r\n var EPSG3395 = extend({}, Earth, {\r\n \tcode: 'EPSG:3395',\r\n \tprojection: Mercator,\r\n\r\n \ttransformation: (function () {\r\n \t\tvar scale = 0.5 / (Math.PI * Mercator.R);\r\n \t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n \t}())\r\n });\n\n /*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG4326\r\n *\r\n * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection.\r\n *\r\n * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic),\r\n * which is a breaking change from 0.7.x behaviour. If you are using a `TileLayer`\r\n * with this CRS, ensure that there are two 256x256 pixel tiles covering the\r\n * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90),\r\n * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set.\r\n */\r\n\r\n var EPSG4326 = extend({}, Earth, {\r\n \tcode: 'EPSG:4326',\r\n \tprojection: LonLat,\r\n \ttransformation: toTransformation(1 / 180, 1, -1 / 180, 0.5)\r\n });\n\n /*\n * @namespace CRS\n * @crs L.CRS.Simple\n *\n * A simple CRS that maps longitude and latitude into `x` and `y` directly.\n * May be used for maps of flat surfaces (e.g. game maps). Note that the `y`\n * axis should still be inverted (going from bottom to top). `distance()` returns\n * simple euclidean distance.\n */\n\n var Simple = extend({}, CRS, {\n \tprojection: LonLat,\n \ttransformation: toTransformation(1, 0, -1, 0),\n\n \tscale: function (zoom) {\n \t\treturn Math.pow(2, zoom);\n \t},\n\n \tzoom: function (scale) {\n \t\treturn Math.log(scale) / Math.LN2;\n \t},\n\n \tdistance: function (latlng1, latlng2) {\n \t\tvar dx = latlng2.lng - latlng1.lng,\n \t\t dy = latlng2.lat - latlng1.lat;\n\n \t\treturn Math.sqrt(dx * dx + dy * dy);\n \t},\n\n \tinfinite: true\n });\n\n CRS.Earth = Earth;\n CRS.EPSG3395 = EPSG3395;\n CRS.EPSG3857 = EPSG3857;\n CRS.EPSG900913 = EPSG900913;\n CRS.EPSG4326 = EPSG4326;\n CRS.Simple = Simple;\n\n /*\n * @class Layer\n * @inherits Evented\n * @aka L.Layer\n * @aka ILayer\n *\n * A set of methods from the Layer base class that all Leaflet layers use.\n * Inherits all methods, options and events from `L.Evented`.\n *\n * @example\n *\n * ```js\n * var layer = L.marker(latlng).addTo(map);\n * layer.addTo(map);\n * layer.remove();\n * ```\n *\n * @event add: Event\n * Fired after the layer is added to a map\n *\n * @event remove: Event\n * Fired after the layer is removed from a map\n */\n\n\n var Layer = Evented.extend({\n\n \t// Classes extending `L.Layer` will inherit the following options:\n \toptions: {\n \t\t// @option pane: String = 'overlayPane'\n \t\t// By default the layer will be added to the map's [overlay pane](#map-overlaypane). Overriding this option will cause the layer to be placed on another pane by default.\n \t\tpane: 'overlayPane',\n\n \t\t// @option attribution: String = null\n \t\t// String to be shown in the attribution control, e.g. \"© OpenStreetMap contributors\". It describes the layer data and is often a legal obligation towards copyright holders and tile providers.\n \t\tattribution: null,\n\n \t\tbubblingMouseEvents: true\n \t},\n\n \t/* @section\n \t * Classes extending `L.Layer` will inherit the following methods:\n \t *\n \t * @method addTo(map: Map|LayerGroup): this\n \t * Adds the layer to the given map or layer group.\n \t */\n \taddTo: function (map) {\n \t\tmap.addLayer(this);\n \t\treturn this;\n \t},\n\n \t// @method remove: this\n \t// Removes the layer from the map it is currently active on.\n \tremove: function () {\n \t\treturn this.removeFrom(this._map || this._mapToAdd);\n \t},\n\n \t// @method removeFrom(map: Map): this\n \t// Removes the layer from the given map\n \t//\n \t// @alternative\n \t// @method removeFrom(group: LayerGroup): this\n \t// Removes the layer from the given `LayerGroup`\n \tremoveFrom: function (obj) {\n \t\tif (obj) {\n \t\t\tobj.removeLayer(this);\n \t\t}\n \t\treturn this;\n \t},\n\n \t// @method getPane(name? : String): HTMLElement\n \t// Returns the `HTMLElement` representing the named pane on the map. If `name` is omitted, returns the pane for this layer.\n \tgetPane: function (name) {\n \t\treturn this._map.getPane(name ? (this.options[name] || name) : this.options.pane);\n \t},\n\n \taddInteractiveTarget: function (targetEl) {\n \t\tthis._map._targets[stamp(targetEl)] = this;\n \t\treturn this;\n \t},\n\n \tremoveInteractiveTarget: function (targetEl) {\n \t\tdelete this._map._targets[stamp(targetEl)];\n \t\treturn this;\n \t},\n\n \t// @method getAttribution: String\n \t// Used by the `attribution control`, returns the [attribution option](#gridlayer-attribution).\n \tgetAttribution: function () {\n \t\treturn this.options.attribution;\n \t},\n\n \t_layerAdd: function (e) {\n \t\tvar map = e.target;\n\n \t\t// check in case layer gets added and then removed before the map is ready\n \t\tif (!map.hasLayer(this)) { return; }\n\n \t\tthis._map = map;\n \t\tthis._zoomAnimated = map._zoomAnimated;\n\n \t\tif (this.getEvents) {\n \t\t\tvar events = this.getEvents();\n \t\t\tmap.on(events, this);\n \t\t\tthis.once('remove', function () {\n \t\t\t\tmap.off(events, this);\n \t\t\t}, this);\n \t\t}\n\n \t\tthis.onAdd(map);\n\n \t\tthis.fire('add');\n \t\tmap.fire('layeradd', {layer: this});\n \t}\n });\n\n /* @section Extension methods\n * @uninheritable\n *\n * Every layer should extend from `L.Layer` and (re-)implement the following methods.\n *\n * @method onAdd(map: Map): this\n * Should contain code that creates DOM elements for the layer, adds them to `map panes` where they should belong and puts listeners on relevant map events. Called on [`map.addLayer(layer)`](#map-addlayer).\n *\n * @method onRemove(map: Map): this\n * Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in [`onAdd`](#layer-onadd). Called on [`map.removeLayer(layer)`](#map-removelayer).\n *\n * @method getEvents(): Object\n * This optional method should return an object like `{ viewreset: this._reset }` for [`addEventListener`](#evented-addeventlistener). The event handlers in this object will be automatically added and removed from the map with your layer.\n *\n * @method getAttribution(): String\n * This optional method should return a string containing HTML to be shown on the `Attribution control` whenever the layer is visible.\n *\n * @method beforeAdd(map: Map): this\n * Optional method. Called on [`map.addLayer(layer)`](#map-addlayer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only.\n */\n\n\n /* @namespace Map\n * @section Layer events\n *\n * @event layeradd: LayerEvent\n * Fired when a new layer is added to the map.\n *\n * @event layerremove: LayerEvent\n * Fired when some layer is removed from the map\n *\n * @section Methods for Layers and Controls\n */\n Map.include({\n \t// @method addLayer(layer: Layer): this\n \t// Adds the given layer to the map\n \taddLayer: function (layer) {\n \t\tif (!layer._layerAdd) {\n \t\t\tthrow new Error('The provided object is not a Layer.');\n \t\t}\n\n \t\tvar id = stamp(layer);\n \t\tif (this._layers[id]) { return this; }\n \t\tthis._layers[id] = layer;\n\n \t\tlayer._mapToAdd = this;\n\n \t\tif (layer.beforeAdd) {\n \t\t\tlayer.beforeAdd(this);\n \t\t}\n\n \t\tthis.whenReady(layer._layerAdd, layer);\n\n \t\treturn this;\n \t},\n\n \t// @method removeLayer(layer: Layer): this\n \t// Removes the given layer from the map.\n \tremoveLayer: function (layer) {\n \t\tvar id = stamp(layer);\n\n \t\tif (!this._layers[id]) { return this; }\n\n \t\tif (this._loaded) {\n \t\t\tlayer.onRemove(this);\n \t\t}\n\n \t\tdelete this._layers[id];\n\n \t\tif (this._loaded) {\n \t\t\tthis.fire('layerremove', {layer: layer});\n \t\t\tlayer.fire('remove');\n \t\t}\n\n \t\tlayer._map = layer._mapToAdd = null;\n\n \t\treturn this;\n \t},\n\n \t// @method hasLayer(layer: Layer): Boolean\n \t// Returns `true` if the given layer is currently added to the map\n \thasLayer: function (layer) {\n \t\treturn stamp(layer) in this._layers;\n \t},\n\n \t/* @method eachLayer(fn: Function, context?: Object): this\n \t * Iterates over the layers of the map, optionally specifying context of the iterator function.\n \t * ```\n \t * map.eachLayer(function(layer){\n \t * layer.bindPopup('Hello');\n \t * });\n \t * ```\n \t */\n \teachLayer: function (method, context) {\n \t\tfor (var i in this._layers) {\n \t\t\tmethod.call(context, this._layers[i]);\n \t\t}\n \t\treturn this;\n \t},\n\n \t_addLayers: function (layers) {\n \t\tlayers = layers ? (isArray(layers) ? layers : [layers]) : [];\n\n \t\tfor (var i = 0, len = layers.length; i < len; i++) {\n \t\t\tthis.addLayer(layers[i]);\n \t\t}\n \t},\n\n \t_addZoomLimit: function (layer) {\n \t\tif (!isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) {\n \t\t\tthis._zoomBoundLayers[stamp(layer)] = layer;\n \t\t\tthis._updateZoomLevels();\n \t\t}\n \t},\n\n \t_removeZoomLimit: function (layer) {\n \t\tvar id = stamp(layer);\n\n \t\tif (this._zoomBoundLayers[id]) {\n \t\t\tdelete this._zoomBoundLayers[id];\n \t\t\tthis._updateZoomLevels();\n \t\t}\n \t},\n\n \t_updateZoomLevels: function () {\n \t\tvar minZoom = Infinity,\n \t\t maxZoom = -Infinity,\n \t\t oldZoomSpan = this._getZoomSpan();\n\n \t\tfor (var i in this._zoomBoundLayers) {\n \t\t\tvar options = this._zoomBoundLayers[i].options;\n\n \t\t\tminZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom);\n \t\t\tmaxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom);\n \t\t}\n\n \t\tthis._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom;\n \t\tthis._layersMinZoom = minZoom === Infinity ? undefined : minZoom;\n\n \t\t// @section Map state change events\n \t\t// @event zoomlevelschange: Event\n \t\t// Fired when the number of zoomlevels on the map is changed due\n \t\t// to adding or removing a layer.\n \t\tif (oldZoomSpan !== this._getZoomSpan()) {\n \t\t\tthis.fire('zoomlevelschange');\n \t\t}\n\n \t\tif (this.options.maxZoom === undefined && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom) {\n \t\t\tthis.setZoom(this._layersMaxZoom);\n \t\t}\n \t\tif (this.options.minZoom === undefined && this._layersMinZoom && this.getZoom() < this._layersMinZoom) {\n \t\t\tthis.setZoom(this._layersMinZoom);\n \t\t}\n \t}\n });\n\n /*\r\n * @class LayerGroup\r\n * @aka L.LayerGroup\r\n * @inherits Interactive layer\r\n *\r\n * Used to group several layers and handle them as one. If you add it to the map,\r\n * any layers added or removed from the group will be added/removed on the map as\r\n * well. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.layerGroup([marker1, marker2])\r\n * \t.addLayer(polyline)\r\n * \t.addTo(map);\r\n * ```\r\n */\r\n\r\n var LayerGroup = Layer.extend({\r\n\r\n \tinitialize: function (layers, options) {\r\n \t\tsetOptions(this, options);\r\n\r\n \t\tthis._layers = {};\r\n\r\n \t\tvar i, len;\r\n\r\n \t\tif (layers) {\r\n \t\t\tfor (i = 0, len = layers.length; i < len; i++) {\r\n \t\t\t\tthis.addLayer(layers[i]);\r\n \t\t\t}\r\n \t\t}\r\n \t},\r\n\r\n \t// @method addLayer(layer: Layer): this\r\n \t// Adds the given layer to the group.\r\n \taddLayer: function (layer) {\r\n \t\tvar id = this.getLayerId(layer);\r\n\r\n \t\tthis._layers[id] = layer;\r\n\r\n \t\tif (this._map) {\r\n \t\t\tthis._map.addLayer(layer);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method removeLayer(layer: Layer): this\r\n \t// Removes the given layer from the group.\r\n \t// @alternative\r\n \t// @method removeLayer(id: Number): this\r\n \t// Removes the layer with the given internal ID from the group.\r\n \tremoveLayer: function (layer) {\r\n \t\tvar id = layer in this._layers ? layer : this.getLayerId(layer);\r\n\r\n \t\tif (this._map && this._layers[id]) {\r\n \t\t\tthis._map.removeLayer(this._layers[id]);\r\n \t\t}\r\n\r\n \t\tdelete this._layers[id];\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method hasLayer(layer: Layer): Boolean\r\n \t// Returns `true` if the given layer is currently added to the group.\r\n \t// @alternative\r\n \t// @method hasLayer(id: Number): Boolean\r\n \t// Returns `true` if the given internal ID is currently added to the group.\r\n \thasLayer: function (layer) {\r\n \t\tvar layerId = typeof layer === 'number' ? layer : this.getLayerId(layer);\r\n \t\treturn layerId in this._layers;\r\n \t},\r\n\r\n \t// @method clearLayers(): this\r\n \t// Removes all the layers from the group.\r\n \tclearLayers: function () {\r\n \t\treturn this.eachLayer(this.removeLayer, this);\r\n \t},\r\n\r\n \t// @method invoke(methodName: String, …): this\r\n \t// Calls `methodName` on every layer contained in this group, passing any\r\n \t// additional parameters. Has no effect if the layers contained do not\r\n \t// implement `methodName`.\r\n \tinvoke: function (methodName) {\r\n \t\tvar args = Array.prototype.slice.call(arguments, 1),\r\n \t\t i, layer;\r\n\r\n \t\tfor (i in this._layers) {\r\n \t\t\tlayer = this._layers[i];\r\n\r\n \t\t\tif (layer[methodName]) {\r\n \t\t\t\tlayer[methodName].apply(layer, args);\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \tonAdd: function (map) {\r\n \t\tthis.eachLayer(map.addLayer, map);\r\n \t},\r\n\r\n \tonRemove: function (map) {\r\n \t\tthis.eachLayer(map.removeLayer, map);\r\n \t},\r\n\r\n \t// @method eachLayer(fn: Function, context?: Object): this\r\n \t// Iterates over the layers of the group, optionally specifying context of the iterator function.\r\n \t// ```js\r\n \t// group.eachLayer(function (layer) {\r\n \t// \tlayer.bindPopup('Hello');\r\n \t// });\r\n \t// ```\r\n \teachLayer: function (method, context) {\r\n \t\tfor (var i in this._layers) {\r\n \t\t\tmethod.call(context, this._layers[i]);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method getLayer(id: Number): Layer\r\n \t// Returns the layer with the given internal ID.\r\n \tgetLayer: function (id) {\r\n \t\treturn this._layers[id];\r\n \t},\r\n\r\n \t// @method getLayers(): Layer[]\r\n \t// Returns an array of all the layers added to the group.\r\n \tgetLayers: function () {\r\n \t\tvar layers = [];\r\n \t\tthis.eachLayer(layers.push, layers);\r\n \t\treturn layers;\r\n \t},\r\n\r\n \t// @method setZIndex(zIndex: Number): this\r\n \t// Calls `setZIndex` on every layer contained in this group, passing the z-index.\r\n \tsetZIndex: function (zIndex) {\r\n \t\treturn this.invoke('setZIndex', zIndex);\r\n \t},\r\n\r\n \t// @method getLayerId(layer: Layer): Number\r\n \t// Returns the internal ID for a layer\r\n \tgetLayerId: function (layer) {\r\n \t\treturn stamp(layer);\r\n \t}\r\n });\r\n\r\n\r\n // @factory L.layerGroup(layers?: Layer[], options?: Object)\r\n // Create a layer group, optionally given an initial set of layers and an `options` object.\r\n var layerGroup = function (layers, options) {\r\n \treturn new LayerGroup(layers, options);\r\n };\n\n /*\r\n * @class FeatureGroup\r\n * @aka L.FeatureGroup\r\n * @inherits LayerGroup\r\n *\r\n * Extended `LayerGroup` that makes it easier to do the same thing to all its member layers:\r\n * * [`bindPopup`](#layer-bindpopup) binds a popup to all of the layers at once (likewise with [`bindTooltip`](#layer-bindtooltip))\r\n * * Events are propagated to the `FeatureGroup`, so if the group has an event\r\n * handler, it will handle events from any of the layers. This includes mouse events\r\n * and custom events.\r\n * * Has `layeradd` and `layerremove` events\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.featureGroup([marker1, marker2, polyline])\r\n * \t.bindPopup('Hello world!')\r\n * \t.on('click', function() { alert('Clicked on a member of the group!'); })\r\n * \t.addTo(map);\r\n * ```\r\n */\r\n\r\n var FeatureGroup = LayerGroup.extend({\r\n\r\n \taddLayer: function (layer) {\r\n \t\tif (this.hasLayer(layer)) {\r\n \t\t\treturn this;\r\n \t\t}\r\n\r\n \t\tlayer.addEventParent(this);\r\n\r\n \t\tLayerGroup.prototype.addLayer.call(this, layer);\r\n\r\n \t\t// @event layeradd: LayerEvent\r\n \t\t// Fired when a layer is added to this `FeatureGroup`\r\n \t\treturn this.fire('layeradd', {layer: layer});\r\n \t},\r\n\r\n \tremoveLayer: function (layer) {\r\n \t\tif (!this.hasLayer(layer)) {\r\n \t\t\treturn this;\r\n \t\t}\r\n \t\tif (layer in this._layers) {\r\n \t\t\tlayer = this._layers[layer];\r\n \t\t}\r\n\r\n \t\tlayer.removeEventParent(this);\r\n\r\n \t\tLayerGroup.prototype.removeLayer.call(this, layer);\r\n\r\n \t\t// @event layerremove: LayerEvent\r\n \t\t// Fired when a layer is removed from this `FeatureGroup`\r\n \t\treturn this.fire('layerremove', {layer: layer});\r\n \t},\r\n\r\n \t// @method setStyle(style: Path options): this\r\n \t// Sets the given path options to each layer of the group that has a `setStyle` method.\r\n \tsetStyle: function (style) {\r\n \t\treturn this.invoke('setStyle', style);\r\n \t},\r\n\r\n \t// @method bringToFront(): this\r\n \t// Brings the layer group to the top of all other layers\r\n \tbringToFront: function () {\r\n \t\treturn this.invoke('bringToFront');\r\n \t},\r\n\r\n \t// @method bringToBack(): this\r\n \t// Brings the layer group to the back of all other layers\r\n \tbringToBack: function () {\r\n \t\treturn this.invoke('bringToBack');\r\n \t},\r\n\r\n \t// @method getBounds(): LatLngBounds\r\n \t// Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children).\r\n \tgetBounds: function () {\r\n \t\tvar bounds = new LatLngBounds();\r\n\r\n \t\tfor (var id in this._layers) {\r\n \t\t\tvar layer = this._layers[id];\r\n \t\t\tbounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng());\r\n \t\t}\r\n \t\treturn bounds;\r\n \t}\r\n });\r\n\r\n // @factory L.featureGroup(layers?: Layer[], options?: Object)\r\n // Create a feature group, optionally given an initial set of layers and an `options` object.\r\n var featureGroup = function (layers, options) {\r\n \treturn new FeatureGroup(layers, options);\r\n };\n\n /*\r\n * @class Icon\r\n * @aka L.Icon\r\n *\r\n * Represents an icon to provide when creating a marker.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var myIcon = L.icon({\r\n * iconUrl: 'my-icon.png',\r\n * iconRetinaUrl: 'my-icon@2x.png',\r\n * iconSize: [38, 95],\r\n * iconAnchor: [22, 94],\r\n * popupAnchor: [-3, -76],\r\n * shadowUrl: 'my-icon-shadow.png',\r\n * shadowRetinaUrl: 'my-icon-shadow@2x.png',\r\n * shadowSize: [68, 95],\r\n * shadowAnchor: [22, 94]\r\n * });\r\n *\r\n * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\r\n * ```\r\n *\r\n * `L.Icon.Default` extends `L.Icon` and is the blue icon Leaflet uses for markers by default.\r\n *\r\n */\r\n\r\n var Icon = Class.extend({\r\n\r\n \t/* @section\r\n \t * @aka Icon options\r\n \t *\r\n \t * @option iconUrl: String = null\r\n \t * **(required)** The URL to the icon image (absolute or relative to your script path).\r\n \t *\r\n \t * @option iconRetinaUrl: String = null\r\n \t * The URL to a retina sized version of the icon image (absolute or relative to your\r\n \t * script path). Used for Retina screen devices.\r\n \t *\r\n \t * @option iconSize: Point = null\r\n \t * Size of the icon image in pixels.\r\n \t *\r\n \t * @option iconAnchor: Point = null\r\n \t * The coordinates of the \"tip\" of the icon (relative to its top left corner). The icon\r\n \t * will be aligned so that this point is at the marker's geographical location. Centered\r\n \t * by default if size is specified, also can be set in CSS with negative margins.\r\n \t *\r\n \t * @option popupAnchor: Point = [0, 0]\r\n \t * The coordinates of the point from which popups will \"open\", relative to the icon anchor.\r\n \t *\r\n \t * @option tooltipAnchor: Point = [0, 0]\r\n \t * The coordinates of the point from which tooltips will \"open\", relative to the icon anchor.\r\n \t *\r\n \t * @option shadowUrl: String = null\r\n \t * The URL to the icon shadow image. If not specified, no shadow image will be created.\r\n \t *\r\n \t * @option shadowRetinaUrl: String = null\r\n \t *\r\n \t * @option shadowSize: Point = null\r\n \t * Size of the shadow image in pixels.\r\n \t *\r\n \t * @option shadowAnchor: Point = null\r\n \t * The coordinates of the \"tip\" of the shadow (relative to its top left corner) (the same\r\n \t * as iconAnchor if not specified).\r\n \t *\r\n \t * @option className: String = ''\r\n \t * A custom class name to assign to both icon and shadow images. Empty by default.\r\n \t */\r\n\r\n \toptions: {\r\n \t\tpopupAnchor: [0, 0],\r\n \t\ttooltipAnchor: [0, 0],\r\n\r\n \t\t// @option crossOrigin: Boolean|String = false\r\n \t\t// Whether the crossOrigin attribute will be added to the tiles.\r\n \t\t// If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.\r\n \t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n \t\tcrossOrigin: false\r\n \t},\r\n\r\n \tinitialize: function (options) {\r\n \t\tsetOptions(this, options);\r\n \t},\r\n\r\n \t// @method createIcon(oldIcon?: HTMLElement): HTMLElement\r\n \t// Called internally when the icon has to be shown, returns a `<img>` HTML element\r\n \t// styled according to the options.\r\n \tcreateIcon: function (oldIcon) {\r\n \t\treturn this._createIcon('icon', oldIcon);\r\n \t},\r\n\r\n \t// @method createShadow(oldIcon?: HTMLElement): HTMLElement\r\n \t// As `createIcon`, but for the shadow beneath it.\r\n \tcreateShadow: function (oldIcon) {\r\n \t\treturn this._createIcon('shadow', oldIcon);\r\n \t},\r\n\r\n \t_createIcon: function (name, oldIcon) {\r\n \t\tvar src = this._getIconUrl(name);\r\n\r\n \t\tif (!src) {\r\n \t\t\tif (name === 'icon') {\r\n \t\t\t\tthrow new Error('iconUrl not set in Icon options (see the docs).');\r\n \t\t\t}\r\n \t\t\treturn null;\r\n \t\t}\r\n\r\n \t\tvar img = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null);\r\n \t\tthis._setIconStyles(img, name);\r\n\r\n \t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n \t\t\timg.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n \t\t}\r\n\r\n \t\treturn img;\r\n \t},\r\n\r\n \t_setIconStyles: function (img, name) {\r\n \t\tvar options = this.options;\r\n \t\tvar sizeOption = options[name + 'Size'];\r\n\r\n \t\tif (typeof sizeOption === 'number') {\r\n \t\t\tsizeOption = [sizeOption, sizeOption];\r\n \t\t}\r\n\r\n \t\tvar size = toPoint(sizeOption),\r\n \t\t anchor = toPoint(name === 'shadow' && options.shadowAnchor || options.iconAnchor ||\r\n \t\t size && size.divideBy(2, true));\r\n\r\n \t\timg.className = 'leaflet-marker-' + name + ' ' + (options.className || '');\r\n\r\n \t\tif (anchor) {\r\n \t\t\timg.style.marginLeft = (-anchor.x) + 'px';\r\n \t\t\timg.style.marginTop = (-anchor.y) + 'px';\r\n \t\t}\r\n\r\n \t\tif (size) {\r\n \t\t\timg.style.width = size.x + 'px';\r\n \t\t\timg.style.height = size.y + 'px';\r\n \t\t}\r\n \t},\r\n\r\n \t_createImg: function (src, el) {\r\n \t\tel = el || document.createElement('img');\r\n \t\tel.src = src;\r\n \t\treturn el;\r\n \t},\r\n\r\n \t_getIconUrl: function (name) {\r\n \t\treturn Browser.retina && this.options[name + 'RetinaUrl'] || this.options[name + 'Url'];\r\n \t}\r\n });\r\n\r\n\r\n // @factory L.icon(options: Icon options)\r\n // Creates an icon instance with the given options.\r\n function icon(options) {\r\n \treturn new Icon(options);\r\n }\n\n /*\n * @miniclass Icon.Default (Icon)\n * @aka L.Icon.Default\n * @section\n *\n * A trivial subclass of `Icon`, represents the icon to use in `Marker`s when\n * no icon is specified. Points to the blue marker image distributed with Leaflet\n * releases.\n *\n * In order to customize the default icon, just change the properties of `L.Icon.Default.prototype.options`\n * (which is a set of `Icon options`).\n *\n * If you want to _completely_ replace the default icon, override the\n * `L.Marker.prototype.options.icon` with your own icon instead.\n */\n\n var IconDefault = Icon.extend({\n\n \toptions: {\n \t\ticonUrl: 'marker-icon.png',\n \t\ticonRetinaUrl: 'marker-icon-2x.png',\n \t\tshadowUrl: 'marker-shadow.png',\n \t\ticonSize: [25, 41],\n \t\ticonAnchor: [12, 41],\n \t\tpopupAnchor: [1, -34],\n \t\ttooltipAnchor: [16, -28],\n \t\tshadowSize: [41, 41]\n \t},\n\n \t_getIconUrl: function (name) {\n \t\tif (typeof IconDefault.imagePath !== 'string') {\t// Deprecated, backwards-compatibility only\n \t\t\tIconDefault.imagePath = this._detectIconPath();\n \t\t}\n\n \t\t// @option imagePath: String\n \t\t// `Icon.Default` will try to auto-detect the location of the\n \t\t// blue icon images. If you are placing these images in a non-standard\n \t\t// way, set this option to point to the right path.\n \t\treturn (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name);\n \t},\n\n \t_stripUrl: function (path) {\t// separate function to use in tests\n \t\tvar strip = function (str, re, idx) {\n \t\t\tvar match = re.exec(str);\n \t\t\treturn match && match[idx];\n \t\t};\n \t\tpath = strip(path, /^url\\((['\"])?(.+)\\1\\)$/, 2);\n \t\treturn path && strip(path, /^(.*)marker-icon\\.png$/, 1);\n \t},\n\n \t_detectIconPath: function () {\n \t\tvar el = create$1('div', 'leaflet-default-icon-path', document.body);\n \t\tvar path = getStyle(el, 'background-image') ||\n \t\t getStyle(el, 'backgroundImage');\t// IE8\n\n \t\tdocument.body.removeChild(el);\n \t\tpath = this._stripUrl(path);\n \t\tif (path) { return path; }\n \t\tvar link = document.querySelector('link[href$=\"leaflet.css\"]');\n \t\tif (!link) { return ''; }\n \t\treturn link.href.substring(0, link.href.length - 'leaflet.css'.length - 1);\n \t}\n });\n\n /*\n * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable.\n */\n\n\n /* @namespace Marker\n * @section Interaction handlers\n *\n * Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see `Handler` methods). Example:\n *\n * ```js\n * marker.dragging.disable();\n * ```\n *\n * @property dragging: Handler\n * Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set [`marker.options.draggable`](#marker-draggable)).\n */\n\n var MarkerDrag = Handler.extend({\n \tinitialize: function (marker) {\n \t\tthis._marker = marker;\n \t},\n\n \taddHooks: function () {\n \t\tvar icon = this._marker._icon;\n\n \t\tif (!this._draggable) {\n \t\t\tthis._draggable = new Draggable(icon, icon, true);\n \t\t}\n\n \t\tthis._draggable.on({\n \t\t\tdragstart: this._onDragStart,\n \t\t\tpredrag: this._onPreDrag,\n \t\t\tdrag: this._onDrag,\n \t\t\tdragend: this._onDragEnd\n \t\t}, this).enable();\n\n \t\taddClass(icon, 'leaflet-marker-draggable');\n \t},\n\n \tremoveHooks: function () {\n \t\tthis._draggable.off({\n \t\t\tdragstart: this._onDragStart,\n \t\t\tpredrag: this._onPreDrag,\n \t\t\tdrag: this._onDrag,\n \t\t\tdragend: this._onDragEnd\n \t\t}, this).disable();\n\n \t\tif (this._marker._icon) {\n \t\t\tremoveClass(this._marker._icon, 'leaflet-marker-draggable');\n \t\t}\n \t},\n\n \tmoved: function () {\n \t\treturn this._draggable && this._draggable._moved;\n \t},\n\n \t_adjustPan: function (e) {\n \t\tvar marker = this._marker,\n \t\t map = marker._map,\n \t\t speed = this._marker.options.autoPanSpeed,\n \t\t padding = this._marker.options.autoPanPadding,\n \t\t iconPos = getPosition(marker._icon),\n \t\t bounds = map.getPixelBounds(),\n \t\t origin = map.getPixelOrigin();\n\n \t\tvar panBounds = toBounds(\n \t\t\tbounds.min._subtract(origin).add(padding),\n \t\t\tbounds.max._subtract(origin).subtract(padding)\n \t\t);\n\n \t\tif (!panBounds.contains(iconPos)) {\n \t\t\t// Compute incremental movement\n \t\t\tvar movement = toPoint(\n \t\t\t\t(Math.max(panBounds.max.x, iconPos.x) - panBounds.max.x) / (bounds.max.x - panBounds.max.x) -\n \t\t\t\t(Math.min(panBounds.min.x, iconPos.x) - panBounds.min.x) / (bounds.min.x - panBounds.min.x),\n\n \t\t\t\t(Math.max(panBounds.max.y, iconPos.y) - panBounds.max.y) / (bounds.max.y - panBounds.max.y) -\n \t\t\t\t(Math.min(panBounds.min.y, iconPos.y) - panBounds.min.y) / (bounds.min.y - panBounds.min.y)\n \t\t\t).multiplyBy(speed);\n\n \t\t\tmap.panBy(movement, {animate: false});\n\n \t\t\tthis._draggable._newPos._add(movement);\n \t\t\tthis._draggable._startPos._add(movement);\n\n \t\t\tsetPosition(marker._icon, this._draggable._newPos);\n \t\t\tthis._onDrag(e);\n\n \t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n \t\t}\n \t},\n\n \t_onDragStart: function () {\n \t\t// @section Dragging events\n \t\t// @event dragstart: Event\n \t\t// Fired when the user starts dragging the marker.\n\n \t\t// @event movestart: Event\n \t\t// Fired when the marker starts moving (because of dragging).\n\n \t\tthis._oldLatLng = this._marker.getLatLng();\n\n \t\t// When using ES6 imports it could not be set when `Popup` was not imported as well\n \t\tthis._marker.closePopup && this._marker.closePopup();\n\n \t\tthis._marker\n \t\t\t.fire('movestart')\n \t\t\t.fire('dragstart');\n \t},\n\n \t_onPreDrag: function (e) {\n \t\tif (this._marker.options.autoPan) {\n \t\t\tcancelAnimFrame(this._panRequest);\n \t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n \t\t}\n \t},\n\n \t_onDrag: function (e) {\n \t\tvar marker = this._marker,\n \t\t shadow = marker._shadow,\n \t\t iconPos = getPosition(marker._icon),\n \t\t latlng = marker._map.layerPointToLatLng(iconPos);\n\n \t\t// update shadow position\n \t\tif (shadow) {\n \t\t\tsetPosition(shadow, iconPos);\n \t\t}\n\n \t\tmarker._latlng = latlng;\n \t\te.latlng = latlng;\n \t\te.oldLatLng = this._oldLatLng;\n\n \t\t// @event drag: Event\n \t\t// Fired repeatedly while the user drags the marker.\n \t\tmarker\n \t\t .fire('move', e)\n \t\t .fire('drag', e);\n \t},\n\n \t_onDragEnd: function (e) {\n \t\t// @event dragend: DragEndEvent\n \t\t// Fired when the user stops dragging the marker.\n\n \t\t cancelAnimFrame(this._panRequest);\n\n \t\t// @event moveend: Event\n \t\t// Fired when the marker stops moving (because of dragging).\n \t\tdelete this._oldLatLng;\n \t\tthis._marker\n \t\t .fire('moveend')\n \t\t .fire('dragend', e);\n \t}\n });\n\n /*\r\n * @class Marker\r\n * @inherits Interactive layer\r\n * @aka L.Marker\r\n * L.Marker is used to display clickable/draggable icons on the map. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.marker([50.5, 30.5]).addTo(map);\r\n * ```\r\n */\r\n\r\n var Marker = Layer.extend({\r\n\r\n \t// @section\r\n \t// @aka Marker options\r\n \toptions: {\r\n \t\t// @option icon: Icon = *\r\n \t\t// Icon instance to use for rendering the marker.\r\n \t\t// See [Icon documentation](#L.Icon) for details on how to customize the marker icon.\r\n \t\t// If not specified, a common instance of `L.Icon.Default` is used.\r\n \t\ticon: new IconDefault(),\r\n\r\n \t\t// Option inherited from \"Interactive layer\" abstract class\r\n \t\tinteractive: true,\r\n\r\n \t\t// @option keyboard: Boolean = true\r\n \t\t// Whether the marker can be tabbed to with a keyboard and clicked by pressing enter.\r\n \t\tkeyboard: true,\r\n\r\n \t\t// @option title: String = ''\r\n \t\t// Text for the browser tooltip that appear on marker hover (no tooltip by default).\r\n \t\t// [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled).\r\n \t\ttitle: '',\r\n\r\n \t\t// @option alt: String = 'Marker'\r\n \t\t// Text for the `alt` attribute of the icon image.\r\n \t\t// [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled).\r\n \t\talt: 'Marker',\r\n\r\n \t\t// @option zIndexOffset: Number = 0\r\n \t\t// By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like `1000` (or high negative value, respectively).\r\n \t\tzIndexOffset: 0,\r\n\r\n \t\t// @option opacity: Number = 1.0\r\n \t\t// The opacity of the marker.\r\n \t\topacity: 1,\r\n\r\n \t\t// @option riseOnHover: Boolean = false\r\n \t\t// If `true`, the marker will get on top of others when you hover the mouse over it.\r\n \t\triseOnHover: false,\r\n\r\n \t\t// @option riseOffset: Number = 250\r\n \t\t// The z-index offset used for the `riseOnHover` feature.\r\n \t\triseOffset: 250,\r\n\r\n \t\t// @option pane: String = 'markerPane'\r\n \t\t// `Map pane` where the markers icon will be added.\r\n \t\tpane: 'markerPane',\r\n\r\n \t\t// @option shadowPane: String = 'shadowPane'\r\n \t\t// `Map pane` where the markers shadow will be added.\r\n \t\tshadowPane: 'shadowPane',\r\n\r\n \t\t// @option bubblingMouseEvents: Boolean = false\r\n \t\t// When `true`, a mouse event on this marker will trigger the same event on the map\r\n \t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\r\n \t\tbubblingMouseEvents: false,\r\n\r\n \t\t// @option autoPanOnFocus: Boolean = true\r\n \t\t// When `true`, the map will pan whenever the marker is focused (via\r\n \t\t// e.g. pressing `tab` on the keyboard) to ensure the marker is\r\n \t\t// visible within the map's bounds\r\n \t\tautoPanOnFocus: true,\r\n\r\n \t\t// @section Draggable marker options\r\n \t\t// @option draggable: Boolean = false\r\n \t\t// Whether the marker is draggable with mouse/touch or not.\r\n \t\tdraggable: false,\r\n\r\n \t\t// @option autoPan: Boolean = false\r\n \t\t// Whether to pan the map when dragging this marker near its edge or not.\r\n \t\tautoPan: false,\r\n\r\n \t\t// @option autoPanPadding: Point = Point(50, 50)\r\n \t\t// Distance (in pixels to the left/right and to the top/bottom) of the\r\n \t\t// map edge to start panning the map.\r\n \t\tautoPanPadding: [50, 50],\r\n\r\n \t\t// @option autoPanSpeed: Number = 10\r\n \t\t// Number of pixels the map should pan by.\r\n \t\tautoPanSpeed: 10\r\n \t},\r\n\r\n \t/* @section\r\n \t *\r\n \t * In addition to [shared layer methods](#Layer) like `addTo()` and `remove()` and [popup methods](#Popup) like bindPopup() you can also use the following methods:\r\n \t */\r\n\r\n \tinitialize: function (latlng, options) {\r\n \t\tsetOptions(this, options);\r\n \t\tthis._latlng = toLatLng(latlng);\r\n \t},\r\n\r\n \tonAdd: function (map) {\r\n \t\tthis._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation;\r\n\r\n \t\tif (this._zoomAnimated) {\r\n \t\t\tmap.on('zoomanim', this._animateZoom, this);\r\n \t\t}\r\n\r\n \t\tthis._initIcon();\r\n \t\tthis.update();\r\n \t},\r\n\r\n \tonRemove: function (map) {\r\n \t\tif (this.dragging && this.dragging.enabled()) {\r\n \t\t\tthis.options.draggable = true;\r\n \t\t\tthis.dragging.removeHooks();\r\n \t\t}\r\n \t\tdelete this.dragging;\r\n\r\n \t\tif (this._zoomAnimated) {\r\n \t\t\tmap.off('zoomanim', this._animateZoom, this);\r\n \t\t}\r\n\r\n \t\tthis._removeIcon();\r\n \t\tthis._removeShadow();\r\n \t},\r\n\r\n \tgetEvents: function () {\r\n \t\treturn {\r\n \t\t\tzoom: this.update,\r\n \t\t\tviewreset: this.update\r\n \t\t};\r\n \t},\r\n\r\n \t// @method getLatLng: LatLng\r\n \t// Returns the current geographical position of the marker.\r\n \tgetLatLng: function () {\r\n \t\treturn this._latlng;\r\n \t},\r\n\r\n \t// @method setLatLng(latlng: LatLng): this\r\n \t// Changes the marker position to the given point.\r\n \tsetLatLng: function (latlng) {\r\n \t\tvar oldLatLng = this._latlng;\r\n \t\tthis._latlng = toLatLng(latlng);\r\n \t\tthis.update();\r\n\r\n \t\t// @event move: Event\r\n \t\t// Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\r\n \t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\r\n \t},\r\n\r\n \t// @method setZIndexOffset(offset: Number): this\r\n \t// Changes the [zIndex offset](#marker-zindexoffset) of the marker.\r\n \tsetZIndexOffset: function (offset) {\r\n \t\tthis.options.zIndexOffset = offset;\r\n \t\treturn this.update();\r\n \t},\r\n\r\n \t// @method getIcon: Icon\r\n \t// Returns the current icon used by the marker\r\n \tgetIcon: function () {\r\n \t\treturn this.options.icon;\r\n \t},\r\n\r\n \t// @method setIcon(icon: Icon): this\r\n \t// Changes the marker icon.\r\n \tsetIcon: function (icon) {\r\n\r\n \t\tthis.options.icon = icon;\r\n\r\n \t\tif (this._map) {\r\n \t\t\tthis._initIcon();\r\n \t\t\tthis.update();\r\n \t\t}\r\n\r\n \t\tif (this._popup) {\r\n \t\t\tthis.bindPopup(this._popup, this._popup.options);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \tgetElement: function () {\r\n \t\treturn this._icon;\r\n \t},\r\n\r\n \tupdate: function () {\r\n\r\n \t\tif (this._icon && this._map) {\r\n \t\t\tvar pos = this._map.latLngToLayerPoint(this._latlng).round();\r\n \t\t\tthis._setPos(pos);\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_initIcon: function () {\r\n \t\tvar options = this.options,\r\n \t\t classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\r\n\r\n \t\tvar icon = options.icon.createIcon(this._icon),\r\n \t\t addIcon = false;\r\n\r\n \t\t// if we're not reusing the icon, remove the old one and init new one\r\n \t\tif (icon !== this._icon) {\r\n \t\t\tif (this._icon) {\r\n \t\t\t\tthis._removeIcon();\r\n \t\t\t}\r\n \t\t\taddIcon = true;\r\n\r\n \t\t\tif (options.title) {\r\n \t\t\t\ticon.title = options.title;\r\n \t\t\t}\r\n\r\n \t\t\tif (icon.tagName === 'IMG') {\r\n \t\t\t\ticon.alt = options.alt || '';\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\taddClass(icon, classToAdd);\r\n\r\n \t\tif (options.keyboard) {\r\n \t\t\ticon.tabIndex = '0';\r\n \t\t\ticon.setAttribute('role', 'button');\r\n \t\t}\r\n\r\n \t\tthis._icon = icon;\r\n\r\n \t\tif (options.riseOnHover) {\r\n \t\t\tthis.on({\r\n \t\t\t\tmouseover: this._bringToFront,\r\n \t\t\t\tmouseout: this._resetZIndex\r\n \t\t\t});\r\n \t\t}\r\n\r\n \t\tif (this.options.autoPanOnFocus) {\r\n \t\t\ton(icon, 'focus', this._panOnFocus, this);\r\n \t\t}\r\n\r\n \t\tvar newShadow = options.icon.createShadow(this._shadow),\r\n \t\t addShadow = false;\r\n\r\n \t\tif (newShadow !== this._shadow) {\r\n \t\t\tthis._removeShadow();\r\n \t\t\taddShadow = true;\r\n \t\t}\r\n\r\n \t\tif (newShadow) {\r\n \t\t\taddClass(newShadow, classToAdd);\r\n \t\t\tnewShadow.alt = '';\r\n \t\t}\r\n \t\tthis._shadow = newShadow;\r\n\r\n\r\n \t\tif (options.opacity < 1) {\r\n \t\t\tthis._updateOpacity();\r\n \t\t}\r\n\r\n\r\n \t\tif (addIcon) {\r\n \t\t\tthis.getPane().appendChild(this._icon);\r\n \t\t}\r\n \t\tthis._initInteraction();\r\n \t\tif (newShadow && addShadow) {\r\n \t\t\tthis.getPane(options.shadowPane).appendChild(this._shadow);\r\n \t\t}\r\n \t},\r\n\r\n \t_removeIcon: function () {\r\n \t\tif (this.options.riseOnHover) {\r\n \t\t\tthis.off({\r\n \t\t\t\tmouseover: this._bringToFront,\r\n \t\t\t\tmouseout: this._resetZIndex\r\n \t\t\t});\r\n \t\t}\r\n\r\n \t\tif (this.options.autoPanOnFocus) {\r\n \t\t\toff(this._icon, 'focus', this._panOnFocus, this);\r\n \t\t}\r\n\r\n \t\tremove(this._icon);\r\n \t\tthis.removeInteractiveTarget(this._icon);\r\n\r\n \t\tthis._icon = null;\r\n \t},\r\n\r\n \t_removeShadow: function () {\r\n \t\tif (this._shadow) {\r\n \t\t\tremove(this._shadow);\r\n \t\t}\r\n \t\tthis._shadow = null;\r\n \t},\r\n\r\n \t_setPos: function (pos) {\r\n\r\n \t\tif (this._icon) {\r\n \t\t\tsetPosition(this._icon, pos);\r\n \t\t}\r\n\r\n \t\tif (this._shadow) {\r\n \t\t\tsetPosition(this._shadow, pos);\r\n \t\t}\r\n\r\n \t\tthis._zIndex = pos.y + this.options.zIndexOffset;\r\n\r\n \t\tthis._resetZIndex();\r\n \t},\r\n\r\n \t_updateZIndex: function (offset) {\r\n \t\tif (this._icon) {\r\n \t\t\tthis._icon.style.zIndex = this._zIndex + offset;\r\n \t\t}\r\n \t},\r\n\r\n \t_animateZoom: function (opt) {\r\n \t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round();\r\n\r\n \t\tthis._setPos(pos);\r\n \t},\r\n\r\n \t_initInteraction: function () {\r\n\r\n \t\tif (!this.options.interactive) { return; }\r\n\r\n \t\taddClass(this._icon, 'leaflet-interactive');\r\n\r\n \t\tthis.addInteractiveTarget(this._icon);\r\n\r\n \t\tif (MarkerDrag) {\r\n \t\t\tvar draggable = this.options.draggable;\r\n \t\t\tif (this.dragging) {\r\n \t\t\t\tdraggable = this.dragging.enabled();\r\n \t\t\t\tthis.dragging.disable();\r\n \t\t\t}\r\n\r\n \t\t\tthis.dragging = new MarkerDrag(this);\r\n\r\n \t\t\tif (draggable) {\r\n \t\t\t\tthis.dragging.enable();\r\n \t\t\t}\r\n \t\t}\r\n \t},\r\n\r\n \t// @method setOpacity(opacity: Number): this\r\n \t// Changes the opacity of the marker.\r\n \tsetOpacity: function (opacity) {\r\n \t\tthis.options.opacity = opacity;\r\n \t\tif (this._map) {\r\n \t\t\tthis._updateOpacity();\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t_updateOpacity: function () {\r\n \t\tvar opacity = this.options.opacity;\r\n\r\n \t\tif (this._icon) {\r\n \t\t\tsetOpacity(this._icon, opacity);\r\n \t\t}\r\n\r\n \t\tif (this._shadow) {\r\n \t\t\tsetOpacity(this._shadow, opacity);\r\n \t\t}\r\n \t},\r\n\r\n \t_bringToFront: function () {\r\n \t\tthis._updateZIndex(this.options.riseOffset);\r\n \t},\r\n\r\n \t_resetZIndex: function () {\r\n \t\tthis._updateZIndex(0);\r\n \t},\r\n\r\n \t_panOnFocus: function () {\r\n \t\tvar map = this._map;\r\n \t\tif (!map) { return; }\r\n\r\n \t\tvar iconOpts = this.options.icon.options;\r\n \t\tvar size = iconOpts.iconSize ? toPoint(iconOpts.iconSize) : toPoint(0, 0);\r\n \t\tvar anchor = iconOpts.iconAnchor ? toPoint(iconOpts.iconAnchor) : toPoint(0, 0);\r\n\r\n \t\tmap.panInside(this._latlng, {\r\n \t\t\tpaddingTopLeft: anchor,\r\n \t\t\tpaddingBottomRight: size.subtract(anchor)\r\n \t\t});\r\n \t},\r\n\r\n \t_getPopupAnchor: function () {\r\n \t\treturn this.options.icon.options.popupAnchor;\r\n \t},\r\n\r\n \t_getTooltipAnchor: function () {\r\n \t\treturn this.options.icon.options.tooltipAnchor;\r\n \t}\r\n });\r\n\r\n\r\n // factory L.marker(latlng: LatLng, options? : Marker options)\r\n\r\n // @factory L.marker(latlng: LatLng, options? : Marker options)\r\n // Instantiates a Marker object given a geographical point and optionally an options object.\r\n function marker(latlng, options) {\r\n \treturn new Marker(latlng, options);\r\n }\n\n /*\n * @class Path\n * @aka L.Path\n * @inherits Interactive layer\n *\n * An abstract class that contains options and constants shared between vector\n * overlays (Polygon, Polyline, Circle). Do not use it directly. Extends `Layer`.\n */\n\n var Path = Layer.extend({\n\n \t// @section\n \t// @aka Path options\n \toptions: {\n \t\t// @option stroke: Boolean = true\n \t\t// Whether to draw stroke along the path. Set it to `false` to disable borders on polygons or circles.\n \t\tstroke: true,\n\n \t\t// @option color: String = '#3388ff'\n \t\t// Stroke color\n \t\tcolor: '#3388ff',\n\n \t\t// @option weight: Number = 3\n \t\t// Stroke width in pixels\n \t\tweight: 3,\n\n \t\t// @option opacity: Number = 1.0\n \t\t// Stroke opacity\n \t\topacity: 1,\n\n \t\t// @option lineCap: String= 'round'\n \t\t// A string that defines [shape to be used at the end](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) of the stroke.\n \t\tlineCap: 'round',\n\n \t\t// @option lineJoin: String = 'round'\n \t\t// A string that defines [shape to be used at the corners](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linejoin) of the stroke.\n \t\tlineJoin: 'round',\n\n \t\t// @option dashArray: String = null\n \t\t// A string that defines the stroke [dash pattern](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dasharray). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n \t\tdashArray: null,\n\n \t\t// @option dashOffset: String = null\n \t\t// A string that defines the [distance into the dash pattern to start the dash](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dashoffset). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n \t\tdashOffset: null,\n\n \t\t// @option fill: Boolean = depends\n \t\t// Whether to fill the path with color. Set it to `false` to disable filling on polygons or circles.\n \t\tfill: false,\n\n \t\t// @option fillColor: String = *\n \t\t// Fill color. Defaults to the value of the [`color`](#path-color) option\n \t\tfillColor: null,\n\n \t\t// @option fillOpacity: Number = 0.2\n \t\t// Fill opacity.\n \t\tfillOpacity: 0.2,\n\n \t\t// @option fillRule: String = 'evenodd'\n \t\t// A string that defines [how the inside of a shape](https://developer.mozilla.org/docs/Web/SVG/Attribute/fill-rule) is determined.\n \t\tfillRule: 'evenodd',\n\n \t\t// className: '',\n\n \t\t// Option inherited from \"Interactive layer\" abstract class\n \t\tinteractive: true,\n\n \t\t// @option bubblingMouseEvents: Boolean = true\n \t\t// When `true`, a mouse event on this path will trigger the same event on the map\n \t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\n \t\tbubblingMouseEvents: true\n \t},\n\n \tbeforeAdd: function (map) {\n \t\t// Renderer is set here because we need to call renderer.getEvents\n \t\t// before this.getEvents.\n \t\tthis._renderer = map.getRenderer(this);\n \t},\n\n \tonAdd: function () {\n \t\tthis._renderer._initPath(this);\n \t\tthis._reset();\n \t\tthis._renderer._addPath(this);\n \t},\n\n \tonRemove: function () {\n \t\tthis._renderer._removePath(this);\n \t},\n\n \t// @method redraw(): this\n \t// Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.\n \tredraw: function () {\n \t\tif (this._map) {\n \t\t\tthis._renderer._updatePath(this);\n \t\t}\n \t\treturn this;\n \t},\n\n \t// @method setStyle(style: Path options): this\n \t// Changes the appearance of a Path based on the options in the `Path options` object.\n \tsetStyle: function (style) {\n \t\tsetOptions(this, style);\n \t\tif (this._renderer) {\n \t\t\tthis._renderer._updateStyle(this);\n \t\t\tif (this.options.stroke && style && Object.prototype.hasOwnProperty.call(style, 'weight')) {\n \t\t\t\tthis._updateBounds();\n \t\t\t}\n \t\t}\n \t\treturn this;\n \t},\n\n \t// @method bringToFront(): this\n \t// Brings the layer to the top of all path layers.\n \tbringToFront: function () {\n \t\tif (this._renderer) {\n \t\t\tthis._renderer._bringToFront(this);\n \t\t}\n \t\treturn this;\n \t},\n\n \t// @method bringToBack(): this\n \t// Brings the layer to the bottom of all path layers.\n \tbringToBack: function () {\n \t\tif (this._renderer) {\n \t\t\tthis._renderer._bringToBack(this);\n \t\t}\n \t\treturn this;\n \t},\n\n \tgetElement: function () {\n \t\treturn this._path;\n \t},\n\n \t_reset: function () {\n \t\t// defined in child classes\n \t\tthis._project();\n \t\tthis._update();\n \t},\n\n \t_clickTolerance: function () {\n \t\t// used when doing hit detection for Canvas layers\n \t\treturn (this.options.stroke ? this.options.weight / 2 : 0) +\n \t\t (this._renderer.options.tolerance || 0);\n \t}\n });\n\n /*\n * @class CircleMarker\n * @aka L.CircleMarker\n * @inherits Path\n *\n * A circle of a fixed size with radius specified in pixels. Extends `Path`.\n */\n\n var CircleMarker = Path.extend({\n\n \t// @section\n \t// @aka CircleMarker options\n \toptions: {\n \t\tfill: true,\n\n \t\t// @option radius: Number = 10\n \t\t// Radius of the circle marker, in pixels\n \t\tradius: 10\n \t},\n\n \tinitialize: function (latlng, options) {\n \t\tsetOptions(this, options);\n \t\tthis._latlng = toLatLng(latlng);\n \t\tthis._radius = this.options.radius;\n \t},\n\n \t// @method setLatLng(latLng: LatLng): this\n \t// Sets the position of a circle marker to a new location.\n \tsetLatLng: function (latlng) {\n \t\tvar oldLatLng = this._latlng;\n \t\tthis._latlng = toLatLng(latlng);\n \t\tthis.redraw();\n\n \t\t// @event move: Event\n \t\t// Fired when the marker is moved via [`setLatLng`](#circlemarker-setlatlng). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\n \t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\n \t},\n\n \t// @method getLatLng(): LatLng\n \t// Returns the current geographical position of the circle marker\n \tgetLatLng: function () {\n \t\treturn this._latlng;\n \t},\n\n \t// @method setRadius(radius: Number): this\n \t// Sets the radius of a circle marker. Units are in pixels.\n \tsetRadius: function (radius) {\n \t\tthis.options.radius = this._radius = radius;\n \t\treturn this.redraw();\n \t},\n\n \t// @method getRadius(): Number\n \t// Returns the current radius of the circle\n \tgetRadius: function () {\n \t\treturn this._radius;\n \t},\n\n \tsetStyle : function (options) {\n \t\tvar radius = options && options.radius || this._radius;\n \t\tPath.prototype.setStyle.call(this, options);\n \t\tthis.setRadius(radius);\n \t\treturn this;\n \t},\n\n \t_project: function () {\n \t\tthis._point = this._map.latLngToLayerPoint(this._latlng);\n \t\tthis._updateBounds();\n \t},\n\n \t_updateBounds: function () {\n \t\tvar r = this._radius,\n \t\t r2 = this._radiusY || r,\n \t\t w = this._clickTolerance(),\n \t\t p = [r + w, r2 + w];\n \t\tthis._pxBounds = new Bounds(this._point.subtract(p), this._point.add(p));\n \t},\n\n \t_update: function () {\n \t\tif (this._map) {\n \t\t\tthis._updatePath();\n \t\t}\n \t},\n\n \t_updatePath: function () {\n \t\tthis._renderer._updateCircle(this);\n \t},\n\n \t_empty: function () {\n \t\treturn this._radius && !this._renderer._bounds.intersects(this._pxBounds);\n \t},\n\n \t// Needed by the `Canvas` renderer for interactivity\n \t_containsPoint: function (p) {\n \t\treturn p.distanceTo(this._point) <= this._radius + this._clickTolerance();\n \t}\n });\n\n\n // @factory L.circleMarker(latlng: LatLng, options?: CircleMarker options)\n // Instantiates a circle marker object given a geographical point, and an optional options object.\n function circleMarker(latlng, options) {\n \treturn new CircleMarker(latlng, options);\n }\n\n /*\n * @class Circle\n * @aka L.Circle\n * @inherits CircleMarker\n *\n * A class for drawing circle overlays on a map. Extends `CircleMarker`.\n *\n * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion).\n *\n * @example\n *\n * ```js\n * L.circle([50.5, 30.5], {radius: 200}).addTo(map);\n * ```\n */\n\n var Circle = CircleMarker.extend({\n\n \tinitialize: function (latlng, options, legacyOptions) {\n \t\tif (typeof options === 'number') {\n \t\t\t// Backwards compatibility with 0.7.x factory (latlng, radius, options?)\n \t\t\toptions = extend({}, legacyOptions, {radius: options});\n \t\t}\n \t\tsetOptions(this, options);\n \t\tthis._latlng = toLatLng(latlng);\n\n \t\tif (isNaN(this.options.radius)) { throw new Error('Circle radius cannot be NaN'); }\n\n \t\t// @section\n \t\t// @aka Circle options\n \t\t// @option radius: Number; Radius of the circle, in meters.\n \t\tthis._mRadius = this.options.radius;\n \t},\n\n \t// @method setRadius(radius: Number): this\n \t// Sets the radius of a circle. Units are in meters.\n \tsetRadius: function (radius) {\n \t\tthis._mRadius = radius;\n \t\treturn this.redraw();\n \t},\n\n \t// @method getRadius(): Number\n \t// Returns the current radius of a circle. Units are in meters.\n \tgetRadius: function () {\n \t\treturn this._mRadius;\n \t},\n\n \t// @method getBounds(): LatLngBounds\n \t// Returns the `LatLngBounds` of the path.\n \tgetBounds: function () {\n \t\tvar half = [this._radius, this._radiusY || this._radius];\n\n \t\treturn new LatLngBounds(\n \t\t\tthis._map.layerPointToLatLng(this._point.subtract(half)),\n \t\t\tthis._map.layerPointToLatLng(this._point.add(half)));\n \t},\n\n \tsetStyle: Path.prototype.setStyle,\n\n \t_project: function () {\n\n \t\tvar lng = this._latlng.lng,\n \t\t lat = this._latlng.lat,\n \t\t map = this._map,\n \t\t crs = map.options.crs;\n\n \t\tif (crs.distance === Earth.distance) {\n \t\t\tvar d = Math.PI / 180,\n \t\t\t latR = (this._mRadius / Earth.R) / d,\n \t\t\t top = map.project([lat + latR, lng]),\n \t\t\t bottom = map.project([lat - latR, lng]),\n \t\t\t p = top.add(bottom).divideBy(2),\n \t\t\t lat2 = map.unproject(p).lat,\n \t\t\t lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) /\n \t\t\t (Math.cos(lat * d) * Math.cos(lat2 * d))) / d;\n\n \t\t\tif (isNaN(lngR) || lngR === 0) {\n \t\t\t\tlngR = latR / Math.cos(Math.PI / 180 * lat); // Fallback for edge case, #2425\n \t\t\t}\n\n \t\t\tthis._point = p.subtract(map.getPixelOrigin());\n \t\t\tthis._radius = isNaN(lngR) ? 0 : p.x - map.project([lat2, lng - lngR]).x;\n \t\t\tthis._radiusY = p.y - top.y;\n\n \t\t} else {\n \t\t\tvar latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0]));\n\n \t\t\tthis._point = map.latLngToLayerPoint(this._latlng);\n \t\t\tthis._radius = this._point.x - map.latLngToLayerPoint(latlng2).x;\n \t\t}\n\n \t\tthis._updateBounds();\n \t}\n });\n\n // @factory L.circle(latlng: LatLng, options?: Circle options)\n // Instantiates a circle object given a geographical point, and an options object\n // which contains the circle radius.\n // @alternative\n // @factory L.circle(latlng: LatLng, radius: Number, options?: Circle options)\n // Obsolete way of instantiating a circle, for compatibility with 0.7.x code.\n // Do not use in new applications or plugins.\n function circle(latlng, options, legacyOptions) {\n \treturn new Circle(latlng, options, legacyOptions);\n }\n\n /*\n * @class Polyline\n * @aka L.Polyline\n * @inherits Path\n *\n * A class for drawing polyline overlays on a map. Extends `Path`.\n *\n * @example\n *\n * ```js\n * // create a red polyline from an array of LatLng points\n * var latlngs = [\n * \t[45.51, -122.68],\n * \t[37.77, -122.43],\n * \t[34.04, -118.2]\n * ];\n *\n * var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map);\n *\n * // zoom the map to the polyline\n * map.fitBounds(polyline.getBounds());\n * ```\n *\n * You can also pass a multi-dimensional array to represent a `MultiPolyline` shape:\n *\n * ```js\n * // create a red polyline from an array of arrays of LatLng points\n * var latlngs = [\n * \t[[45.51, -122.68],\n * \t [37.77, -122.43],\n * \t [34.04, -118.2]],\n * \t[[40.78, -73.91],\n * \t [41.83, -87.62],\n * \t [32.76, -96.72]]\n * ];\n * ```\n */\n\n\n var Polyline = Path.extend({\n\n \t// @section\n \t// @aka Polyline options\n \toptions: {\n \t\t// @option smoothFactor: Number = 1.0\n \t\t// How much to simplify the polyline on each zoom level. More means\n \t\t// better performance and smoother look, and less means more accurate representation.\n \t\tsmoothFactor: 1.0,\n\n \t\t// @option noClip: Boolean = false\n \t\t// Disable polyline clipping.\n \t\tnoClip: false\n \t},\n\n \tinitialize: function (latlngs, options) {\n \t\tsetOptions(this, options);\n \t\tthis._setLatLngs(latlngs);\n \t},\n\n \t// @method getLatLngs(): LatLng[]\n \t// Returns an array of the points in the path, or nested arrays of points in case of multi-polyline.\n \tgetLatLngs: function () {\n \t\treturn this._latlngs;\n \t},\n\n \t// @method setLatLngs(latlngs: LatLng[]): this\n \t// Replaces all the points in the polyline with the given array of geographical points.\n \tsetLatLngs: function (latlngs) {\n \t\tthis._setLatLngs(latlngs);\n \t\treturn this.redraw();\n \t},\n\n \t// @method isEmpty(): Boolean\n \t// Returns `true` if the Polyline has no LatLngs.\n \tisEmpty: function () {\n \t\treturn !this._latlngs.length;\n \t},\n\n \t// @method closestLayerPoint(p: Point): Point\n \t// Returns the point closest to `p` on the Polyline.\n \tclosestLayerPoint: function (p) {\n \t\tvar minDistance = Infinity,\n \t\t minPoint = null,\n \t\t closest = _sqClosestPointOnSegment,\n \t\t p1, p2;\n\n \t\tfor (var j = 0, jLen = this._parts.length; j < jLen; j++) {\n \t\t\tvar points = this._parts[j];\n\n \t\t\tfor (var i = 1, len = points.length; i < len; i++) {\n \t\t\t\tp1 = points[i - 1];\n \t\t\t\tp2 = points[i];\n\n \t\t\t\tvar sqDist = closest(p, p1, p2, true);\n\n \t\t\t\tif (sqDist < minDistance) {\n \t\t\t\t\tminDistance = sqDist;\n \t\t\t\t\tminPoint = closest(p, p1, p2);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t\tif (minPoint) {\n \t\t\tminPoint.distance = Math.sqrt(minDistance);\n \t\t}\n \t\treturn minPoint;\n \t},\n\n \t// @method getCenter(): LatLng\n \t// Returns the center ([centroid](https://en.wikipedia.org/wiki/Centroid)) of the polyline.\n \tgetCenter: function () {\n \t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n \t\tif (!this._map) {\n \t\t\tthrow new Error('Must add layer to map before using getCenter()');\n \t\t}\n \t\treturn polylineCenter(this._defaultShape(), this._map.options.crs);\n \t},\n\n \t// @method getBounds(): LatLngBounds\n \t// Returns the `LatLngBounds` of the path.\n \tgetBounds: function () {\n \t\treturn this._bounds;\n \t},\n\n \t// @method addLatLng(latlng: LatLng, latlngs?: LatLng[]): this\n \t// Adds a given point to the polyline. By default, adds to the first ring of\n \t// the polyline in case of a multi-polyline, but can be overridden by passing\n \t// a specific ring as a LatLng array (that you can earlier access with [`getLatLngs`](#polyline-getlatlngs)).\n \taddLatLng: function (latlng, latlngs) {\n \t\tlatlngs = latlngs || this._defaultShape();\n \t\tlatlng = toLatLng(latlng);\n \t\tlatlngs.push(latlng);\n \t\tthis._bounds.extend(latlng);\n \t\treturn this.redraw();\n \t},\n\n \t_setLatLngs: function (latlngs) {\n \t\tthis._bounds = new LatLngBounds();\n \t\tthis._latlngs = this._convertLatLngs(latlngs);\n \t},\n\n \t_defaultShape: function () {\n \t\treturn isFlat(this._latlngs) ? this._latlngs : this._latlngs[0];\n \t},\n\n \t// recursively convert latlngs input into actual LatLng instances; calculate bounds along the way\n \t_convertLatLngs: function (latlngs) {\n \t\tvar result = [],\n \t\t flat = isFlat(latlngs);\n\n \t\tfor (var i = 0, len = latlngs.length; i < len; i++) {\n \t\t\tif (flat) {\n \t\t\t\tresult[i] = toLatLng(latlngs[i]);\n \t\t\t\tthis._bounds.extend(result[i]);\n \t\t\t} else {\n \t\t\t\tresult[i] = this._convertLatLngs(latlngs[i]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t},\n\n \t_project: function () {\n \t\tvar pxBounds = new Bounds();\n \t\tthis._rings = [];\n \t\tthis._projectLatlngs(this._latlngs, this._rings, pxBounds);\n\n \t\tif (this._bounds.isValid() && pxBounds.isValid()) {\n \t\t\tthis._rawPxBounds = pxBounds;\n \t\t\tthis._updateBounds();\n \t\t}\n \t},\n\n \t_updateBounds: function () {\n \t\tvar w = this._clickTolerance(),\n \t\t p = new Point(w, w);\n\n \t\tif (!this._rawPxBounds) {\n \t\t\treturn;\n \t\t}\n\n \t\tthis._pxBounds = new Bounds([\n \t\t\tthis._rawPxBounds.min.subtract(p),\n \t\t\tthis._rawPxBounds.max.add(p)\n \t\t]);\n \t},\n\n \t// recursively turns latlngs into a set of rings with projected coordinates\n \t_projectLatlngs: function (latlngs, result, projectedBounds) {\n \t\tvar flat = latlngs[0] instanceof LatLng,\n \t\t len = latlngs.length,\n \t\t i, ring;\n\n \t\tif (flat) {\n \t\t\tring = [];\n \t\t\tfor (i = 0; i < len; i++) {\n \t\t\t\tring[i] = this._map.latLngToLayerPoint(latlngs[i]);\n \t\t\t\tprojectedBounds.extend(ring[i]);\n \t\t\t}\n \t\t\tresult.push(ring);\n \t\t} else {\n \t\t\tfor (i = 0; i < len; i++) {\n \t\t\t\tthis._projectLatlngs(latlngs[i], result, projectedBounds);\n \t\t\t}\n \t\t}\n \t},\n\n \t// clip polyline by renderer bounds so that we have less to render for performance\n \t_clipPoints: function () {\n \t\tvar bounds = this._renderer._bounds;\n\n \t\tthis._parts = [];\n \t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n \t\t\treturn;\n \t\t}\n\n \t\tif (this.options.noClip) {\n \t\t\tthis._parts = this._rings;\n \t\t\treturn;\n \t\t}\n\n \t\tvar parts = this._parts,\n \t\t i, j, k, len, len2, segment, points;\n\n \t\tfor (i = 0, k = 0, len = this._rings.length; i < len; i++) {\n \t\t\tpoints = this._rings[i];\n\n \t\t\tfor (j = 0, len2 = points.length; j < len2 - 1; j++) {\n \t\t\t\tsegment = clipSegment(points[j], points[j + 1], bounds, j, true);\n\n \t\t\t\tif (!segment) { continue; }\n\n \t\t\t\tparts[k] = parts[k] || [];\n \t\t\t\tparts[k].push(segment[0]);\n\n \t\t\t\t// if segment goes out of screen, or it's the last one, it's the end of the line part\n \t\t\t\tif ((segment[1] !== points[j + 1]) || (j === len2 - 2)) {\n \t\t\t\t\tparts[k].push(segment[1]);\n \t\t\t\t\tk++;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t},\n\n \t// simplify each clipped part of the polyline for performance\n \t_simplifyPoints: function () {\n \t\tvar parts = this._parts,\n \t\t tolerance = this.options.smoothFactor;\n\n \t\tfor (var i = 0, len = parts.length; i < len; i++) {\n \t\t\tparts[i] = simplify(parts[i], tolerance);\n \t\t}\n \t},\n\n \t_update: function () {\n \t\tif (!this._map) { return; }\n\n \t\tthis._clipPoints();\n \t\tthis._simplifyPoints();\n \t\tthis._updatePath();\n \t},\n\n \t_updatePath: function () {\n \t\tthis._renderer._updatePoly(this);\n \t},\n\n \t// Needed by the `Canvas` renderer for interactivity\n \t_containsPoint: function (p, closed) {\n \t\tvar i, j, k, len, len2, part,\n \t\t w = this._clickTolerance();\n\n \t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n \t\t// hit detection for polylines\n \t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n \t\t\tpart = this._parts[i];\n\n \t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n \t\t\t\tif (!closed && (j === 0)) { continue; }\n\n \t\t\t\tif (pointToSegmentDistance(p, part[k], part[j]) <= w) {\n \t\t\t\t\treturn true;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t\treturn false;\n \t}\n });\n\n // @factory L.polyline(latlngs: LatLng[], options?: Polyline options)\n // Instantiates a polyline object given an array of geographical points and\n // optionally an options object. You can create a `Polyline` object with\n // multiple separate lines (`MultiPolyline`) by passing an array of arrays\n // of geographic points.\n function polyline(latlngs, options) {\n \treturn new Polyline(latlngs, options);\n }\n\n // Retrocompat. Allow plugins to support Leaflet versions before and after 1.1.\n Polyline._flat = _flat;\n\n /*\n * @class Polygon\n * @aka L.Polygon\n * @inherits Polyline\n *\n * A class for drawing polygon overlays on a map. Extends `Polyline`.\n *\n * Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one — it's better to filter out such points.\n *\n *\n * @example\n *\n * ```js\n * // create a red polygon from an array of LatLng points\n * var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]];\n *\n * var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map);\n *\n * // zoom the map to the polygon\n * map.fitBounds(polygon.getBounds());\n * ```\n *\n * You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape:\n *\n * ```js\n * var latlngs = [\n * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n * ];\n * ```\n *\n * Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape.\n *\n * ```js\n * var latlngs = [\n * [ // first polygon\n * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n * ],\n * [ // second polygon\n * [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]]\n * ]\n * ];\n * ```\n */\n\n var Polygon = Polyline.extend({\n\n \toptions: {\n \t\tfill: true\n \t},\n\n \tisEmpty: function () {\n \t\treturn !this._latlngs.length || !this._latlngs[0].length;\n \t},\n\n \t// @method getCenter(): LatLng\n \t// Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the Polygon.\n \tgetCenter: function () {\n \t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n \t\tif (!this._map) {\n \t\t\tthrow new Error('Must add layer to map before using getCenter()');\n \t\t}\n \t\treturn polygonCenter(this._defaultShape(), this._map.options.crs);\n \t},\n\n \t_convertLatLngs: function (latlngs) {\n \t\tvar result = Polyline.prototype._convertLatLngs.call(this, latlngs),\n \t\t len = result.length;\n\n \t\t// remove last point if it equals first one\n \t\tif (len >= 2 && result[0] instanceof LatLng && result[0].equals(result[len - 1])) {\n \t\t\tresult.pop();\n \t\t}\n \t\treturn result;\n \t},\n\n \t_setLatLngs: function (latlngs) {\n \t\tPolyline.prototype._setLatLngs.call(this, latlngs);\n \t\tif (isFlat(this._latlngs)) {\n \t\t\tthis._latlngs = [this._latlngs];\n \t\t}\n \t},\n\n \t_defaultShape: function () {\n \t\treturn isFlat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0];\n \t},\n\n \t_clipPoints: function () {\n \t\t// polygons need a different clipping algorithm so we redefine that\n\n \t\tvar bounds = this._renderer._bounds,\n \t\t w = this.options.weight,\n \t\t p = new Point(w, w);\n\n \t\t// increase clip padding by stroke width to avoid stroke on clip edges\n \t\tbounds = new Bounds(bounds.min.subtract(p), bounds.max.add(p));\n\n \t\tthis._parts = [];\n \t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n \t\t\treturn;\n \t\t}\n\n \t\tif (this.options.noClip) {\n \t\t\tthis._parts = this._rings;\n \t\t\treturn;\n \t\t}\n\n \t\tfor (var i = 0, len = this._rings.length, clipped; i < len; i++) {\n \t\t\tclipped = clipPolygon(this._rings[i], bounds, true);\n \t\t\tif (clipped.length) {\n \t\t\t\tthis._parts.push(clipped);\n \t\t\t}\n \t\t}\n \t},\n\n \t_updatePath: function () {\n \t\tthis._renderer._updatePoly(this, true);\n \t},\n\n \t// Needed by the `Canvas` renderer for interactivity\n \t_containsPoint: function (p) {\n \t\tvar inside = false,\n \t\t part, p1, p2, i, j, k, len, len2;\n\n \t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n \t\t// ray casting algorithm for detecting if point is in polygon\n \t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n \t\t\tpart = this._parts[i];\n\n \t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n \t\t\t\tp1 = part[j];\n \t\t\t\tp2 = part[k];\n\n \t\t\t\tif (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) {\n \t\t\t\t\tinside = !inside;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// also check if it's on polygon stroke\n \t\treturn inside || Polyline.prototype._containsPoint.call(this, p, true);\n \t}\n\n });\n\n\n // @factory L.polygon(latlngs: LatLng[], options?: Polyline options)\n function polygon(latlngs, options) {\n \treturn new Polygon(latlngs, options);\n }\n\n /*\r\n * @class GeoJSON\r\n * @aka L.GeoJSON\r\n * @inherits FeatureGroup\r\n *\r\n * Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse\r\n * GeoJSON data and display it on the map. Extends `FeatureGroup`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.geoJSON(data, {\r\n * \tstyle: function (feature) {\r\n * \t\treturn {color: feature.properties.color};\r\n * \t}\r\n * }).bindPopup(function (layer) {\r\n * \treturn layer.feature.properties.description;\r\n * }).addTo(map);\r\n * ```\r\n */\r\n\r\n var GeoJSON = FeatureGroup.extend({\r\n\r\n \t/* @section\r\n \t * @aka GeoJSON options\r\n \t *\r\n \t * @option pointToLayer: Function = *\r\n \t * A `Function` defining how GeoJSON points spawn Leaflet layers. It is internally\r\n \t * called when data is added, passing the GeoJSON point feature and its `LatLng`.\r\n \t * The default is to spawn a default `Marker`:\r\n \t * ```js\r\n \t * function(geoJsonPoint, latlng) {\r\n \t * \treturn L.marker(latlng);\r\n \t * }\r\n \t * ```\r\n \t *\r\n \t * @option style: Function = *\r\n \t * A `Function` defining the `Path options` for styling GeoJSON lines and polygons,\r\n \t * called internally when data is added.\r\n \t * The default value is to not override any defaults:\r\n \t * ```js\r\n \t * function (geoJsonFeature) {\r\n \t * \treturn {}\r\n \t * }\r\n \t * ```\r\n \t *\r\n \t * @option onEachFeature: Function = *\r\n \t * A `Function` that will be called once for each created `Feature`, after it has\r\n \t * been created and styled. Useful for attaching events and popups to features.\r\n \t * The default is to do nothing with the newly created layers:\r\n \t * ```js\r\n \t * function (feature, layer) {}\r\n \t * ```\r\n \t *\r\n \t * @option filter: Function = *\r\n \t * A `Function` that will be used to decide whether to include a feature or not.\r\n \t * The default is to include all features:\r\n \t * ```js\r\n \t * function (geoJsonFeature) {\r\n \t * \treturn true;\r\n \t * }\r\n \t * ```\r\n \t * Note: dynamically changing the `filter` option will have effect only on newly\r\n \t * added data. It will _not_ re-evaluate already included features.\r\n \t *\r\n \t * @option coordsToLatLng: Function = *\r\n \t * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s.\r\n \t * The default is the `coordsToLatLng` static method.\r\n \t *\r\n \t * @option markersInheritOptions: Boolean = false\r\n \t * Whether default Markers for \"Point\" type Features inherit from group options.\r\n \t */\r\n\r\n \tinitialize: function (geojson, options) {\r\n \t\tsetOptions(this, options);\r\n\r\n \t\tthis._layers = {};\r\n\r\n \t\tif (geojson) {\r\n \t\t\tthis.addData(geojson);\r\n \t\t}\r\n \t},\r\n\r\n \t// @method addData( <GeoJSON> data ): this\r\n \t// Adds a GeoJSON object to the layer.\r\n \taddData: function (geojson) {\r\n \t\tvar features = isArray(geojson) ? geojson : geojson.features,\r\n \t\t i, len, feature;\r\n\r\n \t\tif (features) {\r\n \t\t\tfor (i = 0, len = features.length; i < len; i++) {\r\n \t\t\t\t// only add this if geometry or geometries are set and not null\r\n \t\t\t\tfeature = features[i];\r\n \t\t\t\tif (feature.geometries || feature.geometry || feature.features || feature.coordinates) {\r\n \t\t\t\t\tthis.addData(feature);\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\treturn this;\r\n \t\t}\r\n\r\n \t\tvar options = this.options;\r\n\r\n \t\tif (options.filter && !options.filter(geojson)) { return this; }\r\n\r\n \t\tvar layer = geometryToLayer(geojson, options);\r\n \t\tif (!layer) {\r\n \t\t\treturn this;\r\n \t\t}\r\n \t\tlayer.feature = asFeature(geojson);\r\n\r\n \t\tlayer.defaultOptions = layer.options;\r\n \t\tthis.resetStyle(layer);\r\n\r\n \t\tif (options.onEachFeature) {\r\n \t\t\toptions.onEachFeature(geojson, layer);\r\n \t\t}\r\n\r\n \t\treturn this.addLayer(layer);\r\n \t},\r\n\r\n \t// @method resetStyle( <Path> layer? ): this\r\n \t// Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events.\r\n \t// If `layer` is omitted, the style of all features in the current layer is reset.\r\n \tresetStyle: function (layer) {\r\n \t\tif (layer === undefined) {\r\n \t\t\treturn this.eachLayer(this.resetStyle, this);\r\n \t\t}\r\n \t\t// reset any custom styles\r\n \t\tlayer.options = extend({}, layer.defaultOptions);\r\n \t\tthis._setLayerStyle(layer, this.options.style);\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method setStyle( <Function> style ): this\r\n \t// Changes styles of GeoJSON vector layers with the given style function.\r\n \tsetStyle: function (style) {\r\n \t\treturn this.eachLayer(function (layer) {\r\n \t\t\tthis._setLayerStyle(layer, style);\r\n \t\t}, this);\r\n \t},\r\n\r\n \t_setLayerStyle: function (layer, style) {\r\n \t\tif (layer.setStyle) {\r\n \t\t\tif (typeof style === 'function') {\r\n \t\t\t\tstyle = style(layer.feature);\r\n \t\t\t}\r\n \t\t\tlayer.setStyle(style);\r\n \t\t}\r\n \t}\r\n });\r\n\r\n // @section\r\n // There are several static functions which can be called without instantiating L.GeoJSON:\r\n\r\n // @function geometryToLayer(featureData: Object, options?: GeoJSON options): Layer\r\n // Creates a `Layer` from a given GeoJSON feature. Can use a custom\r\n // [`pointToLayer`](#geojson-pointtolayer) and/or [`coordsToLatLng`](#geojson-coordstolatlng)\r\n // functions if provided as options.\r\n function geometryToLayer(geojson, options) {\r\n\r\n \tvar geometry = geojson.type === 'Feature' ? geojson.geometry : geojson,\r\n \t coords = geometry ? geometry.coordinates : null,\r\n \t layers = [],\r\n \t pointToLayer = options && options.pointToLayer,\r\n \t _coordsToLatLng = options && options.coordsToLatLng || coordsToLatLng,\r\n \t latlng, latlngs, i, len;\r\n\r\n \tif (!coords && !geometry) {\r\n \t\treturn null;\r\n \t}\r\n\r\n \tswitch (geometry.type) {\r\n \tcase 'Point':\r\n \t\tlatlng = _coordsToLatLng(coords);\r\n \t\treturn _pointToLayer(pointToLayer, geojson, latlng, options);\r\n\r\n \tcase 'MultiPoint':\r\n \t\tfor (i = 0, len = coords.length; i < len; i++) {\r\n \t\t\tlatlng = _coordsToLatLng(coords[i]);\r\n \t\t\tlayers.push(_pointToLayer(pointToLayer, geojson, latlng, options));\r\n \t\t}\r\n \t\treturn new FeatureGroup(layers);\r\n\r\n \tcase 'LineString':\r\n \tcase 'MultiLineString':\r\n \t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, _coordsToLatLng);\r\n \t\treturn new Polyline(latlngs, options);\r\n\r\n \tcase 'Polygon':\r\n \tcase 'MultiPolygon':\r\n \t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, _coordsToLatLng);\r\n \t\treturn new Polygon(latlngs, options);\r\n\r\n \tcase 'GeometryCollection':\r\n \t\tfor (i = 0, len = geometry.geometries.length; i < len; i++) {\r\n \t\t\tvar geoLayer = geometryToLayer({\r\n \t\t\t\tgeometry: geometry.geometries[i],\r\n \t\t\t\ttype: 'Feature',\r\n \t\t\t\tproperties: geojson.properties\r\n \t\t\t}, options);\r\n\r\n \t\t\tif (geoLayer) {\r\n \t\t\t\tlayers.push(geoLayer);\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn new FeatureGroup(layers);\r\n\r\n \tcase 'FeatureCollection':\r\n \t\tfor (i = 0, len = geometry.features.length; i < len; i++) {\r\n \t\t\tvar featureLayer = geometryToLayer(geometry.features[i], options);\r\n\r\n \t\t\tif (featureLayer) {\r\n \t\t\t\tlayers.push(featureLayer);\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn new FeatureGroup(layers);\r\n\r\n \tdefault:\r\n \t\tthrow new Error('Invalid GeoJSON object.');\r\n \t}\r\n }\r\n\r\n function _pointToLayer(pointToLayerFn, geojson, latlng, options) {\r\n \treturn pointToLayerFn ?\r\n \t\tpointToLayerFn(geojson, latlng) :\r\n \t\tnew Marker(latlng, options && options.markersInheritOptions && options);\r\n }\r\n\r\n // @function coordsToLatLng(coords: Array): LatLng\r\n // Creates a `LatLng` object from an array of 2 numbers (longitude, latitude)\r\n // or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points.\r\n function coordsToLatLng(coords) {\r\n \treturn new LatLng(coords[1], coords[0], coords[2]);\r\n }\r\n\r\n // @function coordsToLatLngs(coords: Array, levelsDeep?: Number, coordsToLatLng?: Function): Array\r\n // Creates a multidimensional array of `LatLng`s from a GeoJSON coordinates array.\r\n // `levelsDeep` specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default).\r\n // Can use a custom [`coordsToLatLng`](#geojson-coordstolatlng) function.\r\n function coordsToLatLngs(coords, levelsDeep, _coordsToLatLng) {\r\n \tvar latlngs = [];\r\n\r\n \tfor (var i = 0, len = coords.length, latlng; i < len; i++) {\r\n \t\tlatlng = levelsDeep ?\r\n \t\t\tcoordsToLatLngs(coords[i], levelsDeep - 1, _coordsToLatLng) :\r\n \t\t\t(_coordsToLatLng || coordsToLatLng)(coords[i]);\r\n\r\n \t\tlatlngs.push(latlng);\r\n \t}\r\n\r\n \treturn latlngs;\r\n }\r\n\r\n // @function latLngToCoords(latlng: LatLng, precision?: Number|false): Array\r\n // Reverse of [`coordsToLatLng`](#geojson-coordstolatlng)\r\n // Coordinates values are rounded with [`formatNum`](#util-formatnum) function.\r\n function latLngToCoords(latlng, precision) {\r\n \tlatlng = toLatLng(latlng);\r\n \treturn latlng.alt !== undefined ?\r\n \t\t[formatNum(latlng.lng, precision), formatNum(latlng.lat, precision), formatNum(latlng.alt, precision)] :\r\n \t\t[formatNum(latlng.lng, precision), formatNum(latlng.lat, precision)];\r\n }\r\n\r\n // @function latLngsToCoords(latlngs: Array, levelsDeep?: Number, closed?: Boolean, precision?: Number|false): Array\r\n // Reverse of [`coordsToLatLngs`](#geojson-coordstolatlngs)\r\n // `closed` determines whether the first point should be appended to the end of the array to close the feature, only used when `levelsDeep` is 0. False by default.\r\n // Coordinates values are rounded with [`formatNum`](#util-formatnum) function.\r\n function latLngsToCoords(latlngs, levelsDeep, closed, precision) {\r\n \tvar coords = [];\r\n\r\n \tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n \t\t// Check for flat arrays required to ensure unbalanced arrays are correctly converted in recursion\r\n \t\tcoords.push(levelsDeep ?\r\n \t\t\tlatLngsToCoords(latlngs[i], isFlat(latlngs[i]) ? 0 : levelsDeep - 1, closed, precision) :\r\n \t\t\tlatLngToCoords(latlngs[i], precision));\r\n \t}\r\n\r\n \tif (!levelsDeep && closed && coords.length > 0) {\r\n \t\tcoords.push(coords[0].slice());\r\n \t}\r\n\r\n \treturn coords;\r\n }\r\n\r\n function getFeature(layer, newGeometry) {\r\n \treturn layer.feature ?\r\n \t\textend({}, layer.feature, {geometry: newGeometry}) :\r\n \t\tasFeature(newGeometry);\r\n }\r\n\r\n // @function asFeature(geojson: Object): Object\r\n // Normalize GeoJSON geometries/features into GeoJSON features.\r\n function asFeature(geojson) {\r\n \tif (geojson.type === 'Feature' || geojson.type === 'FeatureCollection') {\r\n \t\treturn geojson;\r\n \t}\r\n\r\n \treturn {\r\n \t\ttype: 'Feature',\r\n \t\tproperties: {},\r\n \t\tgeometry: geojson\r\n \t};\r\n }\r\n\r\n var PointToGeoJSON = {\r\n \ttoGeoJSON: function (precision) {\r\n \t\treturn getFeature(this, {\r\n \t\t\ttype: 'Point',\r\n \t\t\tcoordinates: latLngToCoords(this.getLatLng(), precision)\r\n \t\t});\r\n \t}\r\n };\r\n\r\n // @namespace Marker\r\n // @section Other methods\r\n // @method toGeoJSON(precision?: Number|false): Object\r\n // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the marker (as a GeoJSON `Point` Feature).\r\n Marker.include(PointToGeoJSON);\r\n\r\n // @namespace CircleMarker\r\n // @method toGeoJSON(precision?: Number|false): Object\r\n // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the circle marker (as a GeoJSON `Point` Feature).\r\n Circle.include(PointToGeoJSON);\r\n CircleMarker.include(PointToGeoJSON);\r\n\r\n\r\n // @namespace Polyline\r\n // @method toGeoJSON(precision?: Number|false): Object\r\n // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polyline (as a GeoJSON `LineString` or `MultiLineString` Feature).\r\n Polyline.include({\r\n \ttoGeoJSON: function (precision) {\r\n \t\tvar multi = !isFlat(this._latlngs);\r\n\r\n \t\tvar coords = latLngsToCoords(this._latlngs, multi ? 1 : 0, false, precision);\r\n\r\n \t\treturn getFeature(this, {\r\n \t\t\ttype: (multi ? 'Multi' : '') + 'LineString',\r\n \t\t\tcoordinates: coords\r\n \t\t});\r\n \t}\r\n });\r\n\r\n // @namespace Polygon\r\n // @method toGeoJSON(precision?: Number|false): Object\r\n // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polygon (as a GeoJSON `Polygon` or `MultiPolygon` Feature).\r\n Polygon.include({\r\n \ttoGeoJSON: function (precision) {\r\n \t\tvar holes = !isFlat(this._latlngs),\r\n \t\t multi = holes && !isFlat(this._latlngs[0]);\r\n\r\n \t\tvar coords = latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true, precision);\r\n\r\n \t\tif (!holes) {\r\n \t\t\tcoords = [coords];\r\n \t\t}\r\n\r\n \t\treturn getFeature(this, {\r\n \t\t\ttype: (multi ? 'Multi' : '') + 'Polygon',\r\n \t\t\tcoordinates: coords\r\n \t\t});\r\n \t}\r\n });\r\n\r\n\r\n // @namespace LayerGroup\r\n LayerGroup.include({\r\n \ttoMultiPoint: function (precision) {\r\n \t\tvar coords = [];\r\n\r\n \t\tthis.eachLayer(function (layer) {\r\n \t\t\tcoords.push(layer.toGeoJSON(precision).geometry.coordinates);\r\n \t\t});\r\n\r\n \t\treturn getFeature(this, {\r\n \t\t\ttype: 'MultiPoint',\r\n \t\t\tcoordinates: coords\r\n \t\t});\r\n \t},\r\n\r\n \t// @method toGeoJSON(precision?: Number|false): Object\r\n \t// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`.\r\n \t// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the layer group (as a GeoJSON `FeatureCollection`, `GeometryCollection`, or `MultiPoint`).\r\n \ttoGeoJSON: function (precision) {\r\n\r\n \t\tvar type = this.feature && this.feature.geometry && this.feature.geometry.type;\r\n\r\n \t\tif (type === 'MultiPoint') {\r\n \t\t\treturn this.toMultiPoint(precision);\r\n \t\t}\r\n\r\n \t\tvar isGeometryCollection = type === 'GeometryCollection',\r\n \t\t jsons = [];\r\n\r\n \t\tthis.eachLayer(function (layer) {\r\n \t\t\tif (layer.toGeoJSON) {\r\n \t\t\t\tvar json = layer.toGeoJSON(precision);\r\n \t\t\t\tif (isGeometryCollection) {\r\n \t\t\t\t\tjsons.push(json.geometry);\r\n \t\t\t\t} else {\r\n \t\t\t\t\tvar feature = asFeature(json);\r\n \t\t\t\t\t// Squash nested feature collections\r\n \t\t\t\t\tif (feature.type === 'FeatureCollection') {\r\n \t\t\t\t\t\tjsons.push.apply(jsons, feature.features);\r\n \t\t\t\t\t} else {\r\n \t\t\t\t\t\tjsons.push(feature);\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t});\r\n\r\n \t\tif (isGeometryCollection) {\r\n \t\t\treturn getFeature(this, {\r\n \t\t\t\tgeometries: jsons,\r\n \t\t\t\ttype: 'GeometryCollection'\r\n \t\t\t});\r\n \t\t}\r\n\r\n \t\treturn {\r\n \t\t\ttype: 'FeatureCollection',\r\n \t\t\tfeatures: jsons\r\n \t\t};\r\n \t}\r\n });\r\n\r\n // @namespace GeoJSON\r\n // @factory L.geoJSON(geojson?: Object, options?: GeoJSON options)\r\n // Creates a GeoJSON layer. Optionally accepts an object in\r\n // [GeoJSON format](https://tools.ietf.org/html/rfc7946) to display on the map\r\n // (you can alternatively add it later with `addData` method) and an `options` object.\r\n function geoJSON(geojson, options) {\r\n \treturn new GeoJSON(geojson, options);\r\n }\r\n\r\n // Backward compatibility.\r\n var geoJson = geoJSON;\n\n /*\r\n * @class ImageOverlay\r\n * @aka L.ImageOverlay\r\n * @inherits Interactive layer\r\n *\r\n * Used to load and display a single image over specific bounds of the map. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var imageUrl = 'https://maps.lib.utexas.edu/maps/historical/newark_nj_1922.jpg',\r\n * \timageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]];\r\n * L.imageOverlay(imageUrl, imageBounds).addTo(map);\r\n * ```\r\n */\r\n\r\n var ImageOverlay = Layer.extend({\r\n\r\n \t// @section\r\n \t// @aka ImageOverlay options\r\n \toptions: {\r\n \t\t// @option opacity: Number = 1.0\r\n \t\t// The opacity of the image overlay.\r\n \t\topacity: 1,\r\n\r\n \t\t// @option alt: String = ''\r\n \t\t// Text for the `alt` attribute of the image (useful for accessibility).\r\n \t\talt: '',\r\n\r\n \t\t// @option interactive: Boolean = false\r\n \t\t// If `true`, the image overlay will emit [mouse events](#interactive-layer) when clicked or hovered.\r\n \t\tinteractive: false,\r\n\r\n \t\t// @option crossOrigin: Boolean|String = false\r\n \t\t// Whether the crossOrigin attribute will be added to the image.\r\n \t\t// If a String is provided, the image will have its crossOrigin attribute set to the String provided. This is needed if you want to access image pixel data.\r\n \t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n \t\tcrossOrigin: false,\r\n\r\n \t\t// @option errorOverlayUrl: String = ''\r\n \t\t// URL to the overlay image to show in place of the overlay that failed to load.\r\n \t\terrorOverlayUrl: '',\r\n\r\n \t\t// @option zIndex: Number = 1\r\n \t\t// The explicit [zIndex](https://developer.mozilla.org/docs/Web/CSS/CSS_Positioning/Understanding_z_index) of the overlay layer.\r\n \t\tzIndex: 1,\r\n\r\n \t\t// @option className: String = ''\r\n \t\t// A custom class name to assign to the image. Empty by default.\r\n \t\tclassName: ''\r\n \t},\r\n\r\n \tinitialize: function (url, bounds, options) { // (String, LatLngBounds, Object)\r\n \t\tthis._url = url;\r\n \t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n \t\tsetOptions(this, options);\r\n \t},\r\n\r\n \tonAdd: function () {\r\n \t\tif (!this._image) {\r\n \t\t\tthis._initImage();\r\n\r\n \t\t\tif (this.options.opacity < 1) {\r\n \t\t\t\tthis._updateOpacity();\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (this.options.interactive) {\r\n \t\t\taddClass(this._image, 'leaflet-interactive');\r\n \t\t\tthis.addInteractiveTarget(this._image);\r\n \t\t}\r\n\r\n \t\tthis.getPane().appendChild(this._image);\r\n \t\tthis._reset();\r\n \t},\r\n\r\n \tonRemove: function () {\r\n \t\tremove(this._image);\r\n \t\tif (this.options.interactive) {\r\n \t\t\tthis.removeInteractiveTarget(this._image);\r\n \t\t}\r\n \t},\r\n\r\n \t// @method setOpacity(opacity: Number): this\r\n \t// Sets the opacity of the overlay.\r\n \tsetOpacity: function (opacity) {\r\n \t\tthis.options.opacity = opacity;\r\n\r\n \t\tif (this._image) {\r\n \t\t\tthis._updateOpacity();\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \tsetStyle: function (styleOpts) {\r\n \t\tif (styleOpts.opacity) {\r\n \t\t\tthis.setOpacity(styleOpts.opacity);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method bringToFront(): this\r\n \t// Brings the layer to the top of all overlays.\r\n \tbringToFront: function () {\r\n \t\tif (this._map) {\r\n \t\t\ttoFront(this._image);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method bringToBack(): this\r\n \t// Brings the layer to the bottom of all overlays.\r\n \tbringToBack: function () {\r\n \t\tif (this._map) {\r\n \t\t\ttoBack(this._image);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method setUrl(url: String): this\r\n \t// Changes the URL of the image.\r\n \tsetUrl: function (url) {\r\n \t\tthis._url = url;\r\n\r\n \t\tif (this._image) {\r\n \t\t\tthis._image.src = url;\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method setBounds(bounds: LatLngBounds): this\r\n \t// Update the bounds that this ImageOverlay covers\r\n \tsetBounds: function (bounds) {\r\n \t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n \t\tif (this._map) {\r\n \t\t\tthis._reset();\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \tgetEvents: function () {\r\n \t\tvar events = {\r\n \t\t\tzoom: this._reset,\r\n \t\t\tviewreset: this._reset\r\n \t\t};\r\n\r\n \t\tif (this._zoomAnimated) {\r\n \t\t\tevents.zoomanim = this._animateZoom;\r\n \t\t}\r\n\r\n \t\treturn events;\r\n \t},\r\n\r\n \t// @method setZIndex(value: Number): this\r\n \t// Changes the [zIndex](#imageoverlay-zindex) of the image overlay.\r\n \tsetZIndex: function (value) {\r\n \t\tthis.options.zIndex = value;\r\n \t\tthis._updateZIndex();\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method getBounds(): LatLngBounds\r\n \t// Get the bounds that this ImageOverlay covers\r\n \tgetBounds: function () {\r\n \t\treturn this._bounds;\r\n \t},\r\n\r\n \t// @method getElement(): HTMLElement\r\n \t// Returns the instance of [`HTMLImageElement`](https://developer.mozilla.org/docs/Web/API/HTMLImageElement)\r\n \t// used by this overlay.\r\n \tgetElement: function () {\r\n \t\treturn this._image;\r\n \t},\r\n\r\n \t_initImage: function () {\r\n \t\tvar wasElementSupplied = this._url.tagName === 'IMG';\r\n \t\tvar img = this._image = wasElementSupplied ? this._url : create$1('img');\r\n\r\n \t\taddClass(img, 'leaflet-image-layer');\r\n \t\tif (this._zoomAnimated) { addClass(img, 'leaflet-zoom-animated'); }\r\n \t\tif (this.options.className) { addClass(img, this.options.className); }\r\n\r\n \t\timg.onselectstart = falseFn;\r\n \t\timg.onmousemove = falseFn;\r\n\r\n \t\t// @event load: Event\r\n \t\t// Fired when the ImageOverlay layer has loaded its image\r\n \t\timg.onload = bind(this.fire, this, 'load');\r\n \t\timg.onerror = bind(this._overlayOnError, this, 'error');\r\n\r\n \t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n \t\t\timg.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n \t\t}\r\n\r\n \t\tif (this.options.zIndex) {\r\n \t\t\tthis._updateZIndex();\r\n \t\t}\r\n\r\n \t\tif (wasElementSupplied) {\r\n \t\t\tthis._url = img.src;\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\timg.src = this._url;\r\n \t\timg.alt = this.options.alt;\r\n \t},\r\n\r\n \t_animateZoom: function (e) {\r\n \t\tvar scale = this._map.getZoomScale(e.zoom),\r\n \t\t offset = this._map._latLngBoundsToNewLayerBounds(this._bounds, e.zoom, e.center).min;\r\n\r\n \t\tsetTransform(this._image, offset, scale);\r\n \t},\r\n\r\n \t_reset: function () {\r\n \t\tvar image = this._image,\r\n \t\t bounds = new Bounds(\r\n \t\t this._map.latLngToLayerPoint(this._bounds.getNorthWest()),\r\n \t\t this._map.latLngToLayerPoint(this._bounds.getSouthEast())),\r\n \t\t size = bounds.getSize();\r\n\r\n \t\tsetPosition(image, bounds.min);\r\n\r\n \t\timage.style.width = size.x + 'px';\r\n \t\timage.style.height = size.y + 'px';\r\n \t},\r\n\r\n \t_updateOpacity: function () {\r\n \t\tsetOpacity(this._image, this.options.opacity);\r\n \t},\r\n\r\n \t_updateZIndex: function () {\r\n \t\tif (this._image && this.options.zIndex !== undefined && this.options.zIndex !== null) {\r\n \t\t\tthis._image.style.zIndex = this.options.zIndex;\r\n \t\t}\r\n \t},\r\n\r\n \t_overlayOnError: function () {\r\n \t\t// @event error: Event\r\n \t\t// Fired when the ImageOverlay layer fails to load its image\r\n \t\tthis.fire('error');\r\n\r\n \t\tvar errorUrl = this.options.errorOverlayUrl;\r\n \t\tif (errorUrl && this._url !== errorUrl) {\r\n \t\t\tthis._url = errorUrl;\r\n \t\t\tthis._image.src = errorUrl;\r\n \t\t}\r\n \t},\r\n\r\n \t// @method getCenter(): LatLng\r\n \t// Returns the center of the ImageOverlay.\r\n \tgetCenter: function () {\r\n \t\treturn this._bounds.getCenter();\r\n \t}\r\n });\r\n\r\n // @factory L.imageOverlay(imageUrl: String, bounds: LatLngBounds, options?: ImageOverlay options)\r\n // Instantiates an image overlay object given the URL of the image and the\r\n // geographical bounds it is tied to.\r\n var imageOverlay = function (url, bounds, options) {\r\n \treturn new ImageOverlay(url, bounds, options);\r\n };\n\n /*\r\n * @class VideoOverlay\r\n * @aka L.VideoOverlay\r\n * @inherits ImageOverlay\r\n *\r\n * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`.\r\n *\r\n * A video overlay uses the [`<video>`](https://developer.mozilla.org/docs/Web/HTML/Element/video)\r\n * HTML5 element.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var videoUrl = 'https://www.mapbox.com/bites/00188/patricia_nasa.webm',\r\n * \tvideoBounds = [[ 32, -130], [ 13, -100]];\r\n * L.videoOverlay(videoUrl, videoBounds ).addTo(map);\r\n * ```\r\n */\r\n\r\n var VideoOverlay = ImageOverlay.extend({\r\n\r\n \t// @section\r\n \t// @aka VideoOverlay options\r\n \toptions: {\r\n \t\t// @option autoplay: Boolean = true\r\n \t\t// Whether the video starts playing automatically when loaded.\r\n \t\t// On some browsers autoplay will only work with `muted: true`\r\n \t\tautoplay: true,\r\n\r\n \t\t// @option loop: Boolean = true\r\n \t\t// Whether the video will loop back to the beginning when played.\r\n \t\tloop: true,\r\n\r\n \t\t// @option keepAspectRatio: Boolean = true\r\n \t\t// Whether the video will save aspect ratio after the projection.\r\n \t\t// Relevant for supported browsers. See [browser compatibility](https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit)\r\n \t\tkeepAspectRatio: true,\r\n\r\n \t\t// @option muted: Boolean = false\r\n \t\t// Whether the video starts on mute when loaded.\r\n \t\tmuted: false,\r\n\r\n \t\t// @option playsInline: Boolean = true\r\n \t\t// Mobile browsers will play the video right where it is instead of open it up in fullscreen mode.\r\n \t\tplaysInline: true\r\n \t},\r\n\r\n \t_initImage: function () {\r\n \t\tvar wasElementSupplied = this._url.tagName === 'VIDEO';\r\n \t\tvar vid = this._image = wasElementSupplied ? this._url : create$1('video');\r\n\r\n \t\taddClass(vid, 'leaflet-image-layer');\r\n \t\tif (this._zoomAnimated) { addClass(vid, 'leaflet-zoom-animated'); }\r\n \t\tif (this.options.className) { addClass(vid, this.options.className); }\r\n\r\n \t\tvid.onselectstart = falseFn;\r\n \t\tvid.onmousemove = falseFn;\r\n\r\n \t\t// @event load: Event\r\n \t\t// Fired when the video has finished loading the first frame\r\n \t\tvid.onloadeddata = bind(this.fire, this, 'load');\r\n\r\n \t\tif (wasElementSupplied) {\r\n \t\t\tvar sourceElements = vid.getElementsByTagName('source');\r\n \t\t\tvar sources = [];\r\n \t\t\tfor (var j = 0; j < sourceElements.length; j++) {\r\n \t\t\t\tsources.push(sourceElements[j].src);\r\n \t\t\t}\r\n\r\n \t\t\tthis._url = (sourceElements.length > 0) ? sources : [vid.src];\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tif (!isArray(this._url)) { this._url = [this._url]; }\r\n\r\n \t\tif (!this.options.keepAspectRatio && Object.prototype.hasOwnProperty.call(vid.style, 'objectFit')) {\r\n \t\t\tvid.style['objectFit'] = 'fill';\r\n \t\t}\r\n \t\tvid.autoplay = !!this.options.autoplay;\r\n \t\tvid.loop = !!this.options.loop;\r\n \t\tvid.muted = !!this.options.muted;\r\n \t\tvid.playsInline = !!this.options.playsInline;\r\n \t\tfor (var i = 0; i < this._url.length; i++) {\r\n \t\t\tvar source = create$1('source');\r\n \t\t\tsource.src = this._url[i];\r\n \t\t\tvid.appendChild(source);\r\n \t\t}\r\n \t}\r\n\r\n \t// @method getElement(): HTMLVideoElement\r\n \t// Returns the instance of [`HTMLVideoElement`](https://developer.mozilla.org/docs/Web/API/HTMLVideoElement)\r\n \t// used by this overlay.\r\n });\r\n\r\n\r\n // @factory L.videoOverlay(video: String|Array|HTMLVideoElement, bounds: LatLngBounds, options?: VideoOverlay options)\r\n // Instantiates an image overlay object given the URL of the video (or array of URLs, or even a video element) and the\r\n // geographical bounds it is tied to.\r\n\r\n function videoOverlay(video, bounds, options) {\r\n \treturn new VideoOverlay(video, bounds, options);\r\n }\n\n /*\n * @class SVGOverlay\n * @aka L.SVGOverlay\n * @inherits ImageOverlay\n *\n * Used to load, display and provide DOM access to an SVG file over specific bounds of the map. Extends `ImageOverlay`.\n *\n * An SVG overlay uses the [`<svg>`](https://developer.mozilla.org/docs/Web/SVG/Element/svg) element.\n *\n * @example\n *\n * ```js\n * var svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n * svgElement.setAttribute('xmlns', \"http://www.w3.org/2000/svg\");\n * svgElement.setAttribute('viewBox', \"0 0 200 200\");\n * svgElement.innerHTML = '<rect width=\"200\" height=\"200\"/><rect x=\"75\" y=\"23\" width=\"50\" height=\"50\" style=\"fill:red\"/><rect x=\"75\" y=\"123\" width=\"50\" height=\"50\" style=\"fill:#0013ff\"/>';\n * var svgElementBounds = [ [ 32, -130 ], [ 13, -100 ] ];\n * L.svgOverlay(svgElement, svgElementBounds).addTo(map);\n * ```\n */\n\n var SVGOverlay = ImageOverlay.extend({\n \t_initImage: function () {\n \t\tvar el = this._image = this._url;\n\n \t\taddClass(el, 'leaflet-image-layer');\n \t\tif (this._zoomAnimated) { addClass(el, 'leaflet-zoom-animated'); }\n \t\tif (this.options.className) { addClass(el, this.options.className); }\n\n \t\tel.onselectstart = falseFn;\n \t\tel.onmousemove = falseFn;\n \t}\n\n \t// @method getElement(): SVGElement\n \t// Returns the instance of [`SVGElement`](https://developer.mozilla.org/docs/Web/API/SVGElement)\n \t// used by this overlay.\n });\n\n\n // @factory L.svgOverlay(svg: String|SVGElement, bounds: LatLngBounds, options?: SVGOverlay options)\n // Instantiates an image overlay object given an SVG element and the geographical bounds it is tied to.\n // A viewBox attribute is required on the SVG element to zoom in and out properly.\n\n function svgOverlay(el, bounds, options) {\n \treturn new SVGOverlay(el, bounds, options);\n }\n\n /*\r\n * @class DivOverlay\r\n * @inherits Interactive layer\r\n * @aka L.DivOverlay\r\n * Base model for L.Popup and L.Tooltip. Inherit from it for custom overlays like plugins.\r\n */\r\n\r\n // @namespace DivOverlay\r\n var DivOverlay = Layer.extend({\r\n\r\n \t// @section\r\n \t// @aka DivOverlay options\r\n \toptions: {\r\n \t\t// @option interactive: Boolean = false\r\n \t\t// If true, the popup/tooltip will listen to the mouse events.\r\n \t\tinteractive: false,\r\n\r\n \t\t// @option offset: Point = Point(0, 0)\r\n \t\t// The offset of the overlay position.\r\n \t\toffset: [0, 0],\r\n\r\n \t\t// @option className: String = ''\r\n \t\t// A custom CSS class name to assign to the overlay.\r\n \t\tclassName: '',\r\n\r\n \t\t// @option pane: String = undefined\r\n \t\t// `Map pane` where the overlay will be added.\r\n \t\tpane: undefined,\r\n\r\n \t\t// @option content: String|HTMLElement|Function = ''\r\n \t\t// Sets the HTML content of the overlay while initializing. If a function is passed the source layer will be\r\n \t\t// passed to the function. The function should return a `String` or `HTMLElement` to be used in the overlay.\r\n \t\tcontent: ''\r\n \t},\r\n\r\n \tinitialize: function (options, source) {\r\n \t\tif (options && (options instanceof LatLng || isArray(options))) {\r\n \t\t\tthis._latlng = toLatLng(options);\r\n \t\t\tsetOptions(this, source);\r\n \t\t} else {\r\n \t\t\tsetOptions(this, options);\r\n \t\t\tthis._source = source;\r\n \t\t}\r\n \t\tif (this.options.content) {\r\n \t\t\tthis._content = this.options.content;\r\n \t\t}\r\n \t},\r\n\r\n \t// @method openOn(map: Map): this\r\n \t// Adds the overlay to the map.\r\n \t// Alternative to `map.openPopup(popup)`/`.openTooltip(tooltip)`.\r\n \topenOn: function (map) {\r\n \t\tmap = arguments.length ? map : this._source._map; // experimental, not the part of public api\r\n \t\tif (!map.hasLayer(this)) {\r\n \t\t\tmap.addLayer(this);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method close(): this\r\n \t// Closes the overlay.\r\n \t// Alternative to `map.closePopup(popup)`/`.closeTooltip(tooltip)`\r\n \t// and `layer.closePopup()`/`.closeTooltip()`.\r\n \tclose: function () {\r\n \t\tif (this._map) {\r\n \t\t\tthis._map.removeLayer(this);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method toggle(layer?: Layer): this\r\n \t// Opens or closes the overlay bound to layer depending on its current state.\r\n \t// Argument may be omitted only for overlay bound to layer.\r\n \t// Alternative to `layer.togglePopup()`/`.toggleTooltip()`.\r\n \ttoggle: function (layer) {\r\n \t\tif (this._map) {\r\n \t\t\tthis.close();\r\n \t\t} else {\r\n \t\t\tif (arguments.length) {\r\n \t\t\t\tthis._source = layer;\r\n \t\t\t} else {\r\n \t\t\t\tlayer = this._source;\r\n \t\t\t}\r\n \t\t\tthis._prepareOpen();\r\n\r\n \t\t\t// open the overlay on the map\r\n \t\t\tthis.openOn(layer._map);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \tonAdd: function (map) {\r\n \t\tthis._zoomAnimated = map._zoomAnimated;\r\n\r\n \t\tif (!this._container) {\r\n \t\t\tthis._initLayout();\r\n \t\t}\r\n\r\n \t\tif (map._fadeAnimated) {\r\n \t\t\tsetOpacity(this._container, 0);\r\n \t\t}\r\n\r\n \t\tclearTimeout(this._removeTimeout);\r\n \t\tthis.getPane().appendChild(this._container);\r\n \t\tthis.update();\r\n\r\n \t\tif (map._fadeAnimated) {\r\n \t\t\tsetOpacity(this._container, 1);\r\n \t\t}\r\n\r\n \t\tthis.bringToFront();\r\n\r\n \t\tif (this.options.interactive) {\r\n \t\t\taddClass(this._container, 'leaflet-interactive');\r\n \t\t\tthis.addInteractiveTarget(this._container);\r\n \t\t}\r\n \t},\r\n\r\n \tonRemove: function (map) {\r\n \t\tif (map._fadeAnimated) {\r\n \t\t\tsetOpacity(this._container, 0);\r\n \t\t\tthis._removeTimeout = setTimeout(bind(remove, undefined, this._container), 200);\r\n \t\t} else {\r\n \t\t\tremove(this._container);\r\n \t\t}\r\n\r\n \t\tif (this.options.interactive) {\r\n \t\t\tremoveClass(this._container, 'leaflet-interactive');\r\n \t\t\tthis.removeInteractiveTarget(this._container);\r\n \t\t}\r\n \t},\r\n\r\n \t// @namespace DivOverlay\r\n \t// @method getLatLng: LatLng\r\n \t// Returns the geographical point of the overlay.\r\n \tgetLatLng: function () {\r\n \t\treturn this._latlng;\r\n \t},\r\n\r\n \t// @method setLatLng(latlng: LatLng): this\r\n \t// Sets the geographical point where the overlay will open.\r\n \tsetLatLng: function (latlng) {\r\n \t\tthis._latlng = toLatLng(latlng);\r\n \t\tif (this._map) {\r\n \t\t\tthis._updatePosition();\r\n \t\t\tthis._adjustPan();\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method getContent: String|HTMLElement\r\n \t// Returns the content of the overlay.\r\n \tgetContent: function () {\r\n \t\treturn this._content;\r\n \t},\r\n\r\n \t// @method setContent(htmlContent: String|HTMLElement|Function): this\r\n \t// Sets the HTML content of the overlay. If a function is passed the source layer will be passed to the function.\r\n \t// The function should return a `String` or `HTMLElement` to be used in the overlay.\r\n \tsetContent: function (content) {\r\n \t\tthis._content = content;\r\n \t\tthis.update();\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method getElement: String|HTMLElement\r\n \t// Returns the HTML container of the overlay.\r\n \tgetElement: function () {\r\n \t\treturn this._container;\r\n \t},\r\n\r\n \t// @method update: null\r\n \t// Updates the overlay content, layout and position. Useful for updating the overlay after something inside changed, e.g. image loaded.\r\n \tupdate: function () {\r\n \t\tif (!this._map) { return; }\r\n\r\n \t\tthis._container.style.visibility = 'hidden';\r\n\r\n \t\tthis._updateContent();\r\n \t\tthis._updateLayout();\r\n \t\tthis._updatePosition();\r\n\r\n \t\tthis._container.style.visibility = '';\r\n\r\n \t\tthis._adjustPan();\r\n \t},\r\n\r\n \tgetEvents: function () {\r\n \t\tvar events = {\r\n \t\t\tzoom: this._updatePosition,\r\n \t\t\tviewreset: this._updatePosition\r\n \t\t};\r\n\r\n \t\tif (this._zoomAnimated) {\r\n \t\t\tevents.zoomanim = this._animateZoom;\r\n \t\t}\r\n \t\treturn events;\r\n \t},\r\n\r\n \t// @method isOpen: Boolean\r\n \t// Returns `true` when the overlay is visible on the map.\r\n \tisOpen: function () {\r\n \t\treturn !!this._map && this._map.hasLayer(this);\r\n \t},\r\n\r\n \t// @method bringToFront: this\r\n \t// Brings this overlay in front of other overlays (in the same map pane).\r\n \tbringToFront: function () {\r\n \t\tif (this._map) {\r\n \t\t\ttoFront(this._container);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method bringToBack: this\r\n \t// Brings this overlay to the back of other overlays (in the same map pane).\r\n \tbringToBack: function () {\r\n \t\tif (this._map) {\r\n \t\t\ttoBack(this._container);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// prepare bound overlay to open: update latlng pos / content source (for FeatureGroup)\r\n \t_prepareOpen: function (latlng) {\r\n \t\tvar source = this._source;\r\n \t\tif (!source._map) { return false; }\r\n\r\n \t\tif (source instanceof FeatureGroup) {\r\n \t\t\tsource = null;\r\n \t\t\tvar layers = this._source._layers;\r\n \t\t\tfor (var id in layers) {\r\n \t\t\t\tif (layers[id]._map) {\r\n \t\t\t\t\tsource = layers[id];\r\n \t\t\t\t\tbreak;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t\tif (!source) { return false; } // Unable to get source layer.\r\n\r\n \t\t\t// set overlay source to this layer\r\n \t\t\tthis._source = source;\r\n \t\t}\r\n\r\n \t\tif (!latlng) {\r\n \t\t\tif (source.getCenter) {\r\n \t\t\t\tlatlng = source.getCenter();\r\n \t\t\t} else if (source.getLatLng) {\r\n \t\t\t\tlatlng = source.getLatLng();\r\n \t\t\t} else if (source.getBounds) {\r\n \t\t\t\tlatlng = source.getBounds().getCenter();\r\n \t\t\t} else {\r\n \t\t\t\tthrow new Error('Unable to get source layer LatLng.');\r\n \t\t\t}\r\n \t\t}\r\n \t\tthis.setLatLng(latlng);\r\n\r\n \t\tif (this._map) {\r\n \t\t\t// update the overlay (content, layout, etc...)\r\n \t\t\tthis.update();\r\n \t\t}\r\n\r\n \t\treturn true;\r\n \t},\r\n\r\n \t_updateContent: function () {\r\n \t\tif (!this._content) { return; }\r\n\r\n \t\tvar node = this._contentNode;\r\n \t\tvar content = (typeof this._content === 'function') ? this._content(this._source || this) : this._content;\r\n\r\n \t\tif (typeof content === 'string') {\r\n \t\t\tnode.innerHTML = content;\r\n \t\t} else {\r\n \t\t\twhile (node.hasChildNodes()) {\r\n \t\t\t\tnode.removeChild(node.firstChild);\r\n \t\t\t}\r\n \t\t\tnode.appendChild(content);\r\n \t\t}\r\n\r\n \t\t// @namespace DivOverlay\r\n \t\t// @section DivOverlay events\r\n \t\t// @event contentupdate: Event\r\n \t\t// Fired when the content of the overlay is updated\r\n \t\tthis.fire('contentupdate');\r\n \t},\r\n\r\n \t_updatePosition: function () {\r\n \t\tif (!this._map) { return; }\r\n\r\n \t\tvar pos = this._map.latLngToLayerPoint(this._latlng),\r\n \t\t offset = toPoint(this.options.offset),\r\n \t\t anchor = this._getAnchor();\r\n\r\n \t\tif (this._zoomAnimated) {\r\n \t\t\tsetPosition(this._container, pos.add(anchor));\r\n \t\t} else {\r\n \t\t\toffset = offset.add(pos).add(anchor);\r\n \t\t}\r\n\r\n \t\tvar bottom = this._containerBottom = -offset.y,\r\n \t\t left = this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x;\r\n\r\n \t\t// bottom position the overlay in case the height of the overlay changes (images loading etc)\r\n \t\tthis._container.style.bottom = bottom + 'px';\r\n \t\tthis._container.style.left = left + 'px';\r\n \t},\r\n\r\n \t_getAnchor: function () {\r\n \t\treturn [0, 0];\r\n \t}\r\n\r\n });\r\n\r\n Map.include({\r\n \t_initOverlay: function (OverlayClass, content, latlng, options) {\r\n \t\tvar overlay = content;\r\n \t\tif (!(overlay instanceof OverlayClass)) {\r\n \t\t\toverlay = new OverlayClass(options).setContent(content);\r\n \t\t}\r\n \t\tif (latlng) {\r\n \t\t\toverlay.setLatLng(latlng);\r\n \t\t}\r\n \t\treturn overlay;\r\n \t}\r\n });\r\n\r\n\r\n Layer.include({\r\n \t_initOverlay: function (OverlayClass, old, content, options) {\r\n \t\tvar overlay = content;\r\n \t\tif (overlay instanceof OverlayClass) {\r\n \t\t\tsetOptions(overlay, options);\r\n \t\t\toverlay._source = this;\r\n \t\t} else {\r\n \t\t\toverlay = (old && !options) ? old : new OverlayClass(options, this);\r\n \t\t\toverlay.setContent(content);\r\n \t\t}\r\n \t\treturn overlay;\r\n \t}\r\n });\n\n /*\r\n * @class Popup\r\n * @inherits DivOverlay\r\n * @aka L.Popup\r\n * Used to open popups in certain places of the map. Use [Map.openPopup](#map-openpopup) to\r\n * open popups while making sure that only one popup is open at one time\r\n * (recommended for usability), or use [Map.addLayer](#map-addlayer) to open as many as you want.\r\n *\r\n * @example\r\n *\r\n * If you want to just bind a popup to marker click and then open it, it's really easy:\r\n *\r\n * ```js\r\n * marker.bindPopup(popupContent).openPopup();\r\n * ```\r\n * Path overlays like polylines also have a `bindPopup` method.\r\n *\r\n * A popup can be also standalone:\r\n *\r\n * ```js\r\n * var popup = L.popup()\r\n * \t.setLatLng(latlng)\r\n * \t.setContent('<p>Hello world!<br />This is a nice popup.</p>')\r\n * \t.openOn(map);\r\n * ```\r\n * or\r\n * ```js\r\n * var popup = L.popup(latlng, {content: '<p>Hello world!<br />This is a nice popup.</p>')\r\n * \t.openOn(map);\r\n * ```\r\n */\r\n\r\n\r\n // @namespace Popup\r\n var Popup = DivOverlay.extend({\r\n\r\n \t// @section\r\n \t// @aka Popup options\r\n \toptions: {\r\n \t\t// @option pane: String = 'popupPane'\r\n \t\t// `Map pane` where the popup will be added.\r\n \t\tpane: 'popupPane',\r\n\r\n \t\t// @option offset: Point = Point(0, 7)\r\n \t\t// The offset of the popup position.\r\n \t\toffset: [0, 7],\r\n\r\n \t\t// @option maxWidth: Number = 300\r\n \t\t// Max width of the popup, in pixels.\r\n \t\tmaxWidth: 300,\r\n\r\n \t\t// @option minWidth: Number = 50\r\n \t\t// Min width of the popup, in pixels.\r\n \t\tminWidth: 50,\r\n\r\n \t\t// @option maxHeight: Number = null\r\n \t\t// If set, creates a scrollable container of the given height\r\n \t\t// inside a popup if its content exceeds it.\r\n \t\t// The scrollable container can be styled using the\r\n \t\t// `leaflet-popup-scrolled` CSS class selector.\r\n \t\tmaxHeight: null,\r\n\r\n \t\t// @option autoPan: Boolean = true\r\n \t\t// Set it to `false` if you don't want the map to do panning animation\r\n \t\t// to fit the opened popup.\r\n \t\tautoPan: true,\r\n\r\n \t\t// @option autoPanPaddingTopLeft: Point = null\r\n \t\t// The margin between the popup and the top left corner of the map\r\n \t\t// view after autopanning was performed.\r\n \t\tautoPanPaddingTopLeft: null,\r\n\r\n \t\t// @option autoPanPaddingBottomRight: Point = null\r\n \t\t// The margin between the popup and the bottom right corner of the map\r\n \t\t// view after autopanning was performed.\r\n \t\tautoPanPaddingBottomRight: null,\r\n\r\n \t\t// @option autoPanPadding: Point = Point(5, 5)\r\n \t\t// Equivalent of setting both top left and bottom right autopan padding to the same value.\r\n \t\tautoPanPadding: [5, 5],\r\n\r\n \t\t// @option keepInView: Boolean = false\r\n \t\t// Set it to `true` if you want to prevent users from panning the popup\r\n \t\t// off of the screen while it is open.\r\n \t\tkeepInView: false,\r\n\r\n \t\t// @option closeButton: Boolean = true\r\n \t\t// Controls the presence of a close button in the popup.\r\n \t\tcloseButton: true,\r\n\r\n \t\t// @option autoClose: Boolean = true\r\n \t\t// Set it to `false` if you want to override the default behavior of\r\n \t\t// the popup closing when another popup is opened.\r\n \t\tautoClose: true,\r\n\r\n \t\t// @option closeOnEscapeKey: Boolean = true\r\n \t\t// Set it to `false` if you want to override the default behavior of\r\n \t\t// the ESC key for closing of the popup.\r\n \t\tcloseOnEscapeKey: true,\r\n\r\n \t\t// @option closeOnClick: Boolean = *\r\n \t\t// Set it if you want to override the default behavior of the popup closing when user clicks\r\n \t\t// on the map. Defaults to the map's [`closePopupOnClick`](#map-closepopuponclick) option.\r\n\r\n \t\t// @option className: String = ''\r\n \t\t// A custom CSS class name to assign to the popup.\r\n \t\tclassName: ''\r\n \t},\r\n\r\n \t// @namespace Popup\r\n \t// @method openOn(map: Map): this\r\n \t// Alternative to `map.openPopup(popup)`.\r\n \t// Adds the popup to the map and closes the previous one.\r\n \topenOn: function (map) {\r\n \t\tmap = arguments.length ? map : this._source._map; // experimental, not the part of public api\r\n\r\n \t\tif (!map.hasLayer(this) && map._popup && map._popup.options.autoClose) {\r\n \t\t\tmap.removeLayer(map._popup);\r\n \t\t}\r\n \t\tmap._popup = this;\r\n\r\n \t\treturn DivOverlay.prototype.openOn.call(this, map);\r\n \t},\r\n\r\n \tonAdd: function (map) {\r\n \t\tDivOverlay.prototype.onAdd.call(this, map);\r\n\r\n \t\t// @namespace Map\r\n \t\t// @section Popup events\r\n \t\t// @event popupopen: PopupEvent\r\n \t\t// Fired when a popup is opened in the map\r\n \t\tmap.fire('popupopen', {popup: this});\r\n\r\n \t\tif (this._source) {\r\n \t\t\t// @namespace Layer\r\n \t\t\t// @section Popup events\r\n \t\t\t// @event popupopen: PopupEvent\r\n \t\t\t// Fired when a popup bound to this layer is opened\r\n \t\t\tthis._source.fire('popupopen', {popup: this}, true);\r\n \t\t\t// For non-path layers, we toggle the popup when clicking\r\n \t\t\t// again the layer, so prevent the map to reopen it.\r\n \t\t\tif (!(this._source instanceof Path)) {\r\n \t\t\t\tthis._source.on('preclick', stopPropagation);\r\n \t\t\t}\r\n \t\t}\r\n \t},\r\n\r\n \tonRemove: function (map) {\r\n \t\tDivOverlay.prototype.onRemove.call(this, map);\r\n\r\n \t\t// @namespace Map\r\n \t\t// @section Popup events\r\n \t\t// @event popupclose: PopupEvent\r\n \t\t// Fired when a popup in the map is closed\r\n \t\tmap.fire('popupclose', {popup: this});\r\n\r\n \t\tif (this._source) {\r\n \t\t\t// @namespace Layer\r\n \t\t\t// @section Popup events\r\n \t\t\t// @event popupclose: PopupEvent\r\n \t\t\t// Fired when a popup bound to this layer is closed\r\n \t\t\tthis._source.fire('popupclose', {popup: this}, true);\r\n \t\t\tif (!(this._source instanceof Path)) {\r\n \t\t\t\tthis._source.off('preclick', stopPropagation);\r\n \t\t\t}\r\n \t\t}\r\n \t},\r\n\r\n \tgetEvents: function () {\r\n \t\tvar events = DivOverlay.prototype.getEvents.call(this);\r\n\r\n \t\tif (this.options.closeOnClick !== undefined ? this.options.closeOnClick : this._map.options.closePopupOnClick) {\r\n \t\t\tevents.preclick = this.close;\r\n \t\t}\r\n\r\n \t\tif (this.options.keepInView) {\r\n \t\t\tevents.moveend = this._adjustPan;\r\n \t\t}\r\n\r\n \t\treturn events;\r\n \t},\r\n\r\n \t_initLayout: function () {\r\n \t\tvar prefix = 'leaflet-popup',\r\n \t\t container = this._container = create$1('div',\r\n \t\t\tprefix + ' ' + (this.options.className || '') +\r\n \t\t\t' leaflet-zoom-animated');\r\n\r\n \t\tvar wrapper = this._wrapper = create$1('div', prefix + '-content-wrapper', container);\r\n \t\tthis._contentNode = create$1('div', prefix + '-content', wrapper);\r\n\r\n \t\tdisableClickPropagation(container);\r\n \t\tdisableScrollPropagation(this._contentNode);\r\n \t\ton(container, 'contextmenu', stopPropagation);\r\n\r\n \t\tthis._tipContainer = create$1('div', prefix + '-tip-container', container);\r\n \t\tthis._tip = create$1('div', prefix + '-tip', this._tipContainer);\r\n\r\n \t\tif (this.options.closeButton) {\r\n \t\t\tvar closeButton = this._closeButton = create$1('a', prefix + '-close-button', container);\r\n \t\t\tcloseButton.setAttribute('role', 'button'); // overrides the implicit role=link of <a> elements #7399\r\n \t\t\tcloseButton.setAttribute('aria-label', 'Close popup');\r\n \t\t\tcloseButton.href = '#close';\r\n \t\t\tcloseButton.innerHTML = '<span aria-hidden=\"true\">&#215;</span>';\r\n\r\n \t\t\ton(closeButton, 'click', function (ev) {\r\n \t\t\t\tpreventDefault(ev);\r\n \t\t\t\tthis.close();\r\n \t\t\t}, this);\r\n \t\t}\r\n \t},\r\n\r\n \t_updateLayout: function () {\r\n \t\tvar container = this._contentNode,\r\n \t\t style = container.style;\r\n\r\n \t\tstyle.width = '';\r\n \t\tstyle.whiteSpace = 'nowrap';\r\n\r\n \t\tvar width = container.offsetWidth;\r\n \t\twidth = Math.min(width, this.options.maxWidth);\r\n \t\twidth = Math.max(width, this.options.minWidth);\r\n\r\n \t\tstyle.width = (width + 1) + 'px';\r\n \t\tstyle.whiteSpace = '';\r\n\r\n \t\tstyle.height = '';\r\n\r\n \t\tvar height = container.offsetHeight,\r\n \t\t maxHeight = this.options.maxHeight,\r\n \t\t scrolledClass = 'leaflet-popup-scrolled';\r\n\r\n \t\tif (maxHeight && height > maxHeight) {\r\n \t\t\tstyle.height = maxHeight + 'px';\r\n \t\t\taddClass(container, scrolledClass);\r\n \t\t} else {\r\n \t\t\tremoveClass(container, scrolledClass);\r\n \t\t}\r\n\r\n \t\tthis._containerWidth = this._container.offsetWidth;\r\n \t},\r\n\r\n \t_animateZoom: function (e) {\r\n \t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center),\r\n \t\t anchor = this._getAnchor();\r\n \t\tsetPosition(this._container, pos.add(anchor));\r\n \t},\r\n\r\n \t_adjustPan: function () {\r\n \t\tif (!this.options.autoPan) { return; }\r\n \t\tif (this._map._panAnim) { this._map._panAnim.stop(); }\r\n\r\n \t\t// We can endlessly recurse if keepInView is set and the view resets.\r\n \t\t// Let's guard against that by exiting early if we're responding to our own autopan.\r\n \t\tif (this._autopanning) {\r\n \t\t\tthis._autopanning = false;\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\tvar map = this._map,\r\n \t\t marginBottom = parseInt(getStyle(this._container, 'marginBottom'), 10) || 0,\r\n \t\t containerHeight = this._container.offsetHeight + marginBottom,\r\n \t\t containerWidth = this._containerWidth,\r\n \t\t layerPos = new Point(this._containerLeft, -containerHeight - this._containerBottom);\r\n\r\n \t\tlayerPos._add(getPosition(this._container));\r\n\r\n \t\tvar containerPos = map.layerPointToContainerPoint(layerPos),\r\n \t\t padding = toPoint(this.options.autoPanPadding),\r\n \t\t paddingTL = toPoint(this.options.autoPanPaddingTopLeft || padding),\r\n \t\t paddingBR = toPoint(this.options.autoPanPaddingBottomRight || padding),\r\n \t\t size = map.getSize(),\r\n \t\t dx = 0,\r\n \t\t dy = 0;\r\n\r\n \t\tif (containerPos.x + containerWidth + paddingBR.x > size.x) { // right\r\n \t\t\tdx = containerPos.x + containerWidth - size.x + paddingBR.x;\r\n \t\t}\r\n \t\tif (containerPos.x - dx - paddingTL.x < 0) { // left\r\n \t\t\tdx = containerPos.x - paddingTL.x;\r\n \t\t}\r\n \t\tif (containerPos.y + containerHeight + paddingBR.y > size.y) { // bottom\r\n \t\t\tdy = containerPos.y + containerHeight - size.y + paddingBR.y;\r\n \t\t}\r\n \t\tif (containerPos.y - dy - paddingTL.y < 0) { // top\r\n \t\t\tdy = containerPos.y - paddingTL.y;\r\n \t\t}\r\n\r\n \t\t// @namespace Map\r\n \t\t// @section Popup events\r\n \t\t// @event autopanstart: Event\r\n \t\t// Fired when the map starts autopanning when opening a popup.\r\n \t\tif (dx || dy) {\r\n \t\t\t// Track that we're autopanning, as this function will be re-ran on moveend\r\n \t\t\tif (this.options.keepInView) {\r\n \t\t\t\tthis._autopanning = true;\r\n \t\t\t}\r\n\r\n \t\t\tmap\r\n \t\t\t .fire('autopanstart')\r\n \t\t\t .panBy([dx, dy]);\r\n \t\t}\r\n \t},\r\n\r\n \t_getAnchor: function () {\r\n \t\t// Where should we anchor the popup on the source layer?\r\n \t\treturn toPoint(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]);\r\n \t}\r\n\r\n });\r\n\r\n // @namespace Popup\r\n // @factory L.popup(options?: Popup options, source?: Layer)\r\n // Instantiates a `Popup` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the popup with a reference to the Layer to which it refers.\r\n // @alternative\r\n // @factory L.popup(latlng: LatLng, options?: Popup options)\r\n // Instantiates a `Popup` object given `latlng` where the popup will open and an optional `options` object that describes its appearance and location.\r\n var popup = function (options, source) {\r\n \treturn new Popup(options, source);\r\n };\r\n\r\n\r\n /* @namespace Map\r\n * @section Interaction Options\r\n * @option closePopupOnClick: Boolean = true\r\n * Set it to `false` if you don't want popups to close when user clicks the map.\r\n */\r\n Map.mergeOptions({\r\n \tclosePopupOnClick: true\r\n });\r\n\r\n\r\n // @namespace Map\r\n // @section Methods for Layers and Controls\r\n Map.include({\r\n \t// @method openPopup(popup: Popup): this\r\n \t// Opens the specified popup while closing the previously opened (to make sure only one is opened at one time for usability).\r\n \t// @alternative\r\n \t// @method openPopup(content: String|HTMLElement, latlng: LatLng, options?: Popup options): this\r\n \t// Creates a popup with the specified content and options and opens it in the given point on a map.\r\n \topenPopup: function (popup, latlng, options) {\r\n \t\tthis._initOverlay(Popup, popup, latlng, options)\r\n \t\t .openOn(this);\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method closePopup(popup?: Popup): this\r\n \t// Closes the popup previously opened with [openPopup](#map-openpopup) (or the given one).\r\n \tclosePopup: function (popup) {\r\n \t\tpopup = arguments.length ? popup : this._popup;\r\n \t\tif (popup) {\r\n \t\t\tpopup.close();\r\n \t\t}\r\n \t\treturn this;\r\n \t}\r\n });\r\n\r\n /*\r\n * @namespace Layer\r\n * @section Popup methods example\r\n *\r\n * All layers share a set of methods convenient for binding popups to it.\r\n *\r\n * ```js\r\n * var layer = L.Polygon(latlngs).bindPopup('Hi There!').addTo(map);\r\n * layer.openPopup();\r\n * layer.closePopup();\r\n * ```\r\n *\r\n * Popups will also be automatically opened when the layer is clicked on and closed when the layer is removed from the map or another popup is opened.\r\n */\r\n\r\n // @section Popup methods\r\n Layer.include({\r\n\r\n \t// @method bindPopup(content: String|HTMLElement|Function|Popup, options?: Popup options): this\r\n \t// Binds a popup to the layer with the passed `content` and sets up the\r\n \t// necessary event listeners. If a `Function` is passed it will receive\r\n \t// the layer as the first argument and should return a `String` or `HTMLElement`.\r\n \tbindPopup: function (content, options) {\r\n \t\tthis._popup = this._initOverlay(Popup, this._popup, content, options);\r\n \t\tif (!this._popupHandlersAdded) {\r\n \t\t\tthis.on({\r\n \t\t\t\tclick: this._openPopup,\r\n \t\t\t\tkeypress: this._onKeyPress,\r\n \t\t\t\tremove: this.closePopup,\r\n \t\t\t\tmove: this._movePopup\r\n \t\t\t});\r\n \t\t\tthis._popupHandlersAdded = true;\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method unbindPopup(): this\r\n \t// Removes the popup previously bound with `bindPopup`.\r\n \tunbindPopup: function () {\r\n \t\tif (this._popup) {\r\n \t\t\tthis.off({\r\n \t\t\t\tclick: this._openPopup,\r\n \t\t\t\tkeypress: this._onKeyPress,\r\n \t\t\t\tremove: this.closePopup,\r\n \t\t\t\tmove: this._movePopup\r\n \t\t\t});\r\n \t\t\tthis._popupHandlersAdded = false;\r\n \t\t\tthis._popup = null;\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method openPopup(latlng?: LatLng): this\r\n \t// Opens the bound popup at the specified `latlng` or at the default popup anchor if no `latlng` is passed.\r\n \topenPopup: function (latlng) {\r\n \t\tif (this._popup) {\r\n \t\t\tif (!(this instanceof FeatureGroup)) {\r\n \t\t\t\tthis._popup._source = this;\r\n \t\t\t}\r\n \t\t\tif (this._popup._prepareOpen(latlng || this._latlng)) {\r\n \t\t\t\t// open the popup on the map\r\n \t\t\t\tthis._popup.openOn(this._map);\r\n \t\t\t}\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method closePopup(): this\r\n \t// Closes the popup bound to this layer if it is open.\r\n \tclosePopup: function () {\r\n \t\tif (this._popup) {\r\n \t\t\tthis._popup.close();\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method togglePopup(): this\r\n \t// Opens or closes the popup bound to this layer depending on its current state.\r\n \ttogglePopup: function () {\r\n \t\tif (this._popup) {\r\n \t\t\tthis._popup.toggle(this);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method isPopupOpen(): boolean\r\n \t// Returns `true` if the popup bound to this layer is currently open.\r\n \tisPopupOpen: function () {\r\n \t\treturn (this._popup ? this._popup.isOpen() : false);\r\n \t},\r\n\r\n \t// @method setPopupContent(content: String|HTMLElement|Popup): this\r\n \t// Sets the content of the popup bound to this layer.\r\n \tsetPopupContent: function (content) {\r\n \t\tif (this._popup) {\r\n \t\t\tthis._popup.setContent(content);\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method getPopup(): Popup\r\n \t// Returns the popup bound to this layer.\r\n \tgetPopup: function () {\r\n \t\treturn this._popup;\r\n \t},\r\n\r\n \t_openPopup: function (e) {\r\n \t\tif (!this._popup || !this._map) {\r\n \t\t\treturn;\r\n \t\t}\r\n \t\t// prevent map click\r\n \t\tstop(e);\r\n\r\n \t\tvar target = e.layer || e.target;\r\n \t\tif (this._popup._source === target && !(target instanceof Path)) {\r\n \t\t\t// treat it like a marker and figure out\r\n \t\t\t// if we should toggle it open/closed\r\n \t\t\tif (this._map.hasLayer(this._popup)) {\r\n \t\t\t\tthis.closePopup();\r\n \t\t\t} else {\r\n \t\t\t\tthis.openPopup(e.latlng);\r\n \t\t\t}\r\n \t\t\treturn;\r\n \t\t}\r\n \t\tthis._popup._source = target;\r\n \t\tthis.openPopup(e.latlng);\r\n \t},\r\n\r\n \t_movePopup: function (e) {\r\n \t\tthis._popup.setLatLng(e.latlng);\r\n \t},\r\n\r\n \t_onKeyPress: function (e) {\r\n \t\tif (e.originalEvent.keyCode === 13) {\r\n \t\t\tthis._openPopup(e);\r\n \t\t}\r\n \t}\r\n });\n\n /*\n * @class Tooltip\n * @inherits DivOverlay\n * @aka L.Tooltip\n * Used to display small texts on top of map layers.\n *\n * @example\n * If you want to just bind a tooltip to marker:\n *\n * ```js\n * marker.bindTooltip(\"my tooltip text\").openTooltip();\n * ```\n * Path overlays like polylines also have a `bindTooltip` method.\n *\n * A tooltip can be also standalone:\n *\n * ```js\n * var tooltip = L.tooltip()\n * \t.setLatLng(latlng)\n * \t.setContent('Hello world!<br />This is a nice tooltip.')\n * \t.addTo(map);\n * ```\n * or\n * ```js\n * var tooltip = L.tooltip(latlng, {content: 'Hello world!<br />This is a nice tooltip.'})\n * \t.addTo(map);\n * ```\n *\n *\n * Note about tooltip offset. Leaflet takes two options in consideration\n * for computing tooltip offsetting:\n * - the `offset` Tooltip option: it defaults to [0, 0], and it's specific to one tooltip.\n * Add a positive x offset to move the tooltip to the right, and a positive y offset to\n * move it to the bottom. Negatives will move to the left and top.\n * - the `tooltipAnchor` Icon option: this will only be considered for Marker. You\n * should adapt this value if you use a custom icon.\n */\n\n\n // @namespace Tooltip\n var Tooltip = DivOverlay.extend({\n\n \t// @section\n \t// @aka Tooltip options\n \toptions: {\n \t\t// @option pane: String = 'tooltipPane'\n \t\t// `Map pane` where the tooltip will be added.\n \t\tpane: 'tooltipPane',\n\n \t\t// @option offset: Point = Point(0, 0)\n \t\t// Optional offset of the tooltip position.\n \t\toffset: [0, 0],\n\n \t\t// @option direction: String = 'auto'\n \t\t// Direction where to open the tooltip. Possible values are: `right`, `left`,\n \t\t// `top`, `bottom`, `center`, `auto`.\n \t\t// `auto` will dynamically switch between `right` and `left` according to the tooltip\n \t\t// position on the map.\n \t\tdirection: 'auto',\n\n \t\t// @option permanent: Boolean = false\n \t\t// Whether to open the tooltip permanently or only on mouseover.\n \t\tpermanent: false,\n\n \t\t// @option sticky: Boolean = false\n \t\t// If true, the tooltip will follow the mouse instead of being fixed at the feature center.\n \t\tsticky: false,\n\n \t\t// @option opacity: Number = 0.9\n \t\t// Tooltip container opacity.\n \t\topacity: 0.9\n \t},\n\n \tonAdd: function (map) {\n \t\tDivOverlay.prototype.onAdd.call(this, map);\n \t\tthis.setOpacity(this.options.opacity);\n\n \t\t// @namespace Map\n \t\t// @section Tooltip events\n \t\t// @event tooltipopen: TooltipEvent\n \t\t// Fired when a tooltip is opened in the map.\n \t\tmap.fire('tooltipopen', {tooltip: this});\n\n \t\tif (this._source) {\n \t\t\tthis.addEventParent(this._source);\n\n \t\t\t// @namespace Layer\n \t\t\t// @section Tooltip events\n \t\t\t// @event tooltipopen: TooltipEvent\n \t\t\t// Fired when a tooltip bound to this layer is opened.\n \t\t\tthis._source.fire('tooltipopen', {tooltip: this}, true);\n \t\t}\n \t},\n\n \tonRemove: function (map) {\n \t\tDivOverlay.prototype.onRemove.call(this, map);\n\n \t\t// @namespace Map\n \t\t// @section Tooltip events\n \t\t// @event tooltipclose: TooltipEvent\n \t\t// Fired when a tooltip in the map is closed.\n \t\tmap.fire('tooltipclose', {tooltip: this});\n\n \t\tif (this._source) {\n \t\t\tthis.removeEventParent(this._source);\n\n \t\t\t// @namespace Layer\n \t\t\t// @section Tooltip events\n \t\t\t// @event tooltipclose: TooltipEvent\n \t\t\t// Fired when a tooltip bound to this layer is closed.\n \t\t\tthis._source.fire('tooltipclose', {tooltip: this}, true);\n \t\t}\n \t},\n\n \tgetEvents: function () {\n \t\tvar events = DivOverlay.prototype.getEvents.call(this);\n\n \t\tif (!this.options.permanent) {\n \t\t\tevents.preclick = this.close;\n \t\t}\n\n \t\treturn events;\n \t},\n\n \t_initLayout: function () {\n \t\tvar prefix = 'leaflet-tooltip',\n \t\t className = prefix + ' ' + (this.options.className || '') + ' leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\n\n \t\tthis._contentNode = this._container = create$1('div', className);\n\n \t\tthis._container.setAttribute('role', 'tooltip');\n \t\tthis._container.setAttribute('id', 'leaflet-tooltip-' + stamp(this));\n \t},\n\n \t_updateLayout: function () {},\n\n \t_adjustPan: function () {},\n\n \t_setPosition: function (pos) {\n \t\tvar subX, subY,\n \t\t map = this._map,\n \t\t container = this._container,\n \t\t centerPoint = map.latLngToContainerPoint(map.getCenter()),\n \t\t tooltipPoint = map.layerPointToContainerPoint(pos),\n \t\t direction = this.options.direction,\n \t\t tooltipWidth = container.offsetWidth,\n \t\t tooltipHeight = container.offsetHeight,\n \t\t offset = toPoint(this.options.offset),\n \t\t anchor = this._getAnchor();\n\n \t\tif (direction === 'top') {\n \t\t\tsubX = tooltipWidth / 2;\n \t\t\tsubY = tooltipHeight;\n \t\t} else if (direction === 'bottom') {\n \t\t\tsubX = tooltipWidth / 2;\n \t\t\tsubY = 0;\n \t\t} else if (direction === 'center') {\n \t\t\tsubX = tooltipWidth / 2;\n \t\t\tsubY = tooltipHeight / 2;\n \t\t} else if (direction === 'right') {\n \t\t\tsubX = 0;\n \t\t\tsubY = tooltipHeight / 2;\n \t\t} else if (direction === 'left') {\n \t\t\tsubX = tooltipWidth;\n \t\t\tsubY = tooltipHeight / 2;\n \t\t} else if (tooltipPoint.x < centerPoint.x) {\n \t\t\tdirection = 'right';\n \t\t\tsubX = 0;\n \t\t\tsubY = tooltipHeight / 2;\n \t\t} else {\n \t\t\tdirection = 'left';\n \t\t\tsubX = tooltipWidth + (offset.x + anchor.x) * 2;\n \t\t\tsubY = tooltipHeight / 2;\n \t\t}\n\n \t\tpos = pos.subtract(toPoint(subX, subY, true)).add(offset).add(anchor);\n\n \t\tremoveClass(container, 'leaflet-tooltip-right');\n \t\tremoveClass(container, 'leaflet-tooltip-left');\n \t\tremoveClass(container, 'leaflet-tooltip-top');\n \t\tremoveClass(container, 'leaflet-tooltip-bottom');\n \t\taddClass(container, 'leaflet-tooltip-' + direction);\n \t\tsetPosition(container, pos);\n \t},\n\n \t_updatePosition: function () {\n \t\tvar pos = this._map.latLngToLayerPoint(this._latlng);\n \t\tthis._setPosition(pos);\n \t},\n\n \tsetOpacity: function (opacity) {\n \t\tthis.options.opacity = opacity;\n\n \t\tif (this._container) {\n \t\t\tsetOpacity(this._container, opacity);\n \t\t}\n \t},\n\n \t_animateZoom: function (e) {\n \t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center);\n \t\tthis._setPosition(pos);\n \t},\n\n \t_getAnchor: function () {\n \t\t// Where should we anchor the tooltip on the source layer?\n \t\treturn toPoint(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]);\n \t}\n\n });\n\n // @namespace Tooltip\n // @factory L.tooltip(options?: Tooltip options, source?: Layer)\n // Instantiates a `Tooltip` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the tooltip with a reference to the Layer to which it refers.\n // @alternative\n // @factory L.tooltip(latlng: LatLng, options?: Tooltip options)\n // Instantiates a `Tooltip` object given `latlng` where the tooltip will open and an optional `options` object that describes its appearance and location.\n var tooltip = function (options, source) {\n \treturn new Tooltip(options, source);\n };\n\n // @namespace Map\n // @section Methods for Layers and Controls\n Map.include({\n\n \t// @method openTooltip(tooltip: Tooltip): this\n \t// Opens the specified tooltip.\n \t// @alternative\n \t// @method openTooltip(content: String|HTMLElement, latlng: LatLng, options?: Tooltip options): this\n \t// Creates a tooltip with the specified content and options and open it.\n \topenTooltip: function (tooltip, latlng, options) {\n \t\tthis._initOverlay(Tooltip, tooltip, latlng, options)\n \t\t .openOn(this);\n\n \t\treturn this;\n \t},\n\n \t// @method closeTooltip(tooltip: Tooltip): this\n \t// Closes the tooltip given as parameter.\n \tcloseTooltip: function (tooltip) {\n \t\ttooltip.close();\n \t\treturn this;\n \t}\n\n });\n\n /*\n * @namespace Layer\n * @section Tooltip methods example\n *\n * All layers share a set of methods convenient for binding tooltips to it.\n *\n * ```js\n * var layer = L.Polygon(latlngs).bindTooltip('Hi There!').addTo(map);\n * layer.openTooltip();\n * layer.closeTooltip();\n * ```\n */\n\n // @section Tooltip methods\n Layer.include({\n\n \t// @method bindTooltip(content: String|HTMLElement|Function|Tooltip, options?: Tooltip options): this\n \t// Binds a tooltip to the layer with the passed `content` and sets up the\n \t// necessary event listeners. If a `Function` is passed it will receive\n \t// the layer as the first argument and should return a `String` or `HTMLElement`.\n \tbindTooltip: function (content, options) {\n\n \t\tif (this._tooltip && this.isTooltipOpen()) {\n \t\t\tthis.unbindTooltip();\n \t\t}\n\n \t\tthis._tooltip = this._initOverlay(Tooltip, this._tooltip, content, options);\n \t\tthis._initTooltipInteractions();\n\n \t\tif (this._tooltip.options.permanent && this._map && this._map.hasLayer(this)) {\n \t\t\tthis.openTooltip();\n \t\t}\n\n \t\treturn this;\n \t},\n\n \t// @method unbindTooltip(): this\n \t// Removes the tooltip previously bound with `bindTooltip`.\n \tunbindTooltip: function () {\n \t\tif (this._tooltip) {\n \t\t\tthis._initTooltipInteractions(true);\n \t\t\tthis.closeTooltip();\n \t\t\tthis._tooltip = null;\n \t\t}\n \t\treturn this;\n \t},\n\n \t_initTooltipInteractions: function (remove) {\n \t\tif (!remove && this._tooltipHandlersAdded) { return; }\n \t\tvar onOff = remove ? 'off' : 'on',\n \t\t events = {\n \t\t\tremove: this.closeTooltip,\n \t\t\tmove: this._moveTooltip\n \t\t };\n \t\tif (!this._tooltip.options.permanent) {\n \t\t\tevents.mouseover = this._openTooltip;\n \t\t\tevents.mouseout = this.closeTooltip;\n \t\t\tevents.click = this._openTooltip;\n \t\t\tif (this._map) {\n \t\t\t\tthis._addFocusListeners();\n \t\t\t} else {\n \t\t\t\tevents.add = this._addFocusListeners;\n \t\t\t}\n \t\t} else {\n \t\t\tevents.add = this._openTooltip;\n \t\t}\n \t\tif (this._tooltip.options.sticky) {\n \t\t\tevents.mousemove = this._moveTooltip;\n \t\t}\n \t\tthis[onOff](events);\n \t\tthis._tooltipHandlersAdded = !remove;\n \t},\n\n \t// @method openTooltip(latlng?: LatLng): this\n \t// Opens the bound tooltip at the specified `latlng` or at the default tooltip anchor if no `latlng` is passed.\n \topenTooltip: function (latlng) {\n \t\tif (this._tooltip) {\n \t\t\tif (!(this instanceof FeatureGroup)) {\n \t\t\t\tthis._tooltip._source = this;\n \t\t\t}\n \t\t\tif (this._tooltip._prepareOpen(latlng)) {\n \t\t\t\t// open the tooltip on the map\n \t\t\t\tthis._tooltip.openOn(this._map);\n\n \t\t\t\tif (this.getElement) {\n \t\t\t\t\tthis._setAriaDescribedByOnLayer(this);\n \t\t\t\t} else if (this.eachLayer) {\n \t\t\t\t\tthis.eachLayer(this._setAriaDescribedByOnLayer, this);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t\treturn this;\n \t},\n\n \t// @method closeTooltip(): this\n \t// Closes the tooltip bound to this layer if it is open.\n \tcloseTooltip: function () {\n \t\tif (this._tooltip) {\n \t\t\treturn this._tooltip.close();\n \t\t}\n \t},\n\n \t// @method toggleTooltip(): this\n \t// Opens or closes the tooltip bound to this layer depending on its current state.\n \ttoggleTooltip: function () {\n \t\tif (this._tooltip) {\n \t\t\tthis._tooltip.toggle(this);\n \t\t}\n \t\treturn this;\n \t},\n\n \t// @method isTooltipOpen(): boolean\n \t// Returns `true` if the tooltip bound to this layer is currently open.\n \tisTooltipOpen: function () {\n \t\treturn this._tooltip.isOpen();\n \t},\n\n \t// @method setTooltipContent(content: String|HTMLElement|Tooltip): this\n \t// Sets the content of the tooltip bound to this layer.\n \tsetTooltipContent: function (content) {\n \t\tif (this._tooltip) {\n \t\t\tthis._tooltip.setContent(content);\n \t\t}\n \t\treturn this;\n \t},\n\n \t// @method getTooltip(): Tooltip\n \t// Returns the tooltip bound to this layer.\n \tgetTooltip: function () {\n \t\treturn this._tooltip;\n \t},\n\n \t_addFocusListeners: function () {\n \t\tif (this.getElement) {\n \t\t\tthis._addFocusListenersOnLayer(this);\n \t\t} else if (this.eachLayer) {\n \t\t\tthis.eachLayer(this._addFocusListenersOnLayer, this);\n \t\t}\n \t},\n\n \t_addFocusListenersOnLayer: function (layer) {\n \t\tvar el = typeof layer.getElement === 'function' && layer.getElement();\n \t\tif (el) {\n \t\t\ton(el, 'focus', function () {\n \t\t\t\tthis._tooltip._source = layer;\n \t\t\t\tthis.openTooltip();\n \t\t\t}, this);\n \t\t\ton(el, 'blur', this.closeTooltip, this);\n \t\t}\n \t},\n\n \t_setAriaDescribedByOnLayer: function (layer) {\n \t\tvar el = typeof layer.getElement === 'function' && layer.getElement();\n \t\tif (el) {\n \t\t\tel.setAttribute('aria-describedby', this._tooltip._container.id);\n \t\t}\n \t},\n\n\n \t_openTooltip: function (e) {\n \t\tif (!this._tooltip || !this._map) {\n \t\t\treturn;\n \t\t}\n\n \t\t// If the map is moving, we will show the tooltip after it's done.\n \t\tif (this._map.dragging && this._map.dragging.moving() && !this._openOnceFlag) {\n \t\t\tthis._openOnceFlag = true;\n \t\t\tvar that = this;\n \t\t\tthis._map.once('moveend', function () {\n \t\t\t\tthat._openOnceFlag = false;\n \t\t\t\tthat._openTooltip(e);\n \t\t\t});\n \t\t\treturn;\n \t\t}\n\n \t\tthis._tooltip._source = e.layer || e.target;\n\n \t\tthis.openTooltip(this._tooltip.options.sticky ? e.latlng : undefined);\n \t},\n\n \t_moveTooltip: function (e) {\n \t\tvar latlng = e.latlng, containerPoint, layerPoint;\n \t\tif (this._tooltip.options.sticky && e.originalEvent) {\n \t\t\tcontainerPoint = this._map.mouseEventToContainerPoint(e.originalEvent);\n \t\t\tlayerPoint = this._map.containerPointToLayerPoint(containerPoint);\n \t\t\tlatlng = this._map.layerPointToLatLng(layerPoint);\n \t\t}\n \t\tthis._tooltip.setLatLng(latlng);\n \t}\n });\n\n /*\n * @class DivIcon\n * @aka L.DivIcon\n * @inherits Icon\n *\n * Represents a lightweight icon for markers that uses a simple `<div>`\n * element instead of an image. Inherits from `Icon` but ignores the `iconUrl` and shadow options.\n *\n * @example\n * ```js\n * var myIcon = L.divIcon({className: 'my-div-icon'});\n * // you can set .my-div-icon styles in CSS\n *\n * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\n * ```\n *\n * By default, it has a 'leaflet-div-icon' CSS class and is styled as a little white square with a shadow.\n */\n\n var DivIcon = Icon.extend({\n \toptions: {\n \t\t// @section\n \t\t// @aka DivIcon options\n \t\ticonSize: [12, 12], // also can be set through CSS\n\n \t\t// iconAnchor: (Point),\n \t\t// popupAnchor: (Point),\n\n \t\t// @option html: String|HTMLElement = ''\n \t\t// Custom HTML code to put inside the div element, empty by default. Alternatively,\n \t\t// an instance of `HTMLElement`.\n \t\thtml: false,\n\n \t\t// @option bgPos: Point = [0, 0]\n \t\t// Optional relative position of the background, in pixels\n \t\tbgPos: null,\n\n \t\tclassName: 'leaflet-div-icon'\n \t},\n\n \tcreateIcon: function (oldIcon) {\n \t\tvar div = (oldIcon && oldIcon.tagName === 'DIV') ? oldIcon : document.createElement('div'),\n \t\t options = this.options;\n\n \t\tif (options.html instanceof Element) {\n \t\t\tempty(div);\n \t\t\tdiv.appendChild(options.html);\n \t\t} else {\n \t\t\tdiv.innerHTML = options.html !== false ? options.html : '';\n \t\t}\n\n \t\tif (options.bgPos) {\n \t\t\tvar bgPos = toPoint(options.bgPos);\n \t\t\tdiv.style.backgroundPosition = (-bgPos.x) + 'px ' + (-bgPos.y) + 'px';\n \t\t}\n \t\tthis._setIconStyles(div, 'icon');\n\n \t\treturn div;\n \t},\n\n \tcreateShadow: function () {\n \t\treturn null;\n \t}\n });\n\n // @factory L.divIcon(options: DivIcon options)\n // Creates a `DivIcon` instance with the given options.\n function divIcon(options) {\n \treturn new DivIcon(options);\n }\n\n Icon.Default = IconDefault;\n\n /*\n * @class GridLayer\n * @inherits Layer\n * @aka L.GridLayer\n *\n * Generic class for handling a tiled grid of HTML elements. This is the base class for all tile layers and replaces `TileLayer.Canvas`.\n * GridLayer can be extended to create a tiled grid of HTML elements like `<canvas>`, `<img>` or `<div>`. GridLayer will handle creating and animating these DOM elements for you.\n *\n *\n * @section Synchronous usage\n * @example\n *\n * To create a custom layer, extend GridLayer and implement the `createTile()` method, which will be passed a `Point` object with the `x`, `y`, and `z` (zoom level) coordinates to draw your tile.\n *\n * ```js\n * var CanvasLayer = L.GridLayer.extend({\n * createTile: function(coords){\n * // create a <canvas> element for drawing\n * var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n *\n * // setup tile width and height according to the options\n * var size = this.getTileSize();\n * tile.width = size.x;\n * tile.height = size.y;\n *\n * // get a canvas context and draw something on it using coords.x, coords.y and coords.z\n * var ctx = tile.getContext('2d');\n *\n * // return the tile so it can be rendered on screen\n * return tile;\n * }\n * });\n * ```\n *\n * @section Asynchronous usage\n * @example\n *\n * Tile creation can also be asynchronous, this is useful when using a third-party drawing library. Once the tile is finished drawing it can be passed to the `done()` callback.\n *\n * ```js\n * var CanvasLayer = L.GridLayer.extend({\n * createTile: function(coords, done){\n * var error;\n *\n * // create a <canvas> element for drawing\n * var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n *\n * // setup tile width and height according to the options\n * var size = this.getTileSize();\n * tile.width = size.x;\n * tile.height = size.y;\n *\n * // draw something asynchronously and pass the tile to the done() callback\n * setTimeout(function() {\n * done(error, tile);\n * }, 1000);\n *\n * return tile;\n * }\n * });\n * ```\n *\n * @section\n */\n\n\n var GridLayer = Layer.extend({\n\n \t// @section\n \t// @aka GridLayer options\n \toptions: {\n \t\t// @option tileSize: Number|Point = 256\n \t\t// Width and height of tiles in the grid. Use a number if width and height are equal, or `L.point(width, height)` otherwise.\n \t\ttileSize: 256,\n\n \t\t// @option opacity: Number = 1.0\n \t\t// Opacity of the tiles. Can be used in the `createTile()` function.\n \t\topacity: 1,\n\n \t\t// @option updateWhenIdle: Boolean = (depends)\n \t\t// Load new tiles only when panning ends.\n \t\t// `true` by default on mobile browsers, in order to avoid too many requests and keep smooth navigation.\n \t\t// `false` otherwise in order to display new tiles _during_ panning, since it is easy to pan outside the\n \t\t// [`keepBuffer`](#gridlayer-keepbuffer) option in desktop browsers.\n \t\tupdateWhenIdle: Browser.mobile,\n\n \t\t// @option updateWhenZooming: Boolean = true\n \t\t// By default, a smooth zoom animation (during a [touch zoom](#map-touchzoom) or a [`flyTo()`](#map-flyto)) will update grid layers every integer zoom level. Setting this option to `false` will update the grid layer only when the smooth animation ends.\n \t\tupdateWhenZooming: true,\n\n \t\t// @option updateInterval: Number = 200\n \t\t// Tiles will not update more than once every `updateInterval` milliseconds when panning.\n \t\tupdateInterval: 200,\n\n \t\t// @option zIndex: Number = 1\n \t\t// The explicit zIndex of the tile layer.\n \t\tzIndex: 1,\n\n \t\t// @option bounds: LatLngBounds = undefined\n \t\t// If set, tiles will only be loaded inside the set `LatLngBounds`.\n \t\tbounds: null,\n\n \t\t// @option minZoom: Number = 0\n \t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\n \t\tminZoom: 0,\n\n \t\t// @option maxZoom: Number = undefined\n \t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\n \t\tmaxZoom: undefined,\n\n \t\t// @option maxNativeZoom: Number = undefined\n \t\t// Maximum zoom number the tile source has available. If it is specified,\n \t\t// the tiles on all zoom levels higher than `maxNativeZoom` will be loaded\n \t\t// from `maxNativeZoom` level and auto-scaled.\n \t\tmaxNativeZoom: undefined,\n\n \t\t// @option minNativeZoom: Number = undefined\n \t\t// Minimum zoom number the tile source has available. If it is specified,\n \t\t// the tiles on all zoom levels lower than `minNativeZoom` will be loaded\n \t\t// from `minNativeZoom` level and auto-scaled.\n \t\tminNativeZoom: undefined,\n\n \t\t// @option noWrap: Boolean = false\n \t\t// Whether the layer is wrapped around the antimeridian. If `true`, the\n \t\t// GridLayer will only be displayed once at low zoom levels. Has no\n \t\t// effect when the [map CRS](#map-crs) doesn't wrap around. Can be used\n \t\t// in combination with [`bounds`](#gridlayer-bounds) to prevent requesting\n \t\t// tiles outside the CRS limits.\n \t\tnoWrap: false,\n\n \t\t// @option pane: String = 'tilePane'\n \t\t// `Map pane` where the grid layer will be added.\n \t\tpane: 'tilePane',\n\n \t\t// @option className: String = ''\n \t\t// A custom class name to assign to the tile layer. Empty by default.\n \t\tclassName: '',\n\n \t\t// @option keepBuffer: Number = 2\n \t\t// When panning the map, keep this many rows and columns of tiles before unloading them.\n \t\tkeepBuffer: 2\n \t},\n\n \tinitialize: function (options) {\n \t\tsetOptions(this, options);\n \t},\n\n \tonAdd: function () {\n \t\tthis._initContainer();\n\n \t\tthis._levels = {};\n \t\tthis._tiles = {};\n\n \t\tthis._resetView(); // implicit _update() call\n \t},\n\n \tbeforeAdd: function (map) {\n \t\tmap._addZoomLimit(this);\n \t},\n\n \tonRemove: function (map) {\n \t\tthis._removeAllTiles();\n \t\tremove(this._container);\n \t\tmap._removeZoomLimit(this);\n \t\tthis._container = null;\n \t\tthis._tileZoom = undefined;\n \t},\n\n \t// @method bringToFront: this\n \t// Brings the tile layer to the top of all tile layers.\n \tbringToFront: function () {\n \t\tif (this._map) {\n \t\t\ttoFront(this._container);\n \t\t\tthis._setAutoZIndex(Math.max);\n \t\t}\n \t\treturn this;\n \t},\n\n \t// @method bringToBack: this\n \t// Brings the tile layer to the bottom of all tile layers.\n \tbringToBack: function () {\n \t\tif (this._map) {\n \t\t\ttoBack(this._container);\n \t\t\tthis._setAutoZIndex(Math.min);\n \t\t}\n \t\treturn this;\n \t},\n\n \t// @method getContainer: HTMLElement\n \t// Returns the HTML element that contains the tiles for this layer.\n \tgetContainer: function () {\n \t\treturn this._container;\n \t},\n\n \t// @method setOpacity(opacity: Number): this\n \t// Changes the [opacity](#gridlayer-opacity) of the grid layer.\n \tsetOpacity: function (opacity) {\n \t\tthis.options.opacity = opacity;\n \t\tthis._updateOpacity();\n \t\treturn this;\n \t},\n\n \t// @method setZIndex(zIndex: Number): this\n \t// Changes the [zIndex](#gridlayer-zindex) of the grid layer.\n \tsetZIndex: function (zIndex) {\n \t\tthis.options.zIndex = zIndex;\n \t\tthis._updateZIndex();\n\n \t\treturn this;\n \t},\n\n \t// @method isLoading: Boolean\n \t// Returns `true` if any tile in the grid layer has not finished loading.\n \tisLoading: function () {\n \t\treturn this._loading;\n \t},\n\n \t// @method redraw: this\n \t// Causes the layer to clear all the tiles and request them again.\n \tredraw: function () {\n \t\tif (this._map) {\n \t\t\tthis._removeAllTiles();\n \t\t\tvar tileZoom = this._clampZoom(this._map.getZoom());\n \t\t\tif (tileZoom !== this._tileZoom) {\n \t\t\t\tthis._tileZoom = tileZoom;\n \t\t\t\tthis._updateLevels();\n \t\t\t}\n \t\t\tthis._update();\n \t\t}\n \t\treturn this;\n \t},\n\n \tgetEvents: function () {\n \t\tvar events = {\n \t\t\tviewprereset: this._invalidateAll,\n \t\t\tviewreset: this._resetView,\n \t\t\tzoom: this._resetView,\n \t\t\tmoveend: this._onMoveEnd\n \t\t};\n\n \t\tif (!this.options.updateWhenIdle) {\n \t\t\t// update tiles on move, but not more often than once per given interval\n \t\t\tif (!this._onMove) {\n \t\t\t\tthis._onMove = throttle(this._onMoveEnd, this.options.updateInterval, this);\n \t\t\t}\n\n \t\t\tevents.move = this._onMove;\n \t\t}\n\n \t\tif (this._zoomAnimated) {\n \t\t\tevents.zoomanim = this._animateZoom;\n \t\t}\n\n \t\treturn events;\n \t},\n\n \t// @section Extension methods\n \t// Layers extending `GridLayer` shall reimplement the following method.\n \t// @method createTile(coords: Object, done?: Function): HTMLElement\n \t// Called only internally, must be overridden by classes extending `GridLayer`.\n \t// Returns the `HTMLElement` corresponding to the given `coords`. If the `done` callback\n \t// is specified, it must be called when the tile has finished loading and drawing.\n \tcreateTile: function () {\n \t\treturn document.createElement('div');\n \t},\n\n \t// @section\n \t// @method getTileSize: Point\n \t// Normalizes the [tileSize option](#gridlayer-tilesize) into a point. Used by the `createTile()` method.\n \tgetTileSize: function () {\n \t\tvar s = this.options.tileSize;\n \t\treturn s instanceof Point ? s : new Point(s, s);\n \t},\n\n \t_updateZIndex: function () {\n \t\tif (this._container && this.options.zIndex !== undefined && this.options.zIndex !== null) {\n \t\t\tthis._container.style.zIndex = this.options.zIndex;\n \t\t}\n \t},\n\n \t_setAutoZIndex: function (compare) {\n \t\t// go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back)\n\n \t\tvar layers = this.getPane().children,\n \t\t edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min\n\n \t\tfor (var i = 0, len = layers.length, zIndex; i < len; i++) {\n\n \t\t\tzIndex = layers[i].style.zIndex;\n\n \t\t\tif (layers[i] !== this._container && zIndex) {\n \t\t\t\tedgeZIndex = compare(edgeZIndex, +zIndex);\n \t\t\t}\n \t\t}\n\n \t\tif (isFinite(edgeZIndex)) {\n \t\t\tthis.options.zIndex = edgeZIndex + compare(-1, 1);\n \t\t\tthis._updateZIndex();\n \t\t}\n \t},\n\n \t_updateOpacity: function () {\n \t\tif (!this._map) { return; }\n\n \t\t// IE doesn't inherit filter opacity properly, so we're forced to set it on tiles\n \t\tif (Browser.ielt9) { return; }\n\n \t\tsetOpacity(this._container, this.options.opacity);\n\n \t\tvar now = +new Date(),\n \t\t nextFrame = false,\n \t\t willPrune = false;\n\n \t\tfor (var key in this._tiles) {\n \t\t\tvar tile = this._tiles[key];\n \t\t\tif (!tile.current || !tile.loaded) { continue; }\n\n \t\t\tvar fade = Math.min(1, (now - tile.loaded) / 200);\n\n \t\t\tsetOpacity(tile.el, fade);\n \t\t\tif (fade < 1) {\n \t\t\t\tnextFrame = true;\n \t\t\t} else {\n \t\t\t\tif (tile.active) {\n \t\t\t\t\twillPrune = true;\n \t\t\t\t} else {\n \t\t\t\t\tthis._onOpaqueTile(tile);\n \t\t\t\t}\n \t\t\t\ttile.active = true;\n \t\t\t}\n \t\t}\n\n \t\tif (willPrune && !this._noPrune) { this._pruneTiles(); }\n\n \t\tif (nextFrame) {\n \t\t\tcancelAnimFrame(this._fadeFrame);\n \t\t\tthis._fadeFrame = requestAnimFrame(this._updateOpacity, this);\n \t\t}\n \t},\n\n \t_onOpaqueTile: falseFn,\n\n \t_initContainer: function () {\n \t\tif (this._container) { return; }\n\n \t\tthis._container = create$1('div', 'leaflet-layer ' + (this.options.className || ''));\n \t\tthis._updateZIndex();\n\n \t\tif (this.options.opacity < 1) {\n \t\t\tthis._updateOpacity();\n \t\t}\n\n \t\tthis.getPane().appendChild(this._container);\n \t},\n\n \t_updateLevels: function () {\n\n \t\tvar zoom = this._tileZoom,\n \t\t maxZoom = this.options.maxZoom;\n\n \t\tif (zoom === undefined) { return undefined; }\n\n \t\tfor (var z in this._levels) {\n \t\t\tz = Number(z);\n \t\t\tif (this._levels[z].el.children.length || z === zoom) {\n \t\t\t\tthis._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z);\n \t\t\t\tthis._onUpdateLevel(z);\n \t\t\t} else {\n \t\t\t\tremove(this._levels[z].el);\n \t\t\t\tthis._removeTilesAtZoom(z);\n \t\t\t\tthis._onRemoveLevel(z);\n \t\t\t\tdelete this._levels[z];\n \t\t\t}\n \t\t}\n\n \t\tvar level = this._levels[zoom],\n \t\t map = this._map;\n\n \t\tif (!level) {\n \t\t\tlevel = this._levels[zoom] = {};\n\n \t\t\tlevel.el = create$1('div', 'leaflet-tile-container leaflet-zoom-animated', this._container);\n \t\t\tlevel.el.style.zIndex = maxZoom;\n\n \t\t\tlevel.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round();\n \t\t\tlevel.zoom = zoom;\n\n \t\t\tthis._setZoomTransform(level, map.getCenter(), map.getZoom());\n\n \t\t\t// force the browser to consider the newly added element for transition\n \t\t\tfalseFn(level.el.offsetWidth);\n\n \t\t\tthis._onCreateLevel(level);\n \t\t}\n\n \t\tthis._level = level;\n\n \t\treturn level;\n \t},\n\n \t_onUpdateLevel: falseFn,\n\n \t_onRemoveLevel: falseFn,\n\n \t_onCreateLevel: falseFn,\n\n \t_pruneTiles: function () {\n \t\tif (!this._map) {\n \t\t\treturn;\n \t\t}\n\n \t\tvar key, tile;\n\n \t\tvar zoom = this._map.getZoom();\n \t\tif (zoom > this.options.maxZoom ||\n \t\t\tzoom < this.options.minZoom) {\n \t\t\tthis._removeAllTiles();\n \t\t\treturn;\n \t\t}\n\n \t\tfor (key in this._tiles) {\n \t\t\ttile = this._tiles[key];\n \t\t\ttile.retain = tile.current;\n \t\t}\n\n \t\tfor (key in this._tiles) {\n \t\t\ttile = this._tiles[key];\n \t\t\tif (tile.current && !tile.active) {\n \t\t\t\tvar coords = tile.coords;\n \t\t\t\tif (!this._retainParent(coords.x, coords.y, coords.z, coords.z - 5)) {\n \t\t\t\t\tthis._retainChildren(coords.x, coords.y, coords.z, coords.z + 2);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\tfor (key in this._tiles) {\n \t\t\tif (!this._tiles[key].retain) {\n \t\t\t\tthis._removeTile(key);\n \t\t\t}\n \t\t}\n \t},\n\n \t_removeTilesAtZoom: function (zoom) {\n \t\tfor (var key in this._tiles) {\n \t\t\tif (this._tiles[key].coords.z !== zoom) {\n \t\t\t\tcontinue;\n \t\t\t}\n \t\t\tthis._removeTile(key);\n \t\t}\n \t},\n\n \t_removeAllTiles: function () {\n \t\tfor (var key in this._tiles) {\n \t\t\tthis._removeTile(key);\n \t\t}\n \t},\n\n \t_invalidateAll: function () {\n \t\tfor (var z in this._levels) {\n \t\t\tremove(this._levels[z].el);\n \t\t\tthis._onRemoveLevel(Number(z));\n \t\t\tdelete this._levels[z];\n \t\t}\n \t\tthis._removeAllTiles();\n\n \t\tthis._tileZoom = undefined;\n \t},\n\n \t_retainParent: function (x, y, z, minZoom) {\n \t\tvar x2 = Math.floor(x / 2),\n \t\t y2 = Math.floor(y / 2),\n \t\t z2 = z - 1,\n \t\t coords2 = new Point(+x2, +y2);\n \t\tcoords2.z = +z2;\n\n \t\tvar key = this._tileCoordsToKey(coords2),\n \t\t tile = this._tiles[key];\n\n \t\tif (tile && tile.active) {\n \t\t\ttile.retain = true;\n \t\t\treturn true;\n\n \t\t} else if (tile && tile.loaded) {\n \t\t\ttile.retain = true;\n \t\t}\n\n \t\tif (z2 > minZoom) {\n \t\t\treturn this._retainParent(x2, y2, z2, minZoom);\n \t\t}\n\n \t\treturn false;\n \t},\n\n \t_retainChildren: function (x, y, z, maxZoom) {\n\n \t\tfor (var i = 2 * x; i < 2 * x + 2; i++) {\n \t\t\tfor (var j = 2 * y; j < 2 * y + 2; j++) {\n\n \t\t\t\tvar coords = new Point(i, j);\n \t\t\t\tcoords.z = z + 1;\n\n \t\t\t\tvar key = this._tileCoordsToKey(coords),\n \t\t\t\t tile = this._tiles[key];\n\n \t\t\t\tif (tile && tile.active) {\n \t\t\t\t\ttile.retain = true;\n \t\t\t\t\tcontinue;\n\n \t\t\t\t} else if (tile && tile.loaded) {\n \t\t\t\t\ttile.retain = true;\n \t\t\t\t}\n\n \t\t\t\tif (z + 1 < maxZoom) {\n \t\t\t\t\tthis._retainChildren(i, j, z + 1, maxZoom);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t},\n\n \t_resetView: function (e) {\n \t\tvar animating = e && (e.pinch || e.flyTo);\n \t\tthis._setView(this._map.getCenter(), this._map.getZoom(), animating, animating);\n \t},\n\n \t_animateZoom: function (e) {\n \t\tthis._setView(e.center, e.zoom, true, e.noUpdate);\n \t},\n\n \t_clampZoom: function (zoom) {\n \t\tvar options = this.options;\n\n \t\tif (undefined !== options.minNativeZoom && zoom < options.minNativeZoom) {\n \t\t\treturn options.minNativeZoom;\n \t\t}\n\n \t\tif (undefined !== options.maxNativeZoom && options.maxNativeZoom < zoom) {\n \t\t\treturn options.maxNativeZoom;\n \t\t}\n\n \t\treturn zoom;\n \t},\n\n \t_setView: function (center, zoom, noPrune, noUpdate) {\n \t\tvar tileZoom = Math.round(zoom);\n \t\tif ((this.options.maxZoom !== undefined && tileZoom > this.options.maxZoom) ||\n \t\t (this.options.minZoom !== undefined && tileZoom < this.options.minZoom)) {\n \t\t\ttileZoom = undefined;\n \t\t} else {\n \t\t\ttileZoom = this._clampZoom(tileZoom);\n \t\t}\n\n \t\tvar tileZoomChanged = this.options.updateWhenZooming && (tileZoom !== this._tileZoom);\n\n \t\tif (!noUpdate || tileZoomChanged) {\n\n \t\t\tthis._tileZoom = tileZoom;\n\n \t\t\tif (this._abortLoading) {\n \t\t\t\tthis._abortLoading();\n \t\t\t}\n\n \t\t\tthis._updateLevels();\n \t\t\tthis._resetGrid();\n\n \t\t\tif (tileZoom !== undefined) {\n \t\t\t\tthis._update(center);\n \t\t\t}\n\n \t\t\tif (!noPrune) {\n \t\t\t\tthis._pruneTiles();\n \t\t\t}\n\n \t\t\t// Flag to prevent _updateOpacity from pruning tiles during\n \t\t\t// a zoom anim or a pinch gesture\n \t\t\tthis._noPrune = !!noPrune;\n \t\t}\n\n \t\tthis._setZoomTransforms(center, zoom);\n \t},\n\n \t_setZoomTransforms: function (center, zoom) {\n \t\tfor (var i in this._levels) {\n \t\t\tthis._setZoomTransform(this._levels[i], center, zoom);\n \t\t}\n \t},\n\n \t_setZoomTransform: function (level, center, zoom) {\n \t\tvar scale = this._map.getZoomScale(zoom, level.zoom),\n \t\t translate = level.origin.multiplyBy(scale)\n \t\t .subtract(this._map._getNewPixelOrigin(center, zoom)).round();\n\n \t\tif (Browser.any3d) {\n \t\t\tsetTransform(level.el, translate, scale);\n \t\t} else {\n \t\t\tsetPosition(level.el, translate);\n \t\t}\n \t},\n\n \t_resetGrid: function () {\n \t\tvar map = this._map,\n \t\t crs = map.options.crs,\n \t\t tileSize = this._tileSize = this.getTileSize(),\n \t\t tileZoom = this._tileZoom;\n\n \t\tvar bounds = this._map.getPixelWorldBounds(this._tileZoom);\n \t\tif (bounds) {\n \t\t\tthis._globalTileRange = this._pxBoundsToTileRange(bounds);\n \t\t}\n\n \t\tthis._wrapX = crs.wrapLng && !this.options.noWrap && [\n \t\t\tMath.floor(map.project([0, crs.wrapLng[0]], tileZoom).x / tileSize.x),\n \t\t\tMath.ceil(map.project([0, crs.wrapLng[1]], tileZoom).x / tileSize.y)\n \t\t];\n \t\tthis._wrapY = crs.wrapLat && !this.options.noWrap && [\n \t\t\tMath.floor(map.project([crs.wrapLat[0], 0], tileZoom).y / tileSize.x),\n \t\t\tMath.ceil(map.project([crs.wrapLat[1], 0], tileZoom).y / tileSize.y)\n \t\t];\n \t},\n\n \t_onMoveEnd: function () {\n \t\tif (!this._map || this._map._animatingZoom) { return; }\n\n \t\tthis._update();\n \t},\n\n \t_getTiledPixelBounds: function (center) {\n \t\tvar map = this._map,\n \t\t mapZoom = map._animatingZoom ? Math.max(map._animateToZoom, map.getZoom()) : map.getZoom(),\n \t\t scale = map.getZoomScale(mapZoom, this._tileZoom),\n \t\t pixelCenter = map.project(center, this._tileZoom).floor(),\n \t\t halfSize = map.getSize().divideBy(scale * 2);\n\n \t\treturn new Bounds(pixelCenter.subtract(halfSize), pixelCenter.add(halfSize));\n \t},\n\n \t// Private method to load tiles in the grid's active zoom level according to map bounds\n \t_update: function (center) {\n \t\tvar map = this._map;\n \t\tif (!map) { return; }\n \t\tvar zoom = this._clampZoom(map.getZoom());\n\n \t\tif (center === undefined) { center = map.getCenter(); }\n \t\tif (this._tileZoom === undefined) { return; }\t// if out of minzoom/maxzoom\n\n \t\tvar pixelBounds = this._getTiledPixelBounds(center),\n \t\t tileRange = this._pxBoundsToTileRange(pixelBounds),\n \t\t tileCenter = tileRange.getCenter(),\n \t\t queue = [],\n \t\t margin = this.options.keepBuffer,\n \t\t noPruneRange = new Bounds(tileRange.getBottomLeft().subtract([margin, -margin]),\n \t\t tileRange.getTopRight().add([margin, -margin]));\n\n \t\t// Sanity check: panic if the tile range contains Infinity somewhere.\n \t\tif (!(isFinite(tileRange.min.x) &&\n \t\t isFinite(tileRange.min.y) &&\n \t\t isFinite(tileRange.max.x) &&\n \t\t isFinite(tileRange.max.y))) { throw new Error('Attempted to load an infinite number of tiles'); }\n\n \t\tfor (var key in this._tiles) {\n \t\t\tvar c = this._tiles[key].coords;\n \t\t\tif (c.z !== this._tileZoom || !noPruneRange.contains(new Point(c.x, c.y))) {\n \t\t\t\tthis._tiles[key].current = false;\n \t\t\t}\n \t\t}\n\n \t\t// _update just loads more tiles. If the tile zoom level differs too much\n \t\t// from the map's, let _setView reset levels and prune old tiles.\n \t\tif (Math.abs(zoom - this._tileZoom) > 1) { this._setView(center, zoom); return; }\n\n \t\t// create a queue of coordinates to load tiles from\n \t\tfor (var j = tileRange.min.y; j <= tileRange.max.y; j++) {\n \t\t\tfor (var i = tileRange.min.x; i <= tileRange.max.x; i++) {\n \t\t\t\tvar coords = new Point(i, j);\n \t\t\t\tcoords.z = this._tileZoom;\n\n \t\t\t\tif (!this._isValidTile(coords)) { continue; }\n\n \t\t\t\tvar tile = this._tiles[this._tileCoordsToKey(coords)];\n \t\t\t\tif (tile) {\n \t\t\t\t\ttile.current = true;\n \t\t\t\t} else {\n \t\t\t\t\tqueue.push(coords);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// sort tile queue to load tiles in order of their distance to center\n \t\tqueue.sort(function (a, b) {\n \t\t\treturn a.distanceTo(tileCenter) - b.distanceTo(tileCenter);\n \t\t});\n\n \t\tif (queue.length !== 0) {\n \t\t\t// if it's the first batch of tiles to load\n \t\t\tif (!this._loading) {\n \t\t\t\tthis._loading = true;\n \t\t\t\t// @event loading: Event\n \t\t\t\t// Fired when the grid layer starts loading tiles.\n \t\t\t\tthis.fire('loading');\n \t\t\t}\n\n \t\t\t// create DOM fragment to append tiles in one batch\n \t\t\tvar fragment = document.createDocumentFragment();\n\n \t\t\tfor (i = 0; i < queue.length; i++) {\n \t\t\t\tthis._addTile(queue[i], fragment);\n \t\t\t}\n\n \t\t\tthis._level.el.appendChild(fragment);\n \t\t}\n \t},\n\n \t_isValidTile: function (coords) {\n \t\tvar crs = this._map.options.crs;\n\n \t\tif (!crs.infinite) {\n \t\t\t// don't load tile if it's out of bounds and not wrapped\n \t\t\tvar bounds = this._globalTileRange;\n \t\t\tif ((!crs.wrapLng && (coords.x < bounds.min.x || coords.x > bounds.max.x)) ||\n \t\t\t (!crs.wrapLat && (coords.y < bounds.min.y || coords.y > bounds.max.y))) { return false; }\n \t\t}\n\n \t\tif (!this.options.bounds) { return true; }\n\n \t\t// don't load tile if it doesn't intersect the bounds in options\n \t\tvar tileBounds = this._tileCoordsToBounds(coords);\n \t\treturn toLatLngBounds(this.options.bounds).overlaps(tileBounds);\n \t},\n\n \t_keyToBounds: function (key) {\n \t\treturn this._tileCoordsToBounds(this._keyToTileCoords(key));\n \t},\n\n \t_tileCoordsToNwSe: function (coords) {\n \t\tvar map = this._map,\n \t\t tileSize = this.getTileSize(),\n \t\t nwPoint = coords.scaleBy(tileSize),\n \t\t sePoint = nwPoint.add(tileSize),\n \t\t nw = map.unproject(nwPoint, coords.z),\n \t\t se = map.unproject(sePoint, coords.z);\n \t\treturn [nw, se];\n \t},\n\n \t// converts tile coordinates to its geographical bounds\n \t_tileCoordsToBounds: function (coords) {\n \t\tvar bp = this._tileCoordsToNwSe(coords),\n \t\t bounds = new LatLngBounds(bp[0], bp[1]);\n\n \t\tif (!this.options.noWrap) {\n \t\t\tbounds = this._map.wrapLatLngBounds(bounds);\n \t\t}\n \t\treturn bounds;\n \t},\n \t// converts tile coordinates to key for the tile cache\n \t_tileCoordsToKey: function (coords) {\n \t\treturn coords.x + ':' + coords.y + ':' + coords.z;\n \t},\n\n \t// converts tile cache key to coordinates\n \t_keyToTileCoords: function (key) {\n \t\tvar k = key.split(':'),\n \t\t coords = new Point(+k[0], +k[1]);\n \t\tcoords.z = +k[2];\n \t\treturn coords;\n \t},\n\n \t_removeTile: function (key) {\n \t\tvar tile = this._tiles[key];\n \t\tif (!tile) { return; }\n\n \t\tremove(tile.el);\n\n \t\tdelete this._tiles[key];\n\n \t\t// @event tileunload: TileEvent\n \t\t// Fired when a tile is removed (e.g. when a tile goes off the screen).\n \t\tthis.fire('tileunload', {\n \t\t\ttile: tile.el,\n \t\t\tcoords: this._keyToTileCoords(key)\n \t\t});\n \t},\n\n \t_initTile: function (tile) {\n \t\taddClass(tile, 'leaflet-tile');\n\n \t\tvar tileSize = this.getTileSize();\n \t\ttile.style.width = tileSize.x + 'px';\n \t\ttile.style.height = tileSize.y + 'px';\n\n \t\ttile.onselectstart = falseFn;\n \t\ttile.onmousemove = falseFn;\n\n \t\t// update opacity on tiles in IE7-8 because of filter inheritance problems\n \t\tif (Browser.ielt9 && this.options.opacity < 1) {\n \t\t\tsetOpacity(tile, this.options.opacity);\n \t\t}\n \t},\n\n \t_addTile: function (coords, container) {\n \t\tvar tilePos = this._getTilePos(coords),\n \t\t key = this._tileCoordsToKey(coords);\n\n \t\tvar tile = this.createTile(this._wrapCoords(coords), bind(this._tileReady, this, coords));\n\n \t\tthis._initTile(tile);\n\n \t\t// if createTile is defined with a second argument (\"done\" callback),\n \t\t// we know that tile is async and will be ready later; otherwise\n \t\tif (this.createTile.length < 2) {\n \t\t\t// mark tile as ready, but delay one frame for opacity animation to happen\n \t\t\trequestAnimFrame(bind(this._tileReady, this, coords, null, tile));\n \t\t}\n\n \t\tsetPosition(tile, tilePos);\n\n \t\t// save tile in cache\n \t\tthis._tiles[key] = {\n \t\t\tel: tile,\n \t\t\tcoords: coords,\n \t\t\tcurrent: true\n \t\t};\n\n \t\tcontainer.appendChild(tile);\n \t\t// @event tileloadstart: TileEvent\n \t\t// Fired when a tile is requested and starts loading.\n \t\tthis.fire('tileloadstart', {\n \t\t\ttile: tile,\n \t\t\tcoords: coords\n \t\t});\n \t},\n\n \t_tileReady: function (coords, err, tile) {\n \t\tif (err) {\n \t\t\t// @event tileerror: TileErrorEvent\n \t\t\t// Fired when there is an error loading a tile.\n \t\t\tthis.fire('tileerror', {\n \t\t\t\terror: err,\n \t\t\t\ttile: tile,\n \t\t\t\tcoords: coords\n \t\t\t});\n \t\t}\n\n \t\tvar key = this._tileCoordsToKey(coords);\n\n \t\ttile = this._tiles[key];\n \t\tif (!tile) { return; }\n\n \t\ttile.loaded = +new Date();\n \t\tif (this._map._fadeAnimated) {\n \t\t\tsetOpacity(tile.el, 0);\n \t\t\tcancelAnimFrame(this._fadeFrame);\n \t\t\tthis._fadeFrame = requestAnimFrame(this._updateOpacity, this);\n \t\t} else {\n \t\t\ttile.active = true;\n \t\t\tthis._pruneTiles();\n \t\t}\n\n \t\tif (!err) {\n \t\t\taddClass(tile.el, 'leaflet-tile-loaded');\n\n \t\t\t// @event tileload: TileEvent\n \t\t\t// Fired when a tile loads.\n \t\t\tthis.fire('tileload', {\n \t\t\t\ttile: tile.el,\n \t\t\t\tcoords: coords\n \t\t\t});\n \t\t}\n\n \t\tif (this._noTilesToLoad()) {\n \t\t\tthis._loading = false;\n \t\t\t// @event load: Event\n \t\t\t// Fired when the grid layer loaded all visible tiles.\n \t\t\tthis.fire('load');\n\n \t\t\tif (Browser.ielt9 || !this._map._fadeAnimated) {\n \t\t\t\trequestAnimFrame(this._pruneTiles, this);\n \t\t\t} else {\n \t\t\t\t// Wait a bit more than 0.2 secs (the duration of the tile fade-in)\n \t\t\t\t// to trigger a pruning.\n \t\t\t\tsetTimeout(bind(this._pruneTiles, this), 250);\n \t\t\t}\n \t\t}\n \t},\n\n \t_getTilePos: function (coords) {\n \t\treturn coords.scaleBy(this.getTileSize()).subtract(this._level.origin);\n \t},\n\n \t_wrapCoords: function (coords) {\n \t\tvar newCoords = new Point(\n \t\t\tthis._wrapX ? wrapNum(coords.x, this._wrapX) : coords.x,\n \t\t\tthis._wrapY ? wrapNum(coords.y, this._wrapY) : coords.y);\n \t\tnewCoords.z = coords.z;\n \t\treturn newCoords;\n \t},\n\n \t_pxBoundsToTileRange: function (bounds) {\n \t\tvar tileSize = this.getTileSize();\n \t\treturn new Bounds(\n \t\t\tbounds.min.unscaleBy(tileSize).floor(),\n \t\t\tbounds.max.unscaleBy(tileSize).ceil().subtract([1, 1]));\n \t},\n\n \t_noTilesToLoad: function () {\n \t\tfor (var key in this._tiles) {\n \t\t\tif (!this._tiles[key].loaded) { return false; }\n \t\t}\n \t\treturn true;\n \t}\n });\n\n // @factory L.gridLayer(options?: GridLayer options)\n // Creates a new instance of GridLayer with the supplied options.\n function gridLayer(options) {\n \treturn new GridLayer(options);\n }\n\n /*\r\n * @class TileLayer\r\n * @inherits GridLayer\r\n * @aka L.TileLayer\r\n * Used to load and display tile layers on the map. Note that most tile servers require attribution, which you can set under `Layer`. Extends `GridLayer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar', attribution: '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'}).addTo(map);\n * ```\r\n *\r\n * @section URL template\r\n * @example\r\n *\r\n * A string of the following form:\r\n *\r\n * ```\r\n * 'https://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png'\r\n * ```\r\n *\r\n * `{s}` means one of the available subdomains (used sequentially to help with browser parallel requests per domain limitation; subdomain values are specified in options; `a`, `b` or `c` by default, can be omitted), `{z}` — zoom level, `{x}` and `{y}` — tile coordinates. `{r}` can be used to add \"&commat;2x\" to the URL to load retina tiles.\r\n *\r\n * You can use custom keys in the template, which will be [evaluated](#util-template) from TileLayer options, like this:\r\n *\r\n * ```\r\n * L.tileLayer('https://{s}.somedomain.com/{foo}/{z}/{x}/{y}.png', {foo: 'bar'});\r\n * ```\r\n */\r\n\r\n\r\n var TileLayer = GridLayer.extend({\r\n\r\n \t// @section\r\n \t// @aka TileLayer options\r\n \toptions: {\r\n \t\t// @option minZoom: Number = 0\r\n \t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\r\n \t\tminZoom: 0,\r\n\r\n \t\t// @option maxZoom: Number = 18\r\n \t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\r\n \t\tmaxZoom: 18,\r\n\r\n \t\t// @option subdomains: String|String[] = 'abc'\r\n \t\t// Subdomains of the tile service. Can be passed in the form of one string (where each letter is a subdomain name) or an array of strings.\r\n \t\tsubdomains: 'abc',\r\n\r\n \t\t// @option errorTileUrl: String = ''\r\n \t\t// URL to the tile image to show in place of the tile that failed to load.\r\n \t\terrorTileUrl: '',\r\n\r\n \t\t// @option zoomOffset: Number = 0\r\n \t\t// The zoom number used in tile URLs will be offset with this value.\r\n \t\tzoomOffset: 0,\r\n\r\n \t\t// @option tms: Boolean = false\r\n \t\t// If `true`, inverses Y axis numbering for tiles (turn this on for [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) services).\r\n \t\ttms: false,\r\n\r\n \t\t// @option zoomReverse: Boolean = false\r\n \t\t// If set to true, the zoom number used in tile URLs will be reversed (`maxZoom - zoom` instead of `zoom`)\r\n \t\tzoomReverse: false,\r\n\r\n \t\t// @option detectRetina: Boolean = false\r\n \t\t// If `true` and user is on a retina display, it will request four tiles of half the specified size and a bigger zoom level in place of one to utilize the high resolution.\r\n \t\tdetectRetina: false,\r\n\r\n \t\t// @option crossOrigin: Boolean|String = false\r\n \t\t// Whether the crossOrigin attribute will be added to the tiles.\r\n \t\t// If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.\r\n \t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n \t\tcrossOrigin: false,\r\n\r\n \t\t// @option referrerPolicy: Boolean|String = false\r\n \t\t// Whether the referrerPolicy attribute will be added to the tiles.\r\n \t\t// If a String is provided, all tiles will have their referrerPolicy attribute set to the String provided.\r\n \t\t// This may be needed if your map's rendering context has a strict default but your tile provider expects a valid referrer\r\n \t\t// (e.g. to validate an API token).\r\n \t\t// Refer to [HTMLImageElement.referrerPolicy](https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/referrerPolicy) for valid String values.\r\n \t\treferrerPolicy: false\r\n \t},\r\n\r\n \tinitialize: function (url, options) {\r\n\r\n \t\tthis._url = url;\r\n\r\n \t\toptions = setOptions(this, options);\r\n\r\n \t\t// detecting retina displays, adjusting tileSize and zoom levels\r\n \t\tif (options.detectRetina && Browser.retina && options.maxZoom > 0) {\r\n\r\n \t\t\toptions.tileSize = Math.floor(options.tileSize / 2);\r\n\r\n \t\t\tif (!options.zoomReverse) {\r\n \t\t\t\toptions.zoomOffset++;\r\n \t\t\t\toptions.maxZoom = Math.max(options.minZoom, options.maxZoom - 1);\r\n \t\t\t} else {\r\n \t\t\t\toptions.zoomOffset--;\r\n \t\t\t\toptions.minZoom = Math.min(options.maxZoom, options.minZoom + 1);\r\n \t\t\t}\r\n\r\n \t\t\toptions.minZoom = Math.max(0, options.minZoom);\r\n \t\t} else if (!options.zoomReverse) {\r\n \t\t\t// make sure maxZoom is gte minZoom\r\n \t\t\toptions.maxZoom = Math.max(options.minZoom, options.maxZoom);\r\n \t\t} else {\r\n \t\t\t// make sure minZoom is lte maxZoom\r\n \t\t\toptions.minZoom = Math.min(options.maxZoom, options.minZoom);\r\n \t\t}\r\n\r\n \t\tif (typeof options.subdomains === 'string') {\r\n \t\t\toptions.subdomains = options.subdomains.split('');\r\n \t\t}\r\n\r\n \t\tthis.on('tileunload', this._onTileRemove);\r\n \t},\r\n\r\n \t// @method setUrl(url: String, noRedraw?: Boolean): this\r\n \t// Updates the layer's URL template and redraws it (unless `noRedraw` is set to `true`).\r\n \t// If the URL does not change, the layer will not be redrawn unless\r\n \t// the noRedraw parameter is set to false.\r\n \tsetUrl: function (url, noRedraw) {\r\n \t\tif (this._url === url && noRedraw === undefined) {\r\n \t\t\tnoRedraw = true;\r\n \t\t}\r\n\r\n \t\tthis._url = url;\r\n\r\n \t\tif (!noRedraw) {\r\n \t\t\tthis.redraw();\r\n \t\t}\r\n \t\treturn this;\r\n \t},\r\n\r\n \t// @method createTile(coords: Object, done?: Function): HTMLElement\r\n \t// Called only internally, overrides GridLayer's [`createTile()`](#gridlayer-createtile)\r\n \t// to return an `<img>` HTML element with the appropriate image URL given `coords`. The `done`\r\n \t// callback is called when the tile has been loaded.\r\n \tcreateTile: function (coords, done) {\r\n \t\tvar tile = document.createElement('img');\r\n\r\n \t\ton(tile, 'load', bind(this._tileOnLoad, this, done, tile));\r\n \t\ton(tile, 'error', bind(this._tileOnError, this, done, tile));\r\n\r\n \t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n \t\t\ttile.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n \t\t}\r\n\r\n \t\t// for this new option we follow the documented behavior\r\n \t\t// more closely by only setting the property when string\r\n \t\tif (typeof this.options.referrerPolicy === 'string') {\r\n \t\t\ttile.referrerPolicy = this.options.referrerPolicy;\r\n \t\t}\r\n\r\n \t\t// The alt attribute is set to the empty string,\r\n \t\t// allowing screen readers to ignore the decorative image tiles.\r\n \t\t// https://www.w3.org/WAI/tutorials/images/decorative/\r\n \t\t// https://www.w3.org/TR/html-aria/#el-img-empty-alt\r\n \t\ttile.alt = '';\r\n\r\n \t\ttile.src = this.getTileUrl(coords);\r\n\r\n \t\treturn tile;\r\n \t},\r\n\r\n \t// @section Extension methods\r\n \t// @uninheritable\r\n \t// Layers extending `TileLayer` might reimplement the following method.\r\n \t// @method getTileUrl(coords: Object): String\r\n \t// Called only internally, returns the URL for a tile given its coordinates.\r\n \t// Classes extending `TileLayer` can override this function to provide custom tile URL naming schemes.\r\n \tgetTileUrl: function (coords) {\r\n \t\tvar data = {\r\n \t\t\tr: Browser.retina ? '@2x' : '',\r\n \t\t\ts: this._getSubdomain(coords),\r\n \t\t\tx: coords.x,\r\n \t\t\ty: coords.y,\r\n \t\t\tz: this._getZoomForUrl()\r\n \t\t};\r\n \t\tif (this._map && !this._map.options.crs.infinite) {\r\n \t\t\tvar invertedY = this._globalTileRange.max.y - coords.y;\r\n \t\t\tif (this.options.tms) {\r\n \t\t\t\tdata['y'] = invertedY;\r\n \t\t\t}\r\n \t\t\tdata['-y'] = invertedY;\r\n \t\t}\r\n\r\n \t\treturn template(this._url, extend(data, this.options));\r\n \t},\r\n\r\n \t_tileOnLoad: function (done, tile) {\r\n \t\t// For https://github.com/Leaflet/Leaflet/issues/3332\r\n \t\tif (Browser.ielt9) {\r\n \t\t\tsetTimeout(bind(done, this, null, tile), 0);\r\n \t\t} else {\r\n \t\t\tdone(null, tile);\r\n \t\t}\r\n \t},\r\n\r\n \t_tileOnError: function (done, tile, e) {\r\n \t\tvar errorUrl = this.options.errorTileUrl;\r\n \t\tif (errorUrl && tile.getAttribute('src') !== errorUrl) {\r\n \t\t\ttile.src = errorUrl;\r\n \t\t}\r\n \t\tdone(e, tile);\r\n \t},\r\n\r\n \t_onTileRemove: function (e) {\r\n \t\te.tile.onload = null;\r\n \t},\r\n\r\n \t_getZoomForUrl: function () {\r\n \t\tvar zoom = this._tileZoom,\r\n \t\tmaxZoom = this.options.maxZoom,\r\n \t\tzoomReverse = this.options.zoomReverse,\r\n \t\tzoomOffset = this.options.zoomOffset;\r\n\r\n \t\tif (zoomReverse) {\r\n \t\t\tzoom = maxZoom - zoom;\r\n \t\t}\r\n\r\n \t\treturn zoom + zoomOffset;\r\n \t},\r\n\r\n \t_getSubdomain: function (tilePoint) {\r\n \t\tvar index = Math.abs(tilePoint.x + tilePoint.y) % this.options.subdomains.length;\r\n \t\treturn this.options.subdomains[index];\r\n \t},\r\n\r\n \t// stops loading all tiles in the background layer\r\n \t_abortLoading: function () {\r\n \t\tvar i, tile;\r\n \t\tfor (i in this._tiles) {\r\n \t\t\tif (this._tiles[i].coords.z !== this._tileZoom) {\r\n \t\t\t\ttile = this._tiles[i].el;\r\n\r\n \t\t\t\ttile.onload = falseFn;\r\n \t\t\t\ttile.onerror = falseFn;\r\n\r\n \t\t\t\tif (!tile.complete) {\r\n \t\t\t\t\ttile.src = emptyImageUrl;\r\n \t\t\t\t\tvar coords = this._tiles[i].coords;\r\n \t\t\t\t\tremove(tile);\r\n \t\t\t\t\tdelete this._tiles[i];\r\n \t\t\t\t\t// @event tileabort: TileEvent\r\n \t\t\t\t\t// Fired when a tile was loading but is now not wanted.\r\n \t\t\t\t\tthis.fire('tileabort', {\r\n \t\t\t\t\t\ttile: tile,\r\n \t\t\t\t\t\tcoords: coords\r\n \t\t\t\t\t});\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n \t},\r\n\r\n \t_removeTile: function (key) {\r\n \t\tvar tile = this._tiles[key];\r\n \t\tif (!tile) { return; }\r\n\r\n \t\t// Cancels any pending http requests associated with the tile\r\n \t\ttile.el.setAttribute('src', emptyImageUrl);\r\n\r\n \t\treturn GridLayer.prototype._removeTile.call(this, key);\r\n \t},\r\n\r\n \t_tileReady: function (coords, err, tile) {\r\n \t\tif (!this._map || (tile && tile.getAttribute('src') === emptyImageUrl)) {\r\n \t\t\treturn;\r\n \t\t}\r\n\r\n \t\treturn GridLayer.prototype._tileReady.call(this, coords, err, tile);\r\n \t}\r\n });\r\n\r\n\r\n // @factory L.tilelayer(urlTemplate: String, options?: TileLayer options)\r\n // Instantiates a tile layer object given a `URL template` and optionally an options object.\r\n\r\n function tileLayer(url, options) {\r\n \treturn new TileLayer(url, options);\r\n }\n\n /*\r\n * @class TileLayer.WMS\r\n * @inherits TileLayer\r\n * @aka L.TileLayer.WMS\r\n * Used to display [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services as tile layers on the map. Extends `TileLayer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var nexrad = L.tileLayer.wms(\"http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi\", {\r\n * \tlayers: 'nexrad-n0r-900913',\r\n * \tformat: 'image/png',\r\n * \ttransparent: true,\r\n * \tattribution: \"Weather data © 2012 IEM Nexrad\"\r\n * });\r\n * ```\r\n */\r\n\r\n var TileLayerWMS = TileLayer.extend({\r\n\r\n \t// @section\r\n \t// @aka TileLayer.WMS options\r\n \t// If any custom options not documented here are used, they will be sent to the\r\n \t// WMS server as extra parameters in each request URL. This can be useful for\r\n \t// [non-standard vendor WMS parameters](https://docs.geoserver.org/stable/en/user/services/wms/vendor.html).\r\n \tdefaultWmsParams: {\r\n \t\tservice: 'WMS',\r\n \t\trequest: 'GetMap',\r\n\r\n \t\t// @option layers: String = ''\r\n \t\t// **(required)** Comma-separated list of WMS layers to show.\r\n \t\tlayers: '',\r\n\r\n \t\t// @option styles: String = ''\r\n \t\t// Comma-separated list of WMS styles.\r\n \t\tstyles: '',\r\n\r\n \t\t// @option format: String = 'image/jpeg'\r\n \t\t// WMS image format (use `'image/png'` for layers with transparency).\r\n \t\tformat: 'image/jpeg',\r\n\r\n \t\t// @option transparent: Boolean = false\r\n \t\t// If `true`, the WMS service will return images with transparency.\r\n \t\ttransparent: false,\r\n\r\n \t\t// @option version: String = '1.1.1'\r\n \t\t// Version of the WMS service to use\r\n \t\tversion: '1.1.1'\r\n \t},\r\n\r\n \toptions: {\r\n \t\t// @option crs: CRS = null\r\n \t\t// Coordinate Reference System to use for the WMS requests, defaults to\r\n \t\t// map CRS. Don't change this if you're not sure what it means.\r\n \t\tcrs: null,\r\n\r\n \t\t// @option uppercase: Boolean = false\r\n \t\t// If `true`, WMS request parameter keys will be uppercase.\r\n \t\tuppercase: false\r\n \t},\r\n\r\n \tinitialize: function (url, options) {\r\n\r\n \t\tthis._url = url;\r\n\r\n \t\tvar wmsParams = extend({}, this.defaultWmsParams);\r\n\r\n \t\t// all keys that are not TileLayer options go to WMS params\r\n \t\tfor (var i in options) {\r\n \t\t\tif (!(i in this.options)) {\r\n \t\t\t\twmsParams[i] = options[i];\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\toptions = setOptions(this, options);\r\n\r\n \t\tvar realRetina = options.detectRetina && Browser.retina ? 2 : 1;\r\n \t\tvar tileSize = this.getTileSize();\r\n \t\twmsParams.width = tileSize.x * realRetina;\r\n \t\twmsParams.height = tileSize.y * realRetina;\r\n\r\n \t\tthis.wmsParams = wmsParams;\r\n \t},\r\n\r\n \tonAdd: function (map) {\r\n\r\n \t\tthis._crs = this.options.crs || map.options.crs;\r\n \t\tthis._wmsVersion = parseFloat(this.wmsParams.version);\r\n\r\n \t\tvar projectionKey = this._wmsVersion >= 1.3 ? 'crs' : 'srs';\r\n \t\tthis.wmsParams[projectionKey] = this._crs.code;\r\n\r\n \t\tTileLayer.prototype.onAdd.call(this, map);\r\n \t},\r\n\r\n \tgetTileUrl: function (coords) {\r\n\r\n \t\tvar tileBounds = this._tileCoordsToNwSe(coords),\r\n \t\t crs = this._crs,\r\n \t\t bounds = toBounds(crs.project(tileBounds[0]), crs.project(tileBounds[1])),\r\n \t\t min = bounds.min,\r\n \t\t max = bounds.max,\r\n \t\t bbox = (this._wmsVersion >= 1.3 && this._crs === EPSG4326 ?\r\n \t\t [min.y, min.x, max.y, max.x] :\r\n \t\t [min.x, min.y, max.x, max.y]).join(','),\r\n \t\t url = TileLayer.prototype.getTileUrl.call(this, coords);\r\n \t\treturn url +\r\n \t\t\tgetParamString(this.wmsParams, url, this.options.uppercase) +\r\n \t\t\t(this.options.uppercase ? '&BBOX=' : '&bbox=') + bbox;\r\n \t},\r\n\r\n \t// @method setParams(params: Object, noRedraw?: Boolean): this\r\n \t// Merges an object with the new parameters and re-requests tiles on the current screen (unless `noRedraw` was set to true).\r\n \tsetParams: function (params, noRedraw) {\r\n\r\n \t\textend(this.wmsParams, params);\r\n\r\n \t\tif (!noRedraw) {\r\n \t\t\tthis.redraw();\r\n \t\t}\r\n\r\n \t\treturn this;\r\n \t}\r\n });\r\n\r\n\r\n // @factory L.tileLayer.wms(baseUrl: String, options: TileLayer.WMS options)\r\n // Instantiates a WMS tile layer object given a base URL of the WMS service and a WMS parameters/options object.\r\n function tileLayerWMS(url, options) {\r\n \treturn new TileLayerWMS(url, options);\r\n }\n\n TileLayer.WMS = TileLayerWMS;\n tileLayer.wms = tileLayerWMS;\n\n /*\n * @class Renderer\n * @inherits Layer\n * @aka L.Renderer\n *\n * Base class for vector renderer implementations (`SVG`, `Canvas`). Handles the\n * DOM container of the renderer, its bounds, and its zoom animation.\n *\n * A `Renderer` works as an implicit layer group for all `Path`s - the renderer\n * itself can be added or removed to the map. All paths use a renderer, which can\n * be implicit (the map will decide the type of renderer and use it automatically)\n * or explicit (using the [`renderer`](#path-renderer) option of the path).\n *\n * Do not use this class directly, use `SVG` and `Canvas` instead.\n *\n * @event update: Event\n * Fired when the renderer updates its bounds, center and zoom, for example when\n * its map has moved\n */\n\n var Renderer = Layer.extend({\n\n \t// @section\n \t// @aka Renderer options\n \toptions: {\n \t\t// @option padding: Number = 0.1\n \t\t// How much to extend the clip area around the map view (relative to its size)\n \t\t// e.g. 0.1 would be 10% of map view in each direction\n \t\tpadding: 0.1\n \t},\n\n \tinitialize: function (options) {\n \t\tsetOptions(this, options);\n \t\tstamp(this);\n \t\tthis._layers = this._layers || {};\n \t},\n\n \tonAdd: function () {\n \t\tif (!this._container) {\n \t\t\tthis._initContainer(); // defined by renderer implementations\n\n \t\t\t// always keep transform-origin as 0 0\n \t\t\taddClass(this._container, 'leaflet-zoom-animated');\n \t\t}\n\n \t\tthis.getPane().appendChild(this._container);\n \t\tthis._update();\n \t\tthis.on('update', this._updatePaths, this);\n \t},\n\n \tonRemove: function () {\n \t\tthis.off('update', this._updatePaths, this);\n \t\tthis._destroyContainer();\n \t},\n\n \tgetEvents: function () {\n \t\tvar events = {\n \t\t\tviewreset: this._reset,\n \t\t\tzoom: this._onZoom,\n \t\t\tmoveend: this._update,\n \t\t\tzoomend: this._onZoomEnd\n \t\t};\n \t\tif (this._zoomAnimated) {\n \t\t\tevents.zoomanim = this._onAnimZoom;\n \t\t}\n \t\treturn events;\n \t},\n\n \t_onAnimZoom: function (ev) {\n \t\tthis._updateTransform(ev.center, ev.zoom);\n \t},\n\n \t_onZoom: function () {\n \t\tthis._updateTransform(this._map.getCenter(), this._map.getZoom());\n \t},\n\n \t_updateTransform: function (center, zoom) {\n \t\tvar scale = this._map.getZoomScale(zoom, this._zoom),\n \t\t viewHalf = this._map.getSize().multiplyBy(0.5 + this.options.padding),\n \t\t currentCenterPoint = this._map.project(this._center, zoom),\n\n \t\t topLeftOffset = viewHalf.multiplyBy(-scale).add(currentCenterPoint)\n \t\t\t\t .subtract(this._map._getNewPixelOrigin(center, zoom));\n\n \t\tif (Browser.any3d) {\n \t\t\tsetTransform(this._container, topLeftOffset, scale);\n \t\t} else {\n \t\t\tsetPosition(this._container, topLeftOffset);\n \t\t}\n \t},\n\n \t_reset: function () {\n \t\tthis._update();\n \t\tthis._updateTransform(this._center, this._zoom);\n\n \t\tfor (var id in this._layers) {\n \t\t\tthis._layers[id]._reset();\n \t\t}\n \t},\n\n \t_onZoomEnd: function () {\n \t\tfor (var id in this._layers) {\n \t\t\tthis._layers[id]._project();\n \t\t}\n \t},\n\n \t_updatePaths: function () {\n \t\tfor (var id in this._layers) {\n \t\t\tthis._layers[id]._update();\n \t\t}\n \t},\n\n \t_update: function () {\n \t\t// Update pixel bounds of renderer container (for positioning/sizing/clipping later)\n \t\t// Subclasses are responsible of firing the 'update' event.\n \t\tvar p = this.options.padding,\n \t\t size = this._map.getSize(),\n \t\t min = this._map.containerPointToLayerPoint(size.multiplyBy(-p)).round();\n\n \t\tthis._bounds = new Bounds(min, min.add(size.multiplyBy(1 + p * 2)).round());\n\n \t\tthis._center = this._map.getCenter();\n \t\tthis._zoom = this._map.getZoom();\n \t}\n });\n\n /*\n * @class Canvas\n * @inherits Renderer\n * @aka L.Canvas\n *\n * Allows vector layers to be displayed with [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\n * Inherits `Renderer`.\n *\n * Due to [technical limitations](https://caniuse.com/canvas), Canvas is not\n * available in all web browsers, notably IE8, and overlapping geometries might\n * not display properly in some edge cases.\n *\n * @example\n *\n * Use Canvas by default for all paths in the map:\n *\n * ```js\n * var map = L.map('map', {\n * \trenderer: L.canvas()\n * });\n * ```\n *\n * Use a Canvas renderer with extra padding for specific vector geometries:\n *\n * ```js\n * var map = L.map('map');\n * var myRenderer = L.canvas({ padding: 0.5 });\n * var line = L.polyline( coordinates, { renderer: myRenderer } );\n * var circle = L.circle( center, { renderer: myRenderer } );\n * ```\n */\n\n var Canvas = Renderer.extend({\n\n \t// @section\n \t// @aka Canvas options\n \toptions: {\n \t\t// @option tolerance: Number = 0\n \t\t// How much to extend the click tolerance around a path/object on the map.\n \t\ttolerance: 0\n \t},\n\n \tgetEvents: function () {\n \t\tvar events = Renderer.prototype.getEvents.call(this);\n \t\tevents.viewprereset = this._onViewPreReset;\n \t\treturn events;\n \t},\n\n \t_onViewPreReset: function () {\n \t\t// Set a flag so that a viewprereset+moveend+viewreset only updates&redraws once\n \t\tthis._postponeUpdatePaths = true;\n \t},\n\n \tonAdd: function () {\n \t\tRenderer.prototype.onAdd.call(this);\n\n \t\t// Redraw vectors since canvas is cleared upon removal,\n \t\t// in case of removing the renderer itself from the map.\n \t\tthis._draw();\n \t},\n\n \t_initContainer: function () {\n \t\tvar container = this._container = document.createElement('canvas');\n\n \t\ton(container, 'mousemove', this._onMouseMove, this);\n \t\ton(container, 'click dblclick mousedown mouseup contextmenu', this._onClick, this);\n \t\ton(container, 'mouseout', this._handleMouseOut, this);\n \t\tcontainer['_leaflet_disable_events'] = true;\n\n \t\tthis._ctx = container.getContext('2d');\n \t},\n\n \t_destroyContainer: function () {\n \t\tcancelAnimFrame(this._redrawRequest);\n \t\tdelete this._ctx;\n \t\tremove(this._container);\n \t\toff(this._container);\n \t\tdelete this._container;\n \t},\n\n \t_updatePaths: function () {\n \t\tif (this._postponeUpdatePaths) { return; }\n\n \t\tvar layer;\n \t\tthis._redrawBounds = null;\n \t\tfor (var id in this._layers) {\n \t\t\tlayer = this._layers[id];\n \t\t\tlayer._update();\n \t\t}\n \t\tthis._redraw();\n \t},\n\n \t_update: function () {\n \t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n \t\tRenderer.prototype._update.call(this);\n\n \t\tvar b = this._bounds,\n \t\t container = this._container,\n \t\t size = b.getSize(),\n \t\t m = Browser.retina ? 2 : 1;\n\n \t\tsetPosition(container, b.min);\n\n \t\t// set canvas size (also clearing it); use double size on retina\n \t\tcontainer.width = m * size.x;\n \t\tcontainer.height = m * size.y;\n \t\tcontainer.style.width = size.x + 'px';\n \t\tcontainer.style.height = size.y + 'px';\n\n \t\tif (Browser.retina) {\n \t\t\tthis._ctx.scale(2, 2);\n \t\t}\n\n \t\t// translate so we use the same path coordinates after canvas element moves\n \t\tthis._ctx.translate(-b.min.x, -b.min.y);\n\n \t\t// Tell paths to redraw themselves\n \t\tthis.fire('update');\n \t},\n\n \t_reset: function () {\n \t\tRenderer.prototype._reset.call(this);\n\n \t\tif (this._postponeUpdatePaths) {\n \t\t\tthis._postponeUpdatePaths = false;\n \t\t\tthis._updatePaths();\n \t\t}\n \t},\n\n \t_initPath: function (layer) {\n \t\tthis._updateDashArray(layer);\n \t\tthis._layers[stamp(layer)] = layer;\n\n \t\tvar order = layer._order = {\n \t\t\tlayer: layer,\n \t\t\tprev: this._drawLast,\n \t\t\tnext: null\n \t\t};\n \t\tif (this._drawLast) { this._drawLast.next = order; }\n \t\tthis._drawLast = order;\n \t\tthis._drawFirst = this._drawFirst || this._drawLast;\n \t},\n\n \t_addPath: function (layer) {\n \t\tthis._requestRedraw(layer);\n \t},\n\n \t_removePath: function (layer) {\n \t\tvar order = layer._order;\n \t\tvar next = order.next;\n \t\tvar prev = order.prev;\n\n \t\tif (next) {\n \t\t\tnext.prev = prev;\n \t\t} else {\n \t\t\tthis._drawLast = prev;\n \t\t}\n \t\tif (prev) {\n \t\t\tprev.next = next;\n \t\t} else {\n \t\t\tthis._drawFirst = next;\n \t\t}\n\n \t\tdelete layer._order;\n\n \t\tdelete this._layers[stamp(layer)];\n\n \t\tthis._requestRedraw(layer);\n \t},\n\n \t_updatePath: function (layer) {\n \t\t// Redraw the union of the layer's old pixel\n \t\t// bounds and the new pixel bounds.\n \t\tthis._extendRedrawBounds(layer);\n \t\tlayer._project();\n \t\tlayer._update();\n \t\t// The redraw will extend the redraw bounds\n \t\t// with the new pixel bounds.\n \t\tthis._requestRedraw(layer);\n \t},\n\n \t_updateStyle: function (layer) {\n \t\tthis._updateDashArray(layer);\n \t\tthis._requestRedraw(layer);\n \t},\n\n \t_updateDashArray: function (layer) {\n \t\tif (typeof layer.options.dashArray === 'string') {\n \t\t\tvar parts = layer.options.dashArray.split(/[, ]+/),\n \t\t\t dashArray = [],\n \t\t\t dashValue,\n \t\t\t i;\n \t\t\tfor (i = 0; i < parts.length; i++) {\n \t\t\t\tdashValue = Number(parts[i]);\n \t\t\t\t// Ignore dash array containing invalid lengths\n \t\t\t\tif (isNaN(dashValue)) { return; }\n \t\t\t\tdashArray.push(dashValue);\n \t\t\t}\n \t\t\tlayer.options._dashArray = dashArray;\n \t\t} else {\n \t\t\tlayer.options._dashArray = layer.options.dashArray;\n \t\t}\n \t},\n\n \t_requestRedraw: function (layer) {\n \t\tif (!this._map) { return; }\n\n \t\tthis._extendRedrawBounds(layer);\n \t\tthis._redrawRequest = this._redrawRequest || requestAnimFrame(this._redraw, this);\n \t},\n\n \t_extendRedrawBounds: function (layer) {\n \t\tif (layer._pxBounds) {\n \t\t\tvar padding = (layer.options.weight || 0) + 1;\n \t\t\tthis._redrawBounds = this._redrawBounds || new Bounds();\n \t\t\tthis._redrawBounds.extend(layer._pxBounds.min.subtract([padding, padding]));\n \t\t\tthis._redrawBounds.extend(layer._pxBounds.max.add([padding, padding]));\n \t\t}\n \t},\n\n \t_redraw: function () {\n \t\tthis._redrawRequest = null;\n\n \t\tif (this._redrawBounds) {\n \t\t\tthis._redrawBounds.min._floor();\n \t\t\tthis._redrawBounds.max._ceil();\n \t\t}\n\n \t\tthis._clear(); // clear layers in redraw bounds\n \t\tthis._draw(); // draw layers\n\n \t\tthis._redrawBounds = null;\n \t},\n\n \t_clear: function () {\n \t\tvar bounds = this._redrawBounds;\n \t\tif (bounds) {\n \t\t\tvar size = bounds.getSize();\n \t\t\tthis._ctx.clearRect(bounds.min.x, bounds.min.y, size.x, size.y);\n \t\t} else {\n \t\t\tthis._ctx.save();\n \t\t\tthis._ctx.setTransform(1, 0, 0, 1, 0, 0);\n \t\t\tthis._ctx.clearRect(0, 0, this._container.width, this._container.height);\n \t\t\tthis._ctx.restore();\n \t\t}\n \t},\n\n \t_draw: function () {\n \t\tvar layer, bounds = this._redrawBounds;\n \t\tthis._ctx.save();\n \t\tif (bounds) {\n \t\t\tvar size = bounds.getSize();\n \t\t\tthis._ctx.beginPath();\n \t\t\tthis._ctx.rect(bounds.min.x, bounds.min.y, size.x, size.y);\n \t\t\tthis._ctx.clip();\n \t\t}\n\n \t\tthis._drawing = true;\n\n \t\tfor (var order = this._drawFirst; order; order = order.next) {\n \t\t\tlayer = order.layer;\n \t\t\tif (!bounds || (layer._pxBounds && layer._pxBounds.intersects(bounds))) {\n \t\t\t\tlayer._updatePath();\n \t\t\t}\n \t\t}\n\n \t\tthis._drawing = false;\n\n \t\tthis._ctx.restore(); // Restore state before clipping.\n \t},\n\n \t_updatePoly: function (layer, closed) {\n \t\tif (!this._drawing) { return; }\n\n \t\tvar i, j, len2, p,\n \t\t parts = layer._parts,\n \t\t len = parts.length,\n \t\t ctx = this._ctx;\n\n \t\tif (!len) { return; }\n\n \t\tctx.beginPath();\n\n \t\tfor (i = 0; i < len; i++) {\n \t\t\tfor (j = 0, len2 = parts[i].length; j < len2; j++) {\n \t\t\t\tp = parts[i][j];\n \t\t\t\tctx[j ? 'lineTo' : 'moveTo'](p.x, p.y);\n \t\t\t}\n \t\t\tif (closed) {\n \t\t\t\tctx.closePath();\n \t\t\t}\n \t\t}\n\n \t\tthis._fillStroke(ctx, layer);\n\n \t\t// TODO optimization: 1 fill/stroke for all features with equal style instead of 1 for each feature\n \t},\n\n \t_updateCircle: function (layer) {\n\n \t\tif (!this._drawing || layer._empty()) { return; }\n\n \t\tvar p = layer._point,\n \t\t ctx = this._ctx,\n \t\t r = Math.max(Math.round(layer._radius), 1),\n \t\t s = (Math.max(Math.round(layer._radiusY), 1) || r) / r;\n\n \t\tif (s !== 1) {\n \t\t\tctx.save();\n \t\t\tctx.scale(1, s);\n \t\t}\n\n \t\tctx.beginPath();\n \t\tctx.arc(p.x, p.y / s, r, 0, Math.PI * 2, false);\n\n \t\tif (s !== 1) {\n \t\t\tctx.restore();\n \t\t}\n\n \t\tthis._fillStroke(ctx, layer);\n \t},\n\n \t_fillStroke: function (ctx, layer) {\n \t\tvar options = layer.options;\n\n \t\tif (options.fill) {\n \t\t\tctx.globalAlpha = options.fillOpacity;\n \t\t\tctx.fillStyle = options.fillColor || options.color;\n \t\t\tctx.fill(options.fillRule || 'evenodd');\n \t\t}\n\n \t\tif (options.stroke && options.weight !== 0) {\n \t\t\tif (ctx.setLineDash) {\n \t\t\t\tctx.setLineDash(layer.options && layer.options._dashArray || []);\n \t\t\t}\n \t\t\tctx.globalAlpha = options.opacity;\n \t\t\tctx.lineWidth = options.weight;\n \t\t\tctx.strokeStyle = options.color;\n \t\t\tctx.lineCap = options.lineCap;\n \t\t\tctx.lineJoin = options.lineJoin;\n \t\t\tctx.stroke();\n \t\t}\n \t},\n\n \t// Canvas obviously doesn't have mouse events for individual drawn objects,\n \t// so we emulate that by calculating what's under the mouse on mousemove/click manually\n\n \t_onClick: function (e) {\n \t\tvar point = this._map.mouseEventToLayerPoint(e), layer, clickedLayer;\n\n \t\tfor (var order = this._drawFirst; order; order = order.next) {\n \t\t\tlayer = order.layer;\n \t\t\tif (layer.options.interactive && layer._containsPoint(point)) {\n \t\t\t\tif (!(e.type === 'click' || e.type === 'preclick') || !this._map._draggableMoved(layer)) {\n \t\t\t\t\tclickedLayer = layer;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n \t\tthis._fireEvent(clickedLayer ? [clickedLayer] : false, e);\n \t},\n\n \t_onMouseMove: function (e) {\n \t\tif (!this._map || this._map.dragging.moving() || this._map._animatingZoom) { return; }\n\n \t\tvar point = this._map.mouseEventToLayerPoint(e);\n \t\tthis._handleMouseHover(e, point);\n \t},\n\n\n \t_handleMouseOut: function (e) {\n \t\tvar layer = this._hoveredLayer;\n \t\tif (layer) {\n \t\t\t// if we're leaving the layer, fire mouseout\n \t\t\tremoveClass(this._container, 'leaflet-interactive');\n \t\t\tthis._fireEvent([layer], e, 'mouseout');\n \t\t\tthis._hoveredLayer = null;\n \t\t\tthis._mouseHoverThrottled = false;\n \t\t}\n \t},\n\n \t_handleMouseHover: function (e, point) {\n \t\tif (this._mouseHoverThrottled) {\n \t\t\treturn;\n \t\t}\n\n \t\tvar layer, candidateHoveredLayer;\n\n \t\tfor (var order = this._drawFirst; order; order = order.next) {\n \t\t\tlayer = order.layer;\n \t\t\tif (layer.options.interactive && layer._containsPoint(point)) {\n \t\t\t\tcandidateHoveredLayer = layer;\n \t\t\t}\n \t\t}\n\n \t\tif (candidateHoveredLayer !== this._hoveredLayer) {\n \t\t\tthis._handleMouseOut(e);\n\n \t\t\tif (candidateHoveredLayer) {\n \t\t\t\taddClass(this._container, 'leaflet-interactive'); // change cursor\n \t\t\t\tthis._fireEvent([candidateHoveredLayer], e, 'mouseover');\n \t\t\t\tthis._hoveredLayer = candidateHoveredLayer;\n \t\t\t}\n \t\t}\n\n \t\tthis._fireEvent(this._hoveredLayer ? [this._hoveredLayer] : false, e);\n\n \t\tthis._mouseHoverThrottled = true;\n \t\tsetTimeout(bind(function () {\n \t\t\tthis._mouseHoverThrottled = false;\n \t\t}, this), 32);\n \t},\n\n \t_fireEvent: function (layers, e, type) {\n \t\tthis._map._fireDOMEvent(e, type || e.type, layers);\n \t},\n\n \t_bringToFront: function (layer) {\n \t\tvar order = layer._order;\n\n \t\tif (!order) { return; }\n\n \t\tvar next = order.next;\n \t\tvar prev = order.prev;\n\n \t\tif (next) {\n \t\t\tnext.prev = prev;\n \t\t} else {\n \t\t\t// Already last\n \t\t\treturn;\n \t\t}\n \t\tif (prev) {\n \t\t\tprev.next = next;\n \t\t} else if (next) {\n \t\t\t// Update first entry unless this is the\n \t\t\t// single entry\n \t\t\tthis._drawFirst = next;\n \t\t}\n\n \t\torder.prev = this._drawLast;\n \t\tthis._drawLast.next = order;\n\n \t\torder.next = null;\n \t\tthis._drawLast = order;\n\n \t\tthis._requestRedraw(layer);\n \t},\n\n \t_bringToBack: function (layer) {\n \t\tvar order = layer._order;\n\n \t\tif (!order) { return; }\n\n \t\tvar next = order.next;\n \t\tvar prev = order.prev;\n\n \t\tif (prev) {\n \t\t\tprev.next = next;\n \t\t} else {\n \t\t\t// Already first\n \t\t\treturn;\n \t\t}\n \t\tif (next) {\n \t\t\tnext.prev = prev;\n \t\t} else if (prev) {\n \t\t\t// Update last entry unless this is the\n \t\t\t// single entry\n \t\t\tthis._drawLast = prev;\n \t\t}\n\n \t\torder.prev = null;\n\n \t\torder.next = this._drawFirst;\n \t\tthis._drawFirst.prev = order;\n \t\tthis._drawFirst = order;\n\n \t\tthis._requestRedraw(layer);\n \t}\n });\n\n // @factory L.canvas(options?: Renderer options)\n // Creates a Canvas renderer with the given options.\n function canvas(options) {\n \treturn Browser.canvas ? new Canvas(options) : null;\n }\n\n /*\n * Thanks to Dmitry Baranovsky and his Raphael library for inspiration!\n */\n\n\n var vmlCreate = (function () {\n \ttry {\n \t\tdocument.namespaces.add('lvml', 'urn:schemas-microsoft-com:vml');\n \t\treturn function (name) {\n \t\t\treturn document.createElement('<lvml:' + name + ' class=\"lvml\">');\n \t\t};\n \t} catch (e) {\n \t\t// Do not return fn from catch block so `e` can be garbage collected\n \t\t// See https://github.com/Leaflet/Leaflet/pull/7279\n \t}\n \treturn function (name) {\n \t\treturn document.createElement('<' + name + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">');\n \t};\n })();\n\n\n /*\n * @class SVG\n *\n *\n * VML was deprecated in 2012, which means VML functionality exists only for backwards compatibility\n * with old versions of Internet Explorer.\n */\n\n // mixin to redefine some SVG methods to handle VML syntax which is similar but with some differences\n var vmlMixin = {\n\n \t_initContainer: function () {\n \t\tthis._container = create$1('div', 'leaflet-vml-container');\n \t},\n\n \t_update: function () {\n \t\tif (this._map._animatingZoom) { return; }\n \t\tRenderer.prototype._update.call(this);\n \t\tthis.fire('update');\n \t},\n\n \t_initPath: function (layer) {\n \t\tvar container = layer._container = vmlCreate('shape');\n\n \t\taddClass(container, 'leaflet-vml-shape ' + (this.options.className || ''));\n\n \t\tcontainer.coordsize = '1 1';\n\n \t\tlayer._path = vmlCreate('path');\n \t\tcontainer.appendChild(layer._path);\n\n \t\tthis._updateStyle(layer);\n \t\tthis._layers[stamp(layer)] = layer;\n \t},\n\n \t_addPath: function (layer) {\n \t\tvar container = layer._container;\n \t\tthis._container.appendChild(container);\n\n \t\tif (layer.options.interactive) {\n \t\t\tlayer.addInteractiveTarget(container);\n \t\t}\n \t},\n\n \t_removePath: function (layer) {\n \t\tvar container = layer._container;\n \t\tremove(container);\n \t\tlayer.removeInteractiveTarget(container);\n \t\tdelete this._layers[stamp(layer)];\n \t},\n\n \t_updateStyle: function (layer) {\n \t\tvar stroke = layer._stroke,\n \t\t fill = layer._fill,\n \t\t options = layer.options,\n \t\t container = layer._container;\n\n \t\tcontainer.stroked = !!options.stroke;\n \t\tcontainer.filled = !!options.fill;\n\n \t\tif (options.stroke) {\n \t\t\tif (!stroke) {\n \t\t\t\tstroke = layer._stroke = vmlCreate('stroke');\n \t\t\t}\n \t\t\tcontainer.appendChild(stroke);\n \t\t\tstroke.weight = options.weight + 'px';\n \t\t\tstroke.color = options.color;\n \t\t\tstroke.opacity = options.opacity;\n\n \t\t\tif (options.dashArray) {\n \t\t\t\tstroke.dashStyle = isArray(options.dashArray) ?\n \t\t\t\t options.dashArray.join(' ') :\n \t\t\t\t options.dashArray.replace(/( *, *)/g, ' ');\n \t\t\t} else {\n \t\t\t\tstroke.dashStyle = '';\n \t\t\t}\n \t\t\tstroke.endcap = options.lineCap.replace('butt', 'flat');\n \t\t\tstroke.joinstyle = options.lineJoin;\n\n \t\t} else if (stroke) {\n \t\t\tcontainer.removeChild(stroke);\n \t\t\tlayer._stroke = null;\n \t\t}\n\n \t\tif (options.fill) {\n \t\t\tif (!fill) {\n \t\t\t\tfill = layer._fill = vmlCreate('fill');\n \t\t\t}\n \t\t\tcontainer.appendChild(fill);\n \t\t\tfill.color = options.fillColor || options.color;\n \t\t\tfill.opacity = options.fillOpacity;\n\n \t\t} else if (fill) {\n \t\t\tcontainer.removeChild(fill);\n \t\t\tlayer._fill = null;\n \t\t}\n \t},\n\n \t_updateCircle: function (layer) {\n \t\tvar p = layer._point.round(),\n \t\t r = Math.round(layer._radius),\n \t\t r2 = Math.round(layer._radiusY || r);\n\n \t\tthis._setPath(layer, layer._empty() ? 'M0 0' :\n \t\t\t'AL ' + p.x + ',' + p.y + ' ' + r + ',' + r2 + ' 0,' + (65535 * 360));\n \t},\n\n \t_setPath: function (layer, path) {\n \t\tlayer._path.v = path;\n \t},\n\n \t_bringToFront: function (layer) {\n \t\ttoFront(layer._container);\n \t},\n\n \t_bringToBack: function (layer) {\n \t\ttoBack(layer._container);\n \t}\n };\n\n var create = Browser.vml ? vmlCreate : svgCreate;\n\n /*\n * @class SVG\n * @inherits Renderer\n * @aka L.SVG\n *\n * Allows vector layers to be displayed with [SVG](https://developer.mozilla.org/docs/Web/SVG).\n * Inherits `Renderer`.\n *\n * Due to [technical limitations](https://caniuse.com/svg), SVG is not\n * available in all web browsers, notably Android 2.x and 3.x.\n *\n * Although SVG is not available on IE7 and IE8, these browsers support\n * [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language)\n * (a now deprecated technology), and the SVG renderer will fall back to VML in\n * this case.\n *\n * @example\n *\n * Use SVG by default for all paths in the map:\n *\n * ```js\n * var map = L.map('map', {\n * \trenderer: L.svg()\n * });\n * ```\n *\n * Use a SVG renderer with extra padding for specific vector geometries:\n *\n * ```js\n * var map = L.map('map');\n * var myRenderer = L.svg({ padding: 0.5 });\n * var line = L.polyline( coordinates, { renderer: myRenderer } );\n * var circle = L.circle( center, { renderer: myRenderer } );\n * ```\n */\n\n var SVG = Renderer.extend({\n\n \t_initContainer: function () {\n \t\tthis._container = create('svg');\n\n \t\t// makes it possible to click through svg root; we'll reset it back in individual paths\n \t\tthis._container.setAttribute('pointer-events', 'none');\n\n \t\tthis._rootGroup = create('g');\n \t\tthis._container.appendChild(this._rootGroup);\n \t},\n\n \t_destroyContainer: function () {\n \t\tremove(this._container);\n \t\toff(this._container);\n \t\tdelete this._container;\n \t\tdelete this._rootGroup;\n \t\tdelete this._svgSize;\n \t},\n\n \t_update: function () {\n \t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n \t\tRenderer.prototype._update.call(this);\n\n \t\tvar b = this._bounds,\n \t\t size = b.getSize(),\n \t\t container = this._container;\n\n \t\t// set size of svg-container if changed\n \t\tif (!this._svgSize || !this._svgSize.equals(size)) {\n \t\t\tthis._svgSize = size;\n \t\t\tcontainer.setAttribute('width', size.x);\n \t\t\tcontainer.setAttribute('height', size.y);\n \t\t}\n\n \t\t// movement: update container viewBox so that we don't have to change coordinates of individual layers\n \t\tsetPosition(container, b.min);\n \t\tcontainer.setAttribute('viewBox', [b.min.x, b.min.y, size.x, size.y].join(' '));\n\n \t\tthis.fire('update');\n \t},\n\n \t// methods below are called by vector layers implementations\n\n \t_initPath: function (layer) {\n \t\tvar path = layer._path = create('path');\n\n \t\t// @namespace Path\n \t\t// @option className: String = null\n \t\t// Custom class name set on an element. Only for SVG renderer.\n \t\tif (layer.options.className) {\n \t\t\taddClass(path, layer.options.className);\n \t\t}\n\n \t\tif (layer.options.interactive) {\n \t\t\taddClass(path, 'leaflet-interactive');\n \t\t}\n\n \t\tthis._updateStyle(layer);\n \t\tthis._layers[stamp(layer)] = layer;\n \t},\n\n \t_addPath: function (layer) {\n \t\tif (!this._rootGroup) { this._initContainer(); }\n \t\tthis._rootGroup.appendChild(layer._path);\n \t\tlayer.addInteractiveTarget(layer._path);\n \t},\n\n \t_removePath: function (layer) {\n \t\tremove(layer._path);\n \t\tlayer.removeInteractiveTarget(layer._path);\n \t\tdelete this._layers[stamp(layer)];\n \t},\n\n \t_updatePath: function (layer) {\n \t\tlayer._project();\n \t\tlayer._update();\n \t},\n\n \t_updateStyle: function (layer) {\n \t\tvar path = layer._path,\n \t\t options = layer.options;\n\n \t\tif (!path) { return; }\n\n \t\tif (options.stroke) {\n \t\t\tpath.setAttribute('stroke', options.color);\n \t\t\tpath.setAttribute('stroke-opacity', options.opacity);\n \t\t\tpath.setAttribute('stroke-width', options.weight);\n \t\t\tpath.setAttribute('stroke-linecap', options.lineCap);\n \t\t\tpath.setAttribute('stroke-linejoin', options.lineJoin);\n\n \t\t\tif (options.dashArray) {\n \t\t\t\tpath.setAttribute('stroke-dasharray', options.dashArray);\n \t\t\t} else {\n \t\t\t\tpath.removeAttribute('stroke-dasharray');\n \t\t\t}\n\n \t\t\tif (options.dashOffset) {\n \t\t\t\tpath.setAttribute('stroke-dashoffset', options.dashOffset);\n \t\t\t} else {\n \t\t\t\tpath.removeAttribute('stroke-dashoffset');\n \t\t\t}\n \t\t} else {\n \t\t\tpath.setAttribute('stroke', 'none');\n \t\t}\n\n \t\tif (options.fill) {\n \t\t\tpath.setAttribute('fill', options.fillColor || options.color);\n \t\t\tpath.setAttribute('fill-opacity', options.fillOpacity);\n \t\t\tpath.setAttribute('fill-rule', options.fillRule || 'evenodd');\n \t\t} else {\n \t\t\tpath.setAttribute('fill', 'none');\n \t\t}\n \t},\n\n \t_updatePoly: function (layer, closed) {\n \t\tthis._setPath(layer, pointsToPath(layer._parts, closed));\n \t},\n\n \t_updateCircle: function (layer) {\n \t\tvar p = layer._point,\n \t\t r = Math.max(Math.round(layer._radius), 1),\n \t\t r2 = Math.max(Math.round(layer._radiusY), 1) || r,\n \t\t arc = 'a' + r + ',' + r2 + ' 0 1,0 ';\n\n \t\t// drawing a circle with two half-arcs\n \t\tvar d = layer._empty() ? 'M0 0' :\n \t\t\t'M' + (p.x - r) + ',' + p.y +\n \t\t\tarc + (r * 2) + ',0 ' +\n \t\t\tarc + (-r * 2) + ',0 ';\n\n \t\tthis._setPath(layer, d);\n \t},\n\n \t_setPath: function (layer, path) {\n \t\tlayer._path.setAttribute('d', path);\n \t},\n\n \t// SVG does not have the concept of zIndex so we resort to changing the DOM order of elements\n \t_bringToFront: function (layer) {\n \t\ttoFront(layer._path);\n \t},\n\n \t_bringToBack: function (layer) {\n \t\ttoBack(layer._path);\n \t}\n });\n\n if (Browser.vml) {\n \tSVG.include(vmlMixin);\n }\n\n // @namespace SVG\n // @factory L.svg(options?: Renderer options)\n // Creates a SVG renderer with the given options.\n function svg(options) {\n \treturn Browser.svg || Browser.vml ? new SVG(options) : null;\n }\n\n Map.include({\n \t// @namespace Map; @method getRenderer(layer: Path): Renderer\n \t// Returns the instance of `Renderer` that should be used to render the given\n \t// `Path`. It will ensure that the `renderer` options of the map and paths\n \t// are respected, and that the renderers do exist on the map.\n \tgetRenderer: function (layer) {\n \t\t// @namespace Path; @option renderer: Renderer\n \t\t// Use this specific instance of `Renderer` for this path. Takes\n \t\t// precedence over the map's [default renderer](#map-renderer).\n \t\tvar renderer = layer.options.renderer || this._getPaneRenderer(layer.options.pane) || this.options.renderer || this._renderer;\n\n \t\tif (!renderer) {\n \t\t\trenderer = this._renderer = this._createRenderer();\n \t\t}\n\n \t\tif (!this.hasLayer(renderer)) {\n \t\t\tthis.addLayer(renderer);\n \t\t}\n \t\treturn renderer;\n \t},\n\n \t_getPaneRenderer: function (name) {\n \t\tif (name === 'overlayPane' || name === undefined) {\n \t\t\treturn false;\n \t\t}\n\n \t\tvar renderer = this._paneRenderers[name];\n \t\tif (renderer === undefined) {\n \t\t\trenderer = this._createRenderer({pane: name});\n \t\t\tthis._paneRenderers[name] = renderer;\n \t\t}\n \t\treturn renderer;\n \t},\n\n \t_createRenderer: function (options) {\n \t\t// @namespace Map; @option preferCanvas: Boolean = false\n \t\t// Whether `Path`s should be rendered on a `Canvas` renderer.\n \t\t// By default, all `Path`s are rendered in a `SVG` renderer.\n \t\treturn (this.options.preferCanvas && canvas(options)) || svg(options);\n \t}\n });\n\n /*\n * L.Rectangle extends Polygon and creates a rectangle when passed a LatLngBounds object.\n */\n\n /*\n * @class Rectangle\n * @aka L.Rectangle\n * @inherits Polygon\n *\n * A class for drawing rectangle overlays on a map. Extends `Polygon`.\n *\n * @example\n *\n * ```js\n * // define rectangle geographical bounds\n * var bounds = [[54.559322, -5.767822], [56.1210604, -3.021240]];\n *\n * // create an orange rectangle\n * L.rectangle(bounds, {color: \"#ff7800\", weight: 1}).addTo(map);\n *\n * // zoom the map to the rectangle bounds\n * map.fitBounds(bounds);\n * ```\n *\n */\n\n\n var Rectangle = Polygon.extend({\n \tinitialize: function (latLngBounds, options) {\n \t\tPolygon.prototype.initialize.call(this, this._boundsToLatLngs(latLngBounds), options);\n \t},\n\n \t// @method setBounds(latLngBounds: LatLngBounds): this\n \t// Redraws the rectangle with the passed bounds.\n \tsetBounds: function (latLngBounds) {\n \t\treturn this.setLatLngs(this._boundsToLatLngs(latLngBounds));\n \t},\n\n \t_boundsToLatLngs: function (latLngBounds) {\n \t\tlatLngBounds = toLatLngBounds(latLngBounds);\n \t\treturn [\n \t\t\tlatLngBounds.getSouthWest(),\n \t\t\tlatLngBounds.getNorthWest(),\n \t\t\tlatLngBounds.getNorthEast(),\n \t\t\tlatLngBounds.getSouthEast()\n \t\t];\n \t}\n });\n\n\n // @factory L.rectangle(latLngBounds: LatLngBounds, options?: Polyline options)\n function rectangle(latLngBounds, options) {\n \treturn new Rectangle(latLngBounds, options);\n }\n\n SVG.create = create;\n SVG.pointsToPath = pointsToPath;\n\n GeoJSON.geometryToLayer = geometryToLayer;\n GeoJSON.coordsToLatLng = coordsToLatLng;\n GeoJSON.coordsToLatLngs = coordsToLatLngs;\n GeoJSON.latLngToCoords = latLngToCoords;\n GeoJSON.latLngsToCoords = latLngsToCoords;\n GeoJSON.getFeature = getFeature;\n GeoJSON.asFeature = asFeature;\n\n /*\n * L.Handler.BoxZoom is used to add shift-drag zoom interaction to the map\n * (zoom to a selected bounding box), enabled by default.\n */\n\n // @namespace Map\n // @section Interaction Options\n Map.mergeOptions({\n \t// @option boxZoom: Boolean = true\n \t// Whether the map can be zoomed to a rectangular area specified by\n \t// dragging the mouse while pressing the shift key.\n \tboxZoom: true\n });\n\n var BoxZoom = Handler.extend({\n \tinitialize: function (map) {\n \t\tthis._map = map;\n \t\tthis._container = map._container;\n \t\tthis._pane = map._panes.overlayPane;\n \t\tthis._resetStateTimeout = 0;\n \t\tmap.on('unload', this._destroy, this);\n \t},\n\n \taddHooks: function () {\n \t\ton(this._container, 'mousedown', this._onMouseDown, this);\n \t},\n\n \tremoveHooks: function () {\n \t\toff(this._container, 'mousedown', this._onMouseDown, this);\n \t},\n\n \tmoved: function () {\n \t\treturn this._moved;\n \t},\n\n \t_destroy: function () {\n \t\tremove(this._pane);\n \t\tdelete this._pane;\n \t},\n\n \t_resetState: function () {\n \t\tthis._resetStateTimeout = 0;\n \t\tthis._moved = false;\n \t},\n\n \t_clearDeferredResetState: function () {\n \t\tif (this._resetStateTimeout !== 0) {\n \t\t\tclearTimeout(this._resetStateTimeout);\n \t\t\tthis._resetStateTimeout = 0;\n \t\t}\n \t},\n\n \t_onMouseDown: function (e) {\n \t\tif (!e.shiftKey || ((e.which !== 1) && (e.button !== 1))) { return false; }\n\n \t\t// Clear the deferred resetState if it hasn't executed yet, otherwise it\n \t\t// will interrupt the interaction and orphan a box element in the container.\n \t\tthis._clearDeferredResetState();\n \t\tthis._resetState();\n\n \t\tdisableTextSelection();\n \t\tdisableImageDrag();\n\n \t\tthis._startPoint = this._map.mouseEventToContainerPoint(e);\n\n \t\ton(document, {\n \t\t\tcontextmenu: stop,\n \t\t\tmousemove: this._onMouseMove,\n \t\t\tmouseup: this._onMouseUp,\n \t\t\tkeydown: this._onKeyDown\n \t\t}, this);\n \t},\n\n \t_onMouseMove: function (e) {\n \t\tif (!this._moved) {\n \t\t\tthis._moved = true;\n\n \t\t\tthis._box = create$1('div', 'leaflet-zoom-box', this._container);\n \t\t\taddClass(this._container, 'leaflet-crosshair');\n\n \t\t\tthis._map.fire('boxzoomstart');\n \t\t}\n\n \t\tthis._point = this._map.mouseEventToContainerPoint(e);\n\n \t\tvar bounds = new Bounds(this._point, this._startPoint),\n \t\t size = bounds.getSize();\n\n \t\tsetPosition(this._box, bounds.min);\n\n \t\tthis._box.style.width = size.x + 'px';\n \t\tthis._box.style.height = size.y + 'px';\n \t},\n\n \t_finish: function () {\n \t\tif (this._moved) {\n \t\t\tremove(this._box);\n \t\t\tremoveClass(this._container, 'leaflet-crosshair');\n \t\t}\n\n \t\tenableTextSelection();\n \t\tenableImageDrag();\n\n \t\toff(document, {\n \t\t\tcontextmenu: stop,\n \t\t\tmousemove: this._onMouseMove,\n \t\t\tmouseup: this._onMouseUp,\n \t\t\tkeydown: this._onKeyDown\n \t\t}, this);\n \t},\n\n \t_onMouseUp: function (e) {\n \t\tif ((e.which !== 1) && (e.button !== 1)) { return; }\n\n \t\tthis._finish();\n\n \t\tif (!this._moved) { return; }\n \t\t// Postpone to next JS tick so internal click event handling\n \t\t// still see it as \"moved\".\n \t\tthis._clearDeferredResetState();\n \t\tthis._resetStateTimeout = setTimeout(bind(this._resetState, this), 0);\n\n \t\tvar bounds = new LatLngBounds(\n \t\t this._map.containerPointToLatLng(this._startPoint),\n \t\t this._map.containerPointToLatLng(this._point));\n\n \t\tthis._map\n \t\t\t.fitBounds(bounds)\n \t\t\t.fire('boxzoomend', {boxZoomBounds: bounds});\n \t},\n\n \t_onKeyDown: function (e) {\n \t\tif (e.keyCode === 27) {\n \t\t\tthis._finish();\n \t\t\tthis._clearDeferredResetState();\n \t\t\tthis._resetState();\n \t\t}\n \t}\n });\n\n // @section Handlers\n // @property boxZoom: Handler\n // Box (shift-drag with mouse) zoom handler.\n Map.addInitHook('addHandler', 'boxZoom', BoxZoom);\n\n /*\n * L.Handler.DoubleClickZoom is used to handle double-click zoom on the map, enabled by default.\n */\n\n // @namespace Map\n // @section Interaction Options\n\n Map.mergeOptions({\n \t// @option doubleClickZoom: Boolean|String = true\n \t// Whether the map can be zoomed in by double clicking on it and\n \t// zoomed out by double clicking while holding shift. If passed\n \t// `'center'`, double-click zoom will zoom to the center of the\n \t// view regardless of where the mouse was.\n \tdoubleClickZoom: true\n });\n\n var DoubleClickZoom = Handler.extend({\n \taddHooks: function () {\n \t\tthis._map.on('dblclick', this._onDoubleClick, this);\n \t},\n\n \tremoveHooks: function () {\n \t\tthis._map.off('dblclick', this._onDoubleClick, this);\n \t},\n\n \t_onDoubleClick: function (e) {\n \t\tvar map = this._map,\n \t\t oldZoom = map.getZoom(),\n \t\t delta = map.options.zoomDelta,\n \t\t zoom = e.originalEvent.shiftKey ? oldZoom - delta : oldZoom + delta;\n\n \t\tif (map.options.doubleClickZoom === 'center') {\n \t\t\tmap.setZoom(zoom);\n \t\t} else {\n \t\t\tmap.setZoomAround(e.containerPoint, zoom);\n \t\t}\n \t}\n });\n\n // @section Handlers\n //\n // Map properties include interaction handlers that allow you to control\n // interaction behavior in runtime, enabling or disabling certain features such\n // as dragging or touch zoom (see `Handler` methods). For example:\n //\n // ```js\n // map.doubleClickZoom.disable();\n // ```\n //\n // @property doubleClickZoom: Handler\n // Double click zoom handler.\n Map.addInitHook('addHandler', 'doubleClickZoom', DoubleClickZoom);\n\n /*\n * L.Handler.MapDrag is used to make the map draggable (with panning inertia), enabled by default.\n */\n\n // @namespace Map\n // @section Interaction Options\n Map.mergeOptions({\n \t// @option dragging: Boolean = true\n \t// Whether the map is draggable with mouse/touch or not.\n \tdragging: true,\n\n \t// @section Panning Inertia Options\n \t// @option inertia: Boolean = *\n \t// If enabled, panning of the map will have an inertia effect where\n \t// the map builds momentum while dragging and continues moving in\n \t// the same direction for some time. Feels especially nice on touch\n \t// devices. Enabled by default.\n \tinertia: true,\n\n \t// @option inertiaDeceleration: Number = 3000\n \t// The rate with which the inertial movement slows down, in pixels/second².\n \tinertiaDeceleration: 3400, // px/s^2\n\n \t// @option inertiaMaxSpeed: Number = Infinity\n \t// Max speed of the inertial movement, in pixels/second.\n \tinertiaMaxSpeed: Infinity, // px/s\n\n \t// @option easeLinearity: Number = 0.2\n \teaseLinearity: 0.2,\n\n \t// TODO refactor, move to CRS\n \t// @option worldCopyJump: Boolean = false\n \t// With this option enabled, the map tracks when you pan to another \"copy\"\n \t// of the world and seamlessly jumps to the original one so that all overlays\n \t// like markers and vector layers are still visible.\n \tworldCopyJump: false,\n\n \t// @option maxBoundsViscosity: Number = 0.0\n \t// If `maxBounds` is set, this option will control how solid the bounds\n \t// are when dragging the map around. The default value of `0.0` allows the\n \t// user to drag outside the bounds at normal speed, higher values will\n \t// slow down map dragging outside bounds, and `1.0` makes the bounds fully\n \t// solid, preventing the user from dragging outside the bounds.\n \tmaxBoundsViscosity: 0.0\n });\n\n var Drag = Handler.extend({\n \taddHooks: function () {\n \t\tif (!this._draggable) {\n \t\t\tvar map = this._map;\n\n \t\t\tthis._draggable = new Draggable(map._mapPane, map._container);\n\n \t\t\tthis._draggable.on({\n \t\t\t\tdragstart: this._onDragStart,\n \t\t\t\tdrag: this._onDrag,\n \t\t\t\tdragend: this._onDragEnd\n \t\t\t}, this);\n\n \t\t\tthis._draggable.on('predrag', this._onPreDragLimit, this);\n \t\t\tif (map.options.worldCopyJump) {\n \t\t\t\tthis._draggable.on('predrag', this._onPreDragWrap, this);\n \t\t\t\tmap.on('zoomend', this._onZoomEnd, this);\n\n \t\t\t\tmap.whenReady(this._onZoomEnd, this);\n \t\t\t}\n \t\t}\n \t\taddClass(this._map._container, 'leaflet-grab leaflet-touch-drag');\n \t\tthis._draggable.enable();\n \t\tthis._positions = [];\n \t\tthis._times = [];\n \t},\n\n \tremoveHooks: function () {\n \t\tremoveClass(this._map._container, 'leaflet-grab');\n \t\tremoveClass(this._map._container, 'leaflet-touch-drag');\n \t\tthis._draggable.disable();\n \t},\n\n \tmoved: function () {\n \t\treturn this._draggable && this._draggable._moved;\n \t},\n\n \tmoving: function () {\n \t\treturn this._draggable && this._draggable._moving;\n \t},\n\n \t_onDragStart: function () {\n \t\tvar map = this._map;\n\n \t\tmap._stop();\n \t\tif (this._map.options.maxBounds && this._map.options.maxBoundsViscosity) {\n \t\t\tvar bounds = toLatLngBounds(this._map.options.maxBounds);\n\n \t\t\tthis._offsetLimit = toBounds(\n \t\t\t\tthis._map.latLngToContainerPoint(bounds.getNorthWest()).multiplyBy(-1),\n \t\t\t\tthis._map.latLngToContainerPoint(bounds.getSouthEast()).multiplyBy(-1)\n \t\t\t\t\t.add(this._map.getSize()));\n\n \t\t\tthis._viscosity = Math.min(1.0, Math.max(0.0, this._map.options.maxBoundsViscosity));\n \t\t} else {\n \t\t\tthis._offsetLimit = null;\n \t\t}\n\n \t\tmap\n \t\t .fire('movestart')\n \t\t .fire('dragstart');\n\n \t\tif (map.options.inertia) {\n \t\t\tthis._positions = [];\n \t\t\tthis._times = [];\n \t\t}\n \t},\n\n \t_onDrag: function (e) {\n \t\tif (this._map.options.inertia) {\n \t\t\tvar time = this._lastTime = +new Date(),\n \t\t\t pos = this._lastPos = this._draggable._absPos || this._draggable._newPos;\n\n \t\t\tthis._positions.push(pos);\n \t\t\tthis._times.push(time);\n\n \t\t\tthis._prunePositions(time);\n \t\t}\n\n \t\tthis._map\n \t\t .fire('move', e)\n \t\t .fire('drag', e);\n \t},\n\n \t_prunePositions: function (time) {\n \t\twhile (this._positions.length > 1 && time - this._times[0] > 50) {\n \t\t\tthis._positions.shift();\n \t\t\tthis._times.shift();\n \t\t}\n \t},\n\n \t_onZoomEnd: function () {\n \t\tvar pxCenter = this._map.getSize().divideBy(2),\n \t\t pxWorldCenter = this._map.latLngToLayerPoint([0, 0]);\n\n \t\tthis._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x;\n \t\tthis._worldWidth = this._map.getPixelWorldBounds().getSize().x;\n \t},\n\n \t_viscousLimit: function (value, threshold) {\n \t\treturn value - (value - threshold) * this._viscosity;\n \t},\n\n \t_onPreDragLimit: function () {\n \t\tif (!this._viscosity || !this._offsetLimit) { return; }\n\n \t\tvar offset = this._draggable._newPos.subtract(this._draggable._startPos);\n\n \t\tvar limit = this._offsetLimit;\n \t\tif (offset.x < limit.min.x) { offset.x = this._viscousLimit(offset.x, limit.min.x); }\n \t\tif (offset.y < limit.min.y) { offset.y = this._viscousLimit(offset.y, limit.min.y); }\n \t\tif (offset.x > limit.max.x) { offset.x = this._viscousLimit(offset.x, limit.max.x); }\n \t\tif (offset.y > limit.max.y) { offset.y = this._viscousLimit(offset.y, limit.max.y); }\n\n \t\tthis._draggable._newPos = this._draggable._startPos.add(offset);\n \t},\n\n \t_onPreDragWrap: function () {\n \t\t// TODO refactor to be able to adjust map pane position after zoom\n \t\tvar worldWidth = this._worldWidth,\n \t\t halfWidth = Math.round(worldWidth / 2),\n \t\t dx = this._initialWorldOffset,\n \t\t x = this._draggable._newPos.x,\n \t\t newX1 = (x - halfWidth + dx) % worldWidth + halfWidth - dx,\n \t\t newX2 = (x + halfWidth + dx) % worldWidth - halfWidth - dx,\n \t\t newX = Math.abs(newX1 + dx) < Math.abs(newX2 + dx) ? newX1 : newX2;\n\n \t\tthis._draggable._absPos = this._draggable._newPos.clone();\n \t\tthis._draggable._newPos.x = newX;\n \t},\n\n \t_onDragEnd: function (e) {\n \t\tvar map = this._map,\n \t\t options = map.options,\n\n \t\t noInertia = !options.inertia || e.noInertia || this._times.length < 2;\n\n \t\tmap.fire('dragend', e);\n\n \t\tif (noInertia) {\n \t\t\tmap.fire('moveend');\n\n \t\t} else {\n \t\t\tthis._prunePositions(+new Date());\n\n \t\t\tvar direction = this._lastPos.subtract(this._positions[0]),\n \t\t\t duration = (this._lastTime - this._times[0]) / 1000,\n \t\t\t ease = options.easeLinearity,\n\n \t\t\t speedVector = direction.multiplyBy(ease / duration),\n \t\t\t speed = speedVector.distanceTo([0, 0]),\n\n \t\t\t limitedSpeed = Math.min(options.inertiaMaxSpeed, speed),\n \t\t\t limitedSpeedVector = speedVector.multiplyBy(limitedSpeed / speed),\n\n \t\t\t decelerationDuration = limitedSpeed / (options.inertiaDeceleration * ease),\n \t\t\t offset = limitedSpeedVector.multiplyBy(-decelerationDuration / 2).round();\n\n \t\t\tif (!offset.x && !offset.y) {\n \t\t\t\tmap.fire('moveend');\n\n \t\t\t} else {\n \t\t\t\toffset = map._limitOffset(offset, map.options.maxBounds);\n\n \t\t\t\trequestAnimFrame(function () {\n \t\t\t\t\tmap.panBy(offset, {\n \t\t\t\t\t\tduration: decelerationDuration,\n \t\t\t\t\t\teaseLinearity: ease,\n \t\t\t\t\t\tnoMoveStart: true,\n \t\t\t\t\t\tanimate: true\n \t\t\t\t\t});\n \t\t\t\t});\n \t\t\t}\n \t\t}\n \t}\n });\n\n // @section Handlers\n // @property dragging: Handler\n // Map dragging handler (by both mouse and touch).\n Map.addInitHook('addHandler', 'dragging', Drag);\n\n /*\n * L.Map.Keyboard is handling keyboard interaction with the map, enabled by default.\n */\n\n // @namespace Map\n // @section Keyboard Navigation Options\n Map.mergeOptions({\n \t// @option keyboard: Boolean = true\n \t// Makes the map focusable and allows users to navigate the map with keyboard\n \t// arrows and `+`/`-` keys.\n \tkeyboard: true,\n\n \t// @option keyboardPanDelta: Number = 80\n \t// Amount of pixels to pan when pressing an arrow key.\n \tkeyboardPanDelta: 80\n });\n\n var Keyboard = Handler.extend({\n\n \tkeyCodes: {\n \t\tleft: [37],\n \t\tright: [39],\n \t\tdown: [40],\n \t\tup: [38],\n \t\tzoomIn: [187, 107, 61, 171],\n \t\tzoomOut: [189, 109, 54, 173]\n \t},\n\n \tinitialize: function (map) {\n \t\tthis._map = map;\n\n \t\tthis._setPanDelta(map.options.keyboardPanDelta);\n \t\tthis._setZoomDelta(map.options.zoomDelta);\n \t},\n\n \taddHooks: function () {\n \t\tvar container = this._map._container;\n\n \t\t// make the container focusable by tabbing\n \t\tif (container.tabIndex <= 0) {\n \t\t\tcontainer.tabIndex = '0';\n \t\t}\n\n \t\ton(container, {\n \t\t\tfocus: this._onFocus,\n \t\t\tblur: this._onBlur,\n \t\t\tmousedown: this._onMouseDown\n \t\t}, this);\n\n \t\tthis._map.on({\n \t\t\tfocus: this._addHooks,\n \t\t\tblur: this._removeHooks\n \t\t}, this);\n \t},\n\n \tremoveHooks: function () {\n \t\tthis._removeHooks();\n\n \t\toff(this._map._container, {\n \t\t\tfocus: this._onFocus,\n \t\t\tblur: this._onBlur,\n \t\t\tmousedown: this._onMouseDown\n \t\t}, this);\n\n \t\tthis._map.off({\n \t\t\tfocus: this._addHooks,\n \t\t\tblur: this._removeHooks\n \t\t}, this);\n \t},\n\n \t_onMouseDown: function () {\n \t\tif (this._focused) { return; }\n\n \t\tvar body = document.body,\n \t\t docEl = document.documentElement,\n \t\t top = body.scrollTop || docEl.scrollTop,\n \t\t left = body.scrollLeft || docEl.scrollLeft;\n\n \t\tthis._map._container.focus();\n\n \t\twindow.scrollTo(left, top);\n \t},\n\n \t_onFocus: function () {\n \t\tthis._focused = true;\n \t\tthis._map.fire('focus');\n \t},\n\n \t_onBlur: function () {\n \t\tthis._focused = false;\n \t\tthis._map.fire('blur');\n \t},\n\n \t_setPanDelta: function (panDelta) {\n \t\tvar keys = this._panKeys = {},\n \t\t codes = this.keyCodes,\n \t\t i, len;\n\n \t\tfor (i = 0, len = codes.left.length; i < len; i++) {\n \t\t\tkeys[codes.left[i]] = [-1 * panDelta, 0];\n \t\t}\n \t\tfor (i = 0, len = codes.right.length; i < len; i++) {\n \t\t\tkeys[codes.right[i]] = [panDelta, 0];\n \t\t}\n \t\tfor (i = 0, len = codes.down.length; i < len; i++) {\n \t\t\tkeys[codes.down[i]] = [0, panDelta];\n \t\t}\n \t\tfor (i = 0, len = codes.up.length; i < len; i++) {\n \t\t\tkeys[codes.up[i]] = [0, -1 * panDelta];\n \t\t}\n \t},\n\n \t_setZoomDelta: function (zoomDelta) {\n \t\tvar keys = this._zoomKeys = {},\n \t\t codes = this.keyCodes,\n \t\t i, len;\n\n \t\tfor (i = 0, len = codes.zoomIn.length; i < len; i++) {\n \t\t\tkeys[codes.zoomIn[i]] = zoomDelta;\n \t\t}\n \t\tfor (i = 0, len = codes.zoomOut.length; i < len; i++) {\n \t\t\tkeys[codes.zoomOut[i]] = -zoomDelta;\n \t\t}\n \t},\n\n \t_addHooks: function () {\n \t\ton(document, 'keydown', this._onKeyDown, this);\n \t},\n\n \t_removeHooks: function () {\n \t\toff(document, 'keydown', this._onKeyDown, this);\n \t},\n\n \t_onKeyDown: function (e) {\n \t\tif (e.altKey || e.ctrlKey || e.metaKey) { return; }\n\n \t\tvar key = e.keyCode,\n \t\t map = this._map,\n \t\t offset;\n\n \t\tif (key in this._panKeys) {\n \t\t\tif (!map._panAnim || !map._panAnim._inProgress) {\n \t\t\t\toffset = this._panKeys[key];\n \t\t\t\tif (e.shiftKey) {\n \t\t\t\t\toffset = toPoint(offset).multiplyBy(3);\n \t\t\t\t}\n\n \t\t\t\tif (map.options.maxBounds) {\n \t\t\t\t\toffset = map._limitOffset(toPoint(offset), map.options.maxBounds);\n \t\t\t\t}\n\n \t\t\t\tif (map.options.worldCopyJump) {\n \t\t\t\t\tvar newLatLng = map.wrapLatLng(map.unproject(map.project(map.getCenter()).add(offset)));\n \t\t\t\t\tmap.panTo(newLatLng);\n \t\t\t\t} else {\n \t\t\t\t\tmap.panBy(offset);\n \t\t\t\t}\n \t\t\t}\n \t\t} else if (key in this._zoomKeys) {\n \t\t\tmap.setZoom(map.getZoom() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]);\n\n \t\t} else if (key === 27 && map._popup && map._popup.options.closeOnEscapeKey) {\n \t\t\tmap.closePopup();\n\n \t\t} else {\n \t\t\treturn;\n \t\t}\n\n \t\tstop(e);\n \t}\n });\n\n // @section Handlers\n // @section Handlers\n // @property keyboard: Handler\n // Keyboard navigation handler.\n Map.addInitHook('addHandler', 'keyboard', Keyboard);\n\n /*\n * L.Handler.ScrollWheelZoom is used by L.Map to enable mouse scroll wheel zoom on the map.\n */\n\n // @namespace Map\n // @section Interaction Options\n Map.mergeOptions({\n \t// @section Mouse wheel options\n \t// @option scrollWheelZoom: Boolean|String = true\n \t// Whether the map can be zoomed by using the mouse wheel. If passed `'center'`,\n \t// it will zoom to the center of the view regardless of where the mouse was.\n \tscrollWheelZoom: true,\n\n \t// @option wheelDebounceTime: Number = 40\n \t// Limits the rate at which a wheel can fire (in milliseconds). By default\n \t// user can't zoom via wheel more often than once per 40 ms.\n \twheelDebounceTime: 40,\n\n \t// @option wheelPxPerZoomLevel: Number = 60\n \t// How many scroll pixels (as reported by [L.DomEvent.getWheelDelta](#domevent-getwheeldelta))\n \t// mean a change of one full zoom level. Smaller values will make wheel-zooming\n \t// faster (and vice versa).\n \twheelPxPerZoomLevel: 60\n });\n\n var ScrollWheelZoom = Handler.extend({\n \taddHooks: function () {\n \t\ton(this._map._container, 'wheel', this._onWheelScroll, this);\n\n \t\tthis._delta = 0;\n \t},\n\n \tremoveHooks: function () {\n \t\toff(this._map._container, 'wheel', this._onWheelScroll, this);\n \t},\n\n \t_onWheelScroll: function (e) {\n \t\tvar delta = getWheelDelta(e);\n\n \t\tvar debounce = this._map.options.wheelDebounceTime;\n\n \t\tthis._delta += delta;\n \t\tthis._lastMousePos = this._map.mouseEventToContainerPoint(e);\n\n \t\tif (!this._startTime) {\n \t\t\tthis._startTime = +new Date();\n \t\t}\n\n \t\tvar left = Math.max(debounce - (+new Date() - this._startTime), 0);\n\n \t\tclearTimeout(this._timer);\n \t\tthis._timer = setTimeout(bind(this._performZoom, this), left);\n\n \t\tstop(e);\n \t},\n\n \t_performZoom: function () {\n \t\tvar map = this._map,\n \t\t zoom = map.getZoom(),\n \t\t snap = this._map.options.zoomSnap || 0;\n\n \t\tmap._stop(); // stop panning and fly animations if any\n\n \t\t// map the delta with a sigmoid function to -4..4 range leaning on -1..1\n \t\tvar d2 = this._delta / (this._map.options.wheelPxPerZoomLevel * 4),\n \t\t d3 = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(d2)))) / Math.LN2,\n \t\t d4 = snap ? Math.ceil(d3 / snap) * snap : d3,\n \t\t delta = map._limitZoom(zoom + (this._delta > 0 ? d4 : -d4)) - zoom;\n\n \t\tthis._delta = 0;\n \t\tthis._startTime = null;\n\n \t\tif (!delta) { return; }\n\n \t\tif (map.options.scrollWheelZoom === 'center') {\n \t\t\tmap.setZoom(zoom + delta);\n \t\t} else {\n \t\t\tmap.setZoomAround(this._lastMousePos, zoom + delta);\n \t\t}\n \t}\n });\n\n // @section Handlers\n // @property scrollWheelZoom: Handler\n // Scroll wheel zoom handler.\n Map.addInitHook('addHandler', 'scrollWheelZoom', ScrollWheelZoom);\n\n /*\n * L.Map.TapHold is used to simulate `contextmenu` event on long hold,\n * which otherwise is not fired by mobile Safari.\n */\n\n var tapHoldDelay = 600;\n\n // @namespace Map\n // @section Interaction Options\n Map.mergeOptions({\n \t// @section Touch interaction options\n \t// @option tapHold: Boolean\n \t// Enables simulation of `contextmenu` event, default is `true` for mobile Safari.\n \ttapHold: Browser.touchNative && Browser.safari && Browser.mobile,\n\n \t// @option tapTolerance: Number = 15\n \t// The max number of pixels a user can shift his finger during touch\n \t// for it to be considered a valid tap.\n \ttapTolerance: 15\n });\n\n var TapHold = Handler.extend({\n \taddHooks: function () {\n \t\ton(this._map._container, 'touchstart', this._onDown, this);\n \t},\n\n \tremoveHooks: function () {\n \t\toff(this._map._container, 'touchstart', this._onDown, this);\n \t},\n\n \t_onDown: function (e) {\n \t\tclearTimeout(this._holdTimeout);\n \t\tif (e.touches.length !== 1) { return; }\n\n \t\tvar first = e.touches[0];\n \t\tthis._startPos = this._newPos = new Point(first.clientX, first.clientY);\n\n \t\tthis._holdTimeout = setTimeout(bind(function () {\n \t\t\tthis._cancel();\n \t\t\tif (!this._isTapValid()) { return; }\n\n \t\t\t// prevent simulated mouse events https://w3c.github.io/touch-events/#mouse-events\n \t\t\ton(document, 'touchend', preventDefault);\n \t\t\ton(document, 'touchend touchcancel', this._cancelClickPrevent);\n \t\t\tthis._simulateEvent('contextmenu', first);\n \t\t}, this), tapHoldDelay);\n\n \t\ton(document, 'touchend touchcancel contextmenu', this._cancel, this);\n \t\ton(document, 'touchmove', this._onMove, this);\n \t},\n\n \t_cancelClickPrevent: function cancelClickPrevent() {\n \t\toff(document, 'touchend', preventDefault);\n \t\toff(document, 'touchend touchcancel', cancelClickPrevent);\n \t},\n\n \t_cancel: function () {\n \t\tclearTimeout(this._holdTimeout);\n \t\toff(document, 'touchend touchcancel contextmenu', this._cancel, this);\n \t\toff(document, 'touchmove', this._onMove, this);\n \t},\n\n \t_onMove: function (e) {\n \t\tvar first = e.touches[0];\n \t\tthis._newPos = new Point(first.clientX, first.clientY);\n \t},\n\n \t_isTapValid: function () {\n \t\treturn this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance;\n \t},\n\n \t_simulateEvent: function (type, e) {\n \t\tvar simulatedEvent = new MouseEvent(type, {\n \t\t\tbubbles: true,\n \t\t\tcancelable: true,\n \t\t\tview: window,\n \t\t\t// detail: 1,\n \t\t\tscreenX: e.screenX,\n \t\t\tscreenY: e.screenY,\n \t\t\tclientX: e.clientX,\n \t\t\tclientY: e.clientY,\n \t\t\t// button: 2,\n \t\t\t// buttons: 2\n \t\t});\n\n \t\tsimulatedEvent._simulated = true;\n\n \t\te.target.dispatchEvent(simulatedEvent);\n \t}\n });\n\n // @section Handlers\n // @property tapHold: Handler\n // Long tap handler to simulate `contextmenu` event (useful in mobile Safari).\n Map.addInitHook('addHandler', 'tapHold', TapHold);\n\n /*\n * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers.\n */\n\n // @namespace Map\n // @section Interaction Options\n Map.mergeOptions({\n \t// @section Touch interaction options\n \t// @option touchZoom: Boolean|String = *\n \t// Whether the map can be zoomed by touch-dragging with two fingers. If\n \t// passed `'center'`, it will zoom to the center of the view regardless of\n \t// where the touch events (fingers) were. Enabled for touch-capable web\n \t// browsers.\n \ttouchZoom: Browser.touch,\n\n \t// @option bounceAtZoomLimits: Boolean = true\n \t// Set it to false if you don't want the map to zoom beyond min/max zoom\n \t// and then bounce back when pinch-zooming.\n \tbounceAtZoomLimits: true\n });\n\n var TouchZoom = Handler.extend({\n \taddHooks: function () {\n \t\taddClass(this._map._container, 'leaflet-touch-zoom');\n \t\ton(this._map._container, 'touchstart', this._onTouchStart, this);\n \t},\n\n \tremoveHooks: function () {\n \t\tremoveClass(this._map._container, 'leaflet-touch-zoom');\n \t\toff(this._map._container, 'touchstart', this._onTouchStart, this);\n \t},\n\n \t_onTouchStart: function (e) {\n \t\tvar map = this._map;\n \t\tif (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) { return; }\n\n \t\tvar p1 = map.mouseEventToContainerPoint(e.touches[0]),\n \t\t p2 = map.mouseEventToContainerPoint(e.touches[1]);\n\n \t\tthis._centerPoint = map.getSize()._divideBy(2);\n \t\tthis._startLatLng = map.containerPointToLatLng(this._centerPoint);\n \t\tif (map.options.touchZoom !== 'center') {\n \t\t\tthis._pinchStartLatLng = map.containerPointToLatLng(p1.add(p2)._divideBy(2));\n \t\t}\n\n \t\tthis._startDist = p1.distanceTo(p2);\n \t\tthis._startZoom = map.getZoom();\n\n \t\tthis._moved = false;\n \t\tthis._zooming = true;\n\n \t\tmap._stop();\n\n \t\ton(document, 'touchmove', this._onTouchMove, this);\n \t\ton(document, 'touchend touchcancel', this._onTouchEnd, this);\n\n \t\tpreventDefault(e);\n \t},\n\n \t_onTouchMove: function (e) {\n \t\tif (!e.touches || e.touches.length !== 2 || !this._zooming) { return; }\n\n \t\tvar map = this._map,\n \t\t p1 = map.mouseEventToContainerPoint(e.touches[0]),\n \t\t p2 = map.mouseEventToContainerPoint(e.touches[1]),\n \t\t scale = p1.distanceTo(p2) / this._startDist;\n\n \t\tthis._zoom = map.getScaleZoom(scale, this._startZoom);\n\n \t\tif (!map.options.bounceAtZoomLimits && (\n \t\t\t(this._zoom < map.getMinZoom() && scale < 1) ||\n \t\t\t(this._zoom > map.getMaxZoom() && scale > 1))) {\n \t\t\tthis._zoom = map._limitZoom(this._zoom);\n \t\t}\n\n \t\tif (map.options.touchZoom === 'center') {\n \t\t\tthis._center = this._startLatLng;\n \t\t\tif (scale === 1) { return; }\n \t\t} else {\n \t\t\t// Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng\n \t\t\tvar delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint);\n \t\t\tif (scale === 1 && delta.x === 0 && delta.y === 0) { return; }\n \t\t\tthis._center = map.unproject(map.project(this._pinchStartLatLng, this._zoom).subtract(delta), this._zoom);\n \t\t}\n\n \t\tif (!this._moved) {\n \t\t\tmap._moveStart(true, false);\n \t\t\tthis._moved = true;\n \t\t}\n\n \t\tcancelAnimFrame(this._animRequest);\n\n \t\tvar moveFn = bind(map._move, map, this._center, this._zoom, {pinch: true, round: false}, undefined);\n \t\tthis._animRequest = requestAnimFrame(moveFn, this, true);\n\n \t\tpreventDefault(e);\n \t},\n\n \t_onTouchEnd: function () {\n \t\tif (!this._moved || !this._zooming) {\n \t\t\tthis._zooming = false;\n \t\t\treturn;\n \t\t}\n\n \t\tthis._zooming = false;\n \t\tcancelAnimFrame(this._animRequest);\n\n \t\toff(document, 'touchmove', this._onTouchMove, this);\n \t\toff(document, 'touchend touchcancel', this._onTouchEnd, this);\n\n \t\t// Pinch updates GridLayers' levels only when zoomSnap is off, so zoomSnap becomes noUpdate.\n \t\tif (this._map.options.zoomAnimation) {\n \t\t\tthis._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap);\n \t\t} else {\n \t\t\tthis._map._resetView(this._center, this._map._limitZoom(this._zoom));\n \t\t}\n \t}\n });\n\n // @section Handlers\n // @property touchZoom: Handler\n // Touch zoom handler.\n Map.addInitHook('addHandler', 'touchZoom', TouchZoom);\n\n Map.BoxZoom = BoxZoom;\n Map.DoubleClickZoom = DoubleClickZoom;\n Map.Drag = Drag;\n Map.Keyboard = Keyboard;\n Map.ScrollWheelZoom = ScrollWheelZoom;\n Map.TapHold = TapHold;\n Map.TouchZoom = TouchZoom;\n\n exports.Bounds = Bounds;\n exports.Browser = Browser;\n exports.CRS = CRS;\n exports.Canvas = Canvas;\n exports.Circle = Circle;\n exports.CircleMarker = CircleMarker;\n exports.Class = Class;\n exports.Control = Control;\n exports.DivIcon = DivIcon;\n exports.DivOverlay = DivOverlay;\n exports.DomEvent = DomEvent;\n exports.DomUtil = DomUtil;\n exports.Draggable = Draggable;\n exports.Evented = Evented;\n exports.FeatureGroup = FeatureGroup;\n exports.GeoJSON = GeoJSON;\n exports.GridLayer = GridLayer;\n exports.Handler = Handler;\n exports.Icon = Icon;\n exports.ImageOverlay = ImageOverlay;\n exports.LatLng = LatLng;\n exports.LatLngBounds = LatLngBounds;\n exports.Layer = Layer;\n exports.LayerGroup = LayerGroup;\n exports.LineUtil = LineUtil;\n exports.Map = Map;\n exports.Marker = Marker;\n exports.Mixin = Mixin;\n exports.Path = Path;\n exports.Point = Point;\n exports.PolyUtil = PolyUtil;\n exports.Polygon = Polygon;\n exports.Polyline = Polyline;\n exports.Popup = Popup;\n exports.PosAnimation = PosAnimation;\n exports.Projection = index;\n exports.Rectangle = Rectangle;\n exports.Renderer = Renderer;\n exports.SVG = SVG;\n exports.SVGOverlay = SVGOverlay;\n exports.TileLayer = TileLayer;\n exports.Tooltip = Tooltip;\n exports.Transformation = Transformation;\n exports.Util = Util;\n exports.VideoOverlay = VideoOverlay;\n exports.bind = bind;\n exports.bounds = toBounds;\n exports.canvas = canvas;\n exports.circle = circle;\n exports.circleMarker = circleMarker;\n exports.control = control;\n exports.divIcon = divIcon;\n exports.extend = extend;\n exports.featureGroup = featureGroup;\n exports.geoJSON = geoJSON;\n exports.geoJson = geoJson;\n exports.gridLayer = gridLayer;\n exports.icon = icon;\n exports.imageOverlay = imageOverlay;\n exports.latLng = toLatLng;\n exports.latLngBounds = toLatLngBounds;\n exports.layerGroup = layerGroup;\n exports.map = createMap;\n exports.marker = marker;\n exports.point = toPoint;\n exports.polygon = polygon;\n exports.polyline = polyline;\n exports.popup = popup;\n exports.rectangle = rectangle;\n exports.setOptions = setOptions;\n exports.stamp = stamp;\n exports.svg = svg;\n exports.svgOverlay = svgOverlay;\n exports.tileLayer = tileLayer;\n exports.tooltip = tooltip;\n exports.transformation = toTransformation;\n exports.version = version;\n exports.videoOverlay = videoOverlay;\n\n var oldL = window.L;\n exports.noConflict = function() {\n \twindow.L = oldL;\n \treturn this;\n }\n // Always export us to window global (see #2364)\n window.L = exports;\n\n}));\n//# sourceMappingURL=leaflet-src.js.map\n","L.Control.Fullscreen = L.Control.extend({\n options: {\n position: 'topleft',\n title: {\n 'false': 'View Fullscreen',\n 'true': 'Exit Fullscreen'\n }\n },\n\n onAdd: function (map) {\n var container = L.DomUtil.create('div', 'leaflet-control-fullscreen leaflet-bar leaflet-control');\n\n this.link = L.DomUtil.create('a', 'leaflet-control-fullscreen-button leaflet-bar-part', container);\n this.link.href = '#';\n\n this._map = map;\n this._map.on('fullscreenchange', this._toggleTitle, this);\n this._toggleTitle();\n\n L.DomEvent.on(this.link, 'click', this._click, this);\n\n return container;\n },\n\n _click: function (e) {\n L.DomEvent.stopPropagation(e);\n L.DomEvent.preventDefault(e);\n this._map.toggleFullscreen(this.options);\n },\n\n _toggleTitle: function() {\n this.link.title = this.options.title[this._map.isFullscreen()];\n }\n});\n\nL.Map.include({\n isFullscreen: function () {\n return this._isFullscreen || false;\n },\n\n toggleFullscreen: function (options) {\n var container = this.getContainer();\n if (this.isFullscreen()) {\n if (options && options.pseudoFullscreen) {\n this._disablePseudoFullscreen(container);\n } else if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else {\n this._disablePseudoFullscreen(container);\n }\n } else {\n if (options && options.pseudoFullscreen) {\n this._enablePseudoFullscreen(container);\n } else if (container.requestFullscreen) {\n container.requestFullscreen();\n } else if (container.mozRequestFullScreen) {\n container.mozRequestFullScreen();\n } else if (container.webkitRequestFullscreen) {\n container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n } else if (container.msRequestFullscreen) {\n container.msRequestFullscreen();\n } else {\n this._enablePseudoFullscreen(container);\n }\n }\n\n },\n\n _enablePseudoFullscreen: function (container) {\n L.DomUtil.addClass(container, 'leaflet-pseudo-fullscreen');\n this._setFullscreen(true);\n this.fire('fullscreenchange');\n },\n\n _disablePseudoFullscreen: function (container) {\n L.DomUtil.removeClass(container, 'leaflet-pseudo-fullscreen');\n this._setFullscreen(false);\n this.fire('fullscreenchange');\n },\n\n _setFullscreen: function(fullscreen) {\n this._isFullscreen = fullscreen;\n var container = this.getContainer();\n if (fullscreen) {\n L.DomUtil.addClass(container, 'leaflet-fullscreen-on');\n } else {\n L.DomUtil.removeClass(container, 'leaflet-fullscreen-on');\n }\n this.invalidateSize();\n },\n\n _onFullscreenChange: function (e) {\n var fullscreenElement =\n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement;\n\n if (fullscreenElement === this.getContainer() && !this._isFullscreen) {\n this._setFullscreen(true);\n this.fire('fullscreenchange');\n } else if (fullscreenElement !== this.getContainer() && this._isFullscreen) {\n this._setFullscreen(false);\n this.fire('fullscreenchange');\n }\n }\n});\n\nL.Map.mergeOptions({\n fullscreenControl: false\n});\n\nL.Map.addInitHook(function () {\n if (this.options.fullscreenControl) {\n this.fullscreenControl = new L.Control.Fullscreen(this.options.fullscreenControl);\n this.addControl(this.fullscreenControl);\n }\n\n var fullscreenchange;\n\n if ('onfullscreenchange' in document) {\n fullscreenchange = 'fullscreenchange';\n } else if ('onmozfullscreenchange' in document) {\n fullscreenchange = 'mozfullscreenchange';\n } else if ('onwebkitfullscreenchange' in document) {\n fullscreenchange = 'webkitfullscreenchange';\n } else if ('onmsfullscreenchange' in document) {\n fullscreenchange = 'MSFullscreenChange';\n }\n\n if (fullscreenchange) {\n var onFullscreenChange = L.bind(this._onFullscreenChange, this);\n\n this.whenReady(function () {\n L.DomEvent.on(document, fullscreenchange, onFullscreenChange);\n });\n\n this.on('unload', function () {\n L.DomEvent.off(document, fullscreenchange, onFullscreenChange);\n });\n }\n});\n\nL.control.fullscreen = function (options) {\n return new L.Control.Fullscreen(options);\n};\n","import * as Ht from \"leaflet\";\nfunction vi(r) {\n return Array.isArray(r) ? `[${r.map((t) => vi(t)).join(\",\")}]` : typeof r == \"number\" ? `${r}` : typeof r == \"string\" ? `\"${r}\"` : typeof r == \"object\" && r !== null ? Object.keys(r).sort().map((t) => `${t}:${vi(r[t])}`).join(\"|\") : String(r);\n}\nasync function Co(r) {\n const t = await crypto.subtle.digest(\"SHA-1\", new TextEncoder().encode(r));\n return Array.from(new Uint8Array(t)).map((n) => n.toString(16).padStart(2, \"0\")).join(\"\");\n}\nasync function zn(r, t = 16) {\n return (await Co(String(r))).slice(0, t);\n}\nasync function Ro(r, t) {\n return await zn(vi(r), t);\n}\nvar J;\n(function(r) {\n r.assertEqual = (n) => n;\n function t(n) {\n }\n r.assertIs = t;\n function e(n) {\n throw new Error();\n }\n r.assertNever = e, r.arrayToEnum = (n) => {\n const s = {};\n for (const o of n)\n s[o] = o;\n return s;\n }, r.getValidEnumValues = (n) => {\n const s = r.objectKeys(n).filter((a) => typeof n[n[a]] != \"number\"), o = {};\n for (const a of s)\n o[a] = n[a];\n return r.objectValues(o);\n }, r.objectValues = (n) => r.objectKeys(n).map(function(s) {\n return n[s];\n }), r.objectKeys = typeof Object.keys == \"function\" ? (n) => Object.keys(n) : (n) => {\n const s = [];\n for (const o in n)\n Object.prototype.hasOwnProperty.call(n, o) && s.push(o);\n return s;\n }, r.find = (n, s) => {\n for (const o of n)\n if (s(o))\n return o;\n }, r.isInteger = typeof Number.isInteger == \"function\" ? (n) => Number.isInteger(n) : (n) => typeof n == \"number\" && isFinite(n) && Math.floor(n) === n;\n function i(n, s = \" | \") {\n return n.map((o) => typeof o == \"string\" ? `'${o}'` : o).join(s);\n }\n r.joinValues = i, r.jsonStringifyReplacer = (n, s) => typeof s == \"bigint\" ? s.toString() : s;\n})(J || (J = {}));\nvar xi;\n(function(r) {\n r.mergeShapes = (t, e) => ({\n ...t,\n ...e\n // second overwrites first\n });\n})(xi || (xi = {}));\nconst O = J.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\"\n]), Yt = (r) => {\n switch (typeof r) {\n case \"undefined\":\n return O.undefined;\n case \"string\":\n return O.string;\n case \"number\":\n return isNaN(r) ? O.nan : O.number;\n case \"boolean\":\n return O.boolean;\n case \"function\":\n return O.function;\n case \"bigint\":\n return O.bigint;\n case \"symbol\":\n return O.symbol;\n case \"object\":\n return Array.isArray(r) ? O.array : r === null ? O.null : r.then && typeof r.then == \"function\" && r.catch && typeof r.catch == \"function\" ? O.promise : typeof Map < \"u\" && r instanceof Map ? O.map : typeof Set < \"u\" && r instanceof Set ? O.set : typeof Date < \"u\" && r instanceof Date ? O.date : O.object;\n default:\n return O.unknown;\n }\n}, P = J.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\"\n]), ko = (r) => JSON.stringify(r, null, 2).replace(/\"([^\"]+)\":/g, \"$1:\");\nclass Pt extends Error {\n constructor(t) {\n super(), this.issues = [], this.addIssue = (i) => {\n this.issues = [...this.issues, i];\n }, this.addIssues = (i = []) => {\n this.issues = [...this.issues, ...i];\n };\n const e = new.target.prototype;\n Object.setPrototypeOf ? Object.setPrototypeOf(this, e) : this.__proto__ = e, this.name = \"ZodError\", this.issues = t;\n }\n get errors() {\n return this.issues;\n }\n format(t) {\n const e = t || function(s) {\n return s.message;\n }, i = { _errors: [] }, n = (s) => {\n for (const o of s.issues)\n if (o.code === \"invalid_union\")\n o.unionErrors.map(n);\n else if (o.code === \"invalid_return_type\")\n n(o.returnTypeError);\n else if (o.code === \"invalid_arguments\")\n n(o.argumentsError);\n else if (o.path.length === 0)\n i._errors.push(e(o));\n else {\n let a = i, h = 0;\n for (; h < o.path.length; ) {\n const c = o.path[h];\n h === o.path.length - 1 ? (a[c] = a[c] || { _errors: [] }, a[c]._errors.push(e(o))) : a[c] = a[c] || { _errors: [] }, a = a[c], h++;\n }\n }\n };\n return n(this), i;\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, J.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(t = (e) => e.message) {\n const e = {}, i = [];\n for (const n of this.issues)\n n.path.length > 0 ? (e[n.path[0]] = e[n.path[0]] || [], e[n.path[0]].push(t(n))) : i.push(t(n));\n return { formErrors: i, fieldErrors: e };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nPt.create = (r) => new Pt(r);\nconst Re = (r, t) => {\n let e;\n switch (r.code) {\n case P.invalid_type:\n r.received === O.undefined ? e = \"Required\" : e = `Expected ${r.expected}, received ${r.received}`;\n break;\n case P.invalid_literal:\n e = `Invalid literal value, expected ${JSON.stringify(r.expected, J.jsonStringifyReplacer)}`;\n break;\n case P.unrecognized_keys:\n e = `Unrecognized key(s) in object: ${J.joinValues(r.keys, \", \")}`;\n break;\n case P.invalid_union:\n e = \"Invalid input\";\n break;\n case P.invalid_union_discriminator:\n e = `Invalid discriminator value. Expected ${J.joinValues(r.options)}`;\n break;\n case P.invalid_enum_value:\n e = `Invalid enum value. Expected ${J.joinValues(r.options)}, received '${r.received}'`;\n break;\n case P.invalid_arguments:\n e = \"Invalid function arguments\";\n break;\n case P.invalid_return_type:\n e = \"Invalid function return type\";\n break;\n case P.invalid_date:\n e = \"Invalid date\";\n break;\n case P.invalid_string:\n typeof r.validation == \"object\" ? \"includes\" in r.validation ? (e = `Invalid input: must include \"${r.validation.includes}\"`, typeof r.validation.position == \"number\" && (e = `${e} at one or more positions greater than or equal to ${r.validation.position}`)) : \"startsWith\" in r.validation ? e = `Invalid input: must start with \"${r.validation.startsWith}\"` : \"endsWith\" in r.validation ? e = `Invalid input: must end with \"${r.validation.endsWith}\"` : J.assertNever(r.validation) : r.validation !== \"regex\" ? e = `Invalid ${r.validation}` : e = \"Invalid\";\n break;\n case P.too_small:\n r.type === \"array\" ? e = `Array must contain ${r.exact ? \"exactly\" : r.inclusive ? \"at least\" : \"more than\"} ${r.minimum} element(s)` : r.type === \"string\" ? e = `String must contain ${r.exact ? \"exactly\" : r.inclusive ? \"at least\" : \"over\"} ${r.minimum} character(s)` : r.type === \"number\" ? e = `Number must be ${r.exact ? \"exactly equal to \" : r.inclusive ? \"greater than or equal to \" : \"greater than \"}${r.minimum}` : r.type === \"date\" ? e = `Date must be ${r.exact ? \"exactly equal to \" : r.inclusive ? \"greater than or equal to \" : \"greater than \"}${new Date(Number(r.minimum))}` : e = \"Invalid input\";\n break;\n case P.too_big:\n r.type === \"array\" ? e = `Array must contain ${r.exact ? \"exactly\" : r.inclusive ? \"at most\" : \"less than\"} ${r.maximum} element(s)` : r.type === \"string\" ? e = `String must contain ${r.exact ? \"exactly\" : r.inclusive ? \"at most\" : \"under\"} ${r.maximum} character(s)` : r.type === \"number\" ? e = `Number must be ${r.exact ? \"exactly\" : r.inclusive ? \"less than or equal to\" : \"less than\"} ${r.maximum}` : r.type === \"bigint\" ? e = `BigInt must be ${r.exact ? \"exactly\" : r.inclusive ? \"less than or equal to\" : \"less than\"} ${r.maximum}` : r.type === \"date\" ? e = `Date must be ${r.exact ? \"exactly\" : r.inclusive ? \"smaller than or equal to\" : \"smaller than\"} ${new Date(Number(r.maximum))}` : e = \"Invalid input\";\n break;\n case P.custom:\n e = \"Invalid input\";\n break;\n case P.invalid_intersection_types:\n e = \"Intersection results could not be merged\";\n break;\n case P.not_multiple_of:\n e = `Number must be a multiple of ${r.multipleOf}`;\n break;\n case P.not_finite:\n e = \"Number must be finite\";\n break;\n default:\n e = t.defaultError, J.assertNever(r);\n }\n return { message: e };\n};\nlet Zn = Re;\nfunction Oo(r) {\n Zn = r;\n}\nfunction Er() {\n return Zn;\n}\nconst Ir = (r) => {\n const { data: t, path: e, errorMaps: i, issueData: n } = r, s = [...e, ...n.path || []], o = {\n ...n,\n path: s\n };\n let a = \"\";\n const h = i.filter((c) => !!c).slice().reverse();\n for (const c of h)\n a = c(o, { data: t, defaultError: a }).message;\n return {\n ...n,\n path: s,\n message: n.message || a\n };\n}, No = [];\nfunction N(r, t) {\n const e = Ir({\n issueData: t,\n data: r.data,\n path: r.path,\n errorMaps: [\n r.common.contextualErrorMap,\n r.schemaErrorMap,\n Er(),\n Re\n // then globalThis default map\n ].filter((i) => !!i)\n });\n r.common.issues.push(e);\n}\nclass ut {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n this.value === \"valid\" && (this.value = \"dirty\");\n }\n abort() {\n this.value !== \"aborted\" && (this.value = \"aborted\");\n }\n static mergeArray(t, e) {\n const i = [];\n for (const n of e) {\n if (n.status === \"aborted\")\n return D;\n n.status === \"dirty\" && t.dirty(), i.push(n.value);\n }\n return { status: t.value, value: i };\n }\n static async mergeObjectAsync(t, e) {\n const i = [];\n for (const n of e)\n i.push({\n key: await n.key,\n value: await n.value\n });\n return ut.mergeObjectSync(t, i);\n }\n static mergeObjectSync(t, e) {\n const i = {};\n for (const n of e) {\n const { key: s, value: o } = n;\n if (s.status === \"aborted\" || o.status === \"aborted\")\n return D;\n s.status === \"dirty\" && t.dirty(), o.status === \"dirty\" && t.dirty(), s.value !== \"__proto__\" && (typeof o.value < \"u\" || n.alwaysSet) && (i[s.value] = o.value);\n }\n return { status: t.value, value: i };\n }\n}\nconst D = Object.freeze({\n status: \"aborted\"\n}), $n = (r) => ({ status: \"dirty\", value: r }), mt = (r) => ({ status: \"valid\", value: r }), Ti = (r) => r.status === \"aborted\", bi = (r) => r.status === \"dirty\", ke = (r) => r.status === \"valid\", Sr = (r) => typeof Promise < \"u\" && r instanceof Promise;\nvar j;\n(function(r) {\n r.errToObj = (t) => typeof t == \"string\" ? { message: t } : t || {}, r.toString = (t) => typeof t == \"string\" ? t : t?.message;\n})(j || (j = {}));\nclass Ot {\n constructor(t, e, i, n) {\n this._cachedPath = [], this.parent = t, this.data = e, this._path = i, this._key = n;\n }\n get path() {\n return this._cachedPath.length || (this._key instanceof Array ? this._cachedPath.push(...this._path, ...this._key) : this._cachedPath.push(...this._path, this._key)), this._cachedPath;\n }\n}\nconst on = (r, t) => {\n if (ke(t))\n return { success: !0, data: t.value };\n if (!r.common.issues.length)\n throw new Error(\"Validation failed but no issues detected.\");\n return {\n success: !1,\n get error() {\n if (this._error)\n return this._error;\n const e = new Pt(r.common.issues);\n return this._error = e, this._error;\n }\n };\n};\nfunction F(r) {\n if (!r)\n return {};\n const { errorMap: t, invalid_type_error: e, required_error: i, description: n } = r;\n if (t && (e || i))\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n return t ? { errorMap: t, description: n } : { errorMap: (o, a) => o.code !== \"invalid_type\" ? { message: a.defaultError } : typeof a.data > \"u\" ? { message: i ?? a.defaultError } : { message: e ?? a.defaultError }, description: n };\n}\nclass W {\n constructor(t) {\n this.spa = this.safeParseAsync, this._def = t, this.parse = this.parse.bind(this), this.safeParse = this.safeParse.bind(this), this.parseAsync = this.parseAsync.bind(this), this.safeParseAsync = this.safeParseAsync.bind(this), this.spa = this.spa.bind(this), this.refine = this.refine.bind(this), this.refinement = this.refinement.bind(this), this.superRefine = this.superRefine.bind(this), this.optional = this.optional.bind(this), this.nullable = this.nullable.bind(this), this.nullish = this.nullish.bind(this), this.array = this.array.bind(this), this.promise = this.promise.bind(this), this.or = this.or.bind(this), this.and = this.and.bind(this), this.transform = this.transform.bind(this), this.brand = this.brand.bind(this), this.default = this.default.bind(this), this.catch = this.catch.bind(this), this.describe = this.describe.bind(this), this.pipe = this.pipe.bind(this), this.readonly = this.readonly.bind(this), this.isNullable = this.isNullable.bind(this), this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(t) {\n return Yt(t.data);\n }\n _getOrReturnCtx(t, e) {\n return e || {\n common: t.parent.common,\n data: t.data,\n parsedType: Yt(t.data),\n schemaErrorMap: this._def.errorMap,\n path: t.path,\n parent: t.parent\n };\n }\n _processInputParams(t) {\n return {\n status: new ut(),\n ctx: {\n common: t.parent.common,\n data: t.data,\n parsedType: Yt(t.data),\n schemaErrorMap: this._def.errorMap,\n path: t.path,\n parent: t.parent\n }\n };\n }\n _parseSync(t) {\n const e = this._parse(t);\n if (Sr(e))\n throw new Error(\"Synchronous parse encountered promise.\");\n return e;\n }\n _parseAsync(t) {\n const e = this._parse(t);\n return Promise.resolve(e);\n }\n parse(t, e) {\n const i = this.safeParse(t, e);\n if (i.success)\n return i.data;\n throw i.error;\n }\n safeParse(t, e) {\n var i;\n const n = {\n common: {\n issues: [],\n async: (i = e?.async) !== null && i !== void 0 ? i : !1,\n contextualErrorMap: e?.errorMap\n },\n path: e?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data: t,\n parsedType: Yt(t)\n }, s = this._parseSync({ data: t, path: n.path, parent: n });\n return on(n, s);\n }\n async parseAsync(t, e) {\n const i = await this.safeParseAsync(t, e);\n if (i.success)\n return i.data;\n throw i.error;\n }\n async safeParseAsync(t, e) {\n const i = {\n common: {\n issues: [],\n contextualErrorMap: e?.errorMap,\n async: !0\n },\n path: e?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data: t,\n parsedType: Yt(t)\n }, n = this._parse({ data: t, path: i.path, parent: i }), s = await (Sr(n) ? n : Promise.resolve(n));\n return on(i, s);\n }\n refine(t, e) {\n const i = (n) => typeof e == \"string\" || typeof e > \"u\" ? { message: e } : typeof e == \"function\" ? e(n) : e;\n return this._refinement((n, s) => {\n const o = t(n), a = () => s.addIssue({\n code: P.custom,\n ...i(n)\n });\n return typeof Promise < \"u\" && o instanceof Promise ? o.then((h) => h ? !0 : (a(), !1)) : o ? !0 : (a(), !1);\n });\n }\n refinement(t, e) {\n return this._refinement((i, n) => t(i) ? !0 : (n.addIssue(typeof e == \"function\" ? e(i, n) : e), !1));\n }\n _refinement(t) {\n return new Rt({\n schema: this,\n typeName: B.ZodEffects,\n effect: { type: \"refinement\", refinement: t }\n });\n }\n superRefine(t) {\n return this._refinement(t);\n }\n optional() {\n return $t.create(this, this._def);\n }\n nullable() {\n return se.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return Ct.create(this, this._def);\n }\n promise() {\n return ye.create(this, this._def);\n }\n or(t) {\n return je.create([this, t], this._def);\n }\n and(t) {\n return Be.create(this, t, this._def);\n }\n transform(t) {\n return new Rt({\n ...F(this._def),\n schema: this,\n typeName: B.ZodEffects,\n effect: { type: \"transform\", transform: t }\n });\n }\n default(t) {\n const e = typeof t == \"function\" ? t : () => t;\n return new We({\n ...F(this._def),\n innerType: this,\n defaultValue: e,\n typeName: B.ZodDefault\n });\n }\n brand() {\n return new Xn({\n typeName: B.ZodBranded,\n type: this,\n ...F(this._def)\n });\n }\n catch(t) {\n const e = typeof t == \"function\" ? t : () => t;\n return new Rr({\n ...F(this._def),\n innerType: this,\n catchValue: e,\n typeName: B.ZodCatch\n });\n }\n describe(t) {\n const e = this.constructor;\n return new e({\n ...this._def,\n description: t\n });\n }\n pipe(t) {\n return qe.create(this, t);\n }\n readonly() {\n return Or.create(this);\n }\n isOptional() {\n return this.safeParse(void 0).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst Lo = /^c[^\\s-]{8,}$/i, jo = /^[a-z][a-z0-9]*$/, Bo = /^[0-9A-HJKMNP-TV-Z]{26}$/, Do = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i, Go = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_+-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i, Fo = \"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\";\nlet oi;\nconst Uo = /^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/, Wo = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/, Vo = (r) => r.precision ? r.offset ? new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${r.precision}}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`) : new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${r.precision}}Z$`) : r.precision === 0 ? r.offset ? new RegExp(\"^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$\") : new RegExp(\"^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}Z$\") : r.offset ? new RegExp(\"^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$\") : new RegExp(\"^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?Z$\");\nfunction zo(r, t) {\n return !!((t === \"v4\" || !t) && Uo.test(r) || (t === \"v6\" || !t) && Wo.test(r));\n}\nclass St extends W {\n _parse(t) {\n if (this._def.coerce && (t.data = String(t.data)), this._getType(t) !== O.string) {\n const s = this._getOrReturnCtx(t);\n return N(\n s,\n {\n code: P.invalid_type,\n expected: O.string,\n received: s.parsedType\n }\n //\n ), D;\n }\n const i = new ut();\n let n;\n for (const s of this._def.checks)\n if (s.kind === \"min\")\n t.data.length < s.value && (n = this._getOrReturnCtx(t, n), N(n, {\n code: P.too_small,\n minimum: s.value,\n type: \"string\",\n inclusive: !0,\n exact: !1,\n message: s.message\n }), i.dirty());\n else if (s.kind === \"max\")\n t.data.length > s.value && (n = this._getOrReturnCtx(t, n), N(n, {\n code: P.too_big,\n maximum: s.value,\n type: \"string\",\n inclusive: !0,\n exact: !1,\n message: s.message\n }), i.dirty());\n else if (s.kind === \"length\") {\n const o = t.data.length > s.value, a = t.data.length < s.value;\n (o || a) && (n = this._getOrReturnCtx(t, n), o ? N(n, {\n code: P.too_big,\n maximum: s.value,\n type: \"string\",\n inclusive: !0,\n exact: !0,\n message: s.message\n }) : a && N(n, {\n code: P.too_small,\n minimum: s.value,\n type: \"string\",\n inclusive: !0,\n exact: !0,\n message: s.message\n }), i.dirty());\n } else if (s.kind === \"email\")\n Go.test(t.data) || (n = this._getOrReturnCtx(t, n), N(n, {\n validation: \"email\",\n code: P.invalid_string,\n message: s.message\n }), i.dirty());\n else if (s.kind === \"emoji\")\n oi || (oi = new RegExp(Fo, \"u\")), oi.test(t.data) || (n = this._getOrReturnCtx(t, n), N(n, {\n validation: \"emoji\",\n code: P.invalid_string,\n message: s.message\n }), i.dirty());\n else if (s.kind === \"uuid\")\n Do.test(t.data) || (n = this._getOrReturnCtx(t, n), N(n, {\n validation: \"uuid\",\n code: P.invalid_string,\n message: s.message\n }), i.dirty());\n else if (s.kind === \"cuid\")\n Lo.test(t.data) || (n = this._getOrReturnCtx(t, n), N(n, {\n validation: \"cuid\",\n code: P.invalid_string,\n message: s.message\n }), i.dirty());\n else if (s.kind === \"cuid2\")\n jo.test(t.data) || (n = this._getOrReturnCtx(t, n), N(n, {\n validation: \"cuid2\",\n code: P.invalid_string,\n message: s.message\n }), i.dirty());\n else if (s.kind === \"ulid\")\n Bo.test(t.data) || (n = this._getOrReturnCtx(t, n), N(n, {\n validation: \"ulid\",\n code: P.invalid_string,\n message: s.message\n }), i.dirty());\n else if (s.kind === \"url\")\n try {\n new URL(t.data);\n } catch {\n n = this._getOrReturnCtx(t, n), N(n, {\n validation: \"url\",\n code: P.invalid_string,\n message: s.message\n }), i.dirty();\n }\n else\n s.kind === \"regex\" ? (s.regex.lastIndex = 0, s.regex.test(t.data) || (n = this._getOrReturnCtx(t, n), N(n, {\n validation: \"regex\",\n code: P.invalid_string,\n message: s.message\n }), i.dirty())) : s.kind === \"trim\" ? t.data = t.data.trim() : s.kind === \"includes\" ? t.data.includes(s.value, s.position) || (n = this._getOrReturnCtx(t, n), N(n, {\n code: P.invalid_string,\n validation: { includes: s.value, position: s.position },\n message: s.message\n }), i.dirty()) : s.kind === \"toLowerCase\" ? t.data = t.data.toLowerCase() : s.kind === \"toUpperCase\" ? t.data = t.data.toUpperCase() : s.kind === \"startsWith\" ? t.data.startsWith(s.value) || (n = this._getOrReturnCtx(t, n), N(n, {\n code: P.invalid_string,\n validation: { startsWith: s.value },\n message: s.message\n }), i.dirty()) : s.kind === \"endsWith\" ? t.data.endsWith(s.value) || (n = this._getOrReturnCtx(t, n), N(n, {\n code: P.invalid_string,\n validation: { endsWith: s.value },\n message: s.message\n }), i.dirty()) : s.kind === \"datetime\" ? Vo(s).test(t.data) || (n = this._getOrReturnCtx(t, n), N(n, {\n code: P.invalid_string,\n validation: \"datetime\",\n message: s.message\n }), i.dirty()) : s.kind === \"ip\" ? zo(t.data, s.version) || (n = this._getOrReturnCtx(t, n), N(n, {\n validation: \"ip\",\n code: P.invalid_string,\n message: s.message\n }), i.dirty()) : J.assertNever(s);\n return { status: i.value, value: t.data };\n }\n _regex(t, e, i) {\n return this.refinement((n) => t.test(n), {\n validation: e,\n code: P.invalid_string,\n ...j.errToObj(i)\n });\n }\n _addCheck(t) {\n return new St({\n ...this._def,\n checks: [...this._def.checks, t]\n });\n }\n email(t) {\n return this._addCheck({ kind: \"email\", ...j.errToObj(t) });\n }\n url(t) {\n return this._addCheck({ kind: \"url\", ...j.errToObj(t) });\n }\n emoji(t) {\n return this._addCheck({ kind: \"emoji\", ...j.errToObj(t) });\n }\n uuid(t) {\n return this._addCheck({ kind: \"uuid\", ...j.errToObj(t) });\n }\n cuid(t) {\n return this._addCheck({ kind: \"cuid\", ...j.errToObj(t) });\n }\n cuid2(t) {\n return this._addCheck({ kind: \"cuid2\", ...j.errToObj(t) });\n }\n ulid(t) {\n return this._addCheck({ kind: \"ulid\", ...j.errToObj(t) });\n }\n ip(t) {\n return this._addCheck({ kind: \"ip\", ...j.errToObj(t) });\n }\n datetime(t) {\n var e;\n return typeof t == \"string\" ? this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: !1,\n message: t\n }) : this._addCheck({\n kind: \"datetime\",\n precision: typeof t?.precision > \"u\" ? null : t?.precision,\n offset: (e = t?.offset) !== null && e !== void 0 ? e : !1,\n ...j.errToObj(t?.message)\n });\n }\n regex(t, e) {\n return this._addCheck({\n kind: \"regex\",\n regex: t,\n ...j.errToObj(e)\n });\n }\n includes(t, e) {\n return this._addCheck({\n kind: \"includes\",\n value: t,\n position: e?.position,\n ...j.errToObj(e?.message)\n });\n }\n startsWith(t, e) {\n return this._addCheck({\n kind: \"startsWith\",\n value: t,\n ...j.errToObj(e)\n });\n }\n endsWith(t, e) {\n return this._addCheck({\n kind: \"endsWith\",\n value: t,\n ...j.errToObj(e)\n });\n }\n min(t, e) {\n return this._addCheck({\n kind: \"min\",\n value: t,\n ...j.errToObj(e)\n });\n }\n max(t, e) {\n return this._addCheck({\n kind: \"max\",\n value: t,\n ...j.errToObj(e)\n });\n }\n length(t, e) {\n return this._addCheck({\n kind: \"length\",\n value: t,\n ...j.errToObj(e)\n });\n }\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n nonempty(t) {\n return this.min(1, j.errToObj(t));\n }\n trim() {\n return new St({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }]\n });\n }\n toLowerCase() {\n return new St({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }]\n });\n }\n toUpperCase() {\n return new St({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }]\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((t) => t.kind === \"datetime\");\n }\n get isEmail() {\n return !!this._def.checks.find((t) => t.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((t) => t.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((t) => t.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((t) => t.kind === \"uuid\");\n }\n get isCUID() {\n return !!this._def.checks.find((t) => t.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((t) => t.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((t) => t.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((t) => t.kind === \"ip\");\n }\n get minLength() {\n let t = null;\n for (const e of this._def.checks)\n e.kind === \"min\" && (t === null || e.value > t) && (t = e.value);\n return t;\n }\n get maxLength() {\n let t = null;\n for (const e of this._def.checks)\n e.kind === \"max\" && (t === null || e.value < t) && (t = e.value);\n return t;\n }\n}\nSt.create = (r) => {\n var t;\n return new St({\n checks: [],\n typeName: B.ZodString,\n coerce: (t = r?.coerce) !== null && t !== void 0 ? t : !1,\n ...F(r)\n });\n};\nfunction Zo(r, t) {\n const e = (r.toString().split(\".\")[1] || \"\").length, i = (t.toString().split(\".\")[1] || \"\").length, n = e > i ? e : i, s = parseInt(r.toFixed(n).replace(\".\", \"\")), o = parseInt(t.toFixed(n).replace(\".\", \"\"));\n return s % o / Math.pow(10, n);\n}\nclass Jt extends W {\n constructor() {\n super(...arguments), this.min = this.gte, this.max = this.lte, this.step = this.multipleOf;\n }\n _parse(t) {\n if (this._def.coerce && (t.data = Number(t.data)), this._getType(t) !== O.number) {\n const s = this._getOrReturnCtx(t);\n return N(s, {\n code: P.invalid_type,\n expected: O.number,\n received: s.parsedType\n }), D;\n }\n let i;\n const n = new ut();\n for (const s of this._def.checks)\n s.kind === \"int\" ? J.isInteger(t.data) || (i = this._getOrReturnCtx(t, i), N(i, {\n code: P.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: s.message\n }), n.dirty()) : s.kind === \"min\" ? (s.inclusive ? t.data < s.value : t.data <= s.value) && (i = this._getOrReturnCtx(t, i), N(i, {\n code: P.too_small,\n minimum: s.value,\n type: \"number\",\n inclusive: s.inclusive,\n exact: !1,\n message: s.message\n }), n.dirty()) : s.kind === \"max\" ? (s.inclusive ? t.data > s.value : t.data >= s.value) && (i = this._getOrReturnCtx(t, i), N(i, {\n code: P.too_big,\n maximum: s.value,\n type: \"number\",\n inclusive: s.inclusive,\n exact: !1,\n message: s.message\n }), n.dirty()) : s.kind === \"multipleOf\" ? Zo(t.data, s.value) !== 0 && (i = this._getOrReturnCtx(t, i), N(i, {\n code: P.not_multiple_of,\n multipleOf: s.value,\n message: s.message\n }), n.dirty()) : s.kind === \"finite\" ? Number.isFinite(t.data) || (i = this._getOrReturnCtx(t, i), N(i, {\n code: P.not_finite,\n message: s.message\n }), n.dirty()) : J.assertNever(s);\n return { status: n.value, value: t.data };\n }\n gte(t, e) {\n return this.setLimit(\"min\", t, !0, j.toString(e));\n }\n gt(t, e) {\n return this.setLimit(\"min\", t, !1, j.toString(e));\n }\n lte(t, e) {\n return this.setLimit(\"max\", t, !0, j.toString(e));\n }\n lt(t, e) {\n return this.setLimit(\"max\", t, !1, j.toString(e));\n }\n setLimit(t, e, i, n) {\n return new Jt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind: t,\n value: e,\n inclusive: i,\n message: j.toString(n)\n }\n ]\n });\n }\n _addCheck(t) {\n return new Jt({\n ...this._def,\n checks: [...this._def.checks, t]\n });\n }\n int(t) {\n return this._addCheck({\n kind: \"int\",\n message: j.toString(t)\n });\n }\n positive(t) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: !1,\n message: j.toString(t)\n });\n }\n negative(t) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: !1,\n message: j.toString(t)\n });\n }\n nonpositive(t) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: !0,\n message: j.toString(t)\n });\n }\n nonnegative(t) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: !0,\n message: j.toString(t)\n });\n }\n multipleOf(t, e) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: t,\n message: j.toString(e)\n });\n }\n finite(t) {\n return this._addCheck({\n kind: \"finite\",\n message: j.toString(t)\n });\n }\n safe(t) {\n return this._addCheck({\n kind: \"min\",\n inclusive: !0,\n value: Number.MIN_SAFE_INTEGER,\n message: j.toString(t)\n })._addCheck({\n kind: \"max\",\n inclusive: !0,\n value: Number.MAX_SAFE_INTEGER,\n message: j.toString(t)\n });\n }\n get minValue() {\n let t = null;\n for (const e of this._def.checks)\n e.kind === \"min\" && (t === null || e.value > t) && (t = e.value);\n return t;\n }\n get maxValue() {\n let t = null;\n for (const e of this._def.checks)\n e.kind === \"max\" && (t === null || e.value < t) && (t = e.value);\n return t;\n }\n get isInt() {\n return !!this._def.checks.find((t) => t.kind === \"int\" || t.kind === \"multipleOf\" && J.isInteger(t.value));\n }\n get isFinite() {\n let t = null, e = null;\n for (const i of this._def.checks) {\n if (i.kind === \"finite\" || i.kind === \"int\" || i.kind === \"multipleOf\")\n return !0;\n i.kind === \"min\" ? (e === null || i.value > e) && (e = i.value) : i.kind === \"max\" && (t === null || i.value < t) && (t = i.value);\n }\n return Number.isFinite(e) && Number.isFinite(t);\n }\n}\nJt.create = (r) => new Jt({\n checks: [],\n typeName: B.ZodNumber,\n coerce: r?.coerce || !1,\n ...F(r)\n});\nclass Kt extends W {\n constructor() {\n super(...arguments), this.min = this.gte, this.max = this.lte;\n }\n _parse(t) {\n if (this._def.coerce && (t.data = BigInt(t.data)), this._getType(t) !== O.bigint) {\n const s = this._getOrReturnCtx(t);\n return N(s, {\n code: P.invalid_type,\n expected: O.bigint,\n received: s.parsedType\n }), D;\n }\n let i;\n const n = new ut();\n for (const s of this._def.checks)\n s.kind === \"min\" ? (s.inclusive ? t.data < s.value : t.data <= s.value) && (i = this._getOrReturnCtx(t, i), N(i, {\n code: P.too_small,\n type: \"bigint\",\n minimum: s.value,\n inclusive: s.inclusive,\n message: s.message\n }), n.dirty()) : s.kind === \"max\" ? (s.inclusive ? t.data > s.value : t.data >= s.value) && (i = this._getOrReturnCtx(t, i), N(i, {\n code: P.too_big,\n type: \"bigint\",\n maximum: s.value,\n inclusive: s.inclusive,\n message: s.message\n }), n.dirty()) : s.kind === \"multipleOf\" ? t.data % s.value !== BigInt(0) && (i = this._getOrReturnCtx(t, i), N(i, {\n code: P.not_multiple_of,\n multipleOf: s.value,\n message: s.message\n }), n.dirty()) : J.assertNever(s);\n return { status: n.value, value: t.data };\n }\n gte(t, e) {\n return this.setLimit(\"min\", t, !0, j.toString(e));\n }\n gt(t, e) {\n return this.setLimit(\"min\", t, !1, j.toString(e));\n }\n lte(t, e) {\n return this.setLimit(\"max\", t, !0, j.toString(e));\n }\n lt(t, e) {\n return this.setLimit(\"max\", t, !1, j.toString(e));\n }\n setLimit(t, e, i, n) {\n return new Kt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind: t,\n value: e,\n inclusive: i,\n message: j.toString(n)\n }\n ]\n });\n }\n _addCheck(t) {\n return new Kt({\n ...this._def,\n checks: [...this._def.checks, t]\n });\n }\n positive(t) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: !1,\n message: j.toString(t)\n });\n }\n negative(t) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: !1,\n message: j.toString(t)\n });\n }\n nonpositive(t) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: !0,\n message: j.toString(t)\n });\n }\n nonnegative(t) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: !0,\n message: j.toString(t)\n });\n }\n multipleOf(t, e) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: t,\n message: j.toString(e)\n });\n }\n get minValue() {\n let t = null;\n for (const e of this._def.checks)\n e.kind === \"min\" && (t === null || e.value > t) && (t = e.value);\n return t;\n }\n get maxValue() {\n let t = null;\n for (const e of this._def.checks)\n e.kind === \"max\" && (t === null || e.value < t) && (t = e.value);\n return t;\n }\n}\nKt.create = (r) => {\n var t;\n return new Kt({\n checks: [],\n typeName: B.ZodBigInt,\n coerce: (t = r?.coerce) !== null && t !== void 0 ? t : !1,\n ...F(r)\n });\n};\nclass Oe extends W {\n _parse(t) {\n if (this._def.coerce && (t.data = !!t.data), this._getType(t) !== O.boolean) {\n const i = this._getOrReturnCtx(t);\n return N(i, {\n code: P.invalid_type,\n expected: O.boolean,\n received: i.parsedType\n }), D;\n }\n return mt(t.data);\n }\n}\nOe.create = (r) => new Oe({\n typeName: B.ZodBoolean,\n coerce: r?.coerce || !1,\n ...F(r)\n});\nclass ie extends W {\n _parse(t) {\n if (this._def.coerce && (t.data = new Date(t.data)), this._getType(t) !== O.date) {\n const s = this._getOrReturnCtx(t);\n return N(s, {\n code: P.invalid_type,\n expected: O.date,\n received: s.parsedType\n }), D;\n }\n if (isNaN(t.data.getTime())) {\n const s = this._getOrReturnCtx(t);\n return N(s, {\n code: P.invalid_date\n }), D;\n }\n const i = new ut();\n let n;\n for (const s of this._def.checks)\n s.kind === \"min\" ? t.data.getTime() < s.value && (n = this._getOrReturnCtx(t, n), N(n, {\n code: P.too_small,\n message: s.message,\n inclusive: !0,\n exact: !1,\n minimum: s.value,\n type: \"date\"\n }), i.dirty()) : s.kind === \"max\" ? t.data.getTime() > s.value && (n = this._getOrReturnCtx(t, n), N(n, {\n code: P.too_big,\n message: s.message,\n inclusive: !0,\n exact: !1,\n maximum: s.value,\n type: \"date\"\n }), i.dirty()) : J.assertNever(s);\n return {\n status: i.value,\n value: new Date(t.data.getTime())\n };\n }\n _addCheck(t) {\n return new ie({\n ...this._def,\n checks: [...this._def.checks, t]\n });\n }\n min(t, e) {\n return this._addCheck({\n kind: \"min\",\n value: t.getTime(),\n message: j.toString(e)\n });\n }\n max(t, e) {\n return this._addCheck({\n kind: \"max\",\n value: t.getTime(),\n message: j.toString(e)\n });\n }\n get minDate() {\n let t = null;\n for (const e of this._def.checks)\n e.kind === \"min\" && (t === null || e.value > t) && (t = e.value);\n return t != null ? new Date(t) : null;\n }\n get maxDate() {\n let t = null;\n for (const e of this._def.checks)\n e.kind === \"max\" && (t === null || e.value < t) && (t = e.value);\n return t != null ? new Date(t) : null;\n }\n}\nie.create = (r) => new ie({\n checks: [],\n coerce: r?.coerce || !1,\n typeName: B.ZodDate,\n ...F(r)\n});\nclass Ar extends W {\n _parse(t) {\n if (this._getType(t) !== O.symbol) {\n const i = this._getOrReturnCtx(t);\n return N(i, {\n code: P.invalid_type,\n expected: O.symbol,\n received: i.parsedType\n }), D;\n }\n return mt(t.data);\n }\n}\nAr.create = (r) => new Ar({\n typeName: B.ZodSymbol,\n ...F(r)\n});\nclass Ne extends W {\n _parse(t) {\n if (this._getType(t) !== O.undefined) {\n const i = this._getOrReturnCtx(t);\n return N(i, {\n code: P.invalid_type,\n expected: O.undefined,\n received: i.parsedType\n }), D;\n }\n return mt(t.data);\n }\n}\nNe.create = (r) => new Ne({\n typeName: B.ZodUndefined,\n ...F(r)\n});\nclass Le extends W {\n _parse(t) {\n if (this._getType(t) !== O.null) {\n const i = this._getOrReturnCtx(t);\n return N(i, {\n code: P.invalid_type,\n expected: O.null,\n received: i.parsedType\n }), D;\n }\n return mt(t.data);\n }\n}\nLe.create = (r) => new Le({\n typeName: B.ZodNull,\n ...F(r)\n});\nclass me extends W {\n constructor() {\n super(...arguments), this._any = !0;\n }\n _parse(t) {\n return mt(t.data);\n }\n}\nme.create = (r) => new me({\n typeName: B.ZodAny,\n ...F(r)\n});\nclass re extends W {\n constructor() {\n super(...arguments), this._unknown = !0;\n }\n _parse(t) {\n return mt(t.data);\n }\n}\nre.create = (r) => new re({\n typeName: B.ZodUnknown,\n ...F(r)\n});\nclass qt extends W {\n _parse(t) {\n const e = this._getOrReturnCtx(t);\n return N(e, {\n code: P.invalid_type,\n expected: O.never,\n received: e.parsedType\n }), D;\n }\n}\nqt.create = (r) => new qt({\n typeName: B.ZodNever,\n ...F(r)\n});\nclass Pr extends W {\n _parse(t) {\n if (this._getType(t) !== O.undefined) {\n const i = this._getOrReturnCtx(t);\n return N(i, {\n code: P.invalid_type,\n expected: O.void,\n received: i.parsedType\n }), D;\n }\n return mt(t.data);\n }\n}\nPr.create = (r) => new Pr({\n typeName: B.ZodVoid,\n ...F(r)\n});\nclass Ct extends W {\n _parse(t) {\n const { ctx: e, status: i } = this._processInputParams(t), n = this._def;\n if (e.parsedType !== O.array)\n return N(e, {\n code: P.invalid_type,\n expected: O.array,\n received: e.parsedType\n }), D;\n if (n.exactLength !== null) {\n const o = e.data.length > n.exactLength.value, a = e.data.length < n.exactLength.value;\n (o || a) && (N(e, {\n code: o ? P.too_big : P.too_small,\n minimum: a ? n.exactLength.value : void 0,\n maximum: o ? n.exactLength.value : void 0,\n type: \"array\",\n inclusive: !0,\n exact: !0,\n message: n.exactLength.message\n }), i.dirty());\n }\n if (n.minLength !== null && e.data.length < n.minLength.value && (N(e, {\n code: P.too_small,\n minimum: n.minLength.value,\n type: \"array\",\n inclusive: !0,\n exact: !1,\n message: n.minLength.message\n }), i.dirty()), n.maxLength !== null && e.data.length > n.maxLength.value && (N(e, {\n code: P.too_big,\n maximum: n.maxLength.value,\n type: \"array\",\n inclusive: !0,\n exact: !1,\n message: n.maxLength.message\n }), i.dirty()), e.common.async)\n return Promise.all([...e.data].map((o, a) => n.type._parseAsync(new Ot(e, o, e.path, a)))).then((o) => ut.mergeArray(i, o));\n const s = [...e.data].map((o, a) => n.type._parseSync(new Ot(e, o, e.path, a)));\n return ut.mergeArray(i, s);\n }\n get element() {\n return this._def.type;\n }\n min(t, e) {\n return new Ct({\n ...this._def,\n minLength: { value: t, message: j.toString(e) }\n });\n }\n max(t, e) {\n return new Ct({\n ...this._def,\n maxLength: { value: t, message: j.toString(e) }\n });\n }\n length(t, e) {\n return new Ct({\n ...this._def,\n exactLength: { value: t, message: j.toString(e) }\n });\n }\n nonempty(t) {\n return this.min(1, t);\n }\n}\nCt.create = (r, t) => new Ct({\n type: r,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: B.ZodArray,\n ...F(t)\n});\nfunction le(r) {\n if (r instanceof rt) {\n const t = {};\n for (const e in r.shape) {\n const i = r.shape[e];\n t[e] = $t.create(le(i));\n }\n return new rt({\n ...r._def,\n shape: () => t\n });\n } else\n return r instanceof Ct ? new Ct({\n ...r._def,\n type: le(r.element)\n }) : r instanceof $t ? $t.create(le(r.unwrap())) : r instanceof se ? se.create(le(r.unwrap())) : r instanceof Nt ? Nt.create(r.items.map((t) => le(t))) : r;\n}\nclass rt extends W {\n constructor() {\n super(...arguments), this._cached = null, this.nonstrict = this.passthrough, this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const t = this._def.shape(), e = J.objectKeys(t);\n return this._cached = { shape: t, keys: e };\n }\n _parse(t) {\n if (this._getType(t) !== O.object) {\n const c = this._getOrReturnCtx(t);\n return N(c, {\n code: P.invalid_type,\n expected: O.object,\n received: c.parsedType\n }), D;\n }\n const { status: i, ctx: n } = this._processInputParams(t), { shape: s, keys: o } = this._getCached(), a = [];\n if (!(this._def.catchall instanceof qt && this._def.unknownKeys === \"strip\"))\n for (const c in n.data)\n o.includes(c) || a.push(c);\n const h = [];\n for (const c of o) {\n const l = s[c], u = n.data[c];\n h.push({\n key: { status: \"valid\", value: c },\n value: l._parse(new Ot(n, u, n.path, c)),\n alwaysSet: c in n.data\n });\n }\n if (this._def.catchall instanceof qt) {\n const c = this._def.unknownKeys;\n if (c === \"passthrough\")\n for (const l of a)\n h.push({\n key: { status: \"valid\", value: l },\n value: { status: \"valid\", value: n.data[l] }\n });\n else if (c === \"strict\")\n a.length > 0 && (N(n, {\n code: P.unrecognized_keys,\n keys: a\n }), i.dirty());\n else if (c !== \"strip\")\n throw new Error(\"Internal ZodObject error: invalid unknownKeys value.\");\n } else {\n const c = this._def.catchall;\n for (const l of a) {\n const u = n.data[l];\n h.push({\n key: { status: \"valid\", value: l },\n value: c._parse(\n new Ot(n, u, n.path, l)\n //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: l in n.data\n });\n }\n }\n return n.common.async ? Promise.resolve().then(async () => {\n const c = [];\n for (const l of h) {\n const u = await l.key;\n c.push({\n key: u,\n value: await l.value,\n alwaysSet: l.alwaysSet\n });\n }\n return c;\n }).then((c) => ut.mergeObjectSync(i, c)) : ut.mergeObjectSync(i, h);\n }\n get shape() {\n return this._def.shape();\n }\n strict(t) {\n return j.errToObj, new rt({\n ...this._def,\n unknownKeys: \"strict\",\n ...t !== void 0 ? {\n errorMap: (e, i) => {\n var n, s, o, a;\n const h = (o = (s = (n = this._def).errorMap) === null || s === void 0 ? void 0 : s.call(n, e, i).message) !== null && o !== void 0 ? o : i.defaultError;\n return e.code === \"unrecognized_keys\" ? {\n message: (a = j.errToObj(t).message) !== null && a !== void 0 ? a : h\n } : {\n message: h\n };\n }\n } : {}\n });\n }\n strip() {\n return new rt({\n ...this._def,\n unknownKeys: \"strip\"\n });\n }\n passthrough() {\n return new rt({\n ...this._def,\n unknownKeys: \"passthrough\"\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(t) {\n return new rt({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...t\n })\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(t) {\n return new rt({\n unknownKeys: t._def.unknownKeys,\n catchall: t._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...t._def.shape()\n }),\n typeName: B.ZodObject\n });\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(t, e) {\n return this.augment({ [t]: e });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(t) {\n return new rt({\n ...this._def,\n catchall: t\n });\n }\n pick(t) {\n const e = {};\n return J.objectKeys(t).forEach((i) => {\n t[i] && this.shape[i] && (e[i] = this.shape[i]);\n }), new rt({\n ...this._def,\n shape: () => e\n });\n }\n omit(t) {\n const e = {};\n return J.objectKeys(this.shape).forEach((i) => {\n t[i] || (e[i] = this.shape[i]);\n }), new rt({\n ...this._def,\n shape: () => e\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return le(this);\n }\n partial(t) {\n const e = {};\n return J.objectKeys(this.shape).forEach((i) => {\n const n = this.shape[i];\n t && !t[i] ? e[i] = n : e[i] = n.optional();\n }), new rt({\n ...this._def,\n shape: () => e\n });\n }\n required(t) {\n const e = {};\n return J.objectKeys(this.shape).forEach((i) => {\n if (t && !t[i])\n e[i] = this.shape[i];\n else {\n let s = this.shape[i];\n for (; s instanceof $t; )\n s = s._def.innerType;\n e[i] = s;\n }\n }), new rt({\n ...this._def,\n shape: () => e\n });\n }\n keyof() {\n return qn(J.objectKeys(this.shape));\n }\n}\nrt.create = (r, t) => new rt({\n shape: () => r,\n unknownKeys: \"strip\",\n catchall: qt.create(),\n typeName: B.ZodObject,\n ...F(t)\n});\nrt.strictCreate = (r, t) => new rt({\n shape: () => r,\n unknownKeys: \"strict\",\n catchall: qt.create(),\n typeName: B.ZodObject,\n ...F(t)\n});\nrt.lazycreate = (r, t) => new rt({\n shape: r,\n unknownKeys: \"strip\",\n catchall: qt.create(),\n typeName: B.ZodObject,\n ...F(t)\n});\nclass je extends W {\n _parse(t) {\n const { ctx: e } = this._processInputParams(t), i = this._def.options;\n function n(s) {\n for (const a of s)\n if (a.result.status === \"valid\")\n return a.result;\n for (const a of s)\n if (a.result.status === \"dirty\")\n return e.common.issues.push(...a.ctx.common.issues), a.result;\n const o = s.map((a) => new Pt(a.ctx.common.issues));\n return N(e, {\n code: P.invalid_union,\n unionErrors: o\n }), D;\n }\n if (e.common.async)\n return Promise.all(i.map(async (s) => {\n const o = {\n ...e,\n common: {\n ...e.common,\n issues: []\n },\n parent: null\n };\n return {\n result: await s._parseAsync({\n data: e.data,\n path: e.path,\n parent: o\n }),\n ctx: o\n };\n })).then(n);\n {\n let s;\n const o = [];\n for (const h of i) {\n const c = {\n ...e,\n common: {\n ...e.common,\n issues: []\n },\n parent: null\n }, l = h._parseSync({\n data: e.data,\n path: e.path,\n parent: c\n });\n if (l.status === \"valid\")\n return l;\n l.status === \"dirty\" && !s && (s = { result: l, ctx: c }), c.common.issues.length && o.push(c.common.issues);\n }\n if (s)\n return e.common.issues.push(...s.ctx.common.issues), s.result;\n const a = o.map((h) => new Pt(h));\n return N(e, {\n code: P.invalid_union,\n unionErrors: a\n }), D;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nje.create = (r, t) => new je({\n options: r,\n typeName: B.ZodUnion,\n ...F(t)\n});\nconst xr = (r) => r instanceof Ge ? xr(r.schema) : r instanceof Rt ? xr(r.innerType()) : r instanceof Fe ? [r.value] : r instanceof Qt ? r.options : r instanceof Ue ? Object.keys(r.enum) : r instanceof We ? xr(r._def.innerType) : r instanceof Ne ? [void 0] : r instanceof Le ? [null] : null;\nclass zr extends W {\n _parse(t) {\n const { ctx: e } = this._processInputParams(t);\n if (e.parsedType !== O.object)\n return N(e, {\n code: P.invalid_type,\n expected: O.object,\n received: e.parsedType\n }), D;\n const i = this.discriminator, n = e.data[i], s = this.optionsMap.get(n);\n return s ? e.common.async ? s._parseAsync({\n data: e.data,\n path: e.path,\n parent: e\n }) : s._parseSync({\n data: e.data,\n path: e.path,\n parent: e\n }) : (N(e, {\n code: P.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [i]\n }), D);\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(t, e, i) {\n const n = /* @__PURE__ */ new Map();\n for (const s of e) {\n const o = xr(s.shape[t]);\n if (!o)\n throw new Error(`A discriminator value for key \\`${t}\\` could not be extracted from all schema options`);\n for (const a of o) {\n if (n.has(a))\n throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(a)}`);\n n.set(a, s);\n }\n }\n return new zr({\n typeName: B.ZodDiscriminatedUnion,\n discriminator: t,\n options: e,\n optionsMap: n,\n ...F(i)\n });\n }\n}\nfunction Mi(r, t) {\n const e = Yt(r), i = Yt(t);\n if (r === t)\n return { valid: !0, data: r };\n if (e === O.object && i === O.object) {\n const n = J.objectKeys(t), s = J.objectKeys(r).filter((a) => n.indexOf(a) !== -1), o = { ...r, ...t };\n for (const a of s) {\n const h = Mi(r[a], t[a]);\n if (!h.valid)\n return { valid: !1 };\n o[a] = h.data;\n }\n return { valid: !0, data: o };\n } else if (e === O.array && i === O.array) {\n if (r.length !== t.length)\n return { valid: !1 };\n const n = [];\n for (let s = 0; s < r.length; s++) {\n const o = r[s], a = t[s], h = Mi(o, a);\n if (!h.valid)\n return { valid: !1 };\n n.push(h.data);\n }\n return { valid: !0, data: n };\n } else\n return e === O.date && i === O.date && +r == +t ? { valid: !0, data: r } : { valid: !1 };\n}\nclass Be extends W {\n _parse(t) {\n const { status: e, ctx: i } = this._processInputParams(t), n = (s, o) => {\n if (Ti(s) || Ti(o))\n return D;\n const a = Mi(s.value, o.value);\n return a.valid ? ((bi(s) || bi(o)) && e.dirty(), { status: e.value, value: a.data }) : (N(i, {\n code: P.invalid_intersection_types\n }), D);\n };\n return i.common.async ? Promise.all([\n this._def.left._parseAsync({\n data: i.data,\n path: i.path,\n parent: i\n }),\n this._def.right._parseAsync({\n data: i.data,\n path: i.path,\n parent: i\n })\n ]).then(([s, o]) => n(s, o)) : n(this._def.left._parseSync({\n data: i.data,\n path: i.path,\n parent: i\n }), this._def.right._parseSync({\n data: i.data,\n path: i.path,\n parent: i\n }));\n }\n}\nBe.create = (r, t, e) => new Be({\n left: r,\n right: t,\n typeName: B.ZodIntersection,\n ...F(e)\n});\nclass Nt extends W {\n _parse(t) {\n const { status: e, ctx: i } = this._processInputParams(t);\n if (i.parsedType !== O.array)\n return N(i, {\n code: P.invalid_type,\n expected: O.array,\n received: i.parsedType\n }), D;\n if (i.data.length < this._def.items.length)\n return N(i, {\n code: P.too_small,\n minimum: this._def.items.length,\n inclusive: !0,\n exact: !1,\n type: \"array\"\n }), D;\n !this._def.rest && i.data.length > this._def.items.length && (N(i, {\n code: P.too_big,\n maximum: this._def.items.length,\n inclusive: !0,\n exact: !1,\n type: \"array\"\n }), e.dirty());\n const s = [...i.data].map((o, a) => {\n const h = this._def.items[a] || this._def.rest;\n return h ? h._parse(new Ot(i, o, i.path, a)) : null;\n }).filter((o) => !!o);\n return i.common.async ? Promise.all(s).then((o) => ut.mergeArray(e, o)) : ut.mergeArray(e, s);\n }\n get items() {\n return this._def.items;\n }\n rest(t) {\n return new Nt({\n ...this._def,\n rest: t\n });\n }\n}\nNt.create = (r, t) => {\n if (!Array.isArray(r))\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n return new Nt({\n items: r,\n typeName: B.ZodTuple,\n rest: null,\n ...F(t)\n });\n};\nclass De extends W {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(t) {\n const { status: e, ctx: i } = this._processInputParams(t);\n if (i.parsedType !== O.object)\n return N(i, {\n code: P.invalid_type,\n expected: O.object,\n received: i.parsedType\n }), D;\n const n = [], s = this._def.keyType, o = this._def.valueType;\n for (const a in i.data)\n n.push({\n key: s._parse(new Ot(i, a, i.path, a)),\n value: o._parse(new Ot(i, i.data[a], i.path, a))\n });\n return i.common.async ? ut.mergeObjectAsync(e, n) : ut.mergeObjectSync(e, n);\n }\n get element() {\n return this._def.valueType;\n }\n static create(t, e, i) {\n return e instanceof W ? new De({\n keyType: t,\n valueType: e,\n typeName: B.ZodRecord,\n ...F(i)\n }) : new De({\n keyType: St.create(),\n valueType: t,\n typeName: B.ZodRecord,\n ...F(e)\n });\n }\n}\nclass Cr extends W {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(t) {\n const { status: e, ctx: i } = this._processInputParams(t);\n if (i.parsedType !== O.map)\n return N(i, {\n code: P.invalid_type,\n expected: O.map,\n received: i.parsedType\n }), D;\n const n = this._def.keyType, s = this._def.valueType, o = [...i.data.entries()].map(([a, h], c) => ({\n key: n._parse(new Ot(i, a, i.path, [c, \"key\"])),\n value: s._parse(new Ot(i, h, i.path, [c, \"value\"]))\n }));\n if (i.common.async) {\n const a = /* @__PURE__ */ new Map();\n return Promise.resolve().then(async () => {\n for (const h of o) {\n const c = await h.key, l = await h.value;\n if (c.status === \"aborted\" || l.status === \"aborted\")\n return D;\n (c.status === \"dirty\" || l.status === \"dirty\") && e.dirty(), a.set(c.value, l.value);\n }\n return { status: e.value, value: a };\n });\n } else {\n const a = /* @__PURE__ */ new Map();\n for (const h of o) {\n const c = h.key, l = h.value;\n if (c.status === \"aborted\" || l.status === \"aborted\")\n return D;\n (c.status === \"dirty\" || l.status === \"dirty\") && e.dirty(), a.set(c.value, l.value);\n }\n return { status: e.value, value: a };\n }\n }\n}\nCr.create = (r, t, e) => new Cr({\n valueType: t,\n keyType: r,\n typeName: B.ZodMap,\n ...F(e)\n});\nclass ne extends W {\n _parse(t) {\n const { status: e, ctx: i } = this._processInputParams(t);\n if (i.parsedType !== O.set)\n return N(i, {\n code: P.invalid_type,\n expected: O.set,\n received: i.parsedType\n }), D;\n const n = this._def;\n n.minSize !== null && i.data.size < n.minSize.value && (N(i, {\n code: P.too_small,\n minimum: n.minSize.value,\n type: \"set\",\n inclusive: !0,\n exact: !1,\n message: n.minSize.message\n }), e.dirty()), n.maxSize !== null && i.data.size > n.maxSize.value && (N(i, {\n code: P.too_big,\n maximum: n.maxSize.value,\n type: \"set\",\n inclusive: !0,\n exact: !1,\n message: n.maxSize.message\n }), e.dirty());\n const s = this._def.valueType;\n function o(h) {\n const c = /* @__PURE__ */ new Set();\n for (const l of h) {\n if (l.status === \"aborted\")\n return D;\n l.status === \"dirty\" && e.dirty(), c.add(l.value);\n }\n return { status: e.value, value: c };\n }\n const a = [...i.data.values()].map((h, c) => s._parse(new Ot(i, h, i.path, c)));\n return i.common.async ? Promise.all(a).then((h) => o(h)) : o(a);\n }\n min(t, e) {\n return new ne({\n ...this._def,\n minSize: { value: t, message: j.toString(e) }\n });\n }\n max(t, e) {\n return new ne({\n ...this._def,\n maxSize: { value: t, message: j.toString(e) }\n });\n }\n size(t, e) {\n return this.min(t, e).max(t, e);\n }\n nonempty(t) {\n return this.min(1, t);\n }\n}\nne.create = (r, t) => new ne({\n valueType: r,\n minSize: null,\n maxSize: null,\n typeName: B.ZodSet,\n ...F(t)\n});\nclass ge extends W {\n constructor() {\n super(...arguments), this.validate = this.implement;\n }\n _parse(t) {\n const { ctx: e } = this._processInputParams(t);\n if (e.parsedType !== O.function)\n return N(e, {\n code: P.invalid_type,\n expected: O.function,\n received: e.parsedType\n }), D;\n function i(a, h) {\n return Ir({\n data: a,\n path: e.path,\n errorMaps: [\n e.common.contextualErrorMap,\n e.schemaErrorMap,\n Er(),\n Re\n ].filter((c) => !!c),\n issueData: {\n code: P.invalid_arguments,\n argumentsError: h\n }\n });\n }\n function n(a, h) {\n return Ir({\n data: a,\n path: e.path,\n errorMaps: [\n e.common.contextualErrorMap,\n e.schemaErrorMap,\n Er(),\n Re\n ].filter((c) => !!c),\n issueData: {\n code: P.invalid_return_type,\n returnTypeError: h\n }\n });\n }\n const s = { errorMap: e.common.contextualErrorMap }, o = e.data;\n if (this._def.returns instanceof ye) {\n const a = this;\n return mt(async function(...h) {\n const c = new Pt([]), l = await a._def.args.parseAsync(h, s).catch((w) => {\n throw c.addIssue(i(h, w)), c;\n }), u = await Reflect.apply(o, this, l);\n return await a._def.returns._def.type.parseAsync(u, s).catch((w) => {\n throw c.addIssue(n(u, w)), c;\n });\n });\n } else {\n const a = this;\n return mt(function(...h) {\n const c = a._def.args.safeParse(h, s);\n if (!c.success)\n throw new Pt([i(h, c.error)]);\n const l = Reflect.apply(o, this, c.data), u = a._def.returns.safeParse(l, s);\n if (!u.success)\n throw new Pt([n(l, u.error)]);\n return u.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...t) {\n return new ge({\n ...this._def,\n args: Nt.create(t).rest(re.create())\n });\n }\n returns(t) {\n return new ge({\n ...this._def,\n returns: t\n });\n }\n implement(t) {\n return this.parse(t);\n }\n strictImplement(t) {\n return this.parse(t);\n }\n static create(t, e, i) {\n return new ge({\n args: t || Nt.create([]).rest(re.create()),\n returns: e || re.create(),\n typeName: B.ZodFunction,\n ...F(i)\n });\n }\n}\nclass Ge extends W {\n get schema() {\n return this._def.getter();\n }\n _parse(t) {\n const { ctx: e } = this._processInputParams(t);\n return this._def.getter()._parse({ data: e.data, path: e.path, parent: e });\n }\n}\nGe.create = (r, t) => new Ge({\n getter: r,\n typeName: B.ZodLazy,\n ...F(t)\n});\nclass Fe extends W {\n _parse(t) {\n if (t.data !== this._def.value) {\n const e = this._getOrReturnCtx(t);\n return N(e, {\n received: e.data,\n code: P.invalid_literal,\n expected: this._def.value\n }), D;\n }\n return { status: \"valid\", value: t.data };\n }\n get value() {\n return this._def.value;\n }\n}\nFe.create = (r, t) => new Fe({\n value: r,\n typeName: B.ZodLiteral,\n ...F(t)\n});\nfunction qn(r, t) {\n return new Qt({\n values: r,\n typeName: B.ZodEnum,\n ...F(t)\n });\n}\nclass Qt extends W {\n _parse(t) {\n if (typeof t.data != \"string\") {\n const e = this._getOrReturnCtx(t), i = this._def.values;\n return N(e, {\n expected: J.joinValues(i),\n received: e.parsedType,\n code: P.invalid_type\n }), D;\n }\n if (this._def.values.indexOf(t.data) === -1) {\n const e = this._getOrReturnCtx(t), i = this._def.values;\n return N(e, {\n received: e.data,\n code: P.invalid_enum_value,\n options: i\n }), D;\n }\n return mt(t.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const t = {};\n for (const e of this._def.values)\n t[e] = e;\n return t;\n }\n get Values() {\n const t = {};\n for (const e of this._def.values)\n t[e] = e;\n return t;\n }\n get Enum() {\n const t = {};\n for (const e of this._def.values)\n t[e] = e;\n return t;\n }\n extract(t) {\n return Qt.create(t);\n }\n exclude(t) {\n return Qt.create(this.options.filter((e) => !t.includes(e)));\n }\n}\nQt.create = qn;\nclass Ue extends W {\n _parse(t) {\n const e = J.getValidEnumValues(this._def.values), i = this._getOrReturnCtx(t);\n if (i.parsedType !== O.string && i.parsedType !== O.number) {\n const n = J.objectValues(e);\n return N(i, {\n expected: J.joinValues(n),\n received: i.parsedType,\n code: P.invalid_type\n }), D;\n }\n if (e.indexOf(t.data) === -1) {\n const n = J.objectValues(e);\n return N(i, {\n received: i.data,\n code: P.invalid_enum_value,\n options: n\n }), D;\n }\n return mt(t.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nUe.create = (r, t) => new Ue({\n values: r,\n typeName: B.ZodNativeEnum,\n ...F(t)\n});\nclass ye extends W {\n unwrap() {\n return this._def.type;\n }\n _parse(t) {\n const { ctx: e } = this._processInputParams(t);\n if (e.parsedType !== O.promise && e.common.async === !1)\n return N(e, {\n code: P.invalid_type,\n expected: O.promise,\n received: e.parsedType\n }), D;\n const i = e.parsedType === O.promise ? e.data : Promise.resolve(e.data);\n return mt(i.then((n) => this._def.type.parseAsync(n, {\n path: e.path,\n errorMap: e.common.contextualErrorMap\n })));\n }\n}\nye.create = (r, t) => new ye({\n type: r,\n typeName: B.ZodPromise,\n ...F(t)\n});\nclass Rt extends W {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === B.ZodEffects ? this._def.schema.sourceType() : this._def.schema;\n }\n _parse(t) {\n const { status: e, ctx: i } = this._processInputParams(t), n = this._def.effect || null, s = {\n addIssue: (o) => {\n N(i, o), o.fatal ? e.abort() : e.dirty();\n },\n get path() {\n return i.path;\n }\n };\n if (s.addIssue = s.addIssue.bind(s), n.type === \"preprocess\") {\n const o = n.transform(i.data, s);\n return i.common.issues.length ? {\n status: \"dirty\",\n value: i.data\n } : i.common.async ? Promise.resolve(o).then((a) => this._def.schema._parseAsync({\n data: a,\n path: i.path,\n parent: i\n })) : this._def.schema._parseSync({\n data: o,\n path: i.path,\n parent: i\n });\n }\n if (n.type === \"refinement\") {\n const o = (a) => {\n const h = n.refinement(a, s);\n if (i.common.async)\n return Promise.resolve(h);\n if (h instanceof Promise)\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n return a;\n };\n if (i.common.async === !1) {\n const a = this._def.schema._parseSync({\n data: i.data,\n path: i.path,\n parent: i\n });\n return a.status === \"aborted\" ? D : (a.status === \"dirty\" && e.dirty(), o(a.value), { status: e.value, value: a.value });\n } else\n return this._def.schema._parseAsync({ data: i.data, path: i.path, parent: i }).then((a) => a.status === \"aborted\" ? D : (a.status === \"dirty\" && e.dirty(), o(a.value).then(() => ({ status: e.value, value: a.value }))));\n }\n if (n.type === \"transform\")\n if (i.common.async === !1) {\n const o = this._def.schema._parseSync({\n data: i.data,\n path: i.path,\n parent: i\n });\n if (!ke(o))\n return o;\n const a = n.transform(o.value, s);\n if (a instanceof Promise)\n throw new Error(\"Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.\");\n return { status: e.value, value: a };\n } else\n return this._def.schema._parseAsync({ data: i.data, path: i.path, parent: i }).then((o) => ke(o) ? Promise.resolve(n.transform(o.value, s)).then((a) => ({ status: e.value, value: a })) : o);\n J.assertNever(n);\n }\n}\nRt.create = (r, t, e) => new Rt({\n schema: r,\n typeName: B.ZodEffects,\n effect: t,\n ...F(e)\n});\nRt.createWithPreprocess = (r, t, e) => new Rt({\n schema: t,\n effect: { type: \"preprocess\", transform: r },\n typeName: B.ZodEffects,\n ...F(e)\n});\nclass $t extends W {\n _parse(t) {\n return this._getType(t) === O.undefined ? mt(void 0) : this._def.innerType._parse(t);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\n$t.create = (r, t) => new $t({\n innerType: r,\n typeName: B.ZodOptional,\n ...F(t)\n});\nclass se extends W {\n _parse(t) {\n return this._getType(t) === O.null ? mt(null) : this._def.innerType._parse(t);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nse.create = (r, t) => new se({\n innerType: r,\n typeName: B.ZodNullable,\n ...F(t)\n});\nclass We extends W {\n _parse(t) {\n const { ctx: e } = this._processInputParams(t);\n let i = e.data;\n return e.parsedType === O.undefined && (i = this._def.defaultValue()), this._def.innerType._parse({\n data: i,\n path: e.path,\n parent: e\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nWe.create = (r, t) => new We({\n innerType: r,\n typeName: B.ZodDefault,\n defaultValue: typeof t.default == \"function\" ? t.default : () => t.default,\n ...F(t)\n});\nclass Rr extends W {\n _parse(t) {\n const { ctx: e } = this._processInputParams(t), i = {\n ...e,\n common: {\n ...e.common,\n issues: []\n }\n }, n = this._def.innerType._parse({\n data: i.data,\n path: i.path,\n parent: {\n ...i\n }\n });\n return Sr(n) ? n.then((s) => ({\n status: \"valid\",\n value: s.status === \"valid\" ? s.value : this._def.catchValue({\n get error() {\n return new Pt(i.common.issues);\n },\n input: i.data\n })\n })) : {\n status: \"valid\",\n value: n.status === \"valid\" ? n.value : this._def.catchValue({\n get error() {\n return new Pt(i.common.issues);\n },\n input: i.data\n })\n };\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nRr.create = (r, t) => new Rr({\n innerType: r,\n typeName: B.ZodCatch,\n catchValue: typeof t.catch == \"function\" ? t.catch : () => t.catch,\n ...F(t)\n});\nclass kr extends W {\n _parse(t) {\n if (this._getType(t) !== O.nan) {\n const i = this._getOrReturnCtx(t);\n return N(i, {\n code: P.invalid_type,\n expected: O.nan,\n received: i.parsedType\n }), D;\n }\n return { status: \"valid\", value: t.data };\n }\n}\nkr.create = (r) => new kr({\n typeName: B.ZodNaN,\n ...F(r)\n});\nconst $o = Symbol(\"zod_brand\");\nclass Xn extends W {\n _parse(t) {\n const { ctx: e } = this._processInputParams(t), i = e.data;\n return this._def.type._parse({\n data: i,\n path: e.path,\n parent: e\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass qe extends W {\n _parse(t) {\n const { status: e, ctx: i } = this._processInputParams(t);\n if (i.common.async)\n return (async () => {\n const s = await this._def.in._parseAsync({\n data: i.data,\n path: i.path,\n parent: i\n });\n return s.status === \"aborted\" ? D : s.status === \"dirty\" ? (e.dirty(), $n(s.value)) : this._def.out._parseAsync({\n data: s.value,\n path: i.path,\n parent: i\n });\n })();\n {\n const n = this._def.in._parseSync({\n data: i.data,\n path: i.path,\n parent: i\n });\n return n.status === \"aborted\" ? D : n.status === \"dirty\" ? (e.dirty(), {\n status: \"dirty\",\n value: n.value\n }) : this._def.out._parseSync({\n data: n.value,\n path: i.path,\n parent: i\n });\n }\n }\n static create(t, e) {\n return new qe({\n in: t,\n out: e,\n typeName: B.ZodPipeline\n });\n }\n}\nclass Or extends W {\n _parse(t) {\n const e = this._def.innerType._parse(t);\n return ke(e) && (e.value = Object.freeze(e.value)), e;\n }\n}\nOr.create = (r, t) => new Or({\n innerType: r,\n typeName: B.ZodReadonly,\n ...F(t)\n});\nconst Hn = (r, t = {}, e) => r ? me.create().superRefine((i, n) => {\n var s, o;\n if (!r(i)) {\n const a = typeof t == \"function\" ? t(i) : typeof t == \"string\" ? { message: t } : t, h = (o = (s = a.fatal) !== null && s !== void 0 ? s : e) !== null && o !== void 0 ? o : !0, c = typeof a == \"string\" ? { message: a } : a;\n n.addIssue({ code: \"custom\", ...c, fatal: h });\n }\n}) : me.create(), qo = {\n object: rt.lazycreate\n};\nvar B;\n(function(r) {\n r.ZodString = \"ZodString\", r.ZodNumber = \"ZodNumber\", r.ZodNaN = \"ZodNaN\", r.ZodBigInt = \"ZodBigInt\", r.ZodBoolean = \"ZodBoolean\", r.ZodDate = \"ZodDate\", r.ZodSymbol = \"ZodSymbol\", r.ZodUndefined = \"ZodUndefined\", r.ZodNull = \"ZodNull\", r.ZodAny = \"ZodAny\", r.ZodUnknown = \"ZodUnknown\", r.ZodNever = \"ZodNever\", r.ZodVoid = \"ZodVoid\", r.ZodArray = \"ZodArray\", r.ZodObject = \"ZodObject\", r.ZodUnion = \"ZodUnion\", r.ZodDiscriminatedUnion = \"ZodDiscriminatedUnion\", r.ZodIntersection = \"ZodIntersection\", r.ZodTuple = \"ZodTuple\", r.ZodRecord = \"ZodRecord\", r.ZodMap = \"ZodMap\", r.ZodSet = \"ZodSet\", r.ZodFunction = \"ZodFunction\", r.ZodLazy = \"ZodLazy\", r.ZodLiteral = \"ZodLiteral\", r.ZodEnum = \"ZodEnum\", r.ZodEffects = \"ZodEffects\", r.ZodNativeEnum = \"ZodNativeEnum\", r.ZodOptional = \"ZodOptional\", r.ZodNullable = \"ZodNullable\", r.ZodDefault = \"ZodDefault\", r.ZodCatch = \"ZodCatch\", r.ZodPromise = \"ZodPromise\", r.ZodBranded = \"ZodBranded\", r.ZodPipeline = \"ZodPipeline\", r.ZodReadonly = \"ZodReadonly\";\n})(B || (B = {}));\nconst Xo = (r, t = {\n message: `Input not instance of ${r.name}`\n}) => Hn((e) => e instanceof r, t), Yn = St.create, Jn = Jt.create, Ho = kr.create, Yo = Kt.create, Kn = Oe.create, Jo = ie.create, Ko = Ar.create, Qo = Ne.create, ta = Le.create, ea = me.create, ra = re.create, ia = qt.create, na = Pr.create, sa = Ct.create, oa = rt.create, aa = rt.strictCreate, ha = je.create, ca = zr.create, la = Be.create, ua = Nt.create, da = De.create, fa = Cr.create, pa = ne.create, ga = ge.create, ma = Ge.create, ya = Fe.create, wa = Qt.create, va = Ue.create, xa = ye.create, an = Rt.create, Ta = $t.create, ba = se.create, Ma = Rt.createWithPreprocess, _a = qe.create, Ea = () => Yn().optional(), Ia = () => Jn().optional(), Sa = () => Kn().optional(), Aa = {\n string: (r) => St.create({ ...r, coerce: !0 }),\n number: (r) => Jt.create({ ...r, coerce: !0 }),\n boolean: (r) => Oe.create({\n ...r,\n coerce: !0\n }),\n bigint: (r) => Kt.create({ ...r, coerce: !0 }),\n date: (r) => ie.create({ ...r, coerce: !0 })\n}, Pa = D;\nvar m = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n defaultErrorMap: Re,\n setErrorMap: Oo,\n getErrorMap: Er,\n makeIssue: Ir,\n EMPTY_PATH: No,\n addIssueToContext: N,\n ParseStatus: ut,\n INVALID: D,\n DIRTY: $n,\n OK: mt,\n isAborted: Ti,\n isDirty: bi,\n isValid: ke,\n isAsync: Sr,\n get util() {\n return J;\n },\n get objectUtil() {\n return xi;\n },\n ZodParsedType: O,\n getParsedType: Yt,\n ZodType: W,\n ZodString: St,\n ZodNumber: Jt,\n ZodBigInt: Kt,\n ZodBoolean: Oe,\n ZodDate: ie,\n ZodSymbol: Ar,\n ZodUndefined: Ne,\n ZodNull: Le,\n ZodAny: me,\n ZodUnknown: re,\n ZodNever: qt,\n ZodVoid: Pr,\n ZodArray: Ct,\n ZodObject: rt,\n ZodUnion: je,\n ZodDiscriminatedUnion: zr,\n ZodIntersection: Be,\n ZodTuple: Nt,\n ZodRecord: De,\n ZodMap: Cr,\n ZodSet: ne,\n ZodFunction: ge,\n ZodLazy: Ge,\n ZodLiteral: Fe,\n ZodEnum: Qt,\n ZodNativeEnum: Ue,\n ZodPromise: ye,\n ZodEffects: Rt,\n ZodTransformer: Rt,\n ZodOptional: $t,\n ZodNullable: se,\n ZodDefault: We,\n ZodCatch: Rr,\n ZodNaN: kr,\n BRAND: $o,\n ZodBranded: Xn,\n ZodPipeline: qe,\n ZodReadonly: Or,\n custom: Hn,\n Schema: W,\n ZodSchema: W,\n late: qo,\n get ZodFirstPartyTypeKind() {\n return B;\n },\n coerce: Aa,\n any: ea,\n array: sa,\n bigint: Yo,\n boolean: Kn,\n date: Jo,\n discriminatedUnion: ca,\n effect: an,\n enum: wa,\n function: ga,\n instanceof: Xo,\n intersection: la,\n lazy: ma,\n literal: ya,\n map: fa,\n nan: Ho,\n nativeEnum: va,\n never: ia,\n null: ta,\n nullable: ba,\n number: Jn,\n object: oa,\n oboolean: Sa,\n onumber: Ia,\n optional: Ta,\n ostring: Ea,\n pipeline: _a,\n preprocess: Ma,\n promise: xa,\n record: da,\n set: pa,\n strictObject: aa,\n string: Yn,\n symbol: Ko,\n transformer: an,\n tuple: ua,\n undefined: Qo,\n union: ha,\n unknown: ra,\n void: na,\n NEVER: Pa,\n ZodIssueCode: P,\n quotelessJson: ko,\n ZodError: Pt\n});\nconst Zr = /^https?:\\/\\/library.stanford.edu\\/iiif\\/image-api\\/1.1\\/compliance.html#level(?<level>[012])$/, Qn = m.string().regex(Zr), Ca = Qn, Nr = \"http://library.stanford.edu/iiif/image-api/1.1/context.json\", ts = \"http://iiif.io/api/image/1/context.json\", es = m.literal(Nr), rs = m.object({\n \"@context\": es,\n \"@id\": m.string().url(),\n profile: Qn.optional(),\n width: m.number().int(),\n height: m.number().int(),\n scale_factors: m.number().array().optional(),\n tile_width: m.number().optional(),\n tile_height: m.number().optional()\n}), is = m.object({\n width: m.number().int(),\n height: m.number().int()\n}), ns = m.object({\n width: m.number().int(),\n height: m.number().int().optional(),\n scaleFactors: m.array(m.number().int())\n}), $r = /^https?:\\/\\/iiif.io\\/api\\/image\\/2.*level(?<level>[012])(.json)?$/, hn = m.string().regex($r), Ra = m.object({\n formats: m.string().array().optional(),\n maxArea: m.number().int().optional(),\n maxHeight: m.number().int().optional(),\n maxWidth: m.number().int().optional(),\n qualities: m.string().array().optional(),\n supports: m.string().array().optional()\n}), Lr = hn.or(m.array(m.union([\n hn,\n Ra,\n // Catchall for incorrect profiles\n m.any()\n]))), jr = \"http://iiif.io/api/image/2/context.json\", ss = m.literal(jr).or(m.literal(\"https://iiif.io/api/image/2/context.json\")), ji = m.object({\n \"@id\": m.string().url(),\n \"@type\": m.literal(\"iiif:Image\").optional(),\n \"@context\": ss,\n protocol: m.literal(\"http://iiif.io/api/image\"),\n width: m.number().int(),\n height: m.number().int(),\n profile: Lr,\n sizes: is.array().optional(),\n tiles: ns.array().optional()\n}), ka = [\"level0\", \"level1\", \"level2\"], Bi = m.object({\n id: m.string().url(),\n type: m.literal(\"ImageService3\"),\n protocol: m.literal(\"http://iiif.io/api/image\"),\n profile: m.enum(ka),\n width: m.number().int(),\n height: m.number().int(),\n maxWidth: m.number().int().optional(),\n maxHeight: m.number().int().optional(),\n maxArea: m.number().int().optional(),\n sizes: is.array().optional(),\n tiles: ns.array().optional(),\n extraFeatures: m.string().array().optional()\n // TODO: add partOf, seeAlso, and service\n}), Oa = m.object({\n \"@id\": m.string().url(),\n profile: Ca.or(Lr),\n width: m.number().int().optional(),\n height: m.number().int().optional(),\n \"@context\": es.or(m.literal(\"http://iiif.io/api/image/1/context.json\")).or(ss).optional()\n}), Na = [\"level0\", \"level1\", \"level2\"], La = [\n \"ImageService1\",\n \"ImageService2\",\n \"ImageService3\"\n], ja = m.object({\n id: m.string().url(),\n type: m.literal(\"ImageService2\"),\n profile: Lr\n}).or(m.object({\n \"@id\": m.string().url(),\n \"@type\": m.literal(\"ImageService2\"),\n profile: Lr\n})), Ba = m.object({\n id: m.string().url(),\n type: m.enum(La),\n profile: m.enum(Na)\n}), Da = m.union([\n ja,\n Ba\n]), os = Oa.or(Da), cn = m.string().or(m.number()).or(m.boolean()), as = cn.or(cn.array()), ln = m.object({\n \"@language\": m.string().optional(),\n \"@value\": as\n}), oe = as.or(ln).or(ln.array()), Ga = m.object({\n label: oe.optional(),\n value: oe.optional()\n}), hs = Ga.array(), Fa = m.object({\n width: m.number().int().optional(),\n height: m.number().int().optional(),\n service: os\n}), Ua = m.object({\n resource: Fa\n}), cs = m.object({\n \"@id\": m.string().url(),\n \"@type\": m.literal(\"sc:Canvas\"),\n width: m.number().int(),\n height: m.number().int(),\n images: Ua.array().length(1),\n label: oe.optional(),\n metadata: hs.optional()\n}), Wa = m.object({\n canvases: cs.array().nonempty()\n}), ls = m.object({\n \"@id\": m.string().url(),\n \"@type\": m.literal(\"sc:Manifest\"),\n sequences: Wa.array().length(1),\n label: oe.optional(),\n description: oe.optional(),\n metadata: hs.optional()\n}), un = m.lazy(() => m.object({\n \"@id\": m.string().url(),\n \"@type\": m.literal(\"sc:Manifest\"),\n label: oe.optional()\n})), _i = m.lazy(() => m.object({\n \"@id\": m.string().url(),\n \"@type\": m.literal(\"sc:Collection\"),\n label: oe.optional(),\n manifests: un.array().optional(),\n collections: _i.array().optional(),\n members: un.or(_i).array().optional()\n})), Va = m.string().or(m.number()).or(m.boolean()), ae = m.record(m.string(), Va.array()), za = m.object({\n label: ae.optional(),\n value: ae.optional()\n}), us = za.array(), dn = m.object({\n type: m.literal(\"Image\"),\n width: m.number().int().optional(),\n height: m.number().int().optional(),\n service: os.array()\n}), Za = m.object({\n type: m.literal(\"Annotation\"),\n body: dn.or(dn.array().length(1))\n}), $a = m.object({\n type: m.literal(\"AnnotationPage\"),\n items: Za.array().length(1)\n}), ds = m.object({\n id: m.string().url(),\n type: m.literal(\"Canvas\"),\n width: m.number().int(),\n height: m.number().int(),\n items: $a.array().length(1),\n label: ae.optional(),\n metadata: us.optional()\n}), fs = m.object({\n id: m.string().url(),\n type: m.literal(\"Manifest\"),\n items: ds.array().nonempty(),\n label: ae.optional(),\n description: ae.optional(),\n metadata: us.optional()\n}), qa = m.lazy(() => m.object({\n id: m.string().url(),\n type: m.literal(\"Manifest\"),\n label: ae.optional()\n})), ps = m.lazy(() => m.object({\n id: m.string().url(),\n type: m.literal(\"Collection\"),\n label: ae.optional(),\n items: qa.or(ps).array()\n})), gs = rs.or(ji).or(Bi);\ncs.or(ds);\nconst Xa = ls.or(fs);\n_i.or(ps);\nls.or(ji);\nfs.or(Bi);\nXa.or(gs);\nfunction ms({ width: r, height: t }, e, i, n) {\n const s = i * e.originalWidth, o = n * e.originalHeight, a = i * e.originalWidth + e.width * e.scaleFactor > r ? r - i * e.originalWidth : e.width * e.scaleFactor, h = n * e.originalHeight + e.height * e.scaleFactor > t ? t - n * e.originalHeight : e.height * e.scaleFactor;\n let c = e.width, l = e.height;\n return s + e.width * e.scaleFactor > r && (c = Math.floor((r - s + e.scaleFactor - 1) / e.scaleFactor)), o + e.height * e.scaleFactor > t && (l = Math.floor((t - o + e.scaleFactor - 1) / e.scaleFactor)), {\n region: {\n x: s,\n y: o,\n width: a,\n height: h\n },\n size: {\n width: c,\n height: l\n }\n };\n}\nfunction Ha({ width: r, height: t }, e = 768) {\n const i = Math.max(r, t) / e, n = Math.ceil(Math.log(i) / Math.log(2));\n return {\n scaleFactors: Array.from({ length: n }, (s, o) => 2 ** o),\n // .filter((scaleFactor) => {\n // if (maxTileSide) {\n // return tileWidth * scaleFactor <= maxTileSide\n // } else {\n // return true\n // }\n // }),\n width: e\n };\n}\nfunction Ya({ width: r, height: t }, e, i) {\n const n = e.height || e.width, s = e.width * i, o = n * i;\n return {\n scaleFactor: i,\n width: e.width,\n height: n,\n originalWidth: s,\n originalHeight: o,\n columns: Math.ceil(r / s),\n rows: Math.ceil(t / o)\n };\n}\nfunction Ja(r, t) {\n return t.map((e) => e.scaleFactors.map((i) => Ya(r, e, i))).flat();\n}\nfunction Ka(r) {\n return !!r.some((t) => t.width && t.scaleFactors && t.scaleFactors.length);\n}\nfunction Qa(r, t, e) {\n if (!t || !Ka(t))\n if (e)\n t = [Ha(r)];\n else\n throw new Error(\"Image does not support tiles or custom regions and sizes.\");\n return Ja(r, t);\n}\nfunction th(r, t, e = \"cover\") {\n if (e === \"cover\" || e === \"contain\") {\n const i = t.width / r.width, n = t.height / r.height, s = e === \"cover\" ? Math.max(i, n) : Math.min(i, n), o = r.width * s, a = r.height * s;\n return {\n width: o,\n height: a\n };\n } else\n throw new Error('Mode must be either \"cover\" or \"contain\"');\n}\nconst eh = 0.8, rh = 1.5;\nfunction ys(r, t, e = \"cover\", { sizes: i, tileZoomLevels: n, supportsAnyRegionAndSize: s, maxWidth: o, maxHeight: a, maxArea: h }) {\n let { width: c, height: l } = th(r, t, e);\n if (o && c > o && (l = l / c * o, c = o), a && l > a && (c = c / l * a, l = a), h && c * l > h) {\n const g = l / c, y = Math.floor(Math.sqrt(h / g)) * g;\n c = Math.floor(y) / g, l = c * g;\n }\n const u = r.width / r.height;\n if (c = Math.floor(c), l = Math.round(c / u), i) {\n let g;\n for (const w of i) {\n const y = w.width / c;\n if (y >= eh && y <= rh) {\n g = w;\n break;\n }\n }\n if (g)\n return {\n size: g\n };\n }\n if (s)\n return {\n size: {\n width: Math.round(c),\n height: Math.round(l)\n }\n };\n if (n) {\n const g = r.width / c, w = n.map(({ scaleFactor: S }, f) => ({\n index: f,\n scaleFactor: S,\n diff: Math.abs(S - g)\n })).sort((S, f) => S.diff - f.diff), y = n[w[0].index], _ = Math.ceil(r.width / (y.scaleFactor * n[0].width)), I = Math.ceil(r.height / (y.scaleFactor * n[0].height)), v = [];\n for (let S = 0; S < I; S++) {\n const f = [];\n for (let p = 0; p < _; p++) {\n const T = ms(r, y, p, S);\n f.push(T);\n }\n v.push(f);\n }\n return v;\n }\n throw new Error(\"Unable to create thumbnail\");\n}\nconst ws = [\"regionByPx\", \"sizeByWh\"];\nfunction ih(r) {\n const t = r.match(Zr);\n if (t && t.groups)\n return parseInt(t.groups.level);\n}\nfunction fn(r) {\n const t = r.match($r);\n if (t && t.groups)\n return parseInt(t.groups.level);\n}\nfunction nh(r) {\n return {\n maxWidth: r?.maxWidth,\n maxHeight: r?.maxHeight,\n maxArea: r?.maxArea,\n supportsAnyRegionAndSize: ws.every((t) => r?.supports && r?.supports?.includes(t))\n };\n}\nfunction sh(r) {\n if (\"type\" in r && r.type === \"ImageService3\")\n return 3;\n if (\"type\" in r && r.type === \"ImageService2\" || \"@type\" in r && r[\"@type\"] === \"ImageService2\" || \"@context\" in r && r[\"@context\"] === jr)\n return 2;\n if (\"@context\" in r && (r[\"@context\"] === Nr || r[\"@context\"] === ts))\n return 1;\n if (\"profile\" in r) {\n let t;\n return Array.isArray(r.profile) ? t = r.profile[0] : t = r.profile, t.match(Zr) ? 1 : t.match($r) ? 2 : 3;\n } else\n throw new Error(\"Unsupported IIIF Image Service\");\n}\nfunction Ei(r) {\n if (\"type\" in r) {\n const t = r.profile;\n let e = !1;\n return t === \"level0\" || typeof t == \"string\" && t.endsWith(\"level0.json\") ? \"extraFeatures\" in r && (e = ws.every((i) => r.extraFeatures && r.extraFeatures.includes(i))) : e = !0, {\n maxWidth: \"maxWidth\" in r ? r.maxWidth : void 0,\n maxHeight: \"maxHeight\" in r ? r.maxHeight : void 0,\n maxArea: \"maxArea\" in r ? r.maxArea : void 0,\n supportsAnyRegionAndSize: e\n };\n } else if (Array.isArray(r.profile)) {\n let t = !1, e = Number.NEGATIVE_INFINITY, i = Number.NEGATIVE_INFINITY, n = Number.NEGATIVE_INFINITY;\n return r.profile.forEach((s) => {\n if (typeof s == \"string\") {\n const o = fn(s);\n o && (t = t || o >= 1);\n } else {\n const { maxWidth: o, maxHeight: a, maxArea: h, supportsAnyRegionAndSize: c } = nh(s);\n o !== void 0 && (i = Math.max(o, i)), a !== void 0 && (e = Math.max(a, e)), h !== void 0 && (n = Math.max(h, n)), t = t || c;\n }\n }), {\n maxWidth: i >= 0 ? i : void 0,\n maxHeight: e >= 0 ? e : void 0,\n maxArea: n >= 0 ? n : void 0,\n supportsAnyRegionAndSize: t\n };\n } else if (\"profile\" in r && r.profile) {\n const t = ih(r.profile), e = fn(r.profile);\n return t ? {\n supportsAnyRegionAndSize: t >= 1\n } : e ? {\n supportsAnyRegionAndSize: e >= 1\n } : {\n supportsAnyRegionAndSize: !1\n };\n } else\n throw new Error(\"Invalid Image\");\n}\nconst oh = \"image\";\nclass ah {\n constructor(t, e) {\n if (this.embedded = !0, this.type = oh, e) {\n const i = t;\n let n, s;\n if (Array.isArray(i.service) ? i.service.forEach((o) => {\n try {\n const a = sh(o);\n (!s || a > s) && (s = a, n = o);\n } catch {\n }\n }) : n = i.service, !n)\n throw new Error(\"Unsupported IIIF Image Service\");\n if (\"@id\" in n)\n this.uri = n[\"@id\"];\n else if (\"id\" in n)\n this.uri = n.id;\n else\n throw new Error(\"Unsupported IIIF Image Service\");\n if (\"type\" in n && n.type === \"ImageService3\")\n this.majorVersion = 3;\n else if (\"type\" in n && n.type === \"ImageService2\" || \"@type\" in n && n[\"@type\"] === \"ImageService2\" || \"@context\" in n && n[\"@context\"] === jr)\n this.majorVersion = 2;\n else if (\"@context\" in n && (n[\"@context\"] === Nr || n[\"@context\"] === ts))\n this.majorVersion = 1;\n else if (\"profile\" in n) {\n let o;\n Array.isArray(n.profile) ? o = n.profile[0] : o = n.profile, o.match(Zr) ? this.majorVersion = 1 : o.match($r) ? this.majorVersion = 2 : this.majorVersion = 3;\n } else\n throw new Error(\"Unsupported IIIF Image Service\");\n if (\"profile\" in n) {\n const o = Ei(n);\n this.supportsAnyRegionAndSize = o.supportsAnyRegionAndSize, this.maxWidth = o.maxWidth, this.maxHeight = o.maxHeight, this.maxArea = o.maxArea;\n } else\n this.supportsAnyRegionAndSize = !1;\n } else {\n if (\"@id\" in t)\n this.uri = t[\"@id\"];\n else if (\"id\" in t)\n this.uri = t.id;\n else\n throw new Error(\"Unsupported IIIF Image\");\n if (\"type\" in t && t.type === \"ImageService3\")\n this.majorVersion = 3;\n else if (\"@type\" in t && t[\"@type\"] === \"iiif:Image\" || \"@context\" in t && t[\"@context\"] === jr)\n this.majorVersion = 2;\n else if (\"@context\" in t && t[\"@context\"] === Nr)\n this.majorVersion = 1;\n else\n throw new Error(\"Unsupported IIIF Image\");\n if (\"profile\" in t) {\n const i = Ei(t);\n this.supportsAnyRegionAndSize = i.supportsAnyRegionAndSize, this.maxWidth = i.maxWidth, this.maxHeight = i.maxHeight, this.maxArea = i.maxArea;\n } else\n this.supportsAnyRegionAndSize = !1;\n }\n if (t.width !== void 0)\n this.width = t.width;\n else if (e)\n this.width = e.width;\n else\n throw new Error(\"Width not present on either Canvas or Image Resource\");\n if (t.height !== void 0)\n this.height = t.height;\n else if (e)\n this.height = e.height;\n else\n throw new Error(\"Height not present on either Canvas or Image Resource\");\n }\n /**\n * Generates a IIIF Image API URL for the requested region and size\n * @param {ImageRequest} imageRequest - Image request object containing the desired region and size of the requested image\n * @returns {string} Image API URL that can be used to fetch the requested image\n */\n getImageUrl(t) {\n const { region: e, size: i } = t;\n let n, s, o, a, h;\n e ? (h = `${e.x},${e.y},${e.width},${e.height}`, o = e.height, a = e.width) : (h = \"full\", o = this.height, a = this.width);\n let c;\n if (i) {\n n = Math.round(i.width), s = Math.round(i.height);\n const g = String(n);\n let w = String(s);\n const y = a / o, I = s * y / y;\n s === Math.round(I) && (w = \"\"), c = `${g},${w}`;\n } else\n n = this.width, s = this.height, c = this.majorVersion === 2 ? \"full\" : \"max\";\n const l = n * s;\n if (this.maxWidth !== void 0 && n > this.maxWidth)\n throw new Error(`Width of requested image is too large: ${n} > ${this.maxWidth}`);\n if (this.maxHeight !== void 0 && s > this.maxHeight)\n throw new Error(`Height of requested image is too large: ${s} > ${this.maxHeight}`);\n if (this.maxArea !== void 0 && l > this.maxArea)\n throw new Error(`Area of requested image is too large: ${l} > ${this.maxArea}`);\n const u = this.majorVersion === 1 ? \"native\" : \"default\";\n return `${this.uri}/${h}/${c}/0/${u}.jpg`;\n }\n getThumbnail(t, e = \"cover\") {\n return ys({ width: this.width, height: this.height }, t, e, {\n supportsAnyRegionAndSize: this.supportsAnyRegionAndSize,\n maxWidth: this.maxWidth,\n maxHeight: this.maxHeight,\n maxArea: this.maxArea\n });\n }\n}\nlet hh = class vs extends ah {\n constructor(t) {\n super(t), this.embedded = !1;\n const e = Ei(t);\n let i;\n \"tiles\" in t && (i = t.tiles), this.tileZoomLevels = Qa({ width: this.width, height: this.height }, i, e.supportsAnyRegionAndSize), \"sizes\" in t && (this.sizes = t.sizes);\n }\n /**\n * Parses a IIIF image and returns a [Image](#image) containing the parsed version\n * @param {any} iiifImage - Source data of IIIF Image\n * @param {MajorVersion} [majorVersion=null] - IIIF API version of Image. If not provided, it will be determined automatically\n * @returns {Image} Parsed IIIF Image\n * @static\n */\n static parse(t, e = null) {\n let i;\n return e === 1 ? i = rs.parse(t) : e === 2 ? i = ji.parse(t) : e === 3 ? i = Bi.parse(t) : i = gs.parse(t), new vs(i);\n }\n /**\n * Returns a Image request object for a tile with the requested zoom level, column, and row\n * @param {TileZoomLevel} zoomLevel - Desired zoom level of the requested tile\n * @param {number} column - Column of the requested tile\n * @param {number} row - Row of the requested tile\n * @returns {ImageRequest} Image request object that can be used to fetch the requested tile\n */\n getIiifTile(t, e, i) {\n return ms({ width: this.width, height: this.height }, t, e, i);\n }\n /**\n * Returns a Image request object for the requested region and size\n * @param {SizeObject} size - Size of the requested thumbnail\n * @param {'cover' | 'contain'} mode - Desired fit mode of the requested thumbnail\n * @returns {ImageRequest} Image request object that can be used to fetch the requested thumbnail\n */\n getThumbnail(t, e = \"cover\") {\n return ys({ width: this.width, height: this.height }, t, e, {\n supportsAnyRegionAndSize: this.supportsAnyRegionAndSize,\n sizes: this.sizes,\n tileZoomLevels: this.tileZoomLevels,\n maxWidth: this.maxWidth,\n maxHeight: this.maxHeight,\n maxArea: this.maxArea\n });\n }\n};\nconst pn = m.record(m.string(), m.string().array());\nm.object({\n label: pn.optional(),\n value: pn.optional()\n});\nasync function xs(r, t = {}) {\n let e;\n if (t.cache && (e = await t.cache.match(r)), e || (e = await fetch(r, {\n signal: t.abortSignal\n }), t.cache && t.cache.put(r, e.clone())), !e.ok)\n throw new Error(e.statusText);\n return e;\n}\nasync function ch(r, t = {}) {\n return await (await xs(r, t)).json();\n}\nasync function lh(r, t = {}) {\n return await ch(`${r}/info.json`, t);\n}\nfunction uh(r, t) {\n return new Promise((e, i) => {\n const n = new Image();\n let s = !1;\n n.addEventListener(\"load\", () => e(n)), n.addEventListener(\"error\", async () => {\n if (s)\n i(new DOMException(\"Loading image aborted by user\", \"AbortError\"));\n else\n try {\n throw await xs(r, { abortSignal: t }), new Error(\"Image failed to load by setting Image src but downloaded successfully using fetch\");\n } catch (o) {\n i(o);\n }\n }), n.crossOrigin = \"anonymous\", n.src = r, t && t.addEventListener(\"abort\", () => {\n s = !0, n.src = \"\";\n });\n });\n}\nfunction Ts(r, t = !1) {\n switch (r.type) {\n case \"Polygon\":\n return r.coordinates ? {\n ...r,\n coordinates: gn(r.coordinates, t)\n } : r;\n case \"MultiPolygon\":\n return r.coordinates ? {\n ...r,\n coordinates: r.coordinates.map((e) => gn(e, t))\n } : r;\n case \"GeometryCollection\":\n return {\n ...r,\n geometries: r.geometries.map((e) => Ts(e, t))\n };\n default:\n return r;\n }\n}\nfunction gn(r, t) {\n if (r.length === 0)\n return r;\n const e = [];\n for (let i = 0; i < r.length; i++)\n e.push(dh(r[i], i === 0 ? t : !t));\n return e;\n}\nfunction dh(r, t) {\n let e = 0, i = 0;\n for (let n = 0, s = r.length, o = s - 1; n < s; o = n++) {\n const a = (r[n][0] - r[o][0]) * (r[o][1] + r[n][1]), h = e + a;\n i += Math.abs(e) >= Math.abs(a) ? e - h + a : a - h + e, e = h;\n }\n return e + i >= 0 != !!t ? r.slice().reverse() : r;\n}\nfunction gt(r) {\n return Array.isArray(r) && r.length === 2 && typeof r[0] == \"number\" && typeof r[1] == \"number\";\n}\nfunction Et(r) {\n return Array.isArray(r) && r.every(gt);\n}\nfunction fh(r) {\n return Array.isArray(r) && r.every(gt);\n}\nfunction It(r) {\n return Array.isArray(r) && r.every(fh);\n}\nfunction jt(r) {\n return Array.isArray(r) && r.every(gt);\n}\nfunction Bt(r) {\n return Array.isArray(r) && r.every(Et);\n}\nfunction Dt(r) {\n return Array.isArray(r) && r.every(It);\n}\nfunction qr(r) {\n if (r = r.filter(function(t, e, i) {\n return e === 0 || !Gi(t, i[e - 1]);\n }), r.length < 2)\n throw new Error(\"LineString should contain at least 2 points\");\n return r;\n}\nfunction Di(r) {\n if (r = r.filter(function(t, e, i) {\n return e === 0 || !Gi(t, i[e - 1]);\n }), mh(r) && r.splice(-1), r.length < 3)\n throw new Error(\"Ring should contain at least 3 points\");\n return r;\n}\nfunction bs(r) {\n return r.map((t) => Di(t));\n}\nfunction ph(r) {\n return r.map((t) => qr(t));\n}\nfunction gh(r) {\n return r.map((t) => bs(t));\n}\nfunction Je(r) {\n return {\n type: \"Point\",\n coordinates: r\n };\n}\nfunction Ke(r) {\n return {\n type: \"LineString\",\n coordinates: r\n };\n}\nfunction Qe(r, t = !0) {\n const e = {\n type: \"Polygon\",\n coordinates: t ? r.map((i) => [...i, i[0]]) : r\n };\n return Ts(e);\n}\nfunction mh(r) {\n return Array.isArray(r) && r.length >= 2 && Gi(r[0], r[r.length - 1]);\n}\nfunction Gi(r, t) {\n return r === t ? !0 : r == null || t == null ? !1 : r[0] == t[0] && r[1] == t[1];\n}\nfunction yh(r) {\n return [r[0], -r[1]];\n}\nfunction Br(r, t) {\n return [\n (t[0] - r[0]) / 2 + r[0],\n (t[1] - r[1]) / 2 + r[1]\n ];\n}\nfunction wh(r, t, e) {\n return [\n r[0] * e + t[0] * (1 - e),\n r[1] * e + t[1] * (1 - e)\n ];\n}\nfunction vt(r, t) {\n if (Et(r) && r.length == 2)\n return vt(r[0], r[1]);\n if (gt(r) && gt(t))\n return Math.sqrt((t[0] - r[0]) ** 2 + (t[1] - r[1]) ** 2);\n throw new Error(\"Input type not supported\");\n}\nfunction vh(r) {\n return r * (Math.PI / 180);\n}\nfunction Gt(r) {\n return typeof r == \"object\" && r !== null && r.type === \"Point\" && gt(r.coordinates);\n}\nfunction Ft(r) {\n return typeof r == \"object\" && r !== null && r.type === \"LineString\" && Et(r.coordinates);\n}\nfunction Ut(r) {\n return typeof r == \"object\" && r !== null && r.type === \"Polygon\" && Array.isArray(r.coordinates) && It(r.coordinates);\n}\nfunction Wt(r) {\n return typeof r == \"object\" && r !== null && r.type === \"MultiPoint\" && jt(r.coordinates);\n}\nfunction Vt(r) {\n return typeof r == \"object\" && r !== null && r.type === \"MultiLineString\" && Bt(r.coordinates);\n}\nfunction zt(r) {\n return typeof r == \"object\" && r !== null && r.type === \"MultiPolygon\" && Array.isArray(r.coordinates) && Dt(r.coordinates);\n}\nfunction xh(r) {\n const t = typeof r == \"object\" && r !== null, i = t && \"type\" in r && typeof r.type == \"string\" && (r.type === \"Point\" || r.type === \"LineString\" || r.type === \"Polygon\" || r.type === \"MultiPoint\" || r.type === \"MultiLineString\" || r.type === \"MultiPolygon\"), n = t && \"coordinates\" in r && Array.isArray(r.coordinates);\n return i && n;\n}\nfunction Ee(r) {\n return r.coordinates;\n}\nfunction Ie(r) {\n return qr(r.coordinates);\n}\nfunction Se(r, t = !1) {\n let e = r.coordinates;\n return e = bs(e), t ? e.map((i) => [...i, i[0]]) : e;\n}\nfunction Th(r) {\n return r.coordinates;\n}\nfunction bh(r) {\n return ph(r.coordinates);\n}\nfunction Mh(r, t = !1) {\n let e = r.coordinates;\n return e = gh(e), t ? e.map((i) => i.map((n) => [...n, n[0]])) : e;\n}\nfunction _h(r) {\n if (Gt(r))\n return Ee(r);\n if (Ft(r))\n return Ie(r);\n if (Ut(r))\n return Se(r);\n if (Wt(r))\n return Th(r);\n if (Vt(r))\n return bh(r);\n if (zt(r))\n return Mh(r);\n throw new Error(\"Geometry type not supported\");\n}\nfunction tr(r) {\n return r.coordinates.map((t) => ({\n type: \"Point\",\n coordinates: t\n }));\n}\nfunction er(r) {\n return r.coordinates.map((t) => ({\n type: \"LineString\",\n coordinates: t\n }));\n}\nfunction rr(r) {\n return r.coordinates.map((t) => ({\n type: \"Polygon\",\n coordinates: t\n }));\n}\nfunction ir(r) {\n return {\n type: \"MultiPoint\",\n coordinates: r.map((t) => t.coordinates)\n };\n}\nfunction nr(r) {\n return {\n type: \"MultiLineString\",\n coordinates: r.map((t) => t.coordinates)\n };\n}\nfunction sr(r) {\n return {\n type: \"MultiPolygon\",\n coordinates: r.map((t) => t.coordinates)\n };\n}\nfunction mn(r) {\n let t = Number.POSITIVE_INFINITY, e = Number.NEGATIVE_INFINITY;\n for (const i of r)\n t === void 0 ? i >= i && (t = e = i) : (t > i && (t = i), e < i && (e = i));\n return [t, e];\n}\nfunction lt(r) {\n if (gt(r) && (r = [r]), It(r) && (r = r.flat()), xh(r))\n return lt(_h(r));\n const t = [], e = [];\n for (const a of r)\n t.push(a[0]), e.push(a[1]);\n const [i, n] = mn(t), [s, o] = mn(e);\n return [i, s, n, o];\n}\nfunction yn(r, t) {\n return [\n Math.min(r[0], t[0]),\n Math.min(r[1], t[1]),\n Math.max(r[2], t[2]),\n Math.max(r[3], t[3])\n ];\n}\nfunction Eh(r, t) {\n const e = r[2] >= t[0] && t[2] >= r[0], i = r[3] >= t[1] && t[3] >= r[1];\n return e && i;\n}\nfunction Ve(r) {\n return [\n [r[0], r[1]],\n [r[2], r[1]],\n [r[2], r[3]],\n [r[0], r[3]]\n ];\n}\nfunction Ih(r) {\n return [Ve(r)];\n}\nfunction Ms(r) {\n return [\n [r[0], r[1]],\n [r[2], r[3]]\n ];\n}\nfunction Sh(r) {\n return vt(Ms(r));\n}\nfunction Ah(r) {\n return vt(Ms(lt(r)));\n}\nfunction Ii(r) {\n return [(r[0] + r[2]) / 2, (r[1] + r[3]) / 2];\n}\nfunction Ph(r) {\n return [r[2] - r[0], r[3] - r[1]];\n}\nfunction Si(r) {\n return [\n 0.5 * (vt(r[0], r[1]) + vt(r[2], r[3])),\n 0.5 * (vt(r[1], r[2]) + vt(r[3], r[0]))\n ];\n}\nfunction _s(r, t) {\n return Math.sqrt(r[0] * r[1] / (t[0] * t[1]));\n}\nfunction wn(r, t) {\n return _s(Si(r), Si(t));\n}\nfunction Ch(r) {\n const t = parseInt(r.replace(/^#/, \"\"), 16), e = t >> 16 & 255, i = t >> 8 & 255, n = t & 255;\n return [e, i, n];\n}\nfunction or(r) {\n return Ch(r).map((t) => t / 255);\n}\nfunction Rh(r, t) {\n return !r || !t || r.size !== t.size ? !1 : [...r].every((e) => t.has(e));\n}\nfunction vn(r, t) {\n if (r !== void 0 && t !== void 0)\n return Math.max(r, t);\n if (r !== void 0)\n return r;\n if (t !== void 0)\n return t;\n}\nfunction kh(r) {\n let t;\n try {\n t = new URL(r);\n } catch {\n return !1;\n }\n return t.protocol === \"http:\" || t.protocol === \"https:\";\n}\nfunction Oh([r, t]) {\n const i = 6378137 * vh(r), n = i / r, s = 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + t * (Math.PI / 180) / 2)) * n;\n return [i, s];\n}\nfunction xn([r, t]) {\n const i = Math.PI * 6378137, n = r / i * 180;\n let s = t / i * 180;\n return s = 180 / Math.PI * (2 * Math.atan(Math.exp(s * Math.PI / 180)) - Math.PI / 2), [n, s];\n}\nvar yt = 63710088e-1, Es = {\n centimeters: yt * 100,\n centimetres: yt * 100,\n degrees: yt / 111325,\n feet: yt * 3.28084,\n inches: yt * 39.37,\n kilometers: yt / 1e3,\n kilometres: yt / 1e3,\n meters: yt,\n metres: yt,\n miles: yt / 1609.344,\n millimeters: yt * 1e3,\n millimetres: yt * 1e3,\n nauticalmiles: yt / 1852,\n radians: 1,\n yards: yt * 1.0936\n};\nfunction Nh(r, t, e) {\n e === void 0 && (e = {});\n var i = { type: \"Feature\" };\n return (e.id === 0 || e.id) && (i.id = e.id), e.bbox && (i.bbox = e.bbox), i.properties = t || {}, i.geometry = r, i;\n}\nfunction Lh(r, t, e) {\n if (e === void 0 && (e = {}), !r)\n throw new Error(\"coordinates is required\");\n if (!Array.isArray(r))\n throw new Error(\"coordinates must be an Array\");\n if (r.length < 2)\n throw new Error(\"coordinates must be at least 2 numbers long\");\n if (!Tn(r[0]) || !Tn(r[1]))\n throw new Error(\"coordinates must contain numbers\");\n var i = {\n type: \"Point\",\n coordinates: r\n };\n return Nh(i, t, e);\n}\nfunction jh(r, t) {\n t === void 0 && (t = \"kilometers\");\n var e = Es[t];\n if (!e)\n throw new Error(t + \" units is invalid\");\n return r * e;\n}\nfunction Bh(r, t) {\n t === void 0 && (t = \"kilometers\");\n var e = Es[t];\n if (!e)\n throw new Error(t + \" units is invalid\");\n return r / e;\n}\nfunction Ai(r) {\n var t = r % (2 * Math.PI);\n return t * 180 / Math.PI;\n}\nfunction At(r) {\n var t = r % 360;\n return t * Math.PI / 180;\n}\nfunction Tn(r) {\n return !isNaN(r) && r !== null && !Array.isArray(r);\n}\nfunction we(r) {\n if (!r)\n throw new Error(\"coord is required\");\n if (!Array.isArray(r)) {\n if (r.type === \"Feature\" && r.geometry !== null && r.geometry.type === \"Point\")\n return r.geometry.coordinates;\n if (r.type === \"Point\")\n return r.coordinates;\n }\n if (Array.isArray(r) && r.length >= 2 && !Array.isArray(r[0]) && !Array.isArray(r[1]))\n return r;\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\n}\nfunction Dh(r) {\n return r.type === \"Feature\" ? r.geometry : r;\n}\nfunction Is(r, t, e) {\n if (e === void 0 && (e = {}), e.final === !0)\n return Gh(r, t);\n var i = we(r), n = we(t), s = At(i[0]), o = At(n[0]), a = At(i[1]), h = At(n[1]), c = Math.sin(o - s) * Math.cos(h), l = Math.cos(a) * Math.sin(h) - Math.sin(a) * Math.cos(h) * Math.cos(o - s);\n return Ai(Math.atan2(c, l));\n}\nfunction Gh(r, t) {\n var e = Is(t, r);\n return e = (e + 180) % 360, e;\n}\nfunction Fh(r, t, e, i) {\n i === void 0 && (i = {});\n var n = we(r), s = At(n[0]), o = At(n[1]), a = At(e), h = Bh(t, i.units), c = Math.asin(Math.sin(o) * Math.cos(h) + Math.cos(o) * Math.sin(h) * Math.cos(a)), l = s + Math.atan2(Math.sin(a) * Math.sin(h) * Math.cos(o), Math.cos(h) - Math.sin(o) * Math.sin(c)), u = Ai(l), g = Ai(c);\n return Lh([u, g], i.properties);\n}\nfunction Fi(r, t, e) {\n e === void 0 && (e = {});\n var i = we(r), n = we(t), s = At(n[1] - i[1]), o = At(n[0] - i[0]), a = At(i[1]), h = At(n[1]), c = Math.pow(Math.sin(s / 2), 2) + Math.pow(Math.sin(o / 2), 2) * Math.cos(a) * Math.cos(h);\n return jh(2 * Math.atan2(Math.sqrt(c), Math.sqrt(1 - c)), e.units);\n}\nfunction Dr(r, t) {\n var e = Fi(r, t), i = Is(r, t), n = Fh(r, e / 2, i);\n return n;\n}\nvar Uh = Object.defineProperty, Wh = (r, t, e) => t in r ? Uh(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e, Vh = (r, t, e) => (Wh(r, typeof t != \"symbol\" ? t + \"\" : t, e), e), Ui = (r, t, e) => {\n if (!t.has(r))\n throw TypeError(\"Cannot \" + e);\n}, kt = (r, t, e) => (Ui(r, t, \"read from private field\"), e ? e.call(r) : t.get(r)), Ss = (r, t, e) => {\n if (t.has(r))\n throw TypeError(\"Cannot add the same private member more than once\");\n t instanceof WeakSet ? t.add(r) : t.set(r, e);\n}, ai = (r, t, e, i) => (Ui(r, t, \"write to private field\"), i ? i.call(r, e) : t.set(r, e), e), bn = (r, t, e) => (Ui(r, t, \"access private method\"), e);\nfunction As(r) {\n if (r.__esModule)\n return r;\n var t = r.default;\n if (typeof t == \"function\") {\n var e = function i() {\n return this instanceof i ? Reflect.construct(t, arguments, this.constructor) : t.apply(this, arguments);\n };\n e.prototype = t.prototype;\n } else\n e = {};\n return Object.defineProperty(e, \"__esModule\", { value: !0 }), Object.keys(r).forEach(function(i) {\n var n = Object.getOwnPropertyDescriptor(r, i);\n Object.defineProperty(e, i, n.get ? n : {\n enumerable: !0,\n get: function() {\n return r[i];\n }\n });\n }), e;\n}\nvar X = {};\nconst zh = Object.prototype.toString;\nfunction ze(r) {\n const t = zh.call(r);\n return t.endsWith(\"Array]\") && !t.includes(\"Big\");\n}\nconst Zh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n isAnyArray: ze\n}, Symbol.toStringTag, { value: \"Module\" })), $h = /* @__PURE__ */ As(Zh);\nfunction qh(r) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!ze(r))\n throw new TypeError(\"input must be an array\");\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n var e = t.fromIndex, i = e === void 0 ? 0 : e, n = t.toIndex, s = n === void 0 ? r.length : n;\n if (i < 0 || i >= r.length || !Number.isInteger(i))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (s <= i || s > r.length || !Number.isInteger(s))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = r[i], a = i + 1; a < s; a++)\n r[a] > o && (o = r[a]);\n return o;\n}\nfunction Xh(r) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!ze(r))\n throw new TypeError(\"input must be an array\");\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n var e = t.fromIndex, i = e === void 0 ? 0 : e, n = t.toIndex, s = n === void 0 ? r.length : n;\n if (i < 0 || i >= r.length || !Number.isInteger(i))\n throw new Error(\"fromIndex must be a positive integer smaller than length\");\n if (s <= i || s > r.length || !Number.isInteger(s))\n throw new Error(\"toIndex must be an integer greater than fromIndex and at most equal to length\");\n for (var o = r[i], a = i + 1; a < s; a++)\n r[a] < o && (o = r[a]);\n return o;\n}\nfunction Hh(r) {\n var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (ze(r)) {\n if (r.length === 0)\n throw new TypeError(\"input must not be empty\");\n } else\n throw new TypeError(\"input must be an array\");\n var e;\n if (t.output !== void 0) {\n if (!ze(t.output))\n throw new TypeError(\"output option must be an array if specified\");\n e = t.output;\n } else\n e = new Array(r.length);\n var i = Xh(r), n = qh(r);\n if (i === n)\n throw new RangeError(\"minimum and maximum input values are equal. Cannot rescale a constant array\");\n var s = t.min, o = s === void 0 ? t.autoMinMax ? i : 0 : s, a = t.max, h = a === void 0 ? t.autoMinMax ? n : 1 : a;\n if (o >= h)\n throw new RangeError(\"min option must be smaller than max option\");\n for (var c = (h - o) / (n - i), l = 0; l < r.length; l++)\n e[l] = (r[l] - i) * c + o;\n return e;\n}\nconst Yh = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: Hh\n}, Symbol.toStringTag, { value: \"Module\" })), Jh = /* @__PURE__ */ As(Yh);\nObject.defineProperty(X, \"__esModule\", { value: !0 });\nvar wt = $h, Mn = Jh;\nconst ar = \" \".repeat(2), Ps = \" \".repeat(4);\nfunction Kh() {\n return Cs(this);\n}\nfunction Cs(r, t = {}) {\n const {\n maxRows: e = 15,\n maxColumns: i = 10,\n maxNumSize: n = 8,\n padMinus: s = \"auto\"\n } = t;\n return `${r.constructor.name} {\n${ar}[\n${Ps}${Qh(r, e, i, n, s)}\n${ar}]\n${ar}rows: ${r.rows}\n${ar}columns: ${r.columns}\n}`;\n}\nfunction Qh(r, t, e, i, n) {\n const { rows: s, columns: o } = r, a = Math.min(s, t), h = Math.min(o, e), c = [];\n if (n === \"auto\") {\n n = !1;\n t:\n for (let l = 0; l < a; l++)\n for (let u = 0; u < h; u++)\n if (r.get(l, u) < 0) {\n n = !0;\n break t;\n }\n }\n for (let l = 0; l < a; l++) {\n let u = [];\n for (let g = 0; g < h; g++)\n u.push(tc(r.get(l, g), i, n));\n c.push(`${u.join(\" \")}`);\n }\n return h !== o && (c[c.length - 1] += ` ... ${o - e} more columns`), a !== s && c.push(`... ${s - t} more rows`), c.join(`\n${Ps}`);\n}\nfunction tc(r, t, e) {\n return (r >= 0 && e ? ` ${_n(r, t - 1)}` : _n(r, t)).padEnd(t);\n}\nfunction _n(r, t) {\n let e = r.toString();\n if (e.length <= t)\n return e;\n let i = r.toFixed(t);\n if (i.length > t && (i = r.toFixed(Math.max(0, t - (i.length - t)))), i.length <= t && !i.startsWith(\"0.000\") && !i.startsWith(\"-0.000\"))\n return i;\n let n = r.toExponential(t);\n return n.length > t && (n = r.toExponential(Math.max(0, t - (n.length - t)))), n.slice(0);\n}\nfunction ec(r, t) {\n r.prototype.add = function(e) {\n return typeof e == \"number\" ? this.addS(e) : this.addM(e);\n }, r.prototype.addS = function(e) {\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) + e);\n return this;\n }, r.prototype.addM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) + e.get(i, n));\n return this;\n }, r.add = function(e, i) {\n return new t(e).add(i);\n }, r.prototype.sub = function(e) {\n return typeof e == \"number\" ? this.subS(e) : this.subM(e);\n }, r.prototype.subS = function(e) {\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) - e);\n return this;\n }, r.prototype.subM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) - e.get(i, n));\n return this;\n }, r.sub = function(e, i) {\n return new t(e).sub(i);\n }, r.prototype.subtract = r.prototype.sub, r.prototype.subtractS = r.prototype.subS, r.prototype.subtractM = r.prototype.subM, r.subtract = r.sub, r.prototype.mul = function(e) {\n return typeof e == \"number\" ? this.mulS(e) : this.mulM(e);\n }, r.prototype.mulS = function(e) {\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) * e);\n return this;\n }, r.prototype.mulM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) * e.get(i, n));\n return this;\n }, r.mul = function(e, i) {\n return new t(e).mul(i);\n }, r.prototype.multiply = r.prototype.mul, r.prototype.multiplyS = r.prototype.mulS, r.prototype.multiplyM = r.prototype.mulM, r.multiply = r.mul, r.prototype.div = function(e) {\n return typeof e == \"number\" ? this.divS(e) : this.divM(e);\n }, r.prototype.divS = function(e) {\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) / e);\n return this;\n }, r.prototype.divM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) / e.get(i, n));\n return this;\n }, r.div = function(e, i) {\n return new t(e).div(i);\n }, r.prototype.divide = r.prototype.div, r.prototype.divideS = r.prototype.divS, r.prototype.divideM = r.prototype.divM, r.divide = r.div, r.prototype.mod = function(e) {\n return typeof e == \"number\" ? this.modS(e) : this.modM(e);\n }, r.prototype.modS = function(e) {\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) % e);\n return this;\n }, r.prototype.modM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) % e.get(i, n));\n return this;\n }, r.mod = function(e, i) {\n return new t(e).mod(i);\n }, r.prototype.modulus = r.prototype.mod, r.prototype.modulusS = r.prototype.modS, r.prototype.modulusM = r.prototype.modM, r.modulus = r.mod, r.prototype.and = function(e) {\n return typeof e == \"number\" ? this.andS(e) : this.andM(e);\n }, r.prototype.andS = function(e) {\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) & e);\n return this;\n }, r.prototype.andM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) & e.get(i, n));\n return this;\n }, r.and = function(e, i) {\n return new t(e).and(i);\n }, r.prototype.or = function(e) {\n return typeof e == \"number\" ? this.orS(e) : this.orM(e);\n }, r.prototype.orS = function(e) {\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) | e);\n return this;\n }, r.prototype.orM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) | e.get(i, n));\n return this;\n }, r.or = function(e, i) {\n return new t(e).or(i);\n }, r.prototype.xor = function(e) {\n return typeof e == \"number\" ? this.xorS(e) : this.xorM(e);\n }, r.prototype.xorS = function(e) {\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) ^ e);\n return this;\n }, r.prototype.xorM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) ^ e.get(i, n));\n return this;\n }, r.xor = function(e, i) {\n return new t(e).xor(i);\n }, r.prototype.leftShift = function(e) {\n return typeof e == \"number\" ? this.leftShiftS(e) : this.leftShiftM(e);\n }, r.prototype.leftShiftS = function(e) {\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) << e);\n return this;\n }, r.prototype.leftShiftM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) << e.get(i, n));\n return this;\n }, r.leftShift = function(e, i) {\n return new t(e).leftShift(i);\n }, r.prototype.signPropagatingRightShift = function(e) {\n return typeof e == \"number\" ? this.signPropagatingRightShiftS(e) : this.signPropagatingRightShiftM(e);\n }, r.prototype.signPropagatingRightShiftS = function(e) {\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) >> e);\n return this;\n }, r.prototype.signPropagatingRightShiftM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) >> e.get(i, n));\n return this;\n }, r.signPropagatingRightShift = function(e, i) {\n return new t(e).signPropagatingRightShift(i);\n }, r.prototype.rightShift = function(e) {\n return typeof e == \"number\" ? this.rightShiftS(e) : this.rightShiftM(e);\n }, r.prototype.rightShiftS = function(e) {\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) >>> e);\n return this;\n }, r.prototype.rightShiftM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, this.get(i, n) >>> e.get(i, n));\n return this;\n }, r.rightShift = function(e, i) {\n return new t(e).rightShift(i);\n }, r.prototype.zeroFillRightShift = r.prototype.rightShift, r.prototype.zeroFillRightShiftS = r.prototype.rightShiftS, r.prototype.zeroFillRightShiftM = r.prototype.rightShiftM, r.zeroFillRightShift = r.rightShift, r.prototype.not = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, ~this.get(e, i));\n return this;\n }, r.not = function(e) {\n return new t(e).not();\n }, r.prototype.abs = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.abs(this.get(e, i)));\n return this;\n }, r.abs = function(e) {\n return new t(e).abs();\n }, r.prototype.acos = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.acos(this.get(e, i)));\n return this;\n }, r.acos = function(e) {\n return new t(e).acos();\n }, r.prototype.acosh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.acosh(this.get(e, i)));\n return this;\n }, r.acosh = function(e) {\n return new t(e).acosh();\n }, r.prototype.asin = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.asin(this.get(e, i)));\n return this;\n }, r.asin = function(e) {\n return new t(e).asin();\n }, r.prototype.asinh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.asinh(this.get(e, i)));\n return this;\n }, r.asinh = function(e) {\n return new t(e).asinh();\n }, r.prototype.atan = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.atan(this.get(e, i)));\n return this;\n }, r.atan = function(e) {\n return new t(e).atan();\n }, r.prototype.atanh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.atanh(this.get(e, i)));\n return this;\n }, r.atanh = function(e) {\n return new t(e).atanh();\n }, r.prototype.cbrt = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.cbrt(this.get(e, i)));\n return this;\n }, r.cbrt = function(e) {\n return new t(e).cbrt();\n }, r.prototype.ceil = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.ceil(this.get(e, i)));\n return this;\n }, r.ceil = function(e) {\n return new t(e).ceil();\n }, r.prototype.clz32 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.clz32(this.get(e, i)));\n return this;\n }, r.clz32 = function(e) {\n return new t(e).clz32();\n }, r.prototype.cos = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.cos(this.get(e, i)));\n return this;\n }, r.cos = function(e) {\n return new t(e).cos();\n }, r.prototype.cosh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.cosh(this.get(e, i)));\n return this;\n }, r.cosh = function(e) {\n return new t(e).cosh();\n }, r.prototype.exp = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.exp(this.get(e, i)));\n return this;\n }, r.exp = function(e) {\n return new t(e).exp();\n }, r.prototype.expm1 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.expm1(this.get(e, i)));\n return this;\n }, r.expm1 = function(e) {\n return new t(e).expm1();\n }, r.prototype.floor = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.floor(this.get(e, i)));\n return this;\n }, r.floor = function(e) {\n return new t(e).floor();\n }, r.prototype.fround = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.fround(this.get(e, i)));\n return this;\n }, r.fround = function(e) {\n return new t(e).fround();\n }, r.prototype.log = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.log(this.get(e, i)));\n return this;\n }, r.log = function(e) {\n return new t(e).log();\n }, r.prototype.log1p = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.log1p(this.get(e, i)));\n return this;\n }, r.log1p = function(e) {\n return new t(e).log1p();\n }, r.prototype.log10 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.log10(this.get(e, i)));\n return this;\n }, r.log10 = function(e) {\n return new t(e).log10();\n }, r.prototype.log2 = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.log2(this.get(e, i)));\n return this;\n }, r.log2 = function(e) {\n return new t(e).log2();\n }, r.prototype.round = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.round(this.get(e, i)));\n return this;\n }, r.round = function(e) {\n return new t(e).round();\n }, r.prototype.sign = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.sign(this.get(e, i)));\n return this;\n }, r.sign = function(e) {\n return new t(e).sign();\n }, r.prototype.sin = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.sin(this.get(e, i)));\n return this;\n }, r.sin = function(e) {\n return new t(e).sin();\n }, r.prototype.sinh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.sinh(this.get(e, i)));\n return this;\n }, r.sinh = function(e) {\n return new t(e).sinh();\n }, r.prototype.sqrt = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.sqrt(this.get(e, i)));\n return this;\n }, r.sqrt = function(e) {\n return new t(e).sqrt();\n }, r.prototype.tan = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.tan(this.get(e, i)));\n return this;\n }, r.tan = function(e) {\n return new t(e).tan();\n }, r.prototype.tanh = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.tanh(this.get(e, i)));\n return this;\n }, r.tanh = function(e) {\n return new t(e).tanh();\n }, r.prototype.trunc = function() {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, Math.trunc(this.get(e, i)));\n return this;\n }, r.trunc = function(e) {\n return new t(e).trunc();\n }, r.pow = function(e, i) {\n return new t(e).pow(i);\n }, r.prototype.pow = function(e) {\n return typeof e == \"number\" ? this.powS(e) : this.powM(e);\n }, r.prototype.powS = function(e) {\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, Math.pow(this.get(i, n), e));\n return this;\n }, r.prototype.powM = function(e) {\n if (e = t.checkMatrix(e), this.rows !== e.rows || this.columns !== e.columns)\n throw new RangeError(\"Matrices dimensions must be equal\");\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.set(i, n, Math.pow(this.get(i, n), e.get(i, n)));\n return this;\n };\n}\nfunction bt(r, t, e) {\n let i = e ? r.rows : r.rows - 1;\n if (t < 0 || t > i)\n throw new RangeError(\"Row index out of range\");\n}\nfunction Mt(r, t, e) {\n let i = e ? r.columns : r.columns - 1;\n if (t < 0 || t > i)\n throw new RangeError(\"Column index out of range\");\n}\nfunction ue(r, t) {\n if (t.to1DArray && (t = t.to1DArray()), t.length !== r.columns)\n throw new RangeError(\n \"vector size must be the same as the number of columns\"\n );\n return t;\n}\nfunction de(r, t) {\n if (t.to1DArray && (t = t.to1DArray()), t.length !== r.rows)\n throw new RangeError(\"vector size must be the same as the number of rows\");\n return t;\n}\nfunction Wi(r, t) {\n if (!wt.isAnyArray(t))\n throw new TypeError(\"row indices must be an array\");\n for (let e = 0; e < t.length; e++)\n if (t[e] < 0 || t[e] >= r.rows)\n throw new RangeError(\"row indices are out of range\");\n}\nfunction Vi(r, t) {\n if (!wt.isAnyArray(t))\n throw new TypeError(\"column indices must be an array\");\n for (let e = 0; e < t.length; e++)\n if (t[e] < 0 || t[e] >= r.columns)\n throw new RangeError(\"column indices are out of range\");\n}\nfunction Pi(r, t, e, i, n) {\n if (arguments.length !== 5)\n throw new RangeError(\"expected 4 arguments\");\n if (hr(\"startRow\", t), hr(\"endRow\", e), hr(\"startColumn\", i), hr(\"endColumn\", n), t > e || i > n || t < 0 || t >= r.rows || e < 0 || e >= r.rows || i < 0 || i >= r.columns || n < 0 || n >= r.columns)\n throw new RangeError(\"Submatrix indices are out of range\");\n}\nfunction Xr(r, t = 0) {\n let e = [];\n for (let i = 0; i < r; i++)\n e.push(t);\n return e;\n}\nfunction hr(r, t) {\n if (typeof t != \"number\")\n throw new TypeError(`${r} must be a number`);\n}\nfunction he(r) {\n if (r.isEmpty())\n throw new Error(\"Empty matrix has no elements to index\");\n}\nfunction rc(r) {\n let t = Xr(r.rows);\n for (let e = 0; e < r.rows; ++e)\n for (let i = 0; i < r.columns; ++i)\n t[e] += r.get(e, i);\n return t;\n}\nfunction ic(r) {\n let t = Xr(r.columns);\n for (let e = 0; e < r.rows; ++e)\n for (let i = 0; i < r.columns; ++i)\n t[i] += r.get(e, i);\n return t;\n}\nfunction nc(r) {\n let t = 0;\n for (let e = 0; e < r.rows; e++)\n for (let i = 0; i < r.columns; i++)\n t += r.get(e, i);\n return t;\n}\nfunction sc(r) {\n let t = Xr(r.rows, 1);\n for (let e = 0; e < r.rows; ++e)\n for (let i = 0; i < r.columns; ++i)\n t[e] *= r.get(e, i);\n return t;\n}\nfunction oc(r) {\n let t = Xr(r.columns, 1);\n for (let e = 0; e < r.rows; ++e)\n for (let i = 0; i < r.columns; ++i)\n t[i] *= r.get(e, i);\n return t;\n}\nfunction ac(r) {\n let t = 1;\n for (let e = 0; e < r.rows; e++)\n for (let i = 0; i < r.columns; i++)\n t *= r.get(e, i);\n return t;\n}\nfunction hc(r, t, e) {\n const i = r.rows, n = r.columns, s = [];\n for (let o = 0; o < i; o++) {\n let a = 0, h = 0, c = 0;\n for (let l = 0; l < n; l++)\n c = r.get(o, l) - e[o], a += c, h += c * c;\n t ? s.push((h - a * a / n) / (n - 1)) : s.push((h - a * a / n) / n);\n }\n return s;\n}\nfunction cc(r, t, e) {\n const i = r.rows, n = r.columns, s = [];\n for (let o = 0; o < n; o++) {\n let a = 0, h = 0, c = 0;\n for (let l = 0; l < i; l++)\n c = r.get(l, o) - e[o], a += c, h += c * c;\n t ? s.push((h - a * a / i) / (i - 1)) : s.push((h - a * a / i) / i);\n }\n return s;\n}\nfunction lc(r, t, e) {\n const i = r.rows, n = r.columns, s = i * n;\n let o = 0, a = 0, h = 0;\n for (let c = 0; c < i; c++)\n for (let l = 0; l < n; l++)\n h = r.get(c, l) - e, o += h, a += h * h;\n return t ? (a - o * o / s) / (s - 1) : (a - o * o / s) / s;\n}\nfunction uc(r, t) {\n for (let e = 0; e < r.rows; e++)\n for (let i = 0; i < r.columns; i++)\n r.set(e, i, r.get(e, i) - t[e]);\n}\nfunction dc(r, t) {\n for (let e = 0; e < r.rows; e++)\n for (let i = 0; i < r.columns; i++)\n r.set(e, i, r.get(e, i) - t[i]);\n}\nfunction fc(r, t) {\n for (let e = 0; e < r.rows; e++)\n for (let i = 0; i < r.columns; i++)\n r.set(e, i, r.get(e, i) - t);\n}\nfunction pc(r) {\n const t = [];\n for (let e = 0; e < r.rows; e++) {\n let i = 0;\n for (let n = 0; n < r.columns; n++)\n i += Math.pow(r.get(e, n), 2) / (r.columns - 1);\n t.push(Math.sqrt(i));\n }\n return t;\n}\nfunction gc(r, t) {\n for (let e = 0; e < r.rows; e++)\n for (let i = 0; i < r.columns; i++)\n r.set(e, i, r.get(e, i) / t[e]);\n}\nfunction mc(r) {\n const t = [];\n for (let e = 0; e < r.columns; e++) {\n let i = 0;\n for (let n = 0; n < r.rows; n++)\n i += Math.pow(r.get(n, e), 2) / (r.rows - 1);\n t.push(Math.sqrt(i));\n }\n return t;\n}\nfunction yc(r, t) {\n for (let e = 0; e < r.rows; e++)\n for (let i = 0; i < r.columns; i++)\n r.set(e, i, r.get(e, i) / t[i]);\n}\nfunction wc(r) {\n const t = r.size - 1;\n let e = 0;\n for (let i = 0; i < r.columns; i++)\n for (let n = 0; n < r.rows; n++)\n e += Math.pow(r.get(n, i), 2) / t;\n return Math.sqrt(e);\n}\nfunction vc(r, t) {\n for (let e = 0; e < r.rows; e++)\n for (let i = 0; i < r.columns; i++)\n r.set(e, i, r.get(e, i) / t);\n}\nclass G {\n static from1DArray(t, e, i) {\n if (t * e !== i.length)\n throw new RangeError(\"data length does not match given dimensions\");\n let n = new R(t, e);\n for (let s = 0; s < t; s++)\n for (let o = 0; o < e; o++)\n n.set(s, o, i[s * e + o]);\n return n;\n }\n static rowVector(t) {\n let e = new R(1, t.length);\n for (let i = 0; i < t.length; i++)\n e.set(0, i, t[i]);\n return e;\n }\n static columnVector(t) {\n let e = new R(t.length, 1);\n for (let i = 0; i < t.length; i++)\n e.set(i, 0, t[i]);\n return e;\n }\n static zeros(t, e) {\n return new R(t, e);\n }\n static ones(t, e) {\n return new R(t, e).fill(1);\n }\n static rand(t, e, i = {}) {\n if (typeof i != \"object\")\n throw new TypeError(\"options must be an object\");\n const { random: n = Math.random } = i;\n let s = new R(t, e);\n for (let o = 0; o < t; o++)\n for (let a = 0; a < e; a++)\n s.set(o, a, n());\n return s;\n }\n static randInt(t, e, i = {}) {\n if (typeof i != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: n = 0, max: s = 1e3, random: o = Math.random } = i;\n if (!Number.isInteger(n))\n throw new TypeError(\"min must be an integer\");\n if (!Number.isInteger(s))\n throw new TypeError(\"max must be an integer\");\n if (n >= s)\n throw new RangeError(\"min must be smaller than max\");\n let a = s - n, h = new R(t, e);\n for (let c = 0; c < t; c++)\n for (let l = 0; l < e; l++) {\n let u = n + Math.round(o() * a);\n h.set(c, l, u);\n }\n return h;\n }\n static eye(t, e, i) {\n e === void 0 && (e = t), i === void 0 && (i = 1);\n let n = Math.min(t, e), s = this.zeros(t, e);\n for (let o = 0; o < n; o++)\n s.set(o, o, i);\n return s;\n }\n static diag(t, e, i) {\n let n = t.length;\n e === void 0 && (e = n), i === void 0 && (i = e);\n let s = Math.min(n, e, i), o = this.zeros(e, i);\n for (let a = 0; a < s; a++)\n o.set(a, a, t[a]);\n return o;\n }\n static min(t, e) {\n t = this.checkMatrix(t), e = this.checkMatrix(e);\n let i = t.rows, n = t.columns, s = new R(i, n);\n for (let o = 0; o < i; o++)\n for (let a = 0; a < n; a++)\n s.set(o, a, Math.min(t.get(o, a), e.get(o, a)));\n return s;\n }\n static max(t, e) {\n t = this.checkMatrix(t), e = this.checkMatrix(e);\n let i = t.rows, n = t.columns, s = new this(i, n);\n for (let o = 0; o < i; o++)\n for (let a = 0; a < n; a++)\n s.set(o, a, Math.max(t.get(o, a), e.get(o, a)));\n return s;\n }\n static checkMatrix(t) {\n return G.isMatrix(t) ? t : new R(t);\n }\n static isMatrix(t) {\n return t != null && t.klass === \"Matrix\";\n }\n get size() {\n return this.rows * this.columns;\n }\n apply(t) {\n if (typeof t != \"function\")\n throw new TypeError(\"callback must be a function\");\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n t.call(this, e, i);\n return this;\n }\n to1DArray() {\n let t = [];\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n t.push(this.get(e, i));\n return t;\n }\n to2DArray() {\n let t = [];\n for (let e = 0; e < this.rows; e++) {\n t.push([]);\n for (let i = 0; i < this.columns; i++)\n t[e].push(this.get(e, i));\n }\n return t;\n }\n toJSON() {\n return this.to2DArray();\n }\n isRowVector() {\n return this.rows === 1;\n }\n isColumnVector() {\n return this.columns === 1;\n }\n isVector() {\n return this.rows === 1 || this.columns === 1;\n }\n isSquare() {\n return this.rows === this.columns;\n }\n isEmpty() {\n return this.rows === 0 || this.columns === 0;\n }\n isSymmetric() {\n if (this.isSquare()) {\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e <= t; e++)\n if (this.get(t, e) !== this.get(e, t))\n return !1;\n return !0;\n }\n return !1;\n }\n isDistance() {\n if (!this.isSymmetric())\n return !1;\n for (let t = 0; t < this.rows; t++)\n if (this.get(t, t) !== 0)\n return !1;\n return !0;\n }\n isEchelonForm() {\n let t = 0, e = 0, i = -1, n = !0, s = !1;\n for (; t < this.rows && n; ) {\n for (e = 0, s = !1; e < this.columns && s === !1; )\n this.get(t, e) === 0 ? e++ : this.get(t, e) === 1 && e > i ? (s = !0, i = e) : (n = !1, s = !0);\n t++;\n }\n return n;\n }\n isReducedEchelonForm() {\n let t = 0, e = 0, i = -1, n = !0, s = !1;\n for (; t < this.rows && n; ) {\n for (e = 0, s = !1; e < this.columns && s === !1; )\n this.get(t, e) === 0 ? e++ : this.get(t, e) === 1 && e > i ? (s = !0, i = e) : (n = !1, s = !0);\n for (let o = e + 1; o < this.rows; o++)\n this.get(t, o) !== 0 && (n = !1);\n t++;\n }\n return n;\n }\n echelonForm() {\n let t = this.clone(), e = 0, i = 0;\n for (; e < t.rows && i < t.columns; ) {\n let n = e;\n for (let s = e; s < t.rows; s++)\n t.get(s, i) > t.get(n, i) && (n = s);\n if (t.get(n, i) === 0)\n i++;\n else {\n t.swapRows(e, n);\n let s = t.get(e, i);\n for (let o = i; o < t.columns; o++)\n t.set(e, o, t.get(e, o) / s);\n for (let o = e + 1; o < t.rows; o++) {\n let a = t.get(o, i) / t.get(e, i);\n t.set(o, i, 0);\n for (let h = i + 1; h < t.columns; h++)\n t.set(o, h, t.get(o, h) - t.get(e, h) * a);\n }\n e++, i++;\n }\n }\n return t;\n }\n reducedEchelonForm() {\n let t = this.echelonForm(), e = t.columns, i = t.rows, n = i - 1;\n for (; n >= 0; )\n if (t.maxRow(n) === 0)\n n--;\n else {\n let s = 0, o = !1;\n for (; s < i && o === !1; )\n t.get(n, s) === 1 ? o = !0 : s++;\n for (let a = 0; a < n; a++) {\n let h = t.get(a, s);\n for (let c = s; c < e; c++) {\n let l = t.get(a, c) - h * t.get(n, c);\n t.set(a, c, l);\n }\n }\n n--;\n }\n return t;\n }\n set() {\n throw new Error(\"set method is unimplemented\");\n }\n get() {\n throw new Error(\"get method is unimplemented\");\n }\n repeat(t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { rows: e = 1, columns: i = 1 } = t;\n if (!Number.isInteger(e) || e <= 0)\n throw new TypeError(\"rows must be a positive integer\");\n if (!Number.isInteger(i) || i <= 0)\n throw new TypeError(\"columns must be a positive integer\");\n let n = new R(this.rows * e, this.columns * i);\n for (let s = 0; s < e; s++)\n for (let o = 0; o < i; o++)\n n.setSubMatrix(this, this.rows * s, this.columns * o);\n return n;\n }\n fill(t) {\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, t);\n return this;\n }\n neg() {\n return this.mulS(-1);\n }\n getRow(t) {\n bt(this, t);\n let e = [];\n for (let i = 0; i < this.columns; i++)\n e.push(this.get(t, i));\n return e;\n }\n getRowVector(t) {\n return R.rowVector(this.getRow(t));\n }\n setRow(t, e) {\n bt(this, t), e = ue(this, e);\n for (let i = 0; i < this.columns; i++)\n this.set(t, i, e[i]);\n return this;\n }\n swapRows(t, e) {\n bt(this, t), bt(this, e);\n for (let i = 0; i < this.columns; i++) {\n let n = this.get(t, i);\n this.set(t, i, this.get(e, i)), this.set(e, i, n);\n }\n return this;\n }\n getColumn(t) {\n Mt(this, t);\n let e = [];\n for (let i = 0; i < this.rows; i++)\n e.push(this.get(i, t));\n return e;\n }\n getColumnVector(t) {\n return R.columnVector(this.getColumn(t));\n }\n setColumn(t, e) {\n Mt(this, t), e = de(this, e);\n for (let i = 0; i < this.rows; i++)\n this.set(i, t, e[i]);\n return this;\n }\n swapColumns(t, e) {\n Mt(this, t), Mt(this, e);\n for (let i = 0; i < this.rows; i++) {\n let n = this.get(i, t);\n this.set(i, t, this.get(i, e)), this.set(i, e, n);\n }\n return this;\n }\n addRowVector(t) {\n t = ue(this, t);\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, this.get(e, i) + t[i]);\n return this;\n }\n subRowVector(t) {\n t = ue(this, t);\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, this.get(e, i) - t[i]);\n return this;\n }\n mulRowVector(t) {\n t = ue(this, t);\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, this.get(e, i) * t[i]);\n return this;\n }\n divRowVector(t) {\n t = ue(this, t);\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, this.get(e, i) / t[i]);\n return this;\n }\n addColumnVector(t) {\n t = de(this, t);\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, this.get(e, i) + t[e]);\n return this;\n }\n subColumnVector(t) {\n t = de(this, t);\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, this.get(e, i) - t[e]);\n return this;\n }\n mulColumnVector(t) {\n t = de(this, t);\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, this.get(e, i) * t[e]);\n return this;\n }\n divColumnVector(t) {\n t = de(this, t);\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n this.set(e, i, this.get(e, i) / t[e]);\n return this;\n }\n mulRow(t, e) {\n bt(this, t);\n for (let i = 0; i < this.columns; i++)\n this.set(t, i, this.get(t, i) * e);\n return this;\n }\n mulColumn(t, e) {\n Mt(this, t);\n for (let i = 0; i < this.rows; i++)\n this.set(i, t, this.get(i, t) * e);\n return this;\n }\n max(t) {\n if (this.isEmpty())\n return NaN;\n switch (t) {\n case \"row\": {\n const e = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.get(i, n) > e[i] && (e[i] = this.get(i, n));\n return e;\n }\n case \"column\": {\n const e = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.get(i, n) > e[n] && (e[n] = this.get(i, n));\n return e;\n }\n case void 0: {\n let e = this.get(0, 0);\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.get(i, n) > e && (e = this.get(i, n));\n return e;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n maxIndex() {\n he(this);\n let t = this.get(0, 0), e = [0, 0];\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.get(i, n) > t && (t = this.get(i, n), e[0] = i, e[1] = n);\n return e;\n }\n min(t) {\n if (this.isEmpty())\n return NaN;\n switch (t) {\n case \"row\": {\n const e = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.get(i, n) < e[i] && (e[i] = this.get(i, n));\n return e;\n }\n case \"column\": {\n const e = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.get(i, n) < e[n] && (e[n] = this.get(i, n));\n return e;\n }\n case void 0: {\n let e = this.get(0, 0);\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.get(i, n) < e && (e = this.get(i, n));\n return e;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n minIndex() {\n he(this);\n let t = this.get(0, 0), e = [0, 0];\n for (let i = 0; i < this.rows; i++)\n for (let n = 0; n < this.columns; n++)\n this.get(i, n) < t && (t = this.get(i, n), e[0] = i, e[1] = n);\n return e;\n }\n maxRow(t) {\n if (bt(this, t), this.isEmpty())\n return NaN;\n let e = this.get(t, 0);\n for (let i = 1; i < this.columns; i++)\n this.get(t, i) > e && (e = this.get(t, i));\n return e;\n }\n maxRowIndex(t) {\n bt(this, t), he(this);\n let e = this.get(t, 0), i = [t, 0];\n for (let n = 1; n < this.columns; n++)\n this.get(t, n) > e && (e = this.get(t, n), i[1] = n);\n return i;\n }\n minRow(t) {\n if (bt(this, t), this.isEmpty())\n return NaN;\n let e = this.get(t, 0);\n for (let i = 1; i < this.columns; i++)\n this.get(t, i) < e && (e = this.get(t, i));\n return e;\n }\n minRowIndex(t) {\n bt(this, t), he(this);\n let e = this.get(t, 0), i = [t, 0];\n for (let n = 1; n < this.columns; n++)\n this.get(t, n) < e && (e = this.get(t, n), i[1] = n);\n return i;\n }\n maxColumn(t) {\n if (Mt(this, t), this.isEmpty())\n return NaN;\n let e = this.get(0, t);\n for (let i = 1; i < this.rows; i++)\n this.get(i, t) > e && (e = this.get(i, t));\n return e;\n }\n maxColumnIndex(t) {\n Mt(this, t), he(this);\n let e = this.get(0, t), i = [0, t];\n for (let n = 1; n < this.rows; n++)\n this.get(n, t) > e && (e = this.get(n, t), i[0] = n);\n return i;\n }\n minColumn(t) {\n if (Mt(this, t), this.isEmpty())\n return NaN;\n let e = this.get(0, t);\n for (let i = 1; i < this.rows; i++)\n this.get(i, t) < e && (e = this.get(i, t));\n return e;\n }\n minColumnIndex(t) {\n Mt(this, t), he(this);\n let e = this.get(0, t), i = [0, t];\n for (let n = 1; n < this.rows; n++)\n this.get(n, t) < e && (e = this.get(n, t), i[0] = n);\n return i;\n }\n diag() {\n let t = Math.min(this.rows, this.columns), e = [];\n for (let i = 0; i < t; i++)\n e.push(this.get(i, i));\n return e;\n }\n norm(t = \"frobenius\") {\n switch (t) {\n case \"max\":\n return this.max();\n case \"frobenius\":\n return Math.sqrt(this.dot(this));\n default:\n throw new RangeError(`unknown norm type: ${t}`);\n }\n }\n cumulativeSum() {\n let t = 0;\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n t += this.get(e, i), this.set(e, i, t);\n return this;\n }\n dot(t) {\n G.isMatrix(t) && (t = t.to1DArray());\n let e = this.to1DArray();\n if (e.length !== t.length)\n throw new RangeError(\"vectors do not have the same size\");\n let i = 0;\n for (let n = 0; n < e.length; n++)\n i += e[n] * t[n];\n return i;\n }\n mmul(t) {\n t = R.checkMatrix(t);\n let e = this.rows, i = this.columns, n = t.columns, s = new R(e, n), o = new Float64Array(i);\n for (let a = 0; a < n; a++) {\n for (let h = 0; h < i; h++)\n o[h] = t.get(h, a);\n for (let h = 0; h < e; h++) {\n let c = 0;\n for (let l = 0; l < i; l++)\n c += this.get(h, l) * o[l];\n s.set(h, a, c);\n }\n }\n return s;\n }\n strassen2x2(t) {\n t = R.checkMatrix(t);\n let e = new R(2, 2);\n const i = this.get(0, 0), n = t.get(0, 0), s = this.get(0, 1), o = t.get(0, 1), a = this.get(1, 0), h = t.get(1, 0), c = this.get(1, 1), l = t.get(1, 1), u = (i + c) * (n + l), g = (a + c) * n, w = i * (o - l), y = c * (h - n), _ = (i + s) * l, I = (a - i) * (n + o), v = (s - c) * (h + l), S = u + y - _ + v, f = w + _, p = g + y, T = u - g + w + I;\n return e.set(0, 0, S), e.set(0, 1, f), e.set(1, 0, p), e.set(1, 1, T), e;\n }\n strassen3x3(t) {\n t = R.checkMatrix(t);\n let e = new R(3, 3);\n const i = this.get(0, 0), n = this.get(0, 1), s = this.get(0, 2), o = this.get(1, 0), a = this.get(1, 1), h = this.get(1, 2), c = this.get(2, 0), l = this.get(2, 1), u = this.get(2, 2), g = t.get(0, 0), w = t.get(0, 1), y = t.get(0, 2), _ = t.get(1, 0), I = t.get(1, 1), v = t.get(1, 2), S = t.get(2, 0), f = t.get(2, 1), p = t.get(2, 2), T = (i + n + s - o - a - l - u) * I, A = (i - o) * (-w + I), C = a * (-g + w + _ - I - v - S + p), E = (-i + o + a) * (g - w + I), d = (o + a) * (-g + w), x = i * g, M = (-i + c + l) * (g - y + v), b = (-i + c) * (y - v), Z = (c + l) * (-g + y), Y = (i + n + s - a - h - c - l) * v, H = l * (-g + y + _ - I - v - S + f), V = (-s + l + u) * (I + S - f), st = (s - u) * (I - f), ht = s * S, dt = (l + u) * (-S + f), tt = (-s + a + h) * (v + S - p), Tt = (s - h) * (v - p), U = (a + h) * (-S + p), it = n * _, ft = h * f, ct = o * y, ot = c * w, xo = u * p, To = x + ht + it, bo = T + E + d + x + V + ht + dt, Mo = x + M + Z + Y + ht + tt + U, _o = A + C + E + x + ht + tt + Tt, Eo = A + E + d + x + ft, Io = ht + tt + Tt + U + ct, So = x + M + b + H + V + st + ht, Ao = V + st + ht + dt + ot, Po = x + M + b + Z + xo;\n return e.set(0, 0, To), e.set(0, 1, bo), e.set(0, 2, Mo), e.set(1, 0, _o), e.set(1, 1, Eo), e.set(1, 2, Io), e.set(2, 0, So), e.set(2, 1, Ao), e.set(2, 2, Po), e;\n }\n mmulStrassen(t) {\n t = R.checkMatrix(t);\n let e = this.clone(), i = e.rows, n = e.columns, s = t.rows, o = t.columns;\n n !== s && console.warn(\n `Multiplying ${i} x ${n} and ${s} x ${o} matrix: dimensions do not match.`\n );\n function a(u, g, w) {\n let y = u.rows, _ = u.columns;\n if (y === g && _ === w)\n return u;\n {\n let I = G.zeros(g, w);\n return I = I.setSubMatrix(u, 0, 0), I;\n }\n }\n let h = Math.max(i, s), c = Math.max(n, o);\n e = a(e, h, c), t = a(t, h, c);\n function l(u, g, w, y) {\n if (w <= 512 || y <= 512)\n return u.mmul(g);\n w % 2 === 1 && y % 2 === 1 ? (u = a(u, w + 1, y + 1), g = a(g, w + 1, y + 1)) : w % 2 === 1 ? (u = a(u, w + 1, y), g = a(g, w + 1, y)) : y % 2 === 1 && (u = a(u, w, y + 1), g = a(g, w, y + 1));\n let _ = parseInt(u.rows / 2, 10), I = parseInt(u.columns / 2, 10), v = u.subMatrix(0, _ - 1, 0, I - 1), S = g.subMatrix(0, _ - 1, 0, I - 1), f = u.subMatrix(0, _ - 1, I, u.columns - 1), p = g.subMatrix(0, _ - 1, I, g.columns - 1), T = u.subMatrix(_, u.rows - 1, 0, I - 1), A = g.subMatrix(_, g.rows - 1, 0, I - 1), C = u.subMatrix(_, u.rows - 1, I, u.columns - 1), E = g.subMatrix(_, g.rows - 1, I, g.columns - 1), d = l(\n G.add(v, C),\n G.add(S, E),\n _,\n I\n ), x = l(G.add(T, C), S, _, I), M = l(v, G.sub(p, E), _, I), b = l(C, G.sub(A, S), _, I), Z = l(G.add(v, f), E, _, I), Y = l(\n G.sub(T, v),\n G.add(S, p),\n _,\n I\n ), H = l(\n G.sub(f, C),\n G.add(A, E),\n _,\n I\n ), V = G.add(d, b);\n V.sub(Z), V.add(H);\n let st = G.add(M, Z), ht = G.add(x, b), dt = G.sub(d, x);\n dt.add(M), dt.add(Y);\n let tt = G.zeros(2 * V.rows, 2 * V.columns);\n return tt = tt.setSubMatrix(V, 0, 0), tt = tt.setSubMatrix(st, V.rows, 0), tt = tt.setSubMatrix(ht, 0, V.columns), tt = tt.setSubMatrix(dt, V.rows, V.columns), tt.subMatrix(0, w - 1, 0, y - 1);\n }\n return l(e, t, h, c);\n }\n scaleRows(t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: e = 0, max: i = 1 } = t;\n if (!Number.isFinite(e))\n throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(i))\n throw new TypeError(\"max must be a number\");\n if (e >= i)\n throw new RangeError(\"min must be smaller than max\");\n let n = new R(this.rows, this.columns);\n for (let s = 0; s < this.rows; s++) {\n const o = this.getRow(s);\n o.length > 0 && Mn(o, { min: e, max: i, output: o }), n.setRow(s, o);\n }\n return n;\n }\n scaleColumns(t = {}) {\n if (typeof t != \"object\")\n throw new TypeError(\"options must be an object\");\n const { min: e = 0, max: i = 1 } = t;\n if (!Number.isFinite(e))\n throw new TypeError(\"min must be a number\");\n if (!Number.isFinite(i))\n throw new TypeError(\"max must be a number\");\n if (e >= i)\n throw new RangeError(\"min must be smaller than max\");\n let n = new R(this.rows, this.columns);\n for (let s = 0; s < this.columns; s++) {\n const o = this.getColumn(s);\n o.length && Mn(o, {\n min: e,\n max: i,\n output: o\n }), n.setColumn(s, o);\n }\n return n;\n }\n flipRows() {\n const t = Math.ceil(this.columns / 2);\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < t; i++) {\n let n = this.get(e, i), s = this.get(e, this.columns - 1 - i);\n this.set(e, i, s), this.set(e, this.columns - 1 - i, n);\n }\n return this;\n }\n flipColumns() {\n const t = Math.ceil(this.rows / 2);\n for (let e = 0; e < this.columns; e++)\n for (let i = 0; i < t; i++) {\n let n = this.get(i, e), s = this.get(this.rows - 1 - i, e);\n this.set(i, e, s), this.set(this.rows - 1 - i, e, n);\n }\n return this;\n }\n kroneckerProduct(t) {\n t = R.checkMatrix(t);\n let e = this.rows, i = this.columns, n = t.rows, s = t.columns, o = new R(e * n, i * s);\n for (let a = 0; a < e; a++)\n for (let h = 0; h < i; h++)\n for (let c = 0; c < n; c++)\n for (let l = 0; l < s; l++)\n o.set(n * a + c, s * h + l, this.get(a, h) * t.get(c, l));\n return o;\n }\n kroneckerSum(t) {\n if (t = R.checkMatrix(t), !this.isSquare() || !t.isSquare())\n throw new Error(\"Kronecker Sum needs two Square Matrices\");\n let e = this.rows, i = t.rows, n = this.kroneckerProduct(R.eye(i, i)), s = R.eye(e, e).kroneckerProduct(t);\n return n.add(s);\n }\n transpose() {\n let t = new R(this.columns, this.rows);\n for (let e = 0; e < this.rows; e++)\n for (let i = 0; i < this.columns; i++)\n t.set(i, e, this.get(e, i));\n return t;\n }\n sortRows(t = En) {\n for (let e = 0; e < this.rows; e++)\n this.setRow(e, this.getRow(e).sort(t));\n return this;\n }\n sortColumns(t = En) {\n for (let e = 0; e < this.columns; e++)\n this.setColumn(e, this.getColumn(e).sort(t));\n return this;\n }\n subMatrix(t, e, i, n) {\n Pi(this, t, e, i, n);\n let s = new R(\n e - t + 1,\n n - i + 1\n );\n for (let o = t; o <= e; o++)\n for (let a = i; a <= n; a++)\n s.set(o - t, a - i, this.get(o, a));\n return s;\n }\n subMatrixRow(t, e, i) {\n if (e === void 0 && (e = 0), i === void 0 && (i = this.columns - 1), e > i || e < 0 || e >= this.columns || i < 0 || i >= this.columns)\n throw new RangeError(\"Argument out of range\");\n let n = new R(t.length, i - e + 1);\n for (let s = 0; s < t.length; s++)\n for (let o = e; o <= i; o++) {\n if (t[s] < 0 || t[s] >= this.rows)\n throw new RangeError(`Row index out of range: ${t[s]}`);\n n.set(s, o - e, this.get(t[s], o));\n }\n return n;\n }\n subMatrixColumn(t, e, i) {\n if (e === void 0 && (e = 0), i === void 0 && (i = this.rows - 1), e > i || e < 0 || e >= this.rows || i < 0 || i >= this.rows)\n throw new RangeError(\"Argument out of range\");\n let n = new R(i - e + 1, t.length);\n for (let s = 0; s < t.length; s++)\n for (let o = e; o <= i; o++) {\n if (t[s] < 0 || t[s] >= this.columns)\n throw new RangeError(`Column index out of range: ${t[s]}`);\n n.set(o - e, s, this.get(o, t[s]));\n }\n return n;\n }\n setSubMatrix(t, e, i) {\n if (t = R.checkMatrix(t), t.isEmpty())\n return this;\n let n = e + t.rows - 1, s = i + t.columns - 1;\n Pi(this, e, n, i, s);\n for (let o = 0; o < t.rows; o++)\n for (let a = 0; a < t.columns; a++)\n this.set(e + o, i + a, t.get(o, a));\n return this;\n }\n selection(t, e) {\n Wi(this, t), Vi(this, e);\n let i = new R(t.length, e.length);\n for (let n = 0; n < t.length; n++) {\n let s = t[n];\n for (let o = 0; o < e.length; o++) {\n let a = e[o];\n i.set(n, o, this.get(s, a));\n }\n }\n return i;\n }\n trace() {\n let t = Math.min(this.rows, this.columns), e = 0;\n for (let i = 0; i < t; i++)\n e += this.get(i, i);\n return e;\n }\n clone() {\n return this.constructor.copy(this, new R(this.rows, this.columns));\n }\n /**\n * @template {AbstractMatrix} M\n * @param {AbstractMatrix} from\n * @param {M} to\n * @return {M}\n */\n static copy(t, e) {\n for (const [i, n, s] of t.entries())\n e.set(i, n, s);\n return e;\n }\n sum(t) {\n switch (t) {\n case \"row\":\n return rc(this);\n case \"column\":\n return ic(this);\n case void 0:\n return nc(this);\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n product(t) {\n switch (t) {\n case \"row\":\n return sc(this);\n case \"column\":\n return oc(this);\n case void 0:\n return ac(this);\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n mean(t) {\n const e = this.sum(t);\n switch (t) {\n case \"row\": {\n for (let i = 0; i < this.rows; i++)\n e[i] /= this.columns;\n return e;\n }\n case \"column\": {\n for (let i = 0; i < this.columns; i++)\n e[i] /= this.rows;\n return e;\n }\n case void 0:\n return e / this.size;\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n variance(t, e = {}) {\n if (typeof t == \"object\" && (e = t, t = void 0), typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { unbiased: i = !0, mean: n = this.mean(t) } = e;\n if (typeof i != \"boolean\")\n throw new TypeError(\"unbiased must be a boolean\");\n switch (t) {\n case \"row\": {\n if (!wt.isAnyArray(n))\n throw new TypeError(\"mean must be an array\");\n return hc(this, i, n);\n }\n case \"column\": {\n if (!wt.isAnyArray(n))\n throw new TypeError(\"mean must be an array\");\n return cc(this, i, n);\n }\n case void 0: {\n if (typeof n != \"number\")\n throw new TypeError(\"mean must be a number\");\n return lc(this, i, n);\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n standardDeviation(t, e) {\n typeof t == \"object\" && (e = t, t = void 0);\n const i = this.variance(t, e);\n if (t === void 0)\n return Math.sqrt(i);\n for (let n = 0; n < i.length; n++)\n i[n] = Math.sqrt(i[n]);\n return i;\n }\n center(t, e = {}) {\n if (typeof t == \"object\" && (e = t, t = void 0), typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n const { center: i = this.mean(t) } = e;\n switch (t) {\n case \"row\": {\n if (!wt.isAnyArray(i))\n throw new TypeError(\"center must be an array\");\n return uc(this, i), this;\n }\n case \"column\": {\n if (!wt.isAnyArray(i))\n throw new TypeError(\"center must be an array\");\n return dc(this, i), this;\n }\n case void 0: {\n if (typeof i != \"number\")\n throw new TypeError(\"center must be a number\");\n return fc(this, i), this;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n scale(t, e = {}) {\n if (typeof t == \"object\" && (e = t, t = void 0), typeof e != \"object\")\n throw new TypeError(\"options must be an object\");\n let i = e.scale;\n switch (t) {\n case \"row\": {\n if (i === void 0)\n i = pc(this);\n else if (!wt.isAnyArray(i))\n throw new TypeError(\"scale must be an array\");\n return gc(this, i), this;\n }\n case \"column\": {\n if (i === void 0)\n i = mc(this);\n else if (!wt.isAnyArray(i))\n throw new TypeError(\"scale must be an array\");\n return yc(this, i), this;\n }\n case void 0: {\n if (i === void 0)\n i = wc(this);\n else if (typeof i != \"number\")\n throw new TypeError(\"scale must be a number\");\n return vc(this, i), this;\n }\n default:\n throw new Error(`invalid option: ${t}`);\n }\n }\n toString(t) {\n return Cs(this, t);\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * iterator from left to right, from top to bottom\n * yield [row, column, value]\n * @returns {Generator<[number, number, number], void, *>}\n */\n *entries() {\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n yield [t, e, this.get(t, e)];\n }\n /**\n * iterator from left to right, from top to bottom\n * yield value\n * @returns {Generator<number, void, *>}\n */\n *values() {\n for (let t = 0; t < this.rows; t++)\n for (let e = 0; e < this.columns; e++)\n yield this.get(t, e);\n }\n}\nG.prototype.klass = \"Matrix\";\ntypeof Symbol < \"u\" && (G.prototype[Symbol.for(\"nodejs.util.inspect.custom\")] = Kh);\nfunction En(r, t) {\n return r - t;\n}\nfunction xc(r) {\n return r.every((t) => typeof t == \"number\");\n}\nG.random = G.rand;\nG.randomInt = G.randInt;\nG.diagonal = G.diag;\nG.prototype.diagonal = G.prototype.diag;\nG.identity = G.eye;\nG.prototype.negate = G.prototype.neg;\nG.prototype.tensorProduct = G.prototype.kroneckerProduct;\nvar cr, hi, lr;\nlet R = (lr = class extends G {\n constructor(r, t) {\n if (super(), Ss(this, cr), Vh(this, \"data\"), lr.isMatrix(r))\n bn(this, cr, hi).call(this, r.rows, r.columns), lr.copy(r, this);\n else if (Number.isInteger(r) && r >= 0)\n bn(this, cr, hi).call(this, r, t);\n else if (wt.isAnyArray(r)) {\n const e = r;\n if (r = e.length, t = r ? e[0].length : 0, typeof t != \"number\")\n throw new TypeError(\n \"Data must be a 2D array with at least one element\"\n );\n this.data = [];\n for (let i = 0; i < r; i++) {\n if (e[i].length !== t)\n throw new RangeError(\"Inconsistent array dimensions\");\n if (!xc(e[i]))\n throw new TypeError(\"Input data contains non-numeric values\");\n this.data.push(Float64Array.from(e[i]));\n }\n this.rows = r, this.columns = t;\n } else\n throw new TypeError(\n \"First argument must be a positive number or an array\"\n );\n }\n set(r, t, e) {\n return this.data[r][t] = e, this;\n }\n get(r, t) {\n return this.data[r][t];\n }\n removeRow(r) {\n return bt(this, r), this.data.splice(r, 1), this.rows -= 1, this;\n }\n addRow(r, t) {\n return t === void 0 && (t = r, r = this.rows), bt(this, r, !0), t = Float64Array.from(ue(this, t)), this.data.splice(r, 0, t), this.rows += 1, this;\n }\n removeColumn(r) {\n Mt(this, r);\n for (let t = 0; t < this.rows; t++) {\n const e = new Float64Array(this.columns - 1);\n for (let i = 0; i < r; i++)\n e[i] = this.data[t][i];\n for (let i = r + 1; i < this.columns; i++)\n e[i - 1] = this.data[t][i];\n this.data[t] = e;\n }\n return this.columns -= 1, this;\n }\n addColumn(r, t) {\n typeof t > \"u\" && (t = r, r = this.columns), Mt(this, r, !0), t = de(this, t);\n for (let e = 0; e < this.rows; e++) {\n const i = new Float64Array(this.columns + 1);\n let n = 0;\n for (; n < r; n++)\n i[n] = this.data[e][n];\n for (i[n++] = t[e]; n < this.columns + 1; n++)\n i[n] = this.data[e][n - 1];\n this.data[e] = i;\n }\n return this.columns += 1, this;\n }\n}, cr = /* @__PURE__ */ new WeakSet(), hi = function(r, t) {\n if (this.data = [], Number.isInteger(t) && t >= 0)\n for (let e = 0; e < r; e++)\n this.data.push(new Float64Array(t));\n else\n throw new TypeError(\"nColumns must be a positive integer\");\n this.rows = r, this.columns = t;\n}, lr);\nec(G, R);\nvar pt;\nconst Tc = class Ci extends G {\n /**\n * @param {number | AbstractMatrix | ArrayLike<ArrayLike<number>>} diagonalSize\n * @return {this}\n */\n constructor(t) {\n if (super(), Ss(this, pt, void 0), R.isMatrix(t)) {\n if (!t.isSymmetric())\n throw new TypeError(\"not symmetric data\");\n ai(this, pt, R.copy(\n t,\n new R(t.rows, t.rows)\n ));\n } else if (Number.isInteger(t) && t >= 0)\n ai(this, pt, new R(t, t));\n else if (ai(this, pt, new R(t)), !this.isSymmetric())\n throw new TypeError(\"not symmetric data\");\n }\n get size() {\n return kt(this, pt).size;\n }\n get rows() {\n return kt(this, pt).rows;\n }\n get columns() {\n return kt(this, pt).columns;\n }\n get diagonalSize() {\n return this.rows;\n }\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isSymmetricMatrix(t) {\n return R.isMatrix(t) && t.klassType === \"SymmetricMatrix\";\n }\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static zeros(t) {\n return new this(t);\n }\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static ones(t) {\n return new this(t).fill(1);\n }\n clone() {\n const t = new Ci(this.diagonalSize);\n for (const [e, i, n] of this.upperRightEntries())\n t.set(e, i, n);\n return t;\n }\n toMatrix() {\n return new R(this);\n }\n get(t, e) {\n return kt(this, pt).get(t, e);\n }\n set(t, e, i) {\n return kt(this, pt).set(t, e, i), kt(this, pt).set(e, t, i), this;\n }\n removeCross(t) {\n return kt(this, pt).removeRow(t), kt(this, pt).removeColumn(t), this;\n }\n addCross(t, e) {\n e === void 0 && (e = t, t = this.diagonalSize);\n const i = e.slice();\n return i.splice(t, 1), kt(this, pt).addRow(t, i), kt(this, pt).addColumn(t, e), this;\n }\n /**\n * @param {Mask[]} mask\n */\n applyMask(t) {\n if (t.length !== this.diagonalSize)\n throw new RangeError(\"Mask size do not match with matrix size\");\n const e = [];\n for (const [i, n] of t.entries())\n n || e.push(i);\n e.reverse();\n for (const i of e)\n this.removeCross(i);\n return this;\n }\n /**\n * Compact format upper-right corner of matrix\n * iterate from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 1 2 3 4\n * B 2 5 6 7\n * C 3 6 8 9\n * D 4 7 9 10\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`\n *\n * length is S(i=0, n=sideSize) => 10 for a 4 sideSized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize: t } = this, e = new Array(t * (t + 1) / 2);\n for (let i = 0, n = 0, s = 0; s < e.length; s++)\n e[s] = this.get(n, i), ++i >= t && (i = ++n);\n return e;\n }\n /**\n * @param {number[]} compact\n * @return {SymmetricMatrix}\n */\n static fromCompact(t) {\n const e = t.length, i = (Math.sqrt(8 * e + 1) - 1) / 2;\n if (!Number.isInteger(i))\n throw new TypeError(\n `This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(\n t\n )}`\n );\n const n = new Ci(i);\n for (let s = 0, o = 0, a = 0; a < e; a++)\n n.set(s, o, t[a]), ++s >= i && (s = ++o);\n return n;\n }\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield [row, column, value]\n *\n * @returns {Generator<[number, number, number], void, *>}\n */\n *upperRightEntries() {\n for (let t = 0, e = 0; t < this.diagonalSize; void 0) {\n const i = this.get(t, e);\n yield [t, e, i], ++e >= this.diagonalSize && (e = ++t);\n }\n }\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield value\n *\n * @returns {Generator<[number, number, number], void, *>}\n */\n *upperRightValues() {\n for (let t = 0, e = 0; t < this.diagonalSize; void 0)\n yield this.get(t, e), ++e >= this.diagonalSize && (e = ++t);\n }\n};\npt = /* @__PURE__ */ new WeakMap();\nlet Ce = Tc;\nCe.prototype.klassType = \"SymmetricMatrix\";\nclass Hr extends Ce {\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isDistanceMatrix(t) {\n return Ce.isSymmetricMatrix(t) && t.klassSubType === \"DistanceMatrix\";\n }\n constructor(t) {\n if (super(t), !this.isDistance())\n throw new TypeError(\"Provided arguments do no produce a distance matrix\");\n }\n set(t, e, i) {\n return t === e && (i = 0), super.set(t, e, i);\n }\n addCross(t, e) {\n return e === void 0 && (e = t, t = this.diagonalSize), e = e.slice(), e[t] = 0, super.addCross(t, e);\n }\n toSymmetricMatrix() {\n return new Ce(this);\n }\n clone() {\n const t = new Hr(this.diagonalSize);\n for (const [e, i, n] of this.upperRightEntries())\n e !== i && t.set(e, i, n);\n return t;\n }\n /**\n * Compact format upper-right corner of matrix\n * no diagonal (only zeros)\n * iterable from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 0 1 2 3\n * B 1 0 4 5\n * C 2 4 0 6\n * D 3 5 6 0\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6]`\n *\n * length is S(i=0, n=sideSize-1) => 6 for a 4 side sized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize: t } = this, e = (t - 1) * t / 2, i = new Array(e);\n for (let n = 1, s = 0, o = 0; o < i.length; o++)\n i[o] = this.get(s, n), ++n >= t && (n = ++s + 1);\n return i;\n }\n /**\n * @param {number[]} compact\n */\n static fromCompact(t) {\n const e = t.length, i = (Math.sqrt(8 * e + 1) + 1) / 2;\n if (!Number.isInteger(i))\n throw new TypeError(\n `This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(\n t\n )}`\n );\n const n = new this(i);\n for (let s = 1, o = 0, a = 0; a < e; a++)\n n.set(s, o, t[a]), ++s >= i && (s = ++o + 1);\n return n;\n }\n}\nHr.prototype.klassSubType = \"DistanceMatrix\";\nclass Xt extends G {\n constructor(t, e, i) {\n super(), this.matrix = t, this.rows = e, this.columns = i;\n }\n}\nclass bc extends Xt {\n constructor(t, e) {\n Mt(t, e), super(t, t.rows, 1), this.column = e;\n }\n set(t, e, i) {\n return this.matrix.set(t, this.column, i), this;\n }\n get(t) {\n return this.matrix.get(t, this.column);\n }\n}\nclass Mc extends Xt {\n constructor(t, e) {\n Vi(t, e), super(t, t.rows, e.length), this.columnIndices = e;\n }\n set(t, e, i) {\n return this.matrix.set(t, this.columnIndices[e], i), this;\n }\n get(t, e) {\n return this.matrix.get(t, this.columnIndices[e]);\n }\n}\nclass _c extends Xt {\n constructor(t) {\n super(t, t.rows, t.columns);\n }\n set(t, e, i) {\n return this.matrix.set(t, this.columns - e - 1, i), this;\n }\n get(t, e) {\n return this.matrix.get(t, this.columns - e - 1);\n }\n}\nclass Ec extends Xt {\n constructor(t) {\n super(t, t.rows, t.columns);\n }\n set(t, e, i) {\n return this.matrix.set(this.rows - t - 1, e, i), this;\n }\n get(t, e) {\n return this.matrix.get(this.rows - t - 1, e);\n }\n}\nclass Ic extends Xt {\n constructor(t, e) {\n bt(t, e), super(t, 1, t.columns), this.row = e;\n }\n set(t, e, i) {\n return this.matrix.set(this.row, e, i), this;\n }\n get(t, e) {\n return this.matrix.get(this.row, e);\n }\n}\nclass Sc extends Xt {\n constructor(t, e) {\n Wi(t, e), super(t, e.length, t.columns), this.rowIndices = e;\n }\n set(t, e, i) {\n return this.matrix.set(this.rowIndices[t], e, i), this;\n }\n get(t, e) {\n return this.matrix.get(this.rowIndices[t], e);\n }\n}\nclass Tr extends Xt {\n constructor(t, e, i) {\n Wi(t, e), Vi(t, i), super(t, e.length, i.length), this.rowIndices = e, this.columnIndices = i;\n }\n set(t, e, i) {\n return this.matrix.set(\n this.rowIndices[t],\n this.columnIndices[e],\n i\n ), this;\n }\n get(t, e) {\n return this.matrix.get(\n this.rowIndices[t],\n this.columnIndices[e]\n );\n }\n}\nclass Ac extends Xt {\n constructor(t, e, i, n, s) {\n Pi(t, e, i, n, s), super(t, i - e + 1, s - n + 1), this.startRow = e, this.startColumn = n;\n }\n set(t, e, i) {\n return this.matrix.set(\n this.startRow + t,\n this.startColumn + e,\n i\n ), this;\n }\n get(t, e) {\n return this.matrix.get(\n this.startRow + t,\n this.startColumn + e\n );\n }\n}\nclass Pc extends Xt {\n constructor(t) {\n super(t, t.columns, t.rows);\n }\n set(t, e, i) {\n return this.matrix.set(e, t, i), this;\n }\n get(t, e) {\n return this.matrix.get(e, t);\n }\n}\nclass Rs extends G {\n constructor(t, e = {}) {\n const { rows: i = 1 } = e;\n if (t.length % i !== 0)\n throw new Error(\"the data length is not divisible by the number of rows\");\n super(), this.rows = i, this.columns = t.length / i, this.data = t;\n }\n set(t, e, i) {\n let n = this._calculateIndex(t, e);\n return this.data[n] = i, this;\n }\n get(t, e) {\n let i = this._calculateIndex(t, e);\n return this.data[i];\n }\n _calculateIndex(t, e) {\n return t * this.columns + e;\n }\n}\nclass xt extends G {\n constructor(t) {\n super(), this.data = t, this.rows = t.length, this.columns = t[0].length;\n }\n set(t, e, i) {\n return this.data[t][e] = i, this;\n }\n get(t, e) {\n return this.data[t][e];\n }\n}\nfunction Cc(r, t) {\n if (wt.isAnyArray(r))\n return r[0] && wt.isAnyArray(r[0]) ? new xt(r) : new Rs(r, t);\n throw new Error(\"the argument is not an array\");\n}\nclass Yr {\n constructor(t) {\n t = xt.checkMatrix(t);\n let e = t.clone(), i = e.rows, n = e.columns, s = new Float64Array(i), o = 1, a, h, c, l, u, g, w, y, _;\n for (a = 0; a < i; a++)\n s[a] = a;\n for (y = new Float64Array(i), h = 0; h < n; h++) {\n for (a = 0; a < i; a++)\n y[a] = e.get(a, h);\n for (a = 0; a < i; a++) {\n for (_ = Math.min(a, h), u = 0, c = 0; c < _; c++)\n u += e.get(a, c) * y[c];\n y[a] -= u, e.set(a, h, y[a]);\n }\n for (l = h, a = h + 1; a < i; a++)\n Math.abs(y[a]) > Math.abs(y[l]) && (l = a);\n if (l !== h) {\n for (c = 0; c < n; c++)\n g = e.get(l, c), e.set(l, c, e.get(h, c)), e.set(h, c, g);\n w = s[l], s[l] = s[h], s[h] = w, o = -o;\n }\n if (h < i && e.get(h, h) !== 0)\n for (a = h + 1; a < i; a++)\n e.set(a, h, e.get(a, h) / e.get(h, h));\n }\n this.LU = e, this.pivotVector = s, this.pivotSign = o;\n }\n isSingular() {\n let t = this.LU, e = t.columns;\n for (let i = 0; i < e; i++)\n if (t.get(i, i) === 0)\n return !0;\n return !1;\n }\n solve(t) {\n t = R.checkMatrix(t);\n let e = this.LU;\n if (e.rows !== t.rows)\n throw new Error(\"Invalid matrix dimensions\");\n if (this.isSingular())\n throw new Error(\"LU matrix is singular\");\n let i = t.columns, n = t.subMatrixRow(this.pivotVector, 0, i - 1), s = e.columns, o, a, h;\n for (h = 0; h < s; h++)\n for (o = h + 1; o < s; o++)\n for (a = 0; a < i; a++)\n n.set(o, a, n.get(o, a) - n.get(h, a) * e.get(o, h));\n for (h = s - 1; h >= 0; h--) {\n for (a = 0; a < i; a++)\n n.set(h, a, n.get(h, a) / e.get(h, h));\n for (o = 0; o < h; o++)\n for (a = 0; a < i; a++)\n n.set(o, a, n.get(o, a) - n.get(h, a) * e.get(o, h));\n }\n return n;\n }\n get determinant() {\n let t = this.LU;\n if (!t.isSquare())\n throw new Error(\"Matrix must be square\");\n let e = this.pivotSign, i = t.columns;\n for (let n = 0; n < i; n++)\n e *= t.get(n, n);\n return e;\n }\n get lowerTriangularMatrix() {\n let t = this.LU, e = t.rows, i = t.columns, n = new R(e, i);\n for (let s = 0; s < e; s++)\n for (let o = 0; o < i; o++)\n s > o ? n.set(s, o, t.get(s, o)) : s === o ? n.set(s, o, 1) : n.set(s, o, 0);\n return n;\n }\n get upperTriangularMatrix() {\n let t = this.LU, e = t.rows, i = t.columns, n = new R(e, i);\n for (let s = 0; s < e; s++)\n for (let o = 0; o < i; o++)\n s <= o ? n.set(s, o, t.get(s, o)) : n.set(s, o, 0);\n return n;\n }\n get pivotPermutationVector() {\n return Array.from(this.pivotVector);\n }\n}\nfunction Zt(r, t) {\n let e = 0;\n return Math.abs(r) > Math.abs(t) ? (e = t / r, Math.abs(r) * Math.sqrt(1 + e * e)) : t !== 0 ? (e = r / t, Math.abs(t) * Math.sqrt(1 + e * e)) : 0;\n}\nclass zi {\n constructor(t) {\n t = xt.checkMatrix(t);\n let e = t.clone(), i = t.rows, n = t.columns, s = new Float64Array(n), o, a, h, c;\n for (h = 0; h < n; h++) {\n let l = 0;\n for (o = h; o < i; o++)\n l = Zt(l, e.get(o, h));\n if (l !== 0) {\n for (e.get(h, h) < 0 && (l = -l), o = h; o < i; o++)\n e.set(o, h, e.get(o, h) / l);\n for (e.set(h, h, e.get(h, h) + 1), a = h + 1; a < n; a++) {\n for (c = 0, o = h; o < i; o++)\n c += e.get(o, h) * e.get(o, a);\n for (c = -c / e.get(h, h), o = h; o < i; o++)\n e.set(o, a, e.get(o, a) + c * e.get(o, h));\n }\n }\n s[h] = -l;\n }\n this.QR = e, this.Rdiag = s;\n }\n solve(t) {\n t = R.checkMatrix(t);\n let e = this.QR, i = e.rows;\n if (t.rows !== i)\n throw new Error(\"Matrix row dimensions must agree\");\n if (!this.isFullRank())\n throw new Error(\"Matrix is rank deficient\");\n let n = t.columns, s = t.clone(), o = e.columns, a, h, c, l;\n for (c = 0; c < o; c++)\n for (h = 0; h < n; h++) {\n for (l = 0, a = c; a < i; a++)\n l += e.get(a, c) * s.get(a, h);\n for (l = -l / e.get(c, c), a = c; a < i; a++)\n s.set(a, h, s.get(a, h) + l * e.get(a, c));\n }\n for (c = o - 1; c >= 0; c--) {\n for (h = 0; h < n; h++)\n s.set(c, h, s.get(c, h) / this.Rdiag[c]);\n for (a = 0; a < c; a++)\n for (h = 0; h < n; h++)\n s.set(a, h, s.get(a, h) - s.get(c, h) * e.get(a, c));\n }\n return s.subMatrix(0, o - 1, 0, n - 1);\n }\n isFullRank() {\n let t = this.QR.columns;\n for (let e = 0; e < t; e++)\n if (this.Rdiag[e] === 0)\n return !1;\n return !0;\n }\n get upperTriangularMatrix() {\n let t = this.QR, e = t.columns, i = new R(e, e), n, s;\n for (n = 0; n < e; n++)\n for (s = 0; s < e; s++)\n n < s ? i.set(n, s, t.get(n, s)) : n === s ? i.set(n, s, this.Rdiag[n]) : i.set(n, s, 0);\n return i;\n }\n get orthogonalMatrix() {\n let t = this.QR, e = t.rows, i = t.columns, n = new R(e, i), s, o, a, h;\n for (a = i - 1; a >= 0; a--) {\n for (s = 0; s < e; s++)\n n.set(s, a, 0);\n for (n.set(a, a, 1), o = a; o < i; o++)\n if (t.get(a, a) !== 0) {\n for (h = 0, s = a; s < e; s++)\n h += t.get(s, a) * n.get(s, o);\n for (h = -h / t.get(a, a), s = a; s < e; s++)\n n.set(s, o, n.get(s, o) + h * t.get(s, a));\n }\n }\n return n;\n }\n}\nlet xe = class {\n constructor(r, t = {}) {\n if (r = xt.checkMatrix(r), r.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let e = r.rows, i = r.columns;\n const {\n computeLeftSingularVectors: n = !0,\n computeRightSingularVectors: s = !0,\n autoTranspose: o = !1\n } = t;\n let a = !!n, h = !!s, c = !1, l;\n if (e < i)\n if (!o)\n l = r.clone(), console.warn(\n \"Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose\"\n );\n else {\n l = r.transpose(), e = l.rows, i = l.columns, c = !0;\n let d = a;\n a = h, h = d;\n }\n else\n l = r.clone();\n let u = Math.min(e, i), g = Math.min(e + 1, i), w = new Float64Array(g), y = new R(e, u), _ = new R(i, i), I = new Float64Array(i), v = new Float64Array(e), S = new Float64Array(g);\n for (let d = 0; d < g; d++)\n S[d] = d;\n let f = Math.min(e - 1, i), p = Math.max(0, Math.min(i - 2, e)), T = Math.max(f, p);\n for (let d = 0; d < T; d++) {\n if (d < f) {\n w[d] = 0;\n for (let x = d; x < e; x++)\n w[d] = Zt(w[d], l.get(x, d));\n if (w[d] !== 0) {\n l.get(d, d) < 0 && (w[d] = -w[d]);\n for (let x = d; x < e; x++)\n l.set(x, d, l.get(x, d) / w[d]);\n l.set(d, d, l.get(d, d) + 1);\n }\n w[d] = -w[d];\n }\n for (let x = d + 1; x < i; x++) {\n if (d < f && w[d] !== 0) {\n let M = 0;\n for (let b = d; b < e; b++)\n M += l.get(b, d) * l.get(b, x);\n M = -M / l.get(d, d);\n for (let b = d; b < e; b++)\n l.set(b, x, l.get(b, x) + M * l.get(b, d));\n }\n I[x] = l.get(d, x);\n }\n if (a && d < f)\n for (let x = d; x < e; x++)\n y.set(x, d, l.get(x, d));\n if (d < p) {\n I[d] = 0;\n for (let x = d + 1; x < i; x++)\n I[d] = Zt(I[d], I[x]);\n if (I[d] !== 0) {\n I[d + 1] < 0 && (I[d] = 0 - I[d]);\n for (let x = d + 1; x < i; x++)\n I[x] /= I[d];\n I[d + 1] += 1;\n }\n if (I[d] = -I[d], d + 1 < e && I[d] !== 0) {\n for (let x = d + 1; x < e; x++)\n v[x] = 0;\n for (let x = d + 1; x < e; x++)\n for (let M = d + 1; M < i; M++)\n v[x] += I[M] * l.get(x, M);\n for (let x = d + 1; x < i; x++) {\n let M = -I[x] / I[d + 1];\n for (let b = d + 1; b < e; b++)\n l.set(b, x, l.get(b, x) + M * v[b]);\n }\n }\n if (h)\n for (let x = d + 1; x < i; x++)\n _.set(x, d, I[x]);\n }\n }\n let A = Math.min(i, e + 1);\n if (f < i && (w[f] = l.get(f, f)), e < A && (w[A - 1] = 0), p + 1 < A && (I[p] = l.get(p, A - 1)), I[A - 1] = 0, a) {\n for (let d = f; d < u; d++) {\n for (let x = 0; x < e; x++)\n y.set(x, d, 0);\n y.set(d, d, 1);\n }\n for (let d = f - 1; d >= 0; d--)\n if (w[d] !== 0) {\n for (let x = d + 1; x < u; x++) {\n let M = 0;\n for (let b = d; b < e; b++)\n M += y.get(b, d) * y.get(b, x);\n M = -M / y.get(d, d);\n for (let b = d; b < e; b++)\n y.set(b, x, y.get(b, x) + M * y.get(b, d));\n }\n for (let x = d; x < e; x++)\n y.set(x, d, -y.get(x, d));\n y.set(d, d, 1 + y.get(d, d));\n for (let x = 0; x < d - 1; x++)\n y.set(x, d, 0);\n } else {\n for (let x = 0; x < e; x++)\n y.set(x, d, 0);\n y.set(d, d, 1);\n }\n }\n if (h)\n for (let d = i - 1; d >= 0; d--) {\n if (d < p && I[d] !== 0)\n for (let x = d + 1; x < i; x++) {\n let M = 0;\n for (let b = d + 1; b < i; b++)\n M += _.get(b, d) * _.get(b, x);\n M = -M / _.get(d + 1, d);\n for (let b = d + 1; b < i; b++)\n _.set(b, x, _.get(b, x) + M * _.get(b, d));\n }\n for (let x = 0; x < i; x++)\n _.set(x, d, 0);\n _.set(d, d, 1);\n }\n let C = A - 1, E = Number.EPSILON;\n for (; A > 0; ) {\n let d, x;\n for (d = A - 2; d >= -1 && d !== -1; d--) {\n const M = Number.MIN_VALUE + E * Math.abs(w[d] + Math.abs(w[d + 1]));\n if (Math.abs(I[d]) <= M || Number.isNaN(I[d])) {\n I[d] = 0;\n break;\n }\n }\n if (d === A - 2)\n x = 4;\n else {\n let M;\n for (M = A - 1; M >= d && M !== d; M--) {\n let b = (M !== A ? Math.abs(I[M]) : 0) + (M !== d + 1 ? Math.abs(I[M - 1]) : 0);\n if (Math.abs(w[M]) <= E * b) {\n w[M] = 0;\n break;\n }\n }\n M === d ? x = 3 : M === A - 1 ? x = 1 : (x = 2, d = M);\n }\n switch (d++, x) {\n case 1: {\n let M = I[A - 2];\n I[A - 2] = 0;\n for (let b = A - 2; b >= d; b--) {\n let Z = Zt(w[b], M), Y = w[b] / Z, H = M / Z;\n if (w[b] = Z, b !== d && (M = -H * I[b - 1], I[b - 1] = Y * I[b - 1]), h)\n for (let V = 0; V < i; V++)\n Z = Y * _.get(V, b) + H * _.get(V, A - 1), _.set(V, A - 1, -H * _.get(V, b) + Y * _.get(V, A - 1)), _.set(V, b, Z);\n }\n break;\n }\n case 2: {\n let M = I[d - 1];\n I[d - 1] = 0;\n for (let b = d; b < A; b++) {\n let Z = Zt(w[b], M), Y = w[b] / Z, H = M / Z;\n if (w[b] = Z, M = -H * I[b], I[b] = Y * I[b], a)\n for (let V = 0; V < e; V++)\n Z = Y * y.get(V, b) + H * y.get(V, d - 1), y.set(V, d - 1, -H * y.get(V, b) + Y * y.get(V, d - 1)), y.set(V, b, Z);\n }\n break;\n }\n case 3: {\n const M = Math.max(\n Math.abs(w[A - 1]),\n Math.abs(w[A - 2]),\n Math.abs(I[A - 2]),\n Math.abs(w[d]),\n Math.abs(I[d])\n ), b = w[A - 1] / M, Z = w[A - 2] / M, Y = I[A - 2] / M, H = w[d] / M, V = I[d] / M, st = ((Z + b) * (Z - b) + Y * Y) / 2, ht = b * Y * (b * Y);\n let dt = 0;\n (st !== 0 || ht !== 0) && (st < 0 ? dt = 0 - Math.sqrt(st * st + ht) : dt = Math.sqrt(st * st + ht), dt = ht / (st + dt));\n let tt = (H + b) * (H - b) + dt, Tt = H * V;\n for (let U = d; U < A - 1; U++) {\n let it = Zt(tt, Tt);\n it === 0 && (it = Number.MIN_VALUE);\n let ft = tt / it, ct = Tt / it;\n if (U !== d && (I[U - 1] = it), tt = ft * w[U] + ct * I[U], I[U] = ft * I[U] - ct * w[U], Tt = ct * w[U + 1], w[U + 1] = ft * w[U + 1], h)\n for (let ot = 0; ot < i; ot++)\n it = ft * _.get(ot, U) + ct * _.get(ot, U + 1), _.set(ot, U + 1, -ct * _.get(ot, U) + ft * _.get(ot, U + 1)), _.set(ot, U, it);\n if (it = Zt(tt, Tt), it === 0 && (it = Number.MIN_VALUE), ft = tt / it, ct = Tt / it, w[U] = it, tt = ft * I[U] + ct * w[U + 1], w[U + 1] = -ct * I[U] + ft * w[U + 1], Tt = ct * I[U + 1], I[U + 1] = ft * I[U + 1], a && U < e - 1)\n for (let ot = 0; ot < e; ot++)\n it = ft * y.get(ot, U) + ct * y.get(ot, U + 1), y.set(ot, U + 1, -ct * y.get(ot, U) + ft * y.get(ot, U + 1)), y.set(ot, U, it);\n }\n I[A - 2] = tt;\n break;\n }\n case 4: {\n if (w[d] <= 0 && (w[d] = w[d] < 0 ? -w[d] : 0, h))\n for (let M = 0; M <= C; M++)\n _.set(M, d, -_.get(M, d));\n for (; d < C && !(w[d] >= w[d + 1]); ) {\n let M = w[d];\n if (w[d] = w[d + 1], w[d + 1] = M, h && d < i - 1)\n for (let b = 0; b < i; b++)\n M = _.get(b, d + 1), _.set(b, d + 1, _.get(b, d)), _.set(b, d, M);\n if (a && d < e - 1)\n for (let b = 0; b < e; b++)\n M = y.get(b, d + 1), y.set(b, d + 1, y.get(b, d)), y.set(b, d, M);\n d++;\n }\n A--;\n break;\n }\n }\n }\n if (c) {\n let d = _;\n _ = y, y = d;\n }\n this.m = e, this.n = i, this.s = w, this.U = y, this.V = _;\n }\n solve(r) {\n let t = r, e = this.threshold, i = this.s.length, n = R.zeros(i, i);\n for (let u = 0; u < i; u++)\n Math.abs(this.s[u]) <= e ? n.set(u, u, 0) : n.set(u, u, 1 / this.s[u]);\n let s = this.U, o = this.rightSingularVectors, a = o.mmul(n), h = o.rows, c = s.rows, l = R.zeros(h, c);\n for (let u = 0; u < h; u++)\n for (let g = 0; g < c; g++) {\n let w = 0;\n for (let y = 0; y < i; y++)\n w += a.get(u, y) * s.get(g, y);\n l.set(u, g, w);\n }\n return l.mmul(t);\n }\n solveForDiagonal(r) {\n return this.solve(R.diag(r));\n }\n inverse() {\n let r = this.V, t = this.threshold, e = r.rows, i = r.columns, n = new R(e, this.s.length);\n for (let c = 0; c < e; c++)\n for (let l = 0; l < i; l++)\n Math.abs(this.s[l]) > t && n.set(c, l, r.get(c, l) / this.s[l]);\n let s = this.U, o = s.rows, a = s.columns, h = new R(e, o);\n for (let c = 0; c < e; c++)\n for (let l = 0; l < o; l++) {\n let u = 0;\n for (let g = 0; g < a; g++)\n u += n.get(c, g) * s.get(l, g);\n h.set(c, l, u);\n }\n return h;\n }\n get condition() {\n return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n }\n get norm2() {\n return this.s[0];\n }\n get rank() {\n let r = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON, t = 0, e = this.s;\n for (let i = 0, n = e.length; i < n; i++)\n e[i] > r && t++;\n return t;\n }\n get diagonal() {\n return Array.from(this.s);\n }\n get threshold() {\n return Number.EPSILON / 2 * Math.max(this.m, this.n) * this.s[0];\n }\n get leftSingularVectors() {\n return this.U;\n }\n get rightSingularVectors() {\n return this.V;\n }\n get diagonalMatrix() {\n return R.diag(this.s);\n }\n};\nfunction Rc(r, t = !1) {\n return r = xt.checkMatrix(r), t ? new xe(r).inverse() : ks(r, R.eye(r.rows));\n}\nfunction ks(r, t, e = !1) {\n return r = xt.checkMatrix(r), t = xt.checkMatrix(t), e ? new xe(r).solve(t) : r.isSquare() ? new Yr(r).solve(t) : new zi(r).solve(t);\n}\nfunction br(r) {\n if (r = R.checkMatrix(r), r.isSquare()) {\n if (r.columns === 0)\n return 1;\n let t, e, i, n;\n if (r.columns === 2)\n return t = r.get(0, 0), e = r.get(0, 1), i = r.get(1, 0), n = r.get(1, 1), t * n - e * i;\n if (r.columns === 3) {\n let s, o, a;\n return s = new Tr(r, [1, 2], [1, 2]), o = new Tr(r, [1, 2], [0, 2]), a = new Tr(r, [1, 2], [0, 1]), t = r.get(0, 0), e = r.get(0, 1), i = r.get(0, 2), t * br(s) - e * br(o) + i * br(a);\n } else\n return new Yr(r).determinant;\n } else\n throw Error(\"determinant can only be calculated for a square matrix\");\n}\nfunction kc(r, t) {\n let e = [];\n for (let i = 0; i < r; i++)\n i !== t && e.push(i);\n return e;\n}\nfunction Oc(r, t, e, i = 1e-9, n = 1e-9) {\n if (r > n)\n return new Array(t.rows + 1).fill(0);\n {\n let s = t.addRow(e, [0]);\n for (let o = 0; o < s.rows; o++)\n Math.abs(s.get(o, 0)) < i && s.set(o, 0, 0);\n return s.to1DArray();\n }\n}\nfunction Nc(r, t = {}) {\n const { thresholdValue: e = 1e-9, thresholdError: i = 1e-9 } = t;\n r = R.checkMatrix(r);\n let n = r.rows, s = new R(n, n);\n for (let o = 0; o < n; o++) {\n let a = R.columnVector(r.getRow(o)), h = r.subMatrixRow(kc(n, o)).transpose(), c = new xe(h).solve(a), l = R.sub(a, h.mmul(c)).abs().max();\n s.setRow(\n o,\n Oc(l, c, o, e, i)\n );\n }\n return s;\n}\nfunction Lc(r, t = Number.EPSILON) {\n if (r = R.checkMatrix(r), r.isEmpty())\n return r.transpose();\n let e = new xe(r, { autoTranspose: !0 }), i = e.leftSingularVectors, n = e.rightSingularVectors, s = e.diagonal;\n for (let o = 0; o < s.length; o++)\n Math.abs(s[o]) > t ? s[o] = 1 / s[o] : s[o] = 0;\n return n.mmul(R.diag(s).mmul(i.transpose()));\n}\nfunction jc(r, t = r, e = {}) {\n r = new R(r);\n let i = !1;\n if (typeof t == \"object\" && !R.isMatrix(t) && !wt.isAnyArray(t) ? (e = t, t = r, i = !0) : t = new R(t), r.rows !== t.rows)\n throw new TypeError(\"Both matrices must have the same number of rows\");\n const { center: n = !0 } = e;\n n && (r = r.center(\"column\"), i || (t = t.center(\"column\")));\n const s = r.transpose().mmul(t);\n for (let o = 0; o < s.rows; o++)\n for (let a = 0; a < s.columns; a++)\n s.set(o, a, s.get(o, a) * (1 / (r.rows - 1)));\n return s;\n}\nfunction Bc(r, t = r, e = {}) {\n r = new R(r);\n let i = !1;\n if (typeof t == \"object\" && !R.isMatrix(t) && !wt.isAnyArray(t) ? (e = t, t = r, i = !0) : t = new R(t), r.rows !== t.rows)\n throw new TypeError(\"Both matrices must have the same number of rows\");\n const { center: n = !0, scale: s = !0 } = e;\n n && (r.center(\"column\"), i || t.center(\"column\")), s && (r.scale(\"column\"), i || t.scale(\"column\"));\n const o = r.standardDeviation(\"column\", { unbiased: !0 }), a = i ? o : t.standardDeviation(\"column\", { unbiased: !0 }), h = r.transpose().mmul(t);\n for (let c = 0; c < h.rows; c++)\n for (let l = 0; l < h.columns; l++)\n h.set(\n c,\n l,\n h.get(c, l) * (1 / (o[c] * a[l])) * (1 / (r.rows - 1))\n );\n return h;\n}\nclass Os {\n constructor(t, e = {}) {\n const { assumeSymmetric: i = !1 } = e;\n if (t = xt.checkMatrix(t), !t.isSquare())\n throw new Error(\"Matrix is not a square matrix\");\n if (t.isEmpty())\n throw new Error(\"Matrix must be non-empty\");\n let n = t.columns, s = new R(n, n), o = new Float64Array(n), a = new Float64Array(n), h = t, c, l, u = !1;\n if (i ? u = !0 : u = t.isSymmetric(), u) {\n for (c = 0; c < n; c++)\n for (l = 0; l < n; l++)\n s.set(c, l, h.get(c, l));\n Dc(n, a, o, s), Gc(n, a, o, s);\n } else {\n let g = new R(n, n), w = new Float64Array(n);\n for (l = 0; l < n; l++)\n for (c = 0; c < n; c++)\n g.set(c, l, h.get(c, l));\n Fc(n, g, w, s), Uc(n, a, o, s, g);\n }\n this.n = n, this.e = a, this.d = o, this.V = s;\n }\n get realEigenvalues() {\n return Array.from(this.d);\n }\n get imaginaryEigenvalues() {\n return Array.from(this.e);\n }\n get eigenvectorMatrix() {\n return this.V;\n }\n get diagonalMatrix() {\n let t = this.n, e = this.e, i = this.d, n = new R(t, t), s, o;\n for (s = 0; s < t; s++) {\n for (o = 0; o < t; o++)\n n.set(s, o, 0);\n n.set(s, s, i[s]), e[s] > 0 ? n.set(s, s + 1, e[s]) : e[s] < 0 && n.set(s, s - 1, e[s]);\n }\n return n;\n }\n}\nfunction Dc(r, t, e, i) {\n let n, s, o, a, h, c, l, u;\n for (h = 0; h < r; h++)\n e[h] = i.get(r - 1, h);\n for (a = r - 1; a > 0; a--) {\n for (u = 0, o = 0, c = 0; c < a; c++)\n u = u + Math.abs(e[c]);\n if (u === 0)\n for (t[a] = e[a - 1], h = 0; h < a; h++)\n e[h] = i.get(a - 1, h), i.set(a, h, 0), i.set(h, a, 0);\n else {\n for (c = 0; c < a; c++)\n e[c] /= u, o += e[c] * e[c];\n for (n = e[a - 1], s = Math.sqrt(o), n > 0 && (s = -s), t[a] = u * s, o = o - n * s, e[a - 1] = n - s, h = 0; h < a; h++)\n t[h] = 0;\n for (h = 0; h < a; h++) {\n for (n = e[h], i.set(h, a, n), s = t[h] + i.get(h, h) * n, c = h + 1; c <= a - 1; c++)\n s += i.get(c, h) * e[c], t[c] += i.get(c, h) * n;\n t[h] = s;\n }\n for (n = 0, h = 0; h < a; h++)\n t[h] /= o, n += t[h] * e[h];\n for (l = n / (o + o), h = 0; h < a; h++)\n t[h] -= l * e[h];\n for (h = 0; h < a; h++) {\n for (n = e[h], s = t[h], c = h; c <= a - 1; c++)\n i.set(c, h, i.get(c, h) - (n * t[c] + s * e[c]));\n e[h] = i.get(a - 1, h), i.set(a, h, 0);\n }\n }\n e[a] = o;\n }\n for (a = 0; a < r - 1; a++) {\n if (i.set(r - 1, a, i.get(a, a)), i.set(a, a, 1), o = e[a + 1], o !== 0) {\n for (c = 0; c <= a; c++)\n e[c] = i.get(c, a + 1) / o;\n for (h = 0; h <= a; h++) {\n for (s = 0, c = 0; c <= a; c++)\n s += i.get(c, a + 1) * i.get(c, h);\n for (c = 0; c <= a; c++)\n i.set(c, h, i.get(c, h) - s * e[c]);\n }\n }\n for (c = 0; c <= a; c++)\n i.set(c, a + 1, 0);\n }\n for (h = 0; h < r; h++)\n e[h] = i.get(r - 1, h), i.set(r - 1, h, 0);\n i.set(r - 1, r - 1, 1), t[0] = 0;\n}\nfunction Gc(r, t, e, i) {\n let n, s, o, a, h, c, l, u, g, w, y, _, I, v, S, f;\n for (o = 1; o < r; o++)\n t[o - 1] = t[o];\n t[r - 1] = 0;\n let p = 0, T = 0, A = Number.EPSILON;\n for (c = 0; c < r; c++) {\n for (T = Math.max(T, Math.abs(e[c]) + Math.abs(t[c])), l = c; l < r && !(Math.abs(t[l]) <= A * T); )\n l++;\n if (l > c)\n do {\n for (n = e[c], u = (e[c + 1] - n) / (2 * t[c]), g = Zt(u, 1), u < 0 && (g = -g), e[c] = t[c] / (u + g), e[c + 1] = t[c] * (u + g), w = e[c + 1], s = n - e[c], o = c + 2; o < r; o++)\n e[o] -= s;\n for (p = p + s, u = e[l], y = 1, _ = y, I = y, v = t[c + 1], S = 0, f = 0, o = l - 1; o >= c; o--)\n for (I = _, _ = y, f = S, n = y * t[o], s = y * u, g = Zt(u, t[o]), t[o + 1] = S * g, S = t[o] / g, y = u / g, u = y * e[o] - S * n, e[o + 1] = s + S * (y * n + S * e[o]), h = 0; h < r; h++)\n s = i.get(h, o + 1), i.set(h, o + 1, S * i.get(h, o) + y * s), i.set(h, o, y * i.get(h, o) - S * s);\n u = -S * f * I * v * t[c] / w, t[c] = S * u, e[c] = y * u;\n } while (Math.abs(t[c]) > A * T);\n e[c] = e[c] + p, t[c] = 0;\n }\n for (o = 0; o < r - 1; o++) {\n for (h = o, u = e[o], a = o + 1; a < r; a++)\n e[a] < u && (h = a, u = e[a]);\n if (h !== o)\n for (e[h] = e[o], e[o] = u, a = 0; a < r; a++)\n u = i.get(a, o), i.set(a, o, i.get(a, h)), i.set(a, h, u);\n }\n}\nfunction Fc(r, t, e, i) {\n let n = 0, s = r - 1, o, a, h, c, l, u, g;\n for (u = n + 1; u <= s - 1; u++) {\n for (g = 0, c = u; c <= s; c++)\n g = g + Math.abs(t.get(c, u - 1));\n if (g !== 0) {\n for (h = 0, c = s; c >= u; c--)\n e[c] = t.get(c, u - 1) / g, h += e[c] * e[c];\n for (a = Math.sqrt(h), e[u] > 0 && (a = -a), h = h - e[u] * a, e[u] = e[u] - a, l = u; l < r; l++) {\n for (o = 0, c = s; c >= u; c--)\n o += e[c] * t.get(c, l);\n for (o = o / h, c = u; c <= s; c++)\n t.set(c, l, t.get(c, l) - o * e[c]);\n }\n for (c = 0; c <= s; c++) {\n for (o = 0, l = s; l >= u; l--)\n o += e[l] * t.get(c, l);\n for (o = o / h, l = u; l <= s; l++)\n t.set(c, l, t.get(c, l) - o * e[l]);\n }\n e[u] = g * e[u], t.set(u, u - 1, g * a);\n }\n }\n for (c = 0; c < r; c++)\n for (l = 0; l < r; l++)\n i.set(c, l, c === l ? 1 : 0);\n for (u = s - 1; u >= n + 1; u--)\n if (t.get(u, u - 1) !== 0) {\n for (c = u + 1; c <= s; c++)\n e[c] = t.get(c, u - 1);\n for (l = u; l <= s; l++) {\n for (a = 0, c = u; c <= s; c++)\n a += e[c] * i.get(c, l);\n for (a = a / e[u] / t.get(u, u - 1), c = u; c <= s; c++)\n i.set(c, l, i.get(c, l) + a * e[c]);\n }\n }\n}\nfunction Uc(r, t, e, i, n) {\n let s = r - 1, o = 0, a = r - 1, h = Number.EPSILON, c = 0, l = 0, u = 0, g = 0, w = 0, y = 0, _ = 0, I = 0, v, S, f, p, T, A, C, E, d, x, M, b, Z, Y, H;\n for (v = 0; v < r; v++)\n for ((v < o || v > a) && (e[v] = n.get(v, v), t[v] = 0), S = Math.max(v - 1, 0); S < r; S++)\n l = l + Math.abs(n.get(v, S));\n for (; s >= o; ) {\n for (p = s; p > o && (y = Math.abs(n.get(p - 1, p - 1)) + Math.abs(n.get(p, p)), y === 0 && (y = l), !(Math.abs(n.get(p, p - 1)) < h * y)); )\n p--;\n if (p === s)\n n.set(s, s, n.get(s, s) + c), e[s] = n.get(s, s), t[s] = 0, s--, I = 0;\n else if (p === s - 1) {\n if (C = n.get(s, s - 1) * n.get(s - 1, s), u = (n.get(s - 1, s - 1) - n.get(s, s)) / 2, g = u * u + C, _ = Math.sqrt(Math.abs(g)), n.set(s, s, n.get(s, s) + c), n.set(s - 1, s - 1, n.get(s - 1, s - 1) + c), E = n.get(s, s), g >= 0) {\n for (_ = u >= 0 ? u + _ : u - _, e[s - 1] = E + _, e[s] = e[s - 1], _ !== 0 && (e[s] = E - C / _), t[s - 1] = 0, t[s] = 0, E = n.get(s, s - 1), y = Math.abs(E) + Math.abs(_), u = E / y, g = _ / y, w = Math.sqrt(u * u + g * g), u = u / w, g = g / w, S = s - 1; S < r; S++)\n _ = n.get(s - 1, S), n.set(s - 1, S, g * _ + u * n.get(s, S)), n.set(s, S, g * n.get(s, S) - u * _);\n for (v = 0; v <= s; v++)\n _ = n.get(v, s - 1), n.set(v, s - 1, g * _ + u * n.get(v, s)), n.set(v, s, g * n.get(v, s) - u * _);\n for (v = o; v <= a; v++)\n _ = i.get(v, s - 1), i.set(v, s - 1, g * _ + u * i.get(v, s)), i.set(v, s, g * i.get(v, s) - u * _);\n } else\n e[s - 1] = E + u, e[s] = E + u, t[s - 1] = _, t[s] = -_;\n s = s - 2, I = 0;\n } else {\n if (E = n.get(s, s), d = 0, C = 0, p < s && (d = n.get(s - 1, s - 1), C = n.get(s, s - 1) * n.get(s - 1, s)), I === 10) {\n for (c += E, v = o; v <= s; v++)\n n.set(v, v, n.get(v, v) - E);\n y = Math.abs(n.get(s, s - 1)) + Math.abs(n.get(s - 1, s - 2)), E = d = 0.75 * y, C = -0.4375 * y * y;\n }\n if (I === 30 && (y = (d - E) / 2, y = y * y + C, y > 0)) {\n for (y = Math.sqrt(y), d < E && (y = -y), y = E - C / ((d - E) / 2 + y), v = o; v <= s; v++)\n n.set(v, v, n.get(v, v) - y);\n c += y, E = d = C = 0.964;\n }\n for (I = I + 1, T = s - 2; T >= p && (_ = n.get(T, T), w = E - _, y = d - _, u = (w * y - C) / n.get(T + 1, T) + n.get(T, T + 1), g = n.get(T + 1, T + 1) - _ - w - y, w = n.get(T + 2, T + 1), y = Math.abs(u) + Math.abs(g) + Math.abs(w), u = u / y, g = g / y, w = w / y, !(T === p || Math.abs(n.get(T, T - 1)) * (Math.abs(g) + Math.abs(w)) < h * (Math.abs(u) * (Math.abs(n.get(T - 1, T - 1)) + Math.abs(_) + Math.abs(n.get(T + 1, T + 1)))))); )\n T--;\n for (v = T + 2; v <= s; v++)\n n.set(v, v - 2, 0), v > T + 2 && n.set(v, v - 3, 0);\n for (f = T; f <= s - 1 && (Y = f !== s - 1, f !== T && (u = n.get(f, f - 1), g = n.get(f + 1, f - 1), w = Y ? n.get(f + 2, f - 1) : 0, E = Math.abs(u) + Math.abs(g) + Math.abs(w), E !== 0 && (u = u / E, g = g / E, w = w / E)), E !== 0); f++)\n if (y = Math.sqrt(u * u + g * g + w * w), u < 0 && (y = -y), y !== 0) {\n for (f !== T ? n.set(f, f - 1, -y * E) : p !== T && n.set(f, f - 1, -n.get(f, f - 1)), u = u + y, E = u / y, d = g / y, _ = w / y, g = g / u, w = w / u, S = f; S < r; S++)\n u = n.get(f, S) + g * n.get(f + 1, S), Y && (u = u + w * n.get(f + 2, S), n.set(f + 2, S, n.get(f + 2, S) - u * _)), n.set(f, S, n.get(f, S) - u * E), n.set(f + 1, S, n.get(f + 1, S) - u * d);\n for (v = 0; v <= Math.min(s, f + 3); v++)\n u = E * n.get(v, f) + d * n.get(v, f + 1), Y && (u = u + _ * n.get(v, f + 2), n.set(v, f + 2, n.get(v, f + 2) - u * w)), n.set(v, f, n.get(v, f) - u), n.set(v, f + 1, n.get(v, f + 1) - u * g);\n for (v = o; v <= a; v++)\n u = E * i.get(v, f) + d * i.get(v, f + 1), Y && (u = u + _ * i.get(v, f + 2), i.set(v, f + 2, i.get(v, f + 2) - u * w)), i.set(v, f, i.get(v, f) - u), i.set(v, f + 1, i.get(v, f + 1) - u * g);\n }\n }\n }\n if (l !== 0) {\n for (s = r - 1; s >= 0; s--)\n if (u = e[s], g = t[s], g === 0)\n for (p = s, n.set(s, s, 1), v = s - 1; v >= 0; v--) {\n for (C = n.get(v, v) - u, w = 0, S = p; S <= s; S++)\n w = w + n.get(v, S) * n.get(S, s);\n if (t[v] < 0)\n _ = C, y = w;\n else if (p = v, t[v] === 0 ? n.set(v, s, C !== 0 ? -w / C : -w / (h * l)) : (E = n.get(v, v + 1), d = n.get(v + 1, v), g = (e[v] - u) * (e[v] - u) + t[v] * t[v], A = (E * y - _ * w) / g, n.set(v, s, A), n.set(\n v + 1,\n s,\n Math.abs(E) > Math.abs(_) ? (-w - C * A) / E : (-y - d * A) / _\n )), A = Math.abs(n.get(v, s)), h * A * A > 1)\n for (S = v; S <= s; S++)\n n.set(S, s, n.get(S, s) / A);\n }\n else if (g < 0)\n for (p = s - 1, Math.abs(n.get(s, s - 1)) > Math.abs(n.get(s - 1, s)) ? (n.set(s - 1, s - 1, g / n.get(s, s - 1)), n.set(s - 1, s, -(n.get(s, s) - u) / n.get(s, s - 1))) : (H = ur(0, -n.get(s - 1, s), n.get(s - 1, s - 1) - u, g), n.set(s - 1, s - 1, H[0]), n.set(s - 1, s, H[1])), n.set(s, s - 1, 0), n.set(s, s, 1), v = s - 2; v >= 0; v--) {\n for (x = 0, M = 0, S = p; S <= s; S++)\n x = x + n.get(v, S) * n.get(S, s - 1), M = M + n.get(v, S) * n.get(S, s);\n if (C = n.get(v, v) - u, t[v] < 0)\n _ = C, w = x, y = M;\n else if (p = v, t[v] === 0 ? (H = ur(-x, -M, C, g), n.set(v, s - 1, H[0]), n.set(v, s, H[1])) : (E = n.get(v, v + 1), d = n.get(v + 1, v), b = (e[v] - u) * (e[v] - u) + t[v] * t[v] - g * g, Z = (e[v] - u) * 2 * g, b === 0 && Z === 0 && (b = h * l * (Math.abs(C) + Math.abs(g) + Math.abs(E) + Math.abs(d) + Math.abs(_))), H = ur(\n E * w - _ * x + g * M,\n E * y - _ * M - g * x,\n b,\n Z\n ), n.set(v, s - 1, H[0]), n.set(v, s, H[1]), Math.abs(E) > Math.abs(_) + Math.abs(g) ? (n.set(\n v + 1,\n s - 1,\n (-x - C * n.get(v, s - 1) + g * n.get(v, s)) / E\n ), n.set(\n v + 1,\n s,\n (-M - C * n.get(v, s) - g * n.get(v, s - 1)) / E\n )) : (H = ur(\n -w - d * n.get(v, s - 1),\n -y - d * n.get(v, s),\n _,\n g\n ), n.set(v + 1, s - 1, H[0]), n.set(v + 1, s, H[1]))), A = Math.max(Math.abs(n.get(v, s - 1)), Math.abs(n.get(v, s))), h * A * A > 1)\n for (S = v; S <= s; S++)\n n.set(S, s - 1, n.get(S, s - 1) / A), n.set(S, s, n.get(S, s) / A);\n }\n for (v = 0; v < r; v++)\n if (v < o || v > a)\n for (S = v; S < r; S++)\n i.set(v, S, n.get(v, S));\n for (S = r - 1; S >= o; S--)\n for (v = o; v <= a; v++) {\n for (_ = 0, f = o; f <= Math.min(S, a); f++)\n _ = _ + i.get(v, f) * n.get(f, S);\n i.set(v, S, _);\n }\n }\n}\nfunction ur(r, t, e, i) {\n let n, s;\n return Math.abs(e) > Math.abs(i) ? (n = i / e, s = e + n * i, [(r + n * t) / s, (t - n * r) / s]) : (n = e / i, s = i + n * e, [(n * r + t) / s, (n * t - r) / s]);\n}\nclass Ns {\n constructor(t) {\n if (t = xt.checkMatrix(t), !t.isSymmetric())\n throw new Error(\"Matrix is not symmetric\");\n let e = t, i = e.rows, n = new R(i, i), s = !0, o, a, h;\n for (a = 0; a < i; a++) {\n let c = 0;\n for (h = 0; h < a; h++) {\n let l = 0;\n for (o = 0; o < h; o++)\n l += n.get(h, o) * n.get(a, o);\n l = (e.get(a, h) - l) / n.get(h, h), n.set(a, h, l), c = c + l * l;\n }\n for (c = e.get(a, a) - c, s &= c > 0, n.set(a, a, Math.sqrt(Math.max(c, 0))), h = a + 1; h < i; h++)\n n.set(a, h, 0);\n }\n this.L = n, this.positiveDefinite = !!s;\n }\n isPositiveDefinite() {\n return this.positiveDefinite;\n }\n solve(t) {\n t = xt.checkMatrix(t);\n let e = this.L, i = e.rows;\n if (t.rows !== i)\n throw new Error(\"Matrix dimensions do not match\");\n if (this.isPositiveDefinite() === !1)\n throw new Error(\"Matrix is not positive definite\");\n let n = t.columns, s = t.clone(), o, a, h;\n for (h = 0; h < i; h++)\n for (a = 0; a < n; a++) {\n for (o = 0; o < h; o++)\n s.set(h, a, s.get(h, a) - s.get(o, a) * e.get(h, o));\n s.set(h, a, s.get(h, a) / e.get(h, h));\n }\n for (h = i - 1; h >= 0; h--)\n for (a = 0; a < n; a++) {\n for (o = h + 1; o < i; o++)\n s.set(h, a, s.get(h, a) - s.get(o, a) * e.get(o, h));\n s.set(h, a, s.get(h, a) / e.get(h, h));\n }\n return s;\n }\n get lowerTriangularMatrix() {\n return this.L;\n }\n}\nclass Ls {\n constructor(t, e = {}) {\n t = xt.checkMatrix(t);\n let { Y: i } = e;\n const {\n scaleScores: n = !1,\n maxIterations: s = 1e3,\n terminationCriteria: o = 1e-10\n } = e;\n let a;\n if (i) {\n if (wt.isAnyArray(i) && typeof i[0] == \"number\" ? i = R.columnVector(i) : i = xt.checkMatrix(i), i.rows !== t.rows)\n throw new Error(\"Y should have the same number of rows as X\");\n a = i.getColumnVector(0);\n } else\n a = t.getColumnVector(0);\n let h = 1, c, l, u, g;\n for (let w = 0; w < s && h > o; w++)\n u = t.transpose().mmul(a).div(a.transpose().mmul(a).get(0, 0)), u = u.div(u.norm()), c = t.mmul(u).div(u.transpose().mmul(u).get(0, 0)), w > 0 && (h = c.clone().sub(g).pow(2).sum()), g = c.clone(), i ? (l = i.transpose().mmul(c).div(c.transpose().mmul(c).get(0, 0)), l = l.div(l.norm()), a = i.mmul(l).div(l.transpose().mmul(l).get(0, 0))) : a = c;\n if (i) {\n let w = t.transpose().mmul(c).div(c.transpose().mmul(c).get(0, 0));\n w = w.div(w.norm());\n let y = t.clone().sub(c.clone().mmul(w.transpose())), _ = a.transpose().mmul(c).div(c.transpose().mmul(c).get(0, 0)), I = i.clone().sub(\n c.clone().mulS(_.get(0, 0)).mmul(l.transpose())\n );\n this.t = c, this.p = w.transpose(), this.w = u.transpose(), this.q = l, this.u = a, this.s = c.transpose().mmul(c), this.xResidual = y, this.yResidual = I, this.betas = _;\n } else\n this.w = u.transpose(), this.s = c.transpose().mmul(c).sqrt(), n ? this.t = c.clone().div(this.s.get(0, 0)) : this.t = c, this.xResidual = t.sub(c.mmul(u.transpose()));\n }\n}\nX.AbstractMatrix = G;\nX.CHO = Ns;\nX.CholeskyDecomposition = Ns;\nX.DistanceMatrix = Hr;\nX.EVD = Os;\nX.EigenvalueDecomposition = Os;\nX.LU = Yr;\nX.LuDecomposition = Yr;\nvar Wc = X.Matrix = R;\nX.MatrixColumnSelectionView = Mc;\nX.MatrixColumnView = bc;\nX.MatrixFlipColumnView = _c;\nX.MatrixFlipRowView = Ec;\nX.MatrixRowSelectionView = Sc;\nX.MatrixRowView = Ic;\nX.MatrixSelectionView = Tr;\nX.MatrixSubView = Ac;\nX.MatrixTransposeView = Pc;\nX.NIPALS = Ls;\nX.Nipals = Ls;\nX.QR = zi;\nX.QrDecomposition = zi;\nX.SVD = xe;\nvar Vc = X.SingularValueDecomposition = xe;\nX.SymmetricMatrix = Ce;\nX.WrapperMatrix1D = Rs;\nX.WrapperMatrix2D = xt;\nX.correlation = Bc;\nX.covariance = jc;\nvar In = X.default = R;\nX.determinant = br;\nvar zc = X.inverse = Rc;\nX.linearDependencies = Nc;\nvar Zc = X.pseudoInverse = Lc;\nX.solve = ks;\nX.wrap = Cc;\nconst _t = Wc, $c = Vc;\nIn.Matrix && In.Matrix;\nconst qc = zc, js = Zc;\nclass Bs {\n constructor(t, e) {\n if (this.sourcePoints = t, this.destinationPoints = e, this.pointCount = this.sourcePoints.length, this.pointCount < 2)\n throw new Error(\n \"Not enough control points. A helmert transformation requires a minimum of 2 points, but \" + this.pointCount + \" are given.\"\n );\n const i = _t.columnVector(\n e.flat()\n ), n = _t.zeros(2 * this.pointCount, 4);\n for (let o = 0; o < this.pointCount; o++)\n n.set(2 * o, 0, 1), n.set(2 * o, 1, 0), n.set(2 * o, 2, t[o][0]), n.set(2 * o, 3, -t[o][1]), n.set(2 * o + 1, 0, 0), n.set(2 * o + 1, 1, 1), n.set(2 * o + 1, 2, t[o][1]), n.set(2 * o + 1, 3, t[o][0]);\n const s = js(n);\n this.helmertParametersMatrix = s.mmul(\n i\n ), this.helmertParameters = this.helmertParametersMatrix.to1DArray(), this.scale = Math.sqrt(\n this.helmertParameters[2] ** 2 + this.helmertParameters[3] ** 2\n ), this.rotation = Math.atan2(\n this.helmertParameters[3],\n this.helmertParameters[2]\n ), this.translation = [this.helmertParameters[0], this.helmertParameters[1]];\n }\n // The interpolant function will compute the value at any point.\n interpolate(t) {\n if (!this.helmertParameters)\n throw new Error(\"Helmert parameters not computed\");\n return [\n this.helmertParameters[0] + this.helmertParameters[2] * t[0] - this.helmertParameters[3] * t[1],\n this.helmertParameters[1] + this.helmertParameters[2] * t[1] + this.helmertParameters[3] * t[0]\n ];\n }\n}\nclass Xc {\n constructor(t, e, i) {\n if (this.sourcePoints = t, this.destinationPoints = e, this.options = i, this.pointCount = this.sourcePoints.length, this.pointCount < 2)\n throw new Error(\n \"Not enough control points. A straight transformation requires a minimum of 2 points, but \" + this.pointCount + \" are given.\"\n );\n const n = new Bs(t, e);\n if (this.scale = n.scale, !this.scale)\n throw new Error(\"Scale could not be computed\");\n this.sourcePointsCenter = this.sourcePoints.reduce((o, a) => [o[0] + a[0], o[1] + a[1]]).map((o) => o / this.pointCount), this.destinationPointsCenter = this.destinationPoints.reduce((o, a) => [o[0] + a[0], o[1] + a[1]]).map((o) => o / this.pointCount);\n const s = this.scale;\n this.translation = this.destinationPointsCenter.map(\n (o, a) => o - this.sourcePointsCenter[a] * s\n );\n }\n // The interpolant function will compute the value at any point.\n interpolate(t) {\n if (!this.scale || !this.translation)\n throw new Error(\"Straight parameters not computed\");\n return [\n this.translation[0] + this.scale * t[0],\n this.translation[1] + this.scale * t[1]\n ];\n }\n}\nclass ci {\n constructor(t, e, i) {\n if (this.sourcePoints = t, this.destinationPoints = e, this.pointCount = this.sourcePoints.length, this.order = i || 1, this.nCoefs = (this.order + 1) * (this.order + 2) / 2, this.pointCount < this.nCoefs)\n throw new Error(\n \"Not enough control points. A polynomial transformation of order \" + this.order + \" requires a minimum of \" + this.nCoefs + \" points, but \" + this.pointCount + \" are given.\"\n );\n if (this.order < 1 || this.order > 3)\n throw new Error(\n \"Only polynomial transformations of order 1, 2 or 3 are supported\"\n );\n const n = [\n _t.columnVector(e.map((a) => a[0])),\n _t.columnVector(e.map((a) => a[1]))\n ], s = _t.zeros(this.pointCount, this.nCoefs);\n for (let a = 0; a < this.pointCount; a++)\n switch (this.order) {\n case 1:\n s.set(a, 0, 1), s.set(a, 1, t[a][0]), s.set(a, 2, t[a][1]);\n break;\n case 2:\n s.set(a, 0, 1), s.set(a, 1, t[a][0]), s.set(a, 2, t[a][1]), s.set(a, 3, t[a][0] ** 2), s.set(a, 4, t[a][1] ** 2), s.set(\n a,\n 5,\n t[a][0] * t[a][1]\n );\n break;\n case 3:\n s.set(a, 0, 1), s.set(a, 1, t[a][0]), s.set(a, 2, t[a][1]), s.set(a, 3, t[a][0] ** 2), s.set(a, 4, t[a][1] ** 2), s.set(\n a,\n 5,\n t[a][0] * t[a][1]\n ), s.set(a, 6, t[a][0] ** 3), s.set(a, 7, t[a][1] ** 3), s.set(\n a,\n 8,\n t[a][0] ** 2 * t[a][1]\n ), s.set(\n a,\n 9,\n t[a][0] * t[a][1] ** 2\n );\n break;\n }\n const o = js(\n s\n );\n this.polynomialParametersMatrices = [\n o.mmul(n[0]),\n o.mmul(n[1])\n ], this.polynomialParameters = this.polynomialParametersMatrices.map(\n (a) => a.to1DArray()\n );\n }\n // The interpolant function will compute the value at any point.\n interpolate(t) {\n if (!this.polynomialParameters)\n throw new Error(\"Polynomial parameters not computed\");\n const e = [0, 0];\n for (let i = 0; i < 2; i++)\n switch (this.order) {\n case 1:\n e[i] += this.polynomialParameters[i][0] + this.polynomialParameters[i][1] * t[0] + this.polynomialParameters[i][2] * t[1];\n break;\n case 2:\n e[i] += this.polynomialParameters[i][0] + this.polynomialParameters[i][1] * t[0] + this.polynomialParameters[i][2] * t[1] + this.polynomialParameters[i][3] * t[0] ** 2 + this.polynomialParameters[i][4] * t[1] ** 2 + this.polynomialParameters[i][5] * t[0] * t[1];\n break;\n case 3:\n e[i] += this.polynomialParameters[i][0] + this.polynomialParameters[i][1] * t[0] + this.polynomialParameters[i][2] * t[1] + this.polynomialParameters[i][3] * t[0] ** 2 + this.polynomialParameters[i][4] * t[1] ** 2 + this.polynomialParameters[i][5] * t[0] * t[1] + this.polynomialParameters[i][6] * t[0] ** 3 + this.polynomialParameters[i][7] * t[1] ** 3 + this.polynomialParameters[i][8] * t[0] ** 2 * t[1] + this.polynomialParameters[i][9] * t[0] * t[1] ** 2;\n break;\n }\n return e;\n }\n}\nclass Hc {\n constructor(t, e) {\n if (this.sourcePoints = t, this.destinationPoints = e, this.pointCount = this.sourcePoints.length, this.pointCount < 4)\n throw new Error(\n \"Not enough control points. A projective transformation requires a minimum of 4 points, but \" + this.pointCount + \" are given.\"\n );\n const i = _t.zeros(2 * this.pointCount, 9);\n for (let s = 0; s < this.pointCount; s++)\n i.set(2 * s, 0, -t[s][0]), i.set(2 * s, 1, -t[s][1]), i.set(2 * s, 2, -1), i.set(2 * s, 3, 0), i.set(2 * s, 4, 0), i.set(2 * s, 5, 0), i.set(\n 2 * s,\n 6,\n e[s][0] * t[s][0]\n ), i.set(\n 2 * s,\n 7,\n e[s][0] * t[s][1]\n ), i.set(2 * s, 8, e[s][0]), i.set(2 * s + 1, 0, 0), i.set(2 * s + 1, 1, 0), i.set(2 * s + 1, 2, 0), i.set(2 * s + 1, 3, -t[s][0]), i.set(2 * s + 1, 4, -t[s][1]), i.set(2 * s + 1, 5, -1), i.set(\n 2 * s + 1,\n 6,\n e[s][1] * t[s][0]\n ), i.set(\n 2 * s + 1,\n 7,\n e[s][1] * t[s][1]\n ), i.set(2 * s + 1, 8, e[s][1]);\n const n = new $c(i);\n this.projectiveParametersMatrix = _t.from1DArray(\n 3,\n 3,\n n.rightSingularVectors.getColumn(8)\n ).transpose(), this.projectiveParameters = this.projectiveParametersMatrix.to2DArray();\n }\n // The interpolant function will compute the value at any point.\n interpolate(t) {\n if (!this.projectiveParameters)\n throw new Error(\"projective parameters not computed\");\n const e = this.projectiveParameters[0][2] * t[0] + this.projectiveParameters[1][2] * t[1] + this.projectiveParameters[2][2];\n return [\n (this.projectiveParameters[0][0] * t[0] + this.projectiveParameters[1][0] * t[1] + this.projectiveParameters[2][0]) / e,\n (this.projectiveParameters[0][1] * t[0] + this.projectiveParameters[1][1] * t[1] + this.projectiveParameters[2][1]) / e\n ];\n }\n}\nclass Yc {\n constructor(t, e, i, n, s) {\n if (this.sourcePoints = t, this.destinationPoints = e, this.kernelFunction = i, this.normFunction = n, this.pointCount = this.sourcePoints.length, this.pointCount < 3)\n throw new Error(\n `Not enough control points. A thin plate spline transformation (with affine component) requires a minimum of 3 points, but ${this.pointCount} are given.`\n );\n const o = [\n _t.columnVector(\n [...e, [0, 0], [0, 0], [0, 0]].map((u) => u[0])\n ),\n _t.columnVector(\n [...e, [0, 0], [0, 0], [0, 0]].map((u) => u[1])\n )\n ], a = _t.zeros(this.pointCount, this.pointCount);\n for (let u = 0; u < this.pointCount; u++)\n for (let g = 0; g < this.pointCount; g++)\n a.set(u, g, n(t[u], t[g]));\n s === void 0 && (s = a.sum() / (Math.pow(this.pointCount, 2) - this.pointCount)), this.epsilon = s;\n for (let u = 0; u < this.pointCount; u++)\n for (let g = 0; g < this.pointCount; g++)\n a.set(\n u,\n g,\n i(a.get(u, g), s)\n );\n const h = _t.zeros(this.pointCount, 3), c = _t.zeros(\n this.pointCount + 3,\n this.pointCount + 3\n );\n for (let u = 0; u < this.pointCount; u++)\n h.set(u, 0, 1), h.set(u, 1, t[u][0]), h.set(u, 2, t[u][1]);\n for (let u = 0; u < this.pointCount + 3; u++)\n for (let g = 0; g < this.pointCount + 3; g++)\n u < this.pointCount && g < this.pointCount ? c.set(u, g, a.get(u, g)) : u >= this.pointCount && g < this.pointCount ? c.set(\n u,\n g,\n h.transpose().get(u - this.pointCount, g)\n ) : u < this.pointCount && g >= this.pointCount && c.set(\n u,\n g,\n h.get(u, g - this.pointCount)\n );\n const l = qc(\n c\n );\n this.weightsMatrices = [\n l.mmul(o[0]),\n l.mmul(o[1])\n ], this.rbfWeights = this.weightsMatrices.map(\n (u) => u.selection([...Array(this.pointCount).keys()], [0]).to1DArray()\n ), this.affineWeights = this.weightsMatrices.map(\n (u) => u.selection(\n [0, 1, 2].map((g) => g + this.pointCount),\n [0]\n ).to1DArray()\n );\n }\n // The interpolant function will compute the value at any point.\n interpolate(t) {\n if (!this.rbfWeights || !this.affineWeights)\n throw new Error(\"Weights not computed\");\n const e = this.sourcePoints.map(\n (n) => this.kernelFunction(\n this.normFunction(t, n),\n this.epsilon\n )\n ), i = [0, 0];\n for (let n = 0; n < 2; n++)\n i[n] = e.reduce(\n (s, o, a) => s + o * this.rbfWeights[n][a],\n 0\n ), i[n] += this.affineWeights[n][0] + this.affineWeights[n][1] * t[0] + this.affineWeights[n][2] * t[1];\n return i;\n }\n}\nfunction Jc(r) {\n return r === 0 ? 0 : Math.pow(r, 2) * Math.log(r);\n}\nfunction Kc(r, t) {\n const e = [t[0] - r[0], t[1] - r[1]];\n return Math.sqrt(e[0] ** 2 + e[1] ** 2);\n}\nfunction et(r, t, e) {\n return {\n maxOffsetRatio: 0,\n maxDepth: 0,\n destinationIsGeographic: !1,\n sourceIsGeographic: !1,\n inputIsMultiGeometry: !1,\n differentHandedness: !1,\n ...e,\n ...t,\n ...r\n };\n}\nfunction dr(r, t, e) {\n t = qr(t);\n const i = t.map((o) => ({\n source: o,\n destination: r.transformForward(o)\n })), n = Jr(i, !1), s = Ds(\n r,\n n,\n e\n );\n return Kr(s, !0).map(\n (o) => o.destination\n );\n}\nfunction fr(r, t, e) {\n t = qr(t);\n const i = t.map((o) => ({\n source: r.transformBackward(o),\n destination: o\n })), n = Jr(i, !1), s = Gs(\n r,\n n,\n e\n );\n return Kr(s, !0).map((o) => o.source);\n}\nfunction Qc(r, t, e) {\n t = Di(t);\n const i = t.map((o) => ({\n source: o,\n destination: r.transformForward(o)\n })), n = Jr(i, !0), s = Ds(\n r,\n n,\n e\n );\n return Kr(s, !1).map(\n (o) => o.destination\n );\n}\nfunction tl(r, t, e) {\n t = Di(t);\n const i = t.map((o) => ({\n source: r.transformBackward(o),\n destination: o\n })), n = Jr(i, !0), s = Gs(\n r,\n n,\n e\n );\n return Kr(s, !1).map(\n (o) => o.source\n );\n}\nfunction pr(r, t, e) {\n return t.map((i) => Qc(r, i, e));\n}\nfunction gr(r, t, e) {\n return t.map((i) => tl(r, i, e));\n}\nfunction Jr(r, t = !1) {\n const e = r.length - (t ? 0 : 1), i = [];\n for (let n = 0; n < e; n++)\n i.push({\n from: r[n],\n to: r[(n + 1) % r.length]\n });\n return i;\n}\nfunction Kr(r, t = !1) {\n const e = r.map((i) => i.from);\n return t && e.push(r[r.length - 1].to), e;\n}\nfunction Ds(r, t, e) {\n return e.maxDepth <= 0 ? t : t.map(\n (i) => Ri(\n r,\n i,\n e,\n 0\n )\n ).flat(1);\n}\nfunction Gs(r, t, e) {\n return e.maxDepth <= 0 ? t : t.map(\n (i) => ki(\n r,\n i,\n e,\n 0\n )\n ).flat(1);\n}\nfunction Ri(r, t, e, i) {\n if (i >= e.maxDepth)\n return t;\n const n = (e.sourceIsGeographic ? (c, l) => Dr(c, l).geometry.coordinates : Br)(\n t.from.source,\n t.to.source\n ), s = (e.destinationIsGeographic ? (c, l) => Dr(c, l).geometry.coordinates : Br)(\n t.from.destination,\n t.to.destination\n ), o = r.transformForward(n), a = e.destinationIsGeographic ? Fi : vt, h = a(\n t.from.destination,\n t.to.destination\n );\n if (a(\n s,\n o\n ) / h > e.maxOffsetRatio && h > 0) {\n const c = {\n source: n,\n destination: o\n };\n return [\n Ri(\n r,\n { from: t.from, to: c },\n e,\n i + 1\n ),\n Ri(\n r,\n { from: c, to: t.to },\n e,\n i + 1\n )\n ].flat(1);\n } else\n return t;\n}\nfunction ki(r, t, e, i) {\n if (i >= e.maxDepth)\n return t;\n const n = (e.destinationIsGeographic ? (c, l) => Dr(c, l).geometry.coordinates : Br)(\n t.from.destination,\n t.to.destination\n ), s = (e.sourceIsGeographic ? (c, l) => Dr(c, l).geometry.coordinates : Br)(\n t.from.source,\n t.to.source\n ), o = r.transformBackward(\n n\n ), a = e.sourceIsGeographic ? Fi : vt, h = a(\n t.from.source,\n t.to.source\n );\n if (a(\n s,\n o\n ) / h > e.maxOffsetRatio && h > 0) {\n const c = {\n source: o,\n destination: n\n };\n return [\n ki(\n r,\n { from: t.from, to: c },\n e,\n i + 1\n ),\n ki(\n r,\n { from: c, to: t.to },\n e,\n i + 1\n )\n ].flat(1);\n } else\n return t;\n}\nclass Sn {\n /**\n * Create a GcpTransformer\n * @param {TransformGcp[] | Gcp[]} gcps - An array of Ground Control Points (GCPs)\n * @param {TransformationType} [type='polynomial'] - The transformation type\n */\n constructor(t, e = \"polynomial\", i) {\n if (i && (this.options = i), t.length == 0)\n throw new Error(\"No control points.\");\n this.gcps = t.map((n) => {\n if (\"resource\" in n && \"geo\" in n)\n return {\n source: n.resource,\n destination: n.geo\n };\n if (\"source\" in n && \"destination\" in n)\n return n;\n throw new Error(\"Unsupported GCP type\");\n }), this.sourcePoints = this.gcps.map((n) => n.source), this.destinationPoints = this.gcps.map((n) => n.destination), this.type = e;\n }\n assureEqualHandedness(t) {\n return this.options?.differentHandedness ? yh(t) : t;\n }\n createForwardTransformation() {\n return this.createTransformation(\n this.sourcePoints.map((t) => this.assureEqualHandedness(t)),\n this.destinationPoints\n );\n }\n createBackwardTransformation() {\n return this.createTransformation(\n this.destinationPoints,\n this.sourcePoints.map((t) => this.assureEqualHandedness(t))\n );\n }\n createTransformation(t, e) {\n if (this.type === \"straight\")\n return new Xc(t, e);\n if (this.type === \"helmert\")\n return new Bs(t, e);\n if (this.type === \"polynomial1\" || this.type === \"polynomial\")\n return new ci(t, e);\n if (this.type === \"polynomial2\")\n return new ci(t, e, 2);\n if (this.type === \"polynomial3\")\n return new ci(t, e, 3);\n if (this.type === \"projective\")\n return new Hc(t, e);\n if (this.type === \"thinPlateSpline\")\n return new Yc(\n t,\n e,\n Jc,\n Kc\n );\n throw new Error(`Unsupported transformation type: ${this.type}`);\n }\n /**\n * Transforms a Geometry or a GeoJSON geometry forward to a Geometry\n * @param {Geometry | GeojsonGeometry} input - Geometry or GeoJSON geometry to transform\n * @param {PartialTransformOptions} [options] - Transform options\n * @returns {Geometry} Forward transform of input as Geometry\n * @type {{\n * (input:Point | GeojsonPoint) => Point;\n * (input:LineString | GeojsonLineString) => LineString;\n * (input:Polygon | GeojsonPolygon) => Polygon;\n * (input:MultiPoint | GeojsonMultiPoint) => MultiPoint;\n * (input:MultiLineString | GeojsonMultiLineString) => MultiLineString;\n * (input:MultiPolygon | GeojsonMultiPolygon) => MultiPolygon;\n * }}\n */\n transformForward(t, e) {\n if (!et(e, this.options).inputIsMultiGeometry) {\n if (gt(t))\n return this.forwardTransformation || (this.forwardTransformation = this.createForwardTransformation()), this.forwardTransformation.interpolate(\n this.assureEqualHandedness(t)\n );\n if (Gt(t))\n return this.transformForward(Ee(t), e);\n if (Et(t))\n return dr(\n this,\n t,\n et(e, this.options)\n );\n if (Ft(t))\n return dr(\n this,\n Ie(t),\n et(e, this.options, {\n sourceIsGeographic: !0\n })\n );\n if (It(t))\n return pr(\n this,\n t,\n et(e, this.options)\n );\n if (Ut(t))\n return pr(\n this,\n Se(t),\n et(e, this.options, { sourceIsGeographic: !0 })\n );\n }\n if (e && (e.inputIsMultiGeometry = !1), jt(t))\n return t.map((i) => this.transformForward(i, e));\n if (Wt(t))\n return tr(t).map(\n (i) => this.transformForward(i, e)\n );\n if (Bt(t))\n return t.map((i) => this.transformForward(i, e));\n if (Vt(t))\n return er(t).map(\n (i) => this.transformForward(i, e)\n );\n if (Dt(t))\n return t.map((i) => this.transformForward(i, e));\n if (zt(t))\n return rr(t).map(\n (i) => this.transformForward(i, e)\n );\n throw new Error(\"Input type not supported\");\n }\n /**\n * Transforms a Geometry or a GeoJSON geometry forward to a GeoJSON geometry\n * @param {Geometry | GeojsonGeometry} input - Geometry or GeoJSON geometry to transform\n * @param {PartialTransformOptions} [options] - Transform options\n * @returns {GeojsonGeometry} Forward transform of input, as GeoJSON geometry\n * @type {{\n * (input:Point | GeojsonPoint) => GeojsonPoint;\n * (input:LineString | GeojsonLineString) => GeojsonLineString;\n * (input:Polygon | GeojsonPolygon) => GeojsonPolygon;\n * (input:MultiPoint | GeojsonMultiPoint) => GeojsonMultiPoint;\n * (input:MultiLineString | GeojsonMultiLineString) => GeojsonMultiLineString;\n * (input:MultiPolygon | GeojsonMultiPolygon) => GeojsonMultiPolygon;\n * }}\n */\n transformForwardAsGeojson(t, e) {\n if (!et(e, this.options).inputIsMultiGeometry) {\n if (gt(t))\n return Je(this.transformForward(t));\n if (Gt(t))\n return Je(\n this.transformForward(Ee(t))\n );\n if (Et(t))\n return Ke(\n dr(\n this,\n t,\n et(e, this.options, {\n destinationIsGeographic: !0\n })\n )\n );\n if (Ft(t))\n return Ke(\n dr(\n this,\n Ie(t),\n et(e, this.options, {\n sourceIsGeographic: !0,\n destinationIsGeographic: !0\n })\n )\n );\n if (It(t))\n return Qe(\n pr(\n this,\n t,\n et(e, this.options, {\n destinationIsGeographic: !0\n })\n )\n );\n if (Ut(t))\n return Qe(\n pr(\n this,\n Se(t),\n et(e, this.options, {\n sourceIsGeographic: !0,\n destinationIsGeographic: !0\n })\n )\n );\n }\n if (e && (e.inputIsMultiGeometry = !1), jt(t))\n return ir(\n t.map((i) => this.transformForwardAsGeojson(i, e))\n );\n if (Wt(t))\n return ir(\n tr(t).map(\n (i) => this.transformForwardAsGeojson(i, e)\n )\n );\n if (Bt(t))\n return nr(\n t.map((i) => this.transformForwardAsGeojson(i, e))\n );\n if (Vt(t))\n return nr(\n er(t).map(\n (i) => this.transformForwardAsGeojson(i, e)\n )\n );\n if (Dt(t))\n return sr(\n t.map((i) => this.transformForwardAsGeojson(i, e))\n );\n if (zt(t))\n return sr(\n rr(t).map(\n (i) => this.transformForwardAsGeojson(i, e)\n )\n );\n throw new Error(\"Input type not supported\");\n }\n /**\n * Transforms a geometry or a GeoJSON geometry backward to a Geometry\n * @param {Geometry | GeojsonGeometry} input - Geometry or GeoJSON geometry to transform\n * @param {PartialTransformOptions} [options] - Transform options\n * @returns {Geometry} backward transform of input, as geometry\n * @type {{\n * (input:Point | GeojsonPoint) => Point;\n * (input:LineString | GeojsonLineString) => LineString;\n * (input:Polygon | GeojsonPolygon) => Polygon;\n * (input:MultiPoint | GeojsonMultiPoint) => MultiPoint;\n * (input:MultiLineString | GeojsonMultiLineString) => MultiLineString;\n * (input:MultiPolygon | GeojsonMultiPolygon) => MultiPolygon;\n * }}\n */\n transformBackward(t, e) {\n if (!et(e, this.options).inputIsMultiGeometry) {\n if (gt(t))\n return this.backwardTransformation || (this.backwardTransformation = this.createBackwardTransformation()), this.assureEqualHandedness(\n this.backwardTransformation.interpolate(t)\n );\n if (Gt(t))\n return this.transformBackward(Ee(t));\n if (Et(t))\n return fr(\n this,\n t,\n et(e, this.options)\n );\n if (Ft(t))\n return fr(\n this,\n Ie(t),\n et(e, this.options, {\n destinationIsGeographic: !0\n })\n );\n if (It(t))\n return gr(\n this,\n t,\n et(e, this.options)\n );\n if (Ut(t))\n return gr(\n this,\n Se(t),\n et(e, this.options, {\n destinationIsGeographic: !0\n })\n );\n }\n if (e && (e.inputIsMultiGeometry = !1), jt(t))\n return t.map((i) => this.transformBackward(i, e));\n if (Wt(t))\n return tr(t).map(\n (i) => this.transformBackward(i, e)\n );\n if (Bt(t))\n return t.map((i) => this.transformBackward(i, e));\n if (Vt(t))\n return er(t).map(\n (i) => this.transformBackward(i, e)\n );\n if (Dt(t))\n return t.map((i) => this.transformBackward(i, e));\n if (zt(t))\n return rr(t).map(\n (i) => this.transformBackward(i, e)\n );\n throw new Error(\"Input type not supported\");\n }\n /**\n * Transforms a Geometry or a GeoJSON geometry backward to a GeoJSON geometry\n * @param {Geometry | GeojsonGeometry} input - Geometry or GeoJSON geometry to transform\n * @param {PartialTransformOptions} [options] - Transform options\n * @returns {GeojsonGeometry} backward transform of input, as GeoJSON geometry\n * @type {{\n * (input:Point | GeojsonPoint) => GeojsonPoint;\n * (input:LineString | GeojsonLineString) => GeojsonLineString;\n * (input:Polygon | GeojsonPolygon) => GeojsonPolygon;\n * (input:MultiPoint | GeojsonMultiPoint) => GeojsonMultiPoint;\n * (input:MultiLineString | GeojsonMultiLineString) => GeojsonMultiLineString;\n * (input:MultiPolygon | GeojsonMultiPolygon) => GeojsonMultiPolygon;\n * }}\n */\n transformBackwardAsGeojson(t, e) {\n if (!et(e, this.options).inputIsMultiGeometry) {\n if (gt(t))\n return Je(this.transformBackward(t));\n if (Gt(t))\n return Je(\n this.transformBackward(Ee(t))\n );\n if (Et(t))\n return Ke(\n fr(\n this,\n t,\n et(e, this.options, {\n sourceIsGeographic: !0\n })\n )\n );\n if (Ft(t))\n return Ke(\n fr(\n this,\n Ie(t),\n et(e, this.options, {\n sourceIsGeographic: !0,\n destinationIsGeographic: !0\n })\n )\n );\n if (It(t))\n return Qe(\n gr(\n this,\n t,\n et(e, this.options, {\n sourceIsGeographic: !0\n })\n )\n );\n if (Ut(t))\n return Qe(\n gr(\n this,\n Se(t),\n et(e, this.options, {\n sourceIsGeographic: !0,\n destinationIsGeographic: !0\n })\n )\n );\n }\n if (e && (e.inputIsMultiGeometry = !1), jt(t))\n return ir(\n t.map(\n (i) => this.transformBackwardAsGeojson(i, e)\n )\n );\n if (Wt(t))\n return ir(\n tr(t).map(\n (i) => this.transformBackwardAsGeojson(i, e)\n )\n );\n if (Bt(t))\n return nr(\n t.map(\n (i) => this.transformBackwardAsGeojson(i, e)\n )\n );\n if (Vt(t))\n return nr(\n er(t).map(\n (i) => this.transformBackwardAsGeojson(i, e)\n )\n );\n if (Dt(t))\n return sr(\n t.map(\n (i) => this.transformBackwardAsGeojson(i, e)\n )\n );\n if (zt(t))\n return sr(\n rr(t).map(\n (i) => this.transformBackwardAsGeojson(i, e)\n )\n );\n throw new Error(\"Input type not supported\");\n }\n /**\n * Transforms Geometry or GeoJSON geometry forward, as Geometry\n * @param {Geometry | GeojsonGeometry} input - Input to transform\n * @returns {Geometry} Forward transform of input, as Geometry\n * @type {{\n * (input:Point | GeojsonPoint) => Point;\n * (input:LineString | GeojsonLineString) => LineString;\n * (input:Polygon | GeojsonPolygon) => Polygon;\n * (input:MultiPoint | GeojsonMultiPoint) => MultiPoint;\n * (input:MultiLineString | GeojsonMultiLineString) => MultiLineString;\n * (input:MultiPolygon | GeojsonMultiPolygon) => MultiPolygon;\n * }}\n */\n transformToGeo(t, e) {\n if (!et(e, this.options).inputIsMultiGeometry) {\n if (gt(t))\n return this.transformForward(t, e);\n if (Gt(t))\n return this.transformForward(t, e);\n if (Et(t))\n return this.transformForward(t, e);\n if (Ft(t))\n return this.transformForward(t, e);\n if (It(t))\n return this.transformForward(t, e);\n if (Ut(t))\n return this.transformForward(t, e);\n }\n if (e && (e.inputIsMultiGeometry = !1), jt(t))\n return this.transformForward(t, e);\n if (Wt(t))\n return this.transformForward(t, e);\n if (Bt(t))\n return this.transformForward(t, e);\n if (Vt(t))\n return this.transformForward(t, e);\n if (Dt(t))\n return this.transformForward(t, e);\n if (zt(t))\n return this.transformForward(t, e);\n throw new Error(\"Input type not supported\");\n }\n /**\n * Transforms a Geometry or a GeoJSON geometry forward, to a GeoJSON geometry\n * @param {Geometry | GeojsonGeometry} input - Input to transform\n * @returns {Geometry} Forward transform of input, as GeoJSON geometry\n * @type {{\n * (input:Point | GeojsonPoint) => GeojsonPoint;\n * (input:LineString | GeojsonLineString) => GeojsonLineString;\n * (input:Polygon | GeojsonPolygon) => GeojsonPolygon;\n * (input:MultiPoint | GeojsonMultiPoint) => GeojsonMultiPoint;\n * (input:MultiLineString | GeojsonMultiLineString) => GeojsonMultiLineString;\n * (input:MultiPolygon | GeojsonMultiPolygon) => GeojsonMultiPolygon;\n * }}\n */\n transformToGeoAsGeojson(t, e) {\n if (!et(e, this.options).inputIsMultiGeometry) {\n if (gt(t))\n return this.transformForwardAsGeojson(t, e);\n if (Gt(t))\n return this.transformForwardAsGeojson(t, e);\n if (Et(t))\n return this.transformForwardAsGeojson(t, e);\n if (Ft(t))\n return this.transformForwardAsGeojson(\n t,\n e\n );\n if (It(t))\n return this.transformForwardAsGeojson(t, e);\n if (Ut(t))\n return this.transformForwardAsGeojson(t, e);\n }\n if (e && (e.inputIsMultiGeometry = !1), jt(t))\n return this.transformForwardAsGeojson(t, e);\n if (Wt(t))\n return this.transformForwardAsGeojson(t, e);\n if (Bt(t))\n return this.transformForwardAsGeojson(t, e);\n if (Vt(t))\n return this.transformForwardAsGeojson(\n t,\n e\n );\n if (Dt(t))\n return this.transformForwardAsGeojson(t, e);\n if (zt(t))\n return this.transformForwardAsGeojson(\n t,\n e\n );\n throw new Error(\"Input type not supported\");\n }\n /**\n * Transforms a Geometry or a GeoJSON geometry backward, to a Geometry\n * @param {Geometry | GeojsonGeometry} input - Input to transform\n * @returns {Geometry} Backward transform of input, as a Geometry\n * @type {{\n * (input:Point | GeojsonPoint) => Point;\n * (input:LineString | GeojsonLineString) => LineString;\n * (input:Polygon | GeojsonPolygon) => Polygon;\n * (input:MultiPoint | GeojsonMultiPoint) => MultiPoint;\n * (input:MultiLineString | GeojsonMultiLineString) => MultiLineString;\n * (input:MultiPolygon | GeojsonMultiPolygon) => MultiPolygon;\n * }}\n */\n transformToResource(t, e) {\n if (!et(e, this.options).inputIsMultiGeometry) {\n if (gt(t))\n return this.transformBackward(t, e);\n if (Gt(t))\n return this.transformBackward(t, e);\n if (Et(t))\n return this.transformBackward(t, e);\n if (Ft(t))\n return this.transformBackward(t, e);\n if (It(t))\n return this.transformBackward(t, e);\n if (Ut(t))\n return this.transformBackward(t, e);\n }\n if (e && (e.inputIsMultiGeometry = !1), jt(t))\n return this.transformBackward(t, e);\n if (Wt(t))\n return this.transformBackward(t, e);\n if (Bt(t))\n return this.transformBackward(t, e);\n if (Vt(t))\n return this.transformBackward(t, e);\n if (Dt(t))\n return this.transformBackward(t, e);\n if (zt(t))\n return this.transformBackward(t, e);\n throw new Error(\"Input type not supported\");\n }\n /**\n * Transforms a Geometry or a GeoJSON geometry backward, to a GeoJSON geometry\n * @param {Geometry | GeojsonGeometry} input - Input to transform\n * @returns {GeojsonGeometry} Backward transform of input, as a GeoJSON geometry\n * @type {{\n * (input:Point | GeojsonPoint) => GeojsonPoint;\n * (input:LineString | GeojsonLineString) => GeojsonLineString;\n * (input:Polygon | GeojsonPolygon) => GeojsonPolygon;\n * (input:MultiPoMultiint | GeojsonMultiPoint) => GeojsonMultiPoint;\n * (input:MultiLineString | GeojsonMultiLineString) => GeojsonMultiLineString;\n * (input:MultiPolygon | GeojsonMultiPolygon) => GeojsonMultiPolygon;\n * }}\n */\n transformToResourceAsGeojson(t, e) {\n if (!et(e, this.options).inputIsMultiGeometry) {\n if (gt(t))\n return this.transformBackwardAsGeojson(t, e);\n if (Gt(t))\n return this.transformBackwardAsGeojson(t, e);\n if (Et(t))\n return this.transformBackwardAsGeojson(t, e);\n if (Ft(t))\n return this.transformBackwardAsGeojson(\n t,\n e\n );\n if (It(t))\n return this.transformBackwardAsGeojson(t, e);\n if (Ut(t))\n return this.transformBackwardAsGeojson(t, e);\n }\n if (e && (e.inputIsMultiGeometry = !1), jt(t))\n return this.transformBackwardAsGeojson(t, e);\n if (Wt(t))\n return this.transformBackwardAsGeojson(\n t,\n e\n );\n if (Bt(t))\n return this.transformBackwardAsGeojson(t, e);\n if (Vt(t))\n return this.transformBackwardAsGeojson(\n t,\n e\n );\n if (Dt(t))\n return this.transformBackwardAsGeojson(t, e);\n if (zt(t))\n return this.transformBackwardAsGeojson(\n t,\n e\n );\n throw new Error(\"Input type not supported\");\n }\n // Shortcuts for SVG <> GeoJSON\n /**\n * Transforms a SVG geometry forward to a GeoJSON geometry\n *\n * Note: Multi-geometries are not supported\n * @param {SvgGeometry} geometry - SVG geometry to transform\n * @returns {GeojsonGeometry} Forward transform of input, as a GeoJSON geometry\n */\n transformSvgToGeojson(t, e) {\n if (t.type === \"circle\")\n return this.transformForwardAsGeojson(t.coordinates);\n if (t.type === \"line\")\n return this.transformForwardAsGeojson(\n t.coordinates,\n e\n );\n if (t.type === \"polyline\")\n return this.transformForwardAsGeojson(\n t.coordinates,\n e\n );\n if (t.type === \"rect\")\n return this.transformForwardAsGeojson(\n [t.coordinates],\n e\n );\n if (t.type === \"polygon\")\n return this.transformForwardAsGeojson(\n [t.coordinates],\n e\n );\n throw new Error(\"Unsupported SVG geometry\");\n }\n /**\n * Transforms a GeoJSON geometry backward to a SVG geometry\n *\n * Note: Multi-geometries are not supported\n * @param {GeojsonGeometry} geometry - GeoJSON geometry to transform\n * @returns {SvgGeometry} Backward transform of input, as SVG geometry\n */\n transformGeojsonToSvg(t, e) {\n if (t.type === \"Point\")\n return {\n type: \"circle\",\n coordinates: this.transformBackward(t)\n };\n if (t.type === \"LineString\")\n return {\n type: \"polyline\",\n coordinates: this.transformBackward(t, e)\n };\n if (t.type === \"Polygon\")\n return {\n type: \"polygon\",\n coordinates: this.transformBackward(t, e)[0]\n };\n throw new Error(\"Unsupported GeoJSON geometry\");\n }\n}\nfunction el(r) {\n return Math.sqrt(Math.pow(r[1][0] - r[0][0], 2) + Math.pow(r[1][1] - r[0][1], 2));\n}\nfunction rl(r) {\n return Math.atan2(r[1][1] - r[0][1], r[1][0] - r[0][0]);\n}\nfunction il(r, t, e) {\n return [\n r[0] + Math.cos(e) * t,\n r[1] + Math.sin(e) * t\n ];\n}\nfunction nl(r, t) {\n let e = r[0];\n const i = [e];\n for (; el([e, r[1]]) > t; ) {\n const n = il(e, t, rl(r));\n i.push(n), e = n;\n }\n return i;\n}\nfunction sl(r, t) {\n r = [...r, r[0]];\n let e = [];\n for (let i = 0; i < r.length - 1; i++)\n e = e.concat(nl([r[i], r[i + 1]], t));\n return e;\n}\nfunction ol(r, t) {\n const e = [], i = lt(r);\n for (let n = i[0] + t, s = 0; n <= i[2]; s++, n += t)\n for (let o = i[1] + t, a = 0; o <= i[3]; a++, o += t)\n e.push([n, o]);\n return e;\n}\nvar Oi = {}, al = {\n get exports() {\n return Oi;\n },\n set exports(r) {\n Oi = r;\n }\n}, Fs = hl, An = +(Math.pow(2, 27) + 1);\nfunction hl(r, t, e) {\n var i = r * t, n = An * r, s = n - r, o = n - s, a = r - o, h = An * t, c = h - t, l = h - c, u = t - l, g = i - o * l, w = g - a * l, y = w - o * u, _ = a * u - y;\n return e ? (e[0] = _, e[1] = i, e) : [_, i];\n}\nvar cl = ul;\nfunction ll(r, t) {\n var e = r + t, i = e - r, n = e - i, s = t - i, o = r - n, a = o + s;\n return a ? [a, e] : [e];\n}\nfunction ul(r, t) {\n var e = r.length | 0, i = t.length | 0;\n if (e === 1 && i === 1)\n return ll(r[0], t[0]);\n var n = e + i, s = new Array(n), o = 0, a = 0, h = 0, c = Math.abs, l = r[a], u = c(l), g = t[h], w = c(g), y, _;\n u < w ? (_ = l, a += 1, a < e && (l = r[a], u = c(l))) : (_ = g, h += 1, h < i && (g = t[h], w = c(g))), a < e && u < w || h >= i ? (y = l, a += 1, a < e && (l = r[a], u = c(l))) : (y = g, h += 1, h < i && (g = t[h], w = c(g)));\n for (var I = y + _, v = I - y, S = _ - v, f = S, p = I, T, A, C, E, d; a < e && h < i; )\n u < w ? (y = l, a += 1, a < e && (l = r[a], u = c(l))) : (y = g, h += 1, h < i && (g = t[h], w = c(g))), _ = f, I = y + _, v = I - y, S = _ - v, S && (s[o++] = S), T = p + I, A = T - p, C = T - A, E = I - A, d = p - C, f = d + E, p = T;\n for (; a < e; )\n y = l, _ = f, I = y + _, v = I - y, S = _ - v, S && (s[o++] = S), T = p + I, A = T - p, C = T - A, E = I - A, d = p - C, f = d + E, p = T, a += 1, a < e && (l = r[a]);\n for (; h < i; )\n y = g, _ = f, I = y + _, v = I - y, S = _ - v, S && (s[o++] = S), T = p + I, A = T - p, C = T - A, E = I - A, d = p - C, f = d + E, p = T, h += 1, h < i && (g = t[h]);\n return f && (s[o++] = f), p && (s[o++] = p), o || (s[o++] = 0), s.length = o, s;\n}\nvar dl = fl;\nfunction fl(r, t, e) {\n var i = r + t, n = i - r, s = i - n, o = t - n, a = r - s;\n return e ? (e[0] = a + o, e[1] = i, e) : [a + o, i];\n}\nvar li = Fs, pl = dl, gl = ml;\nfunction ml(r, t) {\n var e = r.length;\n if (e === 1) {\n var i = li(r[0], t);\n return i[0] ? i : [i[1]];\n }\n var n = new Array(2 * e), s = [0.1, 0.1], o = [0.1, 0.1], a = 0;\n li(r[0], t, s), s[0] && (n[a++] = s[0]);\n for (var h = 1; h < e; ++h) {\n li(r[h], t, o);\n var c = s[1];\n pl(c, o[0], s), s[0] && (n[a++] = s[0]);\n var l = o[1], u = s[1], g = l + u, w = g - l, y = u - w;\n s[1] = g, y && (n[a++] = y);\n }\n return s[1] && (n[a++] = s[1]), a === 0 && (n[a++] = 0), n.length = a, n;\n}\nvar yl = vl;\nfunction wl(r, t) {\n var e = r + t, i = e - r, n = e - i, s = t - i, o = r - n, a = o + s;\n return a ? [a, e] : [e];\n}\nfunction vl(r, t) {\n var e = r.length | 0, i = t.length | 0;\n if (e === 1 && i === 1)\n return wl(r[0], -t[0]);\n var n = e + i, s = new Array(n), o = 0, a = 0, h = 0, c = Math.abs, l = r[a], u = c(l), g = -t[h], w = c(g), y, _;\n u < w ? (_ = l, a += 1, a < e && (l = r[a], u = c(l))) : (_ = g, h += 1, h < i && (g = -t[h], w = c(g))), a < e && u < w || h >= i ? (y = l, a += 1, a < e && (l = r[a], u = c(l))) : (y = g, h += 1, h < i && (g = -t[h], w = c(g)));\n for (var I = y + _, v = I - y, S = _ - v, f = S, p = I, T, A, C, E, d; a < e && h < i; )\n u < w ? (y = l, a += 1, a < e && (l = r[a], u = c(l))) : (y = g, h += 1, h < i && (g = -t[h], w = c(g))), _ = f, I = y + _, v = I - y, S = _ - v, S && (s[o++] = S), T = p + I, A = T - p, C = T - A, E = I - A, d = p - C, f = d + E, p = T;\n for (; a < e; )\n y = l, _ = f, I = y + _, v = I - y, S = _ - v, S && (s[o++] = S), T = p + I, A = T - p, C = T - A, E = I - A, d = p - C, f = d + E, p = T, a += 1, a < e && (l = r[a]);\n for (; h < i; )\n y = g, _ = f, I = y + _, v = I - y, S = _ - v, S && (s[o++] = S), T = p + I, A = T - p, C = T - A, E = I - A, d = p - C, f = d + E, p = T, h += 1, h < i && (g = -t[h]);\n return f && (s[o++] = f), p && (s[o++] = p), o || (s[o++] = 0), s.length = o, s;\n}\n(function(r) {\n var t = Fs, e = cl, i = gl, n = yl, s = 5, o = 11102230246251565e-32, a = (3 + 16 * o) * o, h = (7 + 56 * o) * o;\n function c(f, p, T, A) {\n return function(E, d, x) {\n var M = f(f(p(d[1], x[0]), p(-x[1], d[0])), f(p(E[1], d[0]), p(-d[1], E[0]))), b = f(p(E[1], x[0]), p(-x[1], E[0])), Z = A(M, b);\n return Z[Z.length - 1];\n };\n }\n function l(f, p, T, A) {\n return function(E, d, x, M) {\n var b = f(f(T(f(p(x[1], M[0]), p(-M[1], x[0])), d[2]), f(T(f(p(d[1], M[0]), p(-M[1], d[0])), -x[2]), T(f(p(d[1], x[0]), p(-x[1], d[0])), M[2]))), f(T(f(p(d[1], M[0]), p(-M[1], d[0])), E[2]), f(T(f(p(E[1], M[0]), p(-M[1], E[0])), -d[2]), T(f(p(E[1], d[0]), p(-d[1], E[0])), M[2])))), Z = f(f(T(f(p(x[1], M[0]), p(-M[1], x[0])), E[2]), f(T(f(p(E[1], M[0]), p(-M[1], E[0])), -x[2]), T(f(p(E[1], x[0]), p(-x[1], E[0])), M[2]))), f(T(f(p(d[1], x[0]), p(-x[1], d[0])), E[2]), f(T(f(p(E[1], x[0]), p(-x[1], E[0])), -d[2]), T(f(p(E[1], d[0]), p(-d[1], E[0])), x[2])))), Y = A(b, Z);\n return Y[Y.length - 1];\n };\n }\n function u(f, p, T, A) {\n return function(E, d, x, M, b) {\n var Z = f(f(f(T(f(T(f(p(M[1], b[0]), p(-b[1], M[0])), x[2]), f(T(f(p(x[1], b[0]), p(-b[1], x[0])), -M[2]), T(f(p(x[1], M[0]), p(-M[1], x[0])), b[2]))), d[3]), f(T(f(T(f(p(M[1], b[0]), p(-b[1], M[0])), d[2]), f(T(f(p(d[1], b[0]), p(-b[1], d[0])), -M[2]), T(f(p(d[1], M[0]), p(-M[1], d[0])), b[2]))), -x[3]), T(f(T(f(p(x[1], b[0]), p(-b[1], x[0])), d[2]), f(T(f(p(d[1], b[0]), p(-b[1], d[0])), -x[2]), T(f(p(d[1], x[0]), p(-x[1], d[0])), b[2]))), M[3]))), f(T(f(T(f(p(x[1], M[0]), p(-M[1], x[0])), d[2]), f(T(f(p(d[1], M[0]), p(-M[1], d[0])), -x[2]), T(f(p(d[1], x[0]), p(-x[1], d[0])), M[2]))), -b[3]), f(T(f(T(f(p(M[1], b[0]), p(-b[1], M[0])), d[2]), f(T(f(p(d[1], b[0]), p(-b[1], d[0])), -M[2]), T(f(p(d[1], M[0]), p(-M[1], d[0])), b[2]))), E[3]), T(f(T(f(p(M[1], b[0]), p(-b[1], M[0])), E[2]), f(T(f(p(E[1], b[0]), p(-b[1], E[0])), -M[2]), T(f(p(E[1], M[0]), p(-M[1], E[0])), b[2]))), -d[3])))), f(f(T(f(T(f(p(d[1], b[0]), p(-b[1], d[0])), E[2]), f(T(f(p(E[1], b[0]), p(-b[1], E[0])), -d[2]), T(f(p(E[1], d[0]), p(-d[1], E[0])), b[2]))), M[3]), f(T(f(T(f(p(d[1], M[0]), p(-M[1], d[0])), E[2]), f(T(f(p(E[1], M[0]), p(-M[1], E[0])), -d[2]), T(f(p(E[1], d[0]), p(-d[1], E[0])), M[2]))), -b[3]), T(f(T(f(p(x[1], M[0]), p(-M[1], x[0])), d[2]), f(T(f(p(d[1], M[0]), p(-M[1], d[0])), -x[2]), T(f(p(d[1], x[0]), p(-x[1], d[0])), M[2]))), E[3]))), f(T(f(T(f(p(x[1], M[0]), p(-M[1], x[0])), E[2]), f(T(f(p(E[1], M[0]), p(-M[1], E[0])), -x[2]), T(f(p(E[1], x[0]), p(-x[1], E[0])), M[2]))), -d[3]), f(T(f(T(f(p(d[1], M[0]), p(-M[1], d[0])), E[2]), f(T(f(p(E[1], M[0]), p(-M[1], E[0])), -d[2]), T(f(p(E[1], d[0]), p(-d[1], E[0])), M[2]))), x[3]), T(f(T(f(p(d[1], x[0]), p(-x[1], d[0])), E[2]), f(T(f(p(E[1], x[0]), p(-x[1], E[0])), -d[2]), T(f(p(E[1], d[0]), p(-d[1], E[0])), x[2]))), -M[3]))))), Y = f(f(f(T(f(T(f(p(M[1], b[0]), p(-b[1], M[0])), x[2]), f(T(f(p(x[1], b[0]), p(-b[1], x[0])), -M[2]), T(f(p(x[1], M[0]), p(-M[1], x[0])), b[2]))), E[3]), T(f(T(f(p(M[1], b[0]), p(-b[1], M[0])), E[2]), f(T(f(p(E[1], b[0]), p(-b[1], E[0])), -M[2]), T(f(p(E[1], M[0]), p(-M[1], E[0])), b[2]))), -x[3])), f(T(f(T(f(p(x[1], b[0]), p(-b[1], x[0])), E[2]), f(T(f(p(E[1], b[0]), p(-b[1], E[0])), -x[2]), T(f(p(E[1], x[0]), p(-x[1], E[0])), b[2]))), M[3]), T(f(T(f(p(x[1], M[0]), p(-M[1], x[0])), E[2]), f(T(f(p(E[1], M[0]), p(-M[1], E[0])), -x[2]), T(f(p(E[1], x[0]), p(-x[1], E[0])), M[2]))), -b[3]))), f(f(T(f(T(f(p(x[1], b[0]), p(-b[1], x[0])), d[2]), f(T(f(p(d[1], b[0]), p(-b[1], d[0])), -x[2]), T(f(p(d[1], x[0]), p(-x[1], d[0])), b[2]))), E[3]), T(f(T(f(p(x[1], b[0]), p(-b[1], x[0])), E[2]), f(T(f(p(E[1], b[0]), p(-b[1], E[0])), -x[2]), T(f(p(E[1], x[0]), p(-x[1], E[0])), b[2]))), -d[3])), f(T(f(T(f(p(d[1], b[0]), p(-b[1], d[0])), E[2]), f(T(f(p(E[1], b[0]), p(-b[1], E[0])), -d[2]), T(f(p(E[1], d[0]), p(-d[1], E[0])), b[2]))), x[3]), T(f(T(f(p(d[1], x[0]), p(-x[1], d[0])), E[2]), f(T(f(p(E[1], x[0]), p(-x[1], E[0])), -d[2]), T(f(p(E[1], d[0]), p(-d[1], E[0])), x[2]))), -b[3])))), H = A(Z, Y);\n return H[H.length - 1];\n };\n }\n function g(f) {\n var p = f === 3 ? c : f === 4 ? l : u;\n return p(e, t, i, n);\n }\n var w = g(3), y = g(4), _ = [\n function() {\n return 0;\n },\n function() {\n return 0;\n },\n function(p, T) {\n return T[0] - p[0];\n },\n function(p, T, A) {\n var C = (p[1] - A[1]) * (T[0] - A[0]), E = (p[0] - A[0]) * (T[1] - A[1]), d = C - E, x;\n if (C > 0) {\n if (E <= 0)\n return d;\n x = C + E;\n } else if (C < 0) {\n if (E >= 0)\n return d;\n x = -(C + E);\n } else\n return d;\n var M = a * x;\n return d >= M || d <= -M ? d : w(p, T, A);\n },\n function(p, T, A, C) {\n var E = p[0] - C[0], d = T[0] - C[0], x = A[0] - C[0], M = p[1] - C[1], b = T[1] - C[1], Z = A[1] - C[1], Y = p[2] - C[2], H = T[2] - C[2], V = A[2] - C[2], st = d * Z, ht = x * b, dt = x * M, tt = E * Z, Tt = E * b, U = d * M, it = Y * (st - ht) + H * (dt - tt) + V * (Tt - U), ft = (Math.abs(st) + Math.abs(ht)) * Math.abs(Y) + (Math.abs(dt) + Math.abs(tt)) * Math.abs(H) + (Math.abs(Tt) + Math.abs(U)) * Math.abs(V), ct = h * ft;\n return it > ct || -it > ct ? it : y(p, T, A, C);\n }\n ];\n function I(f) {\n var p = _[f.length];\n return p || (p = _[f.length] = g(f.length)), p.apply(void 0, f);\n }\n function v(f, p, T, A, C, E, d) {\n return function(M, b, Z, Y, H) {\n switch (arguments.length) {\n case 0:\n case 1:\n return 0;\n case 2:\n return A(M, b);\n case 3:\n return C(M, b, Z);\n case 4:\n return E(M, b, Z, Y);\n case 5:\n return d(M, b, Z, Y, H);\n }\n for (var V = new Array(arguments.length), st = 0; st < arguments.length; ++st)\n V[st] = arguments[st];\n return f(V);\n };\n }\n function S() {\n for (; _.length <= s; )\n _.push(g(_.length));\n r.exports = v.apply(void 0, [I].concat(_));\n for (var f = 0; f <= s; ++f)\n r.exports[f] = _[f];\n }\n S();\n})(al);\nvar xl = Tl, mr = Oi;\nfunction Tl(r, t) {\n for (var e = t[0], i = t[1], n = r.length, s = 1, o = n, a = 0, h = n - 1; a < o; h = a++) {\n var c = r[a], l = r[h], u = c[1], g = l[1];\n if (g < u) {\n if (g < i && i < u) {\n var w = mr(c, l, t);\n if (w === 0)\n return 0;\n s ^= 0 < w | 0;\n } else if (i === u) {\n var y = r[(a + 1) % n], _ = y[1];\n if (u < _) {\n var w = mr(c, l, t);\n if (w === 0)\n return 0;\n s ^= 0 < w | 0;\n }\n }\n } else if (u < g) {\n if (u < i && i < g) {\n var w = mr(c, l, t);\n if (w === 0)\n return 0;\n s ^= w < 0 | 0;\n } else if (i === u) {\n var y = r[(a + 1) % n], _ = y[1];\n if (_ < u) {\n var w = mr(c, l, t);\n if (w === 0)\n return 0;\n s ^= w < 0 | 0;\n }\n }\n } else if (i === u) {\n var I = Math.min(c[0], l[0]), v = Math.max(c[0], l[0]);\n if (a === 0) {\n for (; h > 0; ) {\n var S = (h + n - 1) % n, f = r[S];\n if (f[1] !== i)\n break;\n var p = f[0];\n I = Math.min(I, p), v = Math.max(v, p), h = S;\n }\n if (h === 0)\n return I <= e && e <= v ? 0 : 1;\n o = h + 1;\n }\n for (var T = r[(h + n - 1) % n][1]; a + 1 < o; ) {\n var f = r[a + 1];\n if (f[1] !== i)\n break;\n var p = f[0];\n I = Math.min(I, p), v = Math.max(v, p), a += 1;\n }\n if (I <= e && e <= v)\n return 0;\n var A = r[(a + 1) % n][1];\n e < I && T < i != A < i && (s ^= 1);\n }\n }\n return 2 * s - 1;\n}\nvar Mr = {};\nconst bl = \"1.5.0\", Ml = {\n version: bl\n};\nfunction Us(r) {\n return \"(\" + r.x + \";\" + r.y + \")\";\n}\nfunction _l(r) {\n var t = r.toString();\n return t === \"[object Object]\" ? Us(r) : t;\n}\nfunction El(r, t) {\n return r.y === t.y ? r.x - t.x : r.y - t.y;\n}\nfunction Il(r, t) {\n return r.x === t.x && r.y === t.y;\n}\nvar Zi = {\n toString: _l,\n toStringBase: Us,\n compare: El,\n equals: Il\n}, Sl = Zi, Gr = function(r, t) {\n this.name = \"PointError\", this.points = t = t || [], this.message = r || \"Invalid Points!\";\n for (var e = 0; e < t.length; e++)\n this.message += \" \" + Sl.toString(t[e]);\n};\nGr.prototype = new Error();\nGr.prototype.constructor = Gr;\nvar $i = Gr, Xe = Zi, Q = function(r, t) {\n this.x = +r || 0, this.y = +t || 0, this._p2t_edge_list = null;\n};\nQ.prototype.toString = function() {\n return Xe.toStringBase(this);\n};\nQ.prototype.toJSON = function() {\n return { x: this.x, y: this.y };\n};\nQ.prototype.clone = function() {\n return new Q(this.x, this.y);\n};\nQ.prototype.set_zero = function() {\n return this.x = 0, this.y = 0, this;\n};\nQ.prototype.set = function(r, t) {\n return this.x = +r || 0, this.y = +t || 0, this;\n};\nQ.prototype.negate = function() {\n return this.x = -this.x, this.y = -this.y, this;\n};\nQ.prototype.add = function(r) {\n return this.x += r.x, this.y += r.y, this;\n};\nQ.prototype.sub = function(r) {\n return this.x -= r.x, this.y -= r.y, this;\n};\nQ.prototype.mul = function(r) {\n return this.x *= r, this.y *= r, this;\n};\nQ.prototype.length = function() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n};\nQ.prototype.normalize = function() {\n var r = this.length();\n return this.x /= r, this.y /= r, r;\n};\nQ.prototype.equals = function(r) {\n return this.x === r.x && this.y === r.y;\n};\nQ.negate = function(r) {\n return new Q(-r.x, -r.y);\n};\nQ.add = function(r, t) {\n return new Q(r.x + t.x, r.y + t.y);\n};\nQ.sub = function(r, t) {\n return new Q(r.x - t.x, r.y - t.y);\n};\nQ.mul = function(r, t) {\n return new Q(r * t.x, r * t.y);\n};\nQ.cross = function(r, t) {\n return typeof r == \"number\" ? typeof t == \"number\" ? r * t : new Q(-r * t.y, r * t.x) : typeof t == \"number\" ? new Q(t * r.y, -t * r.x) : r.x * t.y - r.y * t.x;\n};\nQ.toString = Xe.toString;\nQ.compare = Xe.compare;\nQ.cmp = Xe.compare;\nQ.equals = Xe.equals;\nQ.dot = function(r, t) {\n return r.x * t.x + r.y * t.y;\n};\nvar Ws = Q, Al = Zi, q = function(r, t, e) {\n this.points_ = [r, t, e], this.neighbors_ = [null, null, null], this.interior_ = !1, this.constrained_edge = [!1, !1, !1], this.delaunay_edge = [!1, !1, !1];\n}, ui = Al.toString;\nq.prototype.toString = function() {\n return \"[\" + ui(this.points_[0]) + ui(this.points_[1]) + ui(this.points_[2]) + \"]\";\n};\nq.prototype.getPoint = function(r) {\n return this.points_[r];\n};\nq.prototype.GetPoint = q.prototype.getPoint;\nq.prototype.getPoints = function() {\n return this.points_;\n};\nq.prototype.getNeighbor = function(r) {\n return this.neighbors_[r];\n};\nq.prototype.containsPoint = function(r) {\n var t = this.points_;\n return r === t[0] || r === t[1] || r === t[2];\n};\nq.prototype.containsEdge = function(r) {\n return this.containsPoint(r.p) && this.containsPoint(r.q);\n};\nq.prototype.containsPoints = function(r, t) {\n return this.containsPoint(r) && this.containsPoint(t);\n};\nq.prototype.isInterior = function() {\n return this.interior_;\n};\nq.prototype.setInterior = function(r) {\n return this.interior_ = r, this;\n};\nq.prototype.markNeighborPointers = function(r, t, e) {\n var i = this.points_;\n if (r === i[2] && t === i[1] || r === i[1] && t === i[2])\n this.neighbors_[0] = e;\n else if (r === i[0] && t === i[2] || r === i[2] && t === i[0])\n this.neighbors_[1] = e;\n else if (r === i[0] && t === i[1] || r === i[1] && t === i[0])\n this.neighbors_[2] = e;\n else\n throw new Error(\"poly2tri Invalid Triangle.markNeighborPointers() call\");\n};\nq.prototype.markNeighbor = function(r) {\n var t = this.points_;\n r.containsPoints(t[1], t[2]) ? (this.neighbors_[0] = r, r.markNeighborPointers(t[1], t[2], this)) : r.containsPoints(t[0], t[2]) ? (this.neighbors_[1] = r, r.markNeighborPointers(t[0], t[2], this)) : r.containsPoints(t[0], t[1]) && (this.neighbors_[2] = r, r.markNeighborPointers(t[0], t[1], this));\n};\nq.prototype.clearNeighbors = function() {\n this.neighbors_[0] = null, this.neighbors_[1] = null, this.neighbors_[2] = null;\n};\nq.prototype.clearDelaunayEdges = function() {\n this.delaunay_edge[0] = !1, this.delaunay_edge[1] = !1, this.delaunay_edge[2] = !1;\n};\nq.prototype.pointCW = function(r) {\n var t = this.points_;\n return r === t[0] ? t[2] : r === t[1] ? t[0] : r === t[2] ? t[1] : null;\n};\nq.prototype.pointCCW = function(r) {\n var t = this.points_;\n return r === t[0] ? t[1] : r === t[1] ? t[2] : r === t[2] ? t[0] : null;\n};\nq.prototype.neighborCW = function(r) {\n return r === this.points_[0] ? this.neighbors_[1] : r === this.points_[1] ? this.neighbors_[2] : this.neighbors_[0];\n};\nq.prototype.neighborCCW = function(r) {\n return r === this.points_[0] ? this.neighbors_[2] : r === this.points_[1] ? this.neighbors_[0] : this.neighbors_[1];\n};\nq.prototype.getConstrainedEdgeCW = function(r) {\n return r === this.points_[0] ? this.constrained_edge[1] : r === this.points_[1] ? this.constrained_edge[2] : this.constrained_edge[0];\n};\nq.prototype.getConstrainedEdgeCCW = function(r) {\n return r === this.points_[0] ? this.constrained_edge[2] : r === this.points_[1] ? this.constrained_edge[0] : this.constrained_edge[1];\n};\nq.prototype.getConstrainedEdgeAcross = function(r) {\n return r === this.points_[0] ? this.constrained_edge[0] : r === this.points_[1] ? this.constrained_edge[1] : this.constrained_edge[2];\n};\nq.prototype.setConstrainedEdgeCW = function(r, t) {\n r === this.points_[0] ? this.constrained_edge[1] = t : r === this.points_[1] ? this.constrained_edge[2] = t : this.constrained_edge[0] = t;\n};\nq.prototype.setConstrainedEdgeCCW = function(r, t) {\n r === this.points_[0] ? this.constrained_edge[2] = t : r === this.points_[1] ? this.constrained_edge[0] = t : this.constrained_edge[1] = t;\n};\nq.prototype.getDelaunayEdgeCW = function(r) {\n return r === this.points_[0] ? this.delaunay_edge[1] : r === this.points_[1] ? this.delaunay_edge[2] : this.delaunay_edge[0];\n};\nq.prototype.getDelaunayEdgeCCW = function(r) {\n return r === this.points_[0] ? this.delaunay_edge[2] : r === this.points_[1] ? this.delaunay_edge[0] : this.delaunay_edge[1];\n};\nq.prototype.setDelaunayEdgeCW = function(r, t) {\n r === this.points_[0] ? this.delaunay_edge[1] = t : r === this.points_[1] ? this.delaunay_edge[2] = t : this.delaunay_edge[0] = t;\n};\nq.prototype.setDelaunayEdgeCCW = function(r, t) {\n r === this.points_[0] ? this.delaunay_edge[2] = t : r === this.points_[1] ? this.delaunay_edge[0] = t : this.delaunay_edge[1] = t;\n};\nq.prototype.neighborAcross = function(r) {\n return r === this.points_[0] ? this.neighbors_[0] : r === this.points_[1] ? this.neighbors_[1] : this.neighbors_[2];\n};\nq.prototype.oppositePoint = function(r, t) {\n var e = r.pointCW(t);\n return this.pointCW(e);\n};\nq.prototype.legalize = function(r, t) {\n var e = this.points_;\n if (r === e[0])\n e[1] = e[0], e[0] = e[2], e[2] = t;\n else if (r === e[1])\n e[2] = e[1], e[1] = e[0], e[0] = t;\n else if (r === e[2])\n e[0] = e[2], e[2] = e[1], e[1] = t;\n else\n throw new Error(\"poly2tri Invalid Triangle.legalize() call\");\n};\nq.prototype.index = function(r) {\n var t = this.points_;\n if (r === t[0])\n return 0;\n if (r === t[1])\n return 1;\n if (r === t[2])\n return 2;\n throw new Error(\"poly2tri Invalid Triangle.index() call\");\n};\nq.prototype.edgeIndex = function(r, t) {\n var e = this.points_;\n if (r === e[0]) {\n if (t === e[1])\n return 2;\n if (t === e[2])\n return 1;\n } else if (r === e[1]) {\n if (t === e[2])\n return 0;\n if (t === e[0])\n return 2;\n } else if (r === e[2]) {\n if (t === e[0])\n return 1;\n if (t === e[1])\n return 0;\n }\n return -1;\n};\nq.prototype.markConstrainedEdgeByIndex = function(r) {\n this.constrained_edge[r] = !0;\n};\nq.prototype.markConstrainedEdgeByEdge = function(r) {\n this.markConstrainedEdgeByPoints(r.p, r.q);\n};\nq.prototype.markConstrainedEdgeByPoints = function(r, t) {\n var e = this.points_;\n t === e[0] && r === e[1] || t === e[1] && r === e[0] ? this.constrained_edge[2] = !0 : t === e[0] && r === e[2] || t === e[2] && r === e[0] ? this.constrained_edge[1] = !0 : (t === e[1] && r === e[2] || t === e[2] && r === e[1]) && (this.constrained_edge[0] = !0);\n};\nvar qi = q, Xi = {};\nfunction Pl(r, t) {\n if (!r)\n throw new Error(t || \"Assert Failed\");\n}\nvar Cl = Pl, Ze = {}, Rl = {\n get exports() {\n return Ze;\n },\n set exports(r) {\n Ze = r;\n }\n}, kl = function(r, t) {\n this.point = r, this.triangle = t || null, this.next = null, this.prev = null, this.value = r.x;\n}, Lt = function(r, t) {\n this.head_ = r, this.tail_ = t, this.search_node_ = r;\n};\nLt.prototype.head = function() {\n return this.head_;\n};\nLt.prototype.setHead = function(r) {\n this.head_ = r;\n};\nLt.prototype.tail = function() {\n return this.tail_;\n};\nLt.prototype.setTail = function(r) {\n this.tail_ = r;\n};\nLt.prototype.search = function() {\n return this.search_node_;\n};\nLt.prototype.setSearch = function(r) {\n this.search_node_ = r;\n};\nLt.prototype.findSearchNode = function() {\n return this.search_node_;\n};\nLt.prototype.locateNode = function(r) {\n var t = this.search_node_;\n if (r < t.value) {\n for (; t = t.prev; )\n if (r >= t.value)\n return this.search_node_ = t, t;\n } else\n for (; t = t.next; )\n if (r < t.value)\n return this.search_node_ = t.prev, t.prev;\n return null;\n};\nLt.prototype.locatePoint = function(r) {\n var t = r.x, e = this.findSearchNode(t), i = e.point.x;\n if (t === i) {\n if (r !== e.point)\n if (r === e.prev.point)\n e = e.prev;\n else if (r === e.next.point)\n e = e.next;\n else\n throw new Error(\"poly2tri Invalid AdvancingFront.locatePoint() call\");\n } else if (t < i)\n for (; (e = e.prev) && r !== e.point; )\n ;\n else\n for (; (e = e.next) && r !== e.point; )\n ;\n return e && (this.search_node_ = e), e;\n};\nRl.exports = Lt;\nZe.Node = kl;\nvar Te = {}, $e = 1e-12;\nTe.EPSILON = $e;\nvar _r = {\n CW: 1,\n CCW: -1,\n COLLINEAR: 0\n};\nTe.Orientation = _r;\nfunction Ol(r, t, e) {\n var i = (r.x - e.x) * (t.y - e.y), n = (r.y - e.y) * (t.x - e.x), s = i - n;\n return s > -$e && s < $e ? _r.COLLINEAR : s > 0 ? _r.CCW : _r.CW;\n}\nTe.orient2d = Ol;\nfunction Nl(r, t, e, i) {\n var n = (r.x - t.x) * (i.y - t.y) - (i.x - t.x) * (r.y - t.y);\n if (n >= -$e)\n return !1;\n var s = (r.x - e.x) * (i.y - e.y) - (i.x - e.x) * (r.y - e.y);\n return !(s <= $e);\n}\nTe.inScanArea = Nl;\nfunction Ll(r, t, e) {\n var i = t.x - r.x, n = t.y - r.y, s = e.x - r.x, o = e.y - r.y;\n return i * s + n * o < 0;\n}\nTe.isAngleObtuse = Ll;\nvar Hi = Cl, Fr = $i, Vs = qi, jl = Ze.Node, He = Te, Bl = He.EPSILON, nt = He.Orientation, at = He.orient2d, zs = He.inScanArea, Pn = He.isAngleObtuse;\nfunction Dl(r) {\n r.initTriangulation(), r.createAdvancingFront(), Gl(r), Fl(r);\n}\nfunction Gl(r) {\n var t, e = r.pointCount();\n for (t = 1; t < e; ++t)\n for (var i = r.getPoint(t), n = Ul(r, i), s = i._p2t_edge_list, o = 0; s && o < s.length; ++o)\n Wl(r, s[o], n);\n}\nfunction Fl(r) {\n for (var t = r.front().head().next.triangle, e = r.front().head().next.point; !t.getConstrainedEdgeCW(e); )\n t = t.neighborCCW(e);\n r.meshClean(t);\n}\nfunction Ul(r, t) {\n var e = r.locateNode(t), i = Vl(r, t, e);\n return t.x <= e.point.x + Bl && ve(r, e), zl(r, i), i;\n}\nfunction Wl(r, t, e) {\n r.edge_event.constrained_edge = t, r.edge_event.right = t.p.x > t.q.x, !Zs(e.triangle, t.p, t.q) && (Hl(r, t, e), Yi(r, t.p, t.q, e.triangle, t.q));\n}\nfunction Yi(r, t, e, i, n) {\n if (!Zs(i, t, e)) {\n var s = i.pointCCW(n), o = at(e, s, t);\n if (o === nt.COLLINEAR)\n throw new Fr(\"poly2tri EdgeEvent: Collinear not supported!\", [e, s, t]);\n var a = i.pointCW(n), h = at(e, a, t);\n if (h === nt.COLLINEAR)\n throw new Fr(\"poly2tri EdgeEvent: Collinear not supported!\", [e, a, t]);\n o === h ? (o === nt.CW ? i = i.neighborCCW(n) : i = i.neighborCW(n), Yi(r, t, e, i, n)) : Qi(r, t, e, i, n);\n }\n}\nfunction Zs(r, t, e) {\n var i = r.edgeIndex(t, e);\n if (i !== -1) {\n r.markConstrainedEdgeByIndex(i);\n var n = r.getNeighbor(i);\n return n && n.markConstrainedEdgeByPoints(t, e), !0;\n }\n return !1;\n}\nfunction Vl(r, t, e) {\n var i = new Vs(t, e.point, e.next.point);\n i.markNeighbor(e.triangle), r.addToMap(i);\n var n = new jl(t);\n return n.next = e.next, n.prev = e, e.next.prev = n, e.next = n, te(r, i) || r.mapTriangleToNodes(i), n;\n}\nfunction ve(r, t) {\n var e = new Vs(t.prev.point, t.point, t.next.point);\n e.markNeighbor(t.prev.triangle), e.markNeighbor(t.triangle), r.addToMap(e), t.prev.next = t.next, t.next.prev = t.prev, te(r, e) || r.mapTriangleToNodes(e);\n}\nfunction zl(r, t) {\n for (var e = t.next; e.next && !Pn(e.point, e.next.point, e.prev.point); )\n ve(r, e), e = e.next;\n for (e = t.prev; e.prev && !Pn(e.point, e.next.point, e.prev.point); )\n ve(r, e), e = e.prev;\n t.next && t.next.next && Zl(t) && ql(r, t);\n}\nfunction Zl(r) {\n var t = r.point.x - r.next.next.point.x, e = r.point.y - r.next.next.point.y;\n return Hi(e >= 0, \"unordered y\"), t >= 0 || Math.abs(t) < e;\n}\nfunction te(r, t) {\n for (var e = 0; e < 3; ++e)\n if (!t.delaunay_edge[e]) {\n var i = t.getNeighbor(e);\n if (i) {\n var n = t.getPoint(e), s = i.oppositePoint(t, n), o = i.index(s);\n if (i.constrained_edge[o] || i.delaunay_edge[o]) {\n t.constrained_edge[e] = i.constrained_edge[o];\n continue;\n }\n var a = $l(n, t.pointCCW(n), t.pointCW(n), s);\n if (a) {\n t.delaunay_edge[e] = !0, i.delaunay_edge[o] = !0, $s(t, n, i, s);\n var h = !te(r, t);\n return h && r.mapTriangleToNodes(t), h = !te(r, i), h && r.mapTriangleToNodes(i), t.delaunay_edge[e] = !1, i.delaunay_edge[o] = !1, !0;\n }\n }\n }\n return !1;\n}\nfunction $l(r, t, e, i) {\n var n = r.x - i.x, s = r.y - i.y, o = t.x - i.x, a = t.y - i.y, h = n * a, c = o * s, l = h - c;\n if (l <= 0)\n return !1;\n var u = e.x - i.x, g = e.y - i.y, w = u * s, y = n * g, _ = w - y;\n if (_ <= 0)\n return !1;\n var I = o * g, v = u * a, S = n * n + s * s, f = o * o + a * a, p = u * u + g * g, T = S * (I - v) + f * _ + p * l;\n return T > 0;\n}\nfunction $s(r, t, e, i) {\n var n, s, o, a;\n n = r.neighborCCW(t), s = r.neighborCW(t), o = e.neighborCCW(i), a = e.neighborCW(i);\n var h, c, l, u;\n h = r.getConstrainedEdgeCCW(t), c = r.getConstrainedEdgeCW(t), l = e.getConstrainedEdgeCCW(i), u = e.getConstrainedEdgeCW(i);\n var g, w, y, _;\n g = r.getDelaunayEdgeCCW(t), w = r.getDelaunayEdgeCW(t), y = e.getDelaunayEdgeCCW(i), _ = e.getDelaunayEdgeCW(i), r.legalize(t, i), e.legalize(i, t), e.setDelaunayEdgeCCW(t, g), r.setDelaunayEdgeCW(t, w), r.setDelaunayEdgeCCW(i, y), e.setDelaunayEdgeCW(i, _), e.setConstrainedEdgeCCW(t, h), r.setConstrainedEdgeCW(t, c), r.setConstrainedEdgeCCW(i, l), e.setConstrainedEdgeCW(i, u), r.clearNeighbors(), e.clearNeighbors(), n && e.markNeighbor(n), s && r.markNeighbor(s), o && r.markNeighbor(o), a && e.markNeighbor(a), r.markNeighbor(e);\n}\nfunction ql(r, t) {\n for (at(t.point, t.next.point, t.next.next.point) === nt.CCW ? r.basin.left_node = t.next.next : r.basin.left_node = t.next, r.basin.bottom_node = r.basin.left_node; r.basin.bottom_node.next && r.basin.bottom_node.point.y >= r.basin.bottom_node.next.point.y; )\n r.basin.bottom_node = r.basin.bottom_node.next;\n if (r.basin.bottom_node !== r.basin.left_node) {\n for (r.basin.right_node = r.basin.bottom_node; r.basin.right_node.next && r.basin.right_node.point.y < r.basin.right_node.next.point.y; )\n r.basin.right_node = r.basin.right_node.next;\n r.basin.right_node !== r.basin.bottom_node && (r.basin.width = r.basin.right_node.point.x - r.basin.left_node.point.x, r.basin.left_highest = r.basin.left_node.point.y > r.basin.right_node.point.y, qs(r, r.basin.bottom_node));\n }\n}\nfunction qs(r, t) {\n if (!Xl(r, t)) {\n ve(r, t);\n var e;\n if (!(t.prev === r.basin.left_node && t.next === r.basin.right_node)) {\n if (t.prev === r.basin.left_node) {\n if (e = at(t.point, t.next.point, t.next.next.point), e === nt.CW)\n return;\n t = t.next;\n } else if (t.next === r.basin.right_node) {\n if (e = at(t.point, t.prev.point, t.prev.prev.point), e === nt.CCW)\n return;\n t = t.prev;\n } else\n t.prev.point.y < t.next.point.y ? t = t.prev : t = t.next;\n qs(r, t);\n }\n }\n}\nfunction Xl(r, t) {\n var e;\n return r.basin.left_highest ? e = r.basin.left_node.point.y - t.point.y : e = r.basin.right_node.point.y - t.point.y, r.basin.width > e;\n}\nfunction Hl(r, t, e) {\n r.edge_event.right ? Yl(r, t, e) : Jl(r, t, e);\n}\nfunction Yl(r, t, e) {\n for (; e.next.point.x < t.p.x; )\n at(t.q, e.next.point, t.p) === nt.CCW ? Xs(r, t, e) : e = e.next;\n}\nfunction Xs(r, t, e) {\n e.point.x < t.p.x && (at(e.point, e.next.point, e.next.next.point) === nt.CCW ? Ji(r, t, e) : (Hs(r, t, e), Xs(r, t, e)));\n}\nfunction Ji(r, t, e) {\n ve(r, e.next), e.next.point !== t.p && at(t.q, e.next.point, t.p) === nt.CCW && at(e.point, e.next.point, e.next.next.point) === nt.CCW && Ji(r, t, e);\n}\nfunction Hs(r, t, e) {\n at(e.next.point, e.next.next.point, e.next.next.next.point) === nt.CCW ? Ji(r, t, e.next) : at(t.q, e.next.next.point, t.p) === nt.CCW && Hs(r, t, e.next);\n}\nfunction Jl(r, t, e) {\n for (; e.prev.point.x > t.p.x; )\n at(t.q, e.prev.point, t.p) === nt.CW ? Ys(r, t, e) : e = e.prev;\n}\nfunction Ys(r, t, e) {\n e.point.x > t.p.x && (at(e.point, e.prev.point, e.prev.prev.point) === nt.CW ? Ki(r, t, e) : (Js(r, t, e), Ys(r, t, e)));\n}\nfunction Js(r, t, e) {\n at(e.prev.point, e.prev.prev.point, e.prev.prev.prev.point) === nt.CW ? Ki(r, t, e.prev) : at(t.q, e.prev.prev.point, t.p) === nt.CW && Js(r, t, e.prev);\n}\nfunction Ki(r, t, e) {\n ve(r, e.prev), e.prev.point !== t.p && at(t.q, e.prev.point, t.p) === nt.CW && at(e.point, e.prev.point, e.prev.prev.point) === nt.CW && Ki(r, t, e);\n}\nfunction Qi(r, t, e, i, n) {\n var s = i.neighborAcross(n);\n Hi(s, \"FLIP failed due to missing triangle!\");\n var o = s.oppositePoint(i, n);\n if (i.getConstrainedEdgeAcross(n)) {\n var a = i.index(n);\n throw new Fr(\n \"poly2tri Intersecting Constraints\",\n [n, o, i.getPoint((a + 1) % 3), i.getPoint((a + 2) % 3)]\n );\n }\n if (zs(n, i.pointCCW(n), i.pointCW(n), o))\n if ($s(i, n, s, o), r.mapTriangleToNodes(i), r.mapTriangleToNodes(s), n === e && o === t)\n e === r.edge_event.constrained_edge.q && t === r.edge_event.constrained_edge.p && (i.markConstrainedEdgeByPoints(t, e), s.markConstrainedEdgeByPoints(t, e), te(r, i), te(r, s));\n else {\n var h = at(e, o, t);\n i = Kl(r, h, i, s, n, o), Qi(r, t, e, i, n);\n }\n else {\n var c = Ks(t, e, s, o);\n Qs(r, t, e, i, s, c), Yi(r, t, e, i, n);\n }\n}\nfunction Kl(r, t, e, i, n, s) {\n var o;\n return t === nt.CCW ? (o = i.edgeIndex(n, s), i.delaunay_edge[o] = !0, te(r, i), i.clearDelaunayEdges(), e) : (o = e.edgeIndex(n, s), e.delaunay_edge[o] = !0, te(r, e), e.clearDelaunayEdges(), i);\n}\nfunction Ks(r, t, e, i) {\n var n = at(t, i, r);\n if (n === nt.CW)\n return e.pointCCW(i);\n if (n === nt.CCW)\n return e.pointCW(i);\n throw new Fr(\"poly2tri [Unsupported] nextFlipPoint: opposing point on constrained edge!\", [t, i, r]);\n}\nfunction Qs(r, t, e, i, n, s) {\n var o = n.neighborAcross(s);\n Hi(o, \"FLIP failed due to missing triangle\");\n var a = o.oppositePoint(n, s);\n if (zs(e, i.pointCCW(e), i.pointCW(e), a))\n Qi(r, e, a, o, a);\n else {\n var h = Ks(t, e, o, a);\n Qs(r, t, e, i, o, h);\n }\n}\nXi.triangulate = Dl;\nvar Ql = $i, be = Ws, tu = qi, eu = Xi, to = Ze, di = to.Node, Cn = 0.3, ru = function(r, t) {\n if (this.p = r, this.q = t, r.y > t.y)\n this.q = r, this.p = t;\n else if (r.y === t.y) {\n if (r.x > t.x)\n this.q = r, this.p = t;\n else if (r.x === t.x)\n throw new Ql(\"poly2tri Invalid Edge constructor: repeated points!\", [r]);\n }\n this.q._p2t_edge_list || (this.q._p2t_edge_list = []), this.q._p2t_edge_list.push(this);\n}, eo = function() {\n this.left_node = null, this.bottom_node = null, this.right_node = null, this.width = 0, this.left_highest = !1;\n};\neo.prototype.clear = function() {\n this.left_node = null, this.bottom_node = null, this.right_node = null, this.width = 0, this.left_highest = !1;\n};\nvar iu = function() {\n this.constrained_edge = null, this.right = !1;\n}, K = function(r, t) {\n t = t || {}, this.triangles_ = [], this.map_ = [], this.points_ = t.cloneArrays ? r.slice(0) : r, this.edge_list = [], this.pmin_ = this.pmax_ = null, this.front_ = null, this.head_ = null, this.tail_ = null, this.af_head_ = null, this.af_middle_ = null, this.af_tail_ = null, this.basin = new eo(), this.edge_event = new iu(), this.initEdges(this.points_);\n};\nK.prototype.addHole = function(r) {\n this.initEdges(r);\n var t, e = r.length;\n for (t = 0; t < e; t++)\n this.points_.push(r[t]);\n return this;\n};\nK.prototype.AddHole = K.prototype.addHole;\nK.prototype.addHoles = function(r) {\n var t, e = r.length;\n for (t = 0; t < e; t++)\n this.initEdges(r[t]);\n return this.points_ = this.points_.concat.apply(this.points_, r), this;\n};\nK.prototype.addPoint = function(r) {\n return this.points_.push(r), this;\n};\nK.prototype.AddPoint = K.prototype.addPoint;\nK.prototype.addPoints = function(r) {\n return this.points_ = this.points_.concat(r), this;\n};\nK.prototype.triangulate = function() {\n return eu.triangulate(this), this;\n};\nK.prototype.getBoundingBox = function() {\n return { min: this.pmin_, max: this.pmax_ };\n};\nK.prototype.getTriangles = function() {\n return this.triangles_;\n};\nK.prototype.GetTriangles = K.prototype.getTriangles;\nK.prototype.front = function() {\n return this.front_;\n};\nK.prototype.pointCount = function() {\n return this.points_.length;\n};\nK.prototype.head = function() {\n return this.head_;\n};\nK.prototype.setHead = function(r) {\n this.head_ = r;\n};\nK.prototype.tail = function() {\n return this.tail_;\n};\nK.prototype.setTail = function(r) {\n this.tail_ = r;\n};\nK.prototype.getMap = function() {\n return this.map_;\n};\nK.prototype.initTriangulation = function() {\n var r = this.points_[0].x, t = this.points_[0].x, e = this.points_[0].y, i = this.points_[0].y, n, s = this.points_.length;\n for (n = 1; n < s; n++) {\n var o = this.points_[n];\n o.x > r && (r = o.x), o.x < t && (t = o.x), o.y > e && (e = o.y), o.y < i && (i = o.y);\n }\n this.pmin_ = new be(t, i), this.pmax_ = new be(r, e);\n var a = Cn * (r - t), h = Cn * (e - i);\n this.head_ = new be(r + a, i - h), this.tail_ = new be(t - a, i - h), this.points_.sort(be.compare);\n};\nK.prototype.initEdges = function(r) {\n var t, e = r.length;\n for (t = 0; t < e; ++t)\n this.edge_list.push(new ru(r[t], r[(t + 1) % e]));\n};\nK.prototype.getPoint = function(r) {\n return this.points_[r];\n};\nK.prototype.addToMap = function(r) {\n this.map_.push(r);\n};\nK.prototype.locateNode = function(r) {\n return this.front_.locateNode(r.x);\n};\nK.prototype.createAdvancingFront = function() {\n var r, t, e, i = new tu(this.points_[0], this.tail_, this.head_);\n this.map_.push(i), r = new di(i.getPoint(1), i), t = new di(i.getPoint(0), i), e = new di(i.getPoint(2)), this.front_ = new to(r, e), r.next = t, t.next = e, t.prev = r, e.prev = t;\n};\nK.prototype.removeNode = function(r) {\n};\nK.prototype.mapTriangleToNodes = function(r) {\n for (var t = 0; t < 3; ++t)\n if (!r.getNeighbor(t)) {\n var e = this.front_.locatePoint(r.pointCW(r.getPoint(t)));\n e && (e.triangle = r);\n }\n};\nK.prototype.removeFromMap = function(r) {\n var t, e = this.map_, i = e.length;\n for (t = 0; t < i; t++)\n if (e[t] === r) {\n e.splice(t, 1);\n break;\n }\n};\nK.prototype.meshClean = function(r) {\n for (var t = [r], e, i; e = t.pop(); )\n if (!e.isInterior())\n for (e.setInterior(!0), this.triangles_.push(e), i = 0; i < 3; i++)\n e.constrained_edge[i] || t.push(e.getNeighbor(i));\n};\nvar nu = K;\n(function(r) {\n var t = globalThis.poly2tri;\n r.noConflict = function() {\n return globalThis.poly2tri = t, r;\n }, r.VERSION = Ml.version, r.PointError = $i, r.Point = Ws, r.Triangle = qi, r.SweepContext = nu;\n var e = Xi;\n r.triangulate = e.triangulate, r.sweep = { Triangulate: e.triangulate };\n})(Mr);\nfunction su(r, t) {\n const e = ol(r, t), i = new Mr.SweepContext(sl(r, t).map((n) => new Mr.Point(n[0], n[1])));\n for (let n = 0; n < e.length; n++)\n xl(r, e[n]) === -1 && i.addPoint(new Mr.Point(e[n][0], e[n][1]));\n try {\n i.triangulate();\n } catch {\n throw new Error(\"A Point Error occured during resource mask triangulation. This is typically because the resource mask contains duplicate or collinear points, or is self-intersecting.\");\n }\n return i.getTriangles();\n}\nfunction ou(r, t) {\n return su(r, t).map((e) => e.getPoints().map((i) => [i.x, i.y]));\n}\nfunction pe(r, t) {\n const e = t[0], i = t[1];\n return [\n r[0] * e + r[2] * i + r[4],\n r[1] * e + r[3] * i + r[5]\n ];\n}\nfunction au() {\n return [1, 0, 0, 1, 0, 0];\n}\nfunction hu(r, t) {\n const e = r[0], i = r[1], n = r[2], s = r[3], o = r[4], a = r[5], h = t[0], c = t[1], l = t[2], u = t[3], g = t[4], w = t[5];\n return [\n e * h + n * c,\n i * h + s * c,\n e * l + n * u,\n i * l + s * u,\n e * g + n * w + o,\n i * g + s * w + a\n ];\n}\nfunction Rn(r, t, e, i, n, s, o) {\n const a = Math.sin(n), h = Math.cos(n);\n return [\n e * h,\n i * a,\n -e * a,\n i * h,\n s * e * h - o * e * a + r,\n s * i * a + o * i * h + t\n ];\n}\nfunction cu(r) {\n const t = lu(r), e = r[0], i = r[1], n = r[2], s = r[3], o = r[4], a = r[5];\n return [\n s / t,\n -i / t,\n -n / t,\n e / t,\n (n * a - s * o) / t,\n -(e * a - i * o) / t\n ];\n}\nfunction lu(r) {\n return r[0] * r[3] - r[1] * r[2];\n}\nfunction uu(r) {\n const t = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n return t[0] = r[0], t[1] = r[1], t[4] = r[2], t[5] = r[3], t[12] = r[4], t[13] = r[5], t;\n}\nvar k;\n(function(r) {\n r.GEOREFERENCEANNOTATIONADDED = \"georeferenceannotationadded\", r.GEOREFERENCEANNOTATIONREMOVED = \"georeferenceannotationremoved\", r.WARPEDMAPADDED = \"warpedmapadded\", r.WARPEDMAPREMOVED = \"warpedmapremoved\", r.WARPEDMAPENTER = \"warpedmapenter\", r.WARPEDMAPLEAVE = \"warpedmapleave\", r.IMAGEINFOLOADED = \"imageinfoloaded\", r.TILEFETCHED = \"tilefetched\", r.TILEFETCHERROR = \"tilefetcherror\", r.MAPTILELOADED = \"maptileloaded\", r.MAPTILEREMOVED = \"maptileremoved\", r.FIRSTMAPTILELOADED = \"firstmaptileloaded\", r.ALLREQUESTEDTILESLOADED = \"allrequestedtilesloaded\", r.TEXTURESUPDATED = \"texturesupdated\", r.ZINDICESCHANGES = \"zindiceschanged\", r.RESOURCEMASKUPDATED = \"resourcemaskupdated\", r.VISIBILITYCHANGED = \"visibilitychanged\", r.TRANSFORMATIONCHANGED = \"transformationchanged\", r.CHANGED = \"changed\", r.CLEARED = \"cleared\";\n})(k || (k = {}));\nclass $ extends Event {\n constructor(t, e) {\n super(t), this.data = e;\n }\n}\nconst du = 80, fu = {\n maxOffsetRatio: 0.05,\n maxDepth: 2,\n differentHandedness: !0\n}, pu = {\n maxOffsetRatio: 0.05,\n maxDepth: 2,\n differentHandedness: !0\n}, gu = 10;\nclass mu extends EventTarget {\n /**\n * Creates an instance of WarpedMap.\n *\n * @constructor\n * @param {string} mapId - ID of the map\n * @param {GeoreferencedMap} georeferencedMap - Georeferende map this warped map is build on\n * @param {?Cache} [imageInfoCache] - Cache of the image info of this image\n * @param {boolean} [visible=true] - Whether the map is visible\n */\n constructor(t, e, i, n = !0) {\n super(), this.transformerByTransformationType = /* @__PURE__ */ new Map(), this.projectedTransformerByTransformationType = /* @__PURE__ */ new Map(), this.triangulateErrorCount = 0, this.resourceViewportRing = [], this.resourceTrianglePoints = [], this.resourceTrianglePointsByBestScaleFactor = /* @__PURE__ */ new Map(), this.projectedGeoCurrentTrianglePoints = [], this.projectedGeoNewTrianglePoints = [], this.projectedGeoTrianglePointsByBestScaleFactorAndTransformationType = /* @__PURE__ */ new Map(), this.mapId = t, this.georeferencedMap = e, this.gcps = this.georeferencedMap.gcps, this.projectedGcps = this.gcps.map(({ resource: s, geo: o }) => ({\n resource: s,\n geo: Oh(o)\n })), this.resourceMask = this.georeferencedMap.resourceMask, this.updateResourceMaskProperties(), this.resourceFullMask = [\n [0, 0],\n [this.georeferencedMap.resource.width, 0],\n [\n this.georeferencedMap.resource.width,\n this.georeferencedMap.resource.height\n ],\n [0, this.georeferencedMap.resource.height]\n ], this.resourceFullMaskBbox = lt(this.resourceFullMask), this.resourceFullMaskRectangle = Ve(this.resourceFullMaskBbox), this.imageInfoCache = i, this.loadingImageInfo = !1, this.visible = n, this.transformationType = this.georeferencedMap.transformation?.type || \"polynomial\", this.updateTransformerProperties();\n }\n /**\n * Get resourceMask in viewport coordinates\n *\n * @param {Viewport} viewport - the current viewport\n * @returns {Ring}\n */\n getViewportMask(t) {\n return this.projectedGeoMask.map((e) => pe(t.projectedGeoToViewportTransform, e));\n }\n /**\n * Get bbox of resourceMask in viewport coordinates\n *\n * @param {Viewport} viewport - the current viewport\n * @returns {Bbox}\n */\n getViewportMaskBbox(t) {\n return lt(this.getViewportMask(t));\n }\n /**\n * Get resourceMaskRectangle in viewport coordinates\n *\n * @param {Viewport} viewport - the current viewport\n * @returns {Rectangle}\n */\n getViewportMaskRectangle(t) {\n return this.projectedGeoMaskRectangle.map((e) => pe(t.projectedGeoToViewportTransform, e));\n }\n /**\n * Get resourceFullMask in viewport coordinates\n *\n * @param {Viewport} viewport - the current viewport\n * @returns {Ring}\n */\n getViewportFullMask(t) {\n return this.projectedGeoFullMask.map((e) => pe(t.projectedGeoToViewportTransform, e));\n }\n /**\n * Get bbox of rresourceFullMask in viewport coordinates\n *\n * @param {Viewport} viewport - the current viewport\n * @returns {Bbox}\n */\n getViewportFullMaskBbox(t) {\n return lt(this.getViewportFullMask(t));\n }\n /**\n * Get resourceFullMaskRectangle in viewport coordinates\n *\n * @param {Viewport} viewport - the current viewport\n * @returns {Rectangle}\n */\n getViewportFullMaskRectangle(t) {\n return this.projectedGeoFullMaskRectangle.map((e) => pe(t.projectedGeoToViewportTransform, e));\n }\n /**\n * Get scale of the warped map, in resource pixels per viewport pixels.\n *\n * @param {Viewport} viewport - the current viewport\n * @returns {number}\n */\n getResourceToViewportScale(t) {\n return wn(this.resourceMaskRectangle, this.getViewportMaskRectangle(t));\n }\n /**\n * Get scale of the warped map, in resource pixels per canvas pixels.\n *\n * @param {Viewport} viewport - the current viewport\n * @returns {number}\n */\n getResourceToCanvasScale(t) {\n return this.getResourceToViewportScale(t) / t.devicePixelRatio;\n }\n /**\n * Set resourceViewportRing at current viewport\n *\n * @param {Ring} resourceViewportRing\n */\n setResourceViewportRing(t) {\n this.resourceViewportRing = t, this.resourceViewportRingBbox = lt(t);\n }\n /**\n * Update the resourceMask loaded from a georeferenced map to a new mask.\n *\n * @param {Ring} resourceMask\n */\n setResourceMask(t) {\n this.resourceMask = t, this.updateResourceMaskProperties(), this.updateGeoMask(), this.updateProjectedGeoMask(), this.updateResourceToProjectedGeoScale(), this.resourceTrianglePointsByBestScaleFactor = /* @__PURE__ */ new Map(), this.projectedGeoTrianglePointsByBestScaleFactorAndTransformationType = /* @__PURE__ */ new Map(), this.updateTriangulation();\n }\n /**\n * Update the transformationType loaded from a georeferenced map to a new transformation type.\n *\n * @param {TransformationType} transformationType\n */\n setTransformationType(t) {\n this.transformationType = t, this.updateTransformerProperties();\n }\n /**\n * Update the Ground Controle Points loaded from a georeferenced map to new Ground Controle Points.\n *\n * @param {GCP[]} gcps\n */\n setGcps(t) {\n this.gcps = t, this.updateTransformerProperties(!1);\n }\n /**\n * Set the bestScaleFactor at the current viewport\n *\n * @param {number} scaleFactor - scale factor\n * @returns {boolean}\n */\n setBestScaleFactor(t) {\n this.bestScaleFactor != t && (this.bestScaleFactor = t, this.updateTriangulation(!0));\n }\n /**\n * Update the triangulation of the resourceMask, at the current bestScaleFactor. Use cache if available.\n *\n * @param {boolean} [currentIsNew=false] - whether the new and current triangulation are the same - true by default, false during a transformation transition\n */\n updateTriangulation(t = !1) {\n if (this.resourceTrianglePointsByBestScaleFactor.has(this.bestScaleFactor))\n this.resourceTrianglePoints = this.resourceTrianglePointsByBestScaleFactor.get(this.bestScaleFactor);\n else {\n const e = Ah(this.resourceMask) * this.bestScaleFactor / du;\n try {\n this.resourceTrianglePoints = ou(this.resourceMask, e).flat();\n } catch (i) {\n this.logTriangulateError(i);\n }\n this.resourceTrianglePointsByBestScaleFactor.set(this.bestScaleFactor, this.resourceTrianglePoints);\n }\n this.updateProjectedGeoTrianglePoints(t);\n }\n logTriangulateError(t) {\n this.triangulateErrorCount++, this.triangulateErrorCount <= gu && (console.error(`Error computing triangulation for map ${this.mapId}.`, `Fix this map with Allmaps Editor: https://editor.allmaps.org/#/collection?url=${this.parsedImage?.uri}/info.json`), this.triangulateErrorCount === 1 && console.error(t));\n }\n /**\n * Update the (current and new) points of the triangulated resourceMask, at the current bestScaleFactor, in projectedGeo coordinates. Use cache if available.\n *\n * @param {boolean} [currentIsNew=false]\n */\n updateProjectedGeoTrianglePoints(t = !1) {\n this.projectedGeoTrianglePointsByBestScaleFactorAndTransformationType.get(this.bestScaleFactor)?.has(this.transformationType) ? this.projectedGeoNewTrianglePoints = this.projectedGeoTrianglePointsByBestScaleFactorAndTransformationType.get(this.bestScaleFactor)?.get(this.transformationType) : (this.projectedGeoNewTrianglePoints = this.resourceTrianglePoints.map((e) => this.projectedTransformer.transformToGeo(e)), this.projectedGeoTrianglePointsByBestScaleFactorAndTransformationType.get(this.bestScaleFactor) || this.projectedGeoTrianglePointsByBestScaleFactorAndTransformationType.set(this.bestScaleFactor, /* @__PURE__ */ new Map()), this.projectedGeoTrianglePointsByBestScaleFactorAndTransformationType.get(this.bestScaleFactor)?.set(this.transformationType, this.projectedGeoNewTrianglePoints)), (t || !this.projectedGeoCurrentTrianglePoints.length) && (this.projectedGeoCurrentTrianglePoints = this.projectedGeoNewTrianglePoints);\n }\n /**\n * Reset the current points of the triangulated resourceMask in projectedGeo coordinates.\n */\n resetCurrentTrianglePoints() {\n this.projectedGeoCurrentTrianglePoints = this.projectedGeoNewTrianglePoints;\n }\n /**\n * Mix the current and new points of the triangulated resourceMask in projectedGeo coordinates\n *\n * @param {number} t\n */\n mixProjectedGeoCurrentAndNewTrianglePoints(t) {\n this.projectedGeoCurrentTrianglePoints = this.projectedGeoNewTrianglePoints.map((e, i) => wh(e, this.projectedGeoCurrentTrianglePoints[i], t));\n }\n /**\n * Check if warpedMap has image info\n *\n * @returns {this is WarpedMapWithImageInfo}\n */\n hasImageInfo() {\n return this.imageId !== void 0 && this.parsedImage !== void 0;\n }\n /**\n * Fetch and parse the image info, and generate the image ID\n *\n * @async\n * @returns {Promise<void>}\n */\n async loadImageInfo() {\n this.loadingImageInfo = !0;\n const t = this.georeferencedMap.resource.id, e = await lh(t, {\n cache: this.imageInfoCache\n });\n this.parsedImage = hh.parse(e), this.imageId = await zn(t), this.loadingImageInfo = !1, this.dispatchEvent(new $(k.IMAGEINFOLOADED));\n }\n dispose() {\n this.resourceTrianglePoints = [], this.projectedGeoCurrentTrianglePoints = [], this.projectedGeoNewTrianglePoints = [];\n }\n updateResourceMaskProperties() {\n this.resourceMaskBbox = lt(this.resourceMask), this.resourceMaskRectangle = Ve(this.resourceMaskBbox);\n }\n updateTransformerProperties(t = !0) {\n this.updateTransformer(t), this.updateProjectedTransformer(t), this.updateGeoMask(), this.updateFullGeoMask(), this.updateProjectedGeoMask(), this.updateProjectedFullGeoMask(), this.updateResourceToProjectedGeoScale();\n }\n updateTransformer(t = !0) {\n this.transformerByTransformationType.has(this.transformationType) && t ? this.transformer = this.transformerByTransformationType.get(this.transformationType) : (this.transformer = new Sn(this.gcps, this.transformationType, fu), this.transformerByTransformationType.set(this.transformationType, this.transformer));\n }\n updateProjectedTransformer(t = !0) {\n this.projectedTransformerByTransformationType.has(this.transformationType) && t ? this.projectedTransformer = this.projectedTransformerByTransformationType.get(this.transformationType) : (this.projectedTransformer = new Sn(this.projectedGcps, this.transformationType, pu), this.projectedTransformerByTransformationType.set(this.transformationType, this.projectedTransformer));\n }\n updateGeoMask() {\n this.geoMask = this.transformer.transformForwardAsGeojson([\n this.resourceMask\n ]), this.geoMaskBbox = lt(this.geoMask), this.geoMaskRectangle = this.transformer.transformForward([this.resourceMaskRectangle], { maxDepth: 0 })[0];\n }\n updateFullGeoMask() {\n this.geoFullMask = this.transformer.transformForwardAsGeojson([\n this.resourceFullMask\n ]), this.geoFullMaskBbox = lt(this.geoFullMask), this.geoFullMaskRectangle = this.transformer.transformForward([this.resourceFullMaskRectangle], { maxDepth: 0 })[0];\n }\n updateProjectedGeoMask() {\n this.projectedGeoMask = this.projectedTransformer.transformForward([\n this.resourceMask\n ])[0], this.projectedGeoMaskBbox = lt(this.projectedGeoMask), this.projectedGeoMaskRectangle = this.projectedTransformer.transformForward([this.resourceMaskRectangle])[0];\n }\n updateProjectedFullGeoMask() {\n this.projectedGeoFullMask = this.projectedTransformer.transformForward([\n this.resourceFullMask\n ])[0], this.projectedGeoFullMaskBbox = lt(this.projectedGeoFullMask), this.projectedGeoFullMaskRectangle = this.projectedTransformer.transformForward([\n this.resourceFullMaskRectangle\n ])[0];\n }\n updateResourceToProjectedGeoScale() {\n this.resourceToProjectedGeoScale = wn(this.resourceMaskRectangle, this.projectedGeoMaskRectangle);\n }\n}\nconst yu = m.string().or(m.number()).or(m.boolean()), wu = m.record(m.string(), yu.array()), ee = m.tuple([m.number(), m.number()]), ro = m.object({\n type: m.literal(\"Point\"),\n coordinates: ee\n}), io = ee.array().min(3), Ye = m.enum([\n \"ImageService1\",\n \"ImageService2\",\n \"ImageService3\"\n]), vu = m.object({\n id: m.string().url(),\n type: m.string(),\n label: wu.optional()\n}), Qr = vu.extend({\n partOf: m.lazy(() => Qr.array()).optional()\n}), ti = m.union([\n m.any(),\n m.object({\n type: m.string(),\n options: m.object({}).optional()\n })\n]).transform((r) => {\n if (r && typeof r == \"object\" && \"type\" in r)\n return r;\n}), ei = m.union([\n m.string().url().array(),\n m.string().url()\n]), xu = /^<svg\\s+width=\"\\d+\"\\s+height=\"\\d+\"\\s*>\\s*<polygon\\s+points=\"\\s*(-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?\\s+){2,}-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?\\s*\"\\s*\\/>\\s*<\\/svg>$/, Tu = m.object({\n type: m.literal(\"SvgSelector\"),\n value: m.string().regex(xu)\n}), bu = m.object({\n source: m.string().url(),\n service: m.array(m.object({\n \"@id\": m.string().url(),\n type: Ye\n })).length(1),\n selector: Tu\n}), no = m.object({\n pixelCoords: ee\n}), Mu = m.object({\n type: m.literal(\"FeatureCollection\"),\n transformation: ti.optional(),\n features: m.array(m.object({\n type: m.literal(\"Feature\"),\n properties: no,\n geometry: ro\n }))\n}), tn = m.object({\n id: m.string().optional(),\n type: m.literal(\"Annotation\"),\n \"@context\": ei.optional(),\n motivation: m.string().default(\"georeferencing\").optional(),\n target: bu,\n body: Mu\n}), so = m.object({\n id: m.string().optional(),\n type: m.literal(\"AnnotationPage\"),\n \"@context\": ei.optional(),\n items: m.array(tn)\n}), en = /<polygon\\s+points=\"\\s*(-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?\\s+){2,}-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?\\s*\"\\s*\\/>/, _u = new RegExp(`^<svg\\\\s+width=\"\\\\d+\"\\\\s+height=\"\\\\d+\"\\\\s*>\\\\s*${en.source}\\\\s*</svg>$`), Eu = new RegExp(`^<svg\\\\s+height=\"\\\\d+\"\\\\s+width=\"\\\\d+\"\\\\s*>\\\\s*${en.source}\\\\s*</svg>$`), Iu = new RegExp(`^<svg\\\\s*>\\\\s*${en.source}\\\\s*</svg>$`), Su = m.string().regex(Iu), Au = m.string().regex(_u), Pu = m.string().regex(Eu), Cu = m.object({\n type: m.literal(\"SvgSelector\"),\n value: Su.or(Au).or(Pu)\n}), Ru = m.object({\n \"@id\": m.string().url(),\n type: Ye,\n height: m.number().positive(),\n width: m.number().positive(),\n partOf: Qr.array().optional()\n}), ku = m.object({\n id: m.string().url(),\n type: Ye,\n height: m.number().positive(),\n width: m.number().positive(),\n partOf: Qr.array().optional()\n}), Ou = m.object({\n type: m.literal(\"SpecificResource\"),\n source: Ru.or(ku),\n // selector: SvgSelectorSchema.or(ImageApiSelectorSchema)\n selector: Cu\n}), oo = m.object({\n resourceCoords: ee\n}), Nu = m.object({\n type: m.literal(\"FeatureCollection\"),\n transformation: ti.optional(),\n features: m.array(m.object({\n type: m.literal(\"Feature\"),\n properties: oo,\n geometry: ro\n }))\n}), rn = m.object({\n id: m.string().optional(),\n type: m.literal(\"Annotation\"),\n \"@context\": ei.optional(),\n motivation: m.string().default(\"georeferencing\").optional(),\n created: m.string().datetime().optional(),\n modified: m.string().datetime().optional(),\n target: Ou,\n body: Nu\n}), ao = m.object({\n id: m.string().optional(),\n type: m.literal(\"AnnotationPage\"),\n \"@context\": ei.optional(),\n items: m.array(rn)\n});\ntn.or(rn);\nso.or(ao);\nno.or(oo);\nfunction ho(r) {\n return Array.isArray(r);\n}\nfunction Lu(r) {\n return !!(r && typeof r == \"object\" && \"type\" in r && r.type === \"AnnotationPage\");\n}\nfunction Ur(r) {\n return !!(r && typeof r == \"object\" && \"type\" in r && r.type === \"GeoreferencedMap\");\n}\nfunction kn(r) {\n return !!(r && typeof r == \"object\" && \"target\" in r && r.target && typeof r.target == \"object\" && \"source\" in r.target && typeof r.target.source == \"string\");\n}\nfunction ri(r) {\n return \"type\" in r && r.type === \"GeoreferencedMap\";\n}\nfunction ii(r) {\n return \"source\" in r.target && typeof r.target.source == \"object\";\n}\nfunction ju(r) {\n return {\n id: Bu(r),\n ...Vu(r),\n type: Du(r),\n partOf: Gu(r)\n };\n}\nfunction Bu(r) {\n if (ii(r)) {\n const t = r.target.source;\n return \"id\" in t ? t.id : t[\"@id\"];\n } else\n return r.target.service[0][\"@id\"];\n}\nfunction Du(r) {\n return \"service\" in r.target ? r.target.service[0].type : r.target.source.type;\n}\nfunction Gu(r) {\n if (ii(r))\n return r.target.source.partOf;\n}\nfunction Fu(r) {\n return \"pixelCoords\" in r ? r.pixelCoords : r.resourceCoords;\n}\nfunction Uu(r) {\n return r.body.features.map((t) => ({\n resource: Fu(t.properties),\n geo: t.geometry.coordinates\n }));\n}\nfunction Wu(r) {\n if (ii(r))\n return {\n created: r.created,\n modified: r.modified\n };\n}\nfunction Vu(r) {\n if (ii(r))\n return {\n width: r.target.source.width,\n height: r.target.source.height\n };\n const e = r.target.selector.value, i = /width=\"(?<width>\\d+)\"/.exec(e), n = /height=\"(?<height>\\d+)\"/.exec(e), s = i?.groups?.width, o = n?.groups?.height;\n if (!s || !o)\n throw new Error(\"Could not parse image dimensions\");\n return {\n width: parseInt(s),\n height: parseInt(o)\n };\n}\nfunction zu(r) {\n const e = r.target.selector.value, n = /points=\"(?<points>.+)\"/.exec(e)?.groups;\n if (n && n.points) {\n const s = n.points.trim().split(/\\s+/);\n if (s[0] === s[s.length - 1] && s.splice(-1), s.length >= 3)\n return s.map((o) => {\n const a = o.split(\",\");\n if (a.length === 2)\n return [parseFloat(a[0]), parseFloat(a[1])];\n throw new Error(\"Could not parse resource mask\");\n });\n throw new Error(\"Could not parse resource mask\");\n } else\n throw new Error(\"Could not parse resource mask\");\n}\nfunction On(r) {\n return {\n \"@context\": \"https://schemas.allmaps.org/map/2/context.json\",\n type: \"GeoreferencedMap\",\n id: r.id,\n ...Wu(r),\n resource: ju(r),\n gcps: Uu(r),\n resourceMask: zu(r),\n transformation: r.body.transformation\n };\n}\nfunction Ni(r) {\n if (Lu(r)) {\n let t;\n return \"items\" in r && Array.isArray(r.items) && kn(r.items[0]) ? t = so.parse(r) : t = ao.parse(r), t.items.map((e) => On(e));\n } else {\n let t;\n return kn(r) ? t = tn.parse(r) : t = rn.parse(r), [On(t)];\n }\n}\nconst co = m.object({\n image: ee,\n world: ee\n}), Zu = m.object({\n uri: m.string().url(),\n width: m.number(),\n height: m.number(),\n type: Ye\n}), ni = m.object({\n id: m.string().optional(),\n version: m.number().min(1).max(1).default(1),\n image: Zu,\n gcps: co.array(),\n pixelMask: io,\n transformation: ti.optional()\n}), nn = m.array(ni), lo = m.object({\n resource: ee,\n geo: ee\n}), $u = m.object({\n id: m.string().url(),\n width: m.number(),\n height: m.number(),\n type: Ye,\n partOf: Qr.array().optional()\n}), si = m.object({\n \"@context\": m.literal(\"https://schemas.allmaps.org/map/2/context.json\").optional(),\n type: m.literal(\"GeoreferencedMap\"),\n id: m.string().optional(),\n created: m.string().datetime().optional(),\n modified: m.string().datetime().optional(),\n resource: $u,\n gcps: lo.array(),\n resourceMask: io,\n transformation: ti.optional()\n}), sn = m.array(si);\nni.or(si);\nnn.or(sn);\nco.or(lo);\nfunction qu(r) {\n let t, e, i;\n return ri(r) ? (t = r.resource.width, e = r.resource.height, i = r.resourceMask) : (t = r.image.width, e = r.image.height, i = r.pixelMask), {\n type: \"SvgSelector\",\n value: `<svg width=\"${t}\" height=\"${e}\"><polygon points=\"${i.map((n) => n.join(\",\")).join(\" \")}\" /></svg>`\n };\n}\nfunction Xu(r) {\n let t, e, i, n, s;\n return ri(r) ? (t = r.resource.id, e = r.resource.type, i = r.resource.width, n = r.resource.height, s = r.resource.partOf) : (t = r.image.uri, e = r.image.type, i = r.image.width, n = r.image.height), {\n id: t,\n type: e,\n height: n,\n width: i,\n partOf: s\n };\n}\nfunction Hu(r) {\n if (ri(r))\n return {\n created: r.created,\n modified: r.modified\n };\n}\nfunction Yu() {\n return [\n \"http://iiif.io/api/extension/georef/1/context.json\",\n \"http://iiif.io/api/presentation/3/context.json\"\n ];\n}\nfunction Ju(r) {\n let t, e;\n return \"resource\" in r ? (t = r.resource, e = r.geo) : (t = r.image, e = r.world), {\n type: \"Feature\",\n properties: {\n resourceCoords: t\n },\n geometry: {\n type: \"Point\",\n coordinates: e\n }\n };\n}\nfunction Nn(r) {\n const t = {\n type: \"SpecificResource\",\n source: Xu(r),\n selector: qu(r)\n }, e = {\n type: \"FeatureCollection\",\n transformation: r.transformation,\n features: r.gcps.map((i) => Ju(i))\n };\n return {\n id: r.id,\n type: \"Annotation\",\n \"@context\": Yu(),\n ...Hu(r),\n motivation: \"georeferencing\",\n target: t,\n body: e\n };\n}\nfunction Ku(r) {\n if (ho(r)) {\n let t;\n return Ur(r[0]) ? t = sn.parse(r) : t = nn.parse(r), {\n type: \"AnnotationPage\",\n \"@context\": \"http://www.w3.org/ns/anno.jsonld\",\n items: t.map((i) => Nn(i))\n };\n } else {\n let t;\n return Ur(r) ? t = si.parse(r) : t = ni.parse(r), Nn(t);\n }\n}\nfunction uo(r) {\n return ri(r) ? r : Ni(Ku(r))[0];\n}\nfunction Qu(r) {\n return r.map(uo);\n}\nfunction Ln(r) {\n if (ho(r)) {\n let t;\n return Ur(r[0]) ? t = sn.parse(r) : t = nn.parse(r), Qu(t);\n } else {\n let t;\n return Ur(r) ? t = si.parse(r) : t = ni.parse(r), uo(t);\n }\n}\nfunction td(r, t, e, i, n) {\n fo(r, t, e || 0, i || r.length - 1, n || ed);\n}\nfunction fo(r, t, e, i, n) {\n for (; i > e; ) {\n if (i - e > 600) {\n var s = i - e + 1, o = t - e + 1, a = Math.log(s), h = 0.5 * Math.exp(2 * a / 3), c = 0.5 * Math.sqrt(a * h * (s - h) / s) * (o - s / 2 < 0 ? -1 : 1), l = Math.max(e, Math.floor(t - o * h / s + c)), u = Math.min(i, Math.floor(t + (s - o) * h / s + c));\n fo(r, t, l, u, n);\n }\n var g = r[t], w = e, y = i;\n for (Me(r, e, t), n(r[i], g) > 0 && Me(r, e, i); w < y; ) {\n for (Me(r, w, y), w++, y--; n(r[w], g) < 0; )\n w++;\n for (; n(r[y], g) > 0; )\n y--;\n }\n n(r[e], g) === 0 ? Me(r, e, y) : (y++, Me(r, y, i)), y <= t && (e = y + 1), t <= y && (i = y - 1);\n }\n}\nfunction Me(r, t, e) {\n var i = r[t];\n r[t] = r[e], r[e] = i;\n}\nfunction ed(r, t) {\n return r < t ? -1 : r > t ? 1 : 0;\n}\nclass rd {\n constructor(t = 9) {\n this._maxEntries = Math.max(4, t), this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4)), this.clear();\n }\n all() {\n return this._all(this.data, []);\n }\n search(t) {\n let e = this.data;\n const i = [];\n if (!wr(t, e))\n return i;\n const n = this.toBBox, s = [];\n for (; e; ) {\n for (let o = 0; o < e.children.length; o++) {\n const a = e.children[o], h = e.leaf ? n(a) : a;\n wr(t, h) && (e.leaf ? i.push(a) : pi(t, h) ? this._all(a, i) : s.push(a));\n }\n e = s.pop();\n }\n return i;\n }\n collides(t) {\n let e = this.data;\n if (!wr(t, e))\n return !1;\n const i = [];\n for (; e; ) {\n for (let n = 0; n < e.children.length; n++) {\n const s = e.children[n], o = e.leaf ? this.toBBox(s) : s;\n if (wr(t, o)) {\n if (e.leaf || pi(t, o))\n return !0;\n i.push(s);\n }\n }\n e = i.pop();\n }\n return !1;\n }\n load(t) {\n if (!(t && t.length))\n return this;\n if (t.length < this._minEntries) {\n for (let i = 0; i < t.length; i++)\n this.insert(t[i]);\n return this;\n }\n let e = this._build(t.slice(), 0, t.length - 1, 0);\n if (!this.data.children.length)\n this.data = e;\n else if (this.data.height === e.height)\n this._splitRoot(this.data, e);\n else {\n if (this.data.height < e.height) {\n const i = this.data;\n this.data = e, e = i;\n }\n this._insert(e, this.data.height - e.height - 1, !0);\n }\n return this;\n }\n insert(t) {\n return t && this._insert(t, this.data.height - 1), this;\n }\n clear() {\n return this.data = fe([]), this;\n }\n remove(t, e) {\n if (!t)\n return this;\n let i = this.data;\n const n = this.toBBox(t), s = [], o = [];\n let a, h, c;\n for (; i || s.length; ) {\n if (i || (i = s.pop(), h = s[s.length - 1], a = o.pop(), c = !0), i.leaf) {\n const l = id(t, i.children, e);\n if (l !== -1)\n return i.children.splice(l, 1), s.push(i), this._condense(s), this;\n }\n !c && !i.leaf && pi(i, n) ? (s.push(i), o.push(a), a = 0, h = i, i = i.children[0]) : h ? (a++, i = h.children[a], c = !1) : i = null;\n }\n return this;\n }\n toBBox(t) {\n return t;\n }\n compareMinX(t, e) {\n return t.minX - e.minX;\n }\n compareMinY(t, e) {\n return t.minY - e.minY;\n }\n toJSON() {\n return this.data;\n }\n fromJSON(t) {\n return this.data = t, this;\n }\n _all(t, e) {\n const i = [];\n for (; t; )\n t.leaf ? e.push(...t.children) : i.push(...t.children), t = i.pop();\n return e;\n }\n _build(t, e, i, n) {\n const s = i - e + 1;\n let o = this._maxEntries, a;\n if (s <= o)\n return a = fe(t.slice(e, i + 1)), ce(a, this.toBBox), a;\n n || (n = Math.ceil(Math.log(s) / Math.log(o)), o = Math.ceil(s / Math.pow(o, n - 1))), a = fe([]), a.leaf = !1, a.height = n;\n const h = Math.ceil(s / o), c = h * Math.ceil(Math.sqrt(o));\n jn(t, e, i, c, this.compareMinX);\n for (let l = e; l <= i; l += c) {\n const u = Math.min(l + c - 1, i);\n jn(t, l, u, h, this.compareMinY);\n for (let g = l; g <= u; g += h) {\n const w = Math.min(g + h - 1, u);\n a.children.push(this._build(t, g, w, n - 1));\n }\n }\n return ce(a, this.toBBox), a;\n }\n _chooseSubtree(t, e, i, n) {\n for (; n.push(e), !(e.leaf || n.length - 1 === i); ) {\n let s = 1 / 0, o = 1 / 0, a;\n for (let h = 0; h < e.children.length; h++) {\n const c = e.children[h], l = fi(c), u = od(t, c) - l;\n u < o ? (o = u, s = l < s ? l : s, a = c) : u === o && l < s && (s = l, a = c);\n }\n e = a || e.children[0];\n }\n return e;\n }\n _insert(t, e, i) {\n const n = i ? t : this.toBBox(t), s = [], o = this._chooseSubtree(n, this.data, e, s);\n for (o.children.push(t), Pe(o, n); e >= 0 && s[e].children.length > this._maxEntries; )\n this._split(s, e), e--;\n this._adjustParentBBoxes(n, s, e);\n }\n // split overflowed node into two\n _split(t, e) {\n const i = t[e], n = i.children.length, s = this._minEntries;\n this._chooseSplitAxis(i, s, n);\n const o = this._chooseSplitIndex(i, s, n), a = fe(i.children.splice(o, i.children.length - o));\n a.height = i.height, a.leaf = i.leaf, ce(i, this.toBBox), ce(a, this.toBBox), e ? t[e - 1].children.push(a) : this._splitRoot(i, a);\n }\n _splitRoot(t, e) {\n this.data = fe([t, e]), this.data.height = t.height + 1, this.data.leaf = !1, ce(this.data, this.toBBox);\n }\n _chooseSplitIndex(t, e, i) {\n let n, s = 1 / 0, o = 1 / 0;\n for (let a = e; a <= i - e; a++) {\n const h = Ae(t, 0, a, this.toBBox), c = Ae(t, a, i, this.toBBox), l = ad(h, c), u = fi(h) + fi(c);\n l < s ? (s = l, n = a, o = u < o ? u : o) : l === s && u < o && (o = u, n = a);\n }\n return n || i - e;\n }\n // sorts node children by the best axis for split\n _chooseSplitAxis(t, e, i) {\n const n = t.leaf ? this.compareMinX : nd, s = t.leaf ? this.compareMinY : sd, o = this._allDistMargin(t, e, i, n), a = this._allDistMargin(t, e, i, s);\n o < a && t.children.sort(n);\n }\n // total margin of all possible split distributions where each node is at least m full\n _allDistMargin(t, e, i, n) {\n t.children.sort(n);\n const s = this.toBBox, o = Ae(t, 0, e, s), a = Ae(t, i - e, i, s);\n let h = yr(o) + yr(a);\n for (let c = e; c < i - e; c++) {\n const l = t.children[c];\n Pe(o, t.leaf ? s(l) : l), h += yr(o);\n }\n for (let c = i - e - 1; c >= e; c--) {\n const l = t.children[c];\n Pe(a, t.leaf ? s(l) : l), h += yr(a);\n }\n return h;\n }\n _adjustParentBBoxes(t, e, i) {\n for (let n = i; n >= 0; n--)\n Pe(e[n], t);\n }\n _condense(t) {\n for (let e = t.length - 1, i; e >= 0; e--)\n t[e].children.length === 0 ? e > 0 ? (i = t[e - 1].children, i.splice(i.indexOf(t[e]), 1)) : this.clear() : ce(t[e], this.toBBox);\n }\n}\nfunction id(r, t, e) {\n if (!e)\n return t.indexOf(r);\n for (let i = 0; i < t.length; i++)\n if (e(r, t[i]))\n return i;\n return -1;\n}\nfunction ce(r, t) {\n Ae(r, 0, r.children.length, t, r);\n}\nfunction Ae(r, t, e, i, n) {\n n || (n = fe(null)), n.minX = 1 / 0, n.minY = 1 / 0, n.maxX = -1 / 0, n.maxY = -1 / 0;\n for (let s = t; s < e; s++) {\n const o = r.children[s];\n Pe(n, r.leaf ? i(o) : o);\n }\n return n;\n}\nfunction Pe(r, t) {\n return r.minX = Math.min(r.minX, t.minX), r.minY = Math.min(r.minY, t.minY), r.maxX = Math.max(r.maxX, t.maxX), r.maxY = Math.max(r.maxY, t.maxY), r;\n}\nfunction nd(r, t) {\n return r.minX - t.minX;\n}\nfunction sd(r, t) {\n return r.minY - t.minY;\n}\nfunction fi(r) {\n return (r.maxX - r.minX) * (r.maxY - r.minY);\n}\nfunction yr(r) {\n return r.maxX - r.minX + (r.maxY - r.minY);\n}\nfunction od(r, t) {\n return (Math.max(t.maxX, r.maxX) - Math.min(t.minX, r.minX)) * (Math.max(t.maxY, r.maxY) - Math.min(t.minY, r.minY));\n}\nfunction ad(r, t) {\n const e = Math.max(r.minX, t.minX), i = Math.max(r.minY, t.minY), n = Math.min(r.maxX, t.maxX), s = Math.min(r.maxY, t.maxY);\n return Math.max(0, n - e) * Math.max(0, s - i);\n}\nfunction pi(r, t) {\n return r.minX <= t.minX && r.minY <= t.minY && t.maxX <= r.maxX && t.maxY <= r.maxY;\n}\nfunction wr(r, t) {\n return t.minX <= r.maxX && t.minY <= r.maxY && t.maxX >= r.minX && t.maxY >= r.minY;\n}\nfunction fe(r) {\n return {\n children: r,\n height: 1,\n leaf: !0,\n minX: 1 / 0,\n minY: 1 / 0,\n maxX: -1 / 0,\n maxY: -1 / 0\n };\n}\nfunction jn(r, t, e, i, n) {\n const s = [t, e];\n for (; s.length; ) {\n if (e = s.pop(), t = s.pop(), e - t <= i)\n continue;\n const o = t + Math.ceil((e - t) / i / 2) * i;\n td(r, o, t, e, n), s.push(t, o, o, e);\n }\n}\nfunction hd(r, t, e) {\n if (e === void 0 && (e = {}), !r)\n throw new Error(\"point is required\");\n if (!t)\n throw new Error(\"polygon is required\");\n var i = we(r), n = Dh(t), s = n.type, o = t.bbox, a = n.coordinates;\n if (o && cd(i, o) === !1)\n return !1;\n s === \"Polygon\" && (a = [a]);\n for (var h = !1, c = 0; c < a.length && !h; c++)\n if (Bn(i, a[c][0], e.ignoreBoundary)) {\n for (var l = !1, u = 1; u < a[c].length && !l; )\n Bn(i, a[c][u], !e.ignoreBoundary) && (l = !0), u++;\n l || (h = !0);\n }\n return h;\n}\nfunction Bn(r, t, e) {\n var i = !1;\n t[0][0] === t[t.length - 1][0] && t[0][1] === t[t.length - 1][1] && (t = t.slice(0, t.length - 1));\n for (var n = 0, s = t.length - 1; n < t.length; s = n++) {\n var o = t[n][0], a = t[n][1], h = t[s][0], c = t[s][1], l = r[1] * (o - h) + a * (h - r[0]) + c * (r[0] - o) === 0 && (o - r[0]) * (h - r[0]) <= 0 && (a - r[1]) * (c - r[1]) <= 0;\n if (l)\n return !e;\n var u = a > r[1] != c > r[1] && r[0] < (h - o) * (r[1] - a) / (c - a) + o;\n u && (i = !i);\n }\n return i;\n}\nfunction cd(r, t) {\n return t[0] <= r[0] && t[1] <= r[1] && t[2] >= r[0] && t[3] >= r[1];\n}\nconst ld = !0;\nclass ud {\n constructor() {\n this.rbush = new rd(), this.polygonsById = /* @__PURE__ */ new Map(), this.bboxesById = /* @__PURE__ */ new Map(), this.itemsById = /* @__PURE__ */ new Map();\n }\n addItem(t, e) {\n this.removeItem(t);\n const i = lt(e), n = {\n minX: i[0],\n minY: i[1],\n maxX: i[2],\n maxY: i[3],\n id: t\n };\n this.polygonsById.set(t, e), this.bboxesById.set(t, i), this.itemsById.set(t, n), this.rbush.insert(n);\n }\n removeItem(t) {\n const e = this.itemsById.get(t);\n e && (this.rbush.remove(e), this.polygonsById.delete(t), this.bboxesById.delete(t), this.itemsById.delete(t));\n }\n clear() {\n this.polygonsById.clear(), this.bboxesById.clear(), this.itemsById.clear(), this.rbush.clear();\n }\n search(t, e, i, n) {\n return this.rbush.search({\n minX: t,\n minY: e,\n maxX: i,\n maxY: n\n });\n }\n getBbox(t) {\n return this.bboxesById.get(t);\n }\n getPolygon(t) {\n return this.polygonsById.get(t);\n }\n searchFromBbox(t) {\n const [e, i, n, s] = t;\n return this.search(e, i, n, s).map((o) => o.id);\n }\n searchFromPoint(t, e = ld) {\n const [i, n, s, o] = [t[0], t[1], t[0], t[1]], a = this.search(i, n, s, o);\n return e ? a.filter((h) => {\n const c = this.polygonsById.get(h.id);\n return c ? hd(t, c) : !1;\n }).map((h) => h.id) : a.map((h) => h.id);\n }\n}\nclass dd extends EventTarget {\n /**\n * Creates an instance of WarpedMapList.\n *\n * @constructor\n * @param {?Cache} [imageInfoCache] - An image info cache\n * @param {?WarpedMapListOptions} [options] - Options\n */\n constructor(t, e) {\n super(), this.warpedMapsById = /* @__PURE__ */ new Map(), this.zIndices = /* @__PURE__ */ new Map(), e = Object.assign({ createRTree: !0 }, e), this.imageInfoCache = t, e.createRTree && (this.rtree = new ud());\n }\n /**\n * Returns mapIds for the maps in this list.\n *\n * @returns {Iterable<string>}\n */\n getMaps() {\n return this.warpedMapsById.keys();\n }\n getWarpedMaps(t) {\n if (t === void 0)\n return this.warpedMapsById.values();\n {\n const e = [];\n for (const i of t) {\n const n = this.warpedMapsById.get(i);\n n && e.push(n);\n }\n return e;\n }\n }\n /**\n * Returns the WarpedMap object in this list of map specified by a mapId.\n *\n * @param {string} mapId\n * @returns {(WarpedMap | undefined)}\n */\n getWarpedMap(t) {\n return this.warpedMapsById.get(t);\n }\n /**\n * Returns the zIndex of a map.\n *\n * @param {string} mapId\n * @returns {number | undefined}\n */\n getMapZIndex(t) {\n return this.zIndices.get(t);\n }\n /**\n * Return the bounding box of all visible maps in this list, in longitude/latitude coordinates\n *\n * @returns {(Bbox | undefined)}\n */\n getBbox() {\n let t;\n for (const e of this.getWarpedMaps())\n e.visible && (t ? t = yn(t, e.geoMaskBbox) : t = e.geoMaskBbox);\n return t;\n }\n /**\n * Return the bounding box of all visible maps in this list, in projected coordinates\n *\n * @returns {(Bbox | undefined)}\n */\n getProjectedBbox() {\n let t;\n for (const e of this.getWarpedMaps())\n e.visible && (t ? t = yn(t, e.projectedGeoMaskBbox) : t = e.projectedGeoMaskBbox);\n return t;\n }\n /**\n * Returns mapIds of the maps whose geoBbox overlaps with the specified geoBbox.\n *\n * @param {Bbox} geoBbox\n * @returns {Iterable<string>}\n */\n getMapsByGeoBbox(t) {\n return this.rtree ? this.rtree.searchFromBbox(t) : Array.from(this.warpedMapsById.keys());\n }\n /**\n * Sets the image info cache\n *\n * @param {Cache} cache - the image info cache\n */\n setImageInfoCache(t) {\n this.imageInfoCache = t;\n }\n /**\n * Sets the resource mask for a specified map\n *\n * @param {string} mapId - ID of the map\n * @param {Ring} resourceMask - the new resource mask\n */\n setMapResourceMask(t, e) {\n const i = this.warpedMapsById.get(t);\n i && (i.setResourceMask(e), this.addToOrUpdateRtree(i), this.dispatchEvent(new $(k.RESOURCEMASKUPDATED, t)));\n }\n /**\n * Sets the transformation type of specified maps\n *\n * @param {Iterable<string>} mapIds - the IDs of the maps\n * @param {TransformationType} transformationType - the new transformation type\n */\n setMapsTransformationType(t, e) {\n for (const i of t) {\n const n = this.warpedMapsById.get(i);\n n && (n.setTransformationType(e), this.addToOrUpdateRtree(n));\n }\n this.dispatchEvent(new $(k.TRANSFORMATIONCHANGED, t));\n }\n /**\n * Changes the zIndex of the specified maps to bring them to front\n *\n * @param {Iterable<string>} mapIds\n */\n bringMapsToFront(t) {\n let e = this.warpedMapsById.size;\n for (const i of t)\n this.zIndices.has(i) && (this.zIndices.set(i, e), e++);\n this.removeZIndexHoles(), this.dispatchEvent(new $(k.ZINDICESCHANGES));\n }\n /**\n * Changes the zIndex of the specified maps to send them to back\n *\n * @param {Iterable<string>} mapIds\n */\n sendMapsToBack(t) {\n let e = -Array.from(t).length;\n for (const i of t)\n this.zIndices.has(i) && (this.zIndices.set(i, e), e++);\n this.removeZIndexHoles(), this.dispatchEvent(new $(k.ZINDICESCHANGES));\n }\n /**\n * Changes the zIndex of the specified maps to bring them forward\n *\n * @param {Iterable<string>} mapIds\n */\n bringMapsForward(t) {\n for (const [e, i] of this.zIndices.entries())\n this.zIndices.set(e, i * 2);\n for (const e of t) {\n const i = this.zIndices.get(e);\n i !== void 0 && this.zIndices.set(e, i + 3);\n }\n this.removeZIndexHoles(), this.dispatchEvent(new $(k.ZINDICESCHANGES));\n }\n /**\n * Changes the zIndex of the specified maps to send them backward\n *\n * @param {Iterable<string>} mapIds\n */\n sendMapsBackward(t) {\n for (const [e, i] of this.zIndices.entries())\n this.zIndices.set(e, i * 2);\n for (const e of t) {\n const i = this.zIndices.get(e);\n i !== void 0 && this.zIndices.set(e, i - 3);\n }\n this.removeZIndexHoles(), this.dispatchEvent(new $(k.ZINDICESCHANGES));\n }\n /**\n * Changes the visibility of the specified maps to `true`\n *\n * @param {Iterable<string>} mapIds\n */\n showMaps(t) {\n for (const e of t) {\n const i = this.warpedMapsById.get(e);\n i && (i.visible = !0);\n }\n this.dispatchEvent(new $(k.VISIBILITYCHANGED, t));\n }\n /**\n * Changes the visibility of the specified maps to `false`\n *\n * @param {Iterable<string>} mapIds\n */\n hideMaps(t) {\n for (const e of t) {\n const i = this.warpedMapsById.get(e);\n i && (i.visible = !1);\n }\n this.dispatchEvent(new $(k.VISIBILITYCHANGED, t));\n }\n /**\n * Adds a georeferenced map to this list\n *\n * @async\n * @param {unknown} georeferencedMap\n * @returns {Promise<string | Error>}\n */\n async addGeoreferencedMap(t) {\n const e = Ln(t), i = Array.isArray(e) ? e[0] : e;\n return this.addGeoreferencedMapInternal(i);\n }\n /**\n * Removes a georeferenced map from this list\n *\n * @async\n * @param {unknown} georeferencedMap\n * @returns {Promise<string | Error>}\n */\n async removeGeoreferencedMap(t) {\n const e = Ln(t), i = Array.isArray(e) ? e[0] : e;\n return this.removeGeoreferencedMapInternal(i);\n }\n /**\n * Parses an annotation and adds its georeferenced map to this list\n *\n * @async\n * @param {unknown} annotation\n * @returns {Promise<(string | Error)[]>}\n */\n async addGeoreferenceAnnotation(t) {\n const e = [], i = Ni(t), n = await Promise.allSettled(i.map((s) => this.addGeoreferencedMapInternal(s)));\n for (const s of n)\n s.status === \"fulfilled\" ? e.push(s.value) : e.push(s.reason);\n return this.dispatchEvent(new $(k.GEOREFERENCEANNOTATIONADDED)), this.dispatchEvent(new $(k.ZINDICESCHANGES)), e;\n }\n /**\n * Parses an annotation and removes its georeferenced map from this list\n *\n * @async\n * @param {unknown} annotation\n * @returns {Promise<(string | Error)[]>}\n */\n async removeGeoreferenceAnnotation(t) {\n const e = [], i = Ni(t);\n for (const n of i) {\n const s = await this.removeGeoreferencedMapInternal(n);\n e.push(s);\n }\n return this.dispatchEvent(new $(k.GEOREFERENCEANNOTATIONREMOVED)), e;\n }\n clear() {\n this.warpedMapsById = /* @__PURE__ */ new Map(), this.zIndices = /* @__PURE__ */ new Map(), this.rtree?.clear(), this.dispatchEvent(new $(k.CLEARED));\n }\n dispose() {\n for (const t of this.getWarpedMaps())\n this.removeEventListenersFromWarpedMap(t), t.dispose();\n }\n async addGeoreferencedMapInternal(t) {\n const e = await this.getOrComputeMapId(t), i = new mu(e, t, this.imageInfoCache);\n return this.warpedMapsById.set(e, i), this.zIndices.set(e, this.warpedMapsById.size - 1), this.addToOrUpdateRtree(i), this.addEventListenersToWarpedMap(i), this.dispatchEvent(new $(k.WARPEDMAPADDED, e)), e;\n }\n async removeGeoreferencedMapInternal(t) {\n const e = await this.getOrComputeMapId(t), i = this.warpedMapsById.get(e);\n if (i)\n this.warpedMapsById.delete(e), this.zIndices.delete(e), this.removeFromRtree(i), this.dispatchEvent(new $(k.WARPEDMAPREMOVED, e)), this.removeZIndexHoles(), this.dispatchEvent(new $(k.ZINDICESCHANGES));\n else\n throw new Error(`No map found with ID ${e}`);\n return e;\n }\n async getOrComputeMapId(t) {\n return t.id || await Ro(t);\n }\n addToOrUpdateRtree(t) {\n this.rtree && (this.rtree.removeItem(t.mapId), this.rtree.addItem(t.mapId, t.geoMask));\n }\n removeFromRtree(t) {\n this.rtree && this.rtree.removeItem(t.mapId);\n }\n removeZIndexHoles() {\n const t = [...this.zIndices.entries()].sort((i, n) => i[1] - n[1]);\n let e = 0;\n for (const i of t) {\n const n = i[0];\n this.zIndices.set(n, e), e++;\n }\n }\n imageInfoLoaded() {\n this.dispatchEvent(new $(k.IMAGEINFOLOADED));\n }\n addEventListenersToWarpedMap(t) {\n t.addEventListener(k.IMAGEINFOLOADED, this.imageInfoLoaded.bind(this));\n }\n removeEventListenersFromWarpedMap(t) {\n t.removeEventListener(k.IMAGEINFOLOADED, this.imageInfoLoaded.bind(this));\n }\n}\nclass fd extends EventTarget {\n /**\n * Creates an instance of Viewport.\n *\n * @constructor\n * @param {Point} projectedGeoCenter - Center point of the viewport, in projected coordinates.\n * @param {Size} viewportSize - Size of the viewport in viewport pixels, as [width, height].\n * @param {number} rotation - Rotation of the viewport with respect to the project coordinate system.\n * @param {number} projectedGeoPerViewportScale - Resolution of the viewport, in projection coordinates per viewport pixel.\n * @param {number} [devicePixelRatio=1] - The devicePixelRatio of the viewport.\n */\n constructor(t, e, i, n, s = 1) {\n super(), this.projectedGeoToViewportTransform = [1, 0, 0, 1, 0, 0], this.projectedGeoToClipTransform = [1, 0, 0, 1, 0, 0], this.projectedGeoCenter = t, this.projectedGeoPerViewportScale = n, this.rotation = i, this.viewportSize = e, this.devicePixelRatio = s, this.projectedGeoRectangle = this.computeProjectedGeoRectangle(this.projectedGeoCenter, this.projectedGeoPerViewportScale, this.rotation, this.viewportSize), this.projectedGeoRectangleBbox = lt(this.projectedGeoRectangle), this.projectedGeoSize = [\n this.viewportSize[0] * n,\n this.viewportSize[1] * n\n ], this.geoCenter = xn(this.projectedGeoCenter), this.geoRectangle = this.projectedGeoRectangle.map((o) => xn(o)), this.geoRectangleBbox = lt(this.geoRectangle), this.geoSize = Ph(this.geoRectangleBbox), this.viewportCenter = [this.viewportSize[0] / 2, this.viewportSize[1] / 2], this.viewportBbox = [0, 0, ...this.viewportSize], this.viewportRectangle = Ve(this.viewportBbox), this.canvasCenter = [\n this.viewportCenter[0] * this.devicePixelRatio,\n this.viewportSize[1] * this.devicePixelRatio\n ], this.canvasSize = [\n this.viewportSize[0] * this.devicePixelRatio,\n this.viewportSize[1] * this.devicePixelRatio\n ], this.canvasBbox = [0, 0, ...this.canvasSize], this.canvasRectangle = Ve(this.canvasBbox), this.projectedGeoPerCanvasScale = this.projectedGeoPerViewportScale / this.devicePixelRatio, this.projectedGeoToViewportTransform = this.composeProjectedGeoToViewportTransform(), this.projectedGeoToClipTransform = this.composeProjectedGeoToClipTransform();\n }\n composeProjectedGeoToViewportTransform() {\n return Rn(this.viewportSize[0] / 2, this.viewportSize[1] / 2, 1 / this.projectedGeoPerViewportScale, -1 / this.projectedGeoPerViewportScale, -this.rotation, -this.projectedGeoCenter[0], -this.projectedGeoCenter[1]);\n }\n composeProjectedGeoToClipTransform() {\n return Rn(0, 0, 2 / (this.projectedGeoPerViewportScale * this.viewportSize[0]), 2 / (this.projectedGeoPerViewportScale * this.viewportSize[1]), -this.rotation, -this.projectedGeoCenter[0], -this.projectedGeoCenter[1]);\n }\n /** Returns a rotated rectangle in projected geo coordinates */\n computeProjectedGeoRectangle(t, e, i, n) {\n const s = e * n[0] / 2, o = e * n[1] / 2, a = Math.cos(i), h = Math.sin(i), c = s * a, l = s * h, u = o * a, g = o * h, w = t[0], y = t[1];\n return [\n [w - c + g, y - l - u],\n [w - c - g, y - l + u],\n [w + c - g, y + l + u],\n [w + c + g, y + l - u]\n ];\n }\n}\nclass pd extends EventTarget {\n /**\n * Creates an instance of CacheableTile.\n *\n * @constructor\n * @param {FetchableMapTile} fetchableMapTile\n */\n constructor(t) {\n super(), this.tile = t.tile, this.imageRequest = t.imageRequest, this.tileUrl = t.tileUrl, this.abortController = new AbortController();\n }\n /**\n * Fetch the tile and create its image bitmap.\n *\n * Returns and event when completed (or error).\n *\n * @async\n * @returns {Promise<ImageBitmap> | void}\n */\n async fetch() {\n try {\n const t = await uh(this.tileUrl, this.abortController.signal);\n return this.imageBitmap = await createImageBitmap(t), this.dispatchEvent(new $(k.TILEFETCHED, this.tileUrl)), this.imageBitmap;\n } catch (t) {\n t instanceof Error && t.name === \"AbortError\" || this.dispatchEvent(new $(k.TILEFETCHERROR, this.tileUrl));\n }\n }\n /**\n * Whether a tile has completed its caching\n * I.e. their fetching is completed and image bitmap is created\n *\n * @returns {cacheableTile is CachedTile}\n */\n isCachedTile() {\n return this.imageBitmap !== void 0;\n }\n /**\n * Abort the fetch\n */\n abort() {\n this.abortController.signal.aborted || this.abortController.abort();\n }\n}\nconst gd = 0.5;\nfunction po(r, t) {\n return `${r}:${t}`;\n}\nfunction go(r) {\n return po(r.mapId, r.tileUrl);\n}\nfunction gi(r) {\n return new Set(r.map((t) => go(t)));\n}\nfunction md(r, t, e = {\n maxOffsetRatio: 1e-5,\n maxDepth: 2\n}) {\n const i = Ih(t);\n return r.transformBackward(i, e)[0];\n}\nfunction yd(r, t, e = gd) {\n let i = Number.POSITIVE_INFINITY, n = r.tileZoomLevels.at(-1);\n for (const s of r.tileZoomLevels) {\n const o = Math.abs(Math.log(s.scaleFactor) - Math.log(t + e));\n o < i && (i = o, n = s);\n }\n return n;\n}\nfunction wd(r, t, e) {\n const i = vd(r, t), n = xd(i), s = bd(n, e, t), o = Ii(lt(r));\n return s.sort((a, h) => Dn(a, o) - Dn(h, o)), s;\n}\nfunction vd(r, t) {\n return r.map((e) => [\n e[0] / t.originalWidth,\n e[1] / t.originalHeight\n ]);\n}\nfunction xd(r) {\n const t = {};\n for (let e = 0; e < r.length; e++) {\n const i = [r[e], r[(e + 1) % r.length]];\n Td(i).forEach(([s, o]) => {\n t[s] || (t[s] = [Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY]), o < t[s][0] && (t[s][0] = o), o > t[s][1] && (t[s][1] = o);\n });\n }\n return t;\n}\nfunction Td([r, t]) {\n let e = Math.floor(r[0]), i = Math.floor(r[1]);\n const n = Math.floor(t[0]), s = Math.floor(t[1]), o = [[e, i]];\n if (e === n && i === s)\n return o;\n const a = Math.sign(t[0] - r[0]), h = Math.sign(t[1] - r[1]), c = Math.abs(r[0] - e - Math.max(0, a)), l = Math.abs(r[1] - i - Math.max(0, h)), u = Math.abs(r[0] - t[0]), g = Math.abs(r[1] - t[1]);\n let w = c / u, y = l / g;\n const _ = 1 / u, I = 1 / g;\n for (; !(e === n && i === s); )\n w < y ? (w = w + _, e = e + a) : (y = y + I, i = i + h), o.push([e, i]);\n return o;\n}\nfunction bd(r, t, e) {\n const i = [];\n for (const n in r) {\n const s = parseInt(n);\n if (s < 0 || s >= e.columns)\n break;\n const o = Math.max(r[s][0], 0), a = Math.min(r[s][1], e.rows - 1);\n for (let h = o; h <= a; h++)\n i.push({\n column: s,\n row: h,\n tileZoomLevel: e,\n imageSize: [t.width, t.height]\n });\n }\n return i;\n}\nfunction Md(r) {\n return (r.imageRequest.size?.height || 0) * (r.imageRequest.size?.width || 0) * 3;\n}\nfunction Dn(r, t) {\n return vt(_d(r), t);\n}\nfunction _d(r) {\n const t = mo(r);\n return [(t[2] - t[0]) / 2 + t[0], (t[3] - t[1]) / 2 + t[1]];\n}\nfunction Ed(r) {\n const t = r.column * r.tileZoomLevel.originalWidth, e = r.row * r.tileZoomLevel.originalHeight;\n return [t, e];\n}\nfunction mo(r) {\n const t = Ed(r), e = Math.min(t[0] + r.tileZoomLevel.originalWidth, r.imageSize[0]), i = Math.min(t[1] + r.tileZoomLevel.originalHeight, r.imageSize[1]);\n return [\n t[0],\n t[1],\n e,\n i\n ];\n}\nconst Id = 0, Sd = 32 * 1e3 * 1e3;\nclass Ad extends EventTarget {\n constructor() {\n super(...arguments), this.tilesByTileUrl = /* @__PURE__ */ new Map(), this.mapIdsByTileUrl = /* @__PURE__ */ new Map(), this.tileUrlsByMapId = /* @__PURE__ */ new Map(), this.tilesFetchingCount = 0, this.previousRequestedTiles = [], this.outgoingTilesHistory = [];\n }\n /**\n * Get a specific cacheable tile in this cache\n * I.e. independent of whether their fetching is completed and image bitmap is created\n *\n * @param {string} tileUrl - the url of the requested tile\n * @returns {(CacheableTile | undefined)}\n */\n getCacheableTile(t) {\n return this.tilesByTileUrl.get(t);\n }\n /**\n * Get a specific cached tile in this cache\n * I.e. with their fetching completed and image bitmap created\n *\n * @param {string} tileUrl - the url of the requested tile\n * @returns {(CachedTile | undefined)}\n */\n getCachedTile(t) {\n const e = this.tilesByTileUrl.get(t);\n if (e && e.isCachedTile())\n return e;\n }\n /**\n * Get the tiles in this cache (independent of whether their caching has completed)\n *\n * @returns {IterableIterator<CacheableTile>}\n */\n getCacheableTiles() {\n return this.tilesByTileUrl.values();\n }\n /**\n * Get the tiles in this cache whose caching has completed\n * I.e. their fetching is completed and image bitmap is created\n *\n * @returns {CacheableTile[]}\n */\n getCachedTiles() {\n const t = Array.from(this.tilesByTileUrl.values()), e = [];\n return t.forEach((i) => {\n i.isCachedTile() && e.push(i);\n }), e;\n }\n /**\n * Get the urls of all tiles in this cache\n *\n * @returns {IterableIterator<string>}\n */\n getTileUrls() {\n return this.tilesByTileUrl.keys();\n }\n /**\n * Process the request for new tiles to be added to this cache\n *\n * @param {FetchableMapTile[]} requestedTiles\n */\n requestFetcableMapTiles(t) {\n const e = gi(this.previousRequestedTiles), i = gi(t);\n if (Rh(e, i))\n return;\n const n = [];\n for (const a of this.previousRequestedTiles)\n i.has(go(a)) || n.push(a);\n this.updateOutgoingTilesHistory(n, t.length);\n const s = gi(this.outgoingTilesHistory), o = /* @__PURE__ */ new Set([\n ...i,\n ...s\n ]);\n for (const [a, h] of this.mapIdsByTileUrl)\n for (const c of h)\n o.has(po(c, a)) || this.removeMapTile(c, a);\n for (const a of t)\n this.addMapTile(a);\n this.previousRequestedTiles = t;\n }\n clear() {\n this.tilesByTileUrl = /* @__PURE__ */ new Map(), this.mapIdsByTileUrl = /* @__PURE__ */ new Map(), this.tileUrlsByMapId = /* @__PURE__ */ new Map(), this.tilesFetchingCount = 0, this.outgoingTilesHistory = [];\n }\n dispose() {\n for (const t of this.getCacheableTiles())\n this.removeEventListenersFromTile(t);\n }\n addMapTile(t) {\n const e = t.mapId, i = t.tileUrl;\n if (this.tilesByTileUrl.has(i))\n this.dispatchEvent(new $(k.MAPTILELOADED, {\n mapId: e,\n tileUrl: i\n }));\n else {\n const n = new pd(t);\n this.addEventListenersToTile(n), this.tilesByTileUrl.set(i, n), this.updateTilesFetchingCount(1), n.fetch();\n }\n this.addTileUrlForMapId(e, i), this.addMapIdForTileUrl(e, i);\n }\n removeMapTile(t, e) {\n const i = this.tilesByTileUrl.get(e);\n if (!i)\n return;\n const n = this.removeMapIdForTileUrl(t, e);\n this.removeTileUrlForMapId(t, e), n.size || (i.isCachedTile() || (i.abort(), this.updateTilesFetchingCount(-1)), this.tilesByTileUrl.delete(e)), this.dispatchEvent(new $(k.MAPTILEREMOVED, {\n mapId: t,\n tileUrl: e\n }));\n }\n updateOutgoingTilesHistory(t, e) {\n for (let o = t.length - 1; o >= 0; o--) {\n const a = t[o];\n this.outgoingTilesHistory.unshift(a);\n }\n this.outgoingTilesHistory = Array.from(new Set(this.outgoingTilesHistory));\n let i = 0, n = 0, s = 0;\n for (const o of this.outgoingTilesHistory) {\n if (i += 1, s = Md(o), n += s, i + e > Id) {\n i -= 1, n -= s;\n break;\n }\n if (n > Sd) {\n i -= 1, n -= s;\n break;\n }\n }\n this.outgoingTilesHistory = this.outgoingTilesHistory.slice(0, i);\n }\n tileFetched(t) {\n if (t instanceof $) {\n const e = t.data;\n this.updateTilesFetchingCount(-1);\n for (const i of this.mapIdsByTileUrl.get(e) || [])\n this.dispatchEvent(new $(k.MAPTILELOADED, {\n mapId: i,\n tileUrl: e\n })), this.tileUrlsByMapId.get(i)?.values().next().value === e && this.dispatchEvent(new $(k.FIRSTMAPTILELOADED, {\n mapId: i,\n tileUrl: e\n }));\n }\n }\n tileFetchError(t) {\n if (t instanceof $) {\n const e = t.data;\n this.tilesByTileUrl.has(e) || (this.updateTilesFetchingCount(-1), this.tilesByTileUrl.delete(e));\n }\n }\n addMapIdForTileUrl(t, e) {\n let i = this.mapIdsByTileUrl.get(e);\n return i ? i.add(t) : i = /* @__PURE__ */ new Set([t]), this.mapIdsByTileUrl.set(e, i), i;\n }\n removeMapIdForTileUrl(t, e) {\n const i = this.mapIdsByTileUrl.get(e);\n if (i)\n i.delete(t);\n else\n return /* @__PURE__ */ new Set();\n return i.size ? this.mapIdsByTileUrl.set(e, i) : this.mapIdsByTileUrl.delete(e), i;\n }\n addTileUrlForMapId(t, e) {\n let i = this.tileUrlsByMapId.get(t);\n return i ? i.add(e) : i = /* @__PURE__ */ new Set([e]), this.tileUrlsByMapId.set(t, i), i;\n }\n removeTileUrlForMapId(t, e) {\n const i = this.tileUrlsByMapId.get(t);\n return i ? (i.delete(e), i.size ? this.tileUrlsByMapId.set(t, i) : this.tileUrlsByMapId.delete(t), i) : /* @__PURE__ */ new Set();\n }\n updateTilesFetchingCount(t) {\n this.tilesFetchingCount += t, this.tilesFetchingCount === 0 && this.dispatchEvent(new $(k.ALLREQUESTEDTILESLOADED));\n }\n addEventListenersToTile(t) {\n t.addEventListener(k.TILEFETCHED, this.tileFetched.bind(this)), t.addEventListener(k.TILEFETCHERROR, this.tileFetchError.bind(this));\n }\n removeEventListenersFromTile(t) {\n t.removeEventListener(k.TILEFETCHED, this.tileFetched.bind(this)), t.removeEventListener(k.TILEFETCHERROR, this.tileFetchError.bind(this));\n }\n}\nclass Pd {\n /**\n * Creates an instance of FetchableMapTile.\n *\n * @constructor\n * @param {Tile} tile - the tile\n * @param {WarpedMapWithImageInfo} warpedMap - the warpedMap, which must have its image info so the tileUrl can be assigned\n */\n constructor(t, e) {\n this.mapId = e.mapId, this.tile = t;\n const i = e.parsedImage.getIiifTile(t.tileZoomLevel, t.column, t.row);\n this.imageRequest = i;\n const n = e.parsedImage.getImageUrl(i);\n this.tileUrl = n;\n }\n}\nvar Cd = typeof globalThis == \"object\" && globalThis && globalThis.Object === Object && globalThis;\nconst Rd = Cd;\nvar kd = typeof self == \"object\" && self && self.Object === Object && self, Od = Rd || kd || Function(\"return this\")();\nconst yo = Od;\nvar Nd = yo.Symbol;\nconst Wr = Nd;\nvar wo = Object.prototype, Ld = wo.hasOwnProperty, jd = wo.toString, _e = Wr ? Wr.toStringTag : void 0;\nfunction Bd(r) {\n var t = Ld.call(r, _e), e = r[_e];\n try {\n r[_e] = void 0;\n var i = !0;\n } catch {\n }\n var n = jd.call(r);\n return i && (t ? r[_e] = e : delete r[_e]), n;\n}\nvar Dd = Object.prototype, Gd = Dd.toString;\nfunction Fd(r) {\n return Gd.call(r);\n}\nvar Ud = \"[object Null]\", Wd = \"[object Undefined]\", Gn = Wr ? Wr.toStringTag : void 0;\nfunction Vd(r) {\n return r == null ? r === void 0 ? Wd : Ud : Gn && Gn in Object(r) ? Bd(r) : Fd(r);\n}\nfunction zd(r) {\n return r != null && typeof r == \"object\";\n}\nvar Zd = \"[object Symbol]\";\nfunction $d(r) {\n return typeof r == \"symbol\" || zd(r) && Vd(r) == Zd;\n}\nvar qd = /\\s/;\nfunction Xd(r) {\n for (var t = r.length; t-- && qd.test(r.charAt(t)); )\n ;\n return t;\n}\nvar Hd = /^\\s+/;\nfunction Yd(r) {\n return r && r.slice(0, Xd(r) + 1).replace(Hd, \"\");\n}\nfunction Vr(r) {\n var t = typeof r;\n return r != null && (t == \"object\" || t == \"function\");\n}\nvar Fn = 0 / 0, Jd = /^[-+]0x[0-9a-f]+$/i, Kd = /^0b[01]+$/i, Qd = /^0o[0-7]+$/i, tf = parseInt;\nfunction Un(r) {\n if (typeof r == \"number\")\n return r;\n if ($d(r))\n return Fn;\n if (Vr(r)) {\n var t = typeof r.valueOf == \"function\" ? r.valueOf() : r;\n r = Vr(t) ? t + \"\" : t;\n }\n if (typeof r != \"string\")\n return r === 0 ? r : +r;\n r = Yd(r);\n var e = Kd.test(r);\n return e || Qd.test(r) ? tf(r.slice(2), e ? 2 : 8) : Jd.test(r) ? Fn : +r;\n}\nvar ef = function() {\n return yo.Date.now();\n};\nconst mi = ef;\nvar rf = \"Expected a function\", nf = Math.max, sf = Math.min;\nfunction of(r, t, e) {\n var i, n, s, o, a, h, c = 0, l = !1, u = !1, g = !0;\n if (typeof r != \"function\")\n throw new TypeError(rf);\n t = Un(t) || 0, Vr(e) && (l = !!e.leading, u = \"maxWait\" in e, s = u ? nf(Un(e.maxWait) || 0, t) : s, g = \"trailing\" in e ? !!e.trailing : g);\n function w(A) {\n var C = i, E = n;\n return i = n = void 0, c = A, o = r.apply(E, C), o;\n }\n function y(A) {\n return c = A, a = setTimeout(v, t), l ? w(A) : o;\n }\n function _(A) {\n var C = A - h, E = A - c, d = t - C;\n return u ? sf(d, s - E) : d;\n }\n function I(A) {\n var C = A - h, E = A - c;\n return h === void 0 || C >= t || C < 0 || u && E >= s;\n }\n function v() {\n var A = mi();\n if (I(A))\n return S(A);\n a = setTimeout(v, _(A));\n }\n function S(A) {\n return a = void 0, g && i ? w(A) : (i = n = void 0, o);\n }\n function f() {\n a !== void 0 && clearTimeout(a), c = 0, i = h = n = a = void 0;\n }\n function p() {\n return a === void 0 ? o : S(mi());\n }\n function T() {\n var A = mi(), C = I(A);\n if (i = arguments, n = this, h = A, C) {\n if (a === void 0)\n return y(h);\n if (u)\n return clearTimeout(a), a = setTimeout(v, t), w(h);\n }\n return a === void 0 && (a = setTimeout(v, t)), o;\n }\n return T.cancel = f, T.flush = p, T;\n}\nvar af = \"Expected a function\";\nfunction Li(r, t, e) {\n var i = !0, n = !0;\n if (typeof r != \"function\")\n throw new TypeError(af);\n return Vr(e) && (i = \"leading\" in e ? !!e.leading : i, n = \"trailing\" in e ? !!e.trailing : n), of(r, t, {\n leading: i,\n maxWait: t,\n trailing: n\n });\n}\nfunction hf(r) {\n let t = 0, e = 0;\n for (const a of r)\n t += a.w * a.h, e = Math.max(e, a.w);\n r.sort((a, h) => h.h - a.h);\n const n = [{ x: 0, y: 0, w: Math.max(Math.ceil(Math.sqrt(t / 0.95)), e), h: 1 / 0 }];\n let s = 0, o = 0;\n for (const a of r)\n for (let h = n.length - 1; h >= 0; h--) {\n const c = n[h];\n if (!(a.w > c.w || a.h > c.h)) {\n if (a.x = c.x, a.y = c.y, o = Math.max(o, a.y + a.h), s = Math.max(s, a.x + a.w), a.w === c.w && a.h === c.h) {\n const l = n.pop();\n h < n.length && (n[h] = l);\n } else\n a.h === c.h ? (c.x += a.w, c.w -= a.w) : a.w === c.w ? (c.y += a.h, c.h -= a.h) : (n.push({\n x: c.x + a.w,\n y: c.y,\n w: c.w - a.w,\n h: a.h\n }), c.y += a.h, c.h -= a.h);\n break;\n }\n }\n return {\n w: s,\n // container width\n h: o,\n // container height\n fill: t / (s * o) || 0\n // space utilization\n };\n}\nfunction Wn(r, t, e) {\n const i = r.createShader(t);\n if (i) {\n if (r.shaderSource(i, e), r.compileShader(i), r.getShaderParameter(i, r.COMPILE_STATUS))\n return i;\n {\n const s = r.getShaderInfoLog(i);\n throw r.deleteShader(i), new Error(\"Failed to compile shader: \" + s);\n }\n } else\n throw new Error(\"Failed to create shader\");\n}\nfunction cf(r, t, e) {\n const i = r.createProgram();\n if (i) {\n if (r.attachShader(i, t), r.attachShader(i, e), r.linkProgram(i), r.getProgramParameter(i, r.LINK_STATUS))\n return i;\n {\n const s = r.getProgramInfoLog(i);\n throw r.deleteProgram(i), new Error(\"Failed to link program: \" + s);\n }\n } else\n throw new Error(\"Failed to create program\");\n}\nfunction vr(r, t, e, i, n) {\n const s = r.createBuffer();\n r.bindBuffer(r.ARRAY_BUFFER, s), r.bufferData(r.ARRAY_BUFFER, e, r.STATIC_DRAW);\n const o = r.FLOAT, a = !1, h = 0, c = 0, l = r.getAttribLocation(t, n);\n r.vertexAttribPointer(l, i, o, a, h, c), r.enableVertexAttribArray(l);\n}\nconst lf = 100, uf = {\n leading: !0,\n trailing: !0\n}, df = 1, ff = 1;\nclass pf extends EventTarget {\n /**\n * Creates an instance of WebGL2WarpedMap.\n *\n * @constructor\n * @param {WebGL2RenderingContext} gl - the WebGL2 rendering context\n * @param {WebGLProgram} program - the WebGL2 program\n * @param {WarpedMap} warpedMap - the warped map to render\n */\n constructor(t, e, i) {\n super(), this.CachedTilesByTileUrl = /* @__PURE__ */ new Map(), this.opacity = df, this.saturation = ff, this.renderOptions = {}, this.warpedMap = i, this.gl = t, this.program = e, this.vao = t.createVertexArray(), this.packedTilesTexture = t.createTexture(), this.packedTilesScaleFactorsTexture = t.createTexture(), this.packedTilesPositionsTexture = t.createTexture(), this.packedTilesResourcePositionsAndDimensionsTexture = t.createTexture(), this.throttledUpdateTextures = Li(this.updateTextures.bind(this), lf, uf);\n }\n /**\n * Update the vertex buffers of this warped map\n *\n * @param {Transform} projectedGeoToClipTransform - Transform from projected geo coordinates to webgl2 coordinates in the [-1, 1] range. Equivalent to OpenLayer projectionTransform.\n */\n updateVertexBuffers(t) {\n this.projectedGeoToClipTransform = t, this.updateVertexBuffersInternal();\n }\n /**\n * Add cached tile to the textures of this map and update textures\n *\n * @param {CachedTile} cachedTile\n */\n addCachedTileAndUpdateTextures(t) {\n this.CachedTilesByTileUrl.set(t.tileUrl, t), this.throttledUpdateTextures();\n }\n /**\n * Remove cached tile from the textures of this map and update textes\n *\n * @param {string} tileUrl\n */\n removeCachedTileAndUpdateTextures(t) {\n this.CachedTilesByTileUrl.delete(t), this.throttledUpdateTextures();\n }\n dispose() {\n this.gl.deleteVertexArray(this.vao), this.gl.deleteTexture(this.packedTilesTexture), this.gl.deleteTexture(this.packedTilesScaleFactorsTexture), this.gl.deleteTexture(this.packedTilesPositionsTexture), this.gl.deleteTexture(this.packedTilesResourcePositionsAndDimensionsTexture);\n }\n updateVertexBuffersInternal() {\n if (!this.vao || !this.projectedGeoToClipTransform)\n return;\n this.gl.bindVertexArray(this.vao);\n const t = this.warpedMap.resourceTrianglePoints;\n vr(this.gl, this.program, new Float32Array(t.flat()), 2, \"a_resourceTrianglePoint\");\n const e = this.warpedMap.projectedGeoCurrentTrianglePoints.map((s) => pe(this.projectedGeoToClipTransform, s));\n vr(this.gl, this.program, new Float32Array(e.flat()), 2, \"a_clipCurrentTrianglePoint\");\n const i = this.warpedMap.projectedGeoNewTrianglePoints.map((s) => pe(this.projectedGeoToClipTransform, s));\n vr(this.gl, this.program, new Float32Array(i.flat()), 2, \"a_clipNewTrianglePoint\");\n let n = new Float32Array(this.warpedMap.resourceTrianglePoints.length);\n n = n.map((s, o) => Math.round((o - 1) / 3)), vr(this.gl, this.program, n, 1, \"a_triangleIndex\");\n }\n async updateTextures() {\n const t = this.gl;\n if (this.CachedTilesByTileUrl.size === 0)\n return;\n let e = [...this.CachedTilesByTileUrl.values()];\n e = e.filter((l) => this.warpedMap.resourceViewportRingBbox ? Eh(mo(l.tile), this.warpedMap.resourceViewportRingBbox) : !0);\n const i = e.length, n = e.map((l, u) => ({\n w: l.imageBitmap.width,\n h: l.imageBitmap.height,\n // Calling potpack will add x and y properties\n // with the position of the tile's origin in the pack\n // By adding them here already, we'll make TypeScript happy!\n x: 0,\n y: 0,\n index: u\n })), { w: s, h: o } = hf(n);\n t.pixelStorei(t.UNPACK_ALIGNMENT, 4), t.bindTexture(t.TEXTURE_2D, this.packedTilesTexture), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, s, o, 0, t.RGBA, t.UNSIGNED_BYTE, null);\n for (const l of n) {\n const u = e[l.index].imageBitmap;\n t.texSubImage2D(t.TEXTURE_2D, 0, l.x, l.y, u.width, u.height, t.RGBA, t.UNSIGNED_BYTE, u);\n }\n t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.LINEAR), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, t.LINEAR), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.CLAMP_TO_EDGE), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.CLAMP_TO_EDGE);\n const a = n.map((l) => [\n l.x,\n l.y\n ]);\n t.bindTexture(t.TEXTURE_2D, this.packedTilesPositionsTexture), t.texImage2D(t.TEXTURE_2D, 0, t.RG32I, 1, i, 0, t.RG_INTEGER, t.INT, new Int32Array(a.flat())), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.NEAREST), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, t.NEAREST), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.CLAMP_TO_EDGE), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.CLAMP_TO_EDGE);\n const h = n.map((l) => {\n const u = e[l.index];\n if (u && u.imageRequest && u.imageRequest.region)\n return [\n u.imageRequest.region.x,\n u.imageRequest.region.y,\n u.imageRequest.region.width,\n u.imageRequest.region.height\n ];\n });\n t.bindTexture(t.TEXTURE_2D, this.packedTilesResourcePositionsAndDimensionsTexture), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA32I, 1, i, 0, t.RGBA_INTEGER, t.INT, new Int32Array(h.flat())), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.NEAREST), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, t.NEAREST), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.CLAMP_TO_EDGE), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.CLAMP_TO_EDGE);\n const c = n.map(({ index: l }) => e[l].tile.tileZoomLevel.scaleFactor);\n t.bindTexture(t.TEXTURE_2D, this.packedTilesScaleFactorsTexture), t.texImage2D(t.TEXTURE_2D, 0, t.R32I, 1, i, 0, t.RED_INTEGER, t.INT, new Int32Array(c)), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.NEAREST), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, t.NEAREST), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.CLAMP_TO_EDGE), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.CLAMP_TO_EDGE), this.dispatchEvent(new $(k.TEXTURESUPDATED));\n }\n}\nconst gf = `#version 300 es\n\nprecision highp float;\n\nuniform mat4 u_renderTransform;\n\nuniform float u_animationProgress;\n\nin vec2 a_resourceTrianglePoint;\nin vec2 a_clipCurrentTrianglePoint;\nin vec2 a_clipNewTrianglePoint;\nin float a_triangleIndex;\n\nout vec2 v_resourceTrianglePoint;\nout float v_triangleIndex;\n\nfloat cubicInOut(float t) {\n return t < 0.5f ? 4.0f * t * t * t : 0.5f * pow(2.0f * t - 2.0f, 3.0f) + 1.0f;\n}\n\nvoid main() {\n // Pass attributes as varyings to fragment shader\n v_resourceTrianglePoint = a_resourceTrianglePoint;\n v_triangleIndex = a_triangleIndex;\n\n // Compute triangle vertex coordinates by mixing current and new\n vec2 clipTrianglePoint = mix(a_clipCurrentTrianglePoint, a_clipNewTrianglePoint, cubicInOut(u_animationProgress));\n\n // Set triangle points coordinates\n // Variables that start with gl_ are special globalThis variables\n // gl_Position stores the vertex (or 'point') positions (or 'coordinates') in clip coordinates (which go from -1 to 1.)\n\n gl_Position = u_renderTransform * vec4(clipTrianglePoint, 0.0f, 1.0f);\n}\n`, mf = `#version 300 es\n\nprecision highp float;\nprecision highp isampler2D;\n\nuniform bool u_removeColor;\nuniform vec3 u_removeColorOptionsColor;\nuniform float u_removeColorOptionsThreshold;\nuniform float u_removeColorOptionsHardness;\n\nuniform bool u_colorize;\nuniform vec3 u_colorizeOptionsColor;\n\nuniform float u_opacity;\nuniform float u_saturation;\n\nuniform int u_bestScaleFactor;\n\nuniform sampler2D u_packedTilesTexture;\nuniform isampler2D u_packedTilesPositionsTexture;\nuniform isampler2D u_packedTilesResourcePositionsAndDimensionsTexture;\nuniform isampler2D u_packedTilesScaleFactorsTexture;\n\nin vec2 v_resourceTrianglePoint;\nin float v_triangleIndex;\n\nout vec4 color;\n\nvoid main() {\n // The treated triangle point\n int resourceTrianglePointX = int(round(v_resourceTrianglePoint.x));\n int resourceTrianglePointY = int(round(v_resourceTrianglePoint.y));\n\n // Reading information on packed tiles from textures\n int packedTilesCount = textureSize(u_packedTilesPositionsTexture, 0).y;\n ivec2 packedTilesTextureSize = textureSize(u_packedTilesTexture, 0);\n\n // Setting references for the for loop\n int smallestScaleFactorDiff = 256 * 256; // Starting with very high number\n int bestScaleFactor = 0;\n\n // Prepare storage for the resulting packed tiles texture point that corresponds to the treated triangle point\n vec2 packedTilesTexturePoint = vec2(0.0f, 0.0f);\n\n color = vec4(0.0f, 0.0f, 0.0f, 0.0f);\n\n bool found = false;\n\n // Loop through all packed tiles\n for(int index = 0; index < packedTilesCount; index += 1) {\n\n // Read the information of the tile\n ivec2 packedTilePosition = texelFetch(u_packedTilesPositionsTexture, ivec2(0, index), 0).rg;\n ivec4 packedTileResourcePositionAndDimension = texelFetch(u_packedTilesResourcePositionsAndDimensionsTexture, ivec2(0, index), 0);\n int packedTileScaleFactor = texelFetch(u_packedTilesScaleFactorsTexture, ivec2(0, index), 0).r;\n\n float packedTilePositionX = float(packedTilePosition.r);\n float packedTilePositionY = float(packedTilePosition.g);\n\n int packedTileResourcePositionX = packedTileResourcePositionAndDimension.r;\n int packedTileResourcePositionY = packedTileResourcePositionAndDimension.g;\n\n int packedTileDimensionWidth = packedTileResourcePositionAndDimension.b;\n int packedTileDimensionHeight = packedTileResourcePositionAndDimension.a;\n\n // If the treated triangle point is inside the tile, consider to use the tile:\n // if the scale factor is closer to the best scale factor for this map then currently known one\n // update the smallest scale factor diff\n // and compute the packed tiles texture point that corresponds to the treated triangle point\n if(resourceTrianglePointX >= packedTileResourcePositionX &&\n resourceTrianglePointX < packedTileResourcePositionX + packedTileDimensionWidth &&\n resourceTrianglePointY >= packedTileResourcePositionY &&\n resourceTrianglePointY < packedTileResourcePositionY + packedTileDimensionHeight) {\n found = true;\n\n int scaleFactorDiff = abs(u_bestScaleFactor - packedTileScaleFactor);\n\n if(scaleFactorDiff < smallestScaleFactorDiff || bestScaleFactor == 0) {\n\n smallestScaleFactorDiff = scaleFactorDiff;\n bestScaleFactor = packedTileScaleFactor;\n\n float packedTilePointX = float(resourceTrianglePointX - packedTileResourcePositionX) / float(bestScaleFactor);\n float packedTilePointY = float(resourceTrianglePointY - packedTileResourcePositionY) / float(bestScaleFactor);\n\n float packedTilesPointX = packedTilePositionX + packedTilePointX;\n float packedTilesPointY = packedTilePositionY + packedTilePointY;\n\n float packedTilesTexturePointX = round(packedTilesPointX) / float(packedTilesTextureSize.x);\n float packedTilesTexturePointY = round(packedTilesPointY) / float(packedTilesTextureSize.y);\n\n packedTilesTexturePoint = vec2(packedTilesTexturePointX, packedTilesTexturePointY);\n }\n }\n }\n\n if(found == true) {\n // Read color of the treated point at its packed tiles texture point coordinates in the packed tiles texture\n color = texture(u_packedTilesTexture, packedTilesTexturePoint);\n\n // Remove background color\n if(u_removeColorOptionsThreshold > 0.0f) {\n vec3 backgroundColorDiff = color.rgb - u_removeColorOptionsColor.rgb;\n float backgroundColorDistance = length(backgroundColorDiff);\n if(u_removeColor && backgroundColorDistance < u_removeColorOptionsThreshold) {\n float amount = smoothstep(u_removeColorOptionsThreshold - u_removeColorOptionsThreshold * (1.0f - u_removeColorOptionsHardness), u_removeColorOptionsThreshold, backgroundColorDistance);\n color = vec4(color.rgb * amount, amount);\n }\n }\n\n // Saturation\n float gray = 0.21f * color.r + 0.71f * color.g + 0.07f * color.b;\n color = vec4(color.rgb * (u_saturation) + (gray * (1.0f - u_saturation)), color.a);\n\n // Colorize\n if(u_colorize) {\n color = vec4((u_colorizeOptionsColor + color.rgb) * color.a, color.a);\n }\n\n // Opacity\n color = vec4(color.rgb * u_opacity, color.a * u_opacity);\n\n // Debugging: uncomment to override color of the treated point with a color made from the point's triangle index\n // vec4 debugColor = vec4(abs(sin(v_triangleIndex)), abs(sin(v_triangleIndex + 1.0f)), abs(sin(v_triangleIndex + 2.0f)), 1);\n // color = debugColor;\n }\n}\n`, yf = 500, wf = {\n leading: !0,\n trailing: !0\n}, vf = 50, xf = {\n leading: !0,\n trailing: !0\n}, yi = 1, wi = 1, Tf = 0, bf = 0.7, Mf = 5, _f = 5, Vn = 750;\nclass Ef extends EventTarget {\n /**\n * Creates an instance of WebGL2Renderer.\n *\n * @constructor\n * @param {WebGL2RenderingContext} gl - the WebGL2 rendering context\n * @param {WarpedMapList} warpedMapList - the list of warped maps to render\n */\n constructor(t, e) {\n super(), this.webgl2WarpedMapsById = /* @__PURE__ */ new Map(), this.tileCache = new Ad(), this.mapsInViewport = /* @__PURE__ */ new Set(), this.opacity = yi, this.saturation = wi, this.renderOptions = {}, this.animating = !1, this.animationProgress = 1, this.warpedMapList = e, this.gl = t;\n const i = Wn(t, t.VERTEX_SHADER, gf), n = Wn(t, t.FRAGMENT_SHADER, mf);\n this.program = cf(t, i, n), t.deleteShader(i), t.deleteShader(n), t.disable(t.DEPTH_TEST), this.invertedRenderTransform = au(), this.addEventListeners(), this.throttledPrepareRenderInternal = Li(this.prepareRenderInternal.bind(this), yf, wf), this.throttledChanged = Li(this.changed.bind(this), vf, xf);\n }\n /**\n * Get the opacity of the renderer\n *\n * @returns {(number | undefined)}\n */\n getOpacity() {\n return this.opacity;\n }\n /**\n * Set the opacity of the renderer\n *\n * @param {number} opacity - opacity to set\n */\n setOpacity(t) {\n this.opacity = t;\n }\n /**\n * Reset the opacity of the renderer\n */\n resetOpacity() {\n this.opacity = yi;\n }\n /**\n * Get the opacity of a map\n *\n * @param {string} mapId - ID of the map\n * @returns {(number | undefined)}\n */\n getMapOpacity(t) {\n const e = this.webgl2WarpedMapsById.get(t);\n if (e)\n return e.opacity;\n }\n /**\n * Set the opacity of a map\n *\n * @param {string} mapId - ID of the map\n * @param {number} opacity - opacity to set\n */\n setMapOpacity(t, e) {\n const i = this.webgl2WarpedMapsById.get(t);\n i && (i.opacity = Math.min(Math.max(e, 0), 1));\n }\n /**\n * Rreset the opacity of a map\n *\n * @param {string} mapId - ID of the map\n */\n resetMapOpacity(t) {\n const e = this.webgl2WarpedMapsById.get(t);\n e && (e.opacity = yi);\n }\n /**\n * Get the remove color options of the renderer\n *\n * @returns {(Partial<RemoveColorOptions> | undefined)}\n */\n getRemoveColorOptions() {\n return this.renderOptions.removeColorOptions;\n }\n /**\n * Set the remove color options of the renderer\n *\n * @param {RemoveColorOptions} removeColorOptions\n */\n setRemoveColorOptions(t) {\n this.renderOptions.removeColorOptions = t;\n }\n /**\n * Reset the remove color options of the renderer\n */\n resetRemoveColorOptions() {\n this.renderOptions.removeColorOptions = void 0;\n }\n /**\n * Get the remove color options of a map\n *\n * @param {string} mapId - ID of the map\n * @returns {(Partial<RemoveColorOptions> | undefined)}\n */\n getMapRemoveColorOptions(t) {\n const e = this.webgl2WarpedMapsById.get(t);\n if (e)\n return e.renderOptions.removeColorOptions;\n }\n /**\n * Set the remove color options of a map\n *\n * @param {string} mapId - ID of the map\n * @param {RemoveColorOptions} removeColorOptions - the 'remove color options' to set\n */\n setMapRemoveColorOptions(t, e) {\n const i = this.webgl2WarpedMapsById.get(t);\n i && (i.renderOptions.removeColorOptions = e);\n }\n /**\n * Reset the remove color options of a map\n *\n * @param {string} mapId - ID of the map\n */\n resetMapRemoveColorOptions(t) {\n const e = this.webgl2WarpedMapsById.get(t);\n e && (e.renderOptions.removeColorOptions = void 0);\n }\n /**\n * Get the colorize options of the renderer\n *\n * @returns {(Partial<ColorizeOptions> | undefined)}\n */\n getColorizeOptions() {\n return this.renderOptions.colorizeOptions;\n }\n /**\n * Set the colorize options of the renderer\n *\n * @param {ColorizeOptions} colorizeOptions - the colorize options to set\n */\n setColorizeOptions(t) {\n this.renderOptions.colorizeOptions = t;\n }\n /**\n * Reset the colorize options of the renderer\n */\n resetColorizeOptions() {\n this.renderOptions.colorizeOptions = void 0;\n }\n /**\n * Get the colorize options of a map\n *\n * @param {string} mapId - ID of the map\n * @returns {(Partial<ColorizeOptions> | undefined)}\n */\n getMapColorizeOptions(t) {\n const e = this.webgl2WarpedMapsById.get(t);\n if (e)\n return e.renderOptions.colorizeOptions;\n }\n /**\n * Set the colorize options of a map\n *\n * @param {string} mapId - ID of the map\n * @param {ColorizeOptions} colorizeOptions - the colorize options to set\n */\n setMapColorizeOptions(t, e) {\n const i = this.webgl2WarpedMapsById.get(t);\n i && (i.renderOptions.colorizeOptions = e);\n }\n /**\n * Reset the colorize options of a map\n *\n * @param {string} mapId - ID of the map\n */\n resetMapColorizeOptions(t) {\n const e = this.webgl2WarpedMapsById.get(t);\n e && (e.renderOptions.colorizeOptions = void 0);\n }\n /**\n * Get the saturation of the renderer\n *\n * @returns {number}\n */\n getSaturation() {\n return this.saturation;\n }\n /**\n * Set the saturation of the renderer\n *\n * 0 - grayscale, 1 - original colors\n *\n * @param saturation - the satuation to set\n */\n setSaturation(t) {\n this.saturation = t;\n }\n /**\n * Reset the satuation of the renderer\n */\n resetSaturation() {\n this.saturation = wi;\n }\n /**\n * Get the saturation of a map\n *\n * @param {string} mapId - ID of the map\n * @returns {(number | undefined)}\n */\n getMapSaturation(t) {\n const e = this.webgl2WarpedMapsById.get(t);\n if (e)\n return e.saturation;\n }\n /**\n * Set the saturation of a map\n *\n * 0 - grayscale, 1 - original colors\n *\n * @param mapId - ID of the map\n * @param saturation - the saturation to set\n */\n setMapSaturation(t, e) {\n const i = this.webgl2WarpedMapsById.get(t);\n i && (i.saturation = e);\n }\n /**\n * Reset the saturation of a map\n *\n * @param {string} mapId - ID of the map\n */\n resetMapSaturation(t) {\n const e = this.webgl2WarpedMapsById.get(t);\n e && (e.saturation = wi);\n }\n /**\n * Render the map for a given viewport\n *\n * @param {Viewport} viewport - the current viewport\n */\n render(t) {\n this.viewport = t, this.checkAndLoadImageInfos() && this.throttledPrepareRenderInternal(), this.renderInternal();\n }\n clear() {\n this.warpedMapList.clear(), this.webgl2WarpedMapsById = /* @__PURE__ */ new Map(), this.mapsInViewport = /* @__PURE__ */ new Set(), this.gl.clear(this.gl.DEPTH_BUFFER_BIT | this.gl.COLOR_BUFFER_BIT), this.tileCache.clear();\n }\n dispose() {\n for (const t of this.webgl2WarpedMapsById.values())\n this.removeEventListenersFromWebGL2WarpedMap(t), t.dispose();\n this.tileCache.clear(), this.tileCache.dispose(), this.removeEventListeners(), this.gl.deleteProgram(this.program);\n }\n startTransformationTransition() {\n this.lastAnimationFrameRequestId !== void 0 && cancelAnimationFrame(this.lastAnimationFrameRequestId), this.animating = !0, this.transformationTransitionStart = void 0, this.lastAnimationFrameRequestId = requestAnimationFrame(this.transformationTransitionFrame.bind(this));\n }\n transformationTransitionFrame(t) {\n if (this.transformationTransitionStart || (this.transformationTransitionStart = t), t - this.transformationTransitionStart < Vn)\n this.animationProgress = (t - this.transformationTransitionStart) / Vn, this.renderInternal(), this.lastAnimationFrameRequestId = requestAnimationFrame(this.transformationTransitionFrame.bind(this));\n else {\n for (const e of this.warpedMapList.getWarpedMaps())\n e.resetCurrentTrianglePoints();\n this.updateVertexBuffers(), this.animating = !1, this.animationProgress = 0, this.transformationTransitionStart = void 0;\n }\n }\n checkAndLoadImageInfos() {\n return this.viewport ? Array.from(this.warpedMapList.getMapsByGeoBbox(this.viewport.geoRectangleBbox)).map((e) => this.warpedMapList.getWarpedMap(e)).map((e) => e.hasImageInfo() ? !0 : (e.loadingImageInfo || e.loadImageInfo(), !1)).some((e) => e === !0) : !1;\n }\n prepareRenderInternal() {\n this.updateRequestedTiles(), this.updateVertexBuffers();\n }\n updateRequestedTiles() {\n if (!this.viewport || !this.viewportMovedSignificantly() || this.animating)\n return;\n const t = Array.from(this.warpedMapList.getMapsByGeoBbox(this.viewport.geoRectangleBbox)).sort((i, n) => vt(Ii(this.warpedMapList.getWarpedMap(i).geoMaskBbox), this.viewport.geoCenter) - vt(Ii(this.warpedMapList.getWarpedMap(n).geoMaskBbox), this.viewport.geoCenter)), e = [];\n for (const i of t) {\n const n = this.warpedMapList.getWarpedMap(i);\n if (!n || !n.visible || !n.hasImageInfo() || Sh(n.getViewportMaskBbox(this.viewport)) < Mf)\n continue;\n const s = yd(n.parsedImage, n.getResourceToCanvasScale(this.viewport));\n n.setBestScaleFactor(s.scaleFactor);\n const o = {\n // This can be expensive at high maxDepth and seems to work fine with maxDepth = 0\n maxDepth: 0\n }, a = md(n.projectedTransformer, this.viewport.projectedGeoRectangleBbox, o);\n n.setResourceViewportRing(a);\n const h = wd(a, s, n.parsedImage);\n for (const c of h)\n e.push(new Pd(c, n));\n }\n this.tileCache.requestFetcableMapTiles(e), this.updateMapsInViewport(e);\n }\n updateVertexBuffers() {\n if (this.viewport) {\n this.invertedRenderTransform = cu(this.viewport.projectedGeoToClipTransform);\n for (const t of this.mapsInViewport) {\n const e = this.webgl2WarpedMapsById.get(t);\n if (!e)\n break;\n e.updateVertexBuffers(this.viewport.projectedGeoToClipTransform);\n }\n }\n }\n viewportMovedSignificantly() {\n if (!this.viewport)\n return !1;\n if (this.previousSignificantViewport) {\n const t = [];\n for (let i = 0; i < 4; i++)\n t.push(vt(this.previousSignificantViewport.projectedGeoRectangle[i], this.viewport.projectedGeoRectangle[i]) / this.viewport.projectedGeoPerViewportScale);\n const e = Math.max(...t);\n return e === 0 ? !0 : e > _f ? (this.previousSignificantViewport = this.viewport, !0) : !1;\n } else\n return this.previousSignificantViewport = this.viewport, !0;\n }\n updateMapsInViewport(t) {\n const e = Array.from(this.mapsInViewport), i = t.map((o) => o.mapId).filter((o, a, h) => h.indexOf(o) === a);\n this.mapsInViewport = new Set(i.sort((o, a) => {\n const h = this.warpedMapList.getMapZIndex(o), c = this.warpedMapList.getMapZIndex(a);\n return h !== void 0 && c !== void 0 ? h - c : 0;\n }));\n const n = i.filter((o) => !e.includes(o)), s = e.filter((o) => !i.includes(o));\n for (const o in n)\n this.dispatchEvent(new $(k.WARPEDMAPENTER, o));\n for (const o in s)\n this.dispatchEvent(new $(k.WARPEDMAPLEAVE, o));\n }\n renderInternal() {\n if (!this.viewport)\n return;\n const t = hu(this.viewport.projectedGeoToClipTransform, this.invertedRenderTransform), e = this.gl;\n e.viewport(0, 0, e.canvas.width, e.canvas.height), e.enable(e.BLEND), e.blendFunc(e.ONE, e.ONE_MINUS_SRC_ALPHA), e.useProgram(this.program);\n const i = e.getUniformLocation(this.program, \"u_renderTransform\");\n e.uniformMatrix4fv(i, !1, uu(t));\n const n = e.getUniformLocation(this.program, \"u_animationProgress\");\n e.uniform1f(n, this.animationProgress);\n for (const s of this.mapsInViewport) {\n const o = this.webgl2WarpedMapsById.get(s);\n if (!o)\n continue;\n this.setRenderOptionsUniforms(this.renderOptions, o.renderOptions);\n const a = e.getUniformLocation(this.program, \"u_opacity\");\n e.uniform1f(a, this.opacity * o.opacity);\n const h = e.getUniformLocation(this.program, \"u_saturation\");\n e.uniform1f(h, this.saturation * o.saturation);\n const c = e.getUniformLocation(this.program, \"u_bestScaleFactor\"), l = o.warpedMap.bestScaleFactor;\n e.uniform1i(c, l);\n const u = e.getUniformLocation(this.program, \"u_packedTilesTexture\");\n e.uniform1i(u, 0), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, o.packedTilesTexture);\n const g = e.getUniformLocation(this.program, \"u_packedTilesPositionsTexture\");\n e.uniform1i(g, 1), e.activeTexture(e.TEXTURE1), e.bindTexture(e.TEXTURE_2D, o.packedTilesPositionsTexture);\n const w = e.getUniformLocation(this.program, \"u_packedTilesResourcePositionsAndDimensionsTexture\");\n e.uniform1i(w, 2), e.activeTexture(e.TEXTURE2), e.bindTexture(e.TEXTURE_2D, o.packedTilesResourcePositionsAndDimensionsTexture);\n const y = e.getUniformLocation(this.program, \"u_packedTilesScaleFactorsTexture\");\n e.uniform1i(y, 3), e.activeTexture(e.TEXTURE3), e.bindTexture(e.TEXTURE_2D, o.packedTilesScaleFactorsTexture);\n const _ = o.vao, I = o.warpedMap.resourceTrianglePoints.length, v = this.gl.TRIANGLES, S = 0;\n e.bindVertexArray(_), e.drawArrays(v, S, I);\n }\n }\n setRenderOptionsUniforms(t, e) {\n const i = this.gl, n = {\n removeColorOptions: {\n color: e.removeColorOptions?.color || t.removeColorOptions?.color,\n hardness: vn(e.removeColorOptions?.hardness, t.removeColorOptions?.hardness),\n threshold: vn(e.removeColorOptions?.threshold, t.removeColorOptions?.threshold)\n },\n colorizeOptions: {\n ...t.colorizeOptions,\n ...e.colorizeOptions\n }\n }, s = n.removeColorOptions?.color, o = i.getUniformLocation(this.program, \"u_removeColor\");\n if (i.uniform1f(o, s ? 1 : 0), s) {\n const c = i.getUniformLocation(this.program, \"u_removeColorOptionsColor\");\n i.uniform3fv(c, s);\n const l = i.getUniformLocation(this.program, \"u_removeColorOptionsThreshold\");\n i.uniform1f(l, n.removeColorOptions?.threshold || Tf);\n const u = i.getUniformLocation(this.program, \"u_removeColorOptionsHardness\");\n i.uniform1f(u, n.removeColorOptions?.hardness || bf);\n }\n const a = n.colorizeOptions?.color, h = i.getUniformLocation(this.program, \"u_colorize\");\n if (i.uniform1f(h, a ? 1 : 0), a) {\n const c = i.getUniformLocation(this.program, \"u_colorizeOptionsColor\");\n i.uniform3fv(c, a);\n }\n }\n changed() {\n this.dispatchEvent(new $(k.CHANGED));\n }\n imageInfoLoaded(t) {\n t instanceof $ && this.dispatchEvent(new $(k.IMAGEINFOLOADED));\n }\n mapTileLoaded(t) {\n if (t instanceof $) {\n const { mapId: e, tileUrl: i } = t.data, n = this.tileCache.getCacheableTile(i);\n if (!n || !n.isCachedTile())\n return;\n const s = this.webgl2WarpedMapsById.get(e);\n if (!s)\n return;\n s.addCachedTileAndUpdateTextures(n);\n }\n }\n mapTileRemoved(t) {\n if (t instanceof $) {\n const { mapId: e, tileUrl: i } = t.data, n = this.webgl2WarpedMapsById.get(e);\n if (!n)\n return;\n n.removeCachedTileAndUpdateTextures(i);\n }\n }\n warpedMapAdded(t) {\n if (t instanceof $) {\n const e = t.data, i = this.warpedMapList.getWarpedMap(e);\n if (i) {\n const n = new pf(this.gl, this.program, i);\n this.webgl2WarpedMapsById.set(i.mapId, n), this.addEventListenersToWebGL2WarpedMap(n);\n }\n }\n }\n transformationChanged(t) {\n if (t instanceof $) {\n const e = t.data;\n for (const i of this.warpedMapList.getWarpedMaps(e))\n this.animating && i.mixProjectedGeoCurrentAndNewTrianglePoints(this.animationProgress), i.updateProjectedGeoTrianglePoints(!1);\n this.updateVertexBuffers(), this.startTransformationTransition();\n }\n }\n addEventListenersToWebGL2WarpedMap(t) {\n t.addEventListener(k.TEXTURESUPDATED, this.throttledChanged.bind(this));\n }\n removeEventListenersFromWebGL2WarpedMap(t) {\n t.removeEventListener(k.TEXTURESUPDATED, this.throttledChanged.bind(this));\n }\n addEventListeners() {\n this.tileCache.addEventListener(k.MAPTILELOADED, this.mapTileLoaded.bind(this)), this.tileCache.addEventListener(k.MAPTILEREMOVED, this.mapTileRemoved.bind(this)), this.warpedMapList.addEventListener(k.IMAGEINFOLOADED, this.imageInfoLoaded.bind(this)), this.warpedMapList.addEventListener(k.WARPEDMAPADDED, this.warpedMapAdded.bind(this)), this.warpedMapList.addEventListener(k.TRANSFORMATIONCHANGED, this.transformationChanged.bind(this));\n }\n removeEventListeners() {\n this.tileCache.removeEventListener(k.MAPTILELOADED, this.mapTileLoaded.bind(this)), this.tileCache.removeEventListener(k.MAPTILEREMOVED, this.mapTileRemoved.bind(this)), this.warpedMapList.removeEventListener(k.IMAGEINFOLOADED, this.imageInfoLoaded.bind(this)), this.warpedMapList.removeEventListener(k.WARPEDMAPADDED, this.warpedMapAdded.bind(this)), this.warpedMapList.removeEventListener(k.TRANSFORMATIONCHANGED, this.transformationChanged.bind(this));\n }\n}\nconst If = \"Renderer not defined. Add the layer to a map before calling this function.\";\nfunction z(r) {\n if (!r)\n throw new Error(If);\n}\nclass vo extends Ht.Layer {\n constructor(t, e) {\n super(), this.options = {\n opacity: 1,\n interactive: !1,\n className: \"\",\n pane: \"tilePane\",\n zIndex: 1\n }, this.initialize(t, e);\n }\n /**\n * Creates a WarpedMapLayer\n * @param {unknown} [annotation] - Georeference Annotation or URL of a Georeference Annotation\n * @param {WarpedMapLayerOptions} options\n */\n initialize(t, e) {\n this._annotationOrAnnotationUrl = t, Ht.setOptions(this, e), this._initGl();\n }\n /**\n * Contains all code code that creates DOM elements for the layer and adds them to map panes where they belong.\n * @async\n */\n onAdd(t) {\n if (!this._map || !this.container)\n return this;\n const e = this.getPaneName();\n return this._map.getPane(e)?.appendChild(this.container), t.on(\"zoomend viewreset move\", this._update, this), t.on(\"zoomanim\", this._animateZoom, this), t.on(\"unload\", this._unload, this), this.resizeObserver = new ResizeObserver(this._resized.bind(this)), this.resizeObserver.observe(this._map.getContainer(), {\n box: \"content-box\"\n }), this._annotationOrAnnotationUrl && (typeof this._annotationOrAnnotationUrl == \"string\" && kh(this._annotationOrAnnotationUrl) ? this.addGeoreferenceAnnotationByUrl(\n this._annotationOrAnnotationUrl\n ).then(() => this._update()) : this.addGeoreferenceAnnotation(this._annotationOrAnnotationUrl).then(\n () => this._update()\n )), this;\n }\n /**\n * Contains all cleanup code that removes the layer's elements from the DOM.\n */\n onRemove(t) {\n return this.container && this.container.remove(), t.off(\"zoomend viewreset move\", this._update, this), t.off(\"zoomanim\", this._animateZoom, this), this;\n }\n /**\n * Adds a [Georeference Annotation](https://iiif.io/api/extension/georef/).\n * @async\n * @param {any} annotation - Georeference Annotation\n * @returns {Promise<(string | Error)[]>} - the map IDs of the maps that were added, or an error per map\n */\n async addGeoreferenceAnnotation(t) {\n z(this.renderer);\n const e = await this.renderer.warpedMapList.addGeoreferenceAnnotation(\n t\n );\n return this._update(), e;\n }\n /**\n * Removes a [Georeference Annotation](https://iiif.io/api/extension/georef/).\n * @async\n * @param {any} annotation - Georeference Annotation\n * @returns {Promise<(string | Error)[]>} - the map IDs of the maps that were removed, or an error per map\n */\n async removeGeoreferenceAnnotation(t) {\n z(this.renderer);\n const e = await this.renderer.warpedMapList.removeGeoreferenceAnnotation(t);\n return this._update(), e;\n }\n /**\n * Adds a [Georeference Annotation](https://iiif.io/api/extension/georef/) by URL.\n * @async\n * @param {string} annotationUrl - Georeference Annotation\n * @returns {Promise<(string | Error)[]>} - the map IDs of the maps that were added, or an error per map\n */\n async addGeoreferenceAnnotationByUrl(t) {\n const e = await fetch(t).then(\n (i) => i.json()\n );\n return this.addGeoreferenceAnnotation(e);\n }\n /**\n * Removes a [Georeference Annotation](https://iiif.io/api/extension/georef/) by URL.\n * @async\n * @param {string} annotationUrl - Georeference Annotation\n * @returns {Promise<(string | Error)[]>} - the map IDs of the maps that were removed, or an error per map\n */\n async removeGeoreferenceAnnotationByUrl(t) {\n const e = await fetch(t).then(\n (n) => n.json()\n );\n return this.removeGeoreferenceAnnotation(e);\n }\n /**\n * Adds a Georeferenced map.\n * @param {any} georeferencedMap - Georeferenced map\n * @returns {Promise<(string | Error)>} - the map ID of the map that was added, or an error\n */\n async addGeoreferencedMap(t) {\n z(this.renderer);\n const e = this.renderer.warpedMapList.addGeoreferencedMap(t);\n return this._update(), e;\n }\n /**\n * Removes a Georeferenced map.\n * @param {any} georeferencedMap - Georeferenced map\n * @returns {Promise<(string | Error)>} - the map ID of the map that was removed, or an error\n */\n async removeGeoreferencedMap(t) {\n z(this.renderer);\n const e = this.renderer.warpedMapList.removeGeoreferencedMap(t);\n return this._update(), e;\n }\n /**\n * Gets the HTML container element of the layer\n * @return {HTMLElement} HTML Div Element\n */\n getContainer() {\n return this.container;\n }\n /**\n * Gets the HTML canvas element of the layer\n * @return {HTMLCanvasElement | null} HTML Canvas Element\n */\n getCanvas() {\n return this.canvas;\n }\n /**\n * Returns the WarpedMapList object that contains a list of the warped maps of all loaded maps\n */\n getWarpedMapList() {\n return z(this.renderer), this.renderer.warpedMapList;\n }\n /**\n * Returns a single map's warped map\n * @param {string} mapId - ID of the map\n * @returns {WarpedMap | undefined} the warped map\n */\n getWarpedMap(t) {\n return z(this.renderer), this.renderer.warpedMapList.getWarpedMap(t);\n }\n /**\n * Make a single map visible\n * @param {string} mapId - ID of the map\n */\n showMap(t) {\n z(this.renderer), this.renderer.warpedMapList.showMaps([t]), this._update();\n }\n /**\n * Make multiple maps visible\n * @param {Iterable<string>} mapIds - IDs of the maps\n */\n showMaps(t) {\n z(this.renderer), this.renderer.warpedMapList.showMaps(t), this._update();\n }\n /**\n * Make a single map invisible\n * @param {string} mapId - ID of the map\n */\n hideMap(t) {\n z(this.renderer), this.renderer.warpedMapList.hideMaps([t]), this._update();\n }\n /**\n * Make multiple maps invisible\n * @param {Iterable<string>} mapIds - IDs of the maps\n */\n hideMaps(t) {\n z(this.renderer), this.renderer.warpedMapList.hideMaps(t), this._update();\n }\n /**\n * Returns the visibility of a single map\n * @returns {boolean | undefined} - whether the map is visible\n */\n isMapVisible(t) {\n return z(this.renderer), this.renderer.warpedMapList.getWarpedMap(t)?.visible;\n }\n /**\n * Sets the resource mask of a single map\n * @param {string} mapId - ID of the map\n * @param {Point[]} resourceMask - new resource mask\n */\n setMapResourceMask(t, e) {\n z(this.renderer), this.renderer.warpedMapList.setMapResourceMask(t, e), this._update();\n }\n /**\n * Sets the transformation type of multiple maps\n * @param {Iterable<string>} mapIds - IDs of the maps\n * @param {TransformationType} transformation - new transformation type\n */\n setMapsTransformationType(t, e) {\n z(this.renderer), this.renderer.warpedMapList.setMapsTransformationType(\n t,\n e\n ), this._update();\n }\n /**\n * Returns the bounds of all visible maps (inside or outside of the Viewport), in latitude/longitude coordinates.\n * @returns {number[][] | undefined} - L.LatLngBounds in array form of all visible maps\n */\n getBounds() {\n z(this.renderer);\n const t = this.renderer.warpedMapList.getBbox();\n if (t)\n return [\n [t[1], t[0]],\n [t[3], t[2]]\n ];\n }\n /**\n * Bring maps to front\n * @param {Iterable<string>} mapIds - IDs of the maps\n */\n bringMapsToFront(t) {\n z(this.renderer), this.renderer.warpedMapList.bringMapsToFront(t), this._update();\n }\n /**\n * Send maps to back\n * @param {Iterable<string>} mapIds - IDs of the maps\n */\n sendMapsToBack(t) {\n z(this.renderer), this.renderer.warpedMapList.sendMapsToBack(t), this._update();\n }\n /**\n * Bring maps forward\n * @param {Iterable<string>} mapIds - IDs of the maps\n */\n bringMapsForward(t) {\n z(this.renderer), this.renderer.warpedMapList.bringMapsForward(t), this._update();\n }\n /**\n * Send maps backward\n * @param {Iterable<string>} mapIds - IDs of the maps\n */\n sendMapsBackward(t) {\n z(this.renderer), this.renderer.warpedMapList.sendMapsBackward(t), this._update();\n }\n /**\n * Brings the layer in front of other overlays (in the same map pane).\n */\n bringToFront() {\n return this._map && this.container && Ht.DomUtil.toFront(this.container), this;\n }\n /**\n * Brings the layer to the back of other overlays (in the same map pane).\n */\n bringToBack() {\n return this._map && this.container && Ht.DomUtil.toBack(this.container), this;\n }\n /**\n * Returns the z-index of a single map\n * @param {string} mapId - ID of the map\n * @returns {number | undefined} - z-index of the map\n */\n getMapZIndex(t) {\n return z(this.renderer), this.renderer.warpedMapList.getMapZIndex(t);\n }\n /**\n * Gets the zIndex of the layer.\n */\n getZIndex() {\n return this.options.zIndex;\n }\n /**\n * Changes the zIndex of the layer.\n * @param {number} value - zIndex\n */\n setZIndex(t) {\n return this.options.zIndex = t, this._updateZIndex(), this;\n }\n /**\n * Sets the image info Cache of the warpedMapList\n * @param {Cache} cache - the image info cache\n */\n setImageInfoCache(t) {\n z(this.renderer), this.renderer.warpedMapList.setImageInfoCache(t);\n }\n /**\n * Gets the pane name the layer is attached to. Defaults to 'tilePane'\n * @returns {string} Pane name\n */\n getPaneName() {\n return this._map.getPane(this.options.pane) ? this.options.pane : \"tilePane\";\n }\n /**\n * Gets the opacity of the layer\n * @returns {number} Layer opacity\n */\n getOpacity() {\n return this.options.opacity;\n }\n /**\n * Sets the opacity of the layer\n * @param {number} opacity - Layer opacity\n */\n setOpacity(t) {\n return this.options.opacity = t, this._update(), this;\n }\n /**\n * Resets the opacity of the layer to fully opaque\n */\n resetOpacity() {\n return this.options.opacity = 1, this._update(), this;\n }\n /**\n * Gets the opacity of a single map\n * @param {string} mapId - ID of the map\n * @return {number | undefined} opacity of the map\n */\n getMapOpacity(t) {\n return z(this.renderer), this.renderer.getMapOpacity(t);\n }\n /**\n * Sets the opacity of a single map\n * @param {string} mapId - ID of the map\n * @param {number} opacity - opacity between 0 and 1, where 0 is fully transparent and 1 is fully opaque\n */\n setMapOpacity(t, e) {\n return z(this.renderer), this.renderer.setMapOpacity(t, e), this._update(), this;\n }\n /**\n * Resets the opacity of a single map to 1\n * @param {string} mapId - ID of the map\n */\n resetMapOpacity(t) {\n return z(this.renderer), this.renderer.resetMapOpacity(t), this._update(), this;\n }\n /**\n * Sets the saturation of a single map\n * @param {number} saturation - saturation between 0 and 1, where 0 is grayscale and 1 are the original colors\n */\n setSaturation(t) {\n return z(this.renderer), this.renderer.setSaturation(t), this._update(), this;\n }\n /**\n * Resets the saturation of a single map to the original colors\n */\n resetSaturation() {\n return z(this.renderer), this.renderer.resetSaturation(), this._update(), this;\n }\n /**\n * Sets the saturation of a single map\n * @param {string} mapId - ID of the map\n * @param {number} saturation - saturation between 0 and 1, where 0 is grayscale and 1 are the original colors\n */\n setMapSaturation(t, e) {\n return z(this.renderer), this.renderer.setMapSaturation(t, e), this._update(), this;\n }\n /**\n * Resets the saturation of a single map to the original colors\n * @param {string} mapId - ID of the map\n */\n resetMapSaturation(t) {\n return z(this.renderer), this.renderer.resetMapSaturation(t), this._update(), this;\n }\n /**\n * Removes a color from all maps\n * @param {Object} options - remove color options\n * @param {string} [options.hexColor] - hex color to remove\n * @param {number} [options.threshold] - threshold between 0 and 1\n * @param {number} [options.hardness] - hardness between 0 and 1\n */\n setRemoveColor(t) {\n z(this.renderer);\n const e = t.hexColor ? or(t.hexColor) : void 0;\n return this.renderer.setRemoveColorOptions({\n color: e,\n threshold: t.threshold,\n hardness: t.hardness\n }), this._update(), this;\n }\n /**\n * Resets the color removal for all maps\n */\n resetRemoveColor() {\n return z(this.renderer), this.renderer.resetRemoveColorOptions(), this._update(), this;\n }\n /**\n * Removes a color from a single map\n * @param {string} mapId - ID of the map\n * @param {Object} options - remove color options\n * @param {string} [options.hexColor] - hex color to remove\n * @param {number} [options.threshold] - threshold between 0 and 1\n * @param {number} [options.hardness] - hardness between 0 and 1\n */\n setMapRemoveColor(t, e) {\n z(this.renderer);\n const i = e.hexColor ? or(e.hexColor) : void 0;\n return this.renderer.setMapRemoveColorOptions(t, {\n color: i,\n threshold: e.threshold,\n hardness: e.hardness\n }), this._update(), this;\n }\n /**\n * Resets the color removal for a single map\n * @param {string} mapId - ID of the map\n */\n resetMapRemoveColor(t) {\n return z(this.renderer), this.renderer.resetMapRemoveColorOptions(t), this;\n }\n /**\n * Sets the colorization for all maps\n * @param {string} hexColor - desired hex color\n */\n setColorize(t) {\n z(this.renderer);\n const e = or(t);\n return e && (this.renderer.setColorizeOptions({ color: e }), this._update()), this;\n }\n /**\n * Resets the colorization for all maps\n */\n resetColorize() {\n return z(this.renderer), this.renderer.resetColorizeOptions(), this._update(), this;\n }\n /**\n * Sets the colorization for a single map\n * @param {string} mapId - ID of the map\n * @param {string} hexColor - desired hex color\n */\n setMapColorize(t, e) {\n z(this.renderer);\n const i = or(e);\n return i && (this.renderer.setMapColorizeOptions(t, { color: i }), this._update()), this;\n }\n /**\n * Resets the colorization of a single map\n * @param {string} mapId - ID of the map\n */\n resetMapColorize(t) {\n return z(this.renderer), this.renderer.resetMapColorizeOptions(t), this._update(), this;\n }\n /**\n * Removes all warped maps from the layer\n */\n clear() {\n return z(this.renderer), this.renderer.clear(), this._update(), this;\n }\n _initGl() {\n if (this.container = Ht.DomUtil.create(\"div\"), this.container.classList.add(\"leaflet-layer\"), this.container.classList.add(\"allmaps-warped-map-layer\"), this.options.zIndex && this._updateZIndex(), this.canvas = Ht.DomUtil.create(\"canvas\", void 0, this.container), this.canvas.classList.add(\"leaflet-zoom-animated\"), this.canvas.classList.add(\"leaflet-image-layer\"), this.options.interactive && this.canvas.classList.add(\"leaflet-interactive\"), this.options.className && this.canvas.classList.add(this.options.className), this.gl = this.canvas.getContext(\"webgl2\", {\n premultipliedAlpha: !0\n }), !this.gl)\n throw new Error(\"WebGL 2 not available\");\n const t = new dd(this.options.imageInfoCache);\n this.renderer = new Ef(this.gl, t), this._addEventListeners();\n }\n _resized(t) {\n if (this.canvas) {\n for (const e of t) {\n const i = e.contentRect.width, n = e.contentRect.height, s = window.devicePixelRatio, o = Math.round(i * s), a = Math.round(n * s);\n this.canvas.width = o, this.canvas.height = a, this.canvas.style.width = i + \"px\", this.canvas.style.height = n + \"px\";\n }\n this._update();\n }\n }\n // Note: borrowed from L.ImageOverlay\n // https://github.com/Leaflet/Leaflet/blob/3b62c7ec96242ee4040cf438a8101a48f8da316d/src/layer/ImageOverlay.js#L225\n _animateZoom(t) {\n if (!this.canvas)\n return;\n const e = this._map.getZoomScale(t.zoom), i = this._map._latLngBoundsToNewLayerBounds(\n this._map.getBounds(),\n t.zoom,\n t.center\n ).min;\n Ht.DomUtil.setTransform(this.canvas, i, e);\n }\n _updateZIndex() {\n this.container && this.options.zIndex !== void 0 && (this.container.style.zIndex = String(this.options.zIndex));\n }\n _update() {\n if (!this._map || !this.renderer || !this.canvas || !this._map.options.crs)\n return;\n const t = this._map.containerPointToLayerPoint([0, 0]);\n Ht.DomUtil.setPosition(this.canvas, t), this.renderer.setOpacity(this.getOpacity());\n const e = this._map.getCenter(), i = this._map.options.crs.project(e), n = [\n i.x,\n i.y\n ], s = this._map.getSize(), o = [s.x, s.y], a = this._map.getBounds(), h = this._map.options.crs.project(\n a.getNorthEast()\n ), c = this._map.options.crs.project(\n a.getNorthWest()\n ), l = this._map.options.crs.project(\n a.getSouthWest()\n ), u = this._map.options.crs.project(\n a.getSouthEast()\n ), g = [\n [h.x, h.y],\n [c.x, c.y],\n [l.x, l.y],\n [u.x, u.y]\n ], w = Si(g), y = _s(\n w,\n o\n ), _ = new fd(\n n,\n o,\n 0,\n y,\n window.devicePixelRatio\n );\n return this.renderer.render(_), this.container;\n }\n _addEventListeners() {\n z(this.renderer), this.renderer.addEventListener(\n k.CHANGED,\n this._update.bind(this)\n ), this.renderer.addEventListener(\n k.IMAGEINFOLOADED,\n this._update.bind(this)\n ), this.renderer.addEventListener(\n k.WARPEDMAPENTER,\n this._passWarpedMapEvent.bind(this)\n ), this.renderer.addEventListener(\n k.WARPEDMAPLEAVE,\n this._passWarpedMapEvent.bind(this)\n ), this.renderer.tileCache.addEventListener(\n k.FIRSTMAPTILELOADED,\n this._passWarpedMapEvent.bind(this)\n ), this.renderer.tileCache.addEventListener(\n k.ALLREQUESTEDTILESLOADED,\n this._passWarpedMapEvent.bind(this)\n ), this.renderer.warpedMapList.addEventListener(\n k.WARPEDMAPADDED,\n this._passWarpedMapEvent.bind(this)\n ), this.renderer.warpedMapList.addEventListener(\n k.WARPEDMAPREMOVED,\n this._passWarpedMapEvent.bind(this)\n ), this.renderer.warpedMapList.addEventListener(\n k.VISIBILITYCHANGED,\n this._update.bind(this)\n ), this.renderer.warpedMapList.addEventListener(\n k.CLEARED,\n this._update.bind(this)\n );\n }\n _removeEventListeners() {\n z(this.renderer), this.renderer.removeEventListener(\n k.CHANGED,\n this._update.bind(this)\n ), this.renderer.removeEventListener(\n k.IMAGEINFOLOADED,\n this._update.bind(this)\n ), this.renderer.removeEventListener(\n k.WARPEDMAPENTER,\n this._passWarpedMapEvent.bind(this)\n ), this.renderer.removeEventListener(\n k.WARPEDMAPLEAVE,\n this._passWarpedMapEvent.bind(this)\n ), this.renderer.tileCache.removeEventListener(\n k.FIRSTMAPTILELOADED,\n this._passWarpedMapEvent.bind(this)\n ), this.renderer.tileCache.removeEventListener(\n k.ALLREQUESTEDTILESLOADED,\n this._passWarpedMapEvent.bind(this)\n ), this.renderer.warpedMapList.removeEventListener(\n k.WARPEDMAPADDED,\n this._passWarpedMapEvent.bind(this)\n ), this.renderer.warpedMapList.removeEventListener(\n k.WARPEDMAPREMOVED,\n this._passWarpedMapEvent.bind(this)\n ), this.renderer.warpedMapList.removeEventListener(\n k.VISIBILITYCHANGED,\n this._update.bind(this)\n ), this.renderer.warpedMapList.removeEventListener(\n k.CLEARED,\n this._update.bind(this)\n );\n }\n _passWarpedMapEvent(t) {\n t instanceof $ && this._map && this._map.fire(t.type, t.data);\n }\n _unload() {\n if (z(this.renderer), !this.gl)\n return;\n this.renderer.dispose();\n const t = this.gl.getExtension(\"WEBGL_lose_context\");\n t && t.loseContext();\n const e = this.gl.canvas;\n e.width = 1, e.height = 1, this.resizeObserver?.disconnect(), this._removeEventListeners();\n }\n}\nconst Sf = function(r, t) {\n return new vo(r, t);\n};\nL.WarpedMapLayer = vo;\nL.warpedMapLayer = Sf;\nexport {\n $ as WarpedMapEvent,\n k as WarpedMapEventType,\n vo as WarpedMapLayer\n};\n//# sourceMappingURL=allmaps-leaflet-1.9.es.js.map\n","// leaflet_layer_opacity.js\nimport L from 'leaflet';\n\nclass LayerOpacityControl extends L.Control {\n initialize(layer) {\n super.initialize();\n let options = { position: 'topleft' };\n\n // Check if the layer is actually a layer group and adjust accordingly\n if (typeof layer.getLayers !== 'undefined') {\n options.layer = layer.getLayers()[0];\n } else {\n options.layer = layer;\n }\n\n L.Util.setOptions(this, options);\n }\n\n onAdd(map) {\n const container = L.DomUtil.create('div', 'opacity-control unselectable');\n const controlArea = L.DomUtil.create('div', 'opacity-area', container);\n const handle = L.DomUtil.create('div', 'opacity-handle', container);\n const handleArrowUp = L.DomUtil.create('div', 'opacity-arrow-up', handle);\n const handleText = L.DomUtil.create('div', 'opacity-text', handle);\n const handleArrowDown = L.DomUtil.create('div', 'opacity-arrow-down', handle);\n const bottom = L.DomUtil.create('div', 'opacity-bottom', container);\n\n L.DomEvent.stopPropagation(container);\n L.DomEvent.disableClickPropagation(container);\n\n this.setListeners(handle, bottom, handleText);\n handle.style.top = `${handle.offsetTop - 13 + 50}px`;\n handleText.innerHTML = `${parseInt(this.options.layer.options.opacity * 100, 10)}%`;\n\n return container;\n }\n\n setListeners(handle, bottom, handleText) {\n let start = false;\n let startTop;\n\n L.DomEvent.on(document, 'mousemove', (e) => {\n if (!start) return;\n const percentInverse = Math.max(0, Math.min(200, startTop + parseInt(e.clientY, 10) - start)) / 2;\n handle.style.top = `${(percentInverse * 2) - 13}px`;\n handleText.innerHTML = `${Math.round((1 - (percentInverse / 100)) * 100)}%`;\n bottom.style.height = `${Math.max(0, ((100 - percentInverse) * 2) - 13)}px`;\n bottom.style.top = `${Math.min(200, (percentInverse * 2) + 13)}px`;\n this.options.layer.setOpacity(1 - (percentInverse / 100));\n });\n\n L.DomEvent.on(handle, 'mousedown', (e) => {\n start = parseInt(e.clientY, 10);\n startTop = handle.offsetTop - 12;\n return false;\n });\n\n L.DomEvent.on(document, 'mouseup', () => {\n start = null;\n });\n }\n}\n\n// Extend Leaflet's control factory to include this new control\nL.Control.layerOpacity = function(layer, options) {\n return new LayerOpacityControl(layer, options);\n};\n\nexport default LayerOpacityControl;\n","// initialize_geoblacklight_map.js\nimport L from 'leaflet';\nimport 'leaflet-fullscreen';\nimport LayerOpacityControl from 'leaflet_layer_opacity';\nimport { WarpedMapLayer } from '@allmaps/leaflet';\n\nexport function initializeGeoBlacklightMap() {\n document.addEventListener(\"DOMContentLoaded\", () => {\n if (document.getElementById(\"geoblacklight-allmaps-map\") != null) {\n const element = document.getElementById(\"geoblacklight-allmaps-map\");\n const allmaps_id = element.getAttribute(\"data-allmaps-id\");\n const geoTab = document.getElementById(\"georeferenced-tab\");\n if (!element) return; // Exit if the element doesn't exist\n\n const map = L.map(\"geoblacklight-allmaps-map\", {\n center: [0, 0],\n zoom: 15,\n zoomAnimationThreshold: 1\n });\n\n // Basemap and Attribution\n L.tileLayer(\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\", {\n attribution: \"&copy; <a href='https://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors\",\n maxZoom: 18\n }).addTo(map);\n \n // Fullscreen control\n map.addControl(new L.Control.Fullscreen({\n position: \"topright\"\n }));\n\n // Annotation URL assumes the ID is passed dynamically to this function\n const annotationUrl = `https://annotations.allmaps.org/manifests/${allmaps_id}`;\n const warpedMapLayer = new WarpedMapLayer(annotationUrl).addTo(map);\n\n // Layer opacity control\n map.addControl(new LayerOpacityControl(warpedMapLayer));\n\n // Watch DOM to see active tab and\n // Resize map to render correctly\n const observer = new MutationObserver(function() {\n if (geoTab.style.display !== \"none\") {\n map.invalidateSize();\n warpedMapLayer.addTo(map);\n map.fitBounds(warpedMapLayer.getBounds());\n }\n });\n\n observer.observe(geoTab, { attributes: true });\n }\n });\n}\n// app/javascript/blacklight/allmaps/initialize_geoblacklight_map.js","// initialize_blacklight_map.js\nimport L from 'leaflet';\nimport 'leaflet-fullscreen';\nimport LayerOpacityControl from 'leaflet_layer_opacity';\nimport { WarpedMapLayer } from '@allmaps/leaflet';\n\nexport function initializeBlacklightMap() {\n document.addEventListener(\"DOMContentLoaded\", () => {\n if (document.getElementById(\"blacklight-allmaps-map\") != null) {\n const element = document.getElementById(\"blacklight-allmaps-map\");\n const allmaps_id = element.getAttribute(\"data-allmaps-id\");\n if (!element) return; // Exit if the element doesn't exist\n \n const map = L.map(\"blacklight-allmaps-map\", {\n center: [0, 0],\n zoom: 15,\n zoomAnimationThreshold: 1\n });\n \n // Basemap and Attribution\n L.tileLayer(\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\", {\n attribution: \"&copy; <a href='https://www.openstreetmap.org/copyright'>OpenStreetMap</a> contributors\",\n maxZoom: 18\n }).addTo(map);\n \n // Fullscreen control\n map.addControl(new L.Control.Fullscreen({\n position: \"topright\"\n }));\n \n // Annotation URL assumes the ID is passed dynamically to this function\n const annotationUrl = `https://annotations.allmaps.org/manifests/${allmaps_id}`;\n const warpedMapLayer = new WarpedMapLayer(annotationUrl).addTo(map);\n \n // Layer opacity control\n map.addControl(new LayerOpacityControl(warpedMapLayer));\n \n map.on(\"warpedmapadded\", () => {\n map.fitBounds(warpedMapLayer.getBounds());\n }); \n }\n });\n}\n// app/javascript/blacklight/allmaps/initialize_blacklight_map.js","import L from \"leaflet\";\nimport \"leaflet-fullscreen\";\nimport { WarpedMapLayer } from \"@allmaps/leaflet\"\nimport LayerOpacityControl from \"leaflet_layer_opacity\";\n\n\nimport { initializeGeoBlacklightMap } from \"./initialize_geoblacklight_map\";\ninitializeGeoBlacklightMap();\n\nimport { initializeBlacklightMap } from \"./initialize_blacklight_map\";\ninitializeBlacklightMap();\n"],"names":["this","Ht.Layer","Ht.setOptions","Ht.DomUtil","L","WarpedMapLayer"],"mappings":"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,OAAO,EAAE,IAAI,CAAC,CAAC;AACzE,MAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;MAC5B;KACD,OAAO,OAAO,CAAC;KACf;AACJ,IAAG,CAAC,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;AAChC;AACA;AACA;AACA,IAAG,OAAO,EAAE;AACZ;AACA;KACI,IAAI,EAAE,WAAW;AACrB;AACA;AACA;AACA,KAAI,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAClB;AACA;AACA;KACI,QAAQ,EAAE,GAAG;AACjB;AACA;AACA;KACI,QAAQ,EAAE,EAAE;AAChB;AACA;AACA;AACA;AACA;AACA;KACI,SAAS,EAAE,IAAI;AACnB;AACA;AACA;AACA;KACI,OAAO,EAAE,IAAI;AACjB;AACA;AACA;AACA;KACI,qBAAqB,EAAE,IAAI;AAC/B;AACA;AACA;AACA;KACI,yBAAyB,EAAE,IAAI;AACnC;AACA;AACA;AACA,KAAI,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B;AACA;AACA;AACA;KACI,UAAU,EAAE,KAAK;AACrB;AACA;AACA;KACI,WAAW,EAAE,IAAI;AACrB;AACA;AACA;AACA;KACI,SAAS,EAAE,IAAI;AACnB;AACA;AACA;AACA;KACI,gBAAgB,EAAE,IAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;KACI,SAAS,EAAE,EAAE;KACb;AACJ;AACA;AACA;AACA;AACA;AACA,IAAG,MAAM,EAAE,UAAU,GAAG,EAAE;AAC1B,KAAI,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACrD;KACI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;AAC/B;AACA;AACA;AACA,IAAG,OAAO,EAAE;AACZ;AACA;KACI,QAAQ,EAAE,GAAG;AACjB;AACA;AACA;KACI,OAAO,EAAE,CAAC;AACd;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,cAAc,EAAE,OAAO,CAAC,MAAM;AAClC;AACA;AACA;KACI,iBAAiB,EAAE,IAAI;AAC3B;AACA;AACA;KACI,cAAc,EAAE,GAAG;AACvB;AACA;AACA;KACI,MAAM,EAAE,CAAC;AACb;AACA;AACA;KACI,MAAM,EAAE,IAAI;AAChB;AACA;AACA;KACI,OAAO,EAAE,CAAC;AACd;AACA;AACA;KACI,OAAO,EAAE,SAAS;AACtB;AACA;AACA;AACA;AACA;KACI,aAAa,EAAE,SAAS;AAC5B;AACA;AACA;AACA;AACA;KACI,aAAa,EAAE,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;KACI,MAAM,EAAE,KAAK;AACjB;AACA;AACA;KACI,IAAI,EAAE,UAAU;AACpB;AACA;AACA;KACI,SAAS,EAAE,EAAE;AACjB;AACA;AACA;KACI,UAAU,EAAE,CAAC;KACb;AACJ;AACA,IAAG,UAAU,EAAE,UAAU,OAAO,EAAE;AAClC,KAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC1B;AACJ;IACG,KAAK,EAAE,YAAY;AACtB,KAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B;AACA,KAAI,IAAI,CAAC,OAAO,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,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC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C,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnH,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtO,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AACvF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAChP,EAAE,OAAO,CAAC,GAAG,CAAC;AACd,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3K,EAAE,OAAO,CAAC,GAAG,CAAC;AACd,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAA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AAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxO,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AACvF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjP,EAAE,OAAO,CAAC,GAAG,CAAC;AACd,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3K,EAAE,OAAO,CAAC,GAAG,CAAC;AACd,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AA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AAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpkB,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7B,KAAK,CAAC;AACN,GAAG;AACH,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACzB,IAAI,OAAO,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACnC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,C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"}