{"id":91,"date":"2021-03-07T12:24:09","date_gmt":"2021-03-07T12:24:09","guid":{"rendered":"http:\/\/writerofwizardry.com\/?page_id=91"},"modified":"2022-08-11T11:09:05","modified_gmt":"2022-08-11T11:09:05","slug":"the-great-hearts-1","status":"publish","type":"page","link":"https:\/\/writerofwizardry.com\/index.php\/the-great-hearts-1\/","title":{"rendered":"The Great Hearts"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"91\" class=\"elementor elementor-91\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4f6b193 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4f6b193\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-8b5b285\" data-id=\"8b5b285\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-cb1c9b2 elementor-widget elementor-widget-image\" data-id=\"cb1c9b2\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/writerofwizardry.com\/wp-content\/uploads\/elementor\/thumbs\/The-Great-Hearts-p3vmyl48w54fm2nent8bi575q8c0iyd5k6jn02fjuo.jpg\" title=\"The Great Hearts\" alt=\"The Great Hearts\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-5c9a301\" data-id=\"5c9a301\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7a64253 elementor-widget elementor-widget-text-editor\" data-id=\"7a64253\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><strong>Who are these Great Hearts and why are they so great you ask?<\/strong><\/p><p>Well, that\u2019s not an easy question to answer. Let me put it this way, if you like fast paced coming-of-age stories with monsters, cannibals, dark magic and epic sword battles then this is probably for you.<\/p><p>I know that this hasn\u2019t answered the question, and neither will the below description, but maybe it will intrigue you enough to give it a read\u2026<\/p><p>You can also\u00a0<a href=\"https:\/\/www.audible.com\/t2\/title?asin=B079G4DPVY\">listen to the story here on Audible<\/a>\u00a0\u2013 if you\u2019re not already a member you can get the book for your free trial!<\/p><p>\u00a0<\/p><p>Imperator. A word synonymous with fear, pain, loathing and, for a chosen few, the sharp end of a blade. The voice of the Emperor, an Imperator is the perfect weapon, skilled in combat, politics and strategy and moulded by years of punishing training. They are the hidden assassins, the enforcers of the Emperor\u2019s will.<br \/>They are the hunters of the unknown.<br \/>Calidan Darkheart is an Imperator, a self-professed killer and an adept hunter of the creatures that most citizens of the Empire do not realise exist.<br \/>Together with his hulking companion Cassius, he hunts the beast that slaughtered their home village.<\/p><p>Pity those who find themselves in their path.<\/p><p>Calidan and Cassius were bright young boys, living peaceful, happy lives in a remote mountain village, until the day everything changed. Once the screams have subsided, and with the horrors they have seen embedded in their minds, they embark on a journey of survival, fraught\u00a0with danger, strange magic and dark deeds. Unbowing and undaunted they push forward, striving for power, making lifelong friendships along the way, and above all else, discovering the truth behind the magnificent, mythical Great Hearts.<br \/>Young Calidan is a boy full of hope and courage, driven by the past but not ruled by it.<br \/>Old Calidan is a bitter and twisted killer of monsters and men, his past haunting his dreams.<\/p><p>This is his story.<\/p><p>\u00a0<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cccb36f elementor-align-center elementor-widget elementor-widget-button\" data-id=\"cccb36f\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-lg\" href=\"https:\/\/www.amazon.com\/dp\/B0716Z363W\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Buy it here<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-dce5e65 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"dce5e65\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3cbd8d3\" data-id=\"3cbd8d3\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4889f16 elementor-widget elementor-widget-html\" data-id=\"4889f16\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style type=\"text\/css\" media=\"screen\">\r\n.gr_container {\r\n  font-family:\"Helvetica Neue\", Helvetica, Arial, sans-serif;\r\n  width: 250px;\r\n}\r\n.gr_book_container {\r\n  border-bottom: 1px solid #d7d7d7; padding: 5px 0px;\r\n}\r\n.gr_book_image {\r\n  float: left; padding-right: 20px;\r\n}\r\n.gr_book_title {}\r\n.gr_review_stats {}\r\n<\/style>\r\n<a style=\"font-size: 1.3em; color: #382110; text-decoration: none;\" href=\"https:\/\/www.goodreads.com\/author\/show\/317443.David_Oliver?utm_medium=api&utm_source=author_widget\">David      Oliver's books on Goodreads<\/a>\r\n  <div id=\"gr_author_widget_1626106102\">\r\n    <!-- Include static html in case javascript is not supported. This will be overridden if things are working. -->\r\n    <div class=\"gr_container\">\r\n\t\r\n\t\t<div class=\"gr_book_container\">\r\n\t\t\t<a title=\"The Great Hearts\" class=\"gr_book_image\" rel=\"nofollow\" href=\"https:\/\/www.goodreads.com\/book\/show\/37560688-the-great-hearts?utm_medium=api&utm_source=author_widget\"><img decoding=\"async\" alt=\"The Great Hearts\" border=\"0\" src=\"https:\/\/i.gr-assets.com\/images\/S\/compressed.photo.goodreads.com\/books\/1513597704l\/37560688._SY75_.jpg\" \/><\/a>\r\n\t\t\t<a class=\"gr_book_title\" rel=\"nofollow\" href=\"https:\/\/www.goodreads.com\/book\/show\/37560688-the-great-hearts?utm_medium=api&utm_source=author_widget\">The Great Hearts<\/a>\r\n\t\t\t<br\/>\r\n\t\t\t<div class=\"gr_review_stats\">\r\n\t\t\t\treviews: 49\r\n\t\t\t\t<br\/>\r\n\t\t\t\tratings: 188 (avg rating 4.11)\r\n\t\t\t<\/div>\r\n\t\t\t<br style=\"clear: both\"\/>\r\n\t\t<\/div>\r\n\t<script type=\"text\/javascript\" charset=\"utf-8\" src=\"https:\/\/www.goodreads.com\/author\/author_widget\/317443.David_Oliver?num_books=1&widget_id=1626106102\"><\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-439a88e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"439a88e\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5db0567\" data-id=\"5db0567\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-56f0097 elementor-widget elementor-widget-text-editor\" data-id=\"56f0097\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><!DOCTYPE html>\r\n<html>\r\n<head>\r\n<meta charset=\"utf-8\" \/>\r\n<title>girafe<\/title>\r\n<script>(function() {\r\n  \/\/ If window.HTMLWidgets is already defined, then use it; otherwise create a\r\n  \/\/ new object. This allows preceding code to set options that affect the\r\n  \/\/ initialization process (though none currently exist).\r\n  window.HTMLWidgets = window.HTMLWidgets || {};\r\n\r\n  \/\/ See if we're running in a viewer pane. If not, we're in a web browser.\r\n  var viewerMode = window.HTMLWidgets.viewerMode =\r\n      \/\\bviewer_pane=1\\b\/.test(window.location);\r\n\r\n  \/\/ See if we're running in Shiny mode. If not, it's a static document.\r\n  \/\/ Note that static widgets can appear in both Shiny and static modes, but\r\n  \/\/ obviously, Shiny widgets can only appear in Shiny apps\/documents.\r\n  var shinyMode = window.HTMLWidgets.shinyMode =\r\n      typeof(window.Shiny) !== \"undefined\" && !!window.Shiny.outputBindings;\r\n\r\n  \/\/ We can't count on jQuery being available, so we implement our own\r\n  \/\/ version if necessary.\r\n  function querySelectorAll(scope, selector) {\r\n    if (typeof(jQuery) !== \"undefined\" && scope instanceof jQuery) {\r\n      return scope.find(selector);\r\n    }\r\n    if (scope.querySelectorAll) {\r\n      return scope.querySelectorAll(selector);\r\n    }\r\n  }\r\n\r\n  function asArray(value) {\r\n    if (value === null)\r\n      return [];\r\n    if ($.isArray(value))\r\n      return value;\r\n    return [value];\r\n  }\r\n\r\n  \/\/ Implement jQuery's extend\r\n  function extend(target \/*, ... *\/) {\r\n    if (arguments.length == 1) {\r\n      return target;\r\n    }\r\n    for (var i = 1; i < arguments.length; i++) {\r\n      var source = arguments[i];\r\n      for (var prop in source) {\r\n        if (source.hasOwnProperty(prop)) {\r\n          target[prop] = source[prop];\r\n        }\r\n      }\r\n    }\r\n    return target;\r\n  }\r\n\r\n  \/\/ IE8 doesn't support Array.forEach.\r\n  function forEach(values, callback, thisArg) {\r\n    if (values.forEach) {\r\n      values.forEach(callback, thisArg);\r\n    } else {\r\n      for (var i = 0; i < values.length; i++) {\r\n        callback.call(thisArg, values[i], i, values);\r\n      }\r\n    }\r\n  }\r\n\r\n  \/\/ Replaces the specified method with the return value of funcSource.\r\n  \/\/\r\n  \/\/ Note that funcSource should not BE the new method, it should be a function\r\n  \/\/ that RETURNS the new method. funcSource receives a single argument that is\r\n  \/\/ the overridden method, it can be called from the new method. The overridden\r\n  \/\/ method can be called like a regular function, it has the target permanently\r\n  \/\/ bound to it so \"this\" will work correctly.\r\n  function overrideMethod(target, methodName, funcSource) {\r\n    var superFunc = target[methodName] || function() {};\r\n    var superFuncBound = function() {\r\n      return superFunc.apply(target, arguments);\r\n    };\r\n    target[methodName] = funcSource(superFuncBound);\r\n  }\r\n\r\n  \/\/ Add a method to delegator that, when invoked, calls\r\n  \/\/ delegatee.methodName. If there is no such method on\r\n  \/\/ the delegatee, but there was one on delegator before\r\n  \/\/ delegateMethod was called, then the original version\r\n  \/\/ is invoked instead.\r\n  \/\/ For example:\r\n  \/\/\r\n  \/\/ var a = {\r\n  \/\/   method1: function() { console.log('a1'); }\r\n  \/\/   method2: function() { console.log('a2'); }\r\n  \/\/ };\r\n  \/\/ var b = {\r\n  \/\/   method1: function() { console.log('b1'); }\r\n  \/\/ };\r\n  \/\/ delegateMethod(a, b, \"method1\");\r\n  \/\/ delegateMethod(a, b, \"method2\");\r\n  \/\/ a.method1();\r\n  \/\/ a.method2();\r\n  \/\/\r\n  \/\/ The output would be \"b1\", \"a2\".\r\n  function delegateMethod(delegator, delegatee, methodName) {\r\n    var inherited = delegator[methodName];\r\n    delegator[methodName] = function() {\r\n      var target = delegatee;\r\n      var method = delegatee[methodName];\r\n\r\n      \/\/ The method doesn't exist on the delegatee. Instead,\r\n      \/\/ call the method on the delegator, if it exists.\r\n      if (!method) {\r\n        target = delegator;\r\n        method = inherited;\r\n      }\r\n\r\n      if (method) {\r\n        return method.apply(target, arguments);\r\n      }\r\n    };\r\n  }\r\n\r\n  \/\/ Implement a vague facsimilie of jQuery's data method\r\n  function elementData(el, name, value) {\r\n    if (arguments.length == 2) {\r\n      return el[\"htmlwidget_data_\" + name];\r\n    } else if (arguments.length == 3) {\r\n      el[\"htmlwidget_data_\" + name] = value;\r\n      return el;\r\n    } else {\r\n      throw new Error(\"Wrong number of arguments for elementData: \" +\r\n        arguments.length);\r\n    }\r\n  }\r\n\r\n  \/\/ http:\/\/stackoverflow.com\/questions\/3446170\/escape-string-for-use-in-javascript-regex\r\n  function escapeRegExp(str) {\r\n    return str.replace(\/[\\-\\[\\]\\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]\/g, \"\\\\$&\");\r\n  }\r\n\r\n  function hasClass(el, className) {\r\n    var re = new RegExp(\"\\\\b\" + escapeRegExp(className) + \"\\\\b\");\r\n    return re.test(el.className);\r\n  }\r\n\r\n  \/\/ elements - array (or array-like object) of HTML elements\r\n  \/\/ className - class name to test for\r\n  \/\/ include - if true, only return elements with given className;\r\n  \/\/   if false, only return elements *without* given className\r\n  function filterByClass(elements, className, include) {\r\n    var results = [];\r\n    for (var i = 0; i < elements.length; i++) {\r\n      if (hasClass(elements[i], className) == include)\r\n        results.push(elements[i]);\r\n    }\r\n    return results;\r\n  }\r\n\r\n  function on(obj, eventName, func) {\r\n    if (obj.addEventListener) {\r\n      obj.addEventListener(eventName, func, false);\r\n    } else if (obj.attachEvent) {\r\n      obj.attachEvent(eventName, func);\r\n    }\r\n  }\r\n\r\n  function off(obj, eventName, func) {\r\n    if (obj.removeEventListener)\r\n      obj.removeEventListener(eventName, func, false);\r\n    else if (obj.detachEvent) {\r\n      obj.detachEvent(eventName, func);\r\n    }\r\n  }\r\n\r\n  \/\/ Translate array of values to top\/right\/bottom\/left, as usual with\r\n  \/\/ the \"padding\" CSS property\r\n  \/\/ https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/padding\r\n  function unpackPadding(value) {\r\n    if (typeof(value) === \"number\")\r\n      value = [value];\r\n    if (value.length === 1) {\r\n      return {top: value[0], right: value[0], bottom: value[0], left: value[0]};\r\n    }\r\n    if (value.length === 2) {\r\n      return {top: value[0], right: value[1], bottom: value[0], left: value[1]};\r\n    }\r\n    if (value.length === 3) {\r\n      return {top: value[0], right: value[1], bottom: value[2], left: value[1]};\r\n    }\r\n    if (value.length === 4) {\r\n      return {top: value[0], right: value[1], bottom: value[2], left: value[3]};\r\n    }\r\n  }\r\n\r\n  \/\/ Convert an unpacked padding object to a CSS value\r\n  function paddingToCss(paddingObj) {\r\n    return paddingObj.top + \"px \" + paddingObj.right + \"px \" + paddingObj.bottom + \"px \" + paddingObj.left + \"px\";\r\n  }\r\n\r\n  \/\/ Makes a number suitable for CSS\r\n  function px(x) {\r\n    if (typeof(x) === \"number\")\r\n      return x + \"px\";\r\n    else\r\n      return x;\r\n  }\r\n\r\n  \/\/ Retrieves runtime widget sizing information for an element.\r\n  \/\/ The return value is either null, or an object with fill, padding,\r\n  \/\/ defaultWidth, defaultHeight fields.\r\n  function sizingPolicy(el) {\r\n    var sizingEl = document.querySelector(\"script[data-for='\" + el.id + \"'][type='application\/htmlwidget-sizing']\");\r\n    if (!sizingEl)\r\n      return null;\r\n    var sp = JSON.parse(sizingEl.textContent || sizingEl.text || \"{}\");\r\n    if (viewerMode) {\r\n      return sp.viewer;\r\n    } else {\r\n      return sp.browser;\r\n    }\r\n  }\r\n\r\n  \/\/ @param tasks Array of strings (or falsy value, in which case no-op).\r\n  \/\/   Each element must be a valid JavaScript expression that yields a\r\n  \/\/   function. Or, can be an array of objects with \"code\" and \"data\"\r\n  \/\/   properties; in this case, the \"code\" property should be a string\r\n  \/\/   of JS that's an expr that yields a function, and \"data\" should be\r\n  \/\/   an object that will be added as an additional argument when that\r\n  \/\/   function is called.\r\n  \/\/ @param target The object that will be \"this\" for each function\r\n  \/\/   execution.\r\n  \/\/ @param args Array of arguments to be passed to the functions. (The\r\n  \/\/   same arguments will be passed to all functions.)\r\n  function evalAndRun(tasks, target, args) {\r\n    if (tasks) {\r\n      forEach(tasks, function(task) {\r\n        var theseArgs = args;\r\n        if (typeof(task) === \"object\") {\r\n          theseArgs = theseArgs.concat([task.data]);\r\n          task = task.code;\r\n        }\r\n        var taskFunc = tryEval(task);\r\n        if (typeof(taskFunc) !== \"function\") {\r\n          throw new Error(\"Task must be a function! Source:\\n\" + task);\r\n        }\r\n        taskFunc.apply(target, theseArgs);\r\n      });\r\n    }\r\n  }\r\n\r\n  \/\/ Attempt eval() both with and without enclosing in parentheses.\r\n  \/\/ Note that enclosing coerces a function declaration into\r\n  \/\/ an expression that eval() can parse\r\n  \/\/ (otherwise, a SyntaxError is thrown)\r\n  function tryEval(code) {\r\n    var result = null;\r\n    try {\r\n      result = eval(\"(\" + code + \")\");\r\n    } catch(error) {\r\n      if (!(error instanceof SyntaxError)) {\r\n        throw error;\r\n      }\r\n      try {\r\n        result = eval(code);\r\n      } catch(e) {\r\n        if (e instanceof SyntaxError) {\r\n          throw error;\r\n        } else {\r\n          throw e;\r\n        }\r\n      }\r\n    }\r\n    return result;\r\n  }\r\n\r\n  function initSizing(el) {\r\n    var sizing = sizingPolicy(el);\r\n    if (!sizing)\r\n      return;\r\n\r\n    var cel = document.getElementById(\"htmlwidget_container\");\r\n    if (!cel)\r\n      return;\r\n\r\n    if (typeof(sizing.padding) !== \"undefined\") {\r\n      document.body.style.margin = \"0\";\r\n      document.body.style.padding = paddingToCss(unpackPadding(sizing.padding));\r\n    }\r\n\r\n    if (sizing.fill) {\r\n      document.body.style.overflow = \"hidden\";\r\n      document.body.style.width = \"100%\";\r\n      document.body.style.height = \"100%\";\r\n      document.documentElement.style.width = \"100%\";\r\n      document.documentElement.style.height = \"100%\";\r\n      if (cel) {\r\n        cel.style.position = \"absolute\";\r\n        var pad = unpackPadding(sizing.padding);\r\n        cel.style.top = pad.top + \"px\";\r\n        cel.style.right = pad.right + \"px\";\r\n        cel.style.bottom = pad.bottom + \"px\";\r\n        cel.style.left = pad.left + \"px\";\r\n        el.style.width = \"100%\";\r\n        el.style.height = \"100%\";\r\n      }\r\n\r\n      return {\r\n        getWidth: function() { return cel.offsetWidth; },\r\n        getHeight: function() { return cel.offsetHeight; }\r\n      };\r\n\r\n    } else {\r\n      el.style.width = px(sizing.width);\r\n      el.style.height = px(sizing.height);\r\n\r\n      return {\r\n        getWidth: function() { return el.offsetWidth; },\r\n        getHeight: function() { return el.offsetHeight; }\r\n      };\r\n    }\r\n  }\r\n\r\n  \/\/ Default implementations for methods\r\n  var defaults = {\r\n    find: function(scope) {\r\n      return querySelectorAll(scope, \".\" + this.name);\r\n    },\r\n    renderError: function(el, err) {\r\n      var $el = $(el);\r\n\r\n      this.clearError(el);\r\n\r\n      \/\/ Add all these error classes, as Shiny does\r\n      var errClass = \"shiny-output-error\";\r\n      if (err.type !== null) {\r\n        \/\/ use the classes of the error condition as CSS class names\r\n        errClass = errClass + \" \" + $.map(asArray(err.type), function(type) {\r\n          return errClass + \"-\" + type;\r\n        }).join(\" \");\r\n      }\r\n      errClass = errClass + \" htmlwidgets-error\";\r\n\r\n      \/\/ Is el inline or block? If inline or inline-block, just display:none it\r\n      \/\/ and add an inline error.\r\n      var display = $el.css(\"display\");\r\n      $el.data(\"restore-display-mode\", display);\r\n\r\n      if (display === \"inline\" || display === \"inline-block\") {\r\n        $el.hide();\r\n        if (err.message !== \"\") {\r\n          var errorSpan = $(\"<span>\").addClass(errClass);\r\n          errorSpan.text(err.message);\r\n          $el.after(errorSpan);\r\n        }\r\n      } else if (display === \"block\") {\r\n        \/\/ If block, add an error just after the el, set visibility:none on the\r\n        \/\/ el, and position the error to be on top of the el.\r\n        \/\/ Mark it with a unique ID and CSS class so we can remove it later.\r\n        $el.css(\"visibility\", \"hidden\");\r\n        if (err.message !== \"\") {\r\n          var errorDiv = $(\"<div>\").addClass(errClass).css(\"position\", \"absolute\")\r\n            .css(\"top\", el.offsetTop)\r\n            .css(\"left\", el.offsetLeft)\r\n            \/\/ setting width can push out the page size, forcing otherwise\r\n            \/\/ unnecessary scrollbars to appear and making it impossible for\r\n            \/\/ the element to shrink; so use max-width instead\r\n            .css(\"maxWidth\", el.offsetWidth)\r\n            .css(\"height\", el.offsetHeight);\r\n          errorDiv.text(err.message);\r\n          $el.after(errorDiv);\r\n\r\n          \/\/ Really dumb way to keep the size\/position of the error in sync with\r\n          \/\/ the parent element as the window is resized or whatever.\r\n          var intId = setInterval(function() {\r\n            if (!errorDiv[0].parentElement) {\r\n              clearInterval(intId);\r\n              return;\r\n            }\r\n            errorDiv\r\n              .css(\"top\", el.offsetTop)\r\n              .css(\"left\", el.offsetLeft)\r\n              .css(\"maxWidth\", el.offsetWidth)\r\n              .css(\"height\", el.offsetHeight);\r\n          }, 500);\r\n        }\r\n      }\r\n    },\r\n    clearError: function(el) {\r\n      var $el = $(el);\r\n      var display = $el.data(\"restore-display-mode\");\r\n      $el.data(\"restore-display-mode\", null);\r\n\r\n      if (display === \"inline\" || display === \"inline-block\") {\r\n        if (display)\r\n          $el.css(\"display\", display);\r\n        $(el.nextSibling).filter(\".htmlwidgets-error\").remove();\r\n      } else if (display === \"block\"){\r\n        $el.css(\"visibility\", \"inherit\");\r\n        $(el.nextSibling).filter(\".htmlwidgets-error\").remove();\r\n      }\r\n    },\r\n    sizing: {}\r\n  };\r\n\r\n  \/\/ Called by widget bindings to register a new type of widget. The definition\r\n  \/\/ object can contain the following properties:\r\n  \/\/ - name (required) - A string indicating the binding name, which will be\r\n  \/\/   used by default as the CSS classname to look for.\r\n  \/\/ - initialize (optional) - A function(el) that will be called once per\r\n  \/\/   widget element; if a value is returned, it will be passed as the third\r\n  \/\/   value to renderValue.\r\n  \/\/ - renderValue (required) - A function(el, data, initValue) that will be\r\n  \/\/   called with data. Static contexts will cause this to be called once per\r\n  \/\/   element; Shiny apps will cause this to be called multiple times per\r\n  \/\/   element, as the data changes.\r\n  window.HTMLWidgets.widget = function(definition) {\r\n    if (!definition.name) {\r\n      throw new Error(\"Widget must have a name\");\r\n    }\r\n    if (!definition.type) {\r\n      throw new Error(\"Widget must have a type\");\r\n    }\r\n    \/\/ Currently we only support output widgets\r\n    if (definition.type !== \"output\") {\r\n      throw new Error(\"Unrecognized widget type '\" + definition.type + \"'\");\r\n    }\r\n    \/\/ TODO: Verify that .name is a valid CSS classname\r\n\r\n    \/\/ Support new-style instance-bound definitions. Old-style class-bound\r\n    \/\/ definitions have one widget \"object\" per widget per type\/class of\r\n    \/\/ widget; the renderValue and resize methods on such widget objects\r\n    \/\/ take el and instance arguments, because the widget object can't\r\n    \/\/ store them. New-style instance-bound definitions have one widget\r\n    \/\/ object per widget instance; the definition that's passed in doesn't\r\n    \/\/ provide renderValue or resize methods at all, just the single method\r\n    \/\/   factory(el, width, height)\r\n    \/\/ which returns an object that has renderValue(x) and resize(w, h).\r\n    \/\/ This enables a far more natural programming style for the widget\r\n    \/\/ author, who can store per-instance state using either OO-style\r\n    \/\/ instance fields or functional-style closure variables (I guess this\r\n    \/\/ is in contrast to what can only be called C-style pseudo-OO which is\r\n    \/\/ what we required before).\r\n    if (definition.factory) {\r\n      definition = createLegacyDefinitionAdapter(definition);\r\n    }\r\n\r\n    if (!definition.renderValue) {\r\n      throw new Error(\"Widget must have a renderValue function\");\r\n    }\r\n\r\n    \/\/ For static rendering (non-Shiny), use a simple widget registration\r\n    \/\/ scheme. We also use this scheme for Shiny apps\/documents that also\r\n    \/\/ contain static widgets.\r\n    window.HTMLWidgets.widgets = window.HTMLWidgets.widgets || [];\r\n    \/\/ Merge defaults into the definition; don't mutate the original definition.\r\n    var staticBinding = extend({}, defaults, definition);\r\n    overrideMethod(staticBinding, \"find\", function(superfunc) {\r\n      return function(scope) {\r\n        var results = superfunc(scope);\r\n        \/\/ Filter out Shiny outputs, we only want the static kind\r\n        return filterByClass(results, \"html-widget-output\", false);\r\n      };\r\n    });\r\n    window.HTMLWidgets.widgets.push(staticBinding);\r\n\r\n    if (shinyMode) {\r\n      \/\/ Shiny is running. Register the definition with an output binding.\r\n      \/\/ The definition itself will not be the output binding, instead\r\n      \/\/ we will make an output binding object that delegates to the\r\n      \/\/ definition. This is because we foolishly used the same method\r\n      \/\/ name (renderValue) for htmlwidgets definition and Shiny bindings\r\n      \/\/ but they actually have quite different semantics (the Shiny\r\n      \/\/ bindings receive data that includes lots of metadata that it\r\n      \/\/ strips off before calling htmlwidgets renderValue). We can't\r\n      \/\/ just ignore the difference because in some widgets it's helpful\r\n      \/\/ to call this.renderValue() from inside of resize(), and if\r\n      \/\/ we're not delegating, then that call will go to the Shiny\r\n      \/\/ version instead of the htmlwidgets version.\r\n\r\n      \/\/ Merge defaults with definition, without mutating either.\r\n      var bindingDef = extend({}, defaults, definition);\r\n\r\n      \/\/ This object will be our actual Shiny binding.\r\n      var shinyBinding = new Shiny.OutputBinding();\r\n\r\n      \/\/ With a few exceptions, we'll want to simply use the bindingDef's\r\n      \/\/ version of methods if they are available, otherwise fall back to\r\n      \/\/ Shiny's defaults. NOTE: If Shiny's output bindings gain additional\r\n      \/\/ methods in the future, and we want them to be overrideable by\r\n      \/\/ HTMLWidget binding definitions, then we'll need to add them to this\r\n      \/\/ list.\r\n      delegateMethod(shinyBinding, bindingDef, \"getId\");\r\n      delegateMethod(shinyBinding, bindingDef, \"onValueChange\");\r\n      delegateMethod(shinyBinding, bindingDef, \"onValueError\");\r\n      delegateMethod(shinyBinding, bindingDef, \"renderError\");\r\n      delegateMethod(shinyBinding, bindingDef, \"clearError\");\r\n      delegateMethod(shinyBinding, bindingDef, \"showProgress\");\r\n\r\n      \/\/ The find, renderValue, and resize are handled differently, because we\r\n      \/\/ want to actually decorate the behavior of the bindingDef methods.\r\n\r\n      shinyBinding.find = function(scope) {\r\n        var results = bindingDef.find(scope);\r\n\r\n        \/\/ Only return elements that are Shiny outputs, not static ones\r\n        var dynamicResults = results.filter(\".html-widget-output\");\r\n\r\n        \/\/ It's possible that whatever caused Shiny to think there might be\r\n        \/\/ new dynamic outputs, also caused there to be new static outputs.\r\n        \/\/ Since there might be lots of different htmlwidgets bindings, we\r\n        \/\/ schedule execution for later--no need to staticRender multiple\r\n        \/\/ times.\r\n        if (results.length !== dynamicResults.length)\r\n          scheduleStaticRender();\r\n\r\n        return dynamicResults;\r\n      };\r\n\r\n      \/\/ Wrap renderValue to handle initialization, which unfortunately isn't\r\n      \/\/ supported natively by Shiny at the time of this writing.\r\n\r\n      shinyBinding.renderValue = function(el, data) {\r\n        Shiny.renderDependencies(data.deps);\r\n        \/\/ Resolve strings marked as javascript literals to objects\r\n        if (!(data.evals instanceof Array)) data.evals = [data.evals];\r\n        for (var i = 0; data.evals && i < data.evals.length; i++) {\r\n          window.HTMLWidgets.evaluateStringMember(data.x, data.evals[i]);\r\n        }\r\n        if (!bindingDef.renderOnNullValue) {\r\n          if (data.x === null) {\r\n            el.style.visibility = \"hidden\";\r\n            return;\r\n          } else {\r\n            el.style.visibility = \"inherit\";\r\n          }\r\n        }\r\n        if (!elementData(el, \"initialized\")) {\r\n          initSizing(el);\r\n\r\n          elementData(el, \"initialized\", true);\r\n          if (bindingDef.initialize) {\r\n            var result = bindingDef.initialize(el, el.offsetWidth,\r\n              el.offsetHeight);\r\n            elementData(el, \"init_result\", result);\r\n          }\r\n        }\r\n        bindingDef.renderValue(el, data.x, elementData(el, \"init_result\"));\r\n        evalAndRun(data.jsHooks.render, elementData(el, \"init_result\"), [el, data.x]);\r\n      };\r\n\r\n      \/\/ Only override resize if bindingDef implements it\r\n      if (bindingDef.resize) {\r\n        shinyBinding.resize = function(el, width, height) {\r\n          \/\/ Shiny can call resize before initialize\/renderValue have been\r\n          \/\/ called, which doesn't make sense for widgets.\r\n          if (elementData(el, \"initialized\")) {\r\n            bindingDef.resize(el, width, height, elementData(el, \"init_result\"));\r\n          }\r\n        };\r\n      }\r\n\r\n      Shiny.outputBindings.register(shinyBinding, bindingDef.name);\r\n    }\r\n  };\r\n\r\n  var scheduleStaticRenderTimerId = null;\r\n  function scheduleStaticRender() {\r\n    if (!scheduleStaticRenderTimerId) {\r\n      scheduleStaticRenderTimerId = setTimeout(function() {\r\n        scheduleStaticRenderTimerId = null;\r\n        window.HTMLWidgets.staticRender();\r\n      }, 1);\r\n    }\r\n  }\r\n\r\n  \/\/ Render static widgets after the document finishes loading\r\n  \/\/ Statically render all elements that are of this widget's class\r\n  window.HTMLWidgets.staticRender = function() {\r\n    var bindings = window.HTMLWidgets.widgets || [];\r\n    forEach(bindings, function(binding) {\r\n      var matches = binding.find(document.documentElement);\r\n      forEach(matches, function(el) {\r\n        var sizeObj = initSizing(el, binding);\r\n\r\n        if (hasClass(el, \"html-widget-static-bound\"))\r\n          return;\r\n        el.className = el.className + \" html-widget-static-bound\";\r\n\r\n        var initResult;\r\n        if (binding.initialize) {\r\n          initResult = binding.initialize(el,\r\n            sizeObj ? sizeObj.getWidth() : el.offsetWidth,\r\n            sizeObj ? sizeObj.getHeight() : el.offsetHeight\r\n          );\r\n          elementData(el, \"init_result\", initResult);\r\n        }\r\n\r\n        if (binding.resize) {\r\n          var lastSize = {\r\n            w: sizeObj ? sizeObj.getWidth() : el.offsetWidth,\r\n            h: sizeObj ? sizeObj.getHeight() : el.offsetHeight\r\n          };\r\n          var resizeHandler = function(e) {\r\n            var size = {\r\n              w: sizeObj ? sizeObj.getWidth() : el.offsetWidth,\r\n              h: sizeObj ? sizeObj.getHeight() : el.offsetHeight\r\n            };\r\n            if (size.w === 0 && size.h === 0)\r\n              return;\r\n            if (size.w === lastSize.w && size.h === lastSize.h)\r\n              return;\r\n            lastSize = size;\r\n            binding.resize(el, size.w, size.h, initResult);\r\n          };\r\n\r\n          on(window, \"resize\", resizeHandler);\r\n\r\n          \/\/ This is needed for cases where we're running in a Shiny\r\n          \/\/ app, but the widget itself is not a Shiny output, but\r\n          \/\/ rather a simple static widget. One example of this is\r\n          \/\/ an rmarkdown document that has runtime:shiny and widget\r\n          \/\/ that isn't in a render function. Shiny only knows to\r\n          \/\/ call resize handlers for Shiny outputs, not for static\r\n          \/\/ widgets, so we do it ourselves.\r\n          if (window.jQuery) {\r\n            window.jQuery(document).on(\r\n              \"shown.htmlwidgets shown.bs.tab.htmlwidgets shown.bs.collapse.htmlwidgets\",\r\n              resizeHandler\r\n            );\r\n            window.jQuery(document).on(\r\n              \"hidden.htmlwidgets hidden.bs.tab.htmlwidgets hidden.bs.collapse.htmlwidgets\",\r\n              resizeHandler\r\n            );\r\n          }\r\n\r\n          \/\/ This is needed for the specific case of ioslides, which\r\n          \/\/ flips slides between display:none and display:block.\r\n          \/\/ Ideally we would not have to have ioslide-specific code\r\n          \/\/ here, but rather have ioslides raise a generic event,\r\n          \/\/ but the rmarkdown package just went to CRAN so the\r\n          \/\/ window to getting that fixed may be long.\r\n          if (window.addEventListener) {\r\n            \/\/ It's OK to limit this to window.addEventListener\r\n            \/\/ browsers because ioslides itself only supports\r\n            \/\/ such browsers.\r\n            on(document, \"slideenter\", resizeHandler);\r\n            on(document, \"slideleave\", resizeHandler);\r\n          }\r\n        }\r\n\r\n        var scriptData = document.querySelector(\"script[data-for='\" + el.id + \"'][type='application\/json']\");\r\n        if (scriptData) {\r\n          var data = JSON.parse(scriptData.textContent || scriptData.text);\r\n          \/\/ Resolve strings marked as javascript literals to objects\r\n          if (!(data.evals instanceof Array)) data.evals = [data.evals];\r\n          for (var k = 0; data.evals && k < data.evals.length; k++) {\r\n            window.HTMLWidgets.evaluateStringMember(data.x, data.evals[k]);\r\n          }\r\n          binding.renderValue(el, data.x, initResult);\r\n          evalAndRun(data.jsHooks.render, initResult, [el, data.x]);\r\n        }\r\n      });\r\n    });\r\n\r\n    invokePostRenderHandlers();\r\n  }\r\n\r\n\r\n  function has_jQuery3() {\r\n    if (!window.jQuery) {\r\n      return false;\r\n    }\r\n    var $version = window.jQuery.fn.jquery;\r\n    var $major_version = parseInt($version.split(\".\")[0]);\r\n    return $major_version >= 3;\r\n  }\r\n\r\n  \/*\r\n  \/ Shiny 1.4 bumped jQuery from 1.x to 3.x which means jQuery's\r\n  \/ on-ready handler (i.e., $(fn)) is now asyncronous (i.e., it now\r\n  \/ really means $(setTimeout(fn)).\r\n  \/ https:\/\/jquery.com\/upgrade-guide\/3.0\/#breaking-change-document-ready-handlers-are-now-asynchronous\r\n  \/\r\n  \/ Since Shiny uses $() to schedule initShiny, shiny>=1.4 calls initShiny\r\n  \/ one tick later than it did before, which means staticRender() is\r\n  \/ called renderValue() earlier than (advanced) widget authors might be expecting.\r\n  \/ https:\/\/github.com\/rstudio\/shiny\/issues\/2630\r\n  \/\r\n  \/ For a concrete example, leaflet has some methods (e.g., updateBounds)\r\n  \/ which reference Shiny methods registered in initShiny (e.g., setInputValue).\r\n  \/ Since leaflet is privy to this life-cycle, it knows to use setTimeout() to\r\n  \/ delay execution of those methods (until Shiny methods are ready)\r\n  \/ https:\/\/github.com\/rstudio\/leaflet\/blob\/18ec981\/javascript\/src\/index.js#L266-L268\r\n  \/\r\n  \/ Ideally widget authors wouldn't need to use this setTimeout() hack that\r\n  \/ leaflet uses to call Shiny methods on a staticRender(). In the long run,\r\n  \/ the logic initShiny should be broken up so that method registration happens\r\n  \/ right away, but binding happens later.\r\n  *\/\r\n  function maybeStaticRenderLater() {\r\n    if (shinyMode && has_jQuery3()) {\r\n      window.jQuery(window.HTMLWidgets.staticRender);\r\n    } else {\r\n      window.HTMLWidgets.staticRender();\r\n    }\r\n  }\r\n\r\n  if (document.addEventListener) {\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n      document.removeEventListener(\"DOMContentLoaded\", arguments.callee, false);\r\n      maybeStaticRenderLater();\r\n    }, false);\r\n  } else if (document.attachEvent) {\r\n    document.attachEvent(\"onreadystatechange\", function() {\r\n      if (document.readyState === \"complete\") {\r\n        document.detachEvent(\"onreadystatechange\", arguments.callee);\r\n        maybeStaticRenderLater();\r\n      }\r\n    });\r\n  }\r\n\r\n\r\n  window.HTMLWidgets.getAttachmentUrl = function(depname, key) {\r\n    \/\/ If no key, default to the first item\r\n    if (typeof(key) === \"undefined\")\r\n      key = 1;\r\n\r\n    var link = document.getElementById(depname + \"-\" + key + \"-attachment\");\r\n    if (!link) {\r\n      throw new Error(\"Attachment \" + depname + \"\/\" + key + \" not found in document\");\r\n    }\r\n    return link.getAttribute(\"href\");\r\n  };\r\n\r\n  window.HTMLWidgets.dataframeToD3 = function(df) {\r\n    var names = [];\r\n    var length;\r\n    for (var name in df) {\r\n        if (df.hasOwnProperty(name))\r\n            names.push(name);\r\n        if (typeof(df[name]) !== \"object\" || typeof(df[name].length) === \"undefined\") {\r\n            throw new Error(\"All fields must be arrays\");\r\n        } else if (typeof(length) !== \"undefined\" && length !== df[name].length) {\r\n            throw new Error(\"All fields must be arrays of the same length\");\r\n        }\r\n        length = df[name].length;\r\n    }\r\n    var results = [];\r\n    var item;\r\n    for (var row = 0; row < length; row++) {\r\n        item = {};\r\n        for (var col = 0; col < names.length; col++) {\r\n            item[names[col]] = df[names[col]][row];\r\n        }\r\n        results.push(item);\r\n    }\r\n    return results;\r\n  };\r\n\r\n  window.HTMLWidgets.transposeArray2D = function(array) {\r\n      if (array.length === 0) return array;\r\n      var newArray = array[0].map(function(col, i) {\r\n          return array.map(function(row) {\r\n              return row[i]\r\n          })\r\n      });\r\n      return newArray;\r\n  };\r\n  \/\/ Split value at splitChar, but allow splitChar to be escaped\r\n  \/\/ using escapeChar. Any other characters escaped by escapeChar\r\n  \/\/ will be included as usual (including escapeChar itself).\r\n  function splitWithEscape(value, splitChar, escapeChar) {\r\n    var results = [];\r\n    var escapeMode = false;\r\n    var currentResult = \"\";\r\n    for (var pos = 0; pos < value.length; pos++) {\r\n      if (!escapeMode) {\r\n        if (value[pos] === splitChar) {\r\n          results.push(currentResult);\r\n          currentResult = \"\";\r\n        } else if (value[pos] === escapeChar) {\r\n          escapeMode = true;\r\n        } else {\r\n          currentResult += value[pos];\r\n        }\r\n      } else {\r\n        currentResult += value[pos];\r\n        escapeMode = false;\r\n      }\r\n    }\r\n    if (currentResult !== \"\") {\r\n      results.push(currentResult);\r\n    }\r\n    return results;\r\n  }\r\n  \/\/ Function authored by Yihui\/JJ Allaire\r\n  window.HTMLWidgets.evaluateStringMember = function(o, member) {\r\n    var parts = splitWithEscape(member, '.', '\\\\');\r\n    for (var i = 0, l = parts.length; i < l; i++) {\r\n      var part = parts[i];\r\n      \/\/ part may be a character or 'numeric' member name\r\n      if (o !== null && typeof o === \"object\" && part in o) {\r\n        if (i == (l - 1)) { \/\/ if we are at the end of the line then evalulate\r\n          if (typeof o[part] === \"string\")\r\n            o[part] = tryEval(o[part]);\r\n        } else { \/\/ otherwise continue to next embedded object\r\n          o = o[part];\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  \/\/ Retrieve the HTMLWidget instance (i.e. the return value of an\r\n  \/\/ HTMLWidget binding's initialize() or factory() function)\r\n  \/\/ associated with an element, or null if none.\r\n  window.HTMLWidgets.getInstance = function(el) {\r\n    return elementData(el, \"init_result\");\r\n  };\r\n\r\n  \/\/ Finds the first element in the scope that matches the selector,\r\n  \/\/ and returns the HTMLWidget instance (i.e. the return value of\r\n  \/\/ an HTMLWidget binding's initialize() or factory() function)\r\n  \/\/ associated with that element, if any. If no element matches the\r\n  \/\/ selector, or the first matching element has no HTMLWidget\r\n  \/\/ instance associated with it, then null is returned.\r\n  \/\/\r\n  \/\/ The scope argument is optional, and defaults to window.document.\r\n  window.HTMLWidgets.find = function(scope, selector) {\r\n    if (arguments.length == 1) {\r\n      selector = scope;\r\n      scope = document;\r\n    }\r\n\r\n    var el = scope.querySelector(selector);\r\n    if (el === null) {\r\n      return null;\r\n    } else {\r\n      return window.HTMLWidgets.getInstance(el);\r\n    }\r\n  };\r\n\r\n  \/\/ Finds all elements in the scope that match the selector, and\r\n  \/\/ returns the HTMLWidget instances (i.e. the return values of\r\n  \/\/ an HTMLWidget binding's initialize() or factory() function)\r\n  \/\/ associated with the elements, in an array. If elements that\r\n  \/\/ match the selector don't have an associated HTMLWidget\r\n  \/\/ instance, the returned array will contain nulls.\r\n  \/\/\r\n  \/\/ The scope argument is optional, and defaults to window.document.\r\n  window.HTMLWidgets.findAll = function(scope, selector) {\r\n    if (arguments.length == 1) {\r\n      selector = scope;\r\n      scope = document;\r\n    }\r\n\r\n    var nodes = scope.querySelectorAll(selector);\r\n    var results = [];\r\n    for (var i = 0; i < nodes.length; i++) {\r\n      results.push(window.HTMLWidgets.getInstance(nodes[i]));\r\n    }\r\n    return results;\r\n  };\r\n\r\n  var postRenderHandlers = [];\r\n  function invokePostRenderHandlers() {\r\n    while (postRenderHandlers.length) {\r\n      var handler = postRenderHandlers.shift();\r\n      if (handler) {\r\n        handler();\r\n      }\r\n    }\r\n  }\r\n\r\n  \/\/ Register the given callback function to be invoked after the\r\n  \/\/ next time static widgets are rendered.\r\n  window.HTMLWidgets.addPostRenderHandler = function(callback) {\r\n    postRenderHandlers.push(callback);\r\n  };\r\n\r\n  \/\/ Takes a new-style instance-bound definition, and returns an\r\n  \/\/ old-style class-bound definition. This saves us from having\r\n  \/\/ to rewrite all the logic in this file to accomodate both\r\n  \/\/ types of definitions.\r\n  function createLegacyDefinitionAdapter(defn) {\r\n    var result = {\r\n      name: defn.name,\r\n      type: defn.type,\r\n      initialize: function(el, width, height) {\r\n        return defn.factory(el, width, height);\r\n      },\r\n      renderValue: function(el, x, instance) {\r\n        return instance.renderValue(x);\r\n      },\r\n      resize: function(el, width, height, instance) {\r\n        return instance.resize(width, height);\r\n      }\r\n    };\r\n\r\n    if (defn.find)\r\n      result.find = defn.find;\r\n    if (defn.renderError)\r\n      result.renderError = defn.renderError;\r\n    if (defn.clearError)\r\n      result.clearError = defn.clearError;\r\n\r\n    return result;\r\n  }\r\n})();\r\n\r\n<\/script>\r\n<script>\/\/ https:\/\/d3js.org\/d3-selection\/ v1.4.2 Copyright 2020 Mike Bostock\r\n!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],n):n((t=t||self).d3=t.d3||{})}(this,function(t){\"use strict\";var n=\"http:\/\/www.w3.org\/1999\/xhtml\",e={svg:\"http:\/\/www.w3.org\/2000\/svg\",xhtml:n,xlink:\"http:\/\/www.w3.org\/1999\/xlink\",xml:\"http:\/\/www.w3.org\/XML\/1998\/namespace\",xmlns:\"http:\/\/www.w3.org\/2000\/xmlns\/\"};function r(t){var n=t+=\"\",r=n.indexOf(\":\");return r>=0&&\"xmlns\"!==(n=t.slice(0,r))&&(t=t.slice(r+1)),e.hasOwnProperty(n)?{space:e[n],local:t}:t}function i(t){var e=r(t);return(e.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===n&&e.documentElement.namespaceURI===n?e.createElement(t):e.createElementNS(r,t)}})(e)}function o(){}function u(t){return null==t?o:function(){return this.querySelector(t)}}function c(){return[]}function s(t){return null==t?c:function(){return this.querySelectorAll(t)}}function a(t){return function(){return this.matches(t)}}function l(t){return new Array(t.length)}function f(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}f.prototype={constructor:f,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var h=\"$\";function p(t,n,e,r,i,o){for(var u,c=0,s=n.length,a=o.length;c<a;++c)(u=n[c])?(u.__data__=o[c],r[c]=u):e[c]=new f(t,o[c]);for(;c<s;++c)(u=n[c])&&(i[c]=u)}function _(t,n,e,r,i,o,u){var c,s,a,l={},p=n.length,_=o.length,v=new Array(p);for(c=0;c<p;++c)(s=n[c])&&(v[c]=a=h+u.call(s,s.__data__,c,n),a in l?i[c]=s:l[a]=s);for(c=0;c<_;++c)(s=l[a=h+u.call(t,o[c],c,o)])?(r[c]=s,s.__data__=o[c],l[a]=null):e[c]=new f(t,o[c]);for(c=0;c<p;++c)(s=n[c])&&l[v[c]]===s&&(i[c]=s)}function v(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function d(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function y(t,n){return t.style.getPropertyValue(n)||d(t).getComputedStyle(t,null).getPropertyValue(n)}function m(t){return t.trim().split(\/^|\\s+\/)}function g(t){return t.classList||new w(t)}function w(t){this._node=t,this._names=m(t.getAttribute(\"class\")||\"\")}function A(t,n){for(var e=g(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function x(t,n){for(var e=g(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function S(){this.textContent=\"\"}function b(){this.innerHTML=\"\"}function E(){this.nextSibling&&this.parentNode.appendChild(this)}function N(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function P(){return null}function C(){var t=this.parentNode;t&&t.removeChild(this)}function L(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function T(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}w.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute(\"class\",this._names.join(\" \")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute(\"class\",this._names.join(\" \")))},contains:function(t){return this._names.indexOf(t)>=0}};var B={};(t.event=null,\"undefined\"!=typeof document)&&(\"onmouseenter\"in document.documentElement||(B={mouseenter:\"mouseover\",mouseleave:\"mouseout\"}));function q(t,n,e){return t=D(t,n,e),function(n){var e=n.relatedTarget;e&&(e===this||8&e.compareDocumentPosition(this))||t.call(this,n)}}function D(n,e,r){return function(i){var o=t.event;t.event=i;try{n.call(this,this.__data__,e,r)}finally{t.event=o}}}function M(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.capture);++i?n.length=i:delete this.__on}}}function O(t,n,e){var r=B.hasOwnProperty(t.type)?q:D;return function(i,o,u){var c,s=this.__on,a=r(n,o,u);if(s)for(var l=0,f=s.length;l<f;++l)if((c=s[l]).type===t.type&&c.name===t.name)return this.removeEventListener(c.type,c.listener,c.capture),this.addEventListener(c.type,c.listener=a,c.capture=e),void(c.value=n);this.addEventListener(t.type,a,e),c={type:t.type,name:t.name,value:n,listener:a,capture:e},s?s.push(c):this.__on=[c]}}function V(t,n,e){var r=d(t),i=r.CustomEvent;\"function\"==typeof i?i=new i(n,e):(i=r.document.createEvent(\"Event\"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}var j=[null];function R(t,n){this._groups=t,this._parents=n}function H(){return new R([[document.documentElement]],j)}function I(t){return\"string\"==typeof t?new R([[document.querySelector(t)]],[document.documentElement]):new R([[t]],j)}R.prototype=H.prototype={constructor:R,select:function(t){\"function\"!=typeof t&&(t=u(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,c,s=n[i],a=s.length,l=r[i]=new Array(a),f=0;f<a;++f)(o=s[f])&&(c=t.call(o,o.__data__,f,s))&&(\"__data__\"in o&&(c.__data__=o.__data__),l[f]=c);return new R(r,this._parents)},selectAll:function(t){\"function\"!=typeof t&&(t=s(t));for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var u,c=n[o],a=c.length,l=0;l<a;++l)(u=c[l])&&(r.push(t.call(u,u.__data__,l,c)),i.push(u));return new R(r,i)},filter:function(t){\"function\"!=typeof t&&(t=a(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],c=u.length,s=r[i]=[],l=0;l<c;++l)(o=u[l])&&t.call(o,o.__data__,l,u)&&s.push(o);return new R(r,this._parents)},data:function(t,n){if(!t)return d=new Array(this.size()),l=-1,this.each(function(t){d[++l]=t}),d;var e,r=n?_:p,i=this._parents,o=this._groups;\"function\"!=typeof t&&(e=t,t=function(){return e});for(var u=o.length,c=new Array(u),s=new Array(u),a=new Array(u),l=0;l<u;++l){var f=i[l],h=o[l],v=h.length,d=t.call(f,f&&f.__data__,l,i),y=d.length,m=s[l]=new Array(y),g=c[l]=new Array(y);r(f,h,m,g,a[l]=new Array(v),d,n);for(var w,A,x=0,S=0;x<y;++x)if(w=m[x]){for(x>=S&&(S=x+1);!(A=g[S])&&++S<y;);w._next=A||null}}return(c=new R(c,i))._enter=s,c._exit=a,c},enter:function(){return new R(this._enter||this._groups.map(l),this._parents)},exit:function(){return new R(this._exit||this._groups.map(l),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return r=\"function\"==typeof t?t(r):r.append(t+\"\"),null!=n&&(i=n(i)),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),u=new Array(r),c=0;c<o;++c)for(var s,a=n[c],l=e[c],f=a.length,h=u[c]=new Array(f),p=0;p<f;++p)(s=a[p]||l[p])&&(h[p]=s);for(;c<r;++c)u[c]=n[c];return new R(u,this._parents)},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,u=i[o];--o>=0;)(r=i[o])&&(u&&4^r.compareDocumentPosition(u)&&u.parentNode.insertBefore(r,u),u=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=v);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var u,c=e[o],s=c.length,a=i[o]=new Array(s),l=0;l<s;++l)(u=c[l])&&(a[l]=u);a.sort(n)}return new R(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){var t=new Array(this.size()),n=-1;return this.each(function(){t[++n]=this}),t},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var u=r[i];if(u)return u}return null},size:function(){var t=0;return this.each(function(){++t}),t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],u=0,c=o.length;u<c;++u)(i=o[u])&&t.call(i,i.__data__,u,o);return this},attr:function(t,n){var e=r(t);if(arguments.length<2){var i=this.node();return e.local?i.getAttributeNS(e.space,e.local):i.getAttribute(e)}return this.each((null==n?e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}}:\"function\"==typeof n?e.local?function(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}:function(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}:e.local?function(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}:function(t,n){return function(){this.setAttribute(t,n)}})(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?function(t){return function(){this.style.removeProperty(t)}}:\"function\"==typeof n?function(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}:function(t,n,e){return function(){this.style.setProperty(t,n,e)}})(t,n,null==e?\"\":e)):y(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?function(t){return function(){delete this[t]}}:\"function\"==typeof n?function(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}:function(t,n){return function(){this[t]=n}})(t,n)):this.node()[t]},classed:function(t,n){var e=m(t+\"\");if(arguments.length<2){for(var r=g(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each((\"function\"==typeof n?function(t,n){return function(){(n.apply(this,arguments)?A:x)(this,t)}}:n?function(t){return function(){A(this,t)}}:function(t){return function(){x(this,t)}})(e,n))},text:function(t){return arguments.length?this.each(null==t?S:(\"function\"==typeof t?function(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?\"\":n}}:function(t){return function(){this.textContent=t}})(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?b:(\"function\"==typeof t?function(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?\"\":n}}:function(t){return function(){this.innerHTML=t}})(t)):this.node().innerHTML},raise:function(){return this.each(E)},lower:function(){return this.each(N)},append:function(t){var n=\"function\"==typeof t?t:i(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})},insert:function(t,n){var e=\"function\"==typeof t?t:i(t),r=null==n?P:\"function\"==typeof n?n:u(n);return this.select(function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)})},remove:function(){return this.each(C)},clone:function(t){return this.select(t?T:L)},datum:function(t){return arguments.length?this.property(\"__data__\",t):this.node().__data__},on:function(t,n,e){var r,i,o=function(t){return t.trim().split(\/^|\\s+\/).map(function(t){var n=\"\",e=t.indexOf(\".\");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}})}(t+\"\"),u=o.length;if(!(arguments.length<2)){for(c=n?O:M,null==e&&(e=!1),r=0;r<u;++r)this.each(c(o[r],n,e));return this}var c=this.node().__on;if(c)for(var s,a=0,l=c.length;a<l;++a)for(r=0,s=c[a];r<u;++r)if((i=o[r]).type===s.type&&i.name===s.name)return s.value},dispatch:function(t,n){return this.each((\"function\"==typeof n?function(t,n){return function(){return V(this,t,n.apply(this,arguments))}}:function(t,n){return function(){return V(this,t,n)}})(t,n))}};var U=0;function z(){return new G}function G(){this._=\"@\"+(++U).toString(36)}function X(){for(var n,e=t.event;n=e.sourceEvent;)e=n;return e}function k(t,n){var e=t.ownerSVGElement||t;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=n.clientX,r.y=n.clientY,[(r=r.matrixTransform(t.getScreenCTM().inverse())).x,r.y]}var i=t.getBoundingClientRect();return[n.clientX-i.left-t.clientLeft,n.clientY-i.top-t.clientTop]}G.prototype=z.prototype={constructor:G,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}},t.clientPoint=k,t.create=function(t){return I(i(t).call(document.documentElement))},t.creator=i,t.customEvent=function(n,e,r,i){var o=t.event;n.sourceEvent=t.event,t.event=n;try{return e.apply(r,i)}finally{t.event=o}},t.local=z,t.matcher=a,t.mouse=function(t){var n=X();return n.changedTouches&&(n=n.changedTouches[0]),k(t,n)},t.namespace=r,t.namespaces=e,t.select=I,t.selectAll=function(t){return\"string\"==typeof t?new R([document.querySelectorAll(t)],[document.documentElement]):new R([null==t?[]:t],j)},t.selection=H,t.selector=u,t.selectorAll=s,t.style=y,t.touch=function(t,n,e){arguments.length<3&&(e=n,n=X().changedTouches);for(var r,i=0,o=n?n.length:0;i<o;++i)if((r=n[i]).identifier===e)return k(t,r);return null},t.touches=function(t,n){null==n&&(n=X().touches);for(var e=0,r=n?n.length:0,i=new Array(r);e<r;++e)i[e]=k(t,n[e]);return i},t.window=d,Object.defineProperty(t,\"__esModule\",{value:!0})});\r\n\r\n\/\/ https:\/\/d3js.org\/d3-color\/ v1.4.1 Copyright 2020 Mike Bostock\r\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e((t=t||self).d3=t.d3||{})}(this,function(t){\"use strict\";function e(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function n(t,e){var n=Object.create(t.prototype);for(var i in e)n[i]=e[i];return n}function i(){}var r=\"\\\\s*([+-]?\\\\d+)\\\\s*\",a=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",s=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",o=\/^#([0-9a-f]{3,8})$\/,h=new RegExp(\"^rgb\\\\(\"+[r,r,r]+\"\\\\)$\"),l=new RegExp(\"^rgb\\\\(\"+[s,s,s]+\"\\\\)$\"),u=new RegExp(\"^rgba\\\\(\"+[r,r,r,a]+\"\\\\)$\"),c=new RegExp(\"^rgba\\\\(\"+[s,s,s,a]+\"\\\\)$\"),g=new RegExp(\"^hsl\\\\(\"+[a,s,s]+\"\\\\)$\"),f=new RegExp(\"^hsla\\\\(\"+[a,s,s,a]+\"\\\\)$\"),d={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function p(){return this.rgb().formatHex()}function b(){return this.rgb().formatRgb()}function y(t){var e,n;return t=(t+\"\").trim().toLowerCase(),(e=o.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?w(e):3===n?new M(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?m(e>>24&255,e>>16&255,e>>8&255,(255&e)\/255):4===n?m(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)\/255):null):(e=h.exec(t))?new M(e[1],e[2],e[3],1):(e=l.exec(t))?new M(255*e[1]\/100,255*e[2]\/100,255*e[3]\/100,1):(e=u.exec(t))?m(e[1],e[2],e[3],e[4]):(e=c.exec(t))?m(255*e[1]\/100,255*e[2]\/100,255*e[3]\/100,e[4]):(e=g.exec(t))?R(e[1],e[2]\/100,e[3]\/100,1):(e=f.exec(t))?R(e[1],e[2]\/100,e[3]\/100,e[4]):d.hasOwnProperty(t)?w(d[t]):\"transparent\"===t?new M(NaN,NaN,NaN,0):null}function w(t){return new M(t>>16&255,t>>8&255,255&t,1)}function m(t,e,n,i){return i<=0&&(t=e=n=NaN),new M(t,e,n,i)}function N(t){return t instanceof i||(t=y(t)),t?new M((t=t.rgb()).r,t.g,t.b,t.opacity):new M}function k(t,e,n,i){return 1===arguments.length?N(t):new M(t,e,n,null==i?1:i)}function M(t,e,n,i){this.r=+t,this.g=+e,this.b=+n,this.opacity=+i}function v(){return\"#\"+q(this.r)+q(this.g)+q(this.b)}function x(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"rgb(\":\"rgba(\")+Math.max(0,Math.min(255,Math.round(this.r)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.g)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?\")\":\", \"+t+\")\")}function q(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?\"0\":\"\")+t.toString(16)}function R(t,e,n,i){return i<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new H(t,e,n,i)}function E(t){if(t instanceof H)return new H(t.h,t.s,t.l,t.opacity);if(t instanceof i||(t=y(t)),!t)return new H;if(t instanceof H)return t;var e=(t=t.rgb()).r\/255,n=t.g\/255,r=t.b\/255,a=Math.min(e,n,r),s=Math.max(e,n,r),o=NaN,h=s-a,l=(s+a)\/2;return h?(o=e===s?(n-r)\/h+6*(n<r):n===s?(r-e)\/h+2:(e-n)\/h+4,h\/=l<.5?s+a:2-s-a,o*=60):h=l>0&&l<1?0:o,new H(o,h,l,t.opacity)}function $(t,e,n,i){return 1===arguments.length?E(t):new H(t,e,n,null==i?1:i)}function H(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}function j(t,e,n){return 255*(t<60?e+(n-e)*t\/60:t<180?n:t<240?e+(n-e)*(240-t)\/60:e)}e(i,y,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:p,formatHex:p,formatHsl:function(){return E(this).formatHsl()},formatRgb:b,toString:b}),e(M,k,n(i,{brighter:function(t){return t=null==t?1\/.7:Math.pow(1\/.7,t),new M(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new M(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:v,formatHex:v,formatRgb:x,toString:x})),e(H,$,n(i,{brighter:function(t){return t=null==t?1\/.7:Math.pow(1\/.7,t),new H(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new H(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*e,r=2*n-i;return new M(j(t>=240?t-240:t+120,r,i),j(t,r,i),j(t<120?t+240:t-120,r,i),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?\"hsl(\":\"hsla(\")+(this.h||0)+\", \"+100*(this.s||0)+\"%, \"+100*(this.l||0)+\"%\"+(1===t?\")\":\", \"+t+\")\")}}));var O=Math.PI\/180,P=180\/Math.PI,I=.96422,S=1,_=.82521,z=4\/29,C=6\/29,L=3*C*C,A=C*C*C;function B(t){if(t instanceof F)return new F(t.l,t.a,t.b,t.opacity);if(t instanceof V)return W(t);t instanceof M||(t=N(t));var e,n,i=Q(t.r),r=Q(t.g),a=Q(t.b),s=G((.2225045*i+.7168786*r+.0606169*a)\/S);return i===r&&r===a?e=n=s:(e=G((.4360747*i+.3850649*r+.1430804*a)\/I),n=G((.0139322*i+.0971045*r+.7141733*a)\/_)),new F(116*s-16,500*(e-s),200*(s-n),t.opacity)}function D(t,e,n,i){return 1===arguments.length?B(t):new F(t,e,n,null==i?1:i)}function F(t,e,n,i){this.l=+t,this.a=+e,this.b=+n,this.opacity=+i}function G(t){return t>A?Math.pow(t,1\/3):t\/L+z}function J(t){return t>C?t*t*t:L*(t-z)}function K(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1\/2.4)-.055)}function Q(t){return(t\/=255)<=.04045?t\/12.92:Math.pow((t+.055)\/1.055,2.4)}function T(t){if(t instanceof V)return new V(t.h,t.c,t.l,t.opacity);if(t instanceof F||(t=B(t)),0===t.a&&0===t.b)return new V(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*P;return new V(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function U(t,e,n,i){return 1===arguments.length?T(t):new V(t,e,n,null==i?1:i)}function V(t,e,n,i){this.h=+t,this.c=+e,this.l=+n,this.opacity=+i}function W(t){if(isNaN(t.h))return new F(t.l,0,0,t.opacity);var e=t.h*O;return new F(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}e(F,D,n(i,{brighter:function(t){return new F(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new F(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)\/116,e=isNaN(this.a)?t:t+this.a\/500,n=isNaN(this.b)?t:t-this.b\/200;return new M(K(3.1338561*(e=I*J(e))-1.6168667*(t=S*J(t))-.4906146*(n=_*J(n))),K(-.9787684*e+1.9161415*t+.033454*n),K(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}})),e(V,U,n(i,{brighter:function(t){return new V(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new V(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return W(this).rgb()}}));var X=-.14861,Y=1.78277,Z=-.29227,tt=-.90649,et=1.97294,nt=et*tt,it=et*Y,rt=Y*Z-tt*X;function at(t,e,n,i){return 1===arguments.length?function(t){if(t instanceof st)return new st(t.h,t.s,t.l,t.opacity);t instanceof M||(t=N(t));var e=t.r\/255,n=t.g\/255,i=t.b\/255,r=(rt*i+nt*e-it*n)\/(rt+nt-it),a=i-r,s=(et*(n-r)-Z*a)\/tt,o=Math.sqrt(s*s+a*a)\/(et*r*(1-r)),h=o?Math.atan2(s,a)*P-120:NaN;return new st(h<0?h+360:h,o,r,t.opacity)}(t):new st(t,e,n,null==i?1:i)}function st(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}e(st,at,n(i,{brighter:function(t){return t=null==t?1\/.7:Math.pow(1\/.7,t),new st(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new st(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*O,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),i=Math.cos(t),r=Math.sin(t);return new M(255*(e+n*(X*i+Y*r)),255*(e+n*(Z*i+tt*r)),255*(e+n*(et*i)),this.opacity)}})),t.color=y,t.cubehelix=at,t.gray=function(t,e){return new F(t,0,0,null==e?1:e)},t.hcl=U,t.hsl=$,t.lab=D,t.lch=function(t,e,n,i){return 1===arguments.length?T(t):new V(n,e,t,null==i?1:i)},t.rgb=k,Object.defineProperty(t,\"__esModule\",{value:!0})});\r\n\r\n\/\/ https:\/\/d3js.org\/d3-dispatch\/ v1.0.6 Copyright 2019 Mike Bostock\r\n!function(n,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e((n=n||self).d3=n.d3||{})}(this,function(n){\"use strict\";var e={value:function(){}};function t(){for(var n,e=0,t=arguments.length,o={};e<t;++e){if(!(n=arguments[e]+\"\")||n in o||\/[\\s.]\/.test(n))throw new Error(\"illegal type: \"+n);o[n]=[]}return new r(o)}function r(n){this._=n}function o(n,e){return n.trim().split(\/^|\\s+\/).map(function(n){var t=\"\",r=n.indexOf(\".\");if(r>=0&&(t=n.slice(r+1),n=n.slice(0,r)),n&&!e.hasOwnProperty(n))throw new Error(\"unknown type: \"+n);return{type:n,name:t}})}function i(n,e){for(var t,r=0,o=n.length;r<o;++r)if((t=n[r]).name===e)return t.value}function f(n,t,r){for(var o=0,i=n.length;o<i;++o)if(n[o].name===t){n[o]=e,n=n.slice(0,o).concat(n.slice(o+1));break}return null!=r&&n.push({name:t,value:r}),n}r.prototype=t.prototype={constructor:r,on:function(n,e){var t,r=this._,l=o(n+\"\",r),u=-1,a=l.length;if(!(arguments.length<2)){if(null!=e&&\"function\"!=typeof e)throw new Error(\"invalid callback: \"+e);for(;++u<a;)if(t=(n=l[u]).type)r[t]=f(r[t],n.name,e);else if(null==e)for(t in r)r[t]=f(r[t],n.name,null);return this}for(;++u<a;)if((t=(n=l[u]).type)&&(t=i(r[t],n.name)))return t},copy:function(){var n={},e=this._;for(var t in e)n[t]=e[t].slice();return new r(n)},call:function(n,e){if((t=arguments.length-2)>0)for(var t,r,o=new Array(t),i=0;i<t;++i)o[i]=arguments[i+2];if(!this._.hasOwnProperty(n))throw new Error(\"unknown type: \"+n);for(i=0,t=(r=this._[n]).length;i<t;++i)r[i].value.apply(e,o)},apply:function(n,e,t){if(!this._.hasOwnProperty(n))throw new Error(\"unknown type: \"+n);for(var r=this._[n],o=0,i=r.length;o<i;++o)r[o].value.apply(e,t)}},n.dispatch=t,Object.defineProperty(n,\"__esModule\",{value:!0})});\r\n\r\n\/\/ https:\/\/d3js.org\/d3-ease\/ v1.0.7 Copyright 2020 Mike Bostock\r\n!function(n,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e((n=n||self).d3=n.d3||{})}(this,function(n){\"use strict\";function e(n){return((n*=2)<=1?n*n:--n*(2-n)+1)\/2}function t(n){return((n*=2)<=1?n*n*n:(n-=2)*n*n+2)\/2}var u=function n(e){function t(n){return Math.pow(n,e)}return e=+e,t.exponent=n,t}(3),r=function n(e){function t(n){return 1-Math.pow(1-n,e)}return e=+e,t.exponent=n,t}(3),a=function n(e){function t(n){return((n*=2)<=1?Math.pow(n,e):2-Math.pow(2-n,e))\/2}return e=+e,t.exponent=n,t}(3),o=Math.PI,i=o\/2;function c(n){return(1-Math.cos(o*n))\/2}function s(n){return 1.0009775171065494*(Math.pow(2,-10*n)-.0009765625)}function f(n){return((n*=2)<=1?s(1-n):2-s(n-1))\/2}function h(n){return((n*=2)<=1?1-Math.sqrt(1-n*n):Math.sqrt(1-(n-=2)*n)+1)\/2}var p=4\/11,M=6\/11,d=8\/11,I=.75,l=9\/11,O=10\/11,x=.9375,v=21\/22,m=63\/64,y=1\/p\/p;function B(n){return(n=+n)<p?y*n*n:n<d?y*(n-=M)*n+I:n<O?y*(n-=l)*n+x:y*(n-=v)*n+m}var C=function n(e){function t(n){return(n=+n)*n*(e*(n-1)+n)}return e=+e,t.overshoot=n,t}(1.70158),E=function n(e){function t(n){return--n*n*((n+1)*e+n)+1}return e=+e,t.overshoot=n,t}(1.70158),P=function n(e){function t(n){return((n*=2)<1?n*n*((e+1)*n-e):(n-=2)*n*((e+1)*n+e)+2)\/2}return e=+e,t.overshoot=n,t}(1.70158),b=2*Math.PI,w=function n(e,t){var u=Math.asin(1\/(e=Math.max(1,e)))*(t\/=b);function r(n){return e*s(- --n)*Math.sin((u-n)\/t)}return r.amplitude=function(e){return n(e,t*b)},r.period=function(t){return n(e,t)},r}(1,.3),k=function n(e,t){var u=Math.asin(1\/(e=Math.max(1,e)))*(t\/=b);function r(n){return 1-e*s(n=+n)*Math.sin((n+u)\/t)}return r.amplitude=function(e){return n(e,t*b)},r.period=function(t){return n(e,t)},r}(1,.3),q=function n(e,t){var u=Math.asin(1\/(e=Math.max(1,e)))*(t\/=b);function r(n){return((n=2*n-1)<0?e*s(-n)*Math.sin((u-n)\/t):2-e*s(n)*Math.sin((u+n)\/t))\/2}return r.amplitude=function(e){return n(e,t*b)},r.period=function(t){return n(e,t)},r}(1,.3);n.easeBack=P,n.easeBackIn=C,n.easeBackInOut=P,n.easeBackOut=E,n.easeBounce=B,n.easeBounceIn=function(n){return 1-B(1-n)},n.easeBounceInOut=function(n){return((n*=2)<=1?1-B(1-n):B(n-1)+1)\/2},n.easeBounceOut=B,n.easeCircle=h,n.easeCircleIn=function(n){return 1-Math.sqrt(1-n*n)},n.easeCircleInOut=h,n.easeCircleOut=function(n){return Math.sqrt(1- --n*n)},n.easeCubic=t,n.easeCubicIn=function(n){return n*n*n},n.easeCubicInOut=t,n.easeCubicOut=function(n){return--n*n*n+1},n.easeElastic=k,n.easeElasticIn=w,n.easeElasticInOut=q,n.easeElasticOut=k,n.easeExp=f,n.easeExpIn=function(n){return s(1-+n)},n.easeExpInOut=f,n.easeExpOut=function(n){return 1-s(n)},n.easeLinear=function(n){return+n},n.easePoly=a,n.easePolyIn=u,n.easePolyInOut=a,n.easePolyOut=r,n.easeQuad=e,n.easeQuadIn=function(n){return n*n},n.easeQuadInOut=e,n.easeQuadOut=function(n){return n*(2-n)},n.easeSin=c,n.easeSinIn=function(n){return 1==+n?1:1-Math.cos(n*i)},n.easeSinInOut=c,n.easeSinOut=function(n){return Math.sin(n*i)},Object.defineProperty(n,\"__esModule\",{value:!0})});\r\n\r\n\/\/ https:\/\/d3js.org\/d3-interpolate\/ v1.4.0 Copyright 2019 Mike Bostock\r\n!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n(exports,require(\"d3-color\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"d3-color\"],n):n((t=t||self).d3=t.d3||{},t.d3)}(this,function(t,n){\"use strict\";function r(t,n,r,e,a){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*r+(1+3*t+3*o-3*u)*e+u*a)\/6}function e(t){var n=t.length-1;return function(e){var a=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),o=t[a],u=t[a+1],i=a>0?t[a-1]:2*o-u,l=a<n-1?t[a+2]:2*u-o;return r((e-a\/n)*n,i,o,u,l)}}function a(t){var n=t.length;return function(e){var a=Math.floor(((e%=1)<0?++e:e)*n),o=t[(a+n-1)%n],u=t[a%n],i=t[(a+1)%n],l=t[(a+2)%n];return r((e-a\/n)*n,o,u,i,l)}}function o(t){return function(){return t}}function u(t,n){return function(r){return t+r*n}}function i(t,n){var r=n-t;return r?u(t,r>180||r<-180?r-360*Math.round(r\/360):r):o(isNaN(t)?n:t)}function l(t){return 1==(t=+t)?c:function(n,r){return r-n?function(t,n,r){return t=Math.pow(t,r),n=Math.pow(n,r)-t,r=1\/r,function(e){return Math.pow(t+e*n,r)}}(n,r,t):o(isNaN(n)?r:n)}}function c(t,n){var r=n-t;return r?u(t,r):o(isNaN(t)?n:t)}var f=function t(r){var e=l(r);function a(t,r){var a=e((t=n.rgb(t)).r,(r=n.rgb(r)).r),o=e(t.g,r.g),u=e(t.b,r.b),i=c(t.opacity,r.opacity);return function(n){return t.r=a(n),t.g=o(n),t.b=u(n),t.opacity=i(n),t+\"\"}}return a.gamma=t,a}(1);function s(t){return function(r){var e,a,o=r.length,u=new Array(o),i=new Array(o),l=new Array(o);for(e=0;e<o;++e)a=n.rgb(r[e]),u[e]=a.r||0,i[e]=a.g||0,l[e]=a.b||0;return u=t(u),i=t(i),l=t(l),a.opacity=1,function(t){return a.r=u(t),a.g=i(t),a.b=l(t),a+\"\"}}}var p=s(e),h=s(a);function v(t,n){n||(n=[]);var r,e=t?Math.min(n.length,t.length):0,a=n.slice();return function(o){for(r=0;r<e;++r)a[r]=t[r]*(1-o)+n[r]*o;return a}}function g(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function d(t,n){var r,e=n?n.length:0,a=t?Math.min(e,t.length):0,o=new Array(a),u=new Array(e);for(r=0;r<a;++r)o[r]=X(t[r],n[r]);for(;r<e;++r)u[r]=n[r];return function(t){for(r=0;r<a;++r)u[r]=o[r](t);return u}}function y(t,n){var r=new Date;return t=+t,n=+n,function(e){return r.setTime(t*(1-e)+n*e),r}}function m(t,n){return t=+t,n=+n,function(r){return t*(1-r)+n*r}}function M(t,n){var r,e={},a={};for(r in null!==t&&\"object\"==typeof t||(t={}),null!==n&&\"object\"==typeof n||(n={}),n)r in t?e[r]=X(t[r],n[r]):a[r]=n[r];return function(t){for(r in e)a[r]=e[r](t);return a}}var b=\/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?\/g,x=new RegExp(b.source,\"g\");function w(t,n){var r,e,a,o=b.lastIndex=x.lastIndex=0,u=-1,i=[],l=[];for(t+=\"\",n+=\"\";(r=b.exec(t))&&(e=x.exec(n));)(a=e.index)>o&&(a=n.slice(o,a),i[u]?i[u]+=a:i[++u]=a),(r=r[0])===(e=e[0])?i[u]?i[u]+=e:i[++u]=e:(i[++u]=null,l.push({i:u,x:m(r,e)})),o=x.lastIndex;return o<n.length&&(a=n.slice(o),i[u]?i[u]+=a:i[++u]=a),i.length<2?l[0]?function(t){return function(n){return t(n)+\"\"}}(l[0].x):function(t){return function(){return t}}(n):(n=l.length,function(t){for(var r,e=0;e<n;++e)i[(r=l[e]).i]=r.x(t);return i.join(\"\")})}function X(t,r){var e,a=typeof r;return null==r||\"boolean\"===a?o(r):(\"number\"===a?m:\"string\"===a?(e=n.color(r))?(r=e,f):w:r instanceof n.color?f:r instanceof Date?y:g(r)?v:Array.isArray(r)?d:\"function\"!=typeof r.valueOf&&\"function\"!=typeof r.toString||isNaN(r)?M:m)(t,r)}var A,N,C,Y,j=180\/Math.PI,q={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function k(t,n,r,e,a,o){var u,i,l;return(u=Math.sqrt(t*t+n*n))&&(t\/=u,n\/=u),(l=t*r+n*e)&&(r-=t*l,e-=n*l),(i=Math.sqrt(r*r+e*e))&&(r\/=i,e\/=i,l\/=i),t*e<n*r&&(t=-t,n=-n,l=-l,u=-u),{translateX:a,translateY:o,rotate:Math.atan2(n,t)*j,skewX:Math.atan(l)*j,scaleX:u,scaleY:i}}function D(t,n,r,e){function a(t){return t.length?t.pop()+\" \":\"\"}return function(o,u){var i=[],l=[];return o=t(o),u=t(u),function(t,e,a,o,u,i){if(t!==a||e!==o){var l=u.push(\"translate(\",null,n,null,r);i.push({i:l-4,x:m(t,a)},{i:l-2,x:m(e,o)})}else(a||o)&&u.push(\"translate(\"+a+n+o+r)}(o.translateX,o.translateY,u.translateX,u.translateY,i,l),function(t,n,r,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:r.push(a(r)+\"rotate(\",null,e)-2,x:m(t,n)})):n&&r.push(a(r)+\"rotate(\"+n+e)}(o.rotate,u.rotate,i,l),function(t,n,r,o){t!==n?o.push({i:r.push(a(r)+\"skewX(\",null,e)-2,x:m(t,n)}):n&&r.push(a(r)+\"skewX(\"+n+e)}(o.skewX,u.skewX,i,l),function(t,n,r,e,o,u){if(t!==r||n!==e){var i=o.push(a(o)+\"scale(\",null,\",\",null,\")\");u.push({i:i-4,x:m(t,r)},{i:i-2,x:m(n,e)})}else 1===r&&1===e||o.push(a(o)+\"scale(\"+r+\",\"+e+\")\")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,i,l),o=u=null,function(t){for(var n,r=-1,e=l.length;++r<e;)i[(n=l[r]).i]=n.x(t);return i.join(\"\")}}}var R=D(function(t){return\"none\"===t?q:(A||(A=document.createElement(\"DIV\"),N=document.documentElement,C=document.defaultView),A.style.transform=t,t=C.getComputedStyle(N.appendChild(A),null).getPropertyValue(\"transform\"),N.removeChild(A),k(+(t=t.slice(7,-1).split(\",\"))[0],+t[1],+t[2],+t[3],+t[4],+t[5]))},\"px, \",\"px)\",\"deg)\"),S=D(function(t){return null==t?q:(Y||(Y=document.createElementNS(\"http:\/\/www.w3.org\/2000\/svg\",\"g\")),Y.setAttribute(\"transform\",t),(t=Y.transform.baseVal.consolidate())?k((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):q)},\", \",\")\",\")\"),V=Math.SQRT2,B=2,E=4,H=1e-12;function I(t){return((t=Math.exp(t))+1\/t)\/2}function L(t){return function(r,e){var a=t((r=n.hsl(r)).h,(e=n.hsl(e)).h),o=c(r.s,e.s),u=c(r.l,e.l),i=c(r.opacity,e.opacity);return function(t){return r.h=a(t),r.s=o(t),r.l=u(t),r.opacity=i(t),r+\"\"}}}var T=L(i),O=L(c);function P(t){return function(r,e){var a=t((r=n.hcl(r)).h,(e=n.hcl(e)).h),o=c(r.c,e.c),u=c(r.l,e.l),i=c(r.opacity,e.opacity);return function(t){return r.h=a(t),r.c=o(t),r.l=u(t),r.opacity=i(t),r+\"\"}}}var _=P(i),z=P(c);function Q(t){return function r(e){function a(r,a){var o=t((r=n.cubehelix(r)).h,(a=n.cubehelix(a)).h),u=c(r.s,a.s),i=c(r.l,a.l),l=c(r.opacity,a.opacity);return function(t){return r.h=o(t),r.s=u(t),r.l=i(Math.pow(t,e)),r.opacity=l(t),r+\"\"}}return e=+e,a.gamma=r,a}(1)}var Z=Q(i),F=Q(c);t.interpolate=X,t.interpolateArray=function(t,n){return(g(n)?v:d)(t,n)},t.interpolateBasis=e,t.interpolateBasisClosed=a,t.interpolateCubehelix=Z,t.interpolateCubehelixLong=F,t.interpolateDate=y,t.interpolateDiscrete=function(t){var n=t.length;return function(r){return t[Math.max(0,Math.min(n-1,Math.floor(r*n)))]}},t.interpolateHcl=_,t.interpolateHclLong=z,t.interpolateHsl=T,t.interpolateHslLong=O,t.interpolateHue=function(t,n){var r=i(+t,+n);return function(t){var n=r(t);return n-360*Math.floor(n\/360)}},t.interpolateLab=function(t,r){var e=c((t=n.lab(t)).l,(r=n.lab(r)).l),a=c(t.a,r.a),o=c(t.b,r.b),u=c(t.opacity,r.opacity);return function(n){return t.l=e(n),t.a=a(n),t.b=o(n),t.opacity=u(n),t+\"\"}},t.interpolateNumber=m,t.interpolateNumberArray=v,t.interpolateObject=M,t.interpolateRgb=f,t.interpolateRgbBasis=p,t.interpolateRgbBasisClosed=h,t.interpolateRound=function(t,n){return t=+t,n=+n,function(r){return Math.round(t*(1-r)+n*r)}},t.interpolateString=w,t.interpolateTransformCss=R,t.interpolateTransformSvg=S,t.interpolateZoom=function(t,n){var r,e,a=t[0],o=t[1],u=t[2],i=n[0],l=n[1],c=n[2],f=i-a,s=l-o,p=f*f+s*s;if(p<H)e=Math.log(c\/u)\/V,r=function(t){return[a+t*f,o+t*s,u*Math.exp(V*t*e)]};else{var h=Math.sqrt(p),v=(c*c-u*u+E*p)\/(2*u*B*h),g=(c*c-u*u-E*p)\/(2*c*B*h),d=Math.log(Math.sqrt(v*v+1)-v),y=Math.log(Math.sqrt(g*g+1)-g);e=(y-d)\/V,r=function(t){var n,r=t*e,i=I(d),l=u\/(B*h)*(i*(n=V*r+d,((n=Math.exp(2*n))-1)\/(n+1))-function(t){return((t=Math.exp(t))-1\/t)\/2}(d));return[a+l*f,o+l*s,u*i\/I(V*r+d)]}}return r.duration=1e3*e,r},t.piecewise=function(t,n){for(var r=0,e=n.length-1,a=n[0],o=new Array(e<0?0:e);r<e;)o[r]=t(a,a=n[++r]);return function(t){var n=Math.max(0,Math.min(e-1,Math.floor(t*=e)));return o[n](t-n)}},t.quantize=function(t,n){for(var r=new Array(n),e=0;e<n;++e)r[e]=t(e\/(n-1));return r},Object.defineProperty(t,\"__esModule\",{value:!0})});\r\n\r\n\/\/ https:\/\/d3js.org\/d3-timer\/ v1.0.10 Copyright 2019 Mike Bostock\r\n!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],n):n((t=t||self).d3=t.d3||{})}(this,function(t){\"use strict\";var n,e,o=0,i=0,r=0,u=1e3,l=0,c=0,f=0,a=\"object\"==typeof performance&&performance.now?performance:Date,s=\"object\"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function _(){return c||(s(m),c=a.now()+f)}function m(){c=0}function p(){this._call=this._time=this._next=null}function w(t,n,e){var o=new p;return o.restart(t,n,e),o}function d(){_(),++o;for(var t,e=n;e;)(t=c-e._time)>=0&&e._call.call(null,t),e=e._next;--o}function h(){c=(l=a.now())+f,o=i=0;try{d()}finally{o=0,function(){var t,o,i=n,r=1\/0;for(;i;)i._call?(r>i._time&&(r=i._time),t=i,i=i._next):(o=i._next,i._next=null,i=t?t._next=o:n=o);e=t,v(r)}(),c=0}}function y(){var t=a.now(),n=t-l;n>u&&(f-=n,l=t)}function v(t){o||(i&&(i=clearTimeout(i)),t-c>24?(t<1\/0&&(i=setTimeout(h,t-a.now()-f)),r&&(r=clearInterval(r))):(r||(l=a.now(),r=setInterval(y,u)),o=1,s(h)))}p.prototype=w.prototype={constructor:p,restart:function(t,o,i){if(\"function\"!=typeof t)throw new TypeError(\"callback is not a function\");i=(null==i?_():+i)+(null==o?0:+o),this._next||e===this||(e?e._next=this:n=this,e=this),this._call=t,this._time=i,v()},stop:function(){this._call&&(this._call=null,this._time=1\/0,v())}},t.interval=function(t,n,e){var o=new p,i=n;return null==n?(o.restart(t,n,e),o):(n=+n,e=null==e?_():+e,o.restart(function r(u){u+=i,o.restart(r,i+=n,e),t(u)},n,e),o)},t.now=_,t.timeout=function(t,n,e){var o=new p;return n=null==n?0:+n,o.restart(function(e){o.stop(),t(e+n)},n,e),o},t.timer=w,t.timerFlush=d,Object.defineProperty(t,\"__esModule\",{value:!0})});\r\n\r\n\/\/ https:\/\/d3js.org\/d3-transition\/ v1.3.2 Copyright 2019 Mike Bostock\r\n!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n(exports,require(\"d3-selection\"),require(\"d3-dispatch\"),require(\"d3-timer\"),require(\"d3-interpolate\"),require(\"d3-color\"),require(\"d3-ease\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"d3-selection\",\"d3-dispatch\",\"d3-timer\",\"d3-interpolate\",\"d3-color\",\"d3-ease\"],n):n((t=t||self).d3=t.d3||{},t.d3,t.d3,t.d3,t.d3,t.d3,t.d3)}(this,function(t,n,e,r,i,o,u){\"use strict\";var a=e.dispatch(\"start\",\"end\",\"cancel\",\"interrupt\"),s=[],l=0,f=1,c=2,h=3,d=4,_=5,v=6;function p(t,n,e,i,o,u){var p=t.__transition;if(p){if(e in p)return}else t.__transition={};!function(t,n,e){var i,o=t.__transition;function u(l){var _,p,y,m;if(e.state!==f)return s();for(_ in o)if((m=o[_]).name===e.name){if(m.state===h)return r.timeout(u);m.state===d?(m.state=v,m.timer.stop(),m.on.call(\"interrupt\",t,t.__data__,m.index,m.group),delete o[_]):+_<n&&(m.state=v,m.timer.stop(),m.on.call(\"cancel\",t,t.__data__,m.index,m.group),delete o[_])}if(r.timeout(function(){e.state===h&&(e.state=d,e.timer.restart(a,e.delay,e.time),a(l))}),e.state=c,e.on.call(\"start\",t,t.__data__,e.index,e.group),e.state===c){for(e.state=h,i=new Array(y=e.tween.length),_=0,p=-1;_<y;++_)(m=e.tween[_].value.call(t,t.__data__,e.index,e.group))&&(i[++p]=m);i.length=p+1}}function a(n){for(var r=n<e.duration?e.ease.call(null,n\/e.duration):(e.timer.restart(s),e.state=_,1),o=-1,u=i.length;++o<u;)i[o].call(t,r);e.state===_&&(e.on.call(\"end\",t,t.__data__,e.index,e.group),s())}function s(){for(var r in e.state=v,e.timer.stop(),delete o[n],o)return;delete t.__transition}o[n]=e,e.timer=r.timer(function(t){e.state=f,e.timer.restart(u,e.delay,e.time),e.delay<=t&&u(t-e.delay)},0,e.time)}(t,e,{name:n,index:i,group:o,on:a,tween:s,time:u.time,delay:u.delay,duration:u.duration,ease:u.ease,timer:null,state:l})}function y(t,n){var e=w(t,n);if(e.state>l)throw new Error(\"too late; already scheduled\");return e}function m(t,n){var e=w(t,n);if(e.state>h)throw new Error(\"too late; already running\");return e}function w(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error(\"transition not found\");return e}function g(t,n){var e,r,i,o=t.__transition,u=!0;if(o){for(i in n=null==n?null:n+\"\",o)(e=o[i]).name===n?(r=e.state>c&&e.state<_,e.state=v,e.timer.stop(),e.on.call(r?\"interrupt\":\"cancel\",t,t.__data__,e.index,e.group),delete o[i]):u=!1;u&&delete t.__transition}}function b(t,n,e){var r=t._id;return t.each(function(){var t=m(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)}),function(t){return w(t,r).value[n]}}function x(t,n){var e;return(\"number\"==typeof n?i.interpolateNumber:n instanceof o.color?i.interpolateRgb:(e=o.color(n))?(n=e,i.interpolateRgb):i.interpolateString)(t,n)}var A=n.selection.prototype.constructor;function E(t){return function(){this.style.removeProperty(t)}}var T=0;function N(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function S(t){return n.selection().transition(t)}function q(){return++T}var C=n.selection.prototype;N.prototype=S.prototype={constructor:N,select:function(t){var e=this._name,r=this._id;\"function\"!=typeof t&&(t=n.selector(t));for(var i=this._groups,o=i.length,u=new Array(o),a=0;a<o;++a)for(var s,l,f=i[a],c=f.length,h=u[a]=new Array(c),d=0;d<c;++d)(s=f[d])&&(l=t.call(s,s.__data__,d,f))&&(\"__data__\"in s&&(l.__data__=s.__data__),h[d]=l,p(h[d],e,r,d,h,w(s,r)));return new N(u,this._parents,e,r)},selectAll:function(t){var e=this._name,r=this._id;\"function\"!=typeof t&&(t=n.selectorAll(t));for(var i=this._groups,o=i.length,u=[],a=[],s=0;s<o;++s)for(var l,f=i[s],c=f.length,h=0;h<c;++h)if(l=f[h]){for(var d,_=t.call(l,l.__data__,h,f),v=w(l,r),y=0,m=_.length;y<m;++y)(d=_[y])&&p(d,e,r,y,_,v);u.push(_),a.push(l)}return new N(u,a,e,r)},filter:function(t){\"function\"!=typeof t&&(t=n.matcher(t));for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o)for(var u,a=e[o],s=a.length,l=i[o]=[],f=0;f<s;++f)(u=a[f])&&t.call(u,u.__data__,f,a)&&l.push(u);return new N(i,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),u=new Array(r),a=0;a<o;++a)for(var s,l=n[a],f=e[a],c=l.length,h=u[a]=new Array(c),d=0;d<c;++d)(s=l[d]||f[d])&&(h[d]=s);for(;a<r;++a)u[a]=n[a];return new N(u,this._parents,this._name,this._id)},selection:function(){return new A(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=q(),r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],s=a.length,l=0;l<s;++l)if(u=a[l]){var f=w(u,n);p(u,t,e,l,a,{time:f.time+f.delay+f.duration,delay:0,duration:f.duration,ease:f.ease})}return new N(r,this._parents,t,e)},call:C.call,nodes:C.nodes,node:C.node,size:C.size,empty:C.empty,each:C.each,on:function(t,n){var e=this._id;return arguments.length<2?w(this.node(),e).on.on(t):this.each(function(t,n,e){var r,i,o=function(t){return(t+\"\").trim().split(\/^|\\s+\/).every(function(t){var n=t.indexOf(\".\");return n>=0&&(t=t.slice(0,n)),!t||\"start\"===t})}(n)?y:m;return function(){var u=o(this,t),a=u.on;a!==r&&(i=(r=a).copy()).on(n,e),u.on=i}}(e,t,n))},attr:function(t,e){var r=n.namespace(t),o=\"transform\"===r?i.interpolateTransformSvg:x;return this.attrTween(t,\"function\"==typeof e?(r.local?function(t,n,e){var r,i,o;return function(){var u,a,s=e(this);if(null!=s)return(u=this.getAttributeNS(t.space,t.local))===(a=s+\"\")?null:u===r&&a===i?o:(i=a,o=n(r=u,s));this.removeAttributeNS(t.space,t.local)}}:function(t,n,e){var r,i,o;return function(){var u,a,s=e(this);if(null!=s)return(u=this.getAttribute(t))===(a=s+\"\")?null:u===r&&a===i?o:(i=a,o=n(r=u,s));this.removeAttribute(t)}})(r,o,b(this,\"attr.\"+t,e)):null==e?(r.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(r):(r.local?function(t,n,e){var r,i,o=e+\"\";return function(){var u=this.getAttributeNS(t.space,t.local);return u===o?null:u===r?i:i=n(r=u,e)}}:function(t,n,e){var r,i,o=e+\"\";return function(){var u=this.getAttribute(t);return u===o?null:u===r?i:i=n(r=u,e)}})(r,o,e))},attrTween:function(t,e){var r=\"attr.\"+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if(\"function\"!=typeof e)throw new Error;var i=n.namespace(t);return this.tween(r,(i.local?function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}(t,i)),e}return i._value=n,i}:function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}(t,i)),e}return i._value=n,i})(i,e))},style:function(t,e,r){var o=\"transform\"==(t+=\"\")?i.interpolateTransformCss:x;return null==e?this.styleTween(t,function(t,e){var r,i,o;return function(){var u=n.style(this,t),a=(this.style.removeProperty(t),n.style(this,t));return u===a?null:u===r&&a===i?o:o=e(r=u,i=a)}}(t,o)).on(\"end.style.\"+t,E(t)):\"function\"==typeof e?this.styleTween(t,function(t,e,r){var i,o,u;return function(){var a=n.style(this,t),s=r(this),l=s+\"\";return null==s&&(this.style.removeProperty(t),l=s=n.style(this,t)),a===l?null:a===i&&l===o?u:(o=l,u=e(i=a,s))}}(t,o,b(this,\"style.\"+t,e))).each(function(t,n){var e,r,i,o,u=\"style.\"+n,a=\"end.\"+u;return function(){var s=m(this,t),l=s.on,f=null==s.value[u]?o||(o=E(n)):void 0;l===e&&i===f||(r=(e=l).copy()).on(a,i=f),s.on=r}}(this._id,t)):this.styleTween(t,function(t,e,r){var i,o,u=r+\"\";return function(){var a=n.style(this,t);return a===u?null:a===i?o:o=e(i=a,r)}}(t,o,e),r).on(\"end.style.\"+t,null)},styleTween:function(t,n,e){var r=\"style.\"+(t+=\"\");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if(\"function\"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}(t,o,e)),r}return o._value=n,o}(t,n,null==e?\"\":e))},text:function(t){return this.tween(\"text\",\"function\"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?\"\":n}}(b(this,\"text\",t)):function(t){return function(){this.textContent=t}}(null==t?\"\":t+\"\"))},textTween:function(t){var n=\"text\";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if(\"function\"!=typeof t)throw new Error;return this.tween(n,function(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&function(t){return function(n){this.textContent=t.call(this,n)}}(r)),n}return r._value=t,r}(t))},remove:function(){return this.on(\"end.remove\",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+=\"\",arguments.length<2){for(var r,i=w(this.node(),e).tween,o=0,u=i.length;o<u;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?function(t,n){var e,r;return function(){var i=m(this,t),o=i.tween;if(o!==e)for(var u=0,a=(r=e=o).length;u<a;++u)if(r[u].name===n){(r=r.slice()).splice(u,1);break}i.tween=r}}:function(t,n,e){var r,i;if(\"function\"!=typeof e)throw new Error;return function(){var o=m(this,t),u=o.tween;if(u!==r){i=(r=u).slice();for(var a={name:n,value:e},s=0,l=i.length;s<l;++s)if(i[s].name===n){i[s]=a;break}s===l&&i.push(a)}o.tween=i}})(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each((\"function\"==typeof t?function(t,n){return function(){y(this,t).delay=+n.apply(this,arguments)}}:function(t,n){return n=+n,function(){y(this,t).delay=n}})(n,t)):w(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each((\"function\"==typeof t?function(t,n){return function(){m(this,t).duration=+n.apply(this,arguments)}}:function(t,n){return n=+n,function(){m(this,t).duration=n}})(n,t)):w(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(function(t,n){if(\"function\"!=typeof n)throw new Error;return function(){m(this,t).ease=n}}(n,t)):w(this.node(),n).ease},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise(function(o,u){var a={value:u},s={value:function(){0==--i&&o()}};e.each(function(){var e=m(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(a),n._.interrupt.push(a),n._.end.push(s)),e.on=n})})}};var P={time:null,delay:0,duration:250,ease:u.easeCubicInOut};function z(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))return P.time=r.now(),P;return e}n.selection.prototype.interrupt=function(t){return this.each(function(){g(this,t)})},n.selection.prototype.transition=function(t){var n,e;t instanceof N?(n=t._id,t=t._name):(n=q(),(e=P).time=r.now(),t=null==t?null:t+\"\");for(var i=this._groups,o=i.length,u=0;u<o;++u)for(var a,s=i[u],l=s.length,f=0;f<l;++f)(a=s[f])&&p(a,t,n,f,s,e||z(a,n));return new N(i,this._parents,t,n)};var O=[null];t.active=function(t,n){var e,r,i=t.__transition;if(i)for(r in n=null==n?null:n+\"\",i)if((e=i[r]).state>f&&e.name===n)return new N([[t]],O,n,+r);return null},t.interrupt=g,t.transition=S,Object.defineProperty(t,\"__esModule\",{value:!0})});\r\n\r\n\/\/ https:\/\/d3js.org\/d3-drag\/ v1.2.5 Copyright 2019 Mike Bostock\r\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports,require(\"d3-dispatch\"),require(\"d3-selection\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"d3-dispatch\",\"d3-selection\"],e):e((t=t||self).d3=t.d3||{},t.d3,t.d3)}(this,function(t,e,n){\"use strict\";function o(){n.event.stopImmediatePropagation()}function i(){n.event.preventDefault(),n.event.stopImmediatePropagation()}function r(t){var e=t.document.documentElement,o=n.select(t).on(\"dragstart.drag\",i,!0);\"onselectstart\"in e?o.on(\"selectstart.drag\",i,!0):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect=\"none\")}function c(t,e){var o=t.document.documentElement,r=n.select(t).on(\"dragstart.drag\",null);e&&(r.on(\"click.drag\",i,!0),setTimeout(function(){r.on(\"click.drag\",null)},0)),\"onselectstart\"in o?r.on(\"selectstart.drag\",null):(o.style.MozUserSelect=o.__noselect,delete o.__noselect)}function u(t){return function(){return t}}function s(t,e,n,o,i,r,c,u,s,a){this.target=t,this.type=e,this.subject=n,this.identifier=o,this.active=i,this.x=r,this.y=c,this.dx=u,this.dy=s,this._=a}function a(){return!n.event.ctrlKey&&!n.event.button}function l(){return this.parentNode}function d(t){return null==t?{x:n.event.x,y:n.event.y}:t}function f(){return navigator.maxTouchPoints||\"ontouchstart\"in this}s.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t},t.drag=function(){var t,h,v,p,g=a,m=l,y=d,b=f,_={},w=e.dispatch(\"start\",\"drag\",\"end\"),x=0,T=0;function j(t){t.on(\"mousedown.drag\",k).filter(b).on(\"touchstart.drag\",P).on(\"touchmove.drag\",q).on(\"touchend.drag touchcancel.drag\",z).style(\"touch-action\",\"none\").style(\"-webkit-tap-highlight-color\",\"rgba(0,0,0,0)\")}function k(){if(!p&&g.apply(this,arguments)){var e=D(\"mouse\",m.apply(this,arguments),n.mouse,this,arguments);e&&(n.select(n.event.view).on(\"mousemove.drag\",E,!0).on(\"mouseup.drag\",M,!0),r(n.event.view),o(),v=!1,t=n.event.clientX,h=n.event.clientY,e(\"start\"))}}function E(){if(i(),!v){var e=n.event.clientX-t,o=n.event.clientY-h;v=e*e+o*o>T}_.mouse(\"drag\")}function M(){n.select(n.event.view).on(\"mousemove.drag mouseup.drag\",null),c(n.event.view,v),i(),_.mouse(\"end\")}function P(){if(g.apply(this,arguments)){var t,e,i=n.event.changedTouches,r=m.apply(this,arguments),c=i.length;for(t=0;t<c;++t)(e=D(i[t].identifier,r,n.touch,this,arguments))&&(o(),e(\"start\"))}}function q(){var t,e,o=n.event.changedTouches,r=o.length;for(t=0;t<r;++t)(e=_[o[t].identifier])&&(i(),e(\"drag\"))}function z(){var t,e,i=n.event.changedTouches,r=i.length;for(p&&clearTimeout(p),p=setTimeout(function(){p=null},500),t=0;t<r;++t)(e=_[i[t].identifier])&&(o(),e(\"end\"))}function D(t,e,o,i,r){var c,u,a,l=o(e,t),d=w.copy();if(n.customEvent(new s(j,\"beforestart\",c,t,x,l[0],l[1],0,0,d),function(){return null!=(n.event.subject=c=y.apply(i,r))&&(u=c.x-l[0]||0,a=c.y-l[1]||0,!0)}))return function f(h){var v,p=l;switch(h){case\"start\":_[t]=f,v=x++;break;case\"end\":delete _[t],--x;case\"drag\":l=o(e,t),v=x}n.customEvent(new s(j,h,c,t,v,l[0]+u,l[1]+a,l[0]-p[0],l[1]-p[1],d),d.apply,d,[h,i,r])}}return j.filter=function(t){return arguments.length?(g=\"function\"==typeof t?t:u(!!t),j):g},j.container=function(t){return arguments.length?(m=\"function\"==typeof t?t:u(t),j):m},j.subject=function(t){return arguments.length?(y=\"function\"==typeof t?t:u(t),j):y},j.touchable=function(t){return arguments.length?(b=\"function\"==typeof t?t:u(!!t),j):b},j.on=function(){var t=w.on.apply(w,arguments);return t===w?j:t},j.clickDistance=function(t){return arguments.length?(T=(t=+t)*t,j):Math.sqrt(T)},j},t.dragDisable=r,t.dragEnable=c,Object.defineProperty(t,\"__esModule\",{value:!0})});\r\n\r\n\/\/ https:\/\/d3js.org\/d3-zoom\/ v1.8.3 Copyright 2019 Mike Bostock\r\n!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n(exports,require(\"d3-dispatch\"),require(\"d3-drag\"),require(\"d3-interpolate\"),require(\"d3-selection\"),require(\"d3-transition\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"d3-dispatch\",\"d3-drag\",\"d3-interpolate\",\"d3-selection\",\"d3-transition\"],n):n((t=t||self).d3=t.d3||{},t.d3,t.d3,t.d3,t.d3,t.d3)}(this,function(t,n,e,o,i,u){\"use strict\";function r(t){return function(){return t}}function s(t,n,e){this.target=t,this.type=n,this.transform=e}function h(t,n,e){this.k=t,this.x=n,this.y=e}h.prototype={constructor:h,scale:function(t){return 1===t?this:new h(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new h(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)\/this.k,(t[1]-this.y)\/this.k]},invertX:function(t){return(t-this.x)\/this.k},invertY:function(t){return(t-this.y)\/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return\"translate(\"+this.x+\",\"+this.y+\") scale(\"+this.k+\")\"}};var c=new h(1,0,0);function a(t){for(;!t.__zoom;)if(!(t=t.parentNode))return c;return t.__zoom}function f(){i.event.stopImmediatePropagation()}function l(){i.event.preventDefault(),i.event.stopImmediatePropagation()}function m(){return!i.event.ctrlKey&&!i.event.button}function p(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute(\"viewBox\")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function v(){return this.__zoom||c}function d(){return-i.event.deltaY*(1===i.event.deltaMode?.05:i.event.deltaMode?1:.002)}function y(){return navigator.maxTouchPoints||\"ontouchstart\"in this}function z(t,n,e){var o=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],u=t.invertY(n[0][1])-e[0][1],r=t.invertY(n[1][1])-e[1][1];return t.translate(i>o?(o+i)\/2:Math.min(0,o)||Math.max(0,i),r>u?(u+r)\/2:Math.min(0,u)||Math.max(0,r))}a.prototype=h.prototype,t.zoom=function(){var t,a,_=m,g=p,x=z,k=d,w=y,M=[0,1\/0],T=[[-1\/0,-1\/0],[1\/0,1\/0]],b=250,Y=o.interpolateZoom,X=n.dispatch(\"start\",\"zoom\",\"end\"),q=500,E=150,V=0;function B(t){t.property(\"__zoom\",v).on(\"wheel.zoom\",K).on(\"mousedown.zoom\",A).on(\"dblclick.zoom\",H).filter(w).on(\"touchstart.zoom\",N).on(\"touchmove.zoom\",O).on(\"touchend.zoom touchcancel.zoom\",W).style(\"touch-action\",\"none\").style(\"-webkit-tap-highlight-color\",\"rgba(0,0,0,0)\")}function D(t,n){return(n=Math.max(M[0],Math.min(M[1],n)))===t.k?t:new h(n,t.x,t.y)}function P(t,n,e){var o=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return o===t.x&&i===t.y?t:new h(t.k,o,i)}function I(t){return[(+t[0][0]+ +t[1][0])\/2,(+t[0][1]+ +t[1][1])\/2]}function S(t,n,e){t.on(\"start.zoom\",function(){j(this,arguments).start()}).on(\"interrupt.zoom end.zoom\",function(){j(this,arguments).end()}).tween(\"zoom\",function(){var t=this,o=arguments,i=j(t,o),u=g.apply(t,o),r=null==e?I(u):\"function\"==typeof e?e.apply(t,o):e,s=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),c=t.__zoom,a=\"function\"==typeof n?n.apply(t,o):n,f=Y(c.invert(r).concat(s\/c.k),a.invert(r).concat(s\/a.k));return function(t){if(1===t)t=a;else{var n=f(t),e=s\/n[2];t=new h(e,r[0]-n[0]*e,r[1]-n[1]*e)}i.zoom(null,t)}})}function j(t,n,e){return!e&&t.__zooming||new G(t,n)}function G(t,n){this.that=t,this.args=n,this.active=0,this.extent=g.apply(t,n),this.taps=0}function K(){if(_.apply(this,arguments)){var t=j(this,arguments),n=this.__zoom,e=Math.max(M[0],Math.min(M[1],n.k*Math.pow(2,k.apply(this,arguments)))),o=i.mouse(this);if(t.wheel)t.mouse[0][0]===o[0]&&t.mouse[0][1]===o[1]||(t.mouse[1]=n.invert(t.mouse[0]=o)),clearTimeout(t.wheel);else{if(n.k===e)return;t.mouse=[o,n.invert(o)],u.interrupt(this),t.start()}l(),t.wheel=setTimeout(function(){t.wheel=null,t.end()},E),t.zoom(\"mouse\",x(P(D(n,e),t.mouse[0],t.mouse[1]),t.extent,T))}}function A(){if(!a&&_.apply(this,arguments)){var t=j(this,arguments,!0),n=i.select(i.event.view).on(\"mousemove.zoom\",function(){if(l(),!t.moved){var n=i.event.clientX-r,e=i.event.clientY-s;t.moved=n*n+e*e>V}t.zoom(\"mouse\",x(P(t.that.__zoom,t.mouse[0]=i.mouse(t.that),t.mouse[1]),t.extent,T))},!0).on(\"mouseup.zoom\",function(){n.on(\"mousemove.zoom mouseup.zoom\",null),e.dragEnable(i.event.view,t.moved),l(),t.end()},!0),o=i.mouse(this),r=i.event.clientX,s=i.event.clientY;e.dragDisable(i.event.view),f(),t.mouse=[o,this.__zoom.invert(o)],u.interrupt(this),t.start()}}function H(){if(_.apply(this,arguments)){var t=this.__zoom,n=i.mouse(this),e=t.invert(n),o=t.k*(i.event.shiftKey?.5:2),u=x(P(D(t,o),n,e),g.apply(this,arguments),T);l(),b>0?i.select(this).transition().duration(b).call(S,u,n):i.select(this).call(B.transform,u)}}function N(){if(_.apply(this,arguments)){var n,e,o,r,s=i.event.touches,h=s.length,c=j(this,arguments,i.event.changedTouches.length===h);for(f(),e=0;e<h;++e)o=s[e],r=[r=i.touch(this,s,o.identifier),this.__zoom.invert(r),o.identifier],c.touch0?c.touch1||c.touch0[2]===r[2]||(c.touch1=r,c.taps=0):(c.touch0=r,n=!0,c.taps=1+!!t);t&&(t=clearTimeout(t)),n&&(c.taps<2&&(t=setTimeout(function(){t=null},q)),u.interrupt(this),c.start())}}function O(){if(this.__zooming){var n,e,o,u,r=j(this,arguments),s=i.event.changedTouches,h=s.length;for(l(),t&&(t=clearTimeout(t)),r.taps=0,n=0;n<h;++n)e=s[n],o=i.touch(this,s,e.identifier),r.touch0&&r.touch0[2]===e.identifier?r.touch0[0]=o:r.touch1&&r.touch1[2]===e.identifier&&(r.touch1[0]=o);if(e=r.that.__zoom,r.touch1){var c=r.touch0[0],a=r.touch0[1],f=r.touch1[0],m=r.touch1[1],p=(p=f[0]-c[0])*p+(p=f[1]-c[1])*p,v=(v=m[0]-a[0])*v+(v=m[1]-a[1])*v;e=D(e,Math.sqrt(p\/v)),o=[(c[0]+f[0])\/2,(c[1]+f[1])\/2],u=[(a[0]+m[0])\/2,(a[1]+m[1])\/2]}else{if(!r.touch0)return;o=r.touch0[0],u=r.touch0[1]}r.zoom(\"touch\",x(P(e,o,u),r.extent,T))}}function W(){if(this.__zooming){var t,n,e=j(this,arguments),o=i.event.changedTouches,u=o.length;for(f(),a&&clearTimeout(a),a=setTimeout(function(){a=null},q),t=0;t<u;++t)n=o[t],e.touch0&&e.touch0[2]===n.identifier?delete e.touch0:e.touch1&&e.touch1[2]===n.identifier&&delete e.touch1;if(e.touch1&&!e.touch0&&(e.touch0=e.touch1,delete e.touch1),e.touch0)e.touch0[1]=this.__zoom.invert(e.touch0[0]);else if(e.end(),2===e.taps){var r=i.select(this).on(\"dblclick.zoom\");r&&r.apply(this,arguments)}}}return B.transform=function(t,n,e){var o=t.selection?t.selection():t;o.property(\"__zoom\",v),t!==o?S(t,n,e):o.interrupt().each(function(){j(this,arguments).start().zoom(null,\"function\"==typeof n?n.apply(this,arguments):n).end()})},B.scaleBy=function(t,n,e){B.scaleTo(t,function(){var t=this.__zoom.k,e=\"function\"==typeof n?n.apply(this,arguments):n;return t*e},e)},B.scaleTo=function(t,n,e){B.transform(t,function(){var t=g.apply(this,arguments),o=this.__zoom,i=null==e?I(t):\"function\"==typeof e?e.apply(this,arguments):e,u=o.invert(i),r=\"function\"==typeof n?n.apply(this,arguments):n;return x(P(D(o,r),i,u),t,T)},e)},B.translateBy=function(t,n,e){B.transform(t,function(){return x(this.__zoom.translate(\"function\"==typeof n?n.apply(this,arguments):n,\"function\"==typeof e?e.apply(this,arguments):e),g.apply(this,arguments),T)})},B.translateTo=function(t,n,e,o){B.transform(t,function(){var t=g.apply(this,arguments),i=this.__zoom,u=null==o?I(t):\"function\"==typeof o?o.apply(this,arguments):o;return x(c.translate(u[0],u[1]).scale(i.k).translate(\"function\"==typeof n?-n.apply(this,arguments):-n,\"function\"==typeof e?-e.apply(this,arguments):-e),t,T)},o)},G.prototype={start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit(\"start\")),this},zoom:function(t,n){return this.mouse&&\"mouse\"!==t&&(this.mouse[1]=n.invert(this.mouse[0])),this.touch0&&\"touch\"!==t&&(this.touch0[1]=n.invert(this.touch0[0])),this.touch1&&\"touch\"!==t&&(this.touch1[1]=n.invert(this.touch1[0])),this.that.__zoom=n,this.emit(\"zoom\"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit(\"end\")),this},emit:function(t){i.customEvent(new s(B,t,this.that.__zoom),X.apply,X,[t,this.that,this.args])}},B.wheelDelta=function(t){return arguments.length?(k=\"function\"==typeof t?t:r(+t),B):k},B.filter=function(t){return arguments.length?(_=\"function\"==typeof t?t:r(!!t),B):_},B.touchable=function(t){return arguments.length?(w=\"function\"==typeof t?t:r(!!t),B):w},B.extent=function(t){return arguments.length?(g=\"function\"==typeof t?t:r([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),B):g},B.scaleExtent=function(t){return arguments.length?(M[0]=+t[0],M[1]=+t[1],B):[M[0],M[1]]},B.translateExtent=function(t){return arguments.length?(T[0][0]=+t[0][0],T[1][0]=+t[1][0],T[0][1]=+t[0][1],T[1][1]=+t[1][1],B):[[T[0][0],T[0][1]],[T[1][0],T[1][1]]]},B.constrain=function(t){return arguments.length?(x=t,B):x},B.duration=function(t){return arguments.length?(b=+t,B):b},B.interpolate=function(t){return arguments.length?(Y=t,B):Y},B.on=function(){var t=X.on.apply(X,arguments);return t===X?B:t},B.clickDistance=function(t){return arguments.length?(V=(t=+t)*t,B):Math.sqrt(V)},B},t.zoomIdentity=c,t.zoomTransform=a,Object.defineProperty(t,\"__esModule\",{value:!0})});\r\n<\/script>\r\n<script>!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n(exports,require(\"d3-selection\"),require(\"d3-drag\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"d3-selection\",\"d3-drag\"],n):n(t.d3=t.d3||{},t.d3,t.d3)}(this,function(t,n,r){\"use strict\";function e(t,n){return n={exports:{}},t(n,n.exports),n.exports}function o(){function t(t){function u(){p=[],h=\"\",_.attr(\"d\",null),m.attr(\"d\",null),r.nodes().forEach(function(t){t.__lasso.possible=!1,t.__lasso.selected=!1,t.__lasso.hoverSelect=!1,t.__lasso.loopSelect=!1;var n=t.getBoundingClientRect();t.__lasso.lassoPoint=[Math.round(n.left+n.width\/2),Math.round(n.top+n.height\/2)]}),s&&r.on(\"mouseover.lasso\",function(){this.__lasso.hoverSelect=!0}),i.start()}function l(){var t,n;\"touchmove\"===d3.event.sourceEvent.type?(t=d3.event.sourceEvent.touches[0].clientX,n=d3.event.sourceEvent.touches[0].clientY):(t=d3.event.sourceEvent.clientX,n=d3.event.sourceEvent.clientY);var s=d3.mouse(this)[0],u=d3.mouse(this)[1];\"\"===h?(h=h+\"M \"+s+\" \"+u,v=[t,n],d=[s,u],b.attr(\"cx\",s).attr(\"cy\",u).attr(\"r\",7).attr(\"display\",null)):h=h+\" L \"+s+\" \"+u,p.push([t,n]);var l=Math.sqrt(Math.pow(t-v[0],2)+Math.pow(n-v[1],2)),f=\"M \"+s+\" \"+u+\" L \"+d[0]+\" \"+d[1];_.attr(\"d\",h),m.attr(\"d\",f),a=l<=e,a&&o?m.attr(\"display\",null):m.attr(\"display\",\"none\"),r.nodes().forEach(function(t){t.__lasso.loopSelect=!(!a||!o)&&c(p,t.__lasso.lassoPoint)<1,t.__lasso.possible=t.__lasso.hoverSelect||t.__lasso.loopSelect}),i.draw()}function f(){r.on(\"mouseover.lasso\",null),r.nodes().forEach(function(t){t.__lasso.selected=t.__lasso.possible,t.__lasso.possible=!1}),_.attr(\"d\",null),m.attr(\"d\",null),b.attr(\"display\",\"none\"),i.end()}var h,v,d,p,g=t.append(\"g\").attr(\"class\",\"lasso\"),_=g.append(\"path\").attr(\"class\",\"drawn\"),m=g.append(\"path\").attr(\"class\",\"loop_close\"),b=g.append(\"circle\").attr(\"class\",\"origin\"),M=d3.drag().on(\"start\",u).on(\"drag\",l).on(\"end\",f);n.call(M)}var n,r=[],e=75,o=!0,a=!1,s=!0,i={start:function(){},draw:function(){},end:function(){}};return t.items=function(n){if(!arguments.length)return r;r=n;var e=r.nodes();return e.forEach(function(t){t.__lasso={possible:!1,selected:!1}}),t},t.possibleItems=function(){return r.filter(function(){return this.__lasso.possible})},t.selectedItems=function(){return r.filter(function(){return this.__lasso.selected})},t.notPossibleItems=function(){return r.filter(function(){return!this.__lasso.possible})},t.notSelectedItems=function(){return r.filter(function(){return!this.__lasso.selected})},t.closePathDistance=function(n){return arguments.length?(e=n,t):e},t.closePathSelect=function(n){return arguments.length?(o=n===!0,t):o},t.isPathClosed=function(n){return arguments.length?(a=n===!0,t):a},t.hoverSelect=function(n){return arguments.length?(s=n===!0,t):s},t.on=function(n,r){if(!arguments.length)return i;if(1===arguments.length)return i[n];var e=[\"start\",\"draw\",\"end\"];return e.indexOf(n)>-1&&(i[n]=r),t},t.targetArea=function(r){return arguments.length?(n=r,t):n},t}var a=e(function(t){function n(t,n,e){var o=t*n,a=r*t,s=a-t,i=a-s,u=t-i,l=r*n,f=l-n,c=l-f,h=n-c,v=o-i*c,d=v-u*c,p=d-i*h,g=u*h-p;return e?(e[0]=g,e[1]=o,e):[g,o]}t.exports=n;var r=+(Math.pow(2,27)+1)}),s=e(function(t){function n(t,n){var r=t+n,e=r-t,o=r-e,a=n-e,s=t-o,i=s+a;return i?[i,r]:[r]}function r(t,r){var e=0|t.length,o=0|r.length;if(1===e&&1===o)return n(t[0],r[0]);var a,s,i=e+o,u=new Array(i),l=0,f=0,c=0,h=Math.abs,v=t[f],d=h(v),p=r[c],g=h(p);d<g?(s=v,f+=1,f<e&&(v=t[f],d=h(v))):(s=p,c+=1,c<o&&(p=r[c],g=h(p))),f<e&&d<g||c>=o?(a=v,f+=1,f<e&&(v=t[f],d=h(v))):(a=p,c+=1,c<o&&(p=r[c],g=h(p)));for(var _,m,b,M,y,w=a+s,x=w-a,j=s-x,E=j,A=w;f<e&&c<o;)d<g?(a=v,f+=1,f<e&&(v=t[f],d=h(v))):(a=p,c+=1,c<o&&(p=r[c],g=h(p))),s=E,w=a+s,x=w-a,j=s-x,j&&(u[l++]=j),_=A+w,m=_-A,b=_-m,M=w-m,y=A-b,E=y+M,A=_;for(;f<e;)a=v,s=E,w=a+s,x=w-a,j=s-x,j&&(u[l++]=j),_=A+w,m=_-A,b=_-m,M=w-m,y=A-b,E=y+M,A=_,f+=1,f<e&&(v=t[f]);for(;c<o;)a=p,s=E,w=a+s,x=w-a,j=s-x,j&&(u[l++]=j),_=A+w,m=_-A,b=_-m,M=w-m,y=A-b,E=y+M,A=_,c+=1,c<o&&(p=r[c]);return E&&(u[l++]=E),A&&(u[l++]=A),l||(u[l++]=0),u.length=l,u}t.exports=r}),i=e(function(t){function n(t,n,r){var e=t+n,o=e-t,a=e-o,s=n-o,i=t-a;return r?(r[0]=i+s,r[1]=e,r):[i+s,e]}t.exports=n}),u=e(function(t){function n(t,n){var o=t.length;if(1===o){var a=r(t[0],n);return a[0]?a:[a[1]]}var s=new Array(2*o),i=[.1,.1],u=[.1,.1],l=0;r(t[0],n,i),i[0]&&(s[l++]=i[0]);for(var f=1;f<o;++f){r(t[f],n,u);var c=i[1];e(c,u[0],i),i[0]&&(s[l++]=i[0]);var h=u[1],v=i[1],d=h+v,p=d-h,g=v-p;i[1]=d,g&&(s[l++]=g)}return i[1]&&(s[l++]=i[1]),0===l&&(s[l++]=0),s.length=l,s}var r=a,e=i;t.exports=n}),l=e(function(t){function n(t,n){var r=t+n,e=r-t,o=r-e,a=n-e,s=t-o,i=s+a;return i?[i,r]:[r]}function r(t,r){var e=0|t.length,o=0|r.length;if(1===e&&1===o)return n(t[0],-r[0]);var a,s,i=e+o,u=new Array(i),l=0,f=0,c=0,h=Math.abs,v=t[f],d=h(v),p=-r[c],g=h(p);d<g?(s=v,f+=1,f<e&&(v=t[f],d=h(v))):(s=p,c+=1,c<o&&(p=-r[c],g=h(p))),f<e&&d<g||c>=o?(a=v,f+=1,f<e&&(v=t[f],d=h(v))):(a=p,c+=1,c<o&&(p=-r[c],g=h(p)));for(var _,m,b,M,y,w=a+s,x=w-a,j=s-x,E=j,A=w;f<e&&c<o;)d<g?(a=v,f+=1,f<e&&(v=t[f],d=h(v))):(a=p,c+=1,c<o&&(p=-r[c],g=h(p))),s=E,w=a+s,x=w-a,j=s-x,j&&(u[l++]=j),_=A+w,m=_-A,b=_-m,M=w-m,y=A-b,E=y+M,A=_;for(;f<e;)a=v,s=E,w=a+s,x=w-a,j=s-x,j&&(u[l++]=j),_=A+w,m=_-A,b=_-m,M=w-m,y=A-b,E=y+M,A=_,f+=1,f<e&&(v=t[f]);for(;c<o;)a=p,s=E,w=a+s,x=w-a,j=s-x,j&&(u[l++]=j),_=A+w,m=_-A,b=_-m,M=w-m,y=A-b,E=y+M,A=_,c+=1,c<o&&(p=-r[c]);return E&&(u[l++]=E),A&&(u[l++]=A),l||(u[l++]=0),u.length=l,u}t.exports=r}),f=e(function(t){function n(t,n){for(var r=new Array(t.length-1),e=1;e<t.length;++e)for(var o=r[e-1]=new Array(t.length-1),a=0,s=0;a<t.length;++a)a!==n&&(o[s++]=t[e][a]);return r}function r(t){for(var n=new Array(t),r=0;r<t;++r){n[r]=new Array(t);for(var e=0;e<t;++e)n[r][e]=[\"m\",e,\"[\",t-r-1,\"]\"].join(\"\")}return n}function e(t){return 1&t?\"-\":\"\"}function o(t){if(1===t.length)return t[0];if(2===t.length)return[\"sum(\",t[0],\",\",t[1],\")\"].join(\"\");var n=t.length>>1;return[\"sum(\",o(t.slice(0,n)),\",\",o(t.slice(n)),\")\"].join(\"\")}function i(t){if(2===t.length)return[[\"sum(prod(\",t[0][0],\",\",t[1][1],\"),prod(-\",t[0][1],\",\",t[1][0],\"))\"].join(\"\")];for(var r=[],a=0;a<t.length;++a)r.push([\"scale(\",o(i(n(t,a))),\",\",e(a),t[0][a],\")\"].join(\"\"));return r}function f(t){for(var e=[],a=[],s=r(t),u=[],l=0;l<t;++l)0===(1&l)?e.push.apply(e,i(n(s,l))):a.push.apply(a,i(n(s,l))),u.push(\"m\"+l);var f=o(e),c=o(a),h=\"orientation\"+t+\"Exact\",_=[\"function \",h,\"(\",u.join(),\"){var p=\",f,\",n=\",c,\",d=sub(p,n);return d[d.length-1];};return \",h].join(\"\"),m=new Function(\"sum\",\"prod\",\"scale\",\"sub\",_);return m(d,v,p,g)}function c(t){var n=x[t.length];return n||(n=x[t.length]=f(t.length)),n.apply(void 0,t)}function h(){for(;x.length<=_;)x.push(f(x.length));for(var n=[],r=[\"slow\"],e=0;e<=_;++e)n.push(\"a\"+e),r.push(\"o\"+e);for(var o=[\"function getOrientation(\",n.join(),\"){switch(arguments.length){case 0:case 1:return 0;\"],e=2;e<=_;++e)o.push(\"case \",e,\":return o\",e,\"(\",n.slice(0,e).join(),\");\");o.push(\"}var s=new Array(arguments.length);for(var i=0;i<arguments.length;++i){s[i]=arguments[i]};return slow(s);}return getOrientation\"),r.push(o.join(\"\"));var a=Function.apply(void 0,r);t.exports=a.apply(void 0,[c].concat(x));for(var e=0;e<=_;++e)t.exports[e]=x[e]}var v=a,d=s,p=u,g=l,_=5,m=1.1102230246251565e-16,b=(3+16*m)*m,M=(7+56*m)*m,y=f(3),w=f(4),x=[function(){return 0},function(){return 0},function(t,n){return n[0]-t[0]},function(t,n,r){var e,o=(t[1]-r[1])*(n[0]-r[0]),a=(t[0]-r[0])*(n[1]-r[1]),s=o-a;if(o>0){if(a<=0)return s;e=o+a}else{if(!(o<0))return s;if(a>=0)return s;e=-(o+a)}var i=b*e;return s>=i||s<=-i?s:y(t,n,r)},function(t,n,r,e){var o=t[0]-e[0],a=n[0]-e[0],s=r[0]-e[0],i=t[1]-e[1],u=n[1]-e[1],l=r[1]-e[1],f=t[2]-e[2],c=n[2]-e[2],h=r[2]-e[2],v=a*l,d=s*u,p=s*i,g=o*l,_=o*u,m=a*i,b=f*(v-d)+c*(p-g)+h*(_-m),y=(Math.abs(v)+Math.abs(d))*Math.abs(f)+(Math.abs(p)+Math.abs(g))*Math.abs(c)+(Math.abs(_)+Math.abs(m))*Math.abs(h),x=M*y;return b>x||-b>x?b:w(t,n,r,e)}];h()}),c=e(function(t){function n(t,n){for(var e=n[0],o=n[1],a=t.length,s=1,i=a,u=0,l=a-1;u<i;l=u++){var f=t[u],c=t[l],h=f[1],v=c[1];if(v<h){if(v<o&&o<h){var d=r(f,c,n);if(0===d)return 0;s^=0<d|0}else if(o===h){var p=t[(u+1)%a],g=p[1];if(h<g){var d=r(f,c,n);if(0===d)return 0;s^=0<d|0}}}else if(h<v){if(h<o&&o<v){var d=r(f,c,n);if(0===d)return 0;s^=d<0|0}else if(o===h){var p=t[(u+1)%a],g=p[1];if(g<h){var d=r(f,c,n);if(0===d)return 0;s^=d<0|0}}}else if(o===h){var _=Math.min(f[0],c[0]),m=Math.max(f[0],c[0]);if(0===u){for(;l>0;){var b=(l+a-1)%a,M=t[b];if(M[1]!==o)break;var y=M[0];_=Math.min(_,y),m=Math.max(m,y),l=b}if(0===l)return _<=e&&e<=m?0:1;i=l+1}for(var w=t[(l+a-1)%a][1];u+1<i;){var M=t[u+1];if(M[1]!==o)break;var y=M[0];_=Math.min(_,y),m=Math.max(m,y),u+=1}if(_<=e&&e<=m)return 0;var x=t[(u+1)%a][1];e<_&&w<o!=x<o&&(s^=1)}}return 2*s-1}t.exports=n;var r=f});t.lasso=o,Object.defineProperty(t,\"__esModule\",{value:!0})});<\/script>\r\n<script>\"use strict\";!function(){var i=\"undefined\"!=typeof exports&&exports||\"undefined\"!=typeof define&&{}||this||window;\"undefined\"!=typeof define&&define(\"save-svg-as-png\",[],function(){return i}),i.default=i;function c(e){if(!r(e))throw new Error(\"an HTMLElement or SVGElement is required; got \"+e)}function o(n){return new Promise(function(e,t){r(n)?e(n):t(new Error(\"an HTMLElement or SVGElement is required; got \"+n))})}function a(e){for(var t=window.atob(e.split(\",\")[1]),n=e.split(\",\")[0].split(\":\")[1].split(\";\")[0],e=new ArrayBuffer(t.length),r=new Uint8Array(e),o=0;o<t.length;o++)r[o]=t.charCodeAt(o);return new Blob([e],{type:n})}function u(){if(!(navigator.msSaveOrOpenBlob||\"download\"in document.createElement(\"a\")))return{popup:window.open()}}var E=\"http:\/\/www.w3.org\/2000\/xmlns\/\",C=\"http:\/\/www.w3.org\/2000\/svg\",s=\/url\\([\"']?(.+?)[\"']?\\)\/,n={woff2:\"font\/woff2\",woff:\"font\/woff\",otf:\"application\/x-font-opentype\",ttf:\"application\/x-font-ttf\",eot:\"application\/vnd.ms-fontobject\",sfnt:\"application\/font-sfnt\",svg:\"image\/svg+xml\"},r=function(e){return e instanceof HTMLElement||e instanceof SVGElement},l=function(e){return e&&0===e.lastIndexOf(\"http\",0)&&-1===e.lastIndexOf(window.location.host)},f=function(t){var e=Object.keys(n).filter(function(e){return 0<t.indexOf(\".\"+e)}).map(function(e){return n[e]});return e?e[0]:(console.error(\"Unknown font format for \"+t+\". Fonts may not be working correctly.\"),\"application\/octet-stream\")},d=function(e){for(var t=\"\",n=new Uint8Array(e),r=0;r<n.byteLength;r++)t+=String.fromCharCode(n[r]);return window.btoa(t)},T=function(e,t,n){n=e.viewBox&&e.viewBox.baseVal&&e.viewBox.baseVal[n]||null!==t.getAttribute(n)&&!t.getAttribute(n).match(\/%$\/)&&parseInt(t.getAttribute(n))||e.getBoundingClientRect()[n]||parseInt(t.style[n])||parseInt(window.getComputedStyle(e).getPropertyValue(n));return null==n||isNaN(parseFloat(n))?0:n},U=function(e,t){if(t)try{return e.querySelector(t)||e.parentNode&&e.parentNode.querySelector(t)}catch(e){console.warn('Invalid CSS selector \"'+t+'\"',e)}},k=function(e,t){var n=e.cssText.match(s),n=n&&n[1]||\"\";if(n&&!n.match(\/^data:\/)&&\"about:blank\"!==n){n=n.startsWith(\"..\/\")?t+\"\/..\/\"+n:n.startsWith(\".\/\")?t+\"\/.\"+n:n;return{text:e.cssText,format:f(n),url:n}}},h={},L=function(e){return Promise.all(e.map(function(r){return new Promise(function(t,e){if(h[r.url])return t(h[r.url]);var n=new XMLHttpRequest;n.addEventListener(\"load\",function(){var e=d(n.response),e=r.text.replace(s,'url(\"data:'+r.format+\";base64,\"+e+'\")')+\"\\n\";h[r.url]=e,t(e)}),n.addEventListener(\"error\",function(e){console.warn(\"Failed to load font from: \"+r.url,e),h[r.url]=null,t(null)}),n.addEventListener(\"abort\",function(e){console.warn(\"Aborted loading font from: \"+r.url,e),t(null)}),n.open(\"GET\",r.url),n.responseType=\"arraybuffer\",n.send()})})).then(function(e){return e.filter(function(e){return e}).join(\"\")})},e=null,O=function(){return e=e||Array.from(document.styleSheets).map(function(t){try{return{rules:t.cssRules,href:t.href}}catch(e){return console.warn(\"Stylesheet could not be loaded: \"+t.href,e),{}}})};i.prepareSvg=function(w,g,p){c(w);var e=g||{},t=e.left,m=void 0===t?0:t,t=e.top,v=void 0===t?0:t,b=e.width,y=e.height,t=e.scale,x=void 0===t?1:t,t=e.responsive,A=void 0!==t&&t,e=e.excludeCss,S=void 0!==e&&e;return Promise.all(Array.from(w.querySelectorAll(\"image\")).map(function(o){var i=o.getAttributeNS(\"http:\/\/www.w3.org\/1999\/xlink\",\"href\")||o.getAttribute(\"href\");return i?(l(i)&&(i+=(-1===i.indexOf(\"?\")?\"?\":\"&\")+\"t=\"+(new Date).valueOf()),new Promise(function(e,t){var n=document.createElement(\"canvas\"),r=new Image;r.crossOrigin=\"anonymous\",r.src=i,r.onerror=function(){return t(new Error(\"Could not load \"+i))},r.onload=function(){n.width=r.width,n.height=r.height,n.getContext(\"2d\").drawImage(r,0,0),o.setAttributeNS(\"http:\/\/www.w3.org\/1999\/xlink\",\"href\",n.toDataURL(\"image\/png\")),e(!0)}})):Promise.resolve(null)})).then(function(){var n=w.cloneNode(!0);n.style.backgroundColor=(g||{}).backgroundColor||w.style.backgroundColor;var e=function(e,t,n,r){if(\"svg\"===e.tagName)return{width:n||T(e,t,\"width\"),height:r||T(e,t,\"height\")};if(e.getBBox){r=e.getBBox(),t=r.x,e=r.y;return{width:t+r.width,height:e+r.height}}}(w,n,b,y),r=e.width,o=e.height;if(\"svg\"!==w.tagName){if(!w.getBBox)return void console.error(\"Attempted to render non-SVG element\",w);null!=n.getAttribute(\"transform\")&&n.setAttribute(\"transform\",n.getAttribute(\"transform\").replace(\/translate\\(.*?\\)\/,\"\"));var t=document.createElementNS(\"http:\/\/www.w3.org\/2000\/svg\",\"svg\");t.appendChild(n),n=t}if(n.setAttribute(\"version\",\"1.1\"),n.setAttribute(\"viewBox\",[m,v,r,o].join(\" \")),n.getAttribute(\"xmlns\")||n.setAttributeNS(E,\"xmlns\",C),n.getAttribute(\"xmlns:xlink\")||n.setAttributeNS(E,\"xmlns:xlink\",\"http:\/\/www.w3.org\/1999\/xlink\"),A?(n.removeAttribute(\"width\"),n.removeAttribute(\"height\"),n.setAttribute(\"preserveAspectRatio\",\"xMinYMin meet\")):(n.setAttribute(\"width\",r*x),n.setAttribute(\"height\",o*x)),Array.from(n.querySelectorAll(\"foreignObject > *\")).forEach(function(e){e.setAttributeNS(E,\"xmlns\",\"svg\"===e.tagName?C:\"http:\/\/www.w3.org\/1999\/xhtml\")}),!S)return i=w,u=(e=(a=g)||{}).selectorRemap,s=e.modifyStyle,t=e.modifyCss,a=e.fonts,l=e.excludeUnusedCss,c=t||function(e,t){return(u?u(e):e)+\"{\"+(s?s(t):t)+\"}\\n\"},f=[],d=void 0===a,h=a||[],O().forEach(function(e){var t=e.rules,n=e.href;t&&Array.from(t).forEach(function(e){var t;void 0!==e.style&&(U(i,e.selectorText)?f.push(c(e.selectorText,e.style.cssText)):d&&e.cssText.match(\/^@font-face\/)?(t=k(e,n))&&h.push(t):l||f.push(e.cssText))})}),L(h).then(function(e){return f.join(\"\\n\")+e}).then(function(e){var t=document.createElement(\"style\");t.setAttribute(\"type\",\"text\/css\"),t.innerHTML=\"<![CDATA[\\n\"+e+\"\\n]]>\";e=document.createElement(\"defs\");e.appendChild(t),n.insertBefore(e,n.firstChild);e=document.createElement(\"div\");e.appendChild(n);e=e.innerHTML.replace(\/NS\\d+:href\/gi,'xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" xlink:href');if(\"function\"!=typeof p)return{src:e,width:r,height:o};p(e,r,o)});a=document.createElement(\"div\");a.appendChild(n);var i,a,u,s,l,c,f,d,h,a=a.innerHTML;if(\"function\"!=typeof p)return{src:a,width:r,height:o};p(a,r,o)})},i.svgAsDataUri=function(e,t,r){return c(e),i.prepareSvg(e,t).then(function(e){var t=e.src,n=e.width,e=e.height,t=\"data:image\/svg+xml;base64,\"+window.btoa(decodeURIComponent(encodeURIComponent('<?xml version=\"1.0\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-\/\/W3C\/\/DTD SVG 1.1\/\/EN\" \"http:\/\/www.w3.org\/Graphics\/SVG\/1.1\/DTD\/svg11.dtd\" [<!ENTITY nbsp \"&#160;\">]>'+t).replace(\/%([0-9A-F]{2})\/g,function(e,t){t=String.fromCharCode(\"0x\"+t);return\"%\"===t?\"%25\":t})));return\"function\"==typeof r&&r(t,n,e),t})},i.svgAsPngUri=function(e,t,a){c(e);function o(e){var t=e.src,n=e.width,r=e.height,o=document.createElement(\"canvas\"),i=o.getContext(\"2d\"),e=window.devicePixelRatio||1;o.width=n*e,o.height=r*e,o.style.width=o.width+\"px\",o.style.height=o.height+\"px\",i.setTransform(e,0,0,e,0,0),l?l(o,t):i.drawImage(t,0,0),t=void 0;try{t=o.toDataURL(u,s)}catch(e){if(\"undefined\"!=typeof SecurityError&&e instanceof SecurityError||\"SecurityError\"===e.name)return void console.error(\"Rendered SVG images cannot be downloaded in this browser.\");throw e}return\"function\"==typeof a&&a(t,o.width,o.height),Promise.resolve(t)}var n=t||{},r=n.encoderType,u=void 0===r?\"image\/png\":r,r=n.encoderOptions,s=void 0===r?.8:r,l=n.canvg;return l?i.prepareSvg(e,t).then(o):i.svgAsDataUri(e,t).then(function(r){return new Promise(function(e,t){var n=new Image;n.onload=function(){return e(o({src:n,width:n.width,height:n.height}))},n.onerror=function(){t(\"There was an error loading the data URI as an image on the following SVG\\n\"+window.atob(r.slice(26))+\"Open the following link to see browser's diagnosis\\n\"+r)},n.src=r})})},i.download=function(e,t,n){if(navigator.msSaveOrOpenBlob)navigator.msSaveOrOpenBlob(a(t),e);else{var r=document.createElement(\"a\");if(\"download\"in r){r.download=e,r.style.display=\"none\",document.body.appendChild(r);try{var o=a(t),i=URL.createObjectURL(o);r.href=i,r.onclick=function(){return requestAnimationFrame(function(){return URL.revokeObjectURL(i)})}}catch(e){console.error(e),console.warn(\"Error while getting object URL. Falling back to string URL.\"),r.href=t}r.click(),document.body.removeChild(r)}else n&&n.popup&&(n.popup.document.title=e,n.popup.location.replace(t))}},i.saveSvg=function(e,t,n){var r=u();return o(e).then(function(e){return i.svgAsDataUri(e,n||{})}).then(function(e){return i.download(t,e,r)})},i.saveSvgAsPng=function(e,t,n){var r=u();return o(e).then(function(e){return i.svgAsPngUri(e,n||{})}).then(function(e){return i.download(t,e,r)})}}();<\/script>\r\n<style type=\"text\/css\">.girafe,.girafe_container_std{margin-left:auto;margin-right:auto}.girafe_container_std{position:relative;text-align:center}.girafe_container_ie{height:0}.girafe_svg_ie{position:absolute;top:0;left:0}.ggiraph-toolbar{position:absolute;background-color:#fff;background-color:hsla(0,0%,100%,.3);border-radius:5px;padding-top:2px;opacity:0;transition:opacity .3s ease 0s}.ggiraph-toolbar-top{text-align:center;top:3px;right:0;left:0}.ggiraph-toolbar-topleft{text-align:left;top:3px;left:3px}.ggiraph-toolbar-topright{text-align:right;top:3px;right:3px}.ggiraph-toolbar-bottom{text-align:center;bottom:3px;right:0;left:0}.ggiraph-toolbar-bottomleft{text-align:left;left:3px;bottom:3px}.ggiraph-toolbar-bottomright{text-align:right;right:3px;bottom:3px}.ggiraph-toolbar-block{display:inline-block;padding-right:10px}.ggiraph-toolbar-icon{position:relative;cursor:pointer;box-sizing:border-box;padding-right:3px}.drop{stroke:#e30c37;fill:#e30c37}.drop:hover{stroke:#333;fill:#333}.neutral{stroke:#069;fill:#069}.neutral:hover{stroke:#333;fill:#333}.lasso path{stroke:#505050;stroke-width:2px}.lasso .drawn{fill-opacity:.05}.lasso .loop_close{fill:none;stroke-dasharray:4,4}.lasso .origin{fill:#333;fill-opacity:.5}<\/style>\r\n<script>!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"d3\")):\"function\"==typeof define&&define.amd?define([\"d3\"],e):\"object\"==typeof exports?exports.ggiraphjs=e(require(\"d3\")):t.ggiraphjs=e(t.d3)}(window,(function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=187)}([function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n(\"object\"==typeof globalThis&&globalThis)||n(\"object\"==typeof window&&window)||n(\"object\"==typeof self&&self)||n(\"object\"==typeof e&&e)||function(){return this}()||Function(\"return this\")()}).call(this,n(107))},function(e,n){e.exports=t},function(t,e){var n=Function.prototype,r=n.bind,i=n.call,o=r&&r.bind(i);t.exports=r?function(t){return t&&o(i,t)}:function(t){return t&&function(){return i.apply(t,arguments)}}},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){\"use strict\";var r,i,o,s=n(99),a=n(8),u=n(0),c=n(6),f=n(13),l=n(11),h=n(33),p=n(47),v=n(22),d=n(16),y=n(12).f,g=n(26),m=n(57),x=n(42),w=n(5),b=n(50),A=u.Int8Array,S=A&&A.prototype,O=u.Uint8ClampedArray,E=O&&O.prototype,T=A&&m(A),k=S&&m(S),_=Object.prototype,I=u.TypeError,N=w(\"toStringTag\"),M=b(\"TYPED_ARRAY_TAG\"),P=b(\"TYPED_ARRAY_CONSTRUCTOR\"),R=s&&!!x&&\"Opera\"!==h(u.opera),j=!1,C={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},D={BigInt64Array:8,BigUint64Array:8},z=function(t){if(!f(t))return!1;var e=h(t);return l(C,e)||l(D,e)};for(r in C)(o=(i=u[r])&&i.prototype)?v(o,P,i):R=!1;for(r in D)(o=(i=u[r])&&i.prototype)&&v(o,P,i);if((!R||!c(T)||T===Function.prototype)&&(T=function(){throw I(\"Incorrect invocation\")},R))for(r in C)u[r]&&x(u[r],T);if((!R||!k||k===_)&&(k=T.prototype,R))for(r in C)u[r]&&x(u[r].prototype,k);if(R&&m(E)!==k&&x(E,k),a&&!l(k,N))for(r in j=!0,y(k,N,{get:function(){return f(this)?this[M]:void 0}}),C)u[r]&&v(u[r],M,r);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:R,TYPED_ARRAY_CONSTRUCTOR:P,TYPED_ARRAY_TAG:j&&M,aTypedArray:function(t){if(z(t))return t;throw I(\"Target is not a typed array\")},aTypedArrayConstructor:function(t){if(c(t)&&(!x||g(T,t)))return t;throw I(p(t)+\" is not a typed array constructor\")},exportTypedArrayMethod:function(t,e,n){if(a){if(n)for(var r in C){var i=u[r];if(i&&l(i.prototype,t))try{delete i.prototype[t]}catch(t){}}k[t]&&!n||d(k,t,n?e:R&&S[t]||e)}},exportTypedArrayStaticMethod:function(t,e,n){var r,i;if(a){if(x){if(n)for(r in C)if((i=u[r])&&l(i,t))try{delete i[t]}catch(t){}if(T[t]&&!n)return;try{return d(T,t,n?e:R&&T[t]||e)}catch(t){}}for(r in C)!(i=u[r])||i[t]&&!n||d(i,t,e)}},isView:function(t){if(!f(t))return!1;var e=h(t);return\"DataView\"===e||l(C,e)||l(D,e)},isTypedArray:z,TypedArray:T,TypedArrayPrototype:k}},function(t,e,n){var r=n(0),i=n(48),o=n(11),s=n(50),a=n(59),u=n(76),c=i(\"wks\"),f=r.Symbol,l=f&&f.for,h=u?f:f&&f.withoutSetter||s;t.exports=function(t){if(!o(c,t)||!a&&\"string\"!=typeof c[t]){var e=\"Symbol.\"+t;a&&o(f,t)?c[t]=f[t]:c[t]=u&&l?l(e):h(e)}return c[t]}},function(t,e){t.exports=function(t){return\"function\"==typeof t}},function(t,e,n){var r=n(0),i=n(35).f,o=n(22),s=n(16),a=n(62),u=n(79),c=n(112);t.exports=function(t,e){var n,f,l,h,p,v=t.target,d=t.global,y=t.stat;if(n=d?r:y?r[v]||a(v,{}):(r[v]||{}).prototype)for(f in e){if(h=e[f],l=t.noTargetGet?(p=i(n,f))&&p.value:n[f],!c(d?f:v+(y?\".\":\"#\")+f,t.forced)&&void 0!==l){if(typeof h==typeof l)continue;u(h,l)}(t.sham||l&&l.sham)&&o(h,\"sham\",!0),s(n,f,h,t)}}},function(t,e,n){var r=n(3);t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,e,n){var r=n(0),i=n(13),o=r.String,s=r.TypeError;t.exports=function(t){if(i(t))return t;throw s(o(t)+\" is not an object\")}},function(t,e){var n=Function.prototype.call;t.exports=n.bind?n.bind(n):function(){return n.apply(n,arguments)}},function(t,e,n){var r=n(2),i=n(15),o=r({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return o(i(t),e)}},function(t,e,n){var r=n(0),i=n(8),o=n(77),s=n(9),a=n(36),u=r.TypeError,c=Object.defineProperty;e.f=i?c:function(t,e,n){if(s(t),e=a(e),s(n),o)try{return c(t,e,n)}catch(t){}if(\"get\"in n||\"set\"in n)throw u(\"Accessors not supported\");return\"value\"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(6);t.exports=function(t){return\"object\"==typeof t?null!==t:r(t)}},function(t,e,n){var r=n(44),i=n(24);t.exports=function(t){return r(i(t))}},function(t,e,n){var r=n(0),i=n(24),o=r.Object;t.exports=function(t){return o(i(t))}},function(t,e,n){var r=n(0),i=n(6),o=n(11),s=n(22),a=n(62),u=n(63),c=n(32),f=n(39).CONFIGURABLE,l=c.get,h=c.enforce,p=String(String).split(\"String\");(t.exports=function(t,e,n,u){var c,l=!!u&&!!u.unsafe,v=!!u&&!!u.enumerable,d=!!u&&!!u.noTargetGet,y=u&&void 0!==u.name?u.name:e;i(n)&&(\"Symbol(\"===String(y).slice(0,7)&&(y=\"[\"+String(y).replace(\/^Symbol\\(([^)]*)\\)\/,\"$1\")+\"]\"),(!o(n,\"name\")||f&&n.name!==y)&&s(n,\"name\",y),(c=h(n)).source||(c.source=p.join(\"string\"==typeof y?y:\"\"))),t!==r?(l?!d&&t[e]&&(v=!0):delete t[e],v?t[e]=n:s(t,e,n)):v?t[e]=n:a(e,n)})(Function.prototype,\"toString\",(function(){return i(this)&&l(this).source||u(this)}))},function(t,e,n){var r=n(21);t.exports=function(t){return r(t.length)}},function(t,e,n){var r=n(0),i=n(33),o=r.String;t.exports=function(t){if(\"Symbol\"===i(t))throw TypeError(\"Cannot convert a Symbol value to a string\");return o(t)}},function(t,e,n){var r=n(94),i=n(2),o=n(44),s=n(15),a=n(17),u=n(91),c=i([].push),f=function(t){var e=1==t,n=2==t,i=3==t,f=4==t,l=6==t,h=7==t,p=5==t||l;return function(v,d,y,g){for(var m,x,w=s(v),b=o(w),A=r(d,y),S=a(b),O=0,E=g||u,T=e?E(v,S):n||h?E(v,0):void 0;S>O;O++)if((p||O in b)&&(x=A(m=b[O],O,w),t))if(e)T[O]=x;else if(x)switch(t){case 3:return!0;case 5:return m;case 6:return O;case 2:c(T,m)}else switch(t){case 4:return!1;case 7:c(T,m)}return l?-1:i||f?f:T}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6),filterReject:f(7)}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){var e=+t;return e!=e||0===e?0:(e>0?r:n)(e)}},function(t,e,n){var r=n(20),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(8),i=n(12),o=n(30);t.exports=r?function(t,e,n){return i.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(2);t.exports=r([].slice)},function(t,e,n){var r=n(0).TypeError;t.exports=function(t){if(null==t)throw r(\"Can't call method on \"+t);return t}},function(t,e,n){var r=n(0),i=n(6),o=function(t){return i(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?o(r[t]):r[t]&&r[t][e]}},function(t,e,n){var r=n(2);t.exports=r({}.isPrototypeOf)},function(t,e,n){var r=n(20),i=Math.max,o=Math.min;t.exports=function(t,e){var n=r(t);return n<0?i(n+e,0):o(n,e)}},function(t,e,n){var r,i=n(9),o=n(113),s=n(64),a=n(52),u=n(114),c=n(78),f=n(51),l=f(\"IE_PROTO\"),h=function(){},p=function(t){return\"<script>\"+t+\"<\\\/script>\"},v=function(t){t.write(p(\"\")),t.close();var e=t.parentWindow.Object;return t=null,e},d=function(){try{r=new ActiveXObject(\"htmlfile\")}catch(t){}var t,e;d=\"undefined\"!=typeof document?document.domain&&r?v(r):((e=c(\"iframe\")).style.display=\"none\",u.appendChild(e),e.src=String(\"javascript:\"),(t=e.contentWindow.document).open(),t.write(p(\"document.F=Object\")),t.close(),t.F):v(r);for(var n=s.length;n--;)delete d.prototype[s[n]];return d()};a[l]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(h.prototype=i(t),n=new h,h.prototype=null,n[l]=t):n=d(),void 0===e?n:o(n,e)}},function(t,e,n){var r=n(7),i=n(8);r({target:\"Object\",stat:!0,forced:!i,sham:!i},{defineProperty:n(12).f})},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,n){var r=n(2),i=r({}.toString),o=r(\"\".slice);t.exports=function(t){return o(i(t),8,-1)}},function(t,e,n){var r,i,o,s=n(110),a=n(0),u=n(2),c=n(13),f=n(22),l=n(11),h=n(61),p=n(51),v=n(52),d=a.TypeError,y=a.WeakMap;if(s||h.state){var g=h.state||(h.state=new y),m=u(g.get),x=u(g.has),w=u(g.set);r=function(t,e){if(x(g,t))throw new d(\"Object already initialized\");return e.facade=t,w(g,t,e),e},i=function(t){return m(g,t)||{}},o=function(t){return x(g,t)}}else{var b=p(\"state\");v[b]=!0,r=function(t,e){if(l(t,b))throw new d(\"Object already initialized\");return e.facade=t,f(t,b,e),e},i=function(t){return l(t,b)?t[b]:{}},o=function(t){return l(t,b)}}t.exports={set:r,get:i,has:o,enforce:function(t){return o(t)?i(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!c(e)||(n=i(e)).type!==t)throw d(\"Incompatible receiver, \"+t+\" required\");return n}}}},function(t,e,n){var r=n(0),i=n(65),o=n(6),s=n(31),a=n(5)(\"toStringTag\"),u=r.Object,c=\"Arguments\"==s(function(){return arguments}());t.exports=i?s:function(t){var e,n,r;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=u(t),a))?n:c?s(e):\"Object\"==(r=s(e))&&o(e.callee)?\"Arguments\":r}},function(t,e){var n=Function.prototype,r=n.apply,i=n.bind,o=n.call;t.exports=\"object\"==typeof Reflect&&Reflect.apply||(i?o.bind(r):function(){return o.apply(r,arguments)})},function(t,e,n){var r=n(8),i=n(10),o=n(75),s=n(30),a=n(14),u=n(36),c=n(11),f=n(77),l=Object.getOwnPropertyDescriptor;e.f=r?l:function(t,e){if(t=a(t),e=u(e),f)try{return l(t,e)}catch(t){}if(c(t,e))return s(!i(o.f,t,e),t[e])}},function(t,e,n){var r=n(108),i=n(45);t.exports=function(t){var e=r(t,\"string\");return i(e)?e:e+\"\"}},function(t,e,n){var r=n(38);t.exports=function(t,e){var n=t[e];return null==n?void 0:r(n)}},function(t,e,n){var r=n(0),i=n(6),o=n(47),s=r.TypeError;t.exports=function(t){if(i(t))return t;throw s(o(t)+\" is not a function\")}},function(t,e,n){var r=n(8),i=n(11),o=Function.prototype,s=r&&Object.getOwnPropertyDescriptor,a=i(o,\"name\"),u=a&&\"something\"===function(){}.name,c=a&&(!r||r&&s(o,\"name\").configurable);t.exports={EXISTS:a,PROPER:u,CONFIGURABLE:c}},function(t,e,n){var r=n(80),i=n(64).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},function(t,e){t.exports={}},function(t,e,n){var r=n(2),i=n(9),o=n(142);t.exports=Object.setPrototypeOf||(\"__proto__\"in{}?function(){var t,e=!1,n={};try{(t=r(Object.getOwnPropertyDescriptor(Object.prototype,\"__proto__\").set))(n,[]),e=n instanceof Array}catch(t){}return function(n,r){return i(n),o(r),e?t(n,r):n.__proto__=r,n}}():void 0)},function(t,e,n){\"use strict\";var r=n(7),i=n(54);r({target:\"RegExp\",proto:!0,forced:\/.\/.exec!==i},{exec:i})},function(t,e,n){var r=n(0),i=n(2),o=n(3),s=n(31),a=r.Object,u=i(\"\".split);t.exports=o((function(){return!a(\"z\").propertyIsEnumerable(0)}))?function(t){return\"String\"==s(t)?u(t,\"\"):a(t)}:a},function(t,e,n){var r=n(0),i=n(25),o=n(6),s=n(26),a=n(76),u=r.Object;t.exports=a?function(t){return\"symbol\"==typeof t}:function(t){var e=i(\"Symbol\");return o(e)&&s(e.prototype,u(t))}},function(t,e,n){var r=n(25);t.exports=r(\"navigator\",\"userAgent\")||\"\"},function(t,e,n){var r=n(0).String;t.exports=function(t){try{return r(t)}catch(t){return\"Object\"}}},function(t,e,n){var r=n(49),i=n(61);(t.exports=function(t,e){return i[t]||(i[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:\"3.19.1\",mode:r?\"pure\":\"global\",copyright:\"\u00a9 2021 Denis Pushkarev (zloirock.ru)\"})},function(t,e){t.exports=!1},function(t,e,n){var r=n(2),i=0,o=Math.random(),s=r(1..toString);t.exports=function(t){return\"Symbol(\"+(void 0===t?\"\":t)+\")_\"+s(++i+o,36)}},function(t,e,n){var r=n(48),i=n(50),o=r(\"keys\");t.exports=function(t){return o[t]||(o[t]=i(t))}},function(t,e){t.exports={}},function(t,e,n){var r=n(14),i=n(27),o=n(17),s=function(t){return function(e,n,s){var a,u=r(e),c=o(u),f=i(s,c);if(t&&n!=n){for(;c>f;)if((a=u[f++])!=a)return!0}else for(;c>f;f++)if((t||f in u)&&u[f]===n)return t||f||0;return!t&&-1}};t.exports={includes:s(!0),indexOf:s(!1)}},function(t,e,n){\"use strict\";var r,i,o=n(10),s=n(2),a=n(18),u=n(82),c=n(83),f=n(48),l=n(28),h=n(32).get,p=n(115),v=n(116),d=f(\"native-string-replace\",String.prototype.replace),y=RegExp.prototype.exec,g=y,m=s(\"\".charAt),x=s(\"\".indexOf),w=s(\"\".replace),b=s(\"\".slice),A=(i=\/b*\/g,o(y,r=\/a\/,\"a\"),o(y,i,\"a\"),0!==r.lastIndex||0!==i.lastIndex),S=c.UNSUPPORTED_Y||c.BROKEN_CARET,O=void 0!==\/()??\/.exec(\"\")[1];(A||O||S||p||v)&&(g=function(t){var e,n,r,i,s,c,f,p=this,v=h(p),E=a(t),T=v.raw;if(T)return T.lastIndex=p.lastIndex,e=o(g,T,E),p.lastIndex=T.lastIndex,e;var k=v.groups,_=S&&p.sticky,I=o(u,p),N=p.source,M=0,P=E;if(_&&(I=w(I,\"y\",\"\"),-1===x(I,\"g\")&&(I+=\"g\"),P=b(E,p.lastIndex),p.lastIndex>0&&(!p.multiline||p.multiline&&\"\\n\"!==m(E,p.lastIndex-1))&&(N=\"(?: \"+N+\")\",P=\" \"+P,M++),n=new RegExp(\"^(?:\"+N+\")\",I)),O&&(n=new RegExp(\"^\"+N+\"$(?!\\\\s)\",I)),A&&(r=p.lastIndex),i=o(y,_?n:p,P),_?i?(i.input=b(i.input,M),i[0]=b(i[0],M),i.index=p.lastIndex,p.lastIndex+=i[0].length):p.lastIndex=0:A&&i&&(p.lastIndex=p.global?i.index+i[0].length:r),O&&i&&i.length>1&&o(d,i[0],n,(function(){for(s=1;s<arguments.length-2;s++)void 0===arguments[s]&&(i[s]=void 0)})),i&&k)for(i.groups=c=l(null),s=0;s<k.length;s++)c[(f=k[s])[0]]=i[f[1]];return i}),t.exports=g},function(t,e,n){var r=n(31);t.exports=Array.isArray||function(t){return\"Array\"==r(t)}},function(t,e,n){var r=n(12).f,i=n(11),o=n(5)(\"toStringTag\");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},function(t,e,n){var r=n(0),i=n(11),o=n(6),s=n(15),a=n(51),u=n(141),c=a(\"IE_PROTO\"),f=r.Object,l=f.prototype;t.exports=u?f.getPrototypeOf:function(t){var e=s(t);if(i(e,c))return e[c];var n=e.constructor;return o(n)&&e instanceof n?n.prototype:e instanceof f?l:null}},function(t,e,n){var r=n(4),i=n(72),o=r.TYPED_ARRAY_CONSTRUCTOR,s=r.aTypedArrayConstructor;t.exports=function(t){return s(i(t,t[o]))}},function(t,e,n){var r=n(60),i=n(3);t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},function(t,e,n){var r,i,o=n(0),s=n(46),a=o.process,u=o.Deno,c=a&&a.versions||u&&u.version,f=c&&c.v8;f&&(i=(r=f.split(\".\"))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!i&&s&&(!(r=s.match(\/Edge\\\/(\\d+)\/))||r[1]>=74)&&(r=s.match(\/Chrome\\\/(\\d+)\/))&&(i=+r[1]),t.exports=i},function(t,e,n){var r=n(0),i=n(62),o=r[\"__core-js_shared__\"]||i(\"__core-js_shared__\",{});t.exports=o},function(t,e,n){var r=n(0),i=Object.defineProperty;t.exports=function(t,e){try{i(r,t,{value:e,configurable:!0,writable:!0})}catch(n){r[t]=e}return e}},function(t,e,n){var r=n(2),i=n(6),o=n(61),s=r(Function.toString);i(o.inspectSource)||(o.inspectSource=function(t){return s(t)}),t.exports=o.inspectSource},function(t,e){t.exports=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"]},function(t,e,n){var r={};r[n(5)(\"toStringTag\")]=\"z\",t.exports=\"[object z]\"===String(r)},function(t,e,n){\"use strict\";var r=n(34),i=n(10),o=n(2),s=n(67),a=n(3),u=n(9),c=n(6),f=n(20),l=n(21),h=n(18),p=n(24),v=n(68),d=n(37),y=n(118),g=n(69),m=n(5)(\"replace\"),x=Math.max,w=Math.min,b=o([].concat),A=o([].push),S=o(\"\".indexOf),O=o(\"\".slice),E=\"$0\"===\"a\".replace(\/.\/,\"$0\"),T=!!\/.\/[m]&&\"\"===\/.\/[m](\"a\",\"$0\");s(\"replace\",(function(t,e,n){var o=T?\"$\":\"$0\";return[function(t,n){var r=p(this),o=null==t?void 0:d(t,m);return o?i(o,t,r,n):i(e,h(r),t,n)},function(t,i){var s=u(this),a=h(t);if(\"string\"==typeof i&&-1===S(i,o)&&-1===S(i,\"$<\")){var p=n(e,s,a,i);if(p.done)return p.value}var d=c(i);d||(i=h(i));var m=s.global;if(m){var E=s.unicode;s.lastIndex=0}for(var T=[];;){var k=g(s,a);if(null===k)break;if(A(T,k),!m)break;\"\"===h(k[0])&&(s.lastIndex=v(a,l(s.lastIndex),E))}for(var _,I=\"\",N=0,M=0;M<T.length;M++){for(var P=h((k=T[M])[0]),R=x(w(f(k.index),a.length),0),j=[],C=1;C<k.length;C++)A(j,void 0===(_=k[C])?_:String(_));var D=k.groups;if(d){var z=b([P],j,R,a);void 0!==D&&A(z,D);var L=h(r(i,void 0,z))}else L=y(P,a,R,j,D,i);R>=N&&(I+=O(a,N,R)+L,N=R+P.length)}return I+O(a,N)}]}),!!a((function(){var t=\/.\/;return t.exec=function(){var t=[];return t.groups={a:\"7\"},t},\"7\"!==\"\".replace(t,\"$<a>\")}))||!E||T)},function(t,e,n){\"use strict\";n(43);var r=n(2),i=n(16),o=n(54),s=n(3),a=n(5),u=n(22),c=a(\"species\"),f=RegExp.prototype;t.exports=function(t,e,n,l){var h=a(t),p=!s((function(){var e={};return e[h]=function(){return 7},7!=\"\"[t](e)})),v=p&&!s((function(){var e=!1,n=\/a\/;return\"split\"===t&&((n={}).constructor={},n.constructor[c]=function(){return n},n.flags=\"\",n[h]=\/.\/[h]),n.exec=function(){return e=!0,null},n[h](\"\"),!e}));if(!p||!v||n){var d=r(\/.\/[h]),y=e(h,\"\"[t],(function(t,e,n,i,s){var a=r(t),u=e.exec;return u===o||u===f.exec?p&&!s?{done:!0,value:d(e,n,i)}:{done:!0,value:a(n,e,i)}:{done:!1}}));i(String.prototype,t,y[0]),i(f,h,y[1])}l&&u(f[h],\"sham\",!0)}},function(t,e,n){\"use strict\";var r=n(117).charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},function(t,e,n){var r=n(0),i=n(10),o=n(9),s=n(6),a=n(31),u=n(54),c=r.TypeError;t.exports=function(t,e){var n=t.exec;if(s(n)){var r=i(n,t,e);return null!==r&&o(r),r}if(\"RegExp\"===a(t))return i(u,t,e);throw c(\"RegExp#exec called on incompatible receiver\")}},function(t,e,n){\"use strict\";var r=n(3);t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},function(t,e,n){\"use strict\";var r=n(7),i=n(2),o=n(53).indexOf,s=n(70),a=i([].indexOf),u=!!a&&1\/a([1],1,-0)<0,c=s(\"indexOf\");r({target:\"Array\",proto:!0,forced:u||!c},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return u?a(this,t,e)||0:o(this,t,e)}})},function(t,e,n){var r=n(9),i=n(88),o=n(5)(\"species\");t.exports=function(t,e){var n,s=r(t).constructor;return void 0===s||null==(n=r(s)[o])?e:i(n)}},function(t,e,n){var r=n(2),i=n(3),o=n(6),s=n(33),a=n(25),u=n(63),c=function(){},f=[],l=a(\"Reflect\",\"construct\"),h=\/^\\s*(?:class|function)\\b\/,p=r(h.exec),v=!h.exec(c),d=function(t){if(!o(t))return!1;try{return l(c,f,t),!0}catch(t){return!1}};t.exports=!l||i((function(){var t;return d(d.call)||!d(Object)||!d((function(){t=!0}))||t}))?function(t){if(!o(t))return!1;switch(s(t)){case\"AsyncFunction\":case\"GeneratorFunction\":case\"AsyncGeneratorFunction\":return!1}return v||!!p(h,u(t))}:d},function(t,e,n){var r=n(3),i=n(5),o=n(60),s=i(\"species\");t.exports=function(t){return o>=51||!r((function(){var e=[];return(e.constructor={})[s]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},function(t,e,n){\"use strict\";var r={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,o=i&&!r.call({1:2},1);e.f=o?function(t){var e=i(this,t);return!!e&&e.enumerable}:r},function(t,e,n){var r=n(59);t.exports=r&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator},function(t,e,n){var r=n(8),i=n(3),o=n(78);t.exports=!r&&!i((function(){return 7!=Object.defineProperty(o(\"div\"),\"a\",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(0),i=n(13),o=r.document,s=i(o)&&i(o.createElement);t.exports=function(t){return s?o.createElement(t):{}}},function(t,e,n){var r=n(11),i=n(111),o=n(35),s=n(12);t.exports=function(t,e){for(var n=i(e),a=s.f,u=o.f,c=0;c<n.length;c++){var f=n[c];r(t,f)||a(t,f,u(e,f))}}},function(t,e,n){var r=n(2),i=n(11),o=n(14),s=n(53).indexOf,a=n(52),u=r([].push);t.exports=function(t,e){var n,r=o(t),c=0,f=[];for(n in r)!i(a,n)&&i(r,n)&&u(f,n);for(;e.length>c;)i(r,n=e[c++])&&(~s(f,n)||u(f,n));return f}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){\"use strict\";var r=n(9);t.exports=function(){var t=r(this),e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.dotAll&&(e+=\"s\"),t.unicode&&(e+=\"u\"),t.sticky&&(e+=\"y\"),e}},function(t,e,n){var r=n(3),i=n(0).RegExp;e.UNSUPPORTED_Y=r((function(){var t=i(\"a\",\"y\");return t.lastIndex=2,null!=t.exec(\"abcd\")})),e.BROKEN_CARET=r((function(){var t=i(\"^r\",\"gy\");return t.lastIndex=2,null!=t.exec(\"str\")}))},function(t,e,n){var r=n(80),i=n(64);t.exports=Object.keys||function(t){return r(t,i)}},function(t,e,n){\"use strict\";var r=n(7),i=n(2),o=n(44),s=n(14),a=n(70),u=i([].join),c=o!=Object,f=a(\"join\",\",\");r({target:\"Array\",proto:!0,forced:c||!f},{join:function(t){return u(s(this),void 0===t?\",\":t)}})},function(t,e,n){\"use strict\";var r=n(34),i=n(14),o=n(20),s=n(17),a=n(70),u=Math.min,c=[].lastIndexOf,f=!!c&&1\/[1].lastIndexOf(1,-0)<0,l=a(\"lastIndexOf\"),h=f||!l;t.exports=h?function(t){if(f)return r(c,this,arguments)||0;var e=i(this),n=s(e),a=n-1;for(arguments.length>1&&(a=u(a,o(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in e&&e[a]===t)return a||0;return-1}:c},function(t,e,n){\"use strict\";var r=n(34),i=n(10),o=n(2),s=n(67),a=n(120),u=n(9),c=n(24),f=n(72),l=n(68),h=n(21),p=n(18),v=n(37),d=n(23),y=n(69),g=n(54),m=n(83),x=n(3),w=m.UNSUPPORTED_Y,b=Math.min,A=[].push,S=o(\/.\/.exec),O=o(A),E=o(\"\".slice);s(\"split\",(function(t,e,n){var o;return o=\"c\"==\"abbc\".split(\/(b)*\/)[1]||4!=\"test\".split(\/(?:)\/,-1).length||2!=\"ab\".split(\/(?:ab)*\/).length||4!=\".\".split(\/(.?)(.?)\/).length||\".\".split(\/()()\/).length>1||\"\".split(\/.?\/).length?function(t,n){var o=p(c(this)),s=void 0===n?4294967295:n>>>0;if(0===s)return[];if(void 0===t)return[o];if(!a(t))return i(e,o,t,s);for(var u,f,l,h=[],v=(t.ignoreCase?\"i\":\"\")+(t.multiline?\"m\":\"\")+(t.unicode?\"u\":\"\")+(t.sticky?\"y\":\"\"),y=0,m=new RegExp(t.source,v+\"g\");(u=i(g,m,o))&&!((f=m.lastIndex)>y&&(O(h,E(o,y,u.index)),u.length>1&&u.index<o.length&&r(A,h,d(u,1)),l=u[0].length,y=f,h.length>=s));)m.lastIndex===u.index&&m.lastIndex++;return y===o.length?!l&&S(m,\"\")||O(h,\"\"):O(h,E(o,y)),h.length>s?d(h,0,s):h}:\"0\".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:i(e,this,t,n)}:e,[function(e,n){var r=c(this),s=null==e?void 0:v(e,t);return s?i(s,e,r,n):i(o,p(r),e,n)},function(t,r){var i=u(this),s=p(t),a=n(o,i,s,r,o!==e);if(a.done)return a.value;var c=f(i,RegExp),v=i.unicode,d=(i.ignoreCase?\"i\":\"\")+(i.multiline?\"m\":\"\")+(i.unicode?\"u\":\"\")+(w?\"g\":\"y\"),g=new c(w?\"^(?:\"+i.source+\")\":i,d),m=void 0===r?4294967295:r>>>0;if(0===m)return[];if(0===s.length)return null===y(g,s)?[s]:[];for(var x=0,A=0,S=[];A<s.length;){g.lastIndex=w?0:A;var T,k=y(g,w?E(s,A):s);if(null===k||(T=b(h(g.lastIndex+(w?A:0)),s.length))===x)A=l(s,A,v);else{if(O(S,E(s,x,A)),S.length===m)return S;for(var _=1;_<=k.length-1;_++)if(O(S,k[_]),S.length===m)return S;A=x=T}}return O(S,E(s,x)),S}]}),!!x((function(){var t=\/(?:)\/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n=\"ab\".split(t);return 2!==n.length||\"a\"!==n[0]||\"b\"!==n[1]})),w)},function(t,e,n){var r=n(0),i=n(73),o=n(47),s=r.TypeError;t.exports=function(t){if(i(t))return t;throw s(o(t)+\" is not a constructor\")}},function(t,e,n){\"use strict\";var r=n(36),i=n(12),o=n(30);t.exports=function(t,e,n){var s=r(e);s in t?i.f(t,s,o(0,n)):t[s]=n}},function(t,e,n){\"use strict\";var r=n(7),i=n(0),o=n(27),s=n(20),a=n(17),u=n(15),c=n(91),f=n(89),l=n(74)(\"splice\"),h=i.TypeError,p=Math.max,v=Math.min;r({target:\"Array\",proto:!0,forced:!l},{splice:function(t,e){var n,r,i,l,d,y,g=u(this),m=a(g),x=o(t,m),w=arguments.length;if(0===w?n=r=0:1===w?(n=0,r=m-x):(n=w-2,r=v(p(s(e),0),m-x)),m+n-r>9007199254740991)throw h(\"Maximum allowed length exceeded\");for(i=c(g,r),l=0;l<r;l++)(d=x+l)in g&&f(i,l,g[d]);if(i.length=r,n<r){for(l=x;l<m-r;l++)y=l+n,(d=l+r)in g?g[y]=g[d]:delete g[y];for(l=m;l>m-r+n;l--)delete g[l-1]}else if(n>r)for(l=m-r;l>x;l--)y=l+n-1,(d=l+r-1)in g?g[y]=g[d]:delete g[y];for(l=0;l<n;l++)g[l+x]=arguments[l+2];return g.length=m-r+n,i}})},function(t,e,n){var r=n(123);t.exports=function(t,e){return new(r(t))(0===e?0:e)}},function(t,e,n){var r=n(65),i=n(16),o=n(124);r||i(Object.prototype,\"toString\",o,{unsafe:!0})},function(t,e,n){var r=n(5);e.f=r},function(t,e,n){var r=n(2),i=n(38),o=r(r.bind);t.exports=function(t,e){return i(t),void 0===e?t:o?o(t,e):function(){return t.apply(e,arguments)}}},function(t,e){t.exports=\"\\t\\n\\v\\f\\r \u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\\u2028\\u2029\\ufeff\"},function(t,e,n){\"use strict\";var r=n(14),i=n(138),o=n(41),s=n(32),a=n(139),u=s.set,c=s.getterFor(\"Array Iterator\");t.exports=a(Array,\"Array\",(function(t,e){u(this,{type:\"Array Iterator\",target:r(t),index:0,kind:e})}),(function(){var t=c(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):\"keys\"==n?{value:r,done:!1}:\"values\"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),\"values\"),o.Arguments=o.Array,i(\"keys\"),i(\"values\"),i(\"entries\")},function(t,e,n){\"use strict\";var r,i,o,s=n(3),a=n(6),u=n(28),c=n(57),f=n(16),l=n(5),h=n(49),p=l(\"iterator\"),v=!1;[].keys&&(\"next\"in(o=[].keys())?(i=c(c(o)))!==Object.prototype&&(r=i):v=!0),null==r||s((function(){var t={};return r[p].call(t)!==t}))?r={}:h&&(r=u(r)),a(r[p])||f(r,p,(function(){return this})),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:v}},function(t,e,n){\"use strict\";var r=n(0),i=n(2),o=n(8),s=n(99),a=n(39),u=n(22),c=n(144),f=n(3),l=n(100),h=n(20),p=n(21),v=n(101),d=n(145),y=n(57),g=n(42),m=n(40).f,x=n(12).f,w=n(102),b=n(23),A=n(56),S=n(32),O=a.PROPER,E=a.CONFIGURABLE,T=S.get,k=S.set,_=r.ArrayBuffer,I=_,N=I&&I.prototype,M=r.DataView,P=M&&M.prototype,R=Object.prototype,j=r.Array,C=r.RangeError,D=i(w),z=i([].reverse),L=d.pack,F=d.unpack,B=function(t){return[255&t]},U=function(t){return[255&t,t>>8&255]},H=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},Y=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},W=function(t){return L(t,23,4)},V=function(t){return L(t,52,8)},$=function(t,e){x(t.prototype,e,{get:function(){return T(this)[e]}})},G=function(t,e,n,r){var i=v(n),o=T(t);if(i+e>o.byteLength)throw C(\"Wrong index\");var s=T(o.buffer).bytes,a=i+o.byteOffset,u=b(s,a,a+e);return r?u:z(u)},K=function(t,e,n,r,i,o){var s=v(n),a=T(t);if(s+e>a.byteLength)throw C(\"Wrong index\");for(var u=T(a.buffer).bytes,c=s+a.byteOffset,f=r(+i),l=0;l<e;l++)u[c+l]=f[o?l:e-l-1]};if(s){var X=O&&\"ArrayBuffer\"!==_.name;if(f((function(){_(1)}))&&f((function(){new _(-1)}))&&!f((function(){return new _,new _(1.5),new _(NaN),X&&!E})))X&&E&&u(_,\"name\",\"ArrayBuffer\");else{(I=function(t){return l(this,N),new _(v(t))}).prototype=N;for(var q,J=m(_),Z=0;J.length>Z;)(q=J[Z++])in I||u(I,q,_[q]);N.constructor=I}g&&y(P)!==R&&g(P,R);var Q=new M(new I(2)),tt=i(P.setInt8);Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||c(P,{setInt8:function(t,e){tt(this,t,e<<24>>24)},setUint8:function(t,e){tt(this,t,e<<24>>24)}},{unsafe:!0})}else N=(I=function(t){l(this,N);var e=v(t);k(this,{bytes:D(j(e),0),byteLength:e}),o||(this.byteLength=e)}).prototype,P=(M=function(t,e,n){l(this,P),l(t,N);var r=T(t).byteLength,i=h(e);if(i<0||i>r)throw C(\"Wrong offset\");if(i+(n=void 0===n?r-i:p(n))>r)throw C(\"Wrong length\");k(this,{buffer:t,byteLength:n,byteOffset:i}),o||(this.buffer=t,this.byteLength=n,this.byteOffset=i)}).prototype,o&&($(I,\"byteLength\"),$(M,\"buffer\"),$(M,\"byteLength\"),$(M,\"byteOffset\")),c(P,{getInt8:function(t){return G(this,1,t)[0]<<24>>24},getUint8:function(t){return G(this,1,t)[0]},getInt16:function(t){var e=G(this,2,t,arguments.length>1?arguments[1]:void 0);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=G(this,2,t,arguments.length>1?arguments[1]:void 0);return e[1]<<8|e[0]},getInt32:function(t){return Y(G(this,4,t,arguments.length>1?arguments[1]:void 0))},getUint32:function(t){return Y(G(this,4,t,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(t){return F(G(this,4,t,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(t){return F(G(this,8,t,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(t,e){K(this,1,t,B,e)},setUint8:function(t,e){K(this,1,t,B,e)},setInt16:function(t,e){K(this,2,t,U,e,arguments.length>2?arguments[2]:void 0)},setUint16:function(t,e){K(this,2,t,U,e,arguments.length>2?arguments[2]:void 0)},setInt32:function(t,e){K(this,4,t,H,e,arguments.length>2?arguments[2]:void 0)},setUint32:function(t,e){K(this,4,t,H,e,arguments.length>2?arguments[2]:void 0)},setFloat32:function(t,e){K(this,4,t,W,e,arguments.length>2?arguments[2]:void 0)},setFloat64:function(t,e){K(this,8,t,V,e,arguments.length>2?arguments[2]:void 0)}});A(I,\"ArrayBuffer\"),A(M,\"DataView\"),t.exports={ArrayBuffer:I,DataView:M}},function(t,e){t.exports=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof DataView},function(t,e,n){var r=n(0),i=n(26),o=r.TypeError;t.exports=function(t,e){if(i(e,t))return t;throw o(\"Incorrect invocation\")}},function(t,e,n){var r=n(0),i=n(20),o=n(21),s=r.RangeError;t.exports=function(t){if(void 0===t)return 0;var e=i(t),n=o(e);if(e!==n)throw s(\"Wrong length or index\");return n}},function(t,e,n){\"use strict\";var r=n(15),i=n(27),o=n(17);t.exports=function(t){for(var e=r(this),n=o(e),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),u=s>2?arguments[2]:void 0,c=void 0===u?n:i(u,n);c>a;)e[a++]=t;return e}},function(t,e,n){var r=n(0),i=n(151),o=r.RangeError;t.exports=function(t,e){var n=i(t);if(n%e)throw o(\"Wrong offset\");return n}},function(t,e,n){var r=n(33),i=n(37),o=n(41),s=n(5)(\"iterator\");t.exports=function(t){if(null!=t)return i(t,s)||i(t,\"@@iterator\")||o[r(t)]}},function(t,e,n){var r=n(0),i=n(38),o=n(15),s=n(44),a=n(17),u=r.TypeError,c=function(t){return function(e,n,r,c){i(n);var f=o(e),l=s(f),h=a(f),p=t?h-1:0,v=t?-1:1;if(r<2)for(;;){if(p in l){c=l[p],p+=v;break}if(p+=v,t?p<0:h<=p)throw u(\"Reduce of empty array with no initial value\")}for(;t?p>=0:h>p;p+=v)p in l&&(c=n(c,l[p],p,f));return c}};t.exports={left:c(!1),right:c(!0)}},function(t,e,n){n(7)({target:\"Array\",stat:!0},{isArray:n(55)})},function(t,e){var n;n=function(){return this}();try{n=n||new Function(\"return this\")()}catch(t){\"object\"==typeof window&&(n=window)}t.exports=n},function(t,e,n){var r=n(0),i=n(10),o=n(13),s=n(45),a=n(37),u=n(109),c=n(5),f=r.TypeError,l=c(\"toPrimitive\");t.exports=function(t,e){if(!o(t)||s(t))return t;var n,r=a(t,l);if(r){if(void 0===e&&(e=\"default\"),n=i(r,t,e),!o(n)||s(n))return n;throw f(\"Can't convert object to primitive value\")}return void 0===e&&(e=\"number\"),u(t,e)}},function(t,e,n){var r=n(0),i=n(10),o=n(6),s=n(13),a=r.TypeError;t.exports=function(t,e){var n,r;if(\"string\"===e&&o(n=t.toString)&&!s(r=i(n,t)))return r;if(o(n=t.valueOf)&&!s(r=i(n,t)))return r;if(\"string\"!==e&&o(n=t.toString)&&!s(r=i(n,t)))return r;throw a(\"Can't convert object to primitive value\")}},function(t,e,n){var r=n(0),i=n(6),o=n(63),s=r.WeakMap;t.exports=i(s)&&\/native code\/.test(o(s))},function(t,e,n){var r=n(25),i=n(2),o=n(40),s=n(81),a=n(9),u=i([].concat);t.exports=r(\"Reflect\",\"ownKeys\")||function(t){var e=o.f(a(t)),n=s.f;return n?u(e,n(t)):e}},function(t,e,n){var r=n(3),i=n(6),o=\/#|\\.prototype\\.\/,s=function(t,e){var n=u[a(t)];return n==f||n!=c&&(i(e)?r(e):!!e)},a=s.normalize=function(t){return String(t).replace(o,\".\").toLowerCase()},u=s.data={},c=s.NATIVE=\"N\",f=s.POLYFILL=\"P\";t.exports=s},function(t,e,n){var r=n(8),i=n(12),o=n(9),s=n(14),a=n(84);t.exports=r?Object.defineProperties:function(t,e){o(t);for(var n,r=s(e),u=a(e),c=u.length,f=0;c>f;)i.f(t,n=u[f++],r[n]);return t}},function(t,e,n){var r=n(25);t.exports=r(\"document\",\"documentElement\")},function(t,e,n){var r=n(3),i=n(0).RegExp;t.exports=r((function(){var t=i(\".\",\"s\");return!(t.dotAll&&t.exec(\"\\n\")&&\"s\"===t.flags)}))},function(t,e,n){var r=n(3),i=n(0).RegExp;t.exports=r((function(){var t=i(\"(?<a>b)\",\"g\");return\"b\"!==t.exec(\"b\").groups.a||\"bc\"!==\"b\".replace(t,\"$<a>c\")}))},function(t,e,n){var r=n(2),i=n(20),o=n(18),s=n(24),a=r(\"\".charAt),u=r(\"\".charCodeAt),c=r(\"\".slice),f=function(t){return function(e,n){var r,f,l=o(s(e)),h=i(n),p=l.length;return h<0||h>=p?t?\"\":void 0:(r=u(l,h))<55296||r>56319||h+1===p||(f=u(l,h+1))<56320||f>57343?t?a(l,h):r:t?c(l,h,h+2):f-56320+(r-55296<<10)+65536}};t.exports={codeAt:f(!1),charAt:f(!0)}},function(t,e,n){var r=n(2),i=n(15),o=Math.floor,s=r(\"\".charAt),a=r(\"\".replace),u=r(\"\".slice),c=\/\\$([$&'`]|\\d{1,2}|<[^>]*>)\/g,f=\/\\$([$&'`]|\\d{1,2})\/g;t.exports=function(t,e,n,r,l,h){var p=n+t.length,v=r.length,d=f;return void 0!==l&&(l=i(l),d=c),a(h,d,(function(i,a){var c;switch(s(a,0)){case\"$\":return\"$\";case\"&\":return t;case\"`\":return u(e,0,n);case\"'\":return u(e,p);case\"<\":c=l[u(a,1,-1)];break;default:var f=+a;if(0===f)return i;if(f>v){var h=o(f\/10);return 0===h?i:h<=v?void 0===r[h-1]?s(a,1):r[h-1]+s(a,1):i}c=r[f-1]}return void 0===c?\"\":c}))}},function(t,e,n){var r=n(7),i=n(86);r({target:\"Array\",proto:!0,forced:i!==[].lastIndexOf},{lastIndexOf:i})},function(t,e,n){var r=n(13),i=n(31),o=n(5)(\"match\");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[o])?!!e:\"RegExp\"==i(t))}},function(t,e,n){\"use strict\";var r=n(10),i=n(67),o=n(9),s=n(21),a=n(18),u=n(24),c=n(37),f=n(68),l=n(69);i(\"match\",(function(t,e,n){return[function(e){var n=u(this),i=null==e?void 0:c(e,t);return i?r(i,e,n):new RegExp(e)[t](a(n))},function(t){var r=o(this),i=a(t),u=n(e,r,i);if(u.done)return u.value;if(!r.global)return l(r,i);var c=r.unicode;r.lastIndex=0;for(var h,p=[],v=0;null!==(h=l(r,i));){var d=a(h[0]);p[v]=d,\"\"===d&&(r.lastIndex=f(i,s(r.lastIndex),c)),v++}return 0===v?null:p}]}))},function(t,e,n){\"use strict\";var r=n(7),i=n(0),o=n(55),s=n(73),a=n(13),u=n(27),c=n(17),f=n(14),l=n(89),h=n(5),p=n(74),v=n(23),d=p(\"slice\"),y=h(\"species\"),g=i.Array,m=Math.max;r({target:\"Array\",proto:!0,forced:!d},{slice:function(t,e){var n,r,i,h=f(this),p=c(h),d=u(t,p),x=u(void 0===e?p:e,p);if(o(h)&&(n=h.constructor,(s(n)&&(n===g||o(n.prototype))||a(n)&&null===(n=n[y]))&&(n=void 0),n===g||void 0===n))return v(h,d,x);for(r=new(void 0===n?g:n)(m(x-d,0)),i=0;d<x;d++,i++)d in h&&l(r,i,h[d]);return r.length=i,r}})},function(t,e,n){var r=n(0),i=n(55),o=n(73),s=n(13),a=n(5)(\"species\"),u=r.Array;t.exports=function(t){var e;return i(t)&&(e=t.constructor,(o(e)&&(e===u||i(e.prototype))||s(e)&&null===(e=e[a]))&&(e=void 0)),void 0===e?u:e}},function(t,e,n){\"use strict\";var r=n(65),i=n(33);t.exports=r?{}.toString:function(){return\"[object \"+i(this)+\"]\"}},function(t,e,n){var r=n(2),i=n(16),o=Date.prototype,s=r(o.toString),a=r(o.getTime);\"Invalid Date\"!=String(new Date(NaN))&&i(o,\"toString\",(function(){var t=a(this);return t==t?s(this):\"Invalid Date\"}))},function(t,e,n){\"use strict\";var r=n(2),i=n(39).PROPER,o=n(16),s=n(9),a=n(26),u=n(18),c=n(3),f=n(82),l=RegExp.prototype,h=l.toString,p=r(f),v=c((function(){return\"\/a\/b\"!=h.call({source:\"a\",flags:\"b\"})})),d=i&&\"toString\"!=h.name;(v||d)&&o(RegExp.prototype,\"toString\",(function(){var t=s(this),e=u(t.source),n=t.flags;return\"\/\"+e+\"\/\"+u(void 0===n&&a(l,t)&&!(\"flags\"in l)?p(t):n)}),{unsafe:!0})},function(t,e,n){var r=n(7),i=n(3),o=n(14),s=n(35).f,a=n(8),u=i((function(){s(1)}));r({target:\"Object\",stat:!0,forced:!a||u,sham:!a},{getOwnPropertyDescriptor:function(t,e){return s(o(t),e)}})},function(t,e,n){\"use strict\";var r=n(7),i=n(0),o=n(25),s=n(34),a=n(10),u=n(2),c=n(49),f=n(8),l=n(59),h=n(3),p=n(11),v=n(55),d=n(6),y=n(13),g=n(26),m=n(45),x=n(9),w=n(15),b=n(14),A=n(36),S=n(18),O=n(30),E=n(28),T=n(84),k=n(40),_=n(129),I=n(81),N=n(35),M=n(12),P=n(75),R=n(23),j=n(16),C=n(48),D=n(51),z=n(52),L=n(50),F=n(5),B=n(93),U=n(130),H=n(56),Y=n(32),W=n(19).forEach,V=D(\"hidden\"),$=F(\"toPrimitive\"),G=Y.set,K=Y.getterFor(\"Symbol\"),X=Object.prototype,q=i.Symbol,J=q&&q.prototype,Z=i.TypeError,Q=i.QObject,tt=o(\"JSON\",\"stringify\"),et=N.f,nt=M.f,rt=_.f,it=P.f,ot=u([].push),st=C(\"symbols\"),at=C(\"op-symbols\"),ut=C(\"string-to-symbol-registry\"),ct=C(\"symbol-to-string-registry\"),ft=C(\"wks\"),lt=!Q||!Q.prototype||!Q.prototype.findChild,ht=f&&h((function(){return 7!=E(nt({},\"a\",{get:function(){return nt(this,\"a\",{value:7}).a}})).a}))?function(t,e,n){var r=et(X,e);r&&delete X[e],nt(t,e,n),r&&t!==X&&nt(X,e,r)}:nt,pt=function(t,e){var n=st[t]=E(J);return G(n,{type:\"Symbol\",tag:t,description:e}),f||(n.description=e),n},vt=function(t,e,n){t===X&&vt(at,e,n),x(t);var r=A(e);return x(n),p(st,r)?(n.enumerable?(p(t,V)&&t[V][r]&&(t[V][r]=!1),n=E(n,{enumerable:O(0,!1)})):(p(t,V)||nt(t,V,O(1,{})),t[V][r]=!0),ht(t,r,n)):nt(t,r,n)},dt=function(t,e){x(t);var n=b(e),r=T(n).concat(xt(n));return W(r,(function(e){f&&!a(yt,n,e)||vt(t,e,n[e])})),t},yt=function(t){var e=A(t),n=a(it,this,e);return!(this===X&&p(st,e)&&!p(at,e))&&(!(n||!p(this,e)||!p(st,e)||p(this,V)&&this[V][e])||n)},gt=function(t,e){var n=b(t),r=A(e);if(n!==X||!p(st,r)||p(at,r)){var i=et(n,r);return!i||!p(st,r)||p(n,V)&&n[V][r]||(i.enumerable=!0),i}},mt=function(t){var e=rt(b(t)),n=[];return W(e,(function(t){p(st,t)||p(z,t)||ot(n,t)})),n},xt=function(t){var e=t===X,n=rt(e?at:b(t)),r=[];return W(n,(function(t){!p(st,t)||e&&!p(X,t)||ot(r,st[t])})),r};(l||(j(J=(q=function(){if(g(J,this))throw Z(\"Symbol is not a constructor\");var t=arguments.length&&void 0!==arguments[0]?S(arguments[0]):void 0,e=L(t),n=function(t){this===X&&a(n,at,t),p(this,V)&&p(this[V],e)&&(this[V][e]=!1),ht(this,e,O(1,t))};return f&&lt&&ht(X,e,{configurable:!0,set:n}),pt(e,t)}).prototype,\"toString\",(function(){return K(this).tag})),j(q,\"withoutSetter\",(function(t){return pt(L(t),t)})),P.f=yt,M.f=vt,N.f=gt,k.f=_.f=mt,I.f=xt,B.f=function(t){return pt(F(t),t)},f&&(nt(J,\"description\",{configurable:!0,get:function(){return K(this).description}}),c||j(X,\"propertyIsEnumerable\",yt,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!l,sham:!l},{Symbol:q}),W(T(ft),(function(t){U(t)})),r({target:\"Symbol\",stat:!0,forced:!l},{for:function(t){var e=S(t);if(p(ut,e))return ut[e];var n=q(e);return ut[e]=n,ct[n]=e,n},keyFor:function(t){if(!m(t))throw Z(t+\" is not a symbol\");if(p(ct,t))return ct[t]},useSetter:function(){lt=!0},useSimple:function(){lt=!1}}),r({target:\"Object\",stat:!0,forced:!l,sham:!f},{create:function(t,e){return void 0===e?E(t):dt(E(t),e)},defineProperty:vt,defineProperties:dt,getOwnPropertyDescriptor:gt}),r({target:\"Object\",stat:!0,forced:!l},{getOwnPropertyNames:mt,getOwnPropertySymbols:xt}),r({target:\"Object\",stat:!0,forced:h((function(){I.f(1)}))},{getOwnPropertySymbols:function(t){return I.f(w(t))}}),tt)&&r({target:\"JSON\",stat:!0,forced:!l||h((function(){var t=q();return\"[null]\"!=tt([t])||\"{}\"!=tt({a:t})||\"{}\"!=tt(Object(t))}))},{stringify:function(t,e,n){var r=R(arguments),i=e;if((y(e)||void 0!==t)&&!m(t))return v(e)||(e=function(t,e){if(d(i)&&(e=a(i,this,t,e)),!m(e))return e}),r[1]=e,s(tt,null,r)}});if(!J[$]){var wt=J.valueOf;j(J,$,(function(t){return a(wt,this)}))}H(q,\"Symbol\"),z[V]=!0},function(t,e,n){var r=n(31),i=n(14),o=n(40).f,s=n(23),a=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&\"Window\"==r(t)?function(t){try{return o(t)}catch(t){return s(a)}}(t):o(i(t))}},function(t,e,n){var r=n(131),i=n(11),o=n(93),s=n(12).f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});i(e,t)||s(e,t,{value:o.f(t)})}},function(t,e,n){var r=n(0);t.exports=r},function(t,e,n){\"use strict\";var r=n(7),i=n(8),o=n(0),s=n(2),a=n(11),u=n(6),c=n(26),f=n(18),l=n(12).f,h=n(79),p=o.Symbol,v=p&&p.prototype;if(i&&u(p)&&(!(\"description\"in v)||void 0!==p().description)){var d={},y=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:f(arguments[0]),e=c(v,this)?new p(t):void 0===t?p():p(t);return\"\"===t&&(d[e]=!0),e};h(y,p),y.prototype=v,v.constructor=y;var g=\"Symbol(test)\"==String(p(\"test\")),m=s(v.toString),x=s(v.valueOf),w=\/^Symbol\\((.*)\\)[^)]+$\/,b=s(\"\".replace),A=s(\"\".slice);l(v,\"description\",{configurable:!0,get:function(){var t=x(this),e=m(t);if(a(d,t))return\"\";var n=g?A(e,7,-1):b(e,w,\"$1\");return\"\"===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:y})}},function(t,e,n){\"use strict\";var r=n(7),i=n(19).map;r({target:\"Array\",proto:!0,forced:!n(74)(\"map\")},{map:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(7),i=n(135);r({global:!0,forced:parseFloat!=i},{parseFloat:i})},function(t,e,n){var r=n(0),i=n(3),o=n(2),s=n(18),a=n(136).trim,u=n(95),c=o(\"\".charAt),f=r.parseFloat,l=r.Symbol,h=l&&l.iterator,p=1\/f(u+\"-0\")!=-1\/0||h&&!i((function(){f(Object(h))}));t.exports=p?function(t){var e=a(s(t)),n=f(e);return 0===n&&\"-\"==c(e,0)?-0:n}:f},function(t,e,n){var r=n(2),i=n(24),o=n(18),s=n(95),a=r(\"\".replace),u=\"[\"+s+\"]\",c=RegExp(\"^\"+u+u+\"*\"),f=RegExp(u+u+\"*$\"),l=function(t){return function(e){var n=o(i(e));return 1&t&&(n=a(n,c,\"\")),2&t&&(n=a(n,f,\"\")),n}};t.exports={start:l(1),end:l(2),trim:l(3)}},function(t,e,n){n(7)({target:\"Object\",stat:!0,sham:!n(8)},{create:n(28)})},function(t,e,n){var r=n(5),i=n(28),o=n(12),s=r(\"unscopables\"),a=Array.prototype;null==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),t.exports=function(t){a[s][t]=!0}},function(t,e,n){\"use strict\";var r=n(7),i=n(10),o=n(49),s=n(39),a=n(6),u=n(140),c=n(57),f=n(42),l=n(56),h=n(22),p=n(16),v=n(5),d=n(41),y=n(97),g=s.PROPER,m=s.CONFIGURABLE,x=y.IteratorPrototype,w=y.BUGGY_SAFARI_ITERATORS,b=v(\"iterator\"),A=function(){return this};t.exports=function(t,e,n,s,v,y,S){u(n,e,s);var O,E,T,k=function(t){if(t===v&&P)return P;if(!w&&t in N)return N[t];switch(t){case\"keys\":case\"values\":case\"entries\":return function(){return new n(this,t)}}return function(){return new n(this)}},_=e+\" Iterator\",I=!1,N=t.prototype,M=N[b]||N[\"@@iterator\"]||v&&N[v],P=!w&&M||k(v),R=\"Array\"==e&&N.entries||M;if(R&&(O=c(R.call(new t)))!==Object.prototype&&O.next&&(o||c(O)===x||(f?f(O,x):a(O[b])||p(O,b,A)),l(O,_,!0,!0),o&&(d[_]=A)),g&&\"values\"==v&&M&&\"values\"!==M.name&&(!o&&m?h(N,\"name\",\"values\"):(I=!0,P=function(){return i(M,this)})),v)if(E={values:k(\"values\"),keys:y?P:k(\"keys\"),entries:k(\"entries\")},S)for(T in E)(w||I||!(T in N))&&p(N,T,E[T]);else r({target:e,proto:!0,forced:w||I},E);return o&&!S||N[b]===P||p(N,b,P,{name:v}),d[e]=P,E}},function(t,e,n){\"use strict\";var r=n(97).IteratorPrototype,i=n(28),o=n(30),s=n(56),a=n(41),u=function(){return this};t.exports=function(t,e,n){var c=e+\" Iterator\";return t.prototype=i(r,{next:o(1,n)}),s(t,c,!1,!0),a[c]=u,t}},function(t,e,n){var r=n(3);t.exports=!r((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},function(t,e,n){var r=n(0),i=n(6),o=r.String,s=r.TypeError;t.exports=function(t){if(\"object\"==typeof t||i(t))return t;throw s(\"Can't set \"+o(t)+\" as a prototype\")}},function(t,e,n){\"use strict\";var r=n(7),i=n(2),o=n(3),s=n(98),a=n(9),u=n(27),c=n(21),f=n(72),l=s.ArrayBuffer,h=s.DataView,p=h.prototype,v=i(l.prototype.slice),d=i(p.getUint8),y=i(p.setUint8);r({target:\"ArrayBuffer\",proto:!0,unsafe:!0,forced:o((function(){return!new l(2).slice(1,void 0).byteLength}))},{slice:function(t,e){if(v&&void 0===e)return v(a(this),t);for(var n=a(this).byteLength,r=u(t,n),i=u(void 0===e?n:e,n),o=new(f(this,l))(c(i-r)),s=new h(this),p=new h(o),g=0;r<i;)y(p,g++,d(s,r++));return o}})},function(t,e,n){var r=n(16);t.exports=function(t,e,n){for(var i in e)r(t,i,e[i],n);return t}},function(t,e,n){var r=n(0).Array,i=Math.abs,o=Math.pow,s=Math.floor,a=Math.log,u=Math.LN2;t.exports={pack:function(t,e,n){var c,f,l,h=r(n),p=8*n-e-1,v=(1<<p)-1,d=v>>1,y=23===e?o(2,-24)-o(2,-77):0,g=t<0||0===t&&1\/t<0?1:0,m=0;for((t=i(t))!=t||t===1\/0?(f=t!=t?1:0,c=v):(c=s(a(t)\/u),t*(l=o(2,-c))<1&&(c--,l*=2),(t+=c+d>=1?y\/l:y*o(2,1-d))*l>=2&&(c++,l\/=2),c+d>=v?(f=0,c=v):c+d>=1?(f=(t*l-1)*o(2,e),c+=d):(f=t*o(2,d-1)*o(2,e),c=0));e>=8;h[m++]=255&f,f\/=256,e-=8);for(c=c<<e|f,p+=e;p>0;h[m++]=255&c,c\/=256,p-=8);return h[--m]|=128*g,h},unpack:function(t,e){var n,r=t.length,i=8*r-e-1,s=(1<<i)-1,a=s>>1,u=i-7,c=r-1,f=t[c--],l=127&f;for(f>>=7;u>0;l=256*l+t[c],c--,u-=8);for(n=l&(1<<-u)-1,l>>=-u,u+=e;u>0;n=256*n+t[c],c--,u-=8);if(0===l)l=1-a;else{if(l===s)return n?NaN:f?-1\/0:1\/0;n+=o(2,e),l-=a}return(f?-1:1)*n*o(2,l-e)}}},function(t,e,n){n(147)(\"Float64\",(function(t){return function(e,n,r){return t(this,e,n,r)}}))},function(t,e,n){\"use strict\";var r=n(7),i=n(0),o=n(10),s=n(8),a=n(148),u=n(4),c=n(98),f=n(100),l=n(30),h=n(22),p=n(150),v=n(21),d=n(101),y=n(103),g=n(36),m=n(11),x=n(33),w=n(13),b=n(45),A=n(28),S=n(26),O=n(42),E=n(40).f,T=n(152),k=n(19).forEach,_=n(155),I=n(12),N=n(35),M=n(32),P=n(156),R=M.get,j=M.set,C=I.f,D=N.f,z=Math.round,L=i.RangeError,F=c.ArrayBuffer,B=F.prototype,U=c.DataView,H=u.NATIVE_ARRAY_BUFFER_VIEWS,Y=u.TYPED_ARRAY_CONSTRUCTOR,W=u.TYPED_ARRAY_TAG,V=u.TypedArray,$=u.TypedArrayPrototype,G=u.aTypedArrayConstructor,K=u.isTypedArray,X=function(t,e){G(t);for(var n=0,r=e.length,i=new t(r);r>n;)i[n]=e[n++];return i},q=function(t,e){C(t,e,{get:function(){return R(this)[e]}})},J=function(t){var e;return S(B,t)||\"ArrayBuffer\"==(e=x(t))||\"SharedArrayBuffer\"==e},Z=function(t,e){return K(t)&&!b(e)&&e in t&&p(+e)&&e>=0},Q=function(t,e){return e=g(e),Z(t,e)?l(2,t[e]):D(t,e)},tt=function(t,e,n){return e=g(e),!(Z(t,e)&&w(n)&&m(n,\"value\"))||m(n,\"get\")||m(n,\"set\")||n.configurable||m(n,\"writable\")&&!n.writable||m(n,\"enumerable\")&&!n.enumerable?C(t,e,n):(t[e]=n.value,t)};s?(H||(N.f=Q,I.f=tt,q($,\"buffer\"),q($,\"byteOffset\"),q($,\"byteLength\"),q($,\"length\")),r({target:\"Object\",stat:!0,forced:!H},{getOwnPropertyDescriptor:Q,defineProperty:tt}),t.exports=function(t,e,n){var s=t.match(\/\\d+$\/)[0]\/8,u=t+(n?\"Clamped\":\"\")+\"Array\",c=\"get\"+t,l=\"set\"+t,p=i[u],g=p,m=g&&g.prototype,x={},b=function(t,e){C(t,e,{get:function(){return function(t,e){var n=R(t);return n.view[c](e*s+n.byteOffset,!0)}(this,e)},set:function(t){return function(t,e,r){var i=R(t);n&&(r=(r=z(r))<0?0:r>255?255:255&r),i.view[l](e*s+i.byteOffset,r,!0)}(this,e,t)},enumerable:!0})};H?a&&(g=e((function(t,e,n,r){return f(t,m),P(w(e)?J(e)?void 0!==r?new p(e,y(n,s),r):void 0!==n?new p(e,y(n,s)):new p(e):K(e)?X(g,e):o(T,g,e):new p(d(e)),t,g)})),O&&O(g,V),k(E(p),(function(t){t in g||h(g,t,p[t])})),g.prototype=m):(g=e((function(t,e,n,r){f(t,m);var i,a,u,c=0,l=0;if(w(e)){if(!J(e))return K(e)?X(g,e):o(T,g,e);i=e,l=y(n,s);var h=e.byteLength;if(void 0===r){if(h%s)throw L(\"Wrong length\");if((a=h-l)<0)throw L(\"Wrong length\")}else if((a=v(r)*s)+l>h)throw L(\"Wrong length\");u=a\/s}else u=d(e),i=new F(a=u*s);for(j(t,{buffer:i,byteOffset:l,byteLength:a,length:u,view:new U(i)});c<u;)b(t,c++)})),O&&O(g,V),m=g.prototype=A($)),m.constructor!==g&&h(m,\"constructor\",g),h(m,Y,g),W&&h(m,W,u),x[u]=g,r({global:!0,forced:g!=p,sham:!H},x),\"BYTES_PER_ELEMENT\"in g||h(g,\"BYTES_PER_ELEMENT\",s),\"BYTES_PER_ELEMENT\"in m||h(m,\"BYTES_PER_ELEMENT\",s),_(u)}):t.exports=function(){}},function(t,e,n){var r=n(0),i=n(3),o=n(149),s=n(4).NATIVE_ARRAY_BUFFER_VIEWS,a=r.ArrayBuffer,u=r.Int8Array;t.exports=!s||!i((function(){u(1)}))||!i((function(){new u(-1)}))||!o((function(t){new u,new u(null),new u(1.5),new u(t)}),!0)||i((function(){return 1!==new u(new a(2),1,void 0).length}))},function(t,e,n){var r=n(5)(\"iterator\"),i=!1;try{var o=0,s={next:function(){return{done:!!o++}},return:function(){i=!0}};s[r]=function(){return this},Array.from(s,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o={};o[r]=function(){return{next:function(){return{done:n=!0}}}},t(o)}catch(t){}return n}},function(t,e,n){var r=n(13),i=Math.floor;t.exports=Number.isInteger||function(t){return!r(t)&&isFinite(t)&&i(t)===t}},function(t,e,n){var r=n(0),i=n(20),o=r.RangeError;t.exports=function(t){var e=i(t);if(e<0)throw o(\"The argument can't be less than 0\");return e}},function(t,e,n){var r=n(94),i=n(10),o=n(88),s=n(15),a=n(17),u=n(153),c=n(104),f=n(154),l=n(4).aTypedArrayConstructor;t.exports=function(t){var e,n,h,p,v,d,y=o(this),g=s(t),m=arguments.length,x=m>1?arguments[1]:void 0,w=void 0!==x,b=c(g);if(b&&!f(b))for(d=(v=u(g,b)).next,g=[];!(p=i(d,v)).done;)g.push(p.value);for(w&&m>2&&(x=r(x,arguments[2])),n=a(g),h=new(l(y))(n),e=0;n>e;e++)h[e]=w?x(g[e],e):g[e];return h}},function(t,e,n){var r=n(0),i=n(10),o=n(38),s=n(9),a=n(47),u=n(104),c=r.TypeError;t.exports=function(t,e){var n=arguments.length<2?u(t):e;if(o(n))return s(i(n,t));throw c(a(t)+\" is not iterable\")}},function(t,e,n){var r=n(5),i=n(41),o=r(\"iterator\"),s=Array.prototype;t.exports=function(t){return void 0!==t&&(i.Array===t||s[o]===t)}},function(t,e,n){\"use strict\";var r=n(25),i=n(12),o=n(5),s=n(8),a=o(\"species\");t.exports=function(t){var e=r(t),n=i.f;s&&e&&!e[a]&&n(e,a,{configurable:!0,get:function(){return this}})}},function(t,e,n){var r=n(6),i=n(13),o=n(42);t.exports=function(t,e,n){var s,a;return o&&r(s=e.constructor)&&s!==n&&i(a=s.prototype)&&a!==n.prototype&&o(t,a),t}},function(t,e,n){\"use strict\";var r=n(2),i=n(4),o=r(n(158)),s=i.aTypedArray;(0,i.exportTypedArrayMethod)(\"copyWithin\",(function(t,e){return o(s(this),t,e,arguments.length>2?arguments[2]:void 0)}))},function(t,e,n){\"use strict\";var r=n(15),i=n(27),o=n(17),s=Math.min;t.exports=[].copyWithin||function(t,e){var n=r(this),a=o(n),u=i(t,a),c=i(e,a),f=arguments.length>2?arguments[2]:void 0,l=s((void 0===f?a:i(f,a))-c,a-u),h=1;for(c<u&&u<c+l&&(h=-1,c+=l-1,u+=l-1);l-- >0;)c in n?n[u]=n[c]:delete n[u],u+=h,c+=h;return n}},function(t,e,n){\"use strict\";var r=n(4),i=n(19).every,o=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"every\",(function(t){return i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},function(t,e,n){\"use strict\";var r=n(4),i=n(10),o=n(102),s=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"fill\",(function(t){var e=arguments.length;return i(o,s(this),t,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)}))},function(t,e,n){\"use strict\";var r=n(4),i=n(19).filter,o=n(162),s=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"filter\",(function(t){var e=i(s(this),t,arguments.length>1?arguments[1]:void 0);return o(this,e)}))},function(t,e,n){var r=n(163),i=n(58);t.exports=function(t,e){return r(i(t),e)}},function(t,e){t.exports=function(t,e){for(var n=0,r=e.length,i=new t(r);r>n;)i[n]=e[n++];return i}},function(t,e,n){\"use strict\";var r=n(4),i=n(19).find,o=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"find\",(function(t){return i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},function(t,e,n){\"use strict\";var r=n(4),i=n(19).findIndex,o=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"findIndex\",(function(t){return i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},function(t,e,n){\"use strict\";var r=n(4),i=n(19).forEach,o=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"forEach\",(function(t){i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},function(t,e,n){\"use strict\";var r=n(4),i=n(53).includes,o=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"includes\",(function(t){return i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},function(t,e,n){\"use strict\";var r=n(4),i=n(53).indexOf,o=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"indexOf\",(function(t){return i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},function(t,e,n){\"use strict\";var r=n(0),i=n(2),o=n(39).PROPER,s=n(4),a=n(96),u=n(5)(\"iterator\"),c=r.Uint8Array,f=i(a.values),l=i(a.keys),h=i(a.entries),p=s.aTypedArray,v=s.exportTypedArrayMethod,d=c&&c.prototype[u],y=!!d&&\"values\"===d.name,g=function(){return f(p(this))};v(\"entries\",(function(){return h(p(this))})),v(\"keys\",(function(){return l(p(this))})),v(\"values\",g,o&&!y),v(u,g,o&&!y)},function(t,e,n){\"use strict\";var r=n(4),i=n(2),o=r.aTypedArray,s=r.exportTypedArrayMethod,a=i([].join);s(\"join\",(function(t){return a(o(this),t)}))},function(t,e,n){\"use strict\";var r=n(4),i=n(34),o=n(86),s=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"lastIndexOf\",(function(t){var e=arguments.length;return i(o,s(this),e>1?[t,arguments[1]]:[t])}))},function(t,e,n){\"use strict\";var r=n(4),i=n(19).map,o=n(58),s=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"map\",(function(t){return i(s(this),t,arguments.length>1?arguments[1]:void 0,(function(t,e){return new(o(t))(e)}))}))},function(t,e,n){\"use strict\";var r=n(4),i=n(105).left,o=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"reduce\",(function(t){var e=arguments.length;return i(o(this),t,e,e>1?arguments[1]:void 0)}))},function(t,e,n){\"use strict\";var r=n(4),i=n(105).right,o=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"reduceRight\",(function(t){var e=arguments.length;return i(o(this),t,e,e>1?arguments[1]:void 0)}))},function(t,e,n){\"use strict\";var r=n(4),i=r.aTypedArray,o=r.exportTypedArrayMethod,s=Math.floor;o(\"reverse\",(function(){for(var t,e=i(this).length,n=s(e\/2),r=0;r<n;)t=this[r],this[r++]=this[--e],this[e]=t;return this}))},function(t,e,n){\"use strict\";var r=n(0),i=n(4),o=n(17),s=n(103),a=n(15),u=n(3),c=r.RangeError,f=i.aTypedArray;(0,i.exportTypedArrayMethod)(\"set\",(function(t){f(this);var e=s(arguments.length>1?arguments[1]:void 0,1),n=this.length,r=a(t),i=o(r),u=0;if(i+e>n)throw c(\"Wrong length\");for(;u<i;)this[e+u]=r[u++]}),u((function(){new Int8Array(1).set({})})))},function(t,e,n){\"use strict\";var r=n(4),i=n(58),o=n(3),s=n(23),a=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"slice\",(function(t,e){for(var n=s(a(this),t,e),r=i(this),o=0,u=n.length,c=new r(u);u>o;)c[o]=n[o++];return c}),o((function(){new Int8Array(1).slice()})))},function(t,e,n){\"use strict\";var r=n(4),i=n(19).some,o=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"some\",(function(t){return i(o(this),t,arguments.length>1?arguments[1]:void 0)}))},function(t,e,n){\"use strict\";var r=n(0),i=n(2),o=n(3),s=n(38),a=n(180),u=n(4),c=n(181),f=n(182),l=n(60),h=n(183),p=r.Array,v=u.aTypedArray,d=u.exportTypedArrayMethod,y=r.Uint16Array,g=y&&i(y.prototype.sort),m=!(!g||o((function(){g(new y(2),null)}))&&o((function(){g(new y(2),{})}))),x=!!g&&!o((function(){if(l)return l<74;if(c)return c<67;if(f)return!0;if(h)return h<602;var t,e,n=new y(516),r=p(516);for(t=0;t<516;t++)e=t%4,n[t]=515-t,r[t]=t-2*e+3;for(g(n,(function(t,e){return(t\/4|0)-(e\/4|0)})),t=0;t<516;t++)if(n[t]!==r[t])return!0}));d(\"sort\",(function(t){return void 0!==t&&s(t),x?g(this,t):a(v(this),function(t){return function(e,n){return void 0!==t?+t(e,n)||0:n!=n?-1:e!=e?1:0===e&&0===n?1\/e>0&&1\/n<0?1:-1:e>n}}(t))}),!x||m)},function(t,e,n){var r=n(23),i=Math.floor,o=function(t,e){var n=t.length,u=i(n\/2);return n<8?s(t,e):a(t,o(r(t,0,u),e),o(r(t,u),e),e)},s=function(t,e){for(var n,r,i=t.length,o=1;o<i;){for(r=o,n=t[o];r&&e(t[r-1],n)>0;)t[r]=t[--r];r!==o++&&(t[r]=n)}return t},a=function(t,e,n,r){for(var i=e.length,o=n.length,s=0,a=0;s<i||a<o;)t[s+a]=s<i&&a<o?r(e[s],n[a])<=0?e[s++]:n[a++]:s<i?e[s++]:n[a++];return t};t.exports=o},function(t,e,n){var r=n(46).match(\/firefox\\\/(\\d+)\/i);t.exports=!!r&&+r[1]},function(t,e,n){var r=n(46);t.exports=\/MSIE|Trident\/.test(r)},function(t,e,n){var r=n(46).match(\/AppleWebKit\\\/(\\d+)\\.\/);t.exports=!!r&&+r[1]},function(t,e,n){\"use strict\";var r=n(4),i=n(21),o=n(27),s=n(58),a=r.aTypedArray;(0,r.exportTypedArrayMethod)(\"subarray\",(function(t,e){var n=a(this),r=n.length,u=o(t,r);return new(s(n))(n.buffer,n.byteOffset+u*n.BYTES_PER_ELEMENT,i((void 0===e?r:o(e,r))-u))}))},function(t,e,n){\"use strict\";var r=n(0),i=n(34),o=n(4),s=n(3),a=n(23),u=r.Int8Array,c=o.aTypedArray,f=o.exportTypedArrayMethod,l=[].toLocaleString,h=!!u&&s((function(){l.call(new u(1))}));f(\"toLocaleString\",(function(){return i(l,h?a(c(this)):c(this),a(arguments))}),s((function(){return[1,2].toLocaleString()!=new u([1,2]).toLocaleString()}))||!s((function(){u.prototype.toLocaleString.call([1,2])})))},function(t,e,n){\"use strict\";var r=n(4).exportTypedArrayMethod,i=n(3),o=n(0),s=n(2),a=o.Uint8Array,u=a&&a.prototype||{},c=[].toString,f=s([].join);i((function(){c.call({})}))&&(c=function(){return f(this)});var l=u.toString!=c;r(\"toString\",c,l)},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"factory\",(function(){return B}));n(43),n(66),n(85),n(29);var r=n(1);n(71),n(119),n(87),n(121),n(122),n(90);function i(){var t,e,n,r=(e=navigator.userAgent,n=e.match(\/(opera|chrome|safari|firefox|msie|trident(?=\\\/))\\\/?\\s*(\\d+)\/i)||[],\/trident\/i.test(n[1])?\"IE \"+((t=\/\\brv[ :]+(\\d+)\/g.exec(e)||[])[1]||\"\"):\"Chrome\"===n[1]&&null!==(t=e.match(\/\\b(OPR|Edge)\\\/(\\d+)\/))?t.slice(1).join(\" \").replace(\"OPR\",\"Opera\"):(n=n[2]?[n[1],n[2]]:[navigator.appName,navigator.appVersion,\"-?\"],null!==(t=e.match(\/version\\\/(\\d+)\/i))&&n.splice(1,1,t[1]),n.join(\" \")));return\"IE 11\"==r||\"MSIE\"===r.substring(0,4)}n(92),n(125),n(126);function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var s=function(){function t(e,n,r,i,o,s,a,u){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.containerid=e,this.svgid=n,this.clsName=r,this.position=i,this.zoomHandler=o,this.selectionHandler=s,this.saveaspng=a&&\"function\"==typeof saveSvgAsPng,this.pngname=u}var e,n,i;return e=t,(n=[{key:\"init\",value:function(){if(!(this.zoomHandler||this.selectionHandler||this.saveaspng))return!1;var t=r.select(\"#\"+this.containerid+\" .girafe_container_std\").append(\"div\").classed(this.clsName,!0).classed(this.clsName+\"-\"+this.position,!0),e=this;if(this.selectionHandler){var n=t.append(\"xhtml:div\").classed(this.clsName+\"-block\",!0).classed(\"shinyonly\",!0);n.append(\"xhtml:a\").classed(this.clsName+\"-icon\",!0).classed(\"neutral\",!0).attr(\"title\",\"lasso selection\").on(\"click\",(function(){e.selectionHandler.lasso(!0)})).html(a.lasso_on),n.append(\"xhtml:a\").classed(this.clsName+\"-icon\",!0).classed(\"drop\",!0).attr(\"title\",\"lasso deselection\").on(\"click\",(function(){e.selectionHandler.lasso(!1)})).html(a.lasso_off)}if(this.zoomHandler){var i=t.append(\"xhtml:div\").classed(this.clsName+\"-block\",!0);i.append(\"xhtml:a\").classed(this.clsName+\"-icon\",!0).classed(\"neutral\",!0).attr(\"title\",\"pan-zoom reset\").on(\"click\",(function(){e.zoomHandler.zoomIdentity()})).html(a.pan_zoom_reset),i.append(\"xhtml:a\").classed(this.clsName+\"-icon\",!0).classed(\"neutral\",!0).attr(\"title\",\"activate pan-zoom\").on(\"click\",(function(){e.zoomHandler.zoomOn()})).html(a.zoom_on),i.append(\"xhtml:a\").classed(this.clsName+\"-icon\",!0).classed(\"drop\",!0).attr(\"title\",\"deactivate pan-zoom\").on(\"click\",(function(){e.zoomHandler.zoomOff()})).html(a.zoom_off)}this.saveaspng&&t.append(\"xhtml:div\").classed(this.clsName+\"-block\",!0).append(\"xhtml:a\").classed(this.clsName+\"-icon\",!0).classed(\"neutral\",!0).attr(\"title\",\"download png\").on(\"click\",(function(){\"undefined\"!=typeof Promise&&-1!==Promise.toString().indexOf(\"[native code]\")?saveSvgAsPng(document.getElementById(e.svgid),e.pngname+\".png\",{encoderOptions:1}):console.error(\"This navigator does not support Promises\")})).html(a.save_as_png);var o=r.select(\"#\"+this.containerid).node();return o.addEventListener(\"mouseover\",this),o.addEventListener(\"mouseout\",this),!0}},{key:\"destroy\",value:function(){var t=r.select(\"#\"+this.containerid),e=t.select(\".\"+this.clsName);try{t.node().removeEventListener(\"mouseover\",this),t.node().removeEventListener(\"mouseout\",this)}catch(t){console.error(t)}try{e.selectAll(\".\"+this.clsName+\"-icon\").on(\"click\",null)}catch(t){console.error(t)}e.remove()}},{key:\"handleEvent\",value:function(t){try{var e=r.select(\"#\"+this.containerid).select(\".\"+this.clsName);\"mouseover\"==t.type?e.transition().duration(200).style(\"opacity\",.8):\"mouseout\"==t.type&&e.transition().duration(500).style(\"opacity\",0)}catch(t){console.error(t)}}}])&&o(e.prototype,n),i&&o(e,i),t}(),a={lasso_on:\"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='15pt' height='15pt' viewBox='0 0 230 230'><g><ellipse ry='65.5' rx='86.5' cy='94' cx='115.5' stroke-width='20' fill='transparent'\/><ellipse ry='11.500001' rx='10.5' cy='153' cx='91.5' stroke-width='20' fill='transparent'\/><line y2='210.5' x2='105' y1='164.5' x1='96' stroke-width='20'\/><\/g><\/svg>\",lasso_off:\"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='15pt' height='15pt' viewBox='0 0 230 230'><g><ellipse ry='65.5' rx='86.5' cy='94' cx='115.5' stroke-width='20' fill='transparent'\/><ellipse ry='11.500001' rx='10.5' cy='153' cx='91.5' stroke-width='20' fill='transparent'\/><line y2='210.5' x2='105' y1='164.5' x1='96' stroke-width='20'\/><\/g><\/svg>\",pan_zoom_reset:\"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='15pt' height='15pt' viewBox='0 0 512 512'><g><polygon points='274,209.7 337.9,145.9 288,96 416,96 416,224 366.1,174.1 302.3,238 '\/><polygon points='274,302.3 337.9,366.1 288,416 416,416 416,288 366.1,337.9 302.3,274'\/><polygon points='238,302.3 174.1,366.1 224,416 96,416 96,288 145.9,337.9 209.7,274'\/><polygon points='238,209.7 174.1,145.9 224,96 96,96 96,224 145.9,174.1 209.7,238'\/><\/g><\/svg>\",zoom_on:\"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='15pt' height='15pt' viewBox='0 0 512 512'><g><ellipse ry='150' rx='150' cy='213' cx='203.5' stroke-width='50' fill='transparent'\/><line y2='455.5' x2='416' y1='331.5' x1='301' stroke-width='50'\/><\/g><\/svg>\",zoom_off:\"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='15pt' height='15pt' viewBox='0 0 512 512'><g><ellipse ry='150' rx='150' cy='213' cx='203.5' stroke-width='50' fill='transparent'\/><line y2='455.5' x2='416' y1='331.5' x1='301' stroke-width='50'\/><line y2='455' x2='0' y1='0' x1='416' stroke-width='30'\/><\/g><\/svg>\",save_as_png:\"<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='15pt' height='15pt' viewBox='0 0 512 512'><g><polygon points='95 275 95 415 415 415 415 275 375 275 375 380 135 380 135 275'\/><polygon points='220 30 220 250 150 175 150 245 250 345 350 245 350 175 280 250 280 30'\/><\/g><\/svg>\"};function u(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var c=function(){function t(e,n,r,i){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.containerid=e,this.svgid=n,this.min=r,this.max=i,this.zoomer=null}var e,n,i;return e=t,(n=[{key:\"init\",value:function(){return!(1===this.min&&this.max<=1||(this.zoomer=r.zoom().scaleExtent([this.min,this.max]),0))}},{key:\"destroy\",value:function(){this.zoomOff(),this.zoomer=null}},{key:\"zoomOn\",value:function(){var t=this.svgid;r.select(\"#\"+this.containerid).call(this.zoomer.on(\"zoom\",(function(){r.select(\"#\"+t+\" > g\").attr(\"transform\",r.event.transform)})))}},{key:\"zoomIdentity\",value:function(){r.select(\"#\"+this.containerid).call(this.zoomer.transform,r.zoomIdentity)}},{key:\"zoomOff\",value:function(){r.select(\"#\"+this.containerid).call(this.zoomer.on(\"zoom\",null))}}])&&u(e.prototype,n),i&&u(e,i),t}();n(127),n(128),n(132),n(133),n(134),n(137),n(96),n(143),n(146),n(157),n(159),n(160),n(161),n(164),n(165),n(166),n(167),n(168),n(169),n(170),n(171),n(172),n(173),n(174),n(175),n(176),n(177),n(178),n(179),n(184),n(185),n(186);function f(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function l(t,e,n){return e&&f(t.prototype,e),n&&f(t,n),t}function h(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function p(t){var e=t.ownerDocument,n=e.documentElement,r=e.defaultView;return new window.DOMRect(r.pageXOffset||n.scrollLeft||0,r.pageYOffset||n.scrollTop||0,Math.max(n.clientWidth||0,r.innerWidth||0),Math.max(n.clientHeight||0,r.innerHeight||0))}function v(t){for(var e=new window.DOMMatrix,n=e,r=t,i=t.ownerDocument.defaultView||window,o=p(t);null!=r&&r!==r.ownerDocument.documentElement;){var s=i.getComputedStyle(r,void 0).transform||\"none\";n=(\"none\"===s?e:new window.DOMMatrix(s)).multiply(n),r=r.parentNode}var a=t.offsetWidth,u=t.offsetHeight,c=new window.DOMPoint(0,0).matrixTransform(n),f=new window.DOMPoint(a,0).matrixTransform(n),l=new window.DOMPoint(a,u).matrixTransform(n),h=new window.DOMPoint(0,u).matrixTransform(n),v=Math.min(c.x,f.x,l.x,h.x),d=Math.min(c.y,f.y,l.y,h.y),y=t.getBoundingClientRect();return n=e.translate(o.x+y.left-v,o.y+y.top-d,0).multiply(n)}window.DOMPoint=window.DOMPoint||function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;h(this,t),this.x=e,this.y=n,this.z=r,this.w=i},window.DOMPoint.prototype.matrixTransform=window.DOMPoint.prototype.matrixTransform||function(t){return(t.is2D||t instanceof SVGMatrix)&&0===this.z&&1===this.w?new DOMPoint(this.x*t.a+this.y*t.c+t.e,this.x*t.b+this.y*t.d+t.f,0,1):new DOMPoint(this.x*t.m11+this.y*t.m21+this.z*t.m31+this.w*t.m41,this.x*t.m12+this.y*t.m22+this.z*t.m32+this.w*t.m42,this.x*t.m13+this.y*t.m23+this.z*t.m33+this.w*t.m43,this.x*t.m14+this.y*t.m24+this.z*t.m34+this.w*t.m44)};for(var d=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;h(this,t),this.x=e,this.y=n,this.width=r,this.height=i}return l(t,[{key:\"top\",get:function(){return this.y}},{key:\"left\",get:function(){return this.x}},{key:\"right\",get:function(){return this.x+this.width}},{key:\"bottom\",get:function(){return this.y+this.height}}]),t}(),y=0,g=[\"top\",\"right\",\"bottom\",\"left\"];y<g.length;y++){var m=g[y],x=Object.getOwnPropertyDescriptor(d.prototype,m);x.enumerable=!0,Object.defineProperty(d.prototype,m,x)}window.DOMRect=window.DOMRect||d;for(var w=Symbol(),b=Symbol(),A=function(t){var e=t.split(\/\\(\/,1)[0];if(\"matrix\"===e)return function(t){var e=t.replace(\/matrix\\(\/,\"\");if(6!==(e=e.split(\/,\/,7)).length)throw new Error(\"Failed to parse \".concat(t));return[(e=e.map(parseFloat))[0],e[1],0,0,e[2],e[3],0,0,0,0,1,0,e[4],e[5],0,1]}(t);if(\"matrix3d\"===e)return function(t){var e=t.replace(\/matrix3d\\(\/,\"\");if(16!==(e=e.split(\/,\/,17)).length)throw new Error(\"Failed to parse \".concat(t));return e.map(parseFloat)}(t);throw new Error(\"\".concat(e,\" parsing not implemented\"))},S=function(t,e,n){if(\"number\"!=typeof n)throw new TypeError(\"Expected number\");t[w][e]=n},O=function(t,e,n){if(\"number\"!=typeof n)throw new TypeError(\"Expected number\");10===e||15===e?1!==n&&(t[b]=!1):0!==n&&(t[b]=!1),t[w][e]=n},E=function(t){var e=Object.create(k.prototype);return e.constructor=k,e[b]=!0,e[w]=t,e},T=function(t,e){for(var n=new Float64Array(16),r=0;r<4;r++)for(var i=0;i<4;i++){for(var o=0,s=0;s<4;s++)o+=t[4*r+s]*e[4*s+i];n[4*r+i]=o}return n},k=function(){function t(e){if(h(this,t),this[b]=!0,this[w]=new Float64Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),\"string\"==typeof e){if(\"\"===e)return;var n=e.split(\/\\)\\s+\/,20).map(A);if(0===n.length)return;e=n[0];for(var r=1;r<n.length;r++)e=T(n[r],e)}var i=0;if(e&&6===e.length)S(this,0,e[i++]),S(this,1,e[i++]),S(this,4,e[i++]),S(this,5,e[i++]),S(this,12,e[i++]),S(this,13,e[i++]);else if(e&&16===e.length)S(this,0,e[i++]),S(this,1,e[i++]),O(this,2,e[i++]),O(this,3,e[i++]),S(this,4,e[i++]),S(this,5,e[i++]),O(this,6,e[i++]),O(this,7,e[i++]),O(this,8,e[i++]),O(this,9,e[i++]),O(this,10,e[i++]),O(this,11,e[i++]),S(this,12,e[i++]),S(this,13,e[i++]),O(this,14,e[i++]),O(this,15,e[i]);else if(void 0!==e)throw new TypeError(\"Expected string or array.\")}return l(t,[{key:\"m11\",get:function(){return this[w][0]},set:function(t){S(this,0,t)}},{key:\"m12\",get:function(){return this[w][1]},set:function(t){S(this,1,t)}},{key:\"m13\",get:function(){return this[w][2]},set:function(t){O(this,2,t)}},{key:\"m14\",get:function(){return this[w][3]},set:function(t){O(this,3,t)}},{key:\"m21\",get:function(){return this[w][4]},set:function(t){S(this,4,t)}},{key:\"m22\",get:function(){return this[w][5]},set:function(t){S(this,5,t)}},{key:\"m23\",get:function(){return this[w][6]},set:function(t){O(this,6,t)}},{key:\"m24\",get:function(){return this[w][7]},set:function(t){O(this,7,t)}},{key:\"m31\",get:function(){return this[w][8]},set:function(t){O(this,8,t)}},{key:\"m32\",get:function(){return this[w][9]},set:function(t){O(this,9,t)}},{key:\"m33\",get:function(){return this[w][10]},set:function(t){O(this,10,t)}},{key:\"m34\",get:function(){return this[w][11]},set:function(t){O(this,11,t)}},{key:\"m41\",get:function(){return this[w][12]},set:function(t){S(this,12,t)}},{key:\"m42\",get:function(){return this[w][13]},set:function(t){S(this,13,t)}},{key:\"m43\",get:function(){return this[w][14]},set:function(t){O(this,14,t)}},{key:\"m44\",get:function(){return this[w][15]},set:function(t){O(this,15,t)}},{key:\"a\",get:function(){return this[w][0]},set:function(t){S(this,0,t)}},{key:\"b\",get:function(){return this[w][1]},set:function(t){S(this,1,t)}},{key:\"c\",get:function(){return this[w][4]},set:function(t){S(this,4,t)}},{key:\"d\",get:function(){return this[w][5]},set:function(t){S(this,5,t)}},{key:\"e\",get:function(){return this[w][12]},set:function(t){S(this,12,t)}},{key:\"f\",get:function(){return this[w][13]},set:function(t){S(this,13,t)}},{key:\"is2D\",get:function(){return this[b]}},{key:\"isIdentity\",get:function(){var t=this[w];return 1===t[0]&&0===t[1]&&0===t[2]&&0===t[3]&&0===t[4]&&1===t[5]&&0===t[6]&&0===t[7]&&0===t[8]&&0===t[9]&&1===t[10]&&0===t[11]&&0===t[12]&&0===t[13]&&0===t[14]&&1===t[15]}},{key:\"multiply\",value:function(t){return E(this[w]).multiplySelf(t)}},{key:\"multiplySelf\",value:function(t){return this[w]=T(t[w],this[w]),t.is2D||(this[b]=!1),this}},{key:\"translate\",value:function(t,e,n){return E(this[w]).translateSelf(t,e,n)}},{key:\"translateSelf\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return this[w]=T([1,0,0,0,0,1,0,0,0,0,1,0,t,e,n,1],this[w]),0!==n&&(this[b]=!1),this}},{key:\"scale\",value:function(t,e,n,r,i,o){return E(this[w]).scaleSelf(t,e,n,r,i,o)}},{key:\"scale3d\",value:function(t,e,n,r){return E(this[w]).scale3dSelf(t,e,n,r)}},{key:\"scale3dSelf\",value:function(t,e,n,r){return this.scaleSelf(t,t,t,e,n,r)}},{key:\"scaleSelf\",value:function(t,e,n,r,i,o){return\"number\"!=typeof r&&(r=0),\"number\"!=typeof i&&(i=0),\"number\"!=typeof o&&(o=0),this.translateSelf(r,i,o),\"number\"!=typeof t&&(t=1),\"number\"!=typeof e&&(e=t),\"number\"!=typeof n&&(n=1),this[w]=T([t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1],this[w]),this.translateSelf(-r,-i,-o),1===n&&0===o||(this[b]=!1),this}},{key:\"inverse\",value:function(){return E(this[w]).invertSelf()}},{key:\"invertSelf\",value:function(){if(!this[b])throw new Error(\"3D matrix inversion is not implemented.\");var e=this[w][0]*this[w][5]-this[w][1]*this[w][4];if(0!==e){var n=new t;return n.a=this[w][5]\/e,n.b=-this[w][1]\/e,n.c=-this[w][4]\/e,n.d=this[w][0]\/e,n.e=(this[w][4]*this[w][13]-this[w][5]*this[w][12])\/e,n.f=(this[w][1]*this[w][12]-this[w][0]*this[w][13])\/e,n}this[b]=!1,this[w]=[NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN]}}]),t}(),_=0,I=[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"m11\",\"m12\",\"m13\",\"m14\",\"m21\",\"m22\",\"m23\",\"m24\",\"m31\",\"m32\",\"m33\",\"m34\",\"m41\",\"m42\",\"m43\",\"m44\",\"is2D\",\"isIdentity\"];_<I.length;_++){var N=I[_],M=Object.getOwnPropertyDescriptor(k.prototype,N);M.enumerable=!0,Object.defineProperty(k.prototype,N,M)}function P(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}window.DOMMatrix=window.DOMMatrix||k;var R=function(){function t(e,n,r,i,o,s,a,u,c,f,l){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.svgid=e,this.clsName=n+\"_\"+this.svgid,this.placement=r,this.opacity=i,this.offx=o,this.offy=s,this.usecursor=a,this.usefill=u,this.usestroke=c,this.delayover=f,this.delayout=l}var e,n,i;return e=t,(n=[{key:\"init\",value:function(){var t=r.select(\"#\"+this.svgid),e=r.select(\"#\"+this.svgid+\" > g\").selectAll(\"*[title]\");if(e.empty())return!1;r.select(\".\"+this.clsName).remove(),(\"doc\"==this.placement?r.select(\"body\"):r.select(t.node().parentNode)).append(\"xhtml:div\").classed(this.clsName,!0).style(\"position\",\"absolute\").style(\"opacity\",0),this.decodingTextarea=document.createElementNS(\"http:\/\/www.w3.org\/1999\/xhtml\",\"textarea\");var n=this;return e.each((function(){this.addEventListener(\"mouseover\",n),this.addEventListener(\"mousemove\",n),this.addEventListener(\"mouseout\",n)})),!0}},{key:\"destroy\",value:function(){var t=this,e=r.select(\"#\"+this.svgid);try{e.select(\"svg>g\").selectAll(\"*[title]\").each((function(){this.removeEventListener(\"mouseover\",t),this.removeEventListener(\"mousemove\",t),this.removeEventListener(\"mouseout\",t)}))}catch(t){console.error(t)}r.select(\".\"+this.clsName).remove()}},{key:\"handleEvent\",value:function(t){try{var e,n,i=r.select(\"#\"+this.svgid);if(n=\"svg\"==this.placement?i.select(\"div.\"+this.clsName):r.select(\"div.\"+this.clsName),\"mouseover\"==t.type){if(this.usefill){var o=t.target.getAttribute(\"tooltip_fill\");o||(o=t.target.getAttribute(\"fill\")),o&&n.style(\"background-color\",o)}this.usestroke&&n.style(\"border-color\",t.target.getAttribute(\"stroke\")),n.html(this.decodeContent(t.target.getAttribute(\"title\"))),e=this.calculatePosition(n,t),n.style(\"left\",e.x+\"px\").style(\"top\",e.y+\"px\").transition().duration(this.delayover).style(\"opacity\",this.opacity)}else\"mousemove\"==t.type?(e=this.calculatePosition(n,t),n.style(\"left\",e.x+\"px\").style(\"top\",e.y+\"px\")):\"mouseout\"==t.type&&n.transition().duration(this.delayout).style(\"opacity\",0)}catch(t){console.error(t)}}},{key:\"decodeContent\",value:function(t){return this.decodingTextarea.innerHTML=t,this.decodingTextarea.value}},{key:\"calculatePosition\",value:function(t,e){var n,i,o=r.select(\"#\"+this.svgid).node(),s=t.node(),a=o.parentNode;if(this.usecursor){var u=Math.ceil(s.offsetWidth),c=Math.ceil(s.offsetHeight),f=p(o),l=new window.DOMPoint(f.left,f.top),h=new window.DOMPoint(f.right,f.bottom);n=new window.DOMPoint(e.pageX,e.pageY),\"doc\"!=this.placement&&(i=v(a).inverse(),n=n.matrixTransform(i),l=l.matrixTransform(i),h=h.matrixTransform(i));var d=h.x-(n.x+this.offx),y=n.x-this.offx-l.x;n.x=d>=u?Math.max(l.x,n.x+this.offx):y>=u?Math.min(h.x-u,n.x-this.offx-u):Math.max(l.x,Math.min(h.x,n.x+u\/2)-u);var g=h.y-(n.y+this.offy),m=n.y-this.offy-l.y;n.y=g>=c?Math.max(l.y,n.y+this.offy):m>=c?Math.min(h.y-c,n.y-this.offy-c):Math.max(l.y,Math.min(h.y,n.y+c\/2)-c)}else n=new window.DOMPoint(this.offx,this.offy),\"doc\"==this.placement&&(i=v(a),n=n.matrixTransform(i));return n}}])&&P(e.prototype,n),i&&P(e,i),t}();n(106);function j(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var C=function(){function t(e,n,r,i,o,s){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.svgid=e,this.clsName=n+\"_\"+e,this.invClsName=r?r+\"_\"+e:null,this.attrName=i,this.shinyInputId=o,this.shinyMessageId=s,this.dataHovered=[]}var e,n,i;return e=t,(n=[{key:\"init\",value:function(){var t=r.select(\"#\"+this.svgid+\" > g\").selectAll(\"*[\"+this.attrName+\"]\");if(t.empty())return!1;var e=this;return t.each((function(){this.addEventListener(\"mouseover\",e),this.addEventListener(\"mouseout\",e)})),this.shinyMessageId&&Shiny.addCustomMessageHandler(this.shinyMessageId,(function(t){\"string\"==typeof t?e.setHovered([t]):Array.isArray(t)&&e.setHovered(t)})),!0}},{key:\"destroy\",value:function(){var t=this;try{r.select(\"#\"+this.svgid+\" > g\").selectAll(\"*[\"+this.attrName+\"]\").each((function(){this.removeEventListener(\"mouseover\",t),this.removeEventListener(\"mouseout\",t)}))}catch(t){console.error(t)}if(this.shinyMessageId)try{Shiny.addCustomMessageHandler(this.shinyMessageId,(function(t){}))}catch(t){console.error(t)}this.dataHovered=[]}},{key:\"handleEvent\",value:function(t){try{\"mouseover\"==t.type?this.setHovered([t.target.getAttribute(this.attrName)]):\"mouseout\"==t.type&&this.setHovered([])}catch(t){console.error(t)}}},{key:\"setHovered\",value:function(t){this.dataHovered=t,this.refreshHovered(),this.shinyInputId&&Shiny.onInputChange(this.shinyInputId,this.dataHovered)}},{key:\"refreshHovered\",value:function(){var t=r.select(\"#\"+this.svgid+\" > g\");t.selectAll(\"*[\"+this.attrName+\"].\"+this.clsName).classed(this.clsName,!1),this.invClsName&&t.selectAll(\"*[\"+this.attrName+\"].\"+this.invClsName).classed(this.invClsName,!1);for(var e=0;e<this.dataHovered.length;e++)t.selectAll(\"*[\"+this.attrName+'=\"'+this.dataHovered[e]+'\"]').classed(this.clsName,!0);this.invClsName&&this.dataHovered.length>0&&t.selectAll(\"*[\"+this.attrName+\"]:not(.\"+this.clsName+\")\").classed(this.invClsName,!0)}}])&&j(e.prototype,n),i&&j(e,i),t}();function D(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var z=function(){function t(e,n,r,i,o,s,a){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.svgid=e,this.clsName=n+\"_\"+e,this.attrName=r,this.shinyInputId=i,this.shinyMessageId=o,this.type=s,this.initialSelection=a,this.dataSelected=[]}var e,n,i;return e=t,(n=[{key:\"init\",value:function(){var t=r.select(\"#\"+this.svgid+\" > g\").selectAll(\"*[\"+this.attrName+\"]\");if(t.empty()||\"single\"!=this.type&&\"multiple\"!=this.type)return!1;var e=this;return t.each((function(){this.addEventListener(\"click\",e)})),this.shinyMessageId&&Shiny.addCustomMessageHandler(this.shinyMessageId,(function(t){\"string\"==typeof t?e.setSelected([t]):Array.isArray(t)&&e.setSelected(t)})),\"string\"==typeof this.initialSelection?this.setSelected([this.initialSelection]):Array.isArray(this.initialSelection)&&\"multiple\"==this.type&&this.setSelected(this.initialSelection),this.initialSelection=null,!0}},{key:\"destroy\",value:function(){var t=this;try{r.select(\"#\"+this.svgid+\" > g\").selectAll(\"*[\"+this.attrName+\"]\").each((function(){this.removeEventListener(\"click\",t)}))}catch(t){console.error(t)}if(this.shinyMessageId)try{Shiny.addCustomMessageHandler(this.shinyMessageId,(function(t){}))}catch(t){console.error(t)}this.dataSelected=[]}},{key:\"handleEvent\",value:function(t){try{var e=this.dataSelected,n=t.target.getAttribute(this.attrName),r=e.indexOf(n);\"multiple\"==this.type?r<0?e.push(n):e.splice(r,1):e=r<0?[n]:[],this.setSelected(e)}catch(t){console.error(t)}}},{key:\"setSelected\",value:function(t){this.dataSelected=t,this.refreshSelected(),this.shinyInputId&&Shiny.onInputChange(this.shinyInputId,this.dataSelected)}},{key:\"refreshSelected\",value:function(){var t=r.select(\"#\"+this.svgid+\" > g\");t.selectAll(\"*[\"+this.attrName+\"].\"+this.clsName).classed(this.clsName,!1);for(var e=0;e<this.dataSelected.length;e++)t.selectAll(\"*[\"+this.attrName+'=\"'+this.dataSelected[e]+'\"]').classed(this.clsName,!0)}},{key:\"lasso\",value:function(t){var e=r.select(\"#\"+this.svgid+\" > g\"),n=this,i=r.lasso();try{i=i.closePathSelect(!0).closePathDistance(100).items(e.selectAll(\"*[\"+this.attrName+\"]\")).targetArea(e).on(\"start\",(function(){})).on(\"draw\",(function(){})).on(\"end\",(function(){try{var r=n.dataSelected;i.selectedItems().each((function(e,i){var o=this.getAttribute(n.attrName),s=r.indexOf(o);s<0&&t?r.push(o):s>=0&&!t&&r.splice(s,1)})),e.on(\".dragstart\",null).on(\".drag\",null).on(\".dragend\",null),n.setSelected(r)}catch(t){console.error(t)}})),e.call(i)}catch(t){console.error(t)}}}])&&D(e.prototype,n),i&&D(e,i),t}();function L(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var F=function(){function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.containerid=e,this.svgid=null,this.handlers=[],this.shinyMode=n}var e,n,o;return e=t,(n=[{key:\"clear\",value:function(){for(var t=0;t<this.handlers.length;t++)this.handlers[t].destroy();this.handlers=[],r.select(\"#\"+this.containerid+\" style\").remove(),r.select(\"#\"+this.containerid+\" div.girafe_container_std\").remove()}},{key:\"setSvgId\",value:function(t){this.svgid=t}},{key:\"addStyle\",value:function(t){var e=t.join(\"\\n\").replace(\/SVGID_\/g,this.svgid);r.select(\"#\"+this.containerid).append(\"style\").attr(\"type\",\"text\/css\").text(e)}},{key:\"addSvg\",value:function(t,e){r.select(\"#\"+this.containerid).append(\"div\").attr(\"class\",\"girafe_container_std\").html(t),e&&function(t){var e=t.indexOf(\"{\"),n=t.substring(e+1,t.lastIndexOf(\"}\")),r=t.substring(0,e),i=r.substring(r.indexOf(\"(\")+1,r.lastIndexOf(\")\")).split(\",\");function o(){return Function.apply(this,i)}return i.push(n),o.prototype=Function.prototype,new o}(e)()}},{key:\"IEFixResize\",value:function(t,e){i()&&(r.select(\"#\"+this.svgid).classed(\"girafe_svg_ie\",!0),r.select(\"#\"+this.containerid+\" div\").classed(\"girafe_container_ie\",!0).style(\"width\",Math.round(100*t)+\"%\").style(\"padding-bottom\",Math.round(t*e*100)+\"%\"))}},{key:\"autoScale\",value:function(t){r.select(\"#\"+this.svgid).style(\"width\",t).style(\"height\",\"100%\").style(\"margin-left\",\"auto\").style(\"margin-right\",\"auto\")}},{key:\"fixSize\",value:function(t,e){r.select(\"#\"+this.svgid).attr(\"preserveAspectRatio\",\"xMidYMin meet\"),r.select(\"#\"+this.containerid+\" .girafe_container_std\").style(\"width\",\"100%\"),r.select(\"#\"+this.svgid).attr(\"width\",t).attr(\"height\",e),r.select(\"#\"+this.svgid).style(\"width\",t+\"px\").style(\"height\",e+\"px\")}},{key:\"setSizeLimits\",value:function(t,e,n,i){r.select(\"#\"+this.svgid).style(\"max-width\",t).style(\"max-height\",n).style(\"min-width\",e).style(\"min-height\",i)}},{key:\"removeContainerLimits\",value:function(){i()||r.select(\"#\"+this.containerid).style(\"width\",null).style(\"height\",null)}},{key:\"setupTooltip\",value:function(t,e,n,r,i,o,s,a,u,c){try{var f=new R(this.svgid,t,e,n,r,i,o,s,a,u,c);f.init()&&this.handlers.push(f)}catch(t){console.error(t)}}},{key:\"setupHover\",value:function(t){for(var e=0;e<t.length;e++){var n=t[e];try{var r=this.shinyMode&&n.reactive?this.containerid+n.inputSuffix:null,i=this.shinyMode&&n.reactive?this.containerid+n.messageSuffix:null,o=new C(this.svgid,n.classPrefix,n.invClassPrefix,n.attrName,r,i);o.init()&&this.handlers.push(o)}catch(t){console.error(t)}}}},{key:\"setupSelection\",value:function(t){for(var e=0;e<t.length;e++){var n=t[e];try{if((this.shinyMode||!n.only_shiny)&&(\"single\"==n.type||\"multiple\"==n.type)){var r=this.shinyMode?this.containerid+n.inputSuffix:null,i=this.shinyMode?this.containerid+n.messageSuffix:null,o=new z(this.svgid,n.classPrefix,n.attrName,r,i,n.type,n.selected);o.init()&&this.handlers.push(o)}}catch(t){console.error(t)}}}},{key:\"setupZoom\",value:function(t,e){try{var n=new c(this.containerid,this.svgid,t,e);n.init()&&this.handlers.push(n)}catch(t){console.error(t)}}},{key:\"setupToolbar\",value:function(t,e,n,r){try{for(var i=null,o=null,a=0;a<this.handlers.length;a++){var u=this.handlers[a];u instanceof c?i=u:u instanceof z&&\"data-id\"==u.attrName&&\"multiple\"==u.type&&(o=u)}var f=new s(this.containerid,this.svgid,t,e,i,o,n,r);f.init()&&this.handlers.push(f)}catch(t){console.error(t)}}}])&&L(e.prototype,n),o&&L(e,o),t}();function B(t){return function(e,n,r){var i=new F(e.id,t);return{renderValue:function(n){i.clear(),i.setSvgId(n.uid),i.addStyle([n.settings.tooltip.css,n.settings.hoverinv.css,n.settings.hover.css,n.settings.hoverkey.css,n.settings.hovertheme.css,n.settings.capture.css,n.settings.capturekey.css,n.settings.capturetheme.css]),i.addSvg(n.html,n.js);var r=d3.select(\"#\"+i.svgid).property(\"viewBox\").baseVal;n.settings.sizing.rescale?t?(i.autoScale(\"100%\"),i.IEFixResize(1,1\/n.ratio),i.setSizeLimits(d3.select(e).style(\"width\"),0,d3.select(e).style(\"height\"),0)):(i.autoScale(Math.round(100*n.settings.sizing.width)+\"%\"),i.IEFixResize(n.settings.sizing.width,1\/n.ratio),i.setSizeLimits(\"unset\",\"unset\",\"unset\",\"unset\"),i.removeContainerLimits()):(i.fixSize(r.width,r.height),d3.select(e).style(\"width\",null).style(\"height\",null)),i.setupHover([{classPrefix:\"hover\",attrName:\"data-id\",inputSuffix:\"_hovered\",messageSuffix:\"_hovered_set\",reactive:n.settings.hover.reactive,invClassPrefix:n.settings.hoverinv.css.length>0?\"hover_inv\":null},{classPrefix:\"hover_key\",attrName:\"key-id\",inputSuffix:\"_key_hovered\",messageSuffix:\"_key_hovered_set\",reactive:n.settings.hoverkey.reactive,invClassPrefix:null},{classPrefix:\"hover_theme\",attrName:\"theme-id\",inputSuffix:\"_theme_hovered\",messageSuffix:\"_theme_hovered_set\",reactive:n.settings.hovertheme.reactive,invClassPrefix:null}]),i.setupSelection([{classPrefix:\"selected\",attrName:\"data-id\",inputSuffix:\"_selected\",messageSuffix:\"_set\",type:n.settings.capture.type,only_shiny:n.settings.capture.only_shiny,selected:n.settings.capture.selected},{classPrefix:\"selected_key\",attrName:\"key-id\",inputSuffix:\"_key_selected\",messageSuffix:\"_key_set\",type:n.settings.capturekey.type,only_shiny:n.settings.capturekey.only_shiny,selected:n.settings.capturekey.selected},{classPrefix:\"selected_theme\",attrName:\"theme-id\",inputSuffix:\"_theme_selected\",messageSuffix:\"_theme_set\",type:n.settings.capturetheme.type,only_shiny:n.settings.capturetheme.only_shiny,selected:n.settings.capturetheme.selected}]),i.setupZoom(n.settings.zoom.min,n.settings.zoom.max),i.setupToolbar(\"ggiraph-toolbar\",n.settings.toolbar.position,n.settings.toolbar.saveaspng,n.settings.toolbar.pngname),i.setupTooltip(\"tooltip\",n.settings.tooltip.placement,n.settings.tooltip.opacity,n.settings.tooltip.offx,n.settings.tooltip.offy,n.settings.tooltip.use_cursor_pos,n.settings.tooltip.usefill,n.settings.tooltip.usestroke,n.settings.tooltip.delay.over,n.settings.tooltip.delay.out)},resize:function(t,e){}}}}}])}));<\/script>\r\n<script>HTMLWidgets.widget({\r\n  name: 'girafe',\r\n  type: 'output',\r\n  factory: ggiraphjs.factory(HTMLWidgets.shinyMode)\r\n});\r\n<\/script>\r\n\r\n<\/head>\r\n<body style=\"background-color: white;\">\r\n<div id=\"htmlwidget_container\">\r\n<div id=\"htmlwidget-1561a989fe5c5532ae82\" class=\"girafe html-widget\" style=\"width:960px;height:500px;\">\r\n\r\n<\/div>\r\n<\/div>\r\n<script type=\"application\/json\" data-for=\"htmlwidget-1561a989fe5c5532ae82\">{\"x\":{\"html\":\"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n<svg xmlns='http:\/\/www.w3.org\/2000\/svg' xmlns:xlink='http:\/\/www.w3.org\/1999\/xlink' id='svg_0fbba391-b5ee-4570-b2e1-537b063584a3' viewBox='0 0 432 360'>\\n <defs>\\n  <clipPath id='svg_0fbba391-b5ee-4570-b2e1-537b063584a3_c1'>\\n   <rect x='0' y='0' width='432' height='360'\/>\\n  <\\\/clipPath>\\n  <clipPath id='svg_0fbba391-b5ee-4570-b2e1-537b063584a3_c2'>\\n   <rect x='27.96' y='0' width='376.09' height='360'\/>\\n  <\\\/clipPath>\\n  <clipPath id='svg_0fbba391-b5ee-4570-b2e1-537b063584a3_c3'>\\n   <rect x='2.35' y='0' width='376.32' height='360'\/>\\n  <\\\/clipPath>\\n <\\\/defs>\\n <g>\\n  <g clip-path='url(#svg_0fbba391-b5ee-4570-b2e1-537b063584a3_c1)'>\\n   <rect x='0' y='0' width='432' height='360' fill='#FFFFFF' stroke='#FFFFFF' stroke-width='0.75' stroke-linejoin='round' stroke-linecap='round'\/>\\n  <\\\/g>\\n  <g clip-path='url(#svg_0fbba391-b5ee-4570-b2e1-537b063584a3_c2)'>\\n   <rect x='27.96' y='0' width='376.09' height='360' fill='none' stroke='none'\/>\\n  <\\\/g>\\n  <g clip-path='url(#svg_0fbba391-b5ee-4570-b2e1-537b063584a3_c3)'>\\n   <rect x='2.35' y='-28.35' width='376.32' height='413.95' fill='none' stroke='none'\/>\\n   <polygon points='196.80,31.61 201.94,31.98 207.06,32.58 206.42,38.28 205.77,43.99 205.12,49.69 204.48,55.40 203.83,61.10 203.18,66.81 202.54,72.51 201.89,78.22 201.24,83.92 200.60,89.63 199.95,95.33 199.30,101.04 198.66,106.74 198.01,112.45 197.36,118.16 196.72,123.86 192.87,123.50 193.12,117.75 193.36,112.01 193.61,106.27 193.85,100.53 194.10,94.78 194.34,89.04 194.59,83.30 194.84,77.55 195.08,71.81 195.33,66.07 195.57,60.32 195.82,54.58 196.07,48.84 196.31,43.10 196.56,37.35 196.80,31.61' fill='#0000FF' stroke='none' onclick='alert(\\\"I was fortunate enough to receive an arc copy of this book. In summary Davids debut novel is a brilliant start to a fantasy series, with a twist.The story had me gripped from the early pages and proceeded to move along at a pace including plenty of action with plenty of plot depth as expected from this swords and sorcery type novel. This book follows the main protagonist Calidan and friend Cassius during their young life, with mentions of their current position in the present day which leaves you wanting to read on to find out how their life plans out.Towards the end of the book there is a bit of a sci-if twist as the characters explore the history of the world they are in in a lot greater depth than many fantasy novels do. At first this sudden change of direction jarred a little, but now I find myself wanting to know more about both the main protagonists future and the history of the world. This really sets up well for a potentially fantastic second book and I cant wait to carry on reading once this is available.\\\")' title='A brilliant start to a fantasy series' data-id='1'\/>\\n   <polygon points='208.20,32.74 213.29,33.60 218.35,34.67 217.26,40.29 216.17,45.91 215.09,51.54 214.00,57.16 212.91,62.79 211.82,68.41 210.74,74.03 209.65,79.66 208.56,85.28 207.47,90.90 206.39,96.53 205.30,102.15 204.21,107.77 203.12,113.40 202.04,119.02 200.95,124.64 197.14,123.92 197.83,118.22 198.53,112.52 199.22,106.82 199.91,101.13 200.60,95.43 201.29,89.73 201.98,84.03 202.67,78.33 203.36,72.63 204.05,66.93 204.74,61.23 205.44,55.53 206.13,49.84 206.82,44.14 207.51,38.44 208.20,32.74' fill='#0000FF' stroke='none' onclick='alert(\\\"I received an ARC of The Great Hearts and I had no idea of what to expect in terms of content and quality. I was pleased to find it was a thrilling page turner that had me gripped until the end.The novel is a dark and gritty fantasy adventure that is told by the protagonist. As the first book of a series, it covers the loss of innocence and the events that lead to Calidan Darkhearts destiny as a finely tuned killing machine\/monster hunter. It is packed with action, mystery, love and plot twists that kept me hooked throughout. The unique  take on \\\"magic\\\" makes this book stand out from the fantasy genre and serves to merge the world we know with those fantasy worlds which we all wish were real.I highly recommend The Great Hearts to anybody and I cant wait for the next book in the series. A fantastic debut from an author with a talent for making the treacherous and tough world of Calidan seem like an adventure that you are part of.\\\")' title='A Dark and gritty fantasy novel that is full of intelligent twists.' data-id='2'\/>\\n   <polygon points='219.47,34.93 224.47,36.27 229.43,37.81 227.91,43.31 226.39,48.81 224.87,54.31 223.35,59.81 221.83,65.31 220.31,70.81 218.79,76.32 217.27,81.82 215.75,87.32 214.23,92.82 212.71,98.32 211.18,103.82 209.66,109.32 208.14,114.82 206.62,120.32 205.10,125.82 201.37,124.74 202.50,119.13 203.63,113.52 204.76,107.91 205.89,102.29 207.02,96.68 208.16,91.07 209.29,85.45 210.42,79.84 211.55,74.23 212.68,68.61 213.81,63.00 214.94,57.39 216.07,51.77 217.20,46.16 218.34,40.55 219.47,34.93' fill='#0000FF' stroke='none' onclick='alert(\\\"not usually a fan of fantasy. this book exceeded all my expectations!! please tell me there will be more to read on calidan and the imperators!! do not usually give feedback, but this book deserves five stars!!!\\\")' title='originally outstanding!!!' data-id='3'\/>\\n   <polygon points='230.52,38.18 235.41,39.98 240.22,41.98 238.28,47.32 236.34,52.66 234.40,58.00 232.46,63.33 230.51,68.67 228.57,74.01 226.63,79.35 224.69,84.69 222.75,90.02 220.80,95.36 218.86,100.70 216.92,106.04 214.98,111.37 213.04,116.71 211.09,122.05 209.15,127.39 205.51,125.96 207.08,120.48 208.64,114.99 210.20,109.50 211.77,104.02 213.33,98.53 214.89,93.04 216.45,87.56 218.02,82.07 219.58,76.59 221.14,71.10 222.71,65.61 224.27,60.13 225.83,54.64 227.40,49.15 228.96,43.67 230.52,38.18' fill='#0000FF' stroke='none' onclick='alert(\\\"Wow. Excellent story, great characters and development. Please tell me there is a sequel coming!\\\")' title='Fantasy and sci-fi in one' data-id='4'\/>\\n   <polygon points='228.59,76.50 235.62,80.02 233.11,85.50 230.61,90.98 228.10,96.46 225.59,101.94 223.09,107.41 220.58,112.89 218.08,118.37 215.57,123.85 213.06,129.33 209.55,127.56 211.67,121.89 213.78,116.22 215.90,110.54 218.01,104.87 220.13,99.19 222.24,93.52 224.36,87.85 226.47,82.17 228.59,76.50' fill='#241178' stroke='none' onclick='alert(\\\"Overall, I thought this was a good read, but some of the ways it was written took away from the experience.The book is almost entirely first person, following the main character Calidan. The problem is that it starts with present day adult Calidan, but then has 90% of the book being what happened during his childhood. Its written as though he is telling the story of his youth, but theres no audience for who hes supposed to be telling it to. This is made worse by the implication that something awful at some point happens that changes Calidan and his friends, which gives all the past sequences a feeling of impending doom that I really didnt like. Theyre not super common, but there are frequent commentary comments added into these past sequences by the present day Calidan, which just destroy tension. Its bad enough I know he must survive and be relatively unharmed from any danger (or else he wouldnt be alive and intact for the present portions) but the commentary frequently ruins small mysteries about what happens between Calidan and other characters.My other problem with the book is a huge spoiler near the end, so;***SPOILER WARNING***The setting appears to be a mostly standard dark fantasy world small bits of magic, and it remains that way until right near the end. Then the characters discover theres a twist that actually its Earth ten thousand years in the future. Apparently magic showed up, humans messed around with it for half a century and then destroyed the world, setting them back to a medieval technology level. I hated this. Hated, Hated, Hated it. The idea that humans survive in special high-tech bunkers until the earth is safe again after Nuclear War and they somehow lose all their understanding of technology is ridiculous and I cant stand it. It doesnt help that its done in a clumsy way, almost as if the Author only thought of it right at the end and didnt even bother going back to put foreshadowing in.***SPOILER END***I enjoyed reading most of the book, the writing is engaging and well done, but it left me unsatisfied when I finished.\\\")' title='Decent, but not for everyone' data-id='5'\/>\\n   <polygon points='251.68,47.73 256.21,50.41 260.65,53.29 257.91,58.18 255.17,63.08 252.43,67.98 249.69,72.87 246.95,77.77 244.21,82.67 241.47,87.56 238.73,92.46 235.99,97.35 233.25,102.25 230.51,107.15 227.77,112.04 225.03,116.94 222.29,121.83 219.55,126.73 216.81,131.63 213.45,129.54 215.84,124.43 218.23,119.31 220.61,114.20 223.00,109.09 225.39,103.97 227.78,98.86 230.17,93.75 232.56,88.63 234.95,83.52 237.34,78.41 239.73,73.29 242.12,68.18 244.51,63.07 246.90,57.95 249.29,52.84 251.68,47.73' fill='#0000FF' stroke='none' onclick='alert(\\\"While being at times dark and gritty, in my opinion this books greatest strength is the humour of the narrator\/main character. Meanwhile, the plot is a real page-turner; desperate to find out how the story concludes you might find yourself accidentally completing this as I did over a long weekend.In the first of this series the author has already created a vivid world, with imaginative characters and plenty of plot hooks. I look forward to seeing how the series progresses!\\\")' title='A fun read with great characters.' data-id='6'\/>\\n   <polygon points='261.62,53.95 265.93,57.06 270.13,60.34 267.02,64.96 263.91,69.58 260.80,74.20 257.69,78.82 254.58,83.44 251.47,88.06 248.36,92.68 245.25,97.30 242.14,101.93 239.03,106.55 235.92,111.17 232.81,115.79 229.70,120.41 226.59,125.03 223.48,129.65 220.37,134.27 217.18,131.88 219.95,127.01 222.73,122.14 225.51,117.27 228.29,112.40 231.06,107.52 233.84,102.65 236.62,97.78 239.40,92.91 242.18,88.04 244.95,83.17 247.73,78.30 250.51,73.43 253.29,68.56 256.06,63.69 258.84,58.82 261.62,53.95' fill='#0000FF' stroke='none' onclick='alert(\\\"A boy and his friend go from the horror of watching their family and village devoured to finding one of them his lifetime friend, an enhanced jaguar of monumental proportions in service to an empora. 5 Stars a must read\\\")' title='Beasts Unleashed' data-id='7'\/>\\n   <polygon points='271.04,61.09 275.10,64.59 279.02,68.25 275.57,72.56 272.11,76.88 268.65,81.19 265.19,85.50 261.74,89.81 258.28,94.12 254.82,98.43 251.36,102.75 247.91,107.06 244.45,111.37 240.99,115.68 237.53,119.99 234.07,124.30 230.62,128.62 227.16,132.93 223.70,137.24 220.71,134.55 223.86,129.96 227.00,125.37 230.15,120.78 233.29,116.19 236.44,111.60 239.58,107.01 242.73,102.41 245.88,97.82 249.02,93.23 252.17,88.64 255.31,84.05 258.46,79.46 261.61,74.87 264.75,70.27 267.90,65.68 271.04,61.09' fill='#0000FF' stroke='none' onclick='alert(\\\"4.5, rounded up.I loved the opening of the first chapter. It read: \\\"I wasnt always a killer. In fact, I didnt kill until I was eleven years old. Cassius, though he may look and act like a hulking violent brute at times, managed to avoid killing until he was fourteen. He always was a slow leaner.\\\"I love the voice and the implication. The novel carries that same voice, but I do think the tone shifts over time. It starts rather dark, but moves into an adventure tale about two friends and all their training to become fighters, really. And then, in the last 15, or 10%, it gets a little weird, especially the ending. I guess its a great twist, but even now, writing this, Im not entirely sure how I feel about it.The title of the novel, \\\"The Great Hearts,\\\" refers to giant magical animals that bond with certain humans. These can be any animal, apparently, and our main character, Calidan, becomes bonded with a giant panther. Once bonded, he gains increased physical capacities as well as the ability to sense Seylentha (the name of his panther) and practically see through her eyes. Theres a part in the book where its told from her perspective, which is fun and humorous (she scares some men and sets their dogs free, lol).I almost want to say this felt like a video game to me. There were Tyrant blades, magical animals, Seraph magic (in different colors) and all sorts of things Ive come to love from fantasy-style video games. Im always a sucker for that, and I enjoyed the novel more because of it. Again, even the ending (with its twist) is something Ive seen in a video game. Good times.Overall, if you like talking animals, stories of a boy and his friends training and becoming badasses, then I think youll enjoy this book. I would recommend it.\\\")' title='Video Game in Book Form (Super Fun)' data-id='8'\/>\\n   <polygon points='279.88,69.09 283.64,72.95 287.27,76.98 283.49,80.95 279.71,84.92 275.93,88.89 272.15,92.86 268.37,96.83 264.59,100.80 260.81,104.77 257.03,108.74 253.25,112.71 249.47,116.68 245.69,120.66 241.92,124.63 238.14,128.60 234.36,132.57 230.58,136.54 226.80,140.51 224.02,137.55 227.51,133.27 231.00,128.99 234.50,124.72 237.99,120.44 241.48,116.16 244.97,111.88 248.46,107.60 251.95,103.32 255.44,99.04 258.93,94.76 262.42,90.48 265.91,86.21 269.41,81.93 272.90,77.65 276.39,73.37 279.88,69.09' fill='#0000FF' stroke='none' onclick='alert(\\\"Really enjoyable, found myself finishing it in no time. Cant wait for more.\\\")' title='Great character, fun read.' data-id='9'\/>\\n   <polygon points='239.28,128.26 242.66,132.54 238.32,136.38 233.97,140.22 229.62,144.06 227.09,140.85 231.16,136.66 235.22,132.46 239.28,128.26' fill='#000000' stroke='none' onclick='alert(\\\"I do not like first person.  It read (for me) as narration instead of as a story.  Just not my cup of tea\\\")' title='Forced myself to read 30 %' data-id='10'\/>\\n   <polygon points='282.40,98.83 287.71,106.84 283.44,109.99 279.16,113.15 274.89,116.30 270.62,119.46 266.35,122.62 262.07,125.77 257.80,128.93 253.53,132.08 249.26,135.24 244.98,138.39 240.71,141.55 236.44,144.71 232.17,147.86 229.89,144.43 233.93,140.92 237.97,137.41 242.01,133.91 246.05,130.40 250.09,126.89 254.13,123.38 258.17,119.87 262.20,116.37 266.24,112.86 270.28,109.35 274.32,105.84 278.36,102.33 282.40,98.83' fill='#230EB9' stroke='none' onclick='alert(\\\"This is my favourite type of Fantasy story but I loathe these unfinished series with no proper ending to each book. Its lazy writing.  Having said that I thought it good. a little violent for my tastes, but excellent plot line and characters. Contains violence and sexual assault so not for younger readers.\\\")' title='Fantasy, Sword and Sorcery, Coming of age.' data-id='11'\/>\\n   <polygon points='302.23,97.63 304.98,102.42 307.56,107.32 302.99,110.11 298.42,112.89 293.84,115.68 289.27,118.46 284.70,121.25 280.13,124.03 275.55,126.82 270.98,129.61 266.41,132.39 261.84,135.18 257.27,137.96 252.69,140.75 248.12,143.53 243.55,146.32 238.98,149.10 234.40,151.89 232.40,148.26 236.77,145.09 241.13,141.93 245.50,138.76 249.86,135.60 254.22,132.43 258.59,129.27 262.95,126.11 267.32,122.94 271.68,119.78 276.04,116.61 280.41,113.45 284.77,110.29 289.14,107.12 293.50,103.96 297.86,100.79 302.23,97.63' fill='#0000FF' stroke='none' onclick='alert(\\\"A unique fantasy novel filled with grim humour,  adventure, gory, suspense and mythical creatures.  Very strong characters and I found myself sucked into the page turning, tension filled storyline.  The only downfall I found was the ending left many questions such as what happened to Seya??  I also felt the ending was quite confusing.  Unfortunately, I felt this warranted a loss of half a star so I give it 4.5.  Due to not being able to give half stars I did however feel it deserved a 5 rather than a 4 as the rest of the book was excellent especially considering this is the authors first novel. Well done. Highly recommend to fans of fantasy.FREE ON KINDLE UNLIMITED\\\")' title='Very strong characters and I found myself sucked into the page turning' data-id='12'\/>\\n   <polygon points='264.01,134.75 266.86,141.10 261.77,143.60 256.68,146.10 251.59,148.61 246.50,151.11 241.41,153.61 236.32,156.11 234.61,152.30 239.51,149.38 244.41,146.45 249.31,143.53 254.21,140.60 259.11,137.68 264.01,134.75' fill='#1B0F3C' stroke='none' onclick='alert(\\\"Not bad but not excellent either, the first couple of chapters were great, then it all started sliding with eleven year olds being taken in by a major General, learning hand to hand combat and weapons, and allowed to go out on combat missions. I enjoyed the concept, the writing was good, it was just the timeline was all dicked up and that ruined my enjoyment of the book. Nice first effort though\\\")' title='Not bad' data-id='13'\/>\\n   <polygon points='313.13,119.73 315.10,124.97 316.89,130.28 311.95,132.17 307.02,134.06 302.08,135.95 297.14,137.84 292.21,139.73 287.27,141.62 282.33,143.50 277.40,145.39 272.46,147.28 267.52,149.17 262.59,151.06 257.65,152.95 252.71,154.83 247.78,156.72 242.84,158.61 237.90,160.50 236.49,156.54 241.28,154.24 246.07,151.94 250.86,149.64 255.65,147.34 260.44,145.04 265.23,142.74 270.02,140.44 274.81,138.14 279.60,135.84 284.39,133.54 289.18,131.24 293.97,128.94 298.76,126.64 303.55,124.34 308.34,122.04 313.13,119.73' fill='#0000FF' stroke='none' onclick='alert(\\\"I am an advent reader of fantasy otherworldly text. This struck a just right balance between story and character,  conflict and wonder.\\\")' title='An excellent read!' data-id='14'\/>\\n   <polygon points='317.26,131.47 318.82,136.88 320.18,142.34 315.12,143.76 310.05,145.17 304.99,146.59 299.92,148.01 294.85,149.43 289.79,150.84 284.72,152.26 279.66,153.68 274.59,155.10 269.53,156.51 264.46,157.93 259.40,159.35 254.33,160.77 249.27,162.19 244.20,163.60 239.14,165.02 238.04,160.95 242.99,159.10 247.94,157.26 252.89,155.42 257.85,153.58 262.80,151.74 267.75,149.89 272.70,148.05 277.65,146.21 282.60,144.37 287.55,142.53 292.50,140.68 297.46,138.84 302.41,137.00 307.36,135.16 312.31,133.32 317.26,131.47' fill='#0000FF' stroke='none' onclick='alert(\\\"I was provided this book as an arc copy as I know the author.Im not usually one for fantasy novels but this one kept my interest. The protagonist narrates in the first person in a refreshingly irreverent style, filled with wry (and dry) humour.Whilst this novel focuses on the formative years of a group of friends as they train to become skilled fighters, this novel is not for children. I would give it a \\\"15\\\" rating (if such a rating existed for fiction).The story was fun, fast, and different. Given the way that it ended, I would love to find out what happens next. The author has concluded this particular story whilst deftly laying the groundwork for the next instalment, which I am very much looking forward to.Highly recommended - if you like fantasy, sci-fi, or action\/adventure fiction with beasts, magic and everything in between, this one is for you.\\\")' title='A rip-roaring read' data-id='15'\/>\\n   <polygon points='320.46,143.56 321.59,149.09 322.53,154.66 317.37,155.59 312.21,156.53 307.06,157.47 301.90,158.40 296.74,159.34 291.58,160.28 286.43,161.21 281.27,162.15 276.11,163.09 270.96,164.02 265.80,164.96 260.64,165.89 255.49,166.83 250.33,167.77 245.17,168.70 240.02,169.64 239.24,165.48 244.32,164.11 249.39,162.74 254.47,161.37 259.55,160.00 264.62,158.63 269.70,157.26 274.77,155.89 279.85,154.52 284.93,153.15 290.00,151.78 295.08,150.41 300.15,149.04 305.23,147.67 310.31,146.30 315.38,144.93 320.46,143.56' fill='#0000FF' stroke='none' onclick='alert(\\\"Worth the read. From the first line, it drew me in and didnt let go. Splendid. Gripping. Captivating. I cant wait for the next one.\\\")' title='Awesome Book' data-id='16'\/>\\n   <polygon points='322.71,155.90 323.41,161.51 323.91,167.15 318.69,167.60 313.48,168.05 308.27,168.50 303.06,168.95 297.85,169.39 292.64,169.84 287.43,170.29 282.22,170.74 277.01,171.19 271.80,171.64 266.59,172.08 261.38,172.53 256.17,172.98 250.95,173.43 245.74,173.88 240.53,174.33 240.08,170.11 245.25,169.22 250.41,168.33 255.58,167.44 260.74,166.56 265.90,165.67 271.07,164.78 276.23,163.89 281.40,163.00 286.56,162.12 291.72,161.23 296.89,160.34 302.05,159.45 307.22,158.56 312.38,157.68 317.54,156.79 322.71,155.90' fill='#0000FF' stroke='none' onclick='alert(\\\"I received an ARC of The Great Hearts and I had no idea of what to expect in terms of content and quality. I was pleased to find it was a thrilling page turner that had me gripped until the end.The novel is a dark and gritty fantasy adventure that is told by the protagonist. As the first book of a series, it covers the loss of innocence and the events that lead to Calidan Darkhearts destiny as a finely tuned killing machine\/monster hunter. It is packed with action, mystery, love and plot twists that kept me hooked throughout. The unique take on \\\"magic\\\" makes this book stand out from the fantasy genre and serves to merge the world we know with those fantasy worlds which we all wish were real.I highly recommend The Great Hearts to anybody and I cant wait for the next book in the series. A fantastic debut from an author with a talent for making the treacherous and tough world of Calidan seem like an adventure that you are part of.\\\")' title='A Dark and gritty fantasy novel that is full of intelligent twists.' data-id='17'\/>\\n   <polygon points='323.99,168.41 324.25,174.07 324.31,179.73 319.08,179.69 313.86,179.65 308.63,179.60 303.40,179.56 298.18,179.52 292.95,179.47 287.72,179.43 282.50,179.39 277.27,179.34 272.04,179.30 266.82,179.26 261.59,179.22 256.36,179.17 251.14,179.13 245.91,179.09 240.68,179.04 240.56,174.80 245.78,174.40 250.99,174.00 256.21,173.60 261.42,173.20 266.64,172.80 271.85,172.40 277.06,172.00 282.28,171.60 287.49,171.20 292.71,170.80 297.92,170.40 303.13,170.01 308.35,169.61 313.56,169.21 318.78,168.81 323.99,168.41' fill='#0000FF' stroke='none' onclick='alert(\\\"I have just finished this book and I am dying for more!I am a great fan of this genre(s) and am so excited that I have found a new series of books which I am able to lose myself in completely. Most importantly to me the characters have a realism to them, with complex motivations and rich histories. To complement these characters the author has created a vast world full of adventure, variety and intrigue. This would be enough but in addition we are introduced to a novel and fascinating lore which slowly develops and surprises you as you progress through the story.Our journey begins with Calidan Darkheart who acts as our story teller and guide through this tumultuous world. He and his surrogate brother in arms are swiftly thrust into a life where the goal is not simply to survive but to not lose themselves in the process. The story is well paced with gripping and at times hilarious dialogue, furious action and combat which is gritty and stunningly well described leaving you with a pumping heart!In all, this is a fantastic book which I heartily recommend. Be warned, it is aptly named and certainly not for the faint of heart!\\\")' title='Scale, intrigue and fantastic battles, what more could you want!' data-id='18'\/>\\n   <polygon points='324.30,180.99 324.11,186.65 323.73,192.30 318.53,191.77 313.33,191.23 308.12,190.70 302.92,190.17 297.71,189.63 292.51,189.10 287.31,188.56 282.10,188.03 276.90,187.50 271.69,186.96 266.49,186.43 261.29,185.89 256.08,185.36 250.88,184.83 245.67,184.29 240.47,183.76 240.68,179.52 245.91,179.61 251.13,179.70 256.36,179.79 261.58,179.88 266.81,179.98 272.04,180.07 277.26,180.16 282.49,180.25 287.71,180.35 292.94,180.44 298.17,180.53 303.39,180.62 308.62,180.71 313.84,180.81 319.07,180.90 324.30,180.99' fill='#0000FF' stroke='none' onclick='alert(\\\"I had a lot of fun reading this book.  Im a sucker for a snarky protagonist with slightly questionable morals, who seems to be trying to do the right thing.  That guy, Calidan, is developed nicely throughout the book while we learn his history and follow him through some creative D&amp;D-like adventures.  The characters surrounding him are developed to a lesser extent, depending on how much they support his story, but I never felt short-changed by lack of back story.  It seems that David Oliver is giving us readers just enough information to get us hooked on the rest of the series to come.  Fantastic!  Who doesnt love a good, slow-burning build-up?  If the next books are as good as this debut, the wait will be worth it.It reminded me of the sci-fi and fantasy novels I devoured in the 80s and 90s and have missed: full of relatable characters doing things Id love to do in places Id love to go with plenty of twisty plot.  Another bonus: while Oliver invents place names and languages, none are annoyingly unpronounceable and no glossary or exhaustive character lists are necessary.One distraction for me was the quality of the editing.  I had to stop to reread sentences many times because of simple errors: subject-verb disagreement, incorrect tense use, or spellcheck type word choice mistakes.  Im still giving it five stars because the writing is so creative and expressive and a good balance of narration and dialogue.\\\")' title='Clever story, smart characters, and good writing have me eagerly awaiting sequels.' data-id='19'\/>\\n   <polygon points='290.34,189.82 289.27,198.24 283.78,197.15 278.29,196.06 272.81,194.97 267.32,193.88 261.83,192.79 256.35,191.70 250.86,190.61 245.37,189.52 239.89,188.43 240.43,184.23 245.97,184.85 251.52,185.47 257.07,186.09 262.61,186.71 268.16,187.34 273.71,187.96 279.25,188.58 284.80,189.20 290.34,189.82' fill='#241178' stroke='none' onclick='alert(\\\"This one is kind of a mixed bag \u2013 it\u2019s Oliver\u2019s debut novel and there\u2019s huge potential here, and a lot of good things about the story. The relationship between Calidan and Cassius is well written and believable, I loved the introduction to Seya and the slow development of their understanding of one another. Seya in general is a good character and I enjoyed her a lot. The early scenes in which the boys weigh up whether or not they can trust the hunter in the forest are great, and that whole sequence was very enjoyable. The prose is functional and not overly poetic, but that works well for the story. And there\u2019s some good worldbuilding that I thought was pulled off quite nicely \u2013 even when it info-dumped, the info was interesting enough that I didn\u2019t mind. The concept of The Great Hearts and the eventual explanation we receive for their existence was especially good.I do think there are some issues that need to be addressed \u2013 the character development could use a little work; it would be nice to see more introspection and a stronger response to the traumatic experiences that the characters go through. My chief concern, however, is that tone-wise it\u2019s all over the place. The story doesn\u2019t seem to quite know what it wants to be. It starts out very much Grimdark, with vivid descriptions of the village being sacked, people being eaten and burned and raped and so forth. Then once the boys escape into the forest, it becomes a rather jaunty adventure story with some How to Train Your Dragon vibes, in which they largely shrug off the traumatic events that they have witnessed. We follow up with military fantasy when the boys go into training. Then later it plunges back into gritty Grimdark, before veering off into Sci-Fi. Now, don\u2019t get me wrong, I actually thought the ideas were very clever and interesting. But my general feeling was that this was an author with a lot of great ideas who perhaps tried to mash all of those great ideas into one book, where two or three may have worked better. It\u2019s something that I see fairly frequently with debut novels and it\u2019s certainly not to say that it\u2019s a bad book. It\u2019s not. But these are things that I hope will smooth out as the author develops. And I will be interested to see how this author develops. Overall, genuinely great ideas and I found it to be a good read with some issues that I believe will improve with the author as he becomes more familiar with his craft.\\\")' title='An interesting debut with good ideas and a few issues.' data-id='20'\/>\\n   <polygon points='321.98,206.01 320.92,211.56 319.67,217.05 314.63,215.55 309.58,214.05 304.54,212.55 299.49,211.05 294.45,209.55 289.40,208.05 284.35,206.55 279.31,205.05 274.26,203.55 269.22,202.04 264.17,200.54 259.13,199.04 254.08,197.54 249.04,196.04 243.99,194.54 238.95,193.04 239.81,188.90 244.95,189.97 250.08,191.04 255.22,192.11 260.35,193.18 265.49,194.25 270.62,195.32 275.76,196.39 280.89,197.45 286.03,198.52 291.16,199.59 296.30,200.66 301.44,201.73 306.57,202.80 311.71,203.87 316.84,204.94 321.98,206.01' fill='#0000FF' stroke='none' onclick='alert(\\\"This book was given to me free at my request and I provided this voluntary review.This book is well read and a wonderful story. It starts out slowly building and giving you more and more while keeping you wondering where it is all going.The story develops further and takes a turn that I just wasnt expecting and catapults it into a different direction to what you are expecting.Lots of little twists and turns keep you guessing and engaged throughout.The narration is actually fantastic, the author gives voice to all characters and conveys emotion and drives the story.I am thoroughly looking forward to a second instalment of this story. Hoping to see even more from some of the secondary characters and where the primary ones will go.In summation if you want a strong fantasy story with a few twists and an ever developing story then this is the book for you.\\\")' title='&amp;quot;A building gripping story. Some great twists!&amp;quot;' data-id='21'\/>\\n   <polygon points='319.37,218.27 317.89,223.69 316.22,229.05 311.31,227.08 306.40,225.11 301.49,223.14 296.57,221.17 291.66,219.20 286.75,217.23 281.84,215.26 276.93,213.30 272.02,211.33 267.11,209.36 262.20,207.39 257.29,205.42 252.38,203.45 247.47,201.48 242.56,199.51 237.65,197.54 238.83,193.49 243.87,195.04 248.90,196.59 253.93,198.14 258.97,199.69 264.00,201.24 269.03,202.78 274.07,204.33 279.10,205.88 284.13,207.43 289.17,208.98 294.20,210.53 299.24,212.07 304.27,213.62 309.30,215.17 314.34,216.72 319.37,218.27' fill='#0000FF' stroke='none' onclick='alert(\\\"This isnt so much a debut novel as it is a breakout novel. This book really hits a lot of tones, tempos, and toothy subjects. It revolves around two friends, Calidan and Cassius, who train to become great fighters. The story starts out grimly, with their homes, and all their loved ones, getting wiped out. From there, they go forth and try to improve their lots in life together. They have some great adventures, and there is a cool\/odd\/exciting twist at the end. This book has a lot going for it, character development is there, there just could have been more. Other than that the story is great.I cannot wait for part 2 to come out to see what happens next.Get it, read it, love it.\\\")' title='A great Start for Great Hearts!!' data-id='22'\/>\\n   <polygon points='315.82,230.23 313.92,235.50 311.84,240.68 307.10,238.26 302.36,235.83 297.62,233.41 292.88,230.99 288.14,228.56 283.40,226.14 278.66,223.71 273.92,221.29 269.19,218.87 264.45,216.44 259.71,214.02 254.97,211.60 250.23,209.17 245.49,206.75 240.75,204.32 236.01,201.90 237.50,197.98 242.40,200.00 247.29,202.01 252.19,204.03 257.08,206.04 261.98,208.06 266.87,210.08 271.77,212.09 276.66,214.11 281.56,216.12 286.45,218.14 291.35,220.15 296.24,222.17 301.13,224.19 306.03,226.20 310.92,228.22 315.82,230.23' fill='#0000FF' stroke='none' onclick='alert(\\\"I figured this would be another sword and sorcery. And it would fade.I finished the book a week and a half ago. Read 3 other books since, and I am still thinking about this one.The great hearts are creatures. At first they feel like magical beings. In a medieval world. But as the story continues you learn so much more. I dont want to give any of this away, because the story unfolds so well. Ugh. what can I say that wont give it away.The story is one of vengeance... but also loyalty. Two boys survive a horrible slaughter. And decide to grow into men of vengeance. The monster they hunt is horrific. The dark nature of the beginning sets up the story to be a gore\/horror fest. Which it doesnt turn out to be.This is the shocker of the year so far.The two main characters, Calidan and Cassius, are loyal to each other and the emperor. And the relationship there is awesome. You sort of grow up with them, which is a story arc I always love to read. Combine that with Calidans relationship with Seya (the great heart) and things grow into something amazing.The world building is wonderful. The great-hearts and some other things I will keep secret are wonderful ideas, and explored well. It is sort of just wonderful surprise after wonderful surprise.The narrator killed it. He was so good. SO GOOD.I cannot wait to listen to book 2!!!\\\")' title='This is the shocker of the year so far' data-id='23'\/>\\n   <polygon points='296.25,233.92 292.07,242.70 287.60,239.89 283.14,237.07 278.68,234.26 274.21,231.44 269.75,228.62 265.28,225.81 260.82,222.99 256.36,220.17 251.89,217.36 247.43,214.54 242.96,211.72 238.50,208.91 234.03,206.09 235.83,202.33 240.47,204.76 245.12,207.19 249.77,209.62 254.42,212.05 259.07,214.48 263.71,216.91 268.36,219.34 273.01,221.77 277.66,224.20 282.30,226.63 286.95,229.06 291.60,231.49 296.25,233.92' fill='#230EB9' stroke='none' onclick='alert(\\\"This book opens with quite a dark scene and this tone continues for much of the book, but it mostly works well as the author sets the scene in this new fantasy series.The main focus of this first installment is focused on Calidan and Cassius who manage to escape the tragedy that opens this book and follows them through their journey that eventually results in them being enrolled in the Imperator academy. This is a school where they will learn to become Imperators, or voices of the emperor, a role that seems to be a fantasy equivalent of a secret agent or special forces, they are highly trained in military skills amongst other things and are assigned dangerous and difficult tasks by their emperor. Of the two of them, Calidan did not have any choice about joining because of something that happened shortly after they began fleeing their village at the start of the book, he becomes bonded to a giant panther, one of the titular Great Hearts that are practically a myth to most people in that world.Sometimes, it doesnt matter if you include some of the back story for a fantasy world as part of a review, but in the case of this one I think it is better to allow other readers to experience things unspoiled since gradually learning about this world definitely enhances the overall story. One part of this book that I did not enjoy as much as the rest of it were the occasional flashforwards we got to a much older Calidan, they didnt provide much of interest to the main story and disrupted the overall flow at the same time with no clear benefit to them, perhaps they work better in the text editions but didnt really fit this audiobook version.The author has chosen to narrate his own book for this audiobook version and on the whole it works quite well, it is clearly more on the side of a reading than a performance, but that style seems to suit the story that can be quite dark at times.Overall, this was an interesting start to a new series, it gave us a glimpse of an interesting world and a varied cast of characters, while still delivering a story that was sufficiently compelling in its own right.[Note - I was given this free review copy audiobook at my request and have voluntarily left this review.]\\\")' title='Interesting start to a new series' data-id='24'\/>\\n   <polygon points='277.13,234.37 272.98,241.53 268.39,238.04 263.81,234.54 259.23,231.05 254.65,227.55 250.07,224.06 245.49,220.56 240.91,217.07 236.32,213.58 231.74,210.08 233.82,206.50 238.63,209.60 243.44,212.69 248.26,215.79 253.07,218.89 257.88,221.98 262.69,225.08 267.51,228.18 272.32,231.27 277.13,234.37' fill='#241178' stroke='none' onclick='alert(\\\"The Great Hearts is the first book in a new series by David Oliver that blends grimdark, a magic school, and a touch of sci-fi into an epic coming-of-age story.When he was just eleven years old, Calidans village was massacred during the summoning of a demon. He and his friend Cassius were the only ones to escape, fleeing into the woods. Soon after, they befriend a lone tracker who helps them learn to survive on their own, and Cassius bonds with an enormous black panther named Seya.Seya is one of the Great Hearts, giant beasts who can live for hundreds of years and passed into legend so long ago that most dont even know they exist. As he grows to learn more about Seya, Calidan finds himself on the path to becoming a great warrior.All of this is told as a memory from the perspective of a Calidan who is much older. Together, present-day Calidan and Cassius are on a dangerous mission to track down and kill the demon that was raised in their village.Olivers writing flows smoothly and is easy to digest, featuring the occasional poetic turn of phrase. The book moves fairly quickly, with a bit of a slowdown in pacing from about the 50% - 80% mark.The author narrates the audio version of the book himself. I was pleasantly surprised to find that he did an excellent job. While not the most technically perfect of audio narrations, each character had a distinct voice, the pacing fit the book, and the narration managed to convey emotional subtleties.In general, I found this book to be excellent, with a few stumbles along the way. There are a four or five great ideas combined into one book, where two or three might help it to find its target audience.\\\")' title='Grimdark coming of age with a touch of sci-fi' data-id='25'\/>\\n   <polygon points='299.81,263.53 296.76,268.09 293.55,272.53 289.52,268.86 285.50,265.19 281.47,261.52 277.45,257.85 273.42,254.19 269.40,250.52 265.37,246.85 261.35,243.18 257.32,239.52 253.30,235.85 249.27,232.18 245.25,228.51 241.22,224.84 237.20,221.18 233.17,217.51 229.15,213.84 231.50,210.47 235.77,213.78 240.04,217.10 244.31,220.42 248.57,223.73 252.84,227.05 257.11,230.37 261.38,233.68 265.65,237.00 269.92,240.32 274.19,243.63 278.46,246.95 282.73,250.26 287.00,253.58 291.27,256.90 295.54,260.21 299.81,263.53' fill='#0000FF' stroke='none' onclick='alert(\\\"As anyone whos read my reviews knows I am a big fan of audiobooks, and thanks to Audiobookboom.com, which connects reviewers to authors, narrators and publisher looking for honest reviews, its possible to discover books like The Great Hearts. Thats a good thing, since it would be tragic to miss out on stories as good as this.Callidan Darkheart and his hulking partner Cassius are Imperators, Voice of the Emperor, the hands that solve the Empires problems which others cant, often painfully and permanently.They are also Callidan and Cassius, boys from a small village in the mountains, who watched their entire village be tortured and slaughtered by a group of barbarian cannibal demon worshipers bent on summoning their foul master to the realm. Escaping the barbarians and their demon, they swear revenge as only young teens can do. While escaping, they trap their pursuers and manage to have a huge boar kill most of them.One survived, the tracker, although he was injured. They discover that he only worked for the barbarians, he wasnt a crazy cannibal. They start nursing him back to health so he can help them make it to civilization. During this time, they also encounter a strange creature in the dark one night, and Callidan feeds it. This comes in handy later as they face down a wolf pack, since this creature comes and saves them. It is a giant cat the size of a moose, called a Great Heart, and Callidan feeding it caused it to bond to him. This means he is mentally linked to it, and gains strength, speed, agility, increased healing and other abilities, making him much more than human.Reaching civilization, they are introduced to the local army commander, who puts the tracker to work training his scouts, and takes the boys under his wing, training them as future officers. This includes training in a martial art from a distant country, which Callidans abilities really allowed him to excel at. This all comes to an end, though, when a rogue Imperator student comes through the city, with two Imperators on her trail. This leads to a confrontation with the student, who it turns out is possessed by a demon. This confrontation injures Cassius, and outs Callidans bond to his Great Heart, which forces the Imperators to bring them before the Emperor, who heals Cassius. He also inducts them into his Imperators,  telling them the training will either make them Imperators or kill them.Thus starts the Imperator training. The sheer difficulty of the training would be hard to describe, and be a huge spoiler. Needless to say, it involves a varied cast of characters, learning the skills it takes to be and Imperator, including statecraft, combat training, diplomacy, assassination, and the basics of magic. They even take a field exercise to mysterious valley which has killed all who have entered it. The students and their Imperator instructor do enter, and discover the lost history of their world, which I cant reveal due to spoilers. They also discover the truth of the worlds magic, all in an exciting climactic battle.This is all told in flashback form, as we start and continue the story throughout with Callidan and Cassius on various tasks as full fledged, experienced Imperators. This includes trying to track down the demon and his worshippers that killed their village. You also see that Cassius is bonded with a creature from the depths of time, making him a match for anything on the world, if also making him frightening in the extreme. This leaves us waiting for the next book for the story to continue.I am a huge fan of Callidan and Cassius. They play very well off each other, and are hugely different from teens to adult. You can tell life has really weathered them. They are just so well drawn out, you are really able to get inside their heads. The secondary characters are all equally well drawn out, given three dimensions, with realistic motivations and consistent actions. The format of shifting to flashbacks doesnt work for all authors, but this author does it better than any writer I have ever read. It is done so well, it never feels jarring, and is used with great effect to foreshadow current events. The plotting is fast paced, and definitely qualifies as grimdark for those looking for genre labels, although there is a generous helping of humor to help offset the grim. The action scenes are so well described you would swear you can feel the swish of the blade, the bite of the edge. From the smallest duel to the biggest battle, you feel as though you are right in the middle of the action, blade in hand. You cant ask for much more in a fantasy tale.The Author self narrates. This is often a hit or miss proposition, but in this case, its a definite hit. He really brings each character to life, injecting separate personalities into each. He really gets a variety of accents and inflections to differentiate the characters. His narrative pacing is excellent, and you never feel the narration slow down into any sort of monotone.All told, an excellent effort, one which I heartily recommend. As Ive said, I rate this up there with Nicholas Eames Kings of the Wyld and Ed McDonalds Blackwing as my top fantasy reads\/listens in the last 12 months. Do yourself a favor and get a copy.\\\")' title='One of my top 3 reads in the last year.' data-id='26'\/>\\n   <polygon points='292.81,273.49 289.42,277.75 285.88,281.87 282.15,277.83 278.43,273.80 274.70,269.77 270.98,265.74 267.25,261.70 263.53,257.67 259.80,253.64 256.08,249.61 252.35,245.57 248.63,241.54 244.90,237.51 241.17,233.47 237.45,229.44 233.72,225.41 230.00,221.38 226.27,217.34 228.87,214.20 232.87,217.91 236.87,221.61 240.86,225.32 244.86,229.03 248.86,232.73 252.85,236.44 256.85,240.14 260.84,243.85 264.84,247.55 268.84,251.26 272.83,254.96 276.83,258.67 280.83,262.38 284.82,266.08 288.82,269.79 292.81,273.49' fill='#0000FF' stroke='none' onclick='alert(\\\"Thank you to David Oliver for providing me with the audiobook to review. You can see this review and many others on jetpacksNdragons(dot)com.I think normally with any review I would usually try to put a book into a category as to let you know what kind of book I am reviewing. Trying to fit this book into any sub genre of fantasy would not entirely work because it fits into quite a few.It starts off as a kind of grim-dark fantasy where the main character, Callidan, rescues his best friend Cassius from a bunch of crazed, shadow monster worshiping, cannibal lunatics\u2026 or something of the such. The beginning sequence is extremely dark and gruesome. The boys watch as their entire village, children and all are put through some truly horrible things. The mood of the story does lighten up quite a bit as you continue to read.\u201cI wasn\u2019t always a killer. In fact, I didn\u2019t kill until I was eleven years old. Cassius, though he may look and act like a hulking violent brute at times, managed to avoid killing until he was fourteen. He always was a slow learner.\u201dIt is also a coming of age story in which you get to see the characters learn and grow more powerful as they realize their full potential. The title of the book, The Great Hearts, refers to large, intelligent animals that can bond with a person lending them strength and speed. Think Eregon but replace the dragon with a moose sized, highly intelligent panther. One of my absolute favorite parts of the book is told from the point of view of the giant cat, and the author captures a cats personality perfectly. There is no doubt in my mind that Mr. Oliver is a cat owner.Eventually after escape from the horrors of their village they meet up with a tracker and continue their adventure until they end up getting taken in by a master general and taught a special form of martial arts.I don\u2019t want to spoil too much of the book, but this gives you a good idea of how this book fits into a bunch of different categories.The book jumps to the present every once in a while and gives you a little taste of what the boys are up to in present day as Imperators for the Empire. Imperators are the elite group created to fight the things that most normal people don\u2019t even want to know about.\u201cWhat the Emperor makes is monsters\u201dThe book has a nice pace to it. the author does a great job breaking up some of the slower but nessesary training parts of the book. For the most part the book is very fast paced and action packed. The parts that aren\u2019t leave you thinking about what is going to happen next before plunging you into more action.I am not going to talk about the end of this book too much but I will say this\u2026 It gets weird, and I loved it! The end of this book wrapped up the story nicely, but I wanted more. The second book whenever it comes will be on the top of my reading list for sure.The Audio BookJust a quick bit about the audio book. I started listening to the book and got to the part where it said \u201cThe Great Hearts, by David Oliver. Narrated by David Oliver\u201d. I have a HUGE library of audio books. I must have 200 plus. I don\u2019t recall ever liking the narration of a book done by its author. I sometimes suffer through them because the book is good, more often than not I just don\u2019t finish it. I know for sure that Mr. Oliver has a bright future as an author. The story he wrote in The Great Hearts is nothing short of fantastic. The story that he tells however was even more impressive. If for some reason he decides not to write anymore he would have a bright future as a voice actor as well. The narration was spot on. As a narrator I would put him in my top 5 favorites along side Michael Kramer, Kate Redding, Nick Pohdel, and Wil Wheaton.ConclusionThe Great Hearts by David Oliver is a must read for any fan of fantasy especially if you enjoy darker fantasy, a good coming of age story, or if you are just interested what it would be like to have a moose sized cat for a companion.\\\")' title='A must read gritty fantasy with a hint of sci-fi.' data-id='27'\/>\\n   <polygon points='249.61,243.71 244.89,248.52 241.26,243.86 237.64,239.20 234.01,234.54 230.39,229.88 226.76,225.22 223.14,220.56 225.97,217.68 229.91,222.02 233.85,226.36 237.79,230.70 241.73,235.03 245.67,239.37 249.61,243.71' fill='#1B0F3C' stroke='none' onclick='alert(\\\"A coming of age story (not my favourite theme) with two traumatised boys who survive the slaughter of their village. Written well enough to engage as the characters and story line are good. The story jumps  between present and past to recount their backstory but the jumps to present seemed a bit random but does give insight into the violent actions they carry out. So far so good but then the story enters the science fiction world and for me it ruins what was such a good story. Fans of the likes of Mark Lawrence will probably enjoy it but I was ultimately disappointed.\\\")' title='Great for 80% then turns to a sci-fi mash up' data-id='28'\/>\\n   <polygon points='276.64,291.27 272.63,294.83 268.51,298.22 265.46,293.55 262.41,288.88 259.37,284.21 256.32,279.53 253.27,274.86 250.23,270.19 247.18,265.52 244.13,260.85 241.09,256.18 238.04,251.51 234.99,246.83 231.95,242.16 228.90,237.49 225.85,232.82 222.81,228.15 219.76,223.48 222.81,220.87 226.17,225.27 229.54,229.67 232.90,234.07 236.27,238.47 239.63,242.87 242.99,247.27 246.36,251.67 249.72,256.07 253.09,260.47 256.45,264.87 259.82,269.27 263.18,273.67 266.55,278.07 269.91,282.47 273.27,286.87 276.64,291.27' fill='#0000FF' stroke='none' onclick='alert(\\\"The SPFBO 2018 contest has just started and this book is one of the 300 titles vying for the glory. Im glad to have read 2 of the competing books so early into the game.Is this book grimdark? coming of age? military? It seems to mix several genres into one in a gritty tale of two demon hunters called Caledan and his best friend Cassius as we see two stories unfold: their present day life as full-fledged Imperators that have pretty much forgone any remaining traces of humanity to become the Emperors killing machines and a much more jovial story of their childhood when they survive a horrid ambush in their rural village and end up escaping with a mysterious man only known as \\\"The Tracker\\\" and ultimately reaching a rural city named Forgoth.Caledan is the colder and more calculating of the two, whereas Cassius exudes a sense of gentle giant that wants to defend the weak. After realizing Tracker was in some way associated with the savages that killed their family and friends, Cassius convinces Caldean to forgive his life, taking advantage of his wits and how the mysterious man is willing to teach them a language neither one of the two groups speaks fluently along the way. During a siege from a pack of wolves, Caledan bumps into a strange mythical beast called a \\\"Great Heart\\\", a gigantic panther named Selys that has formed a powerful bond with him and wants to protect him at all costs.Being bonded with a mythical beast that makes Caledan impervious to most lethal wounds and adept at stealth soon attracts the attention of the kind hearted General Kyle of Forgoth who somewhat adopts the two boys and asks some of his men to teach them fighting skills and the commonly spoken Andurran language. A former pickpocket girl named Ella also joins the group and the three teenagers become close friends.The book seems to enjoy a reprieve of the darkness of the first few chapters, but it doesnt take long for Caledans skills to attract the attention of the Imperators, who bring them to the capital to meet the Emperor himself. They instantly accept the Emperors request to train as Imperators, and most of the rest of the novel focuses on their rosy tinted experience of the initial two years as Imperator students.We start to see flashes of the present day and realize the gentle and kind Cassius has been turned into a brutish killing machine with few memories of his past as he chases a group of demonic beasts alongside a bitter and cynical Caledan.The pacing of the story is great. I was constantly wondering what will happen next and if the book would remain as dark as the first 2 chapters (it tones things down for most of the novel). Despite the horrible memories, the two boys experience a very happy childhood training with Kyle and forming friendships with other aspiring Imperators. We initially meet a sugary wonderful Emperor, but present day Caledans disdain for the man proves that there is definitely more to him that seems to only see his Imperators as highly valuable tools for his more malignant schemes.The book is solely told via Caledans POV but it never feels tiring and I really liked the character. He knows there is a darkness to him that he somewhat accepts, but he still has a strong code of honor and genuinely cares about the people that are important to him. There are tons of unanswered questions to this book with a somewhat odd ending that will hopefully be answered in the possible sequel.This book was a very enjoyable and easygoing story and Im glad that I read it.\\\")' title='A great read!' data-id='29'\/>\\n   <polygon points='257.94,283.91 250.38,289.30 247.75,284.44 245.12,279.57 242.49,274.71 239.85,269.84 237.22,264.98 234.59,260.11 231.96,255.25 229.33,250.38 226.70,245.52 224.06,240.66 221.43,235.79 218.80,230.93 216.17,226.06 219.41,223.75 222.37,228.38 225.34,233.01 228.30,237.63 231.27,242.26 234.23,246.89 237.19,251.52 240.16,256.14 243.12,260.77 246.09,265.40 249.05,270.03 252.01,274.65 254.98,279.28 257.94,283.91' fill='#230EB9' stroke='none' onclick='alert(\\\"I discovered this book thanks to Amazons cool algorithms. The cover and the blurb are what drew me in and the excerpt I read convinced me that this was another gem in the rough. This book left me with many conflicting feelings but overall it\u2019s a debut that left me wanting more of David Oliver\u2019s work. Also a key aspect about this book, it\u2019s a whole lot of fun.The Great Hearts has a dual timeline plot and is narrated by Calidan Darkheart in both of those timelines. The first one is wherein we meet him and his giant friend Cassius who reveal themselves to be Imperators, the secret police\/hunter\/spies of the emperor. Calidan is a person who abhors his role, curses his emperor but yet sticks to his tasks for reasons not yet revealed.In the second timeline, we go back in the past and meet Calidan &amp; Cassius as young boys playing and being silly as young children can be. The readers find out how remote and simplistic their village life was and specifically what catastrophic event ruined their sanguine life. This event is the main thing that spurs both Cassius and Calidan to become Imperators and fight against what ruined their lives. This timeline takes up the major chunk (nearly 95% of the book) and it is the main timeline of this book. Both boys are forced to travel beyond their high mountains and towards the capital of the Anderal Empire. Amidst their travels, the readers will get to see how they meet someone that will embody the title of this debut as well learn how Calidan and Cassius get selected to be entered into the Imperator training school.With a mix of his self-deprecating as well as self-loathing narration,  we see Calidan\u2019s growth both physically and mentally as he learns what it truly means to be a soldier for the empire. The readers get a solid view into how brutal the training regime is set up to be, not just physically but psychologically as well. Thankfully the author manages to spare us the farmboy hero \/hero academy trope (to a solid degree but not entirely) and showcases Calidan to be a normal student who gets extra help (RAFO). The story then very quickly veers into action adventure setups and then ends on an action-packed climax which reveals a lot about the world. Im being very vague here as I dont want to spoil the books main plot.The characterization is the biggest plus point of the story as we get to see the world from Calidan\u2019s POV and in this regard, the story reminded me a lot of Kvothe in The Name Of The Wind and Vaelin in Blood Song. As it combined the orphan nature of Kvothe\u2019s existence as well the militaristic training of Vaelin\u2019s upbringing. The characterization is not on the same level as either The Name Of The Wind or Blood Song however its still competent enough that the readers wont feel bored. Mainly we get to see why and how Calidan gains entrance to the Imperator training school and that truly is the biggest surprise of the story. Even though this is a single person POV story, we are introduced top other characters who go beyond the two-dimensional mold. I suspect though there\u2019s a sequence during the training school which will raise the ire of certain readers but I feel the author handles the scene and its follow-up soundly.The action is truly one of the better things about the book as throughout the story, the author continuously amps up the action sequences and towards the end we get to see  a terrific climax. The world settings are enticing as in the start it seems like any other secondary fantasy world but the way the author reveals the final twist, it really puts the entire story in a whole new light. I enjoyed this aspect of the story and I love how the whole reveal just raises more questions. This story is all about mysteries and the biggest one is the title of the story and the mystery about the world (again being vague for spoiler reasons).Ive to give kudos to the author where its due as this being a debut book, it was fun and engrossing to read. The action is interspersed nicely and the story is solidly grimdark. Theres some horrific things which happen in the book and the author does his best in explaining the events. I understood the authors approach but theres might be some readers who might not be able to stomach it. Nonetheless the main characters refuse to be bogged down by their circumstances and I relished reading about them in that regard. Lastly the way the author ends the story, makes me want to the sequel ASAP. The story also ends on a cliffhanger and therefore some readers might not enjoy that part as well. I wasn\u2019t too thrilled either and I hope that the sequel explains a lot.Going onto the things that didnt quite work for me, the characterization while fun also leaves a few things lacking. While we get a solitary first-person POV from Calidan, I definitely felt that this story would have benefited from the multi-POV approach IMO. The final reveal about the world was really, really good but I wish the author had done some better build up to the climatic twist which would have helped rather than springing it all out of the blue (you\u2019ll understand when you read it). Also the titular characters history and background is never expounded upon beyond a few sentences and I hope the sequel rectifies that.CONCLUSION: The Great Hearts is an intriguing mix of dark fantasy, SF and something else that is spoilerific. I loved how David A. Oliver sets up the story and then springs some crucial surprises to knock down our expectations. This book is a whole lot of fun to read and I believe the author wanted the readers to experience it as such. The Great Hearts is a debut that has me excited to follow David\u2019s upcoming works. I sincerely hope he builds up on the elements introduced in this book and delivers a cracking sequel.\\\")' title='The Great Hearts is a mix of dark fantasy, SF and Indiana Jones-esque action adventure elements' data-id='30'\/>\\n   <polygon points='241.09,273.97 234.27,277.97 231.84,272.45 229.41,266.93 226.98,261.41 224.55,255.89 222.12,250.37 219.68,244.86 217.25,239.34 214.82,233.82 212.39,228.30 215.80,226.30 218.61,231.60 221.42,236.89 224.23,242.19 227.04,247.49 229.85,252.78 232.66,258.08 235.47,263.38 238.28,268.68 241.09,273.97' fill='#241178' stroke='none' onclick='alert(\\\"The Great Hearts is an engaging fantasy told from the first \u2013 person perspective of a teenage boy and containing elements akin to \u201cSuperman\u201d, \u201cJungle Book\u201d, and \u201cStar Wars\u201d.  The first comparison comes from the destruction of the protagonists family at the beginning of the story; the second for the prominence of non \u2013 human companionship and stewardship; and the third for the coming of age plot in which the boy enters the world of wizardry.  These comparisons are not meant to detract from the originality in any way.I particularly liked the Great Heart concept which refers mainly to an animal of magical prowess custom designed or appointed as a steward \/ guardian of a prodigy youth.  Any connection between virtuous animals and flawed people has the real world value of instilling proper ethics in our environmentally perverse society.  Oliver does a a fine job of letting the boy mature both with and without his \u201cassigned\u201d companion.My primary criticism for the work is its loose ends.  If you are one to read complete series, you will have no complaint at all.  I, however, prefer my books to be more stand \u2013 alone.  A good series need not closely link one volume to another.  A readers enthusiasm should suffice.  Deduct a star.  I am also very stingy about giving genre fiction 5 stars.  I mostly reserve that level for nonfiction, researched works. But for its ending, this is a 4 star book that the reader will enjoy, especially a series aficionado.\\\")' title='The Great Hearts is an engaging fantasy told from the first ...' data-id='31'\/>\\n   <polygon points='240.66,295.00 232.38,298.90 230.54,293.61 228.70,288.33 226.86,283.04 225.02,277.75 223.18,272.47 221.34,267.18 219.49,261.89 217.65,256.61 215.81,251.32 213.97,246.03 212.13,240.75 210.29,235.46 208.45,230.17 212.00,228.50 214.21,233.62 216.41,238.73 218.62,243.85 220.82,248.96 223.03,254.08 225.23,259.19 227.44,264.31 229.64,269.43 231.84,274.54 234.05,279.66 236.25,284.77 238.46,289.89 240.66,295.00' fill='#230EB9' stroke='none' onclick='alert(\\\"I listened to the audiobook version of \u201cThe Great Hearts\u201d, and I have to say I very much enjoyed both the story and David Oliver\u2019s narration. Even in his after-note at the end, he acknowledges that he\u2019s not a professional narrator, but still he did a fine job and I\u2019m a bit envious that he, as the author, dares to put voice to his own creation. Sure, there is the occasional, slight mis-step, but overall I found him more engaging and more listenable than some of the pro voice actors I\u2019ve heard.After a brief \u201cpresent day\u201d intro, the main character begins to narrate the events of his childhood, which quickly build to a particularly brutal turn of events. One particular instance, which I won\u2019t spoil by mentioning here, really made that chapter stand out above the rest; while the details weren\u2019t dwelled upon, and possibly some readers would glaze past them, I remembered what had previously been mentioned which made what occurred shortly after that much more monstrous. From there, we follow the main character and his childhood friend, plus another character and a mysterious giant telepathic intelligent cat, as they cross the harsh countryside, the months pass, and they toughen to their new environment. The story slows pace as the companions reach a city and enlist in military training; this section, interspersed with the occasional \u2018present day\u2019 return to the older MC, takes up about half of the book, but is not without plot and character progression. Many new characters enter the story, form friendships (and in one case an enemy who massively gets what\u2019s coming to him), and as they become a fighting unit the story branches beyond the training phase into the final act, which I\u2019m pleased to say took a slightly unexpected turn (using a theme I\u2019m a bit of a sucker for) and really opened up the lore and history of the world.The Great Hearts is a fun, engaging, sometimes dramatic, progressive story that\u2019s driven by the build and reveal of its own mysteries. It\u2019s a story that you won\u2019t regret taking a chance on. Four stars due to the occasional, small stumbles and the slightly too long training arc, but if I could fractionalise it I\u2019d give The Great Hearts a rating of 4.3, just not quite enough to tip the balance into 5-star territory, but still very much enjoyable, and certainly enough so for me to want a sequel.\\\")' title='I listened to the audiobook version of \u201cThe Great Hearts\u201d, and I have to say I very ...' data-id='32'\/>\\n   <polygon points='225.59,282.05 218.26,284.71 216.72,278.82 215.17,272.93 213.63,267.03 212.09,261.14 210.55,255.25 209.01,249.35 207.47,243.46 205.93,237.57 204.38,231.67 208.05,230.34 210.00,236.09 211.95,241.83 213.90,247.58 215.85,253.32 217.80,259.07 219.75,264.82 221.69,270.56 223.64,276.31 225.59,282.05' fill='#241178' stroke='none' onclick='alert(\\\"Great Hearts boasts great action sequences and vivid imagery as it tells the tale of two warriors destined to become imperators (sort of medieval super spy types). This story is primarily centered around these warriors youths, with infrequent flash forwards to show the men that they have become. This helps to create some tension as their past and present selves seem very different, alluding to future difficulties these men will face.I had two major qualms about the book- first, the ending. Without ruining it, Ill just say that some people will probably love it, but I thought that it was very out of keeping with the rest of the book. It felt like the author just threw in a major twist just because, without enough hints or references to even suggest to the reader that it was a possibility. Second, the author writes the heroes as if they are 18, not 11. Their decision making processes, what others are willing to let them do, and their maturity are all way off base for their age. Fine if you dont focus on it too much, but I could never quite do so.Overall, a good solid book, but it could have been so much better with a different ending and timeline.\\\")' title='Great Hearts boasts great action sequences and vivid imagery as ...' data-id='33'\/>\\n   <polygon points='226.41,320.42 221.42,321.83 216.39,323.04 215.37,317.39 214.36,311.75 213.35,306.11 212.34,300.47 211.33,294.83 210.32,289.19 209.31,283.55 208.30,277.91 207.29,272.27 206.28,266.63 205.27,260.99 204.26,255.35 203.25,249.70 202.23,244.06 201.22,238.42 200.21,232.78 203.97,231.80 205.37,237.34 206.78,242.88 208.18,248.42 209.58,253.96 210.98,259.49 212.38,265.03 213.79,270.57 215.19,276.11 216.59,281.65 217.99,287.19 219.39,292.73 220.80,298.26 222.20,303.80 223.60,309.34 225.00,314.88 226.41,320.42' fill='#0000FF' stroke='none' onclick='alert(\\\"Interesting read you start out in the wilderness fighting what appears to be a demon and the tale leads to something totally unexpected.\\\")' title='Interesting' data-id='34'\/>\\n   <polygon points='212.17,305.19 203.25,306.65 202.69,301.02 202.13,295.40 201.57,289.77 201.01,284.14 200.45,278.51 199.89,272.89 199.33,267.26 198.77,261.63 198.21,256.00 197.65,250.38 197.09,244.75 196.53,239.12 195.97,233.50 199.79,232.87 200.74,238.43 201.70,244.00 202.65,249.56 203.60,255.12 204.55,260.69 205.50,266.25 206.46,271.81 207.41,277.38 208.36,282.94 209.31,288.50 210.26,294.07 211.22,299.63 212.17,305.19' fill='#230EB9' stroke='none' onclick='alert(\\\"I was sent both a digital and audio copy of this book in return for a fair and honest review. This is my first book by this author (David Oliver). It is his debut book, and I was immediately drawn in by the stunning cover.The story primarily focuses on Calidan Darkheart, who is on a lifelong quest of revenge against the shadow demon that destroyed his childhood village and killed everyone except for him and his best friend Cassius.  Along the way, Calidan becomes bonded with Seya, a giant panther with extra-human abilities.  Calidan discovers that he shares a link with the mystical cat, gains supernatural sensory skills, and becomes an expert at stealth.  Meanwhile, Cassius is growing to extraordinary heights and trains to unstoppable fighting prowess.  All of this Calidan uses to hopefully find and inflict justice on the monster who ravaged his home.The book starts out with some very dark and graphic scenes where marauders kill, rape and eat villagers, in addition to performing ritualistic sacrifices.  Obviously Calidan and Cassius are traumatized, and they narrowly escape.  Shortly after the escape, they reluctantly team up with a tracker what they assume to be one of the marauders, who does not speak their language, but eventually help with survival skills.Where it goes from here, well, I guess you\u2019ll have to read it.  I will tell you this\u2026The book doesn\u2019t stay as dark as it began.  In fact, there are some very light-hearted scenes, especially those where Seya is toying around with Calidan, both physically and verbally.  There are also some scenes with playful banter with the new characters that they meet when the become Imperators in training.That\u2019s not to say that the only dark part is the beginning.  At one point Calidan brutally kills someone with his bare hands.  In another scene, there is an attempted rape.  To name a few.I think that is where I struggled the most with the book.  It almost felt like it needed more of an identity.  There were too many light-hearted scenes to consider this book dark fantasy.  It wasn\u2019t simply a coming-of-age story rooted in a dark past.And then, 3\/4 of the way through the book, it took a huge 180-degree shift.  I was left with my head spinning with that one.  Again, you\u2019ll just have to read it.Overall this was an enjoyable book, if not a little difficult to stay with at times.  It felt like a roller coaster ride where I was constantly feeling every curve of the track, afraid I was going to be thrown out of the car.  But it was exciting.I think if this book stayed a little truer to itself and didn\u2019t try to throw me out of the way at times I would have liked it more.  As it stands, it was a good book.  It had plenty of intense scenes.  The characters were developed well and there were both very likeable and very despicable ones, too.For a debut book, I think Mr. Oliver showed some signs of greatness.  It is curious to see where he will go from here.  As one final comment, hats off to the author for doing his own narrating of his audio book.  It was done reasonably well and did not hinder the experience.Thank you, David, for sending this to me. Well done! 4.2 \/ 5 stars.\\\")' title='A great debut' data-id='35'\/>\\n   <polygon points='202.26,306.77 193.26,307.38 193.14,301.72 193.02,296.06 192.90,290.40 192.78,284.74 192.66,279.08 192.54,273.42 192.42,267.76 192.30,262.11 192.17,256.45 192.05,250.79 191.93,245.13 191.81,239.47 191.69,233.81 195.54,233.55 196.06,239.18 196.58,244.81 197.09,250.44 197.61,256.07 198.13,261.71 198.64,267.34 199.16,272.97 199.68,278.60 200.19,284.24 200.71,289.87 201.23,295.50 201.74,301.13 202.26,306.77' fill='#230EB9' stroke='none' onclick='alert(\\\"This review was originally posted on BookNest.eu.Disclaimer: I received this novel for free in exchange for an honest review. This exchange is a part of r\/fantasy\u2019s TBRIndr database, whose purpose is to popularise independently published works of fantasy.Warning: This novel contains the portrayal of cannibalism, rape and a few more mainstays of grimdark fantasy.The Great Hearts is a grim-dark fantasy novel with a pinch of sword\u2019n\u2019sorcery, seasoned with the barest hints of sci-fi towards the end. It is the first of a series of books centred around a pair of Imperators, Calidan Darkheart and Casius, his childhood friend.If you\u2019re unclear on the meaning behind the title of Imperator, have a look at the blurb:Calidan Darkheart is an Imperator. The voice of the Emperor in the wild. A secretive and dangerous job, hunting down those deemed a threat to the Emperors rule...whether monster or man. Twisted and bitter, he heads down a dark path to hunt a nightmare from his youth.This is his story.Promising enough, that. In fact, if I had to use a single word to describe \u2018The Great Hearts,\u2019 I would call it promising.  A great many good ideas are to be found in this novel; however, they are bogged down by several problems I will touch upon during the length of this review.To this purpose, welcome to The Good, The Bad, and The Meh! In these three sections, I\u2019ve broken down everything I liked, disliked or was utterly indifferent towards in \u2018The Great Hearts\u2019!THE BAD:*The modifiers: A good modifier at the right time can paint the most vivid scenes in the reader\u2019s mind. When adjectives and adverbs are used too often, the result is a rather more dense body of text which pulled me out of the world rather than gripping me. There\u2019s no need to describe the shout of men chasing children around a forest for hours or days as angry; everything else in the scene already speaks to that emotion. This is but one of many examples I*The punctuation: A lot of commas are missing, which caused misunderstandings during my read, forcing me to go back and reread a sentence or an entire paragraph in order to figure out what the author meant.*(Un)Intentional Misdirection? The novel the blurb presents is different from the one I read. Where I first thought the story would follow an older Calidan who has already become an Imperator, I was surprised when the author chose to recount not only the event that led our protagonist on this dark path but recounted most of his training and first trial, as well. The time spent with the older Calidan, the one I thought the story would be about, is less than 10% of the entire novel, in fact.THE MEH:*Unnecessary explanations: Several times, Calidan goes into detailed descriptions of events that the reader is capable of intuiting on their own.*A very open ending: I\u2019m a sucker for the good old-fashioned cliffhanger but \u2018The Great Hearts\u2019 doesn\u2019t so much end on one as it just\u2026stops. The bad taste that left was somehow offset by an interesting Epilogue.*Character Interaction: While most of it is good, I couldn\u2019t help but feel that the dialogue would occasionally veer off into the realm of exposition at the cost of characters\u2019 unique voices. This doesn\u2019t pop up too often at all, but it\u2019s noticeable enough.THE GOOD:*The Battle Scenes: David Oliver\u2019s writing is at its best when he\u2019s writing action scenes. With hardly any adjectives out of place, the combat is kinetic and well-described. Whenever fights broke out, I was glued to the screen.*The Shift in Tone: Over the last few months, I\u2019ve read some indie grimdark fantasy books that were dark for darkness\u2019 sake. Even to someone who enjoys the genre, the constant barrage of hopelessness can get exhausting. That\u2019s why I was very pleased when, after a bleak opening, \u2018The Great Hearts\u2019 switches gears and becomes a lot lighter, for a time. This shift in tone is done well and never felt unwelcome or unearned.*A likeable Cast: Just about every single one of the side characters was likeable, even if some could use more development over the next instalment. Cassius and Calidan are two well-developed characters, very different from one another but connected by the strongest bonds of friendship. The Great Heart herself is a gigantic panther, and Calidan\u2019s animal companion.As a side note, I will admit that I was surprised by how nice some high-ranking military men were to a bunch of 11-12-year-old kids.A lot is going on in this novel. I commend David Oliver for a first novel rich with ideas, and I am looking forward to seeing where the story goes next. All the complaints I have can be taken care of, as the author grows more experienced, as well as with another draft or two.You\u2019ll enjoy this book if you are:*A fan of dark coming-of-age stories;*A grimdark aficionado;*A very large panther looking for companionship;*And more! Prob\u2019ly. SCORE: 3\/5 Stars! (Goodreads Rating, I like it).\\\")' title='A lot of promise, bogged down by technical issues' data-id='36'\/>\\n   <polygon points='192.51,325.80 187.36,325.77 182.22,325.53 182.54,319.79 182.86,314.05 183.19,308.32 183.51,302.58 183.84,296.84 184.16,291.10 184.48,285.36 184.81,279.62 185.13,273.89 185.46,268.15 185.78,262.41 186.10,256.67 186.43,250.93 186.75,245.19 187.08,239.46 187.40,233.72 191.26,233.82 191.34,239.57 191.42,245.32 191.50,251.06 191.57,256.81 191.65,262.56 191.73,268.31 191.81,274.06 191.89,279.81 191.97,285.56 192.04,291.30 192.12,297.05 192.20,302.80 192.28,308.55 192.36,314.30 192.43,320.05 192.51,325.80' fill='#0000FF' stroke='none' onclick='alert(\\\"This is the first book i have from Mr.Oliver and I am glad I have it a 2nd look. It kept me on the edge. The world building is outstanding. Characters are so very well developed. If you love a great fantasy, do not pass this book up.\\\")' title='Could not put it down!' data-id='37'\/>\\n   <polygon points='182.25,307.09 173.30,306.02 174.05,300.42 174.81,294.82 175.57,289.22 176.32,283.62 177.08,278.02 177.84,272.42 178.59,266.82 179.35,261.22 180.11,255.62 180.86,250.02 181.62,244.42 182.38,238.82 183.13,233.22 186.97,233.69 186.61,239.33 186.25,244.98 185.88,250.63 185.52,256.27 185.16,261.92 184.79,267.57 184.43,273.21 184.07,278.86 183.71,284.51 183.34,290.15 182.98,295.80 182.62,301.45 182.25,307.09' fill='#230EB9' stroke='none' onclick='alert(\\\"I\u2019ve been reading quite a lot of books this year and after a while they tend to melt into each other. So when you come across a book which you can\u2019t stop thinking about, then that\u2019s something. I\u2019m quite sure I didn\u2019t enjoy my next read quite as much as I should have, because my mind was still lingering on this one.The Great Hearts is Calidan and Cassius\u2019 story, followed by Calidan\u2019s POV in first person. They are childhood friends, or more like brothers, really. They lose their family and their home during a horrible night which no children should witness. This pretty much sets the tone for the book, bordering on grimdark but not quite overstepping the line. So Calidan and Cassius has to get as far away as they can and survive in the forest without any weapons or knowledge where to go. Circumstances make them team up with a mysterious figure, whom they only call Tracker for obvious reasons. The little \u201cfamily\u201d forms finally when Seya, the giant panther arrives in their lives and bonds with Calidan. Seya is something people refer to as a Great Heart, although no one really knows much about them: where did they come from? How many there are out there? How they choose whom to bond with? We\u2019ll get some answers by the end, but\u2026 okay, I\u2019ll get back to this. Suffice to say Calidan\u2019s senses become stronger giving him an advantage against others, plus drawing from Seya\u2019s power, she can heal him from almost anything.\u201cThe ecstasy I felt in my stomach as she was groomed was incredibly intense and made for an awkward moment when I practically purred instead of responding to a pretty nurse\u2019s question.\u201dTheir lives get a turn for the better and get admitted to an Academy thanks to a general named Kane and a military leader Tyrant who teaches team a form of martial art called Kaschan.\u201cThe fluid movements of the systemare meant to account for different weapon styles, the spinning use of a greatsword moving in sync with the more delicate moves of a dual blade wielder for instance. Much like dancing, the system works better with a partner, steps moving in sync, bodies moving as one; enemies falling like wheat to the scythe.\u201dWhen they learn about his bond with Seya, Calidan learns that he has no choice of what he wants to become: he has to train to be an Imperator, the voice of the Emperor, whose job is to hunt down those who break the law, and fight against dark powers. On one hand, I really liked the concept of the Academy: 8 students lived together and formed a team from the beginning of their studies until the end. They not only lived, but laughed, cried, fought together, helping each other along the way. They had become the family Calidan and Cassius lost on that dreadful night. On the other hand this Academy is brutal, and though does not encourage the kids to be cruel to each other but doesn\u2019t really stop them. And when something happens, they chalk it up to \u201cwell, that\u2019s how the world works, get used to it, you are going to face worse things\u201d. Based on other\u2019s opinions this point in the story might be an instant turn off for some people.Until about the 70% mark we follow Calidan and his friends as they easy into the routine of their lives in the Academy, as well as glimpses into his life in the present, making into a coming of age story. Then we follow them as they are going on an expedition with some of their teachers and some Imperators. This is where things get\u2026 strange. They seek knowledge about the Great Hearts, trying to understand where they come from and what they really are. What they find is something I totally didn\u2019t see coming and caught my unaware. From this point on things get a bit rushed and ends with a cliffhanger. Also, we are left behind with some questions and though in some cases we can guess what might have happened, I would have liked some explanation and a less sudden ending.I liked young Calidan and the way he coped with the circumstances. He is a real survivor type, but he also has a big heart. He cares about Cassius and Seya as well as the others in his team later on. Since we spend the most time in his head, it\u2019s easy to sympathize with him, but on the other hand we don\u2019t get to know the other characters much. The most memorable \u2013 apart from Saya of course, it\u2019s hard to forget a big ass black panther \u2013 is the Emperor himself with his friendly demeanor and good heart. Probably. And one other character about whom I won\u2019t talk here.The Great Hearts is an interesting debut dark fantasy book, which needs a bit of polishing, but otherwise has some nice qualities: it\u2019s a coming of age story with intriguing characters, gritty scenes and a great potential. It\u2019s far for being perfect, but I\u2019m interested what will come out of this series.\\\")' title='It\u2019s a coming of age story with intriguing characters, gritty scenes and a great potential' data-id='38'\/>\\n   <polygon points='169.71,324.02 164.63,323.04 159.60,321.83 160.81,316.24 162.02,310.64 163.22,305.05 164.43,299.46 165.64,293.86 166.85,288.27 168.05,282.68 169.26,277.08 170.47,271.49 171.67,265.89 172.88,260.30 174.09,254.71 175.30,249.11 176.50,243.52 177.71,237.92 178.92,232.33 182.71,233.15 181.90,238.83 181.08,244.51 180.27,250.19 179.46,255.87 178.64,261.55 177.83,267.23 177.02,272.91 176.21,278.59 175.39,284.27 174.58,289.95 173.77,295.63 172.96,301.31 172.14,306.99 171.33,312.66 170.52,318.34 169.71,324.02' fill='#0000FF' stroke='none' onclick='alert(\\\"A really great first book, very much enjoyed the audiobook\\\")' title='What a fantastic book to listen to' data-id='39'\/>\\n   <polygon points='158.49,321.54 153.51,320.08 148.59,318.40 150.23,312.94 151.87,307.48 153.50,302.02 155.14,296.56 156.78,291.10 158.42,285.64 160.05,280.18 161.69,274.72 163.33,269.26 164.97,263.80 166.60,258.35 168.24,252.89 169.88,247.43 171.52,241.97 173.15,236.51 174.79,231.05 178.50,232.22 177.25,237.80 176.00,243.38 174.75,248.97 173.50,254.55 172.25,260.13 171.00,265.71 169.75,271.30 168.50,276.88 167.24,282.46 165.99,288.04 164.74,293.63 163.49,299.21 162.24,304.79 160.99,310.37 159.74,315.95 158.49,321.54' fill='#0000FF' stroke='none' onclick='alert(\\\"I was given a copy of the audiobook by the author, but loved it so much that I bought a copy myself. As someone who doesnt usually read fantasy I wasnt sure what to expect, but loved it. The characters were really engaging and David really brings them to life. I cant wait for the next book.\\\")' title='Fantastic debut novel' data-id='40'\/>\\n   <polygon points='147.51,318.00 142.66,316.08 137.89,313.95 139.94,308.67 142.00,303.38 144.05,298.10 146.11,292.81 148.17,287.52 150.22,282.24 152.28,276.95 154.33,271.66 156.39,266.38 158.44,261.09 160.50,255.81 162.55,250.52 164.61,245.23 166.67,239.95 168.72,234.66 170.78,229.38 174.38,230.90 172.70,236.34 171.02,241.78 169.34,247.23 167.66,252.67 165.98,258.12 164.30,263.56 162.62,269.01 160.94,274.45 159.26,279.89 157.58,285.34 155.91,290.78 154.23,296.23 152.55,301.67 150.87,307.12 149.19,312.56 147.51,318.00' fill='#0000FF' stroke='none' onclick='alert(\\\"The Great Hearts by David Oliver tells the incredible tale of Calidan the Imperator.  Calidan had been raised to be a murderer and a monster that slays in the name of the Emperor, but this is really a story about redemption.  Oliver\u2019s characters are great and his writing is engrossing making this a journey that is well worth taking!\\\")' title='A dark and noble journey well worth taking' data-id='41'\/>\\n   <polygon points='136.84,313.45 132.16,311.08 127.57,308.51 130.03,303.44 132.49,298.37 134.95,293.29 137.40,288.22 139.86,283.15 142.32,278.07 144.78,273.00 147.24,267.92 149.70,262.85 152.16,257.78 154.61,252.70 157.07,247.63 159.53,242.56 161.99,237.48 164.45,232.41 166.91,227.34 170.38,229.19 168.29,234.46 166.19,239.72 164.09,244.99 162.00,250.25 159.90,255.52 157.80,260.79 155.71,266.05 153.61,271.32 151.51,276.59 149.42,281.85 147.32,287.12 145.22,292.39 143.13,297.65 141.03,302.92 138.93,308.19 136.84,313.45' fill='#0000FF' stroke='none' onclick='alert(\\\"Good character building, presented different views to traumatic events (interesting), and this reader will be very angry if anything happens to the \\\"cat\\\" !\\\")' title='Great Tale ! ! !' data-id='42'\/>\\n   <polygon points='134.56,291.76 126.81,286.69 129.61,281.94 132.41,277.19 135.21,272.44 138.01,267.69 140.81,262.94 143.61,258.19 146.41,253.44 149.21,248.69 152.01,243.94 154.81,239.19 157.61,234.44 160.41,229.69 163.21,224.94 166.53,227.11 164.07,232.08 161.61,237.06 159.15,242.03 156.69,247.00 154.23,251.98 151.77,256.95 149.31,261.92 146.85,266.89 144.39,271.87 141.93,276.84 139.47,281.81 137.01,286.78 134.56,291.76' fill='#230EB9' stroke='none' onclick='alert(\\\"Originally, I threw this book in my read pile on a whim, but was quickly drawn in. It follows a similar base of Dawn of Wonder, Name of the Wind, and Shadow of a Slave with a boy who has his coming of age in a wild and mysterious adventure.The characters are endearing, minus a few background ones. The action is quick and makes the book flow really nicely. Im eagerly looking forward to continuing the series.\\\")' title='An entertaining new look at a well versed trope' data-id='43'\/>\\n   <polygon points='144.41,255.38 139.18,251.25 142.60,246.41 146.03,241.57 149.45,236.73 152.87,231.89 156.29,227.05 159.71,222.20 162.85,224.68 159.78,229.80 156.70,234.91 153.63,240.03 150.56,245.15 147.49,250.27 144.41,255.38' fill='#1B0F3C' stroke='none' onclick='alert(\\\"The prose is good, the battles are well described, and some sections hold your attention, but often it just drags. The ending could have worked, all the material was there, it just needed to be placed better.\\\")' title='Promising, could be enjoyable with better plotting and pacing' data-id='44'\/>\\n   <polygon points='138.62,250.77 133.73,246.17 137.51,241.66 141.30,237.16 145.09,232.66 148.87,228.16 152.66,223.65 156.44,219.15 159.38,221.91 155.92,226.72 152.46,231.53 149.00,236.34 145.54,241.15 142.08,245.96 138.62,250.77' fill='#1B0F3C' stroke='none' onclick='alert(\\\"Being in a seemingly eternal quest to find adult fantasy books, I thought I had hit the jackpot with this one. The first chapter quickly set the tone with some adult themes, and I became hopeful. When the next chapter pulled off the typical, \\\"but it wasnt always like that...\\\" maneuver and became a formulaic, YA growing-up story, I still thought I had an entertaining read on my hands, even if that wasnt my original intent. Sadly, not even a passable YA story is to be found here.Clearly the author intended to write a book geared towards adults.  However, setting out to do something and actually doing it is not the same. His characters are one dimensional, and the dialogue is so simplistic, its almost childish. The humor is bland, and the banter is something out of a Harry Potter book. The good guys are good in every aspect: they are considerate, kind, strong, etc. The bad guys are \\\"muahaha\\\" bad. The fact that I can even make a distinction between good and bad so concisely its an issue in itself.If this book would have removed the adult themes, it could have been a perfect childrens\/intro fantasy book. As it stands, there are better ones in every category: adult, YA, and children. Avoid.\\\")' title='Adult themes in a simplistic (almost childish) story' data-id='45'\/>\\n   <polygon points='98.82,285.83 95.14,281.87 91.60,277.75 95.46,273.88 99.33,270.01 103.19,266.14 107.05,262.26 110.92,258.39 114.78,254.52 118.65,250.65 122.51,246.78 126.37,242.90 130.24,239.03 134.10,235.16 137.96,231.29 141.83,227.42 145.69,223.55 149.55,219.67 153.42,215.80 156.13,218.83 152.55,223.02 148.96,227.20 145.38,231.39 141.80,235.58 138.22,239.77 134.64,243.95 131.06,248.14 127.48,252.33 123.89,256.52 120.31,260.70 116.73,264.89 113.15,269.08 109.57,273.27 105.99,277.45 102.41,281.64 98.82,285.83' fill='#0000FF' stroke='none' onclick='alert(\\\"Well written book with fast flowing storyline.  This book has amazing characters that you immediately feel a connection to.  Cant wait for the next book!\\\")' title='Excellent Book!' data-id='46'\/>\\n   <polygon points='128.21,240.00 124.11,234.55 128.53,230.82 132.96,227.09 137.39,223.36 141.81,219.63 146.24,215.91 150.67,212.18 153.13,215.45 148.98,219.54 144.82,223.63 140.67,227.72 136.52,231.82 132.36,235.91 128.21,240.00' fill='#1B0F3C' stroke='none' onclick='alert(\\\"The writer lost my interest the main charter (who has already established as a psychotic  assassin) bonded with a big kitty\\\")' title='DNF' data-id='47'\/>\\n   <polygon points='83.57,267.09 80.55,262.50 77.70,257.78 82.11,254.69 86.52,251.60 90.92,248.51 95.33,245.41 99.73,242.32 104.14,239.23 108.55,236.14 112.95,233.05 117.36,229.96 121.77,226.86 126.17,223.77 130.58,220.68 134.99,217.59 139.39,214.50 143.80,211.40 148.21,208.31 150.41,211.80 146.23,215.26 142.05,218.71 137.88,222.17 133.70,225.63 129.52,229.08 125.34,232.54 121.17,235.99 116.99,239.45 112.81,242.90 108.63,246.36 104.46,249.81 100.28,253.27 96.10,256.72 91.93,260.18 87.75,263.64 83.57,267.09' fill='#0000FF' stroke='none' onclick='alert(\\\"Ive read read this great story line and was over joyed at the beautiful way this author put everything together with the flow and the main characters were believable in the crazy situations they find themselves in though out the the story but the author had me turning pages all night this is a great book and I was totally surprised Ive been waiting patiently for the next book but I havent seen a thing hopefully the author will put one out this year and i cant wait hopefully you will enjoy this book as much as I God bless and happy New year !!\\\")' title='Awesome story !!!' data-id='48'\/>\\n   <polygon points='91.27,246.96 86.78,238.36 91.34,235.73 95.90,233.11 100.46,230.48 105.02,227.86 109.58,225.23 114.14,222.61 118.70,219.98 123.26,217.35 127.82,214.73 132.38,212.10 136.94,209.48 141.50,206.85 146.06,204.23 147.98,207.91 143.62,210.92 139.25,213.92 134.89,216.92 130.53,219.93 126.17,222.93 121.80,225.93 117.44,228.94 113.08,231.94 108.72,234.94 104.35,237.95 99.99,240.95 95.63,243.95 91.27,246.96' fill='#230EB9' stroke='none' onclick='alert(\\\"Very good hook. Some of the book was excellent , some of it kinda childish .I loved the back story . Really , really well done. The beginning was by far the best of the book.  I enjoyed the twists and turns.Very good read .\\\")' title='Robuster' data-id='49'\/>\\n   <polygon points='71.44,245.77 69.18,240.68 67.10,235.50 71.92,233.28 76.74,231.06 81.56,228.84 86.38,226.61 91.20,224.39 96.02,222.17 100.84,219.95 105.66,217.73 110.49,215.51 115.31,213.28 120.13,211.06 124.95,208.84 129.77,206.62 134.59,204.40 139.41,202.18 144.23,199.96 145.86,203.81 141.21,206.43 136.56,209.05 131.91,211.68 127.25,214.30 122.60,216.92 117.95,219.54 113.30,222.17 108.65,224.79 104.00,227.41 99.35,230.04 94.70,232.66 90.04,235.28 85.39,237.90 80.74,240.53 76.09,243.15 71.44,245.77' fill='#0000FF' stroke='none' onclick='alert(\\\"Its an easy read and does a slightly different take on the tried and true fantasy genre. Reads somewhat like a graphic novel. Im hoping that book two will go more into detail about the various  powers and abilities if the Imperators.\\\")' title='Different take on Fantasy' data-id='50'\/>\\n   <polygon points='66.66,234.34 64.80,229.05 63.13,223.69 68.11,221.93 73.08,220.17 78.06,218.41 83.04,216.65 88.01,214.89 92.99,213.13 97.96,211.37 102.94,209.61 107.91,207.85 112.89,206.09 117.86,204.33 122.84,202.57 127.82,200.81 132.79,199.05 137.77,197.29 142.74,195.53 144.07,199.52 139.23,201.70 134.39,203.87 129.55,206.05 124.71,208.22 119.88,210.40 115.04,212.58 110.20,214.75 105.36,216.93 100.53,219.10 95.69,221.28 90.85,223.46 86.01,225.63 81.17,227.81 76.34,229.98 71.50,232.16 66.66,234.34' fill='#0000FF' stroke='none' onclick='alert(\\\"Nice adventure\/revenge book with some depth.I was pleasantly surprised. Just be aware youll have to read the next one to know more.\\\")' title='Unique' data-id='51'\/>\\n   <polygon points='62.79,222.49 61.35,217.05 60.10,211.56 65.19,210.27 70.29,208.98 75.38,207.70 80.47,206.41 85.57,205.13 90.66,203.84 95.76,202.55 100.85,201.27 105.95,199.98 111.04,198.69 116.13,197.41 121.23,196.12 126.32,194.84 131.42,193.55 136.51,192.26 141.61,190.98 142.61,195.08 137.62,196.79 132.64,198.51 127.65,200.22 122.66,201.93 117.67,203.65 112.68,205.36 107.69,207.07 102.70,208.79 97.71,210.50 92.72,212.21 87.73,213.93 82.74,215.64 77.75,217.35 72.76,219.07 67.78,220.78 62.79,222.49' fill='#0000FF' stroke='none' onclick='alert(\\\"Enjoyed this book a lot.  Read it pretty much straight through.  I can tell when I like an authors work because when I look at the percent  left I am dissapounted the closer I get to the end.  Good detail and character building without devolving into boring minutiae.  I find the world the author is constructing fascinating.  I am looking forward to the next book.  Thank You to the Author!\\\")' title='Excellent Characters and World Building!!' data-id='52'\/>\\n   <polygon points='92.51,202.40 91.14,194.04 96.66,193.19 102.18,192.33 107.70,191.47 113.22,190.62 118.74,189.76 124.26,188.91 129.78,188.05 135.30,187.19 140.83,186.34 141.51,190.52 136.07,191.84 130.62,193.16 125.18,194.48 119.73,195.80 114.29,197.12 108.85,198.44 103.40,199.76 97.96,201.08 92.51,202.40' fill='#241178' stroke='none' onclick='alert(\\\"a very good story with an outstanding beginning and well plotted, but i do not like the back and forth between past and present. It is exceedingly annoying and off-putting.\\\")' title='Flashbacks: big no-no 4 me' data-id='53'\/>\\n   <polygon points='124.19,188.28 123.71,182.64 129.27,182.31 134.84,181.97 140.41,181.64 140.77,185.87 135.24,186.67 129.71,187.48 124.19,188.28' fill='#000000' stroke='none' onclick='alert(\\\"Wow. What a disappointment.  Cliche-ridden, poorly crafted story and spattered with amateur combat descriptions. This is an awful book and should be avoided.\\\")' title='Bad, bad book' data-id='54'\/>\\n   <polygon points='56.85,185.40 56.71,179.73 56.77,174.07 62.00,174.25 67.22,174.42 72.44,174.60 77.67,174.78 82.89,174.96 88.12,175.14 93.34,175.31 98.56,175.49 103.79,175.67 109.01,175.85 114.24,176.03 119.46,176.21 124.69,176.38 129.91,176.56 135.13,176.74 140.36,176.92 140.39,181.17 135.17,181.43 129.94,181.70 124.72,181.96 119.50,182.22 114.28,182.49 109.06,182.75 103.84,183.02 98.62,183.28 93.40,183.55 88.18,183.81 82.95,184.07 77.73,184.34 72.51,184.60 67.29,184.87 62.07,185.13 56.85,185.40' fill='#0000FF' stroke='none' onclick='alert(\\\"Well written story jumps around a bit between past and present. Good character development with depth. I really enjoyed enjoyed this book. Its worth the read. Im impressed at how well the book flowed especially for a first time author. Looking forward to more\\\")' title='Grabs you from the start' data-id='55'\/>\\n   <polygon points='73.52,173.54 74.23,163.65 79.34,164.31 84.45,164.97 89.56,165.63 94.67,166.29 99.78,166.95 104.89,167.60 110.01,168.26 115.12,168.92 120.23,169.58 125.34,170.24 130.45,170.90 135.56,171.55 140.67,172.21 140.37,176.45 135.23,176.22 130.09,176.00 124.95,175.78 119.80,175.55 114.66,175.33 109.52,175.10 104.38,174.88 99.23,174.66 94.09,174.43 88.95,174.21 83.81,173.98 78.67,173.76 73.52,173.54' fill='#230EB9' stroke='none' onclick='alert(\\\"Thanks for the good read; some parts were like driving on a twisty road at speed, you have to pay attention.\\\")' title='Review' data-id='56'\/>\\n   <polygon points='90.94,164.86 92.20,156.47 97.66,157.70 103.12,158.93 108.58,160.17 114.05,161.40 119.51,162.63 124.97,163.86 130.43,165.09 135.89,166.32 141.35,167.55 140.73,171.74 135.19,170.98 129.66,170.21 124.13,169.45 118.60,168.68 113.07,167.92 107.54,167.15 102.00,166.39 96.47,165.62 90.94,164.86' fill='#241178' stroke='none' onclick='alert(\\\"It kept my interest and had several different takes to the usual adventure fantasy books.  There were quite a few punctuation and spelling errors (when did authors lose the ability to discern the difference between then and than?) and I got very tired of the \u201cdark foreshadowing\u201d at the end of nearly every chapter.  However, like I said, the story line was different and kept my interest.  I\u2019ll grab the next installment of the series and see if there is any improvement.\\\")' title='Not bad' data-id='57'\/>\\n   <polygon points='59.66,147.85 60.84,142.34 62.20,136.88 67.22,138.51 72.23,140.14 77.24,141.77 82.25,143.40 87.26,145.03 92.28,146.66 97.29,148.29 102.30,149.92 107.31,151.55 112.32,153.19 117.34,154.82 122.35,156.45 127.36,158.08 132.37,159.71 137.38,161.34 142.40,162.97 141.44,167.09 136.33,165.89 131.22,164.68 126.11,163.48 121.00,162.28 115.89,161.08 110.78,159.88 105.66,158.67 100.55,157.47 95.44,156.27 90.33,155.07 85.22,153.87 80.11,152.66 75.00,151.46 69.89,150.26 64.78,149.06 59.66,147.85' fill='#0000FF' stroke='none' onclick='alert(\\\"There are a dozen books now that I regret not writing a review .... one of my best reads..... must read\\\")' title='Fantastic..... I don&amp;#39;t write reviews' data-id='58'\/>\\n   <polygon points='62.53,135.67 64.13,130.28 65.92,124.97 70.78,127.07 75.65,129.16 80.52,131.26 85.38,133.35 90.25,135.45 95.12,137.55 99.98,139.64 104.85,141.74 109.72,143.83 114.59,145.93 119.45,148.03 124.32,150.12 129.19,152.22 134.05,154.32 138.92,156.41 143.79,158.51 142.52,162.52 137.52,160.84 132.52,159.16 127.52,157.49 122.52,155.81 117.52,154.13 112.52,152.45 107.53,150.77 102.53,149.09 97.53,147.42 92.53,145.74 87.53,144.06 82.53,142.38 77.53,140.70 72.53,139.03 67.53,137.35 62.53,135.67' fill='#0000FF' stroke='none' onclick='alert(\\\"Looking forward for the next.cliffhanger of an ending. Sci-fi and fantasy fiction combined superbly. Absolutely loved the book. Must be read by fantasy fans.\\\")' title='Great book.' data-id='59'\/>\\n   <polygon points='66.34,123.80 68.35,118.58 70.54,113.46 75.23,116.00 79.91,118.55 84.60,121.09 89.29,123.64 93.97,126.19 98.66,128.73 103.34,131.28 108.03,133.82 112.72,136.37 117.40,138.91 122.09,141.46 126.78,144.01 131.46,146.55 136.15,149.10 140.83,151.64 145.52,154.19 143.95,158.07 139.09,155.93 134.24,153.78 129.39,151.64 124.54,149.50 119.69,147.36 114.84,145.22 109.99,143.08 105.14,140.93 100.29,138.79 95.44,136.65 90.59,134.51 85.74,132.37 80.89,130.22 76.04,128.08 71.19,125.94 66.34,123.80' fill='#0000FF' stroke='none' onclick='alert(\\\"I definitely recommend this books. From start till end  not a boring moment. I couldnt put it down. Loved it\\\")' title='Wow  amazing' data-id='60'\/>\\n   <polygon points='71.05,112.33 73.46,107.32 76.04,102.42 80.51,105.40 84.98,108.37 89.45,111.35 93.93,114.33 98.40,117.30 102.87,120.28 107.34,123.26 111.81,126.24 116.28,129.21 120.76,132.19 125.23,135.17 129.70,138.14 134.17,141.12 138.64,144.10 143.11,147.07 147.58,150.05 145.71,153.77 141.05,151.18 136.38,148.59 131.71,146.00 127.05,143.41 122.38,140.82 117.71,138.23 113.05,135.64 108.38,133.05 103.72,130.46 99.05,127.87 94.38,125.28 89.72,122.69 85.05,120.10 80.38,117.51 75.72,114.92 71.05,112.33' fill='#0000FF' stroke='none' onclick='alert(\\\"I really enjoy the authors style. First book was all about character development and the second book really sets up the storyline. Hopefully there are many more to come.\\\")' title='Fantastic story line and character development' data-id='61'\/>\\n   <polygon points='76.64,101.34 79.43,96.58 82.38,91.94 86.60,95.33 90.83,98.71 95.05,102.10 99.27,105.49 103.50,108.87 107.72,112.26 111.95,115.64 116.17,119.03 120.39,122.42 124.62,125.80 128.84,129.19 133.07,132.58 137.29,135.96 141.51,139.35 145.74,142.73 149.96,146.12 147.81,149.65 143.36,146.63 138.91,143.61 134.46,140.59 130.02,137.57 125.57,134.55 121.12,131.53 116.67,128.52 112.22,125.50 107.77,122.48 103.33,119.46 98.88,116.44 94.43,113.42 89.98,110.40 85.53,107.38 81.09,104.36 76.64,101.34' fill='#0000FF' stroke='none' onclick='alert(\\\"Really fantastic idea for a relationship between the protagonist and an animal companion in a fantasy series.\\\")' title='Great beginning to a fantasy series' data-id='62'\/>\\n   <polygon points='123.35,123.81 127.38,118.30 131.59,122.32 135.80,126.34 140.01,130.36 144.22,134.38 148.43,138.41 152.63,142.43 150.21,145.74 145.74,142.09 141.26,138.43 136.78,134.78 132.31,131.12 127.83,127.47 123.35,123.81' fill='#1B0F3C' stroke='none' onclick='alert(\\\"I saw the graphic cover,  i read the first chapter and both excited me that this was a mature book that has the gore,  adventure and storyline that has me reading a series in a few days. But alas,  it was not meant to be. The first chapter felt like a 10 year old telling you a story without even taking a breath. By the end of chapter,  I had to take a breath since I didnt even realize i was holding mine along with the storyteller. This would be such a great book if the writer was more mature and maybe tell the story in the third person instead of the first. I blame the editors since they could have assisted this writer to become one of the greats. I cant even read past the second chapter even if I want to know the story.\\\")' title='Couldnt get past the second chapter..just so bad' data-id='63'\/>\\n   <polygon points='102.79,93.33 109.02,86.16 112.60,90.23 116.18,94.29 119.76,98.36 123.35,102.42 126.93,106.49 130.51,110.55 134.09,114.62 137.67,118.68 141.26,122.74 144.84,126.81 148.42,130.87 152.00,134.94 155.58,139.00 152.92,142.07 149.06,138.32 145.21,134.58 141.35,130.83 137.49,127.08 133.64,123.33 129.78,119.58 125.93,115.83 122.07,112.08 118.22,108.33 114.36,104.58 110.50,100.83 106.65,97.08 102.79,93.33' fill='#230EB9' stroke='none' onclick='alert(\\\"Enjoyed the story, will read the series if they are as good as this one. I like storylines that dont jump from character to character.\\\")' title='Good read' data-id='64'\/>\\n   <polygon points='98.20,72.08 102.00,68.25 105.92,64.59 109.23,69.04 112.53,73.50 115.84,77.95 119.14,82.41 122.44,86.86 125.75,91.32 129.05,95.77 132.36,100.23 135.66,104.68 138.97,109.14 142.27,113.59 145.57,118.05 148.88,122.50 152.18,126.95 155.49,131.41 158.79,135.86 155.89,138.67 152.29,134.51 148.68,130.35 145.08,126.19 141.47,122.03 137.86,117.86 134.26,113.70 130.65,109.54 127.05,105.38 123.44,101.22 119.84,97.05 116.23,92.89 112.62,88.73 109.02,84.57 105.41,80.41 101.81,76.24 98.20,72.08' fill='#0000FF' stroke='none' onclick='alert(\\\"Interesting and fun the whole way through. Would recommend to any fantasy lover out there. Well worth the read :)\\\")' title='Fabulous. Couldn&amp;#39;t stop reading' data-id='65'\/>\\n   <polygon points='117.28,78.15 124.52,72.25 127.42,76.93 130.32,81.60 133.22,86.28 136.12,90.96 139.02,95.63 141.92,100.31 144.82,104.98 147.72,109.66 150.62,114.34 153.53,119.01 156.43,123.69 159.33,128.36 162.23,133.04 159.12,135.57 155.90,131.15 152.69,126.73 149.47,122.32 146.25,117.90 143.03,113.48 139.81,109.07 136.59,104.65 133.37,100.23 130.15,95.82 126.93,91.40 123.71,86.98 120.49,82.57 117.28,78.15' fill='#230EB9' stroke='none' onclick='alert(\\\"This story leaves you wondering what is going on. The ending is a cliffhanger. Its a bloody, gory story with people you like getting killed. But, you want to know what happens.\\\")' title='Alrighty' data-id='66'\/>\\n   <polygon points='125.35,71.64 133.02,66.44 135.55,71.37 138.08,76.30 140.60,81.23 143.13,86.16 145.66,91.10 148.18,96.03 150.71,100.96 153.24,105.89 155.76,110.82 158.29,115.75 160.82,120.69 163.35,125.62 165.87,130.55 162.58,132.78 159.72,128.07 156.85,123.37 153.99,118.67 151.13,113.96 148.26,109.26 145.40,104.56 142.53,99.85 139.67,95.15 136.80,90.45 133.94,85.74 131.08,81.04 128.21,76.34 125.35,71.64' fill='#230EB9' stroke='none' onclick='alert(\\\"I was thoroughly enjoying this book until an unfortunate event. The writing style is engaging for the reader and the characters are well developed. The interaction between the characters and events piqued interest enough to continue  but then came the event and explanation for said event that tainted everything thereafter. I kept reading in hopes for a satisfying resolution that did not happen. The incident occurred with Sophie and Kirok. I found the incident and encouragement of such acts too distasteful for me to continue my absolute enjoyment.\\\")' title='One hard to swallow event' data-id='67'\/>\\n   <polygon points='141.98,82.01 148.88,78.19 151.20,83.77 153.51,89.35 155.82,94.93 158.13,100.51 160.45,106.09 162.76,111.67 165.07,117.25 167.38,122.83 169.70,128.41 166.25,130.32 163.55,124.95 160.86,119.58 158.16,114.21 155.46,108.85 152.77,103.48 150.07,98.11 147.38,92.74 144.68,87.37 141.98,82.01' fill='#241178' stroke='none' onclick='alert(\\\"Different take on fantasy tale, promising, a very broad, expansive world that seems to be attempting to combine timelines...worlds, etc. Wil come back to this series.\\\")' title='Strong opening, promising premise, storyline...with unique twist at ending...' data-id='68'\/>\\n   <polygon points='142.86,60.99 151.23,57.31 152.95,62.64 154.68,67.98 156.41,73.31 158.13,78.64 159.86,83.97 161.59,89.31 163.31,94.64 165.04,99.97 166.77,105.31 168.49,110.64 170.22,115.97 171.95,121.30 173.67,126.64 170.09,128.21 167.99,123.04 165.90,117.87 163.80,112.70 161.71,107.53 159.62,102.36 157.52,97.19 155.43,92.02 153.33,86.85 151.24,81.68 149.14,76.51 147.05,71.34 144.95,66.16 142.86,60.99' fill='#230EB9' stroke='none' onclick='alert(\\\"**Personal Restrictions (18+) with violence, blood\/gore, language, adult situations and sexual content**First of all, the content is more mature than you may think. If youre not sure then just read the sample and you will understand. While that kind of scene is mostly the only of its kind. It does tell you that this is more for muture audience. Coming to the storyline, it is interestingly set up in the way that some chapters are set in the past and some in the present , but done in such a way that as you read you understand why certain scenes take place in the present as you read what happened in the past, making for a different kind of storyline all together.\\\")' title='A darker kind of fantasy...' data-id='69'\/>\\n   <polygon points='146.69,39.56 151.59,37.81 156.55,36.27 157.87,41.83 159.20,47.39 160.53,52.95 161.85,58.51 163.18,64.07 164.51,69.63 165.83,75.19 167.16,80.76 168.49,86.32 169.81,91.88 171.14,97.44 172.47,103.00 173.79,108.56 175.12,114.12 176.45,119.68 177.77,125.24 174.08,126.48 172.37,121.05 170.66,115.61 168.94,110.18 167.23,104.75 165.52,99.32 163.81,93.89 162.10,88.45 160.39,83.02 158.67,77.59 156.96,72.16 155.25,66.72 153.54,61.29 151.83,55.86 150.12,50.43 148.41,44.99 146.69,39.56' fill='#0000FF' stroke='none' onclick='alert(\\\"This is a really good read. Well written and nicely paced. Great characters; the plot moves quickly.... overall a very enjoyable book!\\\")' title='Good read!' data-id='70'\/>\\n   <polygon points='174.08,107.29 179.12,106.11 180.07,112.16 181.02,118.20 181.97,124.24 178.19,125.13 176.82,119.18 175.45,113.24 174.08,107.29' fill='#000000' stroke='none' onclick='alert(\\\"The writing dialogue was childish and parts of the story were very creepy. The way the adults talk to the children seemed very much like grooming. I like dark fantasy but this was just too yucky for me.\\\")' title='A lot of of child sex' data-id='71'\/>\\n   <polygon points='168.86,33.39 173.96,32.58 179.08,31.98 179.52,37.71 179.97,43.44 180.42,49.17 180.86,54.90 181.31,60.63 181.76,66.35 182.20,72.08 182.65,77.81 183.10,83.54 183.54,89.27 183.99,95.00 184.44,100.72 184.88,106.45 185.33,112.18 185.78,117.91 186.22,123.64 182.39,124.16 181.54,118.49 180.70,112.82 179.85,107.14 179.01,101.47 178.16,95.80 177.32,90.12 176.47,84.45 175.62,78.78 174.78,73.10 173.93,67.43 173.09,61.75 172.24,56.08 171.40,50.41 170.55,44.73 169.70,39.06 168.86,33.39' fill='#0000FF' stroke='none' onclick='alert(\\\"Very much enjoyed reading this book which was filled with great characters and twist and turn story line. Mix of fantasy and science fiction hints. Highly recommend read.\\\")' title='The Great Hearts is a great fantasy ride' data-id='72'\/>\\n   <polygon points='185.36,105.26 190.51,105.04 190.51,111.17 190.51,117.30 190.51,123.44 186.65,123.60 186.22,117.49 185.79,111.37 185.36,105.26' fill='#000000' stroke='none' onclick='alert(\\\"Either he needed to write about when cuz was a kid or when hes an adult he cant just keep skipping back and forth between the two of them or else I wont care about either one I cant figure out which is the more interesting. Of his life which is all I want to f****** read about your story is supposed to start at the beginning of the most interesting point of your main characters life this author does not know how to put how to do that\\\")' title='Author needed to pick one and couldn&amp;#39;t' data-id='73'\/>\\n   <text transform='translate(204.29,22.89) rotate(-87.53)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-05-20<\\\/text>\\n   <text transform='translate(216.33,24.74) rotate(-82.60)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-05-28<\\\/text>\\n   <text transform='translate(228.19,27.72) rotate(-77.67)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-06-24<\\\/text>\\n   <text transform='translate(239.77,31.80) rotate(-72.74)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-06-26<\\\/text>\\n   <text transform='translate(237.11,70.43) rotate(-67.81)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-06-26<\\\/text>\\n   <text transform='translate(261.77,43.14) rotate(-62.88)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-06-27<\\\/text>\\n   <text transform='translate(272.02,50.32) rotate(-57.95)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-06-27<\\\/text>\\n   <text transform='translate(281.69,58.44) rotate(-53.01)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-06-30<\\\/text>\\n   <text transform='translate(290.68,67.44) rotate(-48.08)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-07-04<\\\/text>\\n   <text transform='translate(248.44,125.52) rotate(-43.15)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-07-04<\\\/text>\\n   <text transform='translate(292.89,98.64) rotate(-38.22)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-07-06<\\\/text>\\n   <text transform='translate(313.03,99.02) rotate(-33.29)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-07-08<\\\/text>\\n   <text transform='translate(273.76,135.26) rotate(-28.36)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-07-09<\\\/text>\\n   <text transform='translate(323.54,123.11) rotate(-23.42)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-07-11<\\\/text>\\n   <text transform='translate(327.35,135.81) rotate(-18.49)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-07-24<\\\/text>\\n   <text transform='translate(330.16,148.83) rotate(-13.56)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-08-11<\\\/text>\\n   <text transform='translate(331.96,162.06) rotate(-8.63)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-08-15<\\\/text>\\n   <text transform='translate(332.71,175.41) rotate(-3.70)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2017-08-27<\\\/text>\\n   <text transform='translate(332.43,188.78) rotate(1.23)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-01-13<\\\/text>\\n   <text transform='translate(297.98,196.95) rotate(6.16)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-02-18<\\\/text>\\n   <text transform='translate(328.76,215.22) rotate(11.10)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-02-21<\\\/text>\\n   <text transform='translate(325.40,228.08) rotate(16.03)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-02-24<\\\/text>\\n   <text transform='translate(321.05,240.58) rotate(20.96)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-03-12<\\\/text>\\n   <text transform='translate(300.93,244.09) rotate(25.89)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-03-15<\\\/text>\\n   <text transform='translate(281.33,244.34) rotate(30.82)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-04-08<\\\/text>\\n   <text transform='translate(302.44,275.01) rotate(35.75)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-04-30<\\\/text>\\n   <text transform='translate(294.54,285.18) rotate(40.68)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-06-03<\\\/text>\\n   <text transform='translate(251.80,254.06) rotate(45.62)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-06-05<\\\/text>\\n   <text transform='translate(276.51,303.13) rotate(50.55)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-06-23<\\\/text>\\n   <text transform='translate(257.41,295.33) rotate(55.48)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-06-25<\\\/text>\\n   <text transform='translate(240.23,284.97) rotate(60.41)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-07-02<\\\/text>\\n   <text transform='translate(238.36,306.18) rotate(65.34)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-07-17<\\\/text>\\n   <text transform='translate(223.03,292.75) rotate(70.27)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-07-17<\\\/text>\\n   <text transform='translate(221.77,331.20) rotate(75.21)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-07-31<\\\/text>\\n   <text transform='translate(207.35,315.39) rotate(80.14)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-08-01<\\\/text>\\n   <text transform='translate(196.66,316.49) rotate(85.07)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-08-01<\\\/text>\\n   <text transform='translate(185.53,334.97) rotate(90.00)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-09-09<\\\/text>\\n   <text transform='translate(176.50,338.84) rotate(-85.07)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-10-11<\\\/text>\\n   <text transform='translate(160.64,355.24) rotate(-80.14)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2018-12-02<\\\/text>\\n   <text transform='translate(146.84,351.80) rotate(-75.21)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2019-01-10<\\\/text>\\n   <text transform='translate(133.36,347.10) rotate(-70.27)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2019-01-10<\\\/text>\\n   <text transform='translate(120.30,341.16) rotate(-65.34)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2019-05-17<\\\/text>\\n   <text transform='translate(116.30,318.22) rotate(-60.41)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2019-05-22<\\\/text>\\n   <text transform='translate(125.06,280.92) rotate(-55.48)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2019-05-28<\\\/text>\\n   <text transform='translate(117.19,274.49) rotate(-50.55)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2019-06-24<\\\/text>\\n   <text transform='translate(74.09,306.07) rotate(-45.62)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2019-07-24<\\\/text>\\n   <text transform='translate(103.11,259.57) rotate(-40.68)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2019-08-12<\\\/text>\\n   <text transform='translate(55.77,282.64) rotate(-35.75)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2020-12-27<\\\/text>\\n   <text transform='translate(62.57,260.59) rotate(-30.82)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-04-02<\\\/text>\\n   <text transform='translate(41.40,256.18) rotate(-25.89)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-05-12<\\\/text>\\n   <text transform='translate(35.83,242.04) rotate(-20.96)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-05-16<\\\/text>\\n   <text transform='translate(31.39,227.44) rotate(-16.03)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-05-28<\\\/text>\\n   <text transform='translate(61.03,205.94) rotate(-11.10)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-06-03<\\\/text>\\n   <text transform='translate(92.64,190.44) rotate(-6.16)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-06-04<\\\/text>\\n   <text transform='translate(25.15,181.93) rotate(-1.23)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-06-06<\\\/text>\\n   <text transform='translate(42.15,168.00) rotate(3.70)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-06-19<\\\/text>\\n   <text transform='translate(60.02,157.28) rotate(8.63)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-06-25<\\\/text>\\n   <text transform='translate(29.76,136.21) rotate(13.56)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-06-25<\\\/text>\\n   <text transform='translate(33.67,121.44) rotate(18.49)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-07-02<\\\/text>\\n   <text transform='translate(38.74,107.09) rotate(23.42)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-07-16<\\\/text>\\n   <text transform='translate(44.92,93.26) rotate(28.36)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-08-07<\\\/text>\\n   <text transform='translate(52.16,80.06) rotate(33.29)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-08-14<\\\/text>\\n   <text transform='translate(99.53,102.15) rotate(38.22)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-09-18<\\\/text>\\n   <text transform='translate(81.72,68.62) rotate(43.15)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-09-27<\\\/text>\\n   <text transform='translate(79.89,45.34) rotate(48.08)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-11-20<\\\/text>\\n   <text transform='translate(100.74,50.35) rotate(53.01)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-11-21<\\\/text>\\n   <text transform='translate(111.17,42.50) rotate(57.95)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-12-11<\\\/text>\\n   <text transform='translate(129.59,51.86) rotate(62.88)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2021-12-22<\\\/text>\\n   <text transform='translate(133.61,29.62) rotate(67.81)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2022-01-16<\\\/text>\\n   <text transform='translate(140.71,7.30) rotate(72.74)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2022-01-27<\\\/text>\\n   <text transform='translate(168.30,75.29) rotate(77.67)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2022-03-23<\\\/text>\\n   <text transform='translate(168.31,0.61) rotate(82.60)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2022-04-23<\\\/text>\\n   <text transform='translate(184.98,72.75) rotate(87.53)' font-size='3.41pt' font-weight='bold' font-family='Arial' fill='#000000' fill-opacity='0.6'>2022-05-23<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n   <text x='157.55' y='181.69' font-size='6.4pt' font-family='Arial'>The Great Hearts<\\\/text>\\n  <\\\/g>\\n  <g clip-path='url(#svg_0fbba391-b5ee-4570-b2e1-537b063584a3_c1)'>\\n   <text x='395.11' y='159.45' font-size='8.25pt' font-family='Arial'>Rating<\\\/text>\\n   <rect x='395.82' y='166.8' width='4.25' height='6.73' fill='#000000' stroke='none'\/>\\n   <rect x='395.82' y='174.95' width='4.25' height='6.73' fill='#1B0F3C' stroke='none'\/>\\n   <rect x='395.82' y='183.1' width='4.25' height='6.73' fill='#241178' stroke='none'\/>\\n   <rect x='395.82' y='191.25' width='4.25' height='6.73' fill='#230EB9' stroke='none'\/>\\n   <rect x='395.82' y='199.4' width='4.25' height='6.73' fill='#0000FF' stroke='none'\/>\\n   <text x='406.26' y='173.32' font-size='6.6pt' font-family='Arial'>1<\\\/text>\\n   <text x='406.26' y='181.47' font-size='6.6pt' font-family='Arial'>2<\\\/text>\\n   <text x='406.26' y='189.62' font-size='6.6pt' font-family='Arial'>3<\\\/text>\\n   <text x='406.26' y='197.77' font-size='6.6pt' font-family='Arial'>4<\\\/text>\\n   <text x='406.26' y='205.92' font-size='6.6pt' font-family='Arial'>5<\\\/text>\\n  <\\\/g>\\n <\\\/g>\\n<\\\/svg>\",\"js\":null,\"uid\":\"svg_0fbba391-b5ee-4570-b2e1-537b063584a3\",\"ratio\":1.2,\"settings\":{\"tooltip\":{\"css\":\".tooltip_SVGID_ { background-color:transparent; font-style:italic; font-weight:bold; color:red; ; position:absolute;pointer-events:none;z-index:999;}\",\"placement\":\"doc\",\"offx\":10,\"offy\":0,\"use_cursor_pos\":true,\"opacity\":0.9,\"usefill\":false,\"usestroke\":false,\"delay\":{\"over\":200,\"out\":500}},\"hover\":{\"css\":\".hover_SVGID_ { fill:thistle; }\",\"reactive\":false},\"hoverkey\":{\"css\":\".hover_key_SVGID_ { stroke:red; }\",\"reactive\":false},\"hovertheme\":{\"css\":\".hover_theme_SVGID_ { fill:green; }\",\"reactive\":false},\"hoverinv\":{\"css\":\"\"},\"zoom\":{\"min\":1,\"max\":1},\"capture\":{\"css\":\".selected_SVGID_ { fill:red;stroke:gray; }\",\"type\":\"multiple\",\"only_shiny\":true,\"selected\":[]},\"capturekey\":{\"css\":\".selected_key_SVGID_ { stroke:gray; }\",\"type\":\"single\",\"only_shiny\":true,\"selected\":[]},\"capturetheme\":{\"css\":\".selected_theme_SVGID_ { stroke:gray; }\",\"type\":\"single\",\"only_shiny\":true,\"selected\":[]},\"toolbar\":{\"position\":\"topright\",\"saveaspng\":true,\"pngname\":\"diagram\"},\"sizing\":{\"rescale\":true,\"width\":1}}},\"evals\":[],\"jsHooks\":[]}<\/script>\r\n<script type=\"application\/htmlwidget-sizing\" data-for=\"htmlwidget-1561a989fe5c5532ae82\">{\"viewer\":{\"width\":450,\"height\":350,\"padding\":15,\"fill\":true},\"browser\":{\"width\":960,\"height\":500,\"padding\":40,\"fill\":false}}<\/script>\r\n<\/body>\r\n<\/html>\r\n<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Who are these Great Hearts and why are they so great you ask? Well, that\u2019s not an easy question to answer. Let me put it this way, if you like fast paced coming-of-age stories with monsters, cannibals, dark magic and epic sword battles then this is probably for you. I know that this hasn\u2019t answered &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/writerofwizardry.com\/index.php\/the-great-hearts-1\/\"> <span class=\"screen-reader-text\">The Great Hearts<\/span> Read More &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-91","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/writerofwizardry.com\/index.php\/wp-json\/wp\/v2\/pages\/91","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/writerofwizardry.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/writerofwizardry.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/writerofwizardry.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/writerofwizardry.com\/index.php\/wp-json\/wp\/v2\/comments?post=91"}],"version-history":[{"count":63,"href":"https:\/\/writerofwizardry.com\/index.php\/wp-json\/wp\/v2\/pages\/91\/revisions"}],"predecessor-version":[{"id":975,"href":"https:\/\/writerofwizardry.com\/index.php\/wp-json\/wp\/v2\/pages\/91\/revisions\/975"}],"wp:attachment":[{"href":"https:\/\/writerofwizardry.com\/index.php\/wp-json\/wp\/v2\/media?parent=91"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}