{
  "type": "Program",
  "start": 0,
  "end": 5551,
  "loc": {
    "start": {
      "line": 1,
      "column": 0
    },
    "end": {
      "line": 161,
      "column": 0
    }
  },
  "sourceType": "module",
  "body": [
    {
      "type": "ImportDeclaration",
      "start": 0,
      "end": 39,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 1,
          "column": 39
        }
      },
      "specifiers": [
        {
          "type": "ImportNamespaceSpecifier",
          "start": 7,
          "end": 17,
          "loc": {
            "start": {
              "line": 1,
              "column": 7
            },
            "end": {
              "line": 1,
              "column": 17
            }
          },
          "local": {
            "type": "Identifier",
            "start": 12,
            "end": 17,
            "loc": {
              "start": {
                "line": 1,
                "column": 12
              },
              "end": {
                "line": 1,
                "column": 17
              }
            },
            "name": "Error"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 23,
        "end": 38,
        "loc": {
          "start": {
            "line": 1,
            "column": 23
          },
          "end": {
            "line": 1,
            "column": 38
          }
        },
        "value": "../core/error",
        "rawValue": "../core/error",
        "raw": "'../core/error'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 41,
      "end": 77,
      "loc": {
        "start": {
          "line": 2,
          "column": 0
        },
        "end": {
          "line": 2,
          "column": 36
        }
      },
      "specifiers": [
        {
          "type": "ImportDefaultSpecifier",
          "start": 48,
          "end": 54,
          "loc": {
            "start": {
              "line": 2,
              "column": 7
            },
            "end": {
              "line": 2,
              "column": 13
            }
          },
          "local": {
            "type": "Identifier",
            "start": 48,
            "end": 54,
            "loc": {
              "start": {
                "line": 2,
                "column": 7
              },
              "end": {
                "line": 2,
                "column": 13
              }
            },
            "name": "Events"
          }
        }
      ],
      "importKind": "value",
      "source": {
        "type": "Literal",
        "start": 60,
        "end": 76,
        "loc": {
          "start": {
            "line": 2,
            "column": 19
          },
          "end": {
            "line": 2,
            "column": 35
          }
        },
        "value": "../core/events",
        "rawValue": "../core/events",
        "raw": "'../core/events'"
      }
    },
    {
      "type": "ImportDeclaration",
      "start": 79,
      "end": 128,
      "loc": {
        "start": {
          "line": 3,
          "column": 0
        },
        "end": {
          "line": 3,
          "column": 49
        }
      },
      "specifiers": [],
      "source": {
        "type": "Literal",
        "start": 86,
        "end": 127,
        "loc": {
          "start": {
            "line": 3,
            "column": 7
          },
          "end": {
            "line": 3,
            "column": 48
          }
        },
        "value": "event-listener-with-options/js/polyfill",
        "rawValue": "event-listener-with-options/js/polyfill",
        "raw": "'event-listener-with-options/js/polyfill'"
      }
    },
    {
      "type": "FunctionDeclaration",
      "start": 132,
      "end": 541,
      "loc": {
        "start": {
          "line": 5,
          "column": 0
        },
        "end": {
          "line": 17,
          "column": 1
        }
      },
      "id": {
        "type": "Identifier",
        "start": 141,
        "end": 153,
        "loc": {
          "start": {
            "line": 5,
            "column": 9
          },
          "end": {
            "line": 5,
            "column": 21
          }
        },
        "name": "createStates"
      },
      "generator": false,
      "expression": false,
      "async": false,
      "params": [
        {
          "type": "Identifier",
          "start": 154,
          "end": 157,
          "loc": {
            "start": {
              "line": 5,
              "column": 22
            },
            "end": {
              "line": 5,
              "column": 25
            }
          },
          "name": "dom"
        },
        {
          "type": "Identifier",
          "start": 159,
          "end": 165,
          "loc": {
            "start": {
              "line": 5,
              "column": 27
            },
            "end": {
              "line": 5,
              "column": 33
            }
          },
          "name": "events"
        },
        {
          "type": "Identifier",
          "start": 167,
          "end": 175,
          "loc": {
            "start": {
              "line": 5,
              "column": 35
            },
            "end": {
              "line": 5,
              "column": 43
            }
          },
          "name": "listener"
        },
        {
          "type": "AssignmentPattern",
          "start": 177,
          "end": 196,
          "loc": {
            "start": {
              "line": 5,
              "column": 45
            },
            "end": {
              "line": 5,
              "column": 64
            }
          },
          "operator": "=",
          "left": {
            "type": "Identifier",
            "start": 177,
            "end": 184,
            "loc": {
              "start": {
                "line": 5,
                "column": 45
              },
              "end": {
                "line": 5,
                "column": 52
              }
            },
            "name": "options"
          },
          "right": {
            "type": "Identifier",
            "start": 187,
            "end": 196,
            "loc": {
              "start": {
                "line": 5,
                "column": 55
              },
              "end": {
                "line": 5,
                "column": 64
              }
            },
            "name": "undefined"
          }
        }
      ],
      "body": {
        "type": "BlockStatement",
        "start": 198,
        "end": 541,
        "loc": {
          "start": {
            "line": 5,
            "column": 66
          },
          "end": {
            "line": 17,
            "column": 1
          }
        },
        "body": [
          {
            "type": "ReturnStatement",
            "start": 205,
            "end": 538,
            "loc": {
              "start": {
                "line": 6,
                "column": 4
              },
              "end": {
                "line": 16,
                "column": 12
              }
            },
            "argument": {
              "type": "CallExpression",
              "start": 212,
              "end": 537,
              "loc": {
                "start": {
                  "line": 6,
                  "column": 11
                },
                "end": {
                  "line": 16,
                  "column": 11
                }
              },
              "callee": {
                "type": "MemberExpression",
                "start": 212,
                "end": 225,
                "loc": {
                  "start": {
                    "line": 6,
                    "column": 11
                  },
                  "end": {
                    "line": 6,
                    "column": 24
                  }
                },
                "object": {
                  "type": "Identifier",
                  "start": 212,
                  "end": 218,
                  "loc": {
                    "start": {
                      "line": 6,
                      "column": 11
                    },
                    "end": {
                      "line": 6,
                      "column": 17
                    }
                  },
                  "name": "events"
                },
                "property": {
                  "type": "Identifier",
                  "start": 219,
                  "end": 225,
                  "loc": {
                    "start": {
                      "line": 6,
                      "column": 18
                    },
                    "end": {
                      "line": 6,
                      "column": 24
                    }
                  },
                  "name": "reduce"
                },
                "computed": false
              },
              "arguments": [
                {
                  "type": "ArrowFunctionExpression",
                  "start": 226,
                  "end": 531,
                  "loc": {
                    "start": {
                      "line": 6,
                      "column": 25
                    },
                    "end": {
                      "line": 16,
                      "column": 5
                    }
                  },
                  "id": null,
                  "generator": false,
                  "expression": false,
                  "async": false,
                  "params": [
                    {
                      "type": "Identifier",
                      "start": 227,
                      "end": 231,
                      "loc": {
                        "start": {
                          "line": 6,
                          "column": 26
                        },
                        "end": {
                          "line": 6,
                          "column": 30
                        }
                      },
                      "name": "prev"
                    },
                    {
                      "type": "Identifier",
                      "start": 233,
                      "end": 237,
                      "loc": {
                        "start": {
                          "line": 6,
                          "column": 32
                        },
                        "end": {
                          "line": 6,
                          "column": 36
                        }
                      },
                      "name": "name"
                    }
                  ],
                  "body": {
                    "type": "BlockStatement",
                    "start": 242,
                    "end": 531,
                    "loc": {
                      "start": {
                        "line": 6,
                        "column": 41
                      },
                      "end": {
                        "line": 16,
                        "column": 5
                      }
                    },
                    "body": [
                      {
                        "type": "ExpressionStatement",
                        "start": 253,
                        "end": 299,
                        "loc": {
                          "start": {
                            "line": 7,
                            "column": 8
                          },
                          "end": {
                            "line": 7,
                            "column": 54
                          }
                        },
                        "expression": {
                          "type": "CallExpression",
                          "start": 253,
                          "end": 298,
                          "loc": {
                            "start": {
                              "line": 7,
                              "column": 8
                            },
                            "end": {
                              "line": 7,
                              "column": 53
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 253,
                            "end": 273,
                            "loc": {
                              "start": {
                                "line": 7,
                                "column": 8
                              },
                              "end": {
                                "line": 7,
                                "column": 28
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 253,
                              "end": 256,
                              "loc": {
                                "start": {
                                  "line": 7,
                                  "column": 8
                                },
                                "end": {
                                  "line": 7,
                                  "column": 11
                                }
                              },
                              "name": "dom"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 257,
                              "end": 273,
                              "loc": {
                                "start": {
                                  "line": 7,
                                  "column": 12
                                },
                                "end": {
                                  "line": 7,
                                  "column": 28
                                }
                              },
                              "name": "addEventListener"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 274,
                              "end": 278,
                              "loc": {
                                "start": {
                                  "line": 7,
                                  "column": 29
                                },
                                "end": {
                                  "line": 7,
                                  "column": 33
                                }
                              },
                              "name": "name"
                            },
                            {
                              "type": "Identifier",
                              "start": 280,
                              "end": 288,
                              "loc": {
                                "start": {
                                  "line": 7,
                                  "column": 35
                                },
                                "end": {
                                  "line": 7,
                                  "column": 43
                                }
                              },
                              "name": "listener"
                            },
                            {
                              "type": "Identifier",
                              "start": 290,
                              "end": 297,
                              "loc": {
                                "start": {
                                  "line": 7,
                                  "column": 45
                                },
                                "end": {
                                  "line": 7,
                                  "column": 52
                                }
                              },
                              "name": "options"
                            }
                          ]
                        }
                      },
                      {
                        "type": "ReturnStatement",
                        "start": 309,
                        "end": 524,
                        "loc": {
                          "start": {
                            "line": 8,
                            "column": 8
                          },
                          "end": {
                            "line": 15,
                            "column": 10
                          }
                        },
                        "argument": {
                          "type": "ObjectExpression",
                          "start": 316,
                          "end": 523,
                          "loc": {
                            "start": {
                              "line": 8,
                              "column": 15
                            },
                            "end": {
                              "line": 15,
                              "column": 9
                            }
                          },
                          "properties": [
                            {
                              "type": "SpreadProperty",
                              "start": 331,
                              "end": 338,
                              "loc": {
                                "start": {
                                  "line": 9,
                                  "column": 12
                                },
                                "end": {
                                  "line": 9,
                                  "column": 19
                                }
                              },
                              "argument": {
                                "type": "Identifier",
                                "start": 334,
                                "end": 338,
                                "loc": {
                                  "start": {
                                    "line": 9,
                                    "column": 15
                                  },
                                  "end": {
                                    "line": 9,
                                    "column": 19
                                  }
                                },
                                "name": "prev"
                              }
                            },
                            {
                              "type": "Property",
                              "start": 353,
                              "end": 512,
                              "loc": {
                                "start": {
                                  "line": 10,
                                  "column": 12
                                },
                                "end": {
                                  "line": 14,
                                  "column": 13
                                }
                              },
                              "method": false,
                              "shorthand": false,
                              "computed": true,
                              "key": {
                                "type": "Identifier",
                                "start": 354,
                                "end": 358,
                                "loc": {
                                  "start": {
                                    "line": 10,
                                    "column": 13
                                  },
                                  "end": {
                                    "line": 10,
                                    "column": 17
                                  }
                                },
                                "name": "name"
                              },
                              "value": {
                                "type": "ObjectExpression",
                                "start": 361,
                                "end": 512,
                                "loc": {
                                  "start": {
                                    "line": 10,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 14,
                                    "column": 13
                                  }
                                },
                                "properties": [
                                  {
                                    "type": "Property",
                                    "start": 380,
                                    "end": 390,
                                    "loc": {
                                      "start": {
                                        "line": 11,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 11,
                                        "column": 26
                                      }
                                    },
                                    "method": false,
                                    "shorthand": false,
                                    "computed": false,
                                    "key": {
                                      "type": "Identifier",
                                      "start": 380,
                                      "end": 384,
                                      "loc": {
                                        "start": {
                                          "line": 11,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 11,
                                          "column": 20
                                        }
                                      },
                                      "name": "type"
                                    },
                                    "value": {
                                      "type": "Identifier",
                                      "start": 386,
                                      "end": 390,
                                      "loc": {
                                        "start": {
                                          "line": 11,
                                          "column": 22
                                        },
                                        "end": {
                                          "line": 11,
                                          "column": 26
                                        }
                                      },
                                      "name": "name"
                                    },
                                    "kind": "init"
                                  },
                                  {
                                    "type": "Property",
                                    "start": 409,
                                    "end": 425,
                                    "loc": {
                                      "start": {
                                        "line": 12,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 12,
                                        "column": 32
                                      }
                                    },
                                    "method": false,
                                    "shorthand": false,
                                    "computed": false,
                                    "key": {
                                      "type": "Identifier",
                                      "start": 409,
                                      "end": 418,
                                      "loc": {
                                        "start": {
                                          "line": 12,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 12,
                                          "column": 25
                                        }
                                      },
                                      "name": "fulfilled"
                                    },
                                    "value": {
                                      "type": "Literal",
                                      "start": 420,
                                      "end": 425,
                                      "loc": {
                                        "start": {
                                          "line": 12,
                                          "column": 27
                                        },
                                        "end": {
                                          "line": 12,
                                          "column": 32
                                        }
                                      },
                                      "value": false,
                                      "rawValue": false,
                                      "raw": "false"
                                    },
                                    "kind": "init"
                                  },
                                  {
                                    "type": "Property",
                                    "start": 444,
                                    "end": 497,
                                    "loc": {
                                      "start": {
                                        "line": 13,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 13,
                                        "column": 69
                                      }
                                    },
                                    "method": false,
                                    "shorthand": false,
                                    "computed": false,
                                    "key": {
                                      "type": "Identifier",
                                      "start": 444,
                                      "end": 450,
                                      "loc": {
                                        "start": {
                                          "line": 13,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 13,
                                          "column": 22
                                        }
                                      },
                                      "name": "detach"
                                    },
                                    "value": {
                                      "type": "ArrowFunctionExpression",
                                      "start": 452,
                                      "end": 497,
                                      "loc": {
                                        "start": {
                                          "line": 13,
                                          "column": 24
                                        },
                                        "end": {
                                          "line": 13,
                                          "column": 69
                                        }
                                      },
                                      "id": null,
                                      "generator": false,
                                      "expression": true,
                                      "async": false,
                                      "params": [],
                                      "body": {
                                        "type": "CallExpression",
                                        "start": 458,
                                        "end": 497,
                                        "loc": {
                                          "start": {
                                            "line": 13,
                                            "column": 30
                                          },
                                          "end": {
                                            "line": 13,
                                            "column": 69
                                          }
                                        },
                                        "callee": {
                                          "type": "MemberExpression",
                                          "start": 458,
                                          "end": 481,
                                          "loc": {
                                            "start": {
                                              "line": 13,
                                              "column": 30
                                            },
                                            "end": {
                                              "line": 13,
                                              "column": 53
                                            }
                                          },
                                          "object": {
                                            "type": "Identifier",
                                            "start": 458,
                                            "end": 461,
                                            "loc": {
                                              "start": {
                                                "line": 13,
                                                "column": 30
                                              },
                                              "end": {
                                                "line": 13,
                                                "column": 33
                                              }
                                            },
                                            "name": "dom"
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 462,
                                            "end": 481,
                                            "loc": {
                                              "start": {
                                                "line": 13,
                                                "column": 34
                                              },
                                              "end": {
                                                "line": 13,
                                                "column": 53
                                              }
                                            },
                                            "name": "removeEventListener"
                                          },
                                          "computed": false
                                        },
                                        "arguments": [
                                          {
                                            "type": "Identifier",
                                            "start": 482,
                                            "end": 486,
                                            "loc": {
                                              "start": {
                                                "line": 13,
                                                "column": 54
                                              },
                                              "end": {
                                                "line": 13,
                                                "column": 58
                                              }
                                            },
                                            "name": "name"
                                          },
                                          {
                                            "type": "Identifier",
                                            "start": 488,
                                            "end": 496,
                                            "loc": {
                                              "start": {
                                                "line": 13,
                                                "column": 60
                                              },
                                              "end": {
                                                "line": 13,
                                                "column": 68
                                              }
                                            },
                                            "name": "listener"
                                          }
                                        ]
                                      }
                                    },
                                    "kind": "init"
                                  }
                                ]
                              },
                              "kind": "init"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "ObjectExpression",
                  "start": 533,
                  "end": 536,
                  "loc": {
                    "start": {
                      "line": 16,
                      "column": 7
                    },
                    "end": {
                      "line": 16,
                      "column": 10
                    }
                  },
                  "properties": []
                }
              ]
            }
          }
        ]
      }
    },
    {
      "type": "ExportDefaultDeclaration",
      "start": 545,
      "end": 5549,
      "loc": {
        "start": {
          "line": 19,
          "column": 0
        },
        "end": {
          "line": 160,
          "column": 1
        }
      },
      "declaration": {
        "type": "ClassDeclaration",
        "start": 560,
        "end": 5549,
        "loc": {
          "start": {
            "line": 19,
            "column": 15
          },
          "end": {
            "line": 160,
            "column": 1
          }
        },
        "id": {
          "type": "Identifier",
          "start": 566,
          "end": 569,
          "loc": {
            "start": {
              "line": 19,
              "column": 21
            },
            "end": {
              "line": 19,
              "column": 24
            }
          },
          "name": "Dom"
        },
        "superClass": null,
        "body": {
          "type": "ClassBody",
          "start": 570,
          "end": 5549,
          "loc": {
            "start": {
              "line": 19,
              "column": 25
            },
            "end": {
              "line": 160,
              "column": 1
            }
          },
          "body": [
            {
              "type": "MethodDefinition",
              "start": 577,
              "end": 1836,
              "loc": {
                "start": {
                  "line": 20,
                  "column": 4
                },
                "end": {
                  "line": 58,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 577,
                "end": 588,
                "loc": {
                  "start": {
                    "line": 20,
                    "column": 4
                  },
                  "end": {
                    "line": 20,
                    "column": 15
                  }
                },
                "name": "constructor"
              },
              "static": false,
              "kind": "constructor",
              "value": {
                "type": "FunctionExpression",
                "start": 588,
                "end": 1836,
                "loc": {
                  "start": {
                    "line": 20,
                    "column": 15
                  },
                  "end": {
                    "line": 58,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "AssignmentPattern",
                    "start": 589,
                    "end": 623,
                    "loc": {
                      "start": {
                        "line": 20,
                        "column": 16
                      },
                      "end": {
                        "line": 20,
                        "column": 50
                      }
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "start": 589,
                      "end": 593,
                      "loc": {
                        "start": {
                          "line": 20,
                          "column": 16
                        },
                        "end": {
                          "line": 20,
                          "column": 20
                        }
                      },
                      "name": "view"
                    },
                    "right": {
                      "type": "CallExpression",
                      "start": 596,
                      "end": 623,
                      "loc": {
                        "start": {
                          "line": 20,
                          "column": 23
                        },
                        "end": {
                          "line": 20,
                          "column": 50
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 596,
                        "end": 605,
                        "loc": {
                          "start": {
                            "line": 20,
                            "column": 23
                          },
                          "end": {
                            "line": 20,
                            "column": 32
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 596,
                          "end": 601,
                          "loc": {
                            "start": {
                              "line": 20,
                              "column": 23
                            },
                            "end": {
                              "line": 20,
                              "column": 28
                            }
                          },
                          "name": "Error"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 602,
                          "end": 605,
                          "loc": {
                            "start": {
                              "line": 20,
                              "column": 29
                            },
                            "end": {
                              "line": 20,
                              "column": 32
                            }
                          },
                          "name": "log"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Literal",
                          "start": 606,
                          "end": 622,
                          "loc": {
                            "start": {
                              "line": 20,
                              "column": 33
                            },
                            "end": {
                              "line": 20,
                              "column": 49
                            }
                          },
                          "value": "View undefined",
                          "rawValue": "View undefined",
                          "raw": "\"View undefined\""
                        }
                      ]
                    }
                  },
                  {
                    "type": "AssignmentPattern",
                    "start": 625,
                    "end": 638,
                    "loc": {
                      "start": {
                        "line": 20,
                        "column": 52
                      },
                      "end": {
                        "line": 20,
                        "column": 65
                      }
                    },
                    "operator": "=",
                    "left": {
                      "type": "Identifier",
                      "start": 625,
                      "end": 633,
                      "loc": {
                        "start": {
                          "line": 20,
                          "column": 52
                        },
                        "end": {
                          "line": 20,
                          "column": 60
                        }
                      },
                      "name": "handlers"
                    },
                    "right": {
                      "type": "ObjectExpression",
                      "start": 636,
                      "end": 638,
                      "loc": {
                        "start": {
                          "line": 20,
                          "column": 63
                        },
                        "end": {
                          "line": 20,
                          "column": 65
                        }
                      },
                      "properties": []
                    }
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 640,
                  "end": 1836,
                  "loc": {
                    "start": {
                      "line": 20,
                      "column": 67
                    },
                    "end": {
                      "line": 58,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 651,
                      "end": 668,
                      "loc": {
                        "start": {
                          "line": 21,
                          "column": 8
                        },
                        "end": {
                          "line": 21,
                          "column": 25
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 651,
                        "end": 667,
                        "loc": {
                          "start": {
                            "line": 21,
                            "column": 8
                          },
                          "end": {
                            "line": 21,
                            "column": 24
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 651,
                          "end": 660,
                          "loc": {
                            "start": {
                              "line": 21,
                              "column": 8
                            },
                            "end": {
                              "line": 21,
                              "column": 17
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 651,
                            "end": 655,
                            "loc": {
                              "start": {
                                "line": 21,
                                "column": 8
                              },
                              "end": {
                                "line": 21,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 656,
                            "end": 660,
                            "loc": {
                              "start": {
                                "line": 21,
                                "column": 13
                              },
                              "end": {
                                "line": 21,
                                "column": 17
                              }
                            },
                            "name": "view"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 663,
                          "end": 667,
                          "loc": {
                            "start": {
                              "line": 21,
                              "column": 20
                            },
                            "end": {
                              "line": 21,
                              "column": 24
                            }
                          },
                          "name": "view"
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 678,
                      "end": 704,
                      "loc": {
                        "start": {
                          "line": 22,
                          "column": 8
                        },
                        "end": {
                          "line": 22,
                          "column": 34
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 678,
                        "end": 703,
                        "loc": {
                          "start": {
                            "line": 22,
                            "column": 8
                          },
                          "end": {
                            "line": 22,
                            "column": 33
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 678,
                          "end": 689,
                          "loc": {
                            "start": {
                              "line": 22,
                              "column": 8
                            },
                            "end": {
                              "line": 22,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 678,
                            "end": 682,
                            "loc": {
                              "start": {
                                "line": 22,
                                "column": 8
                              },
                              "end": {
                                "line": 22,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 683,
                            "end": 689,
                            "loc": {
                              "start": {
                                "line": 22,
                                "column": 13
                              },
                              "end": {
                                "line": 22,
                                "column": 19
                              }
                            },
                            "name": "canvas"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "MemberExpression",
                          "start": 692,
                          "end": 703,
                          "loc": {
                            "start": {
                              "line": 22,
                              "column": 22
                            },
                            "end": {
                              "line": 22,
                              "column": 33
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 692,
                            "end": 696,
                            "loc": {
                              "start": {
                                "line": 22,
                                "column": 22
                              },
                              "end": {
                                "line": 22,
                                "column": 26
                              }
                            },
                            "name": "view"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 697,
                            "end": 703,
                            "loc": {
                              "start": {
                                "line": 22,
                                "column": 27
                              },
                              "end": {
                                "line": 22,
                                "column": 33
                              }
                            },
                            "name": "canvas"
                          },
                          "computed": false
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 714,
                      "end": 744,
                      "loc": {
                        "start": {
                          "line": 23,
                          "column": 8
                        },
                        "end": {
                          "line": 23,
                          "column": 38
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 714,
                        "end": 743,
                        "loc": {
                          "start": {
                            "line": 23,
                            "column": 8
                          },
                          "end": {
                            "line": 23,
                            "column": 37
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 714,
                          "end": 727,
                          "loc": {
                            "start": {
                              "line": 23,
                              "column": 8
                            },
                            "end": {
                              "line": 23,
                              "column": 21
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 714,
                            "end": 718,
                            "loc": {
                              "start": {
                                "line": 23,
                                "column": 8
                              },
                              "end": {
                                "line": 23,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 719,
                            "end": 727,
                            "loc": {
                              "start": {
                                "line": 23,
                                "column": 13
                              },
                              "end": {
                                "line": 23,
                                "column": 21
                              }
                            },
                            "name": "renderer"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "MemberExpression",
                          "start": 730,
                          "end": 743,
                          "loc": {
                            "start": {
                              "line": 23,
                              "column": 24
                            },
                            "end": {
                              "line": 23,
                              "column": 37
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 730,
                            "end": 734,
                            "loc": {
                              "start": {
                                "line": 23,
                                "column": 24
                              },
                              "end": {
                                "line": 23,
                                "column": 28
                              }
                            },
                            "name": "view"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 735,
                            "end": 743,
                            "loc": {
                              "start": {
                                "line": 23,
                                "column": 29
                              },
                              "end": {
                                "line": 23,
                                "column": 37
                              }
                            },
                            "name": "renderer"
                          },
                          "computed": false
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 754,
                      "end": 774,
                      "loc": {
                        "start": {
                          "line": 24,
                          "column": 8
                        },
                        "end": {
                          "line": 24,
                          "column": 28
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 754,
                        "end": 773,
                        "loc": {
                          "start": {
                            "line": 24,
                            "column": 8
                          },
                          "end": {
                            "line": 24,
                            "column": 27
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 754,
                          "end": 762,
                          "loc": {
                            "start": {
                              "line": 24,
                              "column": 8
                            },
                            "end": {
                              "line": 24,
                              "column": 16
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 754,
                            "end": 758,
                            "loc": {
                              "start": {
                                "line": 24,
                                "column": 8
                              },
                              "end": {
                                "line": 24,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 759,
                            "end": 762,
                            "loc": {
                              "start": {
                                "line": 24,
                                "column": 13
                              },
                              "end": {
                                "line": 24,
                                "column": 16
                              }
                            },
                            "name": "dom"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "MemberExpression",
                          "start": 765,
                          "end": 773,
                          "loc": {
                            "start": {
                              "line": 24,
                              "column": 19
                            },
                            "end": {
                              "line": 24,
                              "column": 27
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 765,
                            "end": 769,
                            "loc": {
                              "start": {
                                "line": 24,
                                "column": 19
                              },
                              "end": {
                                "line": 24,
                                "column": 23
                              }
                            },
                            "name": "view"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 770,
                            "end": 773,
                            "loc": {
                              "start": {
                                "line": 24,
                                "column": 24
                              },
                              "end": {
                                "line": 24,
                                "column": 27
                              }
                            },
                            "name": "dom"
                          },
                          "computed": false
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 784,
                      "end": 801,
                      "loc": {
                        "start": {
                          "line": 25,
                          "column": 8
                        },
                        "end": {
                          "line": 25,
                          "column": 25
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 784,
                        "end": 800,
                        "loc": {
                          "start": {
                            "line": 25,
                            "column": 8
                          },
                          "end": {
                            "line": 25,
                            "column": 24
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 784,
                          "end": 795,
                          "loc": {
                            "start": {
                              "line": 25,
                              "column": 8
                            },
                            "end": {
                              "line": 25,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 784,
                            "end": 788,
                            "loc": {
                              "start": {
                                "line": 25,
                                "column": 8
                              },
                              "end": {
                                "line": 25,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 789,
                            "end": 795,
                            "loc": {
                              "start": {
                                "line": 25,
                                "column": 13
                              },
                              "end": {
                                "line": 25,
                                "column": 19
                              }
                            },
                            "name": "recent"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "ArrayExpression",
                          "start": 798,
                          "end": 800,
                          "loc": {
                            "start": {
                              "line": 25,
                              "column": 22
                            },
                            "end": {
                              "line": 25,
                              "column": 24
                            }
                          },
                          "elements": []
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 811,
                      "end": 831,
                      "loc": {
                        "start": {
                          "line": 26,
                          "column": 8
                        },
                        "end": {
                          "line": 26,
                          "column": 28
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 811,
                        "end": 830,
                        "loc": {
                          "start": {
                            "line": 26,
                            "column": 8
                          },
                          "end": {
                            "line": 26,
                            "column": 27
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 811,
                          "end": 823,
                          "loc": {
                            "start": {
                              "line": 26,
                              "column": 8
                            },
                            "end": {
                              "line": 26,
                              "column": 20
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 811,
                            "end": 815,
                            "loc": {
                              "start": {
                                "line": 26,
                                "column": 8
                              },
                              "end": {
                                "line": 26,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 816,
                            "end": 823,
                            "loc": {
                              "start": {
                                "line": 26,
                                "column": 13
                              },
                              "end": {
                                "line": 26,
                                "column": 20
                              }
                            },
                            "name": "enabled"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Literal",
                          "start": 826,
                          "end": 830,
                          "loc": {
                            "start": {
                              "line": 26,
                              "column": 23
                            },
                            "end": {
                              "line": 26,
                              "column": 27
                            }
                          },
                          "value": true,
                          "rawValue": true,
                          "raw": "true"
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 841,
                      "end": 862,
                      "loc": {
                        "start": {
                          "line": 27,
                          "column": 8
                        },
                        "end": {
                          "line": 27,
                          "column": 29
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 841,
                        "end": 861,
                        "loc": {
                          "start": {
                            "line": 27,
                            "column": 8
                          },
                          "end": {
                            "line": 27,
                            "column": 28
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 841,
                          "end": 854,
                          "loc": {
                            "start": {
                              "line": 27,
                              "column": 8
                            },
                            "end": {
                              "line": 27,
                              "column": 21
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 841,
                            "end": 845,
                            "loc": {
                              "start": {
                                "line": 27,
                                "column": 8
                              },
                              "end": {
                                "line": 27,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 846,
                            "end": 854,
                            "loc": {
                              "start": {
                                "line": 27,
                                "column": 13
                              },
                              "end": {
                                "line": 27,
                                "column": 21
                              }
                            },
                            "name": "debounce"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Literal",
                          "start": 857,
                          "end": 861,
                          "loc": {
                            "start": {
                              "line": 27,
                              "column": 24
                            },
                            "end": {
                              "line": 27,
                              "column": 28
                            }
                          },
                          "value": true,
                          "rawValue": true,
                          "raw": "true"
                        }
                      },
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Mix in event generic handler",
                          "start": 874,
                          "end": 905,
                          "loc": {
                            "start": {
                              "line": 29,
                              "column": 8
                            },
                            "end": {
                              "line": 29,
                              "column": 39
                            }
                          },
                          "range": [
                            874,
                            905
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 915,
                      "end": 944,
                      "loc": {
                        "start": {
                          "line": 30,
                          "column": 8
                        },
                        "end": {
                          "line": 30,
                          "column": 37
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 915,
                        "end": 943,
                        "loc": {
                          "start": {
                            "line": 30,
                            "column": 8
                          },
                          "end": {
                            "line": 30,
                            "column": 36
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 915,
                          "end": 927,
                          "loc": {
                            "start": {
                              "line": 30,
                              "column": 8
                            },
                            "end": {
                              "line": 30,
                              "column": 20
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 915,
                            "end": 921,
                            "loc": {
                              "start": {
                                "line": 30,
                                "column": 8
                              },
                              "end": {
                                "line": 30,
                                "column": 14
                              }
                            },
                            "name": "Events",
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 922,
                            "end": 927,
                            "loc": {
                              "start": {
                                "line": 30,
                                "column": 15
                              },
                              "end": {
                                "line": 30,
                                "column": 20
                              }
                            },
                            "name": "mixin"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "arguments": [
                          {
                            "type": "ThisExpression",
                            "start": 928,
                            "end": 932,
                            "loc": {
                              "start": {
                                "line": 30,
                                "column": 21
                              },
                              "end": {
                                "line": 30,
                                "column": 25
                              }
                            }
                          },
                          {
                            "type": "Identifier",
                            "start": 934,
                            "end": 942,
                            "loc": {
                              "start": {
                                "line": 30,
                                "column": 27
                              },
                              "end": {
                                "line": 30,
                                "column": 35
                              }
                            },
                            "name": "handlers"
                          }
                        ],
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Mix in event generic handler",
                          "start": 874,
                          "end": 905,
                          "loc": {
                            "start": {
                              "line": 29,
                              "column": 8
                            },
                            "end": {
                              "line": 29,
                              "column": 39
                            }
                          },
                          "range": [
                            874,
                            905
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Add internal dom event handlers",
                          "start": 956,
                          "end": 990,
                          "loc": {
                            "start": {
                              "line": 32,
                              "column": 8
                            },
                            "end": {
                              "line": 32,
                              "column": 42
                            }
                          },
                          "range": [
                            956,
                            990
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1000,
                      "end": 1048,
                      "loc": {
                        "start": {
                          "line": 33,
                          "column": 8
                        },
                        "end": {
                          "line": 33,
                          "column": 56
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1000,
                        "end": 1047,
                        "loc": {
                          "start": {
                            "line": 33,
                            "column": 8
                          },
                          "end": {
                            "line": 33,
                            "column": 55
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1000,
                          "end": 1017,
                          "loc": {
                            "start": {
                              "line": 33,
                              "column": 8
                            },
                            "end": {
                              "line": 33,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1000,
                            "end": 1004,
                            "loc": {
                              "start": {
                                "line": 33,
                                "column": 8
                              },
                              "end": {
                                "line": 33,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1005,
                            "end": 1017,
                            "loc": {
                              "start": {
                                "line": 33,
                                "column": 13
                              },
                              "end": {
                                "line": 33,
                                "column": 25
                              }
                            },
                            "name": "eventHandler"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 1020,
                          "end": 1047,
                          "loc": {
                            "start": {
                              "line": 33,
                              "column": 28
                            },
                            "end": {
                              "line": 33,
                              "column": 55
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 1020,
                            "end": 1041,
                            "loc": {
                              "start": {
                                "line": 33,
                                "column": 28
                              },
                              "end": {
                                "line": 33,
                                "column": 49
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 1020,
                              "end": 1036,
                              "loc": {
                                "start": {
                                  "line": 33,
                                  "column": 28
                                },
                                "end": {
                                  "line": 33,
                                  "column": 44
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 1020,
                                "end": 1024,
                                "loc": {
                                  "start": {
                                    "line": 33,
                                    "column": 28
                                  },
                                  "end": {
                                    "line": 33,
                                    "column": 32
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 1025,
                                "end": 1036,
                                "loc": {
                                  "start": {
                                    "line": 33,
                                    "column": 33
                                  },
                                  "end": {
                                    "line": 33,
                                    "column": 44
                                  }
                                },
                                "name": "handleEvent"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 1037,
                              "end": 1041,
                              "loc": {
                                "start": {
                                  "line": 33,
                                  "column": 45
                                },
                                "end": {
                                  "line": 33,
                                  "column": 49
                                }
                              },
                              "name": "bind"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "ThisExpression",
                              "start": 1042,
                              "end": 1046,
                              "loc": {
                                "start": {
                                  "line": 33,
                                  "column": 50
                                },
                                "end": {
                                  "line": 33,
                                  "column": 54
                                }
                              }
                            }
                          ]
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Add internal dom event handlers",
                          "start": 956,
                          "end": 990,
                          "loc": {
                            "start": {
                              "line": 32,
                              "column": 8
                            },
                            "end": {
                              "line": 32,
                              "column": 42
                            }
                          },
                          "range": [
                            956,
                            990
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1058,
                      "end": 1120,
                      "loc": {
                        "start": {
                          "line": 34,
                          "column": 8
                        },
                        "end": {
                          "line": 34,
                          "column": 70
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1058,
                        "end": 1119,
                        "loc": {
                          "start": {
                            "line": 34,
                            "column": 8
                          },
                          "end": {
                            "line": 34,
                            "column": 69
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1058,
                          "end": 1082,
                          "loc": {
                            "start": {
                              "line": 34,
                              "column": 8
                            },
                            "end": {
                              "line": 34,
                              "column": 32
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1058,
                            "end": 1062,
                            "loc": {
                              "start": {
                                "line": 34,
                                "column": 8
                              },
                              "end": {
                                "line": 34,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1063,
                            "end": 1082,
                            "loc": {
                              "start": {
                                "line": 34,
                                "column": 13
                              },
                              "end": {
                                "line": 34,
                                "column": 32
                              }
                            },
                            "name": "eventHandlerDefault"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "CallExpression",
                          "start": 1085,
                          "end": 1119,
                          "loc": {
                            "start": {
                              "line": 34,
                              "column": 35
                            },
                            "end": {
                              "line": 34,
                              "column": 69
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 1085,
                            "end": 1113,
                            "loc": {
                              "start": {
                                "line": 34,
                                "column": 35
                              },
                              "end": {
                                "line": 34,
                                "column": 63
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 1085,
                              "end": 1108,
                              "loc": {
                                "start": {
                                  "line": 34,
                                  "column": 35
                                },
                                "end": {
                                  "line": 34,
                                  "column": 58
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 1085,
                                "end": 1089,
                                "loc": {
                                  "start": {
                                    "line": 34,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 34,
                                    "column": 39
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 1090,
                                "end": 1108,
                                "loc": {
                                  "start": {
                                    "line": 34,
                                    "column": 40
                                  },
                                  "end": {
                                    "line": 34,
                                    "column": 58
                                  }
                                },
                                "name": "handleEventDefault"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 1109,
                              "end": 1113,
                              "loc": {
                                "start": {
                                  "line": 34,
                                  "column": 59
                                },
                                "end": {
                                  "line": 34,
                                  "column": 63
                                }
                              },
                              "name": "bind"
                            },
                            "computed": false
                          },
                          "arguments": [
                            {
                              "type": "ThisExpression",
                              "start": 1114,
                              "end": 1118,
                              "loc": {
                                "start": {
                                  "line": 34,
                                  "column": 64
                                },
                                "end": {
                                  "line": 34,
                                  "column": 68
                                }
                              }
                            }
                          ]
                        }
                      }
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 1130,
                      "end": 1347,
                      "loc": {
                        "start": {
                          "line": 35,
                          "column": 8
                        },
                        "end": {
                          "line": 41,
                          "column": 49
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 1134,
                          "end": 1346,
                          "loc": {
                            "start": {
                              "line": 35,
                              "column": 12
                            },
                            "end": {
                              "line": 41,
                              "column": 48
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 1134,
                            "end": 1147,
                            "loc": {
                              "start": {
                                "line": 35,
                                "column": 12
                              },
                              "end": {
                                "line": 35,
                                "column": 25
                              }
                            },
                            "name": "passiveStates"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 1150,
                            "end": 1346,
                            "loc": {
                              "start": {
                                "line": 35,
                                "column": 28
                              },
                              "end": {
                                "line": 41,
                                "column": 48
                              }
                            },
                            "callee": {
                              "type": "Identifier",
                              "start": 1150,
                              "end": 1162,
                              "loc": {
                                "start": {
                                  "line": 35,
                                  "column": 28
                                },
                                "end": {
                                  "line": 35,
                                  "column": 40
                                }
                              },
                              "name": "createStates"
                            },
                            "arguments": [
                              {
                                "type": "MemberExpression",
                                "start": 1163,
                                "end": 1171,
                                "loc": {
                                  "start": {
                                    "line": 35,
                                    "column": 41
                                  },
                                  "end": {
                                    "line": 35,
                                    "column": 49
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 1163,
                                  "end": 1167,
                                  "loc": {
                                    "start": {
                                      "line": 35,
                                      "column": 41
                                    },
                                    "end": {
                                      "line": 35,
                                      "column": 45
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 1168,
                                  "end": 1171,
                                  "loc": {
                                    "start": {
                                      "line": 35,
                                      "column": 46
                                    },
                                    "end": {
                                      "line": 35,
                                      "column": 49
                                    }
                                  },
                                  "name": "dom"
                                },
                                "computed": false
                              },
                              {
                                "type": "ArrayExpression",
                                "start": 1173,
                                "end": 1307,
                                "loc": {
                                  "start": {
                                    "line": 35,
                                    "column": 51
                                  },
                                  "end": {
                                    "line": 41,
                                    "column": 9
                                  }
                                },
                                "elements": [
                                  {
                                    "type": "Literal",
                                    "start": 1188,
                                    "end": 1199,
                                    "loc": {
                                      "start": {
                                        "line": 36,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 36,
                                        "column": 23
                                      }
                                    },
                                    "value": "mousedown",
                                    "rawValue": "mousedown",
                                    "raw": "'mousedown'"
                                  },
                                  {
                                    "type": "Literal",
                                    "start": 1214,
                                    "end": 1223,
                                    "loc": {
                                      "start": {
                                        "line": 37,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 37,
                                        "column": 21
                                      }
                                    },
                                    "value": "mouseup",
                                    "rawValue": "mouseup",
                                    "raw": "'mouseup'"
                                  },
                                  {
                                    "type": "Literal",
                                    "start": 1238,
                                    "end": 1249,
                                    "loc": {
                                      "start": {
                                        "line": 38,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 38,
                                        "column": 23
                                      }
                                    },
                                    "value": "mousemove",
                                    "rawValue": "mousemove",
                                    "raw": "'mousemove'"
                                  },
                                  {
                                    "type": "Literal",
                                    "start": 1264,
                                    "end": 1274,
                                    "loc": {
                                      "start": {
                                        "line": 39,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 39,
                                        "column": 22
                                      }
                                    },
                                    "value": "mouseout",
                                    "rawValue": "mouseout",
                                    "raw": "'mouseout'"
                                  },
                                  {
                                    "type": "Literal",
                                    "start": 1289,
                                    "end": 1296,
                                    "loc": {
                                      "start": {
                                        "line": 40,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 40,
                                        "column": 19
                                      }
                                    },
                                    "value": "wheel",
                                    "rawValue": "wheel",
                                    "raw": "'wheel'"
                                  }
                                ]
                              },
                              {
                                "type": "MemberExpression",
                                "start": 1309,
                                "end": 1326,
                                "loc": {
                                  "start": {
                                    "line": 41,
                                    "column": 11
                                  },
                                  "end": {
                                    "line": 41,
                                    "column": 28
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 1309,
                                  "end": 1313,
                                  "loc": {
                                    "start": {
                                      "line": 41,
                                      "column": 11
                                    },
                                    "end": {
                                      "line": 41,
                                      "column": 15
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 1314,
                                  "end": 1326,
                                  "loc": {
                                    "start": {
                                      "line": 41,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 41,
                                      "column": 28
                                    }
                                  },
                                  "name": "eventHandler"
                                },
                                "computed": false
                              },
                              {
                                "type": "ObjectExpression",
                                "start": 1328,
                                "end": 1345,
                                "loc": {
                                  "start": {
                                    "line": 41,
                                    "column": 30
                                  },
                                  "end": {
                                    "line": 41,
                                    "column": 47
                                  }
                                },
                                "properties": [
                                  {
                                    "type": "Property",
                                    "start": 1330,
                                    "end": 1343,
                                    "loc": {
                                      "start": {
                                        "line": 41,
                                        "column": 32
                                      },
                                      "end": {
                                        "line": 41,
                                        "column": 45
                                      }
                                    },
                                    "method": false,
                                    "shorthand": false,
                                    "computed": false,
                                    "key": {
                                      "type": "Identifier",
                                      "start": 1330,
                                      "end": 1337,
                                      "loc": {
                                        "start": {
                                          "line": 41,
                                          "column": 32
                                        },
                                        "end": {
                                          "line": 41,
                                          "column": 39
                                        }
                                      },
                                      "name": "passive"
                                    },
                                    "value": {
                                      "type": "Literal",
                                      "start": 1339,
                                      "end": 1343,
                                      "loc": {
                                        "start": {
                                          "line": 41,
                                          "column": 41
                                        },
                                        "end": {
                                          "line": 41,
                                          "column": 45
                                        }
                                      },
                                      "value": true,
                                      "rawValue": true,
                                      "raw": "true"
                                    },
                                    "kind": "init"
                                  }
                                ]
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "let"
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 1359,
                      "end": 1540,
                      "loc": {
                        "start": {
                          "line": 43,
                          "column": 8
                        },
                        "end": {
                          "line": 47,
                          "column": 57
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 1363,
                          "end": 1539,
                          "loc": {
                            "start": {
                              "line": 43,
                              "column": 12
                            },
                            "end": {
                              "line": 47,
                              "column": 56
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 1363,
                            "end": 1377,
                            "loc": {
                              "start": {
                                "line": 43,
                                "column": 12
                              },
                              "end": {
                                "line": 43,
                                "column": 26
                              }
                            },
                            "name": "standardStates"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 1380,
                            "end": 1539,
                            "loc": {
                              "start": {
                                "line": 43,
                                "column": 29
                              },
                              "end": {
                                "line": 47,
                                "column": 56
                              }
                            },
                            "callee": {
                              "type": "Identifier",
                              "start": 1380,
                              "end": 1392,
                              "loc": {
                                "start": {
                                  "line": 43,
                                  "column": 29
                                },
                                "end": {
                                  "line": 43,
                                  "column": 41
                                }
                              },
                              "name": "createStates"
                            },
                            "arguments": [
                              {
                                "type": "MemberExpression",
                                "start": 1393,
                                "end": 1401,
                                "loc": {
                                  "start": {
                                    "line": 43,
                                    "column": 42
                                  },
                                  "end": {
                                    "line": 43,
                                    "column": 50
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 1393,
                                  "end": 1397,
                                  "loc": {
                                    "start": {
                                      "line": 43,
                                      "column": 42
                                    },
                                    "end": {
                                      "line": 43,
                                      "column": 46
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 1398,
                                  "end": 1401,
                                  "loc": {
                                    "start": {
                                      "line": 43,
                                      "column": 47
                                    },
                                    "end": {
                                      "line": 43,
                                      "column": 50
                                    }
                                  },
                                  "name": "dom"
                                },
                                "computed": false
                              },
                              {
                                "type": "ArrayExpression",
                                "start": 1403,
                                "end": 1492,
                                "loc": {
                                  "start": {
                                    "line": 43,
                                    "column": 52
                                  },
                                  "end": {
                                    "line": 47,
                                    "column": 9
                                  }
                                },
                                "elements": [
                                  {
                                    "type": "Literal",
                                    "start": 1418,
                                    "end": 1430,
                                    "loc": {
                                      "start": {
                                        "line": 44,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 44,
                                        "column": 24
                                      }
                                    },
                                    "value": "touchstart",
                                    "rawValue": "touchstart",
                                    "raw": "'touchstart'"
                                  },
                                  {
                                    "type": "Literal",
                                    "start": 1445,
                                    "end": 1456,
                                    "loc": {
                                      "start": {
                                        "line": 45,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 45,
                                        "column": 23
                                      }
                                    },
                                    "value": "touchmove",
                                    "rawValue": "touchmove",
                                    "raw": "'touchmove'"
                                  },
                                  {
                                    "type": "Literal",
                                    "start": 1471,
                                    "end": 1481,
                                    "loc": {
                                      "start": {
                                        "line": 46,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 46,
                                        "column": 22
                                      }
                                    },
                                    "value": "touchend",
                                    "rawValue": "touchend",
                                    "raw": "'touchend'"
                                  }
                                ]
                              },
                              {
                                "type": "MemberExpression",
                                "start": 1494,
                                "end": 1518,
                                "loc": {
                                  "start": {
                                    "line": 47,
                                    "column": 11
                                  },
                                  "end": {
                                    "line": 47,
                                    "column": 35
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 1494,
                                  "end": 1498,
                                  "loc": {
                                    "start": {
                                      "line": 47,
                                      "column": 11
                                    },
                                    "end": {
                                      "line": 47,
                                      "column": 15
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 1499,
                                  "end": 1518,
                                  "loc": {
                                    "start": {
                                      "line": 47,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 47,
                                      "column": 35
                                    }
                                  },
                                  "name": "eventHandlerDefault"
                                },
                                "computed": false
                              },
                              {
                                "type": "ObjectExpression",
                                "start": 1520,
                                "end": 1538,
                                "loc": {
                                  "start": {
                                    "line": 47,
                                    "column": 37
                                  },
                                  "end": {
                                    "line": 47,
                                    "column": 55
                                  }
                                },
                                "properties": [
                                  {
                                    "type": "Property",
                                    "start": 1522,
                                    "end": 1536,
                                    "loc": {
                                      "start": {
                                        "line": 47,
                                        "column": 39
                                      },
                                      "end": {
                                        "line": 47,
                                        "column": 53
                                      }
                                    },
                                    "method": false,
                                    "shorthand": false,
                                    "computed": false,
                                    "key": {
                                      "type": "Identifier",
                                      "start": 1522,
                                      "end": 1529,
                                      "loc": {
                                        "start": {
                                          "line": 47,
                                          "column": 39
                                        },
                                        "end": {
                                          "line": 47,
                                          "column": 46
                                        }
                                      },
                                      "name": "passive"
                                    },
                                    "value": {
                                      "type": "Literal",
                                      "start": 1531,
                                      "end": 1536,
                                      "loc": {
                                        "start": {
                                          "line": 47,
                                          "column": 48
                                        },
                                        "end": {
                                          "line": 47,
                                          "column": 53
                                        }
                                      },
                                      "value": false,
                                      "rawValue": false,
                                      "raw": "false"
                                    },
                                    "kind": "init"
                                  }
                                ]
                              }
                            ]
                          }
                        }
                      ],
                      "kind": "let"
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1552,
                      "end": 1606,
                      "loc": {
                        "start": {
                          "line": 49,
                          "column": 8
                        },
                        "end": {
                          "line": 49,
                          "column": 62
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1552,
                        "end": 1605,
                        "loc": {
                          "start": {
                            "line": 49,
                            "column": 8
                          },
                          "end": {
                            "line": 49,
                            "column": 61
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1552,
                          "end": 1563,
                          "loc": {
                            "start": {
                              "line": 49,
                              "column": 8
                            },
                            "end": {
                              "line": 49,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1552,
                            "end": 1556,
                            "loc": {
                              "start": {
                                "line": 49,
                                "column": 8
                              },
                              "end": {
                                "line": 49,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1557,
                            "end": 1563,
                            "loc": {
                              "start": {
                                "line": 49,
                                "column": 13
                              },
                              "end": {
                                "line": 49,
                                "column": 19
                              }
                            },
                            "name": "states"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "ObjectExpression",
                          "start": 1566,
                          "end": 1605,
                          "loc": {
                            "start": {
                              "line": 49,
                              "column": 22
                            },
                            "end": {
                              "line": 49,
                              "column": 61
                            }
                          },
                          "properties": [
                            {
                              "type": "SpreadProperty",
                              "start": 1568,
                              "end": 1584,
                              "loc": {
                                "start": {
                                  "line": 49,
                                  "column": 24
                                },
                                "end": {
                                  "line": 49,
                                  "column": 40
                                }
                              },
                              "argument": {
                                "type": "Identifier",
                                "start": 1571,
                                "end": 1584,
                                "loc": {
                                  "start": {
                                    "line": 49,
                                    "column": 27
                                  },
                                  "end": {
                                    "line": 49,
                                    "column": 40
                                  }
                                },
                                "name": "passiveStates"
                              }
                            },
                            {
                              "type": "SpreadProperty",
                              "start": 1586,
                              "end": 1603,
                              "loc": {
                                "start": {
                                  "line": 49,
                                  "column": 42
                                },
                                "end": {
                                  "line": 49,
                                  "column": 59
                                }
                              },
                              "argument": {
                                "type": "Identifier",
                                "start": 1589,
                                "end": 1603,
                                "loc": {
                                  "start": {
                                    "line": 49,
                                    "column": 45
                                  },
                                  "end": {
                                    "line": 49,
                                    "column": 59
                                  }
                                },
                                "name": "standardStates"
                              }
                            }
                          ]
                        }
                      },
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Common last-state-data can be accessed here",
                          "start": 1618,
                          "end": 1664,
                          "loc": {
                            "start": {
                              "line": 51,
                              "column": 8
                            },
                            "end": {
                              "line": 51,
                              "column": 54
                            }
                          },
                          "range": [
                            1618,
                            1664
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1674,
                      "end": 1690,
                      "loc": {
                        "start": {
                          "line": 52,
                          "column": 8
                        },
                        "end": {
                          "line": 52,
                          "column": 24
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1674,
                        "end": 1689,
                        "loc": {
                          "start": {
                            "line": 52,
                            "column": 8
                          },
                          "end": {
                            "line": 52,
                            "column": 23
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1674,
                          "end": 1684,
                          "loc": {
                            "start": {
                              "line": 52,
                              "column": 8
                            },
                            "end": {
                              "line": 52,
                              "column": 18
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1674,
                            "end": 1678,
                            "loc": {
                              "start": {
                                "line": 52,
                                "column": 8
                              },
                              "end": {
                                "line": 52,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1679,
                            "end": 1684,
                            "loc": {
                              "start": {
                                "line": 52,
                                "column": 13
                              },
                              "end": {
                                "line": 52,
                                "column": 18
                              }
                            },
                            "name": "mouse"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "ObjectExpression",
                          "start": 1687,
                          "end": 1689,
                          "loc": {
                            "start": {
                              "line": 52,
                              "column": 21
                            },
                            "end": {
                              "line": 52,
                              "column": 23
                            }
                          },
                          "properties": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Common last-state-data can be accessed here",
                          "start": 1618,
                          "end": 1664,
                          "loc": {
                            "start": {
                              "line": 51,
                              "column": 8
                            },
                            "end": {
                              "line": 51,
                              "column": 54
                            }
                          },
                          "range": [
                            1618,
                            1664
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1700,
                      "end": 1716,
                      "loc": {
                        "start": {
                          "line": 53,
                          "column": 8
                        },
                        "end": {
                          "line": 53,
                          "column": 24
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1700,
                        "end": 1715,
                        "loc": {
                          "start": {
                            "line": 53,
                            "column": 8
                          },
                          "end": {
                            "line": 53,
                            "column": 23
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1700,
                          "end": 1710,
                          "loc": {
                            "start": {
                              "line": 53,
                              "column": 8
                            },
                            "end": {
                              "line": 53,
                              "column": 18
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1700,
                            "end": 1704,
                            "loc": {
                              "start": {
                                "line": 53,
                                "column": 8
                              },
                              "end": {
                                "line": 53,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1705,
                            "end": 1710,
                            "loc": {
                              "start": {
                                "line": 53,
                                "column": 13
                              },
                              "end": {
                                "line": 53,
                                "column": 18
                              }
                            },
                            "name": "wheel"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "ObjectExpression",
                          "start": 1713,
                          "end": 1715,
                          "loc": {
                            "start": {
                              "line": 53,
                              "column": 21
                            },
                            "end": {
                              "line": 53,
                              "column": 23
                            }
                          },
                          "properties": []
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1726,
                      "end": 1742,
                      "loc": {
                        "start": {
                          "line": 54,
                          "column": 8
                        },
                        "end": {
                          "line": 54,
                          "column": 24
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1726,
                        "end": 1741,
                        "loc": {
                          "start": {
                            "line": 54,
                            "column": 8
                          },
                          "end": {
                            "line": 54,
                            "column": 23
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1726,
                          "end": 1736,
                          "loc": {
                            "start": {
                              "line": 54,
                              "column": 8
                            },
                            "end": {
                              "line": 54,
                              "column": 18
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1726,
                            "end": 1730,
                            "loc": {
                              "start": {
                                "line": 54,
                                "column": 8
                              },
                              "end": {
                                "line": 54,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1731,
                            "end": 1736,
                            "loc": {
                              "start": {
                                "line": 54,
                                "column": 13
                              },
                              "end": {
                                "line": 54,
                                "column": 18
                              }
                            },
                            "name": "touch"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "ObjectExpression",
                          "start": 1739,
                          "end": 1741,
                          "loc": {
                            "start": {
                              "line": 54,
                              "column": 21
                            },
                            "end": {
                              "line": 54,
                              "column": 23
                            }
                          },
                          "properties": []
                        }
                      },
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Array of changes to be called on next update",
                          "start": 1754,
                          "end": 1801,
                          "loc": {
                            "start": {
                              "line": 56,
                              "column": 8
                            },
                            "end": {
                              "line": 56,
                              "column": 55
                            }
                          },
                          "range": [
                            1754,
                            1801
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1811,
                      "end": 1829,
                      "loc": {
                        "start": {
                          "line": 57,
                          "column": 8
                        },
                        "end": {
                          "line": 57,
                          "column": 26
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1811,
                        "end": 1828,
                        "loc": {
                          "start": {
                            "line": 57,
                            "column": 8
                          },
                          "end": {
                            "line": 57,
                            "column": 25
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1811,
                          "end": 1823,
                          "loc": {
                            "start": {
                              "line": 57,
                              "column": 8
                            },
                            "end": {
                              "line": 57,
                              "column": 20
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 1811,
                            "end": 1815,
                            "loc": {
                              "start": {
                                "line": 57,
                                "column": 8
                              },
                              "end": {
                                "line": 57,
                                "column": 12
                              }
                            },
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1816,
                            "end": 1823,
                            "loc": {
                              "start": {
                                "line": 57,
                                "column": 13
                              },
                              "end": {
                                "line": 57,
                                "column": 20
                              }
                            },
                            "name": "changes"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "ArrayExpression",
                          "start": 1826,
                          "end": 1828,
                          "loc": {
                            "start": {
                              "line": 57,
                              "column": 23
                            },
                            "end": {
                              "line": 57,
                              "column": 25
                            }
                          },
                          "elements": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Array of changes to be called on next update",
                          "start": 1754,
                          "end": 1801,
                          "loc": {
                            "start": {
                              "line": 56,
                              "column": 8
                            },
                            "end": {
                              "line": 56,
                              "column": 55
                            }
                          },
                          "range": [
                            1754,
                            1801
                          ]
                        }
                      ]
                    }
                  ],
                  "trailingComments": null
                },
                "trailingComments": null
              },
              "trailingComments": [
                {
                  "type": "CommentLine",
                  "value": " This seems to be buggy, doesn't detach mouse event handlers for some weird reason",
                  "start": 1844,
                  "end": 1928,
                  "loc": {
                    "start": {
                      "line": 60,
                      "column": 4
                    },
                    "end": {
                      "line": 60,
                      "column": 88
                    }
                  },
                  "range": [
                    1844,
                    1928
                  ]
                }
              ]
            },
            {
              "type": "MethodDefinition",
              "start": 1934,
              "end": 2029,
              "loc": {
                "start": {
                  "line": 61,
                  "column": 4
                },
                "end": {
                  "line": 64,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 1934,
                "end": 1940,
                "loc": {
                  "start": {
                    "line": 61,
                    "column": 4
                  },
                  "end": {
                    "line": 61,
                    "column": 10
                  }
                },
                "name": "detach",
                "leadingComments": null
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 1940,
                "end": 2029,
                "loc": {
                  "start": {
                    "line": 61,
                    "column": 10
                  },
                  "end": {
                    "line": 64,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 1943,
                  "end": 2029,
                  "loc": {
                    "start": {
                      "line": 61,
                      "column": 13
                    },
                    "end": {
                      "line": 64,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ForInStatement",
                      "start": 1954,
                      "end": 2022,
                      "loc": {
                        "start": {
                          "line": 62,
                          "column": 8
                        },
                        "end": {
                          "line": 63,
                          "column": 38
                        }
                      },
                      "left": {
                        "type": "VariableDeclaration",
                        "start": 1959,
                        "end": 1966,
                        "loc": {
                          "start": {
                            "line": 62,
                            "column": 13
                          },
                          "end": {
                            "line": 62,
                            "column": 20
                          }
                        },
                        "declarations": [
                          {
                            "type": "VariableDeclarator",
                            "start": 1963,
                            "end": 1966,
                            "loc": {
                              "start": {
                                "line": 62,
                                "column": 17
                              },
                              "end": {
                                "line": 62,
                                "column": 20
                              }
                            },
                            "id": {
                              "type": "Identifier",
                              "start": 1963,
                              "end": 1966,
                              "loc": {
                                "start": {
                                  "line": 62,
                                  "column": 17
                                },
                                "end": {
                                  "line": 62,
                                  "column": 20
                                }
                              },
                              "name": "key"
                            },
                            "init": null
                          }
                        ],
                        "kind": "let"
                      },
                      "right": {
                        "type": "MemberExpression",
                        "start": 1970,
                        "end": 1981,
                        "loc": {
                          "start": {
                            "line": 62,
                            "column": 24
                          },
                          "end": {
                            "line": 62,
                            "column": 35
                          }
                        },
                        "object": {
                          "type": "ThisExpression",
                          "start": 1970,
                          "end": 1974,
                          "loc": {
                            "start": {
                              "line": 62,
                              "column": 24
                            },
                            "end": {
                              "line": 62,
                              "column": 28
                            }
                          }
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 1975,
                          "end": 1981,
                          "loc": {
                            "start": {
                              "line": 62,
                              "column": 29
                            },
                            "end": {
                              "line": 62,
                              "column": 35
                            }
                          },
                          "name": "states"
                        },
                        "computed": false
                      },
                      "body": {
                        "type": "ExpressionStatement",
                        "start": 1996,
                        "end": 2022,
                        "loc": {
                          "start": {
                            "line": 63,
                            "column": 12
                          },
                          "end": {
                            "line": 63,
                            "column": 38
                          }
                        },
                        "expression": {
                          "type": "CallExpression",
                          "start": 1996,
                          "end": 2021,
                          "loc": {
                            "start": {
                              "line": 63,
                              "column": 12
                            },
                            "end": {
                              "line": 63,
                              "column": 37
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 1996,
                            "end": 2019,
                            "loc": {
                              "start": {
                                "line": 63,
                                "column": 12
                              },
                              "end": {
                                "line": 63,
                                "column": 35
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 1996,
                              "end": 2012,
                              "loc": {
                                "start": {
                                  "line": 63,
                                  "column": 12
                                },
                                "end": {
                                  "line": 63,
                                  "column": 28
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 1996,
                                "end": 2007,
                                "loc": {
                                  "start": {
                                    "line": 63,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 63,
                                    "column": 23
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 1996,
                                  "end": 2000,
                                  "loc": {
                                    "start": {
                                      "line": 63,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 63,
                                      "column": 16
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2001,
                                  "end": 2007,
                                  "loc": {
                                    "start": {
                                      "line": 63,
                                      "column": 17
                                    },
                                    "end": {
                                      "line": 63,
                                      "column": 23
                                    }
                                  },
                                  "name": "states"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 2008,
                                "end": 2011,
                                "loc": {
                                  "start": {
                                    "line": 63,
                                    "column": 24
                                  },
                                  "end": {
                                    "line": 63,
                                    "column": 27
                                  }
                                },
                                "name": "key"
                              },
                              "computed": true
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 2013,
                              "end": 2019,
                              "loc": {
                                "start": {
                                  "line": 63,
                                  "column": 29
                                },
                                "end": {
                                  "line": 63,
                                  "column": 35
                                }
                              },
                              "name": "detach"
                            },
                            "computed": false
                          },
                          "arguments": []
                        }
                      }
                    }
                  ]
                }
              },
              "leadingComments": [
                {
                  "type": "CommentLine",
                  "value": " This seems to be buggy, doesn't detach mouse event handlers for some weird reason",
                  "start": 1844,
                  "end": 1928,
                  "loc": {
                    "start": {
                      "line": 60,
                      "column": 4
                    },
                    "end": {
                      "line": 60,
                      "column": 88
                    }
                  },
                  "range": [
                    1844,
                    1928
                  ]
                }
              ]
            },
            {
              "type": "MethodDefinition",
              "start": 2037,
              "end": 2292,
              "loc": {
                "start": {
                  "line": 66,
                  "column": 4
                },
                "end": {
                  "line": 74,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 2037,
                "end": 2043,
                "loc": {
                  "start": {
                    "line": 66,
                    "column": 4
                  },
                  "end": {
                    "line": 66,
                    "column": 10
                  }
                },
                "name": "update"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 2043,
                "end": 2292,
                "loc": {
                  "start": {
                    "line": 66,
                    "column": 10
                  },
                  "end": {
                    "line": 74,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [],
                "body": {
                  "type": "BlockStatement",
                  "start": 2046,
                  "end": 2292,
                  "loc": {
                    "start": {
                      "line": 66,
                      "column": 13
                    },
                    "end": {
                      "line": 74,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "IfStatement",
                      "start": 2057,
                      "end": 2285,
                      "loc": {
                        "start": {
                          "line": 67,
                          "column": 8
                        },
                        "end": {
                          "line": 73,
                          "column": 9
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 2061,
                        "end": 2084,
                        "loc": {
                          "start": {
                            "line": 67,
                            "column": 12
                          },
                          "end": {
                            "line": 67,
                            "column": 35
                          }
                        },
                        "left": {
                          "type": "MemberExpression",
                          "start": 2061,
                          "end": 2080,
                          "loc": {
                            "start": {
                              "line": 67,
                              "column": 12
                            },
                            "end": {
                              "line": 67,
                              "column": 31
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 2061,
                            "end": 2073,
                            "loc": {
                              "start": {
                                "line": 67,
                                "column": 12
                              },
                              "end": {
                                "line": 67,
                                "column": 24
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 2061,
                              "end": 2065,
                              "loc": {
                                "start": {
                                  "line": 67,
                                  "column": 12
                                },
                                "end": {
                                  "line": 67,
                                  "column": 16
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 2066,
                              "end": 2073,
                              "loc": {
                                "start": {
                                  "line": 67,
                                  "column": 17
                                },
                                "end": {
                                  "line": 67,
                                  "column": 24
                                }
                              },
                              "name": "changes"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2074,
                            "end": 2080,
                            "loc": {
                              "start": {
                                "line": 67,
                                "column": 25
                              },
                              "end": {
                                "line": 67,
                                "column": 31
                              }
                            },
                            "name": "length"
                          },
                          "computed": false
                        },
                        "operator": ">",
                        "right": {
                          "type": "Literal",
                          "start": 2083,
                          "end": 2084,
                          "loc": {
                            "start": {
                              "line": 67,
                              "column": 34
                            },
                            "end": {
                              "line": 67,
                              "column": 35
                            }
                          },
                          "value": 0,
                          "rawValue": 0,
                          "raw": "0"
                        }
                      },
                      "consequent": {
                        "type": "BlockStatement",
                        "start": 2086,
                        "end": 2285,
                        "loc": {
                          "start": {
                            "line": 67,
                            "column": 37
                          },
                          "end": {
                            "line": 73,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "ForOfStatement",
                            "start": 2101,
                            "end": 2242,
                            "loc": {
                              "start": {
                                "line": 68,
                                "column": 12
                              },
                              "end": {
                                "line": 71,
                                "column": 13
                              }
                            },
                            "left": {
                              "type": "VariableDeclaration",
                              "start": 2106,
                              "end": 2116,
                              "loc": {
                                "start": {
                                  "line": 68,
                                  "column": 17
                                },
                                "end": {
                                  "line": 68,
                                  "column": 27
                                }
                              },
                              "declarations": [
                                {
                                  "type": "VariableDeclarator",
                                  "start": 2110,
                                  "end": 2116,
                                  "loc": {
                                    "start": {
                                      "line": 68,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 68,
                                      "column": 27
                                    }
                                  },
                                  "id": {
                                    "type": "Identifier",
                                    "start": 2110,
                                    "end": 2116,
                                    "loc": {
                                      "start": {
                                        "line": 68,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 68,
                                        "column": 27
                                      }
                                    },
                                    "name": "change"
                                  },
                                  "init": null
                                }
                              ],
                              "kind": "let"
                            },
                            "right": {
                              "type": "MemberExpression",
                              "start": 2120,
                              "end": 2132,
                              "loc": {
                                "start": {
                                  "line": 68,
                                  "column": 31
                                },
                                "end": {
                                  "line": 68,
                                  "column": 43
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 2120,
                                "end": 2124,
                                "loc": {
                                  "start": {
                                    "line": 68,
                                    "column": 31
                                  },
                                  "end": {
                                    "line": 68,
                                    "column": 35
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 2125,
                                "end": 2132,
                                "loc": {
                                  "start": {
                                    "line": 68,
                                    "column": 36
                                  },
                                  "end": {
                                    "line": 68,
                                    "column": 43
                                  }
                                },
                                "name": "changes"
                              },
                              "computed": false
                            },
                            "body": {
                              "type": "BlockStatement",
                              "start": 2134,
                              "end": 2242,
                              "loc": {
                                "start": {
                                  "line": 68,
                                  "column": 45
                                },
                                "end": {
                                  "line": 71,
                                  "column": 13
                                }
                              },
                              "body": [
                                {
                                  "type": "ExpressionStatement",
                                  "start": 2153,
                                  "end": 2184,
                                  "loc": {
                                    "start": {
                                      "line": 69,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 69,
                                      "column": 47
                                    }
                                  },
                                  "expression": {
                                    "type": "CallExpression",
                                    "start": 2153,
                                    "end": 2183,
                                    "loc": {
                                      "start": {
                                        "line": 69,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 69,
                                        "column": 46
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 2153,
                                      "end": 2162,
                                      "loc": {
                                        "start": {
                                          "line": 69,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 69,
                                          "column": 25
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 2153,
                                        "end": 2157,
                                        "loc": {
                                          "start": {
                                            "line": 69,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 69,
                                            "column": 20
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2158,
                                        "end": 2162,
                                        "loc": {
                                          "start": {
                                            "line": 69,
                                            "column": 21
                                          },
                                          "end": {
                                            "line": 69,
                                            "column": 25
                                          }
                                        },
                                        "name": "emit"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "MemberExpression",
                                        "start": 2163,
                                        "end": 2174,
                                        "loc": {
                                          "start": {
                                            "line": 69,
                                            "column": 26
                                          },
                                          "end": {
                                            "line": 69,
                                            "column": 37
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 2163,
                                          "end": 2169,
                                          "loc": {
                                            "start": {
                                              "line": 69,
                                              "column": 26
                                            },
                                            "end": {
                                              "line": 69,
                                              "column": 32
                                            }
                                          },
                                          "name": "change"
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 2170,
                                          "end": 2174,
                                          "loc": {
                                            "start": {
                                              "line": 69,
                                              "column": 33
                                            },
                                            "end": {
                                              "line": 69,
                                              "column": 37
                                            }
                                          },
                                          "name": "type"
                                        },
                                        "computed": false
                                      },
                                      {
                                        "type": "Identifier",
                                        "start": 2176,
                                        "end": 2182,
                                        "loc": {
                                          "start": {
                                            "line": 69,
                                            "column": 39
                                          },
                                          "end": {
                                            "line": 69,
                                            "column": 45
                                          }
                                        },
                                        "name": "change"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 2202,
                                  "end": 2227,
                                  "loc": {
                                    "start": {
                                      "line": 70,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 70,
                                      "column": 41
                                    }
                                  },
                                  "expression": {
                                    "type": "AssignmentExpression",
                                    "start": 2202,
                                    "end": 2226,
                                    "loc": {
                                      "start": {
                                        "line": 70,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 70,
                                        "column": 40
                                      }
                                    },
                                    "operator": "=",
                                    "left": {
                                      "type": "MemberExpression",
                                      "start": 2202,
                                      "end": 2218,
                                      "loc": {
                                        "start": {
                                          "line": 70,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 70,
                                          "column": 32
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 2202,
                                        "end": 2208,
                                        "loc": {
                                          "start": {
                                            "line": 70,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 70,
                                            "column": 22
                                          }
                                        },
                                        "name": "change"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 2209,
                                        "end": 2218,
                                        "loc": {
                                          "start": {
                                            "line": 70,
                                            "column": 23
                                          },
                                          "end": {
                                            "line": 70,
                                            "column": 32
                                          }
                                        },
                                        "name": "fulfilled"
                                      },
                                      "computed": false
                                    },
                                    "right": {
                                      "type": "Literal",
                                      "start": 2221,
                                      "end": 2226,
                                      "loc": {
                                        "start": {
                                          "line": 70,
                                          "column": 35
                                        },
                                        "end": {
                                          "line": 70,
                                          "column": 40
                                        }
                                      },
                                      "value": false,
                                      "rawValue": false,
                                      "raw": "false"
                                    }
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "type": "ExpressionStatement",
                            "start": 2256,
                            "end": 2274,
                            "loc": {
                              "start": {
                                "line": 72,
                                "column": 12
                              },
                              "end": {
                                "line": 72,
                                "column": 30
                              }
                            },
                            "expression": {
                              "type": "AssignmentExpression",
                              "start": 2256,
                              "end": 2273,
                              "loc": {
                                "start": {
                                  "line": 72,
                                  "column": 12
                                },
                                "end": {
                                  "line": 72,
                                  "column": 29
                                }
                              },
                              "operator": "=",
                              "left": {
                                "type": "MemberExpression",
                                "start": 2256,
                                "end": 2268,
                                "loc": {
                                  "start": {
                                    "line": 72,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 72,
                                    "column": 24
                                  }
                                },
                                "object": {
                                  "type": "ThisExpression",
                                  "start": 2256,
                                  "end": 2260,
                                  "loc": {
                                    "start": {
                                      "line": 72,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 72,
                                      "column": 16
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2261,
                                  "end": 2268,
                                  "loc": {
                                    "start": {
                                      "line": 72,
                                      "column": 17
                                    },
                                    "end": {
                                      "line": 72,
                                      "column": 24
                                    }
                                  },
                                  "name": "changes"
                                },
                                "computed": false
                              },
                              "right": {
                                "type": "ArrayExpression",
                                "start": 2271,
                                "end": 2273,
                                "loc": {
                                  "start": {
                                    "line": 72,
                                    "column": 27
                                  },
                                  "end": {
                                    "line": 72,
                                    "column": 29
                                  }
                                },
                                "elements": []
                              }
                            }
                          }
                        ]
                      },
                      "alternate": null
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 2300,
              "end": 2401,
              "loc": {
                "start": {
                  "line": 76,
                  "column": 4
                },
                "end": {
                  "line": 79,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 2300,
                "end": 2318,
                "loc": {
                  "start": {
                    "line": 76,
                    "column": 4
                  },
                  "end": {
                    "line": 76,
                    "column": 22
                  }
                },
                "name": "handleEventDefault"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 2318,
                "end": 2401,
                "loc": {
                  "start": {
                    "line": 76,
                    "column": 22
                  },
                  "end": {
                    "line": 79,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 2319,
                    "end": 2324,
                    "loc": {
                      "start": {
                        "line": 76,
                        "column": 23
                      },
                      "end": {
                        "line": 76,
                        "column": 28
                      }
                    },
                    "name": "event"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 2326,
                  "end": 2401,
                  "loc": {
                    "start": {
                      "line": 76,
                      "column": 30
                    },
                    "end": {
                      "line": 79,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 2337,
                      "end": 2360,
                      "loc": {
                        "start": {
                          "line": 77,
                          "column": 8
                        },
                        "end": {
                          "line": 77,
                          "column": 31
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 2337,
                        "end": 2359,
                        "loc": {
                          "start": {
                            "line": 77,
                            "column": 8
                          },
                          "end": {
                            "line": 77,
                            "column": 30
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 2337,
                          "end": 2357,
                          "loc": {
                            "start": {
                              "line": 77,
                              "column": 8
                            },
                            "end": {
                              "line": 77,
                              "column": 28
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 2337,
                            "end": 2342,
                            "loc": {
                              "start": {
                                "line": 77,
                                "column": 8
                              },
                              "end": {
                                "line": 77,
                                "column": 13
                              }
                            },
                            "name": "event"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2343,
                            "end": 2357,
                            "loc": {
                              "start": {
                                "line": 77,
                                "column": 14
                              },
                              "end": {
                                "line": 77,
                                "column": 28
                              }
                            },
                            "name": "preventDefault"
                          },
                          "computed": false
                        },
                        "arguments": []
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 2370,
                      "end": 2394,
                      "loc": {
                        "start": {
                          "line": 78,
                          "column": 8
                        },
                        "end": {
                          "line": 78,
                          "column": 32
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 2370,
                        "end": 2393,
                        "loc": {
                          "start": {
                            "line": 78,
                            "column": 8
                          },
                          "end": {
                            "line": 78,
                            "column": 31
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 2370,
                          "end": 2386,
                          "loc": {
                            "start": {
                              "line": 78,
                              "column": 8
                            },
                            "end": {
                              "line": 78,
                              "column": 24
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 2370,
                            "end": 2374,
                            "loc": {
                              "start": {
                                "line": 78,
                                "column": 8
                              },
                              "end": {
                                "line": 78,
                                "column": 12
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2375,
                            "end": 2386,
                            "loc": {
                              "start": {
                                "line": 78,
                                "column": 13
                              },
                              "end": {
                                "line": 78,
                                "column": 24
                              }
                            },
                            "name": "handleEvent"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 2387,
                            "end": 2392,
                            "loc": {
                              "start": {
                                "line": 78,
                                "column": 25
                              },
                              "end": {
                                "line": 78,
                                "column": 30
                              }
                            },
                            "name": "event"
                          }
                        ]
                      }
                    }
                  ]
                }
              }
            },
            {
              "type": "MethodDefinition",
              "start": 2409,
              "end": 5546,
              "loc": {
                "start": {
                  "line": 81,
                  "column": 4
                },
                "end": {
                  "line": 159,
                  "column": 5
                }
              },
              "computed": false,
              "key": {
                "type": "Identifier",
                "start": 2409,
                "end": 2420,
                "loc": {
                  "start": {
                    "line": 81,
                    "column": 4
                  },
                  "end": {
                    "line": 81,
                    "column": 15
                  }
                },
                "name": "handleEvent"
              },
              "static": false,
              "kind": "method",
              "value": {
                "type": "FunctionExpression",
                "start": 2420,
                "end": 5546,
                "loc": {
                  "start": {
                    "line": 81,
                    "column": 15
                  },
                  "end": {
                    "line": 159,
                    "column": 5
                  }
                },
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 2421,
                    "end": 2426,
                    "loc": {
                      "start": {
                        "line": 81,
                        "column": 16
                      },
                      "end": {
                        "line": 81,
                        "column": 21
                      }
                    },
                    "name": "event"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 2428,
                  "end": 5546,
                  "loc": {
                    "start": {
                      "line": 81,
                      "column": 23
                    },
                    "end": {
                      "line": 159,
                      "column": 5
                    }
                  },
                  "body": [
                    {
                      "type": "IfStatement",
                      "start": 2439,
                      "end": 2478,
                      "loc": {
                        "start": {
                          "line": 82,
                          "column": 8
                        },
                        "end": {
                          "line": 83,
                          "column": 19
                        }
                      },
                      "test": {
                        "type": "UnaryExpression",
                        "start": 2443,
                        "end": 2456,
                        "loc": {
                          "start": {
                            "line": 82,
                            "column": 12
                          },
                          "end": {
                            "line": 82,
                            "column": 25
                          }
                        },
                        "operator": "!",
                        "prefix": true,
                        "argument": {
                          "type": "MemberExpression",
                          "start": 2444,
                          "end": 2456,
                          "loc": {
                            "start": {
                              "line": 82,
                              "column": 13
                            },
                            "end": {
                              "line": 82,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 2444,
                            "end": 2448,
                            "loc": {
                              "start": {
                                "line": 82,
                                "column": 13
                              },
                              "end": {
                                "line": 82,
                                "column": 17
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2449,
                            "end": 2456,
                            "loc": {
                              "start": {
                                "line": 82,
                                "column": 18
                              },
                              "end": {
                                "line": 82,
                                "column": 25
                              }
                            },
                            "name": "enabled"
                          },
                          "computed": false
                        }
                      },
                      "consequent": {
                        "type": "ReturnStatement",
                        "start": 2471,
                        "end": 2478,
                        "loc": {
                          "start": {
                            "line": 83,
                            "column": 12
                          },
                          "end": {
                            "line": 83,
                            "column": 19
                          }
                        },
                        "argument": null
                      },
                      "alternate": null
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 2488,
                      "end": 2575,
                      "loc": {
                        "start": {
                          "line": 84,
                          "column": 8
                        },
                        "end": {
                          "line": 84,
                          "column": 95
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 2492,
                          "end": 2574,
                          "loc": {
                            "start": {
                              "line": 84,
                              "column": 12
                            },
                            "end": {
                              "line": 84,
                              "column": 94
                            }
                          },
                          "id": {
                            "type": "ObjectPattern",
                            "start": 2492,
                            "end": 2566,
                            "loc": {
                              "start": {
                                "line": 84,
                                "column": 12
                              },
                              "end": {
                                "line": 84,
                                "column": 86
                              }
                            },
                            "properties": [
                              {
                                "type": "Property",
                                "start": 2494,
                                "end": 2498,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 14
                                  },
                                  "end": {
                                    "line": 84,
                                    "column": 18
                                  }
                                },
                                "method": false,
                                "shorthand": true,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 2494,
                                  "end": 2498,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 14
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 18
                                    }
                                  },
                                  "name": "type"
                                },
                                "kind": "init",
                                "value": {
                                  "type": "Identifier",
                                  "start": 2494,
                                  "end": 2498,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 14
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 18
                                    }
                                  },
                                  "name": "type"
                                }
                              },
                              {
                                "type": "Property",
                                "start": 2500,
                                "end": 2505,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 84,
                                    "column": 25
                                  }
                                },
                                "method": false,
                                "shorthand": true,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 2500,
                                  "end": 2505,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 25
                                    }
                                  },
                                  "name": "pageX"
                                },
                                "kind": "init",
                                "value": {
                                  "type": "Identifier",
                                  "start": 2500,
                                  "end": 2505,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 25
                                    }
                                  },
                                  "name": "pageX"
                                }
                              },
                              {
                                "type": "Property",
                                "start": 2507,
                                "end": 2512,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 27
                                  },
                                  "end": {
                                    "line": 84,
                                    "column": 32
                                  }
                                },
                                "method": false,
                                "shorthand": true,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 2507,
                                  "end": 2512,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 27
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 32
                                    }
                                  },
                                  "name": "pageY"
                                },
                                "kind": "init",
                                "value": {
                                  "type": "Identifier",
                                  "start": 2507,
                                  "end": 2512,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 27
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 32
                                    }
                                  },
                                  "name": "pageY"
                                }
                              },
                              {
                                "type": "Property",
                                "start": 2514,
                                "end": 2521,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 34
                                  },
                                  "end": {
                                    "line": 84,
                                    "column": 41
                                  }
                                },
                                "method": false,
                                "shorthand": true,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 2514,
                                  "end": 2521,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 34
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 41
                                    }
                                  },
                                  "name": "clientX"
                                },
                                "kind": "init",
                                "value": {
                                  "type": "Identifier",
                                  "start": 2514,
                                  "end": 2521,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 34
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 41
                                    }
                                  },
                                  "name": "clientX"
                                }
                              },
                              {
                                "type": "Property",
                                "start": 2523,
                                "end": 2530,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 43
                                  },
                                  "end": {
                                    "line": 84,
                                    "column": 50
                                  }
                                },
                                "method": false,
                                "shorthand": true,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 2523,
                                  "end": 2530,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 43
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 50
                                    }
                                  },
                                  "name": "clientY"
                                },
                                "kind": "init",
                                "value": {
                                  "type": "Identifier",
                                  "start": 2523,
                                  "end": 2530,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 43
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 50
                                    }
                                  },
                                  "name": "clientY"
                                }
                              },
                              {
                                "type": "Property",
                                "start": 2532,
                                "end": 2538,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 52
                                  },
                                  "end": {
                                    "line": 84,
                                    "column": 58
                                  }
                                },
                                "method": false,
                                "shorthand": true,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 2532,
                                  "end": 2538,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 52
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 58
                                    }
                                  },
                                  "name": "button"
                                },
                                "kind": "init",
                                "value": {
                                  "type": "Identifier",
                                  "start": 2532,
                                  "end": 2538,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 52
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 58
                                    }
                                  },
                                  "name": "button"
                                }
                              },
                              {
                                "type": "Property",
                                "start": 2540,
                                "end": 2545,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 60
                                  },
                                  "end": {
                                    "line": 84,
                                    "column": 65
                                  }
                                },
                                "method": false,
                                "shorthand": true,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 2540,
                                  "end": 2545,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 60
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 65
                                    }
                                  },
                                  "name": "which"
                                },
                                "kind": "init",
                                "value": {
                                  "type": "Identifier",
                                  "start": 2540,
                                  "end": 2545,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 60
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 65
                                    }
                                  },
                                  "name": "which"
                                }
                              },
                              {
                                "type": "Property",
                                "start": 2547,
                                "end": 2556,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 67
                                  },
                                  "end": {
                                    "line": 84,
                                    "column": 76
                                  }
                                },
                                "method": false,
                                "shorthand": true,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 2547,
                                  "end": 2556,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 67
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 76
                                    }
                                  },
                                  "name": "deltaMode"
                                },
                                "kind": "init",
                                "value": {
                                  "type": "Identifier",
                                  "start": 2547,
                                  "end": 2556,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 67
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 76
                                    }
                                  },
                                  "name": "deltaMode"
                                }
                              },
                              {
                                "type": "Property",
                                "start": 2558,
                                "end": 2564,
                                "loc": {
                                  "start": {
                                    "line": 84,
                                    "column": 78
                                  },
                                  "end": {
                                    "line": 84,
                                    "column": 84
                                  }
                                },
                                "method": false,
                                "shorthand": true,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 2558,
                                  "end": 2564,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 78
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 84
                                    }
                                  },
                                  "name": "deltaY"
                                },
                                "kind": "init",
                                "value": {
                                  "type": "Identifier",
                                  "start": 2558,
                                  "end": 2564,
                                  "loc": {
                                    "start": {
                                      "line": 84,
                                      "column": 78
                                    },
                                    "end": {
                                      "line": 84,
                                      "column": 84
                                    }
                                  },
                                  "name": "deltaY"
                                }
                              }
                            ]
                          },
                          "init": {
                            "type": "Identifier",
                            "start": 2569,
                            "end": 2574,
                            "loc": {
                              "start": {
                                "line": 84,
                                "column": 89
                              },
                              "end": {
                                "line": 84,
                                "column": 94
                              }
                            },
                            "name": "event"
                          }
                        }
                      ],
                      "kind": "let"
                    },
                    {
                      "type": "VariableDeclaration",
                      "start": 2585,
                      "end": 2615,
                      "loc": {
                        "start": {
                          "line": 85,
                          "column": 8
                        },
                        "end": {
                          "line": 85,
                          "column": 38
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 2589,
                          "end": 2614,
                          "loc": {
                            "start": {
                              "line": 85,
                              "column": 12
                            },
                            "end": {
                              "line": 85,
                              "column": 37
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 2589,
                            "end": 2594,
                            "loc": {
                              "start": {
                                "line": 85,
                                "column": 12
                              },
                              "end": {
                                "line": 85,
                                "column": 17
                              }
                            },
                            "name": "state"
                          },
                          "init": {
                            "type": "MemberExpression",
                            "start": 2597,
                            "end": 2614,
                            "loc": {
                              "start": {
                                "line": 85,
                                "column": 20
                              },
                              "end": {
                                "line": 85,
                                "column": 37
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 2597,
                              "end": 2608,
                              "loc": {
                                "start": {
                                  "line": 85,
                                  "column": 20
                                },
                                "end": {
                                  "line": 85,
                                  "column": 31
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 2597,
                                "end": 2601,
                                "loc": {
                                  "start": {
                                    "line": 85,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 85,
                                    "column": 24
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 2602,
                                "end": 2608,
                                "loc": {
                                  "start": {
                                    "line": 85,
                                    "column": 25
                                  },
                                  "end": {
                                    "line": 85,
                                    "column": 31
                                  }
                                },
                                "name": "states"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 2609,
                              "end": 2613,
                              "loc": {
                                "start": {
                                  "line": 85,
                                  "column": 32
                                },
                                "end": {
                                  "line": 85,
                                  "column": 36
                                }
                              },
                              "name": "type"
                            },
                            "computed": true
                          }
                        }
                      ],
                      "kind": "let"
                    },
                    {
                      "type": "IfStatement",
                      "start": 2627,
                      "end": 2685,
                      "loc": {
                        "start": {
                          "line": 87,
                          "column": 8
                        },
                        "end": {
                          "line": 88,
                          "column": 19
                        }
                      },
                      "test": {
                        "type": "LogicalExpression",
                        "start": 2631,
                        "end": 2663,
                        "loc": {
                          "start": {
                            "line": 87,
                            "column": 12
                          },
                          "end": {
                            "line": 87,
                            "column": 44
                          }
                        },
                        "left": {
                          "type": "MemberExpression",
                          "start": 2631,
                          "end": 2644,
                          "loc": {
                            "start": {
                              "line": 87,
                              "column": 12
                            },
                            "end": {
                              "line": 87,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 2631,
                            "end": 2635,
                            "loc": {
                              "start": {
                                "line": 87,
                                "column": 12
                              },
                              "end": {
                                "line": 87,
                                "column": 16
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2636,
                            "end": 2644,
                            "loc": {
                              "start": {
                                "line": 87,
                                "column": 17
                              },
                              "end": {
                                "line": 87,
                                "column": 25
                              }
                            },
                            "name": "debounce"
                          },
                          "computed": false
                        },
                        "operator": "&&",
                        "right": {
                          "type": "MemberExpression",
                          "start": 2648,
                          "end": 2663,
                          "loc": {
                            "start": {
                              "line": 87,
                              "column": 29
                            },
                            "end": {
                              "line": 87,
                              "column": 44
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 2648,
                            "end": 2653,
                            "loc": {
                              "start": {
                                "line": 87,
                                "column": 29
                              },
                              "end": {
                                "line": 87,
                                "column": 34
                              }
                            },
                            "name": "state"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2654,
                            "end": 2663,
                            "loc": {
                              "start": {
                                "line": 87,
                                "column": 35
                              },
                              "end": {
                                "line": 87,
                                "column": 44
                              }
                            },
                            "name": "fulfilled"
                          },
                          "computed": false
                        }
                      },
                      "consequent": {
                        "type": "ReturnStatement",
                        "start": 2678,
                        "end": 2685,
                        "loc": {
                          "start": {
                            "line": 88,
                            "column": 12
                          },
                          "end": {
                            "line": 88,
                            "column": 19
                          }
                        },
                        "argument": null,
                        "leadingComments": null,
                        "trailingComments": null
                      },
                      "alternate": null,
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Wheel",
                          "start": 2697,
                          "end": 2705,
                          "loc": {
                            "start": {
                              "line": 90,
                              "column": 8
                            },
                            "end": {
                              "line": 90,
                              "column": 16
                            }
                          },
                          "range": [
                            2697,
                            2705
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 2715,
                      "end": 2763,
                      "loc": {
                        "start": {
                          "line": 91,
                          "column": 8
                        },
                        "end": {
                          "line": 91,
                          "column": 56
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 2715,
                        "end": 2762,
                        "loc": {
                          "start": {
                            "line": 91,
                            "column": 8
                          },
                          "end": {
                            "line": 91,
                            "column": 55
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 2715,
                          "end": 2726,
                          "loc": {
                            "start": {
                              "line": 91,
                              "column": 8
                            },
                            "end": {
                              "line": 91,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 2715,
                            "end": 2720,
                            "loc": {
                              "start": {
                                "line": 91,
                                "column": 8
                              },
                              "end": {
                                "line": 91,
                                "column": 13
                              }
                            },
                            "name": "state",
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2721,
                            "end": 2726,
                            "loc": {
                              "start": {
                                "line": 91,
                                "column": 14
                              },
                              "end": {
                                "line": 91,
                                "column": 19
                              }
                            },
                            "name": "delta"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "BinaryExpression",
                          "start": 2729,
                          "end": 2762,
                          "loc": {
                            "start": {
                              "line": 91,
                              "column": 22
                            },
                            "end": {
                              "line": 91,
                              "column": 55
                            }
                          },
                          "left": {
                            "type": "Identifier",
                            "start": 2729,
                            "end": 2735,
                            "loc": {
                              "start": {
                                "line": 91,
                                "column": 22
                              },
                              "end": {
                                "line": 91,
                                "column": 28
                              }
                            },
                            "name": "deltaY"
                          },
                          "operator": "*",
                          "right": {
                            "type": "ConditionalExpression",
                            "start": 2739,
                            "end": 2761,
                            "loc": {
                              "start": {
                                "line": 91,
                                "column": 32
                              },
                              "end": {
                                "line": 91,
                                "column": 54
                              }
                            },
                            "test": {
                              "type": "Identifier",
                              "start": 2739,
                              "end": 2748,
                              "loc": {
                                "start": {
                                  "line": 91,
                                  "column": 32
                                },
                                "end": {
                                  "line": 91,
                                  "column": 41
                                }
                              },
                              "name": "deltaMode"
                            },
                            "consequent": {
                              "type": "UnaryExpression",
                              "start": 2751,
                              "end": 2753,
                              "loc": {
                                "start": {
                                  "line": 91,
                                  "column": 44
                                },
                                "end": {
                                  "line": 91,
                                  "column": 46
                                }
                              },
                              "operator": "-",
                              "prefix": true,
                              "argument": {
                                "type": "Literal",
                                "start": 2752,
                                "end": 2753,
                                "loc": {
                                  "start": {
                                    "line": 91,
                                    "column": 45
                                  },
                                  "end": {
                                    "line": 91,
                                    "column": 46
                                  }
                                },
                                "value": 1,
                                "rawValue": 1,
                                "raw": "1"
                              }
                            },
                            "alternate": {
                              "type": "UnaryExpression",
                              "start": 2756,
                              "end": 2761,
                              "loc": {
                                "start": {
                                  "line": 91,
                                  "column": 49
                                },
                                "end": {
                                  "line": 91,
                                  "column": 54
                                }
                              },
                              "operator": "-",
                              "prefix": true,
                              "argument": {
                                "type": "Literal",
                                "start": 2757,
                                "end": 2761,
                                "loc": {
                                  "start": {
                                    "line": 91,
                                    "column": 50
                                  },
                                  "end": {
                                    "line": 91,
                                    "column": 54
                                  }
                                },
                                "value": 0.03,
                                "rawValue": 0.03,
                                "raw": "0.03"
                              }
                            },
                            "parenthesizedExpression": true
                          }
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Wheel",
                          "start": 2697,
                          "end": 2705,
                          "loc": {
                            "start": {
                              "line": 90,
                              "column": 8
                            },
                            "end": {
                              "line": 90,
                              "column": 16
                            }
                          },
                          "range": [
                            2697,
                            2705
                          ]
                        }
                      ],
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Generic",
                          "start": 2775,
                          "end": 2785,
                          "loc": {
                            "start": {
                              "line": 93,
                              "column": 8
                            },
                            "end": {
                              "line": 93,
                              "column": 18
                            }
                          },
                          "range": [
                            2775,
                            2785
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 2795,
                      "end": 2818,
                      "loc": {
                        "start": {
                          "line": 94,
                          "column": 8
                        },
                        "end": {
                          "line": 94,
                          "column": 31
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 2795,
                        "end": 2817,
                        "loc": {
                          "start": {
                            "line": 94,
                            "column": 8
                          },
                          "end": {
                            "line": 94,
                            "column": 30
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 2795,
                          "end": 2810,
                          "loc": {
                            "start": {
                              "line": 94,
                              "column": 8
                            },
                            "end": {
                              "line": 94,
                              "column": 23
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 2795,
                            "end": 2800,
                            "loc": {
                              "start": {
                                "line": 94,
                                "column": 8
                              },
                              "end": {
                                "line": 94,
                                "column": 13
                              }
                            },
                            "name": "state",
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2801,
                            "end": 2810,
                            "loc": {
                              "start": {
                                "line": 94,
                                "column": 14
                              },
                              "end": {
                                "line": 94,
                                "column": 23
                              }
                            },
                            "name": "fulfilled"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "Literal",
                          "start": 2813,
                          "end": 2817,
                          "loc": {
                            "start": {
                              "line": 94,
                              "column": 26
                            },
                            "end": {
                              "line": 94,
                              "column": 30
                            }
                          },
                          "value": true,
                          "rawValue": true,
                          "raw": "true"
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Generic",
                          "start": 2775,
                          "end": 2785,
                          "loc": {
                            "start": {
                              "line": 93,
                              "column": 8
                            },
                            "end": {
                              "line": 93,
                              "column": 18
                            }
                          },
                          "range": [
                            2775,
                            2785
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 2828,
                      "end": 2848,
                      "loc": {
                        "start": {
                          "line": 95,
                          "column": 8
                        },
                        "end": {
                          "line": 95,
                          "column": 28
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 2828,
                        "end": 2847,
                        "loc": {
                          "start": {
                            "line": 95,
                            "column": 8
                          },
                          "end": {
                            "line": 95,
                            "column": 27
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 2828,
                          "end": 2839,
                          "loc": {
                            "start": {
                              "line": 95,
                              "column": 8
                            },
                            "end": {
                              "line": 95,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 2828,
                            "end": 2833,
                            "loc": {
                              "start": {
                                "line": 95,
                                "column": 8
                              },
                              "end": {
                                "line": 95,
                                "column": 13
                              }
                            },
                            "name": "state"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2834,
                            "end": 2839,
                            "loc": {
                              "start": {
                                "line": 95,
                                "column": 14
                              },
                              "end": {
                                "line": 95,
                                "column": 19
                              }
                            },
                            "name": "pageX"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 2842,
                          "end": 2847,
                          "loc": {
                            "start": {
                              "line": 95,
                              "column": 22
                            },
                            "end": {
                              "line": 95,
                              "column": 27
                            }
                          },
                          "name": "pageX"
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 2858,
                      "end": 2878,
                      "loc": {
                        "start": {
                          "line": 96,
                          "column": 8
                        },
                        "end": {
                          "line": 96,
                          "column": 28
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 2858,
                        "end": 2877,
                        "loc": {
                          "start": {
                            "line": 96,
                            "column": 8
                          },
                          "end": {
                            "line": 96,
                            "column": 27
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 2858,
                          "end": 2869,
                          "loc": {
                            "start": {
                              "line": 96,
                              "column": 8
                            },
                            "end": {
                              "line": 96,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 2858,
                            "end": 2863,
                            "loc": {
                              "start": {
                                "line": 96,
                                "column": 8
                              },
                              "end": {
                                "line": 96,
                                "column": 13
                              }
                            },
                            "name": "state"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2864,
                            "end": 2869,
                            "loc": {
                              "start": {
                                "line": 96,
                                "column": 14
                              },
                              "end": {
                                "line": 96,
                                "column": 19
                              }
                            },
                            "name": "pageY"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 2872,
                          "end": 2877,
                          "loc": {
                            "start": {
                              "line": 96,
                              "column": 22
                            },
                            "end": {
                              "line": 96,
                              "column": 27
                            }
                          },
                          "name": "pageY"
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 2888,
                      "end": 2912,
                      "loc": {
                        "start": {
                          "line": 97,
                          "column": 8
                        },
                        "end": {
                          "line": 97,
                          "column": 32
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 2888,
                        "end": 2911,
                        "loc": {
                          "start": {
                            "line": 97,
                            "column": 8
                          },
                          "end": {
                            "line": 97,
                            "column": 31
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 2888,
                          "end": 2901,
                          "loc": {
                            "start": {
                              "line": 97,
                              "column": 8
                            },
                            "end": {
                              "line": 97,
                              "column": 21
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 2888,
                            "end": 2893,
                            "loc": {
                              "start": {
                                "line": 97,
                                "column": 8
                              },
                              "end": {
                                "line": 97,
                                "column": 13
                              }
                            },
                            "name": "state"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2894,
                            "end": 2901,
                            "loc": {
                              "start": {
                                "line": 97,
                                "column": 14
                              },
                              "end": {
                                "line": 97,
                                "column": 21
                              }
                            },
                            "name": "clientX"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 2904,
                          "end": 2911,
                          "loc": {
                            "start": {
                              "line": 97,
                              "column": 24
                            },
                            "end": {
                              "line": 97,
                              "column": 31
                            }
                          },
                          "name": "clientX"
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 2922,
                      "end": 2946,
                      "loc": {
                        "start": {
                          "line": 98,
                          "column": 8
                        },
                        "end": {
                          "line": 98,
                          "column": 32
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 2922,
                        "end": 2945,
                        "loc": {
                          "start": {
                            "line": 98,
                            "column": 8
                          },
                          "end": {
                            "line": 98,
                            "column": 31
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 2922,
                          "end": 2935,
                          "loc": {
                            "start": {
                              "line": 98,
                              "column": 8
                            },
                            "end": {
                              "line": 98,
                              "column": 21
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 2922,
                            "end": 2927,
                            "loc": {
                              "start": {
                                "line": 98,
                                "column": 8
                              },
                              "end": {
                                "line": 98,
                                "column": 13
                              }
                            },
                            "name": "state"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2928,
                            "end": 2935,
                            "loc": {
                              "start": {
                                "line": 98,
                                "column": 14
                              },
                              "end": {
                                "line": 98,
                                "column": 21
                              }
                            },
                            "name": "clientY"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 2938,
                          "end": 2945,
                          "loc": {
                            "start": {
                              "line": 98,
                              "column": 24
                            },
                            "end": {
                              "line": 98,
                              "column": 31
                            }
                          },
                          "name": "clientY"
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 2956,
                      "end": 3023,
                      "loc": {
                        "start": {
                          "line": 99,
                          "column": 8
                        },
                        "end": {
                          "line": 99,
                          "column": 75
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 2956,
                        "end": 3022,
                        "loc": {
                          "start": {
                            "line": 99,
                            "column": 8
                          },
                          "end": {
                            "line": 99,
                            "column": 74
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 2956,
                          "end": 2969,
                          "loc": {
                            "start": {
                              "line": 99,
                              "column": 8
                            },
                            "end": {
                              "line": 99,
                              "column": 21
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 2956,
                            "end": 2961,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 8
                              },
                              "end": {
                                "line": 99,
                                "column": 13
                              }
                            },
                            "name": "state"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 2962,
                            "end": 2969,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 14
                              },
                              "end": {
                                "line": 99,
                                "column": 21
                              }
                            },
                            "name": "offsetX"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "BinaryExpression",
                          "start": 2972,
                          "end": 3022,
                          "loc": {
                            "start": {
                              "line": 99,
                              "column": 24
                            },
                            "end": {
                              "line": 99,
                              "column": 74
                            }
                          },
                          "left": {
                            "type": "BinaryExpression",
                            "start": 2972,
                            "end": 3005,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 24
                              },
                              "end": {
                                "line": 99,
                                "column": 57
                              }
                            },
                            "left": {
                              "type": "Identifier",
                              "start": 2972,
                              "end": 2977,
                              "loc": {
                                "start": {
                                  "line": 99,
                                  "column": 24
                                },
                                "end": {
                                  "line": 99,
                                  "column": 29
                                }
                              },
                              "name": "pageX"
                            },
                            "operator": "-",
                            "right": {
                              "type": "MemberExpression",
                              "start": 2980,
                              "end": 3005,
                              "loc": {
                                "start": {
                                  "line": 99,
                                  "column": 32
                                },
                                "end": {
                                  "line": 99,
                                  "column": 57
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 2980,
                                "end": 3000,
                                "loc": {
                                  "start": {
                                    "line": 99,
                                    "column": 32
                                  },
                                  "end": {
                                    "line": 99,
                                    "column": 52
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 2980,
                                  "end": 2993,
                                  "loc": {
                                    "start": {
                                      "line": 99,
                                      "column": 32
                                    },
                                    "end": {
                                      "line": 99,
                                      "column": 45
                                    }
                                  },
                                  "object": {
                                    "type": "ThisExpression",
                                    "start": 2980,
                                    "end": 2984,
                                    "loc": {
                                      "start": {
                                        "line": 99,
                                        "column": 32
                                      },
                                      "end": {
                                        "line": 99,
                                        "column": 36
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 2985,
                                    "end": 2993,
                                    "loc": {
                                      "start": {
                                        "line": 99,
                                        "column": 37
                                      },
                                      "end": {
                                        "line": 99,
                                        "column": 45
                                      }
                                    },
                                    "name": "renderer"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 2994,
                                  "end": 3000,
                                  "loc": {
                                    "start": {
                                      "line": 99,
                                      "column": 46
                                    },
                                    "end": {
                                      "line": 99,
                                      "column": 52
                                    }
                                  },
                                  "name": "offset"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3001,
                                "end": 3005,
                                "loc": {
                                  "start": {
                                    "line": 99,
                                    "column": 53
                                  },
                                  "end": {
                                    "line": 99,
                                    "column": 57
                                  }
                                },
                                "name": "left"
                              },
                              "computed": false
                            }
                          },
                          "operator": "-",
                          "right": {
                            "type": "MemberExpression",
                            "start": 3008,
                            "end": 3022,
                            "loc": {
                              "start": {
                                "line": 99,
                                "column": 60
                              },
                              "end": {
                                "line": 99,
                                "column": 74
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 3008,
                              "end": 3017,
                              "loc": {
                                "start": {
                                  "line": 99,
                                  "column": 60
                                },
                                "end": {
                                  "line": 99,
                                  "column": 69
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 3008,
                                "end": 3012,
                                "loc": {
                                  "start": {
                                    "line": 99,
                                    "column": 60
                                  },
                                  "end": {
                                    "line": 99,
                                    "column": 64
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3013,
                                "end": 3017,
                                "loc": {
                                  "start": {
                                    "line": 99,
                                    "column": 65
                                  },
                                  "end": {
                                    "line": 99,
                                    "column": 69
                                  }
                                },
                                "name": "view"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 3018,
                              "end": 3022,
                              "loc": {
                                "start": {
                                  "line": 99,
                                  "column": 70
                                },
                                "end": {
                                  "line": 99,
                                  "column": 74
                                }
                              },
                              "name": "left"
                            },
                            "computed": false
                          }
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 3033,
                      "end": 3098,
                      "loc": {
                        "start": {
                          "line": 100,
                          "column": 8
                        },
                        "end": {
                          "line": 100,
                          "column": 73
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 3033,
                        "end": 3097,
                        "loc": {
                          "start": {
                            "line": 100,
                            "column": 8
                          },
                          "end": {
                            "line": 100,
                            "column": 72
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 3033,
                          "end": 3046,
                          "loc": {
                            "start": {
                              "line": 100,
                              "column": 8
                            },
                            "end": {
                              "line": 100,
                              "column": 21
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 3033,
                            "end": 3038,
                            "loc": {
                              "start": {
                                "line": 100,
                                "column": 8
                              },
                              "end": {
                                "line": 100,
                                "column": 13
                              }
                            },
                            "name": "state"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3039,
                            "end": 3046,
                            "loc": {
                              "start": {
                                "line": 100,
                                "column": 14
                              },
                              "end": {
                                "line": 100,
                                "column": 21
                              }
                            },
                            "name": "offsetY"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "BinaryExpression",
                          "start": 3049,
                          "end": 3097,
                          "loc": {
                            "start": {
                              "line": 100,
                              "column": 24
                            },
                            "end": {
                              "line": 100,
                              "column": 72
                            }
                          },
                          "left": {
                            "type": "BinaryExpression",
                            "start": 3049,
                            "end": 3081,
                            "loc": {
                              "start": {
                                "line": 100,
                                "column": 24
                              },
                              "end": {
                                "line": 100,
                                "column": 56
                              }
                            },
                            "left": {
                              "type": "Identifier",
                              "start": 3049,
                              "end": 3054,
                              "loc": {
                                "start": {
                                  "line": 100,
                                  "column": 24
                                },
                                "end": {
                                  "line": 100,
                                  "column": 29
                                }
                              },
                              "name": "pageY"
                            },
                            "operator": "-",
                            "right": {
                              "type": "MemberExpression",
                              "start": 3057,
                              "end": 3081,
                              "loc": {
                                "start": {
                                  "line": 100,
                                  "column": 32
                                },
                                "end": {
                                  "line": 100,
                                  "column": 56
                                }
                              },
                              "object": {
                                "type": "MemberExpression",
                                "start": 3057,
                                "end": 3077,
                                "loc": {
                                  "start": {
                                    "line": 100,
                                    "column": 32
                                  },
                                  "end": {
                                    "line": 100,
                                    "column": 52
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 3057,
                                  "end": 3070,
                                  "loc": {
                                    "start": {
                                      "line": 100,
                                      "column": 32
                                    },
                                    "end": {
                                      "line": 100,
                                      "column": 45
                                    }
                                  },
                                  "object": {
                                    "type": "ThisExpression",
                                    "start": 3057,
                                    "end": 3061,
                                    "loc": {
                                      "start": {
                                        "line": 100,
                                        "column": 32
                                      },
                                      "end": {
                                        "line": 100,
                                        "column": 36
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 3062,
                                    "end": 3070,
                                    "loc": {
                                      "start": {
                                        "line": 100,
                                        "column": 37
                                      },
                                      "end": {
                                        "line": 100,
                                        "column": 45
                                      }
                                    },
                                    "name": "renderer"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 3071,
                                  "end": 3077,
                                  "loc": {
                                    "start": {
                                      "line": 100,
                                      "column": 46
                                    },
                                    "end": {
                                      "line": 100,
                                      "column": 52
                                    }
                                  },
                                  "name": "offset"
                                },
                                "computed": false
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3078,
                                "end": 3081,
                                "loc": {
                                  "start": {
                                    "line": 100,
                                    "column": 53
                                  },
                                  "end": {
                                    "line": 100,
                                    "column": 56
                                  }
                                },
                                "name": "top"
                              },
                              "computed": false
                            }
                          },
                          "operator": "-",
                          "right": {
                            "type": "MemberExpression",
                            "start": 3084,
                            "end": 3097,
                            "loc": {
                              "start": {
                                "line": 100,
                                "column": 59
                              },
                              "end": {
                                "line": 100,
                                "column": 72
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 3084,
                              "end": 3093,
                              "loc": {
                                "start": {
                                  "line": 100,
                                  "column": 59
                                },
                                "end": {
                                  "line": 100,
                                  "column": 68
                                }
                              },
                              "object": {
                                "type": "ThisExpression",
                                "start": 3084,
                                "end": 3088,
                                "loc": {
                                  "start": {
                                    "line": 100,
                                    "column": 59
                                  },
                                  "end": {
                                    "line": 100,
                                    "column": 63
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 3089,
                                "end": 3093,
                                "loc": {
                                  "start": {
                                    "line": 100,
                                    "column": 64
                                  },
                                  "end": {
                                    "line": 100,
                                    "column": 68
                                  }
                                },
                                "name": "view"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 3094,
                              "end": 3097,
                              "loc": {
                                "start": {
                                  "line": 100,
                                  "column": 69
                                },
                                "end": {
                                  "line": 100,
                                  "column": 72
                                }
                              },
                              "name": "top"
                            },
                            "computed": false
                          }
                        }
                      },
                      "trailingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Touch",
                          "start": 3110,
                          "end": 3118,
                          "loc": {
                            "start": {
                              "line": 102,
                              "column": 8
                            },
                            "end": {
                              "line": 102,
                              "column": 16
                            }
                          },
                          "range": [
                            3110,
                            3118
                          ]
                        }
                      ]
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 3128,
                      "end": 3147,
                      "loc": {
                        "start": {
                          "line": 103,
                          "column": 8
                        },
                        "end": {
                          "line": 103,
                          "column": 27
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 3128,
                        "end": 3146,
                        "loc": {
                          "start": {
                            "line": 103,
                            "column": 8
                          },
                          "end": {
                            "line": 103,
                            "column": 26
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 3128,
                          "end": 3141,
                          "loc": {
                            "start": {
                              "line": 103,
                              "column": 8
                            },
                            "end": {
                              "line": 103,
                              "column": 21
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 3128,
                            "end": 3133,
                            "loc": {
                              "start": {
                                "line": 103,
                                "column": 8
                              },
                              "end": {
                                "line": 103,
                                "column": 13
                              }
                            },
                            "name": "state",
                            "leadingComments": null
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 3134,
                            "end": 3141,
                            "loc": {
                              "start": {
                                "line": 103,
                                "column": 14
                              },
                              "end": {
                                "line": 103,
                                "column": 21
                              }
                            },
                            "name": "touches"
                          },
                          "computed": false,
                          "leadingComments": null
                        },
                        "right": {
                          "type": "ArrayExpression",
                          "start": 3144,
                          "end": 3146,
                          "loc": {
                            "start": {
                              "line": 103,
                              "column": 24
                            },
                            "end": {
                              "line": 103,
                              "column": 26
                            }
                          },
                          "elements": []
                        },
                        "leadingComments": null
                      },
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " Touch",
                          "start": 3110,
                          "end": 3118,
                          "loc": {
                            "start": {
                              "line": 102,
                              "column": 8
                            },
                            "end": {
                              "line": 102,
                              "column": 16
                            }
                          },
                          "range": [
                            3110,
                            3118
                          ]
                        }
                      ]
                    },
                    {
                      "type": "IfStatement",
                      "start": 3157,
                      "end": 4229,
                      "loc": {
                        "start": {
                          "line": 104,
                          "column": 8
                        },
                        "end": {
                          "line": 128,
                          "column": 9
                        }
                      },
                      "test": {
                        "type": "UnaryExpression",
                        "start": 3161,
                        "end": 3176,
                        "loc": {
                          "start": {
                            "line": 104,
                            "column": 12
                          },
                          "end": {
                            "line": 104,
                            "column": 27
                          }
                        },
                        "operator": "!",
                        "prefix": true,
                        "argument": {
                          "type": "UnaryExpression",
                          "start": 3162,
                          "end": 3176,
                          "loc": {
                            "start": {
                              "line": 104,
                              "column": 13
                            },
                            "end": {
                              "line": 104,
                              "column": 27
                            }
                          },
                          "operator": "!",
                          "prefix": true,
                          "argument": {
                            "type": "MemberExpression",
                            "start": 3163,
                            "end": 3176,
                            "loc": {
                              "start": {
                                "line": 104,
                                "column": 14
                              },
                              "end": {
                                "line": 104,
                                "column": 27
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 3163,
                              "end": 3168,
                              "loc": {
                                "start": {
                                  "line": 104,
                                  "column": 14
                                },
                                "end": {
                                  "line": 104,
                                  "column": 19
                                }
                              },
                              "name": "event"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 3169,
                              "end": 3176,
                              "loc": {
                                "start": {
                                  "line": 104,
                                  "column": 20
                                },
                                "end": {
                                  "line": 104,
                                  "column": 27
                                }
                              },
                              "name": "touches"
                            },
                            "computed": false
                          }
                        }
                      },
                      "consequent": {
                        "type": "BlockStatement",
                        "start": 3178,
                        "end": 4229,
                        "loc": {
                          "start": {
                            "line": 104,
                            "column": 29
                          },
                          "end": {
                            "line": 128,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "ForOfStatement",
                            "start": 3193,
                            "end": 3779,
                            "loc": {
                              "start": {
                                "line": 105,
                                "column": 12
                              },
                              "end": {
                                "line": 118,
                                "column": 13
                              }
                            },
                            "left": {
                              "type": "VariableDeclaration",
                              "start": 3197,
                              "end": 3205,
                              "loc": {
                                "start": {
                                  "line": 105,
                                  "column": 16
                                },
                                "end": {
                                  "line": 105,
                                  "column": 24
                                }
                              },
                              "declarations": [
                                {
                                  "type": "VariableDeclarator",
                                  "start": 3201,
                                  "end": 3205,
                                  "loc": {
                                    "start": {
                                      "line": 105,
                                      "column": 20
                                    },
                                    "end": {
                                      "line": 105,
                                      "column": 24
                                    }
                                  },
                                  "id": {
                                    "type": "Identifier",
                                    "start": 3201,
                                    "end": 3205,
                                    "loc": {
                                      "start": {
                                        "line": 105,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 105,
                                        "column": 24
                                      }
                                    },
                                    "name": "item"
                                  },
                                  "init": null
                                }
                              ],
                              "kind": "let"
                            },
                            "right": {
                              "type": "CallExpression",
                              "start": 3209,
                              "end": 3237,
                              "loc": {
                                "start": {
                                  "line": 105,
                                  "column": 28
                                },
                                "end": {
                                  "line": 105,
                                  "column": 56
                                }
                              },
                              "callee": {
                                "type": "MemberExpression",
                                "start": 3209,
                                "end": 3222,
                                "loc": {
                                  "start": {
                                    "line": 105,
                                    "column": 28
                                  },
                                  "end": {
                                    "line": 105,
                                    "column": 41
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 3209,
                                  "end": 3217,
                                  "loc": {
                                    "start": {
                                      "line": 105,
                                      "column": 28
                                    },
                                    "end": {
                                      "line": 105,
                                      "column": 36
                                    }
                                  },
                                  "object": {
                                    "type": "ArrayExpression",
                                    "start": 3209,
                                    "end": 3211,
                                    "loc": {
                                      "start": {
                                        "line": 105,
                                        "column": 28
                                      },
                                      "end": {
                                        "line": 105,
                                        "column": 30
                                      }
                                    },
                                    "elements": []
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 3212,
                                    "end": 3217,
                                    "loc": {
                                      "start": {
                                        "line": 105,
                                        "column": 31
                                      },
                                      "end": {
                                        "line": 105,
                                        "column": 36
                                      }
                                    },
                                    "name": "slice"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 3218,
                                  "end": 3222,
                                  "loc": {
                                    "start": {
                                      "line": 105,
                                      "column": 37
                                    },
                                    "end": {
                                      "line": 105,
                                      "column": 41
                                    }
                                  },
                                  "name": "call"
                                },
                                "computed": false
                              },
                              "arguments": [
                                {
                                  "type": "MemberExpression",
                                  "start": 3223,
                                  "end": 3236,
                                  "loc": {
                                    "start": {
                                      "line": 105,
                                      "column": 42
                                    },
                                    "end": {
                                      "line": 105,
                                      "column": 55
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 3223,
                                    "end": 3228,
                                    "loc": {
                                      "start": {
                                        "line": 105,
                                        "column": 42
                                      },
                                      "end": {
                                        "line": 105,
                                        "column": 47
                                      }
                                    },
                                    "name": "event"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 3229,
                                    "end": 3236,
                                    "loc": {
                                      "start": {
                                        "line": 105,
                                        "column": 48
                                      },
                                      "end": {
                                        "line": 105,
                                        "column": 55
                                      }
                                    },
                                    "name": "touches"
                                  },
                                  "computed": false
                                }
                              ]
                            },
                            "body": {
                              "type": "BlockStatement",
                              "start": 3239,
                              "end": 3779,
                              "loc": {
                                "start": {
                                  "line": 105,
                                  "column": 58
                                },
                                "end": {
                                  "line": 118,
                                  "column": 13
                                }
                              },
                              "body": [
                                {
                                  "type": "ExpressionStatement",
                                  "start": 3258,
                                  "end": 3277,
                                  "loc": {
                                    "start": {
                                      "line": 106,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 106,
                                      "column": 35
                                    }
                                  },
                                  "expression": {
                                    "type": "AssignmentExpression",
                                    "start": 3258,
                                    "end": 3276,
                                    "loc": {
                                      "start": {
                                        "line": 106,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 106,
                                        "column": 34
                                      }
                                    },
                                    "operator": "=",
                                    "left": {
                                      "type": "Identifier",
                                      "start": 3258,
                                      "end": 3263,
                                      "loc": {
                                        "start": {
                                          "line": 106,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 106,
                                          "column": 21
                                        }
                                      },
                                      "name": "pageX"
                                    },
                                    "right": {
                                      "type": "MemberExpression",
                                      "start": 3266,
                                      "end": 3276,
                                      "loc": {
                                        "start": {
                                          "line": 106,
                                          "column": 24
                                        },
                                        "end": {
                                          "line": 106,
                                          "column": 34
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3266,
                                        "end": 3270,
                                        "loc": {
                                          "start": {
                                            "line": 106,
                                            "column": 24
                                          },
                                          "end": {
                                            "line": 106,
                                            "column": 28
                                          }
                                        },
                                        "name": "item"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3271,
                                        "end": 3276,
                                        "loc": {
                                          "start": {
                                            "line": 106,
                                            "column": 29
                                          },
                                          "end": {
                                            "line": 106,
                                            "column": 34
                                          }
                                        },
                                        "name": "pageX"
                                      },
                                      "computed": false
                                    }
                                  }
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 3295,
                                  "end": 3314,
                                  "loc": {
                                    "start": {
                                      "line": 107,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 107,
                                      "column": 35
                                    }
                                  },
                                  "expression": {
                                    "type": "AssignmentExpression",
                                    "start": 3295,
                                    "end": 3313,
                                    "loc": {
                                      "start": {
                                        "line": 107,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 107,
                                        "column": 34
                                      }
                                    },
                                    "operator": "=",
                                    "left": {
                                      "type": "Identifier",
                                      "start": 3295,
                                      "end": 3300,
                                      "loc": {
                                        "start": {
                                          "line": 107,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 107,
                                          "column": 21
                                        }
                                      },
                                      "name": "pageY"
                                    },
                                    "right": {
                                      "type": "MemberExpression",
                                      "start": 3303,
                                      "end": 3313,
                                      "loc": {
                                        "start": {
                                          "line": 107,
                                          "column": 24
                                        },
                                        "end": {
                                          "line": 107,
                                          "column": 34
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3303,
                                        "end": 3307,
                                        "loc": {
                                          "start": {
                                            "line": 107,
                                            "column": 24
                                          },
                                          "end": {
                                            "line": 107,
                                            "column": 28
                                          }
                                        },
                                        "name": "item"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3308,
                                        "end": 3313,
                                        "loc": {
                                          "start": {
                                            "line": 107,
                                            "column": 29
                                          },
                                          "end": {
                                            "line": 107,
                                            "column": 34
                                          }
                                        },
                                        "name": "pageY"
                                      },
                                      "computed": false
                                    }
                                  }
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 3332,
                                  "end": 3355,
                                  "loc": {
                                    "start": {
                                      "line": 108,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 108,
                                      "column": 39
                                    }
                                  },
                                  "expression": {
                                    "type": "AssignmentExpression",
                                    "start": 3332,
                                    "end": 3354,
                                    "loc": {
                                      "start": {
                                        "line": 108,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 108,
                                        "column": 38
                                      }
                                    },
                                    "operator": "=",
                                    "left": {
                                      "type": "Identifier",
                                      "start": 3332,
                                      "end": 3339,
                                      "loc": {
                                        "start": {
                                          "line": 108,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 108,
                                          "column": 23
                                        }
                                      },
                                      "name": "clientX"
                                    },
                                    "right": {
                                      "type": "MemberExpression",
                                      "start": 3342,
                                      "end": 3354,
                                      "loc": {
                                        "start": {
                                          "line": 108,
                                          "column": 26
                                        },
                                        "end": {
                                          "line": 108,
                                          "column": 38
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3342,
                                        "end": 3346,
                                        "loc": {
                                          "start": {
                                            "line": 108,
                                            "column": 26
                                          },
                                          "end": {
                                            "line": 108,
                                            "column": 30
                                          }
                                        },
                                        "name": "item"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3347,
                                        "end": 3354,
                                        "loc": {
                                          "start": {
                                            "line": 108,
                                            "column": 31
                                          },
                                          "end": {
                                            "line": 108,
                                            "column": 38
                                          }
                                        },
                                        "name": "clientX"
                                      },
                                      "computed": false
                                    }
                                  }
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 3373,
                                  "end": 3396,
                                  "loc": {
                                    "start": {
                                      "line": 109,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 109,
                                      "column": 39
                                    }
                                  },
                                  "expression": {
                                    "type": "AssignmentExpression",
                                    "start": 3373,
                                    "end": 3395,
                                    "loc": {
                                      "start": {
                                        "line": 109,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 109,
                                        "column": 38
                                      }
                                    },
                                    "operator": "=",
                                    "left": {
                                      "type": "Identifier",
                                      "start": 3373,
                                      "end": 3380,
                                      "loc": {
                                        "start": {
                                          "line": 109,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 109,
                                          "column": 23
                                        }
                                      },
                                      "name": "clientY"
                                    },
                                    "right": {
                                      "type": "MemberExpression",
                                      "start": 3383,
                                      "end": 3395,
                                      "loc": {
                                        "start": {
                                          "line": 109,
                                          "column": 26
                                        },
                                        "end": {
                                          "line": 109,
                                          "column": 38
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3383,
                                        "end": 3387,
                                        "loc": {
                                          "start": {
                                            "line": 109,
                                            "column": 26
                                          },
                                          "end": {
                                            "line": 109,
                                            "column": 30
                                          }
                                        },
                                        "name": "item"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3388,
                                        "end": 3395,
                                        "loc": {
                                          "start": {
                                            "line": 109,
                                            "column": 31
                                          },
                                          "end": {
                                            "line": 109,
                                            "column": 38
                                          }
                                        },
                                        "name": "clientY"
                                      },
                                      "computed": false
                                    }
                                  }
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 3414,
                                  "end": 3764,
                                  "loc": {
                                    "start": {
                                      "line": 110,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 117,
                                      "column": 19
                                    }
                                  },
                                  "expression": {
                                    "type": "CallExpression",
                                    "start": 3414,
                                    "end": 3763,
                                    "loc": {
                                      "start": {
                                        "line": 110,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 117,
                                        "column": 18
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 3414,
                                      "end": 3432,
                                      "loc": {
                                        "start": {
                                          "line": 110,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 110,
                                          "column": 34
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 3414,
                                        "end": 3427,
                                        "loc": {
                                          "start": {
                                            "line": 110,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 110,
                                            "column": 29
                                          }
                                        },
                                        "object": {
                                          "type": "Identifier",
                                          "start": 3414,
                                          "end": 3419,
                                          "loc": {
                                            "start": {
                                              "line": 110,
                                              "column": 16
                                            },
                                            "end": {
                                              "line": 110,
                                              "column": 21
                                            }
                                          },
                                          "name": "state"
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3420,
                                          "end": 3427,
                                          "loc": {
                                            "start": {
                                              "line": 110,
                                              "column": 22
                                            },
                                            "end": {
                                              "line": 110,
                                              "column": 29
                                            }
                                          },
                                          "name": "touches"
                                        },
                                        "computed": false
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3428,
                                        "end": 3432,
                                        "loc": {
                                          "start": {
                                            "line": 110,
                                            "column": 30
                                          },
                                          "end": {
                                            "line": 110,
                                            "column": 34
                                          }
                                        },
                                        "name": "push"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "ObjectExpression",
                                        "start": 3433,
                                        "end": 3762,
                                        "loc": {
                                          "start": {
                                            "line": 110,
                                            "column": 35
                                          },
                                          "end": {
                                            "line": 117,
                                            "column": 17
                                          }
                                        },
                                        "properties": [
                                          {
                                            "type": "Property",
                                            "start": 3456,
                                            "end": 3472,
                                            "loc": {
                                              "start": {
                                                "line": 111,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 111,
                                                "column": 36
                                              }
                                            },
                                            "method": false,
                                            "shorthand": false,
                                            "computed": false,
                                            "key": {
                                              "type": "Identifier",
                                              "start": 3456,
                                              "end": 3463,
                                              "loc": {
                                                "start": {
                                                  "line": 111,
                                                  "column": 20
                                                },
                                                "end": {
                                                  "line": 111,
                                                  "column": 27
                                                }
                                              },
                                              "name": "clientX"
                                            },
                                            "value": {
                                              "type": "Identifier",
                                              "start": 3465,
                                              "end": 3472,
                                              "loc": {
                                                "start": {
                                                  "line": 111,
                                                  "column": 29
                                                },
                                                "end": {
                                                  "line": 111,
                                                  "column": 36
                                                }
                                              },
                                              "name": "clientX"
                                            },
                                            "kind": "init"
                                          },
                                          {
                                            "type": "Property",
                                            "start": 3495,
                                            "end": 3511,
                                            "loc": {
                                              "start": {
                                                "line": 112,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 112,
                                                "column": 36
                                              }
                                            },
                                            "method": false,
                                            "shorthand": false,
                                            "computed": false,
                                            "key": {
                                              "type": "Identifier",
                                              "start": 3495,
                                              "end": 3502,
                                              "loc": {
                                                "start": {
                                                  "line": 112,
                                                  "column": 20
                                                },
                                                "end": {
                                                  "line": 112,
                                                  "column": 27
                                                }
                                              },
                                              "name": "clientY"
                                            },
                                            "value": {
                                              "type": "Identifier",
                                              "start": 3504,
                                              "end": 3511,
                                              "loc": {
                                                "start": {
                                                  "line": 112,
                                                  "column": 29
                                                },
                                                "end": {
                                                  "line": 112,
                                                  "column": 36
                                                }
                                              },
                                              "name": "clientY"
                                            },
                                            "kind": "init"
                                          },
                                          {
                                            "type": "Property",
                                            "start": 3534,
                                            "end": 3593,
                                            "loc": {
                                              "start": {
                                                "line": 113,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 113,
                                                "column": 79
                                              }
                                            },
                                            "method": false,
                                            "shorthand": false,
                                            "computed": false,
                                            "key": {
                                              "type": "Identifier",
                                              "start": 3534,
                                              "end": 3541,
                                              "loc": {
                                                "start": {
                                                  "line": 113,
                                                  "column": 20
                                                },
                                                "end": {
                                                  "line": 113,
                                                  "column": 27
                                                }
                                              },
                                              "name": "offsetX"
                                            },
                                            "value": {
                                              "type": "BinaryExpression",
                                              "start": 3543,
                                              "end": 3593,
                                              "loc": {
                                                "start": {
                                                  "line": 113,
                                                  "column": 29
                                                },
                                                "end": {
                                                  "line": 113,
                                                  "column": 79
                                                }
                                              },
                                              "left": {
                                                "type": "BinaryExpression",
                                                "start": 3543,
                                                "end": 3576,
                                                "loc": {
                                                  "start": {
                                                    "line": 113,
                                                    "column": 29
                                                  },
                                                  "end": {
                                                    "line": 113,
                                                    "column": 62
                                                  }
                                                },
                                                "left": {
                                                  "type": "Identifier",
                                                  "start": 3543,
                                                  "end": 3548,
                                                  "loc": {
                                                    "start": {
                                                      "line": 113,
                                                      "column": 29
                                                    },
                                                    "end": {
                                                      "line": 113,
                                                      "column": 34
                                                    }
                                                  },
                                                  "name": "pageX"
                                                },
                                                "operator": "-",
                                                "right": {
                                                  "type": "MemberExpression",
                                                  "start": 3551,
                                                  "end": 3576,
                                                  "loc": {
                                                    "start": {
                                                      "line": 113,
                                                      "column": 37
                                                    },
                                                    "end": {
                                                      "line": 113,
                                                      "column": 62
                                                    }
                                                  },
                                                  "object": {
                                                    "type": "MemberExpression",
                                                    "start": 3551,
                                                    "end": 3571,
                                                    "loc": {
                                                      "start": {
                                                        "line": 113,
                                                        "column": 37
                                                      },
                                                      "end": {
                                                        "line": 113,
                                                        "column": 57
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "MemberExpression",
                                                      "start": 3551,
                                                      "end": 3564,
                                                      "loc": {
                                                        "start": {
                                                          "line": 113,
                                                          "column": 37
                                                        },
                                                        "end": {
                                                          "line": 113,
                                                          "column": 50
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "ThisExpression",
                                                        "start": 3551,
                                                        "end": 3555,
                                                        "loc": {
                                                          "start": {
                                                            "line": 113,
                                                            "column": 37
                                                          },
                                                          "end": {
                                                            "line": 113,
                                                            "column": 41
                                                          }
                                                        }
                                                      },
                                                      "property": {
                                                        "type": "Identifier",
                                                        "start": 3556,
                                                        "end": 3564,
                                                        "loc": {
                                                          "start": {
                                                            "line": 113,
                                                            "column": 42
                                                          },
                                                          "end": {
                                                            "line": 113,
                                                            "column": 50
                                                          }
                                                        },
                                                        "name": "renderer"
                                                      },
                                                      "computed": false
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 3565,
                                                      "end": 3571,
                                                      "loc": {
                                                        "start": {
                                                          "line": 113,
                                                          "column": 51
                                                        },
                                                        "end": {
                                                          "line": 113,
                                                          "column": 57
                                                        }
                                                      },
                                                      "name": "offset"
                                                    },
                                                    "computed": false
                                                  },
                                                  "property": {
                                                    "type": "Identifier",
                                                    "start": 3572,
                                                    "end": 3576,
                                                    "loc": {
                                                      "start": {
                                                        "line": 113,
                                                        "column": 58
                                                      },
                                                      "end": {
                                                        "line": 113,
                                                        "column": 62
                                                      }
                                                    },
                                                    "name": "left"
                                                  },
                                                  "computed": false
                                                }
                                              },
                                              "operator": "-",
                                              "right": {
                                                "type": "MemberExpression",
                                                "start": 3579,
                                                "end": 3593,
                                                "loc": {
                                                  "start": {
                                                    "line": 113,
                                                    "column": 65
                                                  },
                                                  "end": {
                                                    "line": 113,
                                                    "column": 79
                                                  }
                                                },
                                                "object": {
                                                  "type": "MemberExpression",
                                                  "start": 3579,
                                                  "end": 3588,
                                                  "loc": {
                                                    "start": {
                                                      "line": 113,
                                                      "column": 65
                                                    },
                                                    "end": {
                                                      "line": 113,
                                                      "column": 74
                                                    }
                                                  },
                                                  "object": {
                                                    "type": "ThisExpression",
                                                    "start": 3579,
                                                    "end": 3583,
                                                    "loc": {
                                                      "start": {
                                                        "line": 113,
                                                        "column": 65
                                                      },
                                                      "end": {
                                                        "line": 113,
                                                        "column": 69
                                                      }
                                                    }
                                                  },
                                                  "property": {
                                                    "type": "Identifier",
                                                    "start": 3584,
                                                    "end": 3588,
                                                    "loc": {
                                                      "start": {
                                                        "line": 113,
                                                        "column": 70
                                                      },
                                                      "end": {
                                                        "line": 113,
                                                        "column": 74
                                                      }
                                                    },
                                                    "name": "view"
                                                  },
                                                  "computed": false
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 3589,
                                                  "end": 3593,
                                                  "loc": {
                                                    "start": {
                                                      "line": 113,
                                                      "column": 75
                                                    },
                                                    "end": {
                                                      "line": 113,
                                                      "column": 79
                                                    }
                                                  },
                                                  "name": "left"
                                                },
                                                "computed": false
                                              }
                                            },
                                            "kind": "init"
                                          },
                                          {
                                            "type": "Property",
                                            "start": 3616,
                                            "end": 3673,
                                            "loc": {
                                              "start": {
                                                "line": 114,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 114,
                                                "column": 77
                                              }
                                            },
                                            "method": false,
                                            "shorthand": false,
                                            "computed": false,
                                            "key": {
                                              "type": "Identifier",
                                              "start": 3616,
                                              "end": 3623,
                                              "loc": {
                                                "start": {
                                                  "line": 114,
                                                  "column": 20
                                                },
                                                "end": {
                                                  "line": 114,
                                                  "column": 27
                                                }
                                              },
                                              "name": "offsetY"
                                            },
                                            "value": {
                                              "type": "BinaryExpression",
                                              "start": 3625,
                                              "end": 3673,
                                              "loc": {
                                                "start": {
                                                  "line": 114,
                                                  "column": 29
                                                },
                                                "end": {
                                                  "line": 114,
                                                  "column": 77
                                                }
                                              },
                                              "left": {
                                                "type": "BinaryExpression",
                                                "start": 3625,
                                                "end": 3657,
                                                "loc": {
                                                  "start": {
                                                    "line": 114,
                                                    "column": 29
                                                  },
                                                  "end": {
                                                    "line": 114,
                                                    "column": 61
                                                  }
                                                },
                                                "left": {
                                                  "type": "Identifier",
                                                  "start": 3625,
                                                  "end": 3630,
                                                  "loc": {
                                                    "start": {
                                                      "line": 114,
                                                      "column": 29
                                                    },
                                                    "end": {
                                                      "line": 114,
                                                      "column": 34
                                                    }
                                                  },
                                                  "name": "pageY"
                                                },
                                                "operator": "-",
                                                "right": {
                                                  "type": "MemberExpression",
                                                  "start": 3633,
                                                  "end": 3657,
                                                  "loc": {
                                                    "start": {
                                                      "line": 114,
                                                      "column": 37
                                                    },
                                                    "end": {
                                                      "line": 114,
                                                      "column": 61
                                                    }
                                                  },
                                                  "object": {
                                                    "type": "MemberExpression",
                                                    "start": 3633,
                                                    "end": 3653,
                                                    "loc": {
                                                      "start": {
                                                        "line": 114,
                                                        "column": 37
                                                      },
                                                      "end": {
                                                        "line": 114,
                                                        "column": 57
                                                      }
                                                    },
                                                    "object": {
                                                      "type": "MemberExpression",
                                                      "start": 3633,
                                                      "end": 3646,
                                                      "loc": {
                                                        "start": {
                                                          "line": 114,
                                                          "column": 37
                                                        },
                                                        "end": {
                                                          "line": 114,
                                                          "column": 50
                                                        }
                                                      },
                                                      "object": {
                                                        "type": "ThisExpression",
                                                        "start": 3633,
                                                        "end": 3637,
                                                        "loc": {
                                                          "start": {
                                                            "line": 114,
                                                            "column": 37
                                                          },
                                                          "end": {
                                                            "line": 114,
                                                            "column": 41
                                                          }
                                                        }
                                                      },
                                                      "property": {
                                                        "type": "Identifier",
                                                        "start": 3638,
                                                        "end": 3646,
                                                        "loc": {
                                                          "start": {
                                                            "line": 114,
                                                            "column": 42
                                                          },
                                                          "end": {
                                                            "line": 114,
                                                            "column": 50
                                                          }
                                                        },
                                                        "name": "renderer"
                                                      },
                                                      "computed": false
                                                    },
                                                    "property": {
                                                      "type": "Identifier",
                                                      "start": 3647,
                                                      "end": 3653,
                                                      "loc": {
                                                        "start": {
                                                          "line": 114,
                                                          "column": 51
                                                        },
                                                        "end": {
                                                          "line": 114,
                                                          "column": 57
                                                        }
                                                      },
                                                      "name": "offset"
                                                    },
                                                    "computed": false
                                                  },
                                                  "property": {
                                                    "type": "Identifier",
                                                    "start": 3654,
                                                    "end": 3657,
                                                    "loc": {
                                                      "start": {
                                                        "line": 114,
                                                        "column": 58
                                                      },
                                                      "end": {
                                                        "line": 114,
                                                        "column": 61
                                                      }
                                                    },
                                                    "name": "top"
                                                  },
                                                  "computed": false
                                                }
                                              },
                                              "operator": "-",
                                              "right": {
                                                "type": "MemberExpression",
                                                "start": 3660,
                                                "end": 3673,
                                                "loc": {
                                                  "start": {
                                                    "line": 114,
                                                    "column": 64
                                                  },
                                                  "end": {
                                                    "line": 114,
                                                    "column": 77
                                                  }
                                                },
                                                "object": {
                                                  "type": "MemberExpression",
                                                  "start": 3660,
                                                  "end": 3669,
                                                  "loc": {
                                                    "start": {
                                                      "line": 114,
                                                      "column": 64
                                                    },
                                                    "end": {
                                                      "line": 114,
                                                      "column": 73
                                                    }
                                                  },
                                                  "object": {
                                                    "type": "ThisExpression",
                                                    "start": 3660,
                                                    "end": 3664,
                                                    "loc": {
                                                      "start": {
                                                        "line": 114,
                                                        "column": 64
                                                      },
                                                      "end": {
                                                        "line": 114,
                                                        "column": 68
                                                      }
                                                    }
                                                  },
                                                  "property": {
                                                    "type": "Identifier",
                                                    "start": 3665,
                                                    "end": 3669,
                                                    "loc": {
                                                      "start": {
                                                        "line": 114,
                                                        "column": 69
                                                      },
                                                      "end": {
                                                        "line": 114,
                                                        "column": 73
                                                      }
                                                    },
                                                    "name": "view"
                                                  },
                                                  "computed": false
                                                },
                                                "property": {
                                                  "type": "Identifier",
                                                  "start": 3670,
                                                  "end": 3673,
                                                  "loc": {
                                                    "start": {
                                                      "line": 114,
                                                      "column": 74
                                                    },
                                                    "end": {
                                                      "line": 114,
                                                      "column": 77
                                                    }
                                                  },
                                                  "name": "top"
                                                },
                                                "computed": false
                                              }
                                            },
                                            "kind": "init"
                                          },
                                          {
                                            "type": "Property",
                                            "start": 3696,
                                            "end": 3708,
                                            "loc": {
                                              "start": {
                                                "line": 115,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 115,
                                                "column": 32
                                              }
                                            },
                                            "method": false,
                                            "shorthand": false,
                                            "computed": false,
                                            "key": {
                                              "type": "Identifier",
                                              "start": 3696,
                                              "end": 3701,
                                              "loc": {
                                                "start": {
                                                  "line": 115,
                                                  "column": 20
                                                },
                                                "end": {
                                                  "line": 115,
                                                  "column": 25
                                                }
                                              },
                                              "name": "pageX"
                                            },
                                            "value": {
                                              "type": "Identifier",
                                              "start": 3703,
                                              "end": 3708,
                                              "loc": {
                                                "start": {
                                                  "line": 115,
                                                  "column": 27
                                                },
                                                "end": {
                                                  "line": 115,
                                                  "column": 32
                                                }
                                              },
                                              "name": "pageX"
                                            },
                                            "kind": "init"
                                          },
                                          {
                                            "type": "Property",
                                            "start": 3731,
                                            "end": 3743,
                                            "loc": {
                                              "start": {
                                                "line": 116,
                                                "column": 20
                                              },
                                              "end": {
                                                "line": 116,
                                                "column": 32
                                              }
                                            },
                                            "method": false,
                                            "shorthand": false,
                                            "computed": false,
                                            "key": {
                                              "type": "Identifier",
                                              "start": 3731,
                                              "end": 3736,
                                              "loc": {
                                                "start": {
                                                  "line": 116,
                                                  "column": 20
                                                },
                                                "end": {
                                                  "line": 116,
                                                  "column": 25
                                                }
                                              },
                                              "name": "pageY"
                                            },
                                            "value": {
                                              "type": "Identifier",
                                              "start": 3738,
                                              "end": 3743,
                                              "loc": {
                                                "start": {
                                                  "line": 116,
                                                  "column": 27
                                                },
                                                "end": {
                                                  "line": 116,
                                                  "column": 32
                                                }
                                              },
                                              "name": "pageY"
                                            },
                                            "kind": "init"
                                          }
                                        ]
                                      }
                                    ]
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "type": "ExpressionStatement",
                            "start": 3793,
                            "end": 3812,
                            "loc": {
                              "start": {
                                "line": 119,
                                "column": 12
                              },
                              "end": {
                                "line": 119,
                                "column": 31
                              }
                            },
                            "expression": {
                              "type": "AssignmentExpression",
                              "start": 3793,
                              "end": 3811,
                              "loc": {
                                "start": {
                                  "line": 119,
                                  "column": 12
                                },
                                "end": {
                                  "line": 119,
                                  "column": 30
                                }
                              },
                              "operator": "=",
                              "left": {
                                "type": "MemberExpression",
                                "start": 3793,
                                "end": 3804,
                                "loc": {
                                  "start": {
                                    "line": 119,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 119,
                                    "column": 23
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 3793,
                                  "end": 3798,
                                  "loc": {
                                    "start": {
                                      "line": 119,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 119,
                                      "column": 17
                                    }
                                  },
                                  "name": "state"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 3799,
                                  "end": 3804,
                                  "loc": {
                                    "start": {
                                      "line": 119,
                                      "column": 18
                                    },
                                    "end": {
                                      "line": 119,
                                      "column": 23
                                    }
                                  },
                                  "name": "touch"
                                },
                                "computed": false
                              },
                              "right": {
                                "type": "Literal",
                                "start": 3807,
                                "end": 3811,
                                "loc": {
                                  "start": {
                                    "line": 119,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 119,
                                    "column": 30
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              }
                            }
                          },
                          {
                            "type": "ExpressionStatement",
                            "start": 3826,
                            "end": 3870,
                            "loc": {
                              "start": {
                                "line": 120,
                                "column": 12
                              },
                              "end": {
                                "line": 120,
                                "column": 56
                              }
                            },
                            "expression": {
                              "type": "AssignmentExpression",
                              "start": 3826,
                              "end": 3869,
                              "loc": {
                                "start": {
                                  "line": 120,
                                  "column": 12
                                },
                                "end": {
                                  "line": 120,
                                  "column": 55
                                }
                              },
                              "operator": "=",
                              "left": {
                                "type": "MemberExpression",
                                "start": 3826,
                                "end": 3842,
                                "loc": {
                                  "start": {
                                    "line": 120,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 120,
                                    "column": 28
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 3826,
                                  "end": 3831,
                                  "loc": {
                                    "start": {
                                      "line": 120,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 120,
                                      "column": 17
                                    }
                                  },
                                  "name": "state"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 3832,
                                  "end": 3842,
                                  "loc": {
                                    "start": {
                                      "line": 120,
                                      "column": 18
                                    },
                                    "end": {
                                      "line": 120,
                                      "column": 28
                                    }
                                  },
                                  "name": "multitouch"
                                },
                                "computed": false
                              },
                              "right": {
                                "type": "BinaryExpression",
                                "start": 3845,
                                "end": 3869,
                                "loc": {
                                  "start": {
                                    "line": 120,
                                    "column": 31
                                  },
                                  "end": {
                                    "line": 120,
                                    "column": 55
                                  }
                                },
                                "left": {
                                  "type": "MemberExpression",
                                  "start": 3845,
                                  "end": 3865,
                                  "loc": {
                                    "start": {
                                      "line": 120,
                                      "column": 31
                                    },
                                    "end": {
                                      "line": 120,
                                      "column": 51
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 3845,
                                    "end": 3858,
                                    "loc": {
                                      "start": {
                                        "line": 120,
                                        "column": 31
                                      },
                                      "end": {
                                        "line": 120,
                                        "column": 44
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 3845,
                                      "end": 3850,
                                      "loc": {
                                        "start": {
                                          "line": 120,
                                          "column": 31
                                        },
                                        "end": {
                                          "line": 120,
                                          "column": 36
                                        }
                                      },
                                      "name": "state"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 3851,
                                      "end": 3858,
                                      "loc": {
                                        "start": {
                                          "line": 120,
                                          "column": 37
                                        },
                                        "end": {
                                          "line": 120,
                                          "column": 44
                                        }
                                      },
                                      "name": "touches"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 3859,
                                    "end": 3865,
                                    "loc": {
                                      "start": {
                                        "line": 120,
                                        "column": 45
                                      },
                                      "end": {
                                        "line": 120,
                                        "column": 51
                                      }
                                    },
                                    "name": "length"
                                  },
                                  "computed": false
                                },
                                "operator": ">",
                                "right": {
                                  "type": "Literal",
                                  "start": 3868,
                                  "end": 3869,
                                  "loc": {
                                    "start": {
                                      "line": 120,
                                      "column": 54
                                    },
                                    "end": {
                                      "line": 120,
                                      "column": 55
                                    }
                                  },
                                  "value": 1,
                                  "rawValue": 1,
                                  "raw": "1"
                                }
                              }
                            }
                          },
                          {
                            "type": "IfStatement",
                            "start": 3884,
                            "end": 4218,
                            "loc": {
                              "start": {
                                "line": 121,
                                "column": 12
                              },
                              "end": {
                                "line": 127,
                                "column": 13
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 3888,
                              "end": 3912,
                              "loc": {
                                "start": {
                                  "line": 121,
                                  "column": 16
                                },
                                "end": {
                                  "line": 121,
                                  "column": 40
                                }
                              },
                              "left": {
                                "type": "MemberExpression",
                                "start": 3888,
                                "end": 3908,
                                "loc": {
                                  "start": {
                                    "line": 121,
                                    "column": 16
                                  },
                                  "end": {
                                    "line": 121,
                                    "column": 36
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 3888,
                                  "end": 3901,
                                  "loc": {
                                    "start": {
                                      "line": 121,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 121,
                                      "column": 29
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 3888,
                                    "end": 3893,
                                    "loc": {
                                      "start": {
                                        "line": 121,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 121,
                                        "column": 21
                                      }
                                    },
                                    "name": "state"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 3894,
                                    "end": 3901,
                                    "loc": {
                                      "start": {
                                        "line": 121,
                                        "column": 22
                                      },
                                      "end": {
                                        "line": 121,
                                        "column": 29
                                      }
                                    },
                                    "name": "touches"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 3902,
                                  "end": 3908,
                                  "loc": {
                                    "start": {
                                      "line": 121,
                                      "column": 30
                                    },
                                    "end": {
                                      "line": 121,
                                      "column": 36
                                    }
                                  },
                                  "name": "length"
                                },
                                "computed": false
                              },
                              "operator": ">",
                              "right": {
                                "type": "Literal",
                                "start": 3911,
                                "end": 3912,
                                "loc": {
                                  "start": {
                                    "line": 121,
                                    "column": 39
                                  },
                                  "end": {
                                    "line": 121,
                                    "column": 40
                                  }
                                },
                                "value": 0,
                                "rawValue": 0,
                                "raw": "0"
                              }
                            },
                            "consequent": {
                              "type": "BlockStatement",
                              "start": 3914,
                              "end": 4090,
                              "loc": {
                                "start": {
                                  "line": 121,
                                  "column": 42
                                },
                                "end": {
                                  "line": 124,
                                  "column": 13
                                }
                              },
                              "body": [
                                {
                                  "type": "ExpressionStatement",
                                  "start": 3933,
                                  "end": 3995,
                                  "loc": {
                                    "start": {
                                      "line": 122,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 122,
                                      "column": 78
                                    }
                                  },
                                  "expression": {
                                    "type": "AssignmentExpression",
                                    "start": 3933,
                                    "end": 3994,
                                    "loc": {
                                      "start": {
                                        "line": 122,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 122,
                                        "column": 77
                                      }
                                    },
                                    "operator": "=",
                                    "left": {
                                      "type": "MemberExpression",
                                      "start": 3933,
                                      "end": 3946,
                                      "loc": {
                                        "start": {
                                          "line": 122,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 122,
                                          "column": 29
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 3933,
                                        "end": 3938,
                                        "loc": {
                                          "start": {
                                            "line": 122,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 122,
                                            "column": 21
                                          }
                                        },
                                        "name": "state"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 3939,
                                        "end": 3946,
                                        "loc": {
                                          "start": {
                                            "line": 122,
                                            "column": 22
                                          },
                                          "end": {
                                            "line": 122,
                                            "column": 29
                                          }
                                        },
                                        "name": "offsetX"
                                      },
                                      "computed": false
                                    },
                                    "right": {
                                      "type": "AssignmentExpression",
                                      "start": 3949,
                                      "end": 3994,
                                      "loc": {
                                        "start": {
                                          "line": 122,
                                          "column": 32
                                        },
                                        "end": {
                                          "line": 122,
                                          "column": 77
                                        }
                                      },
                                      "operator": "=",
                                      "left": {
                                        "type": "MemberExpression",
                                        "start": 3949,
                                        "end": 3967,
                                        "loc": {
                                          "start": {
                                            "line": 122,
                                            "column": 32
                                          },
                                          "end": {
                                            "line": 122,
                                            "column": 50
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 3949,
                                          "end": 3959,
                                          "loc": {
                                            "start": {
                                              "line": 122,
                                              "column": 32
                                            },
                                            "end": {
                                              "line": 122,
                                              "column": 42
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 3949,
                                            "end": 3953,
                                            "loc": {
                                              "start": {
                                                "line": 122,
                                                "column": 32
                                              },
                                              "end": {
                                                "line": 122,
                                                "column": 36
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 3954,
                                            "end": 3959,
                                            "loc": {
                                              "start": {
                                                "line": 122,
                                                "column": 37
                                              },
                                              "end": {
                                                "line": 122,
                                                "column": 42
                                              }
                                            },
                                            "name": "touch"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3960,
                                          "end": 3967,
                                          "loc": {
                                            "start": {
                                              "line": 122,
                                              "column": 43
                                            },
                                            "end": {
                                              "line": 122,
                                              "column": 50
                                            }
                                          },
                                          "name": "offsetX"
                                        },
                                        "computed": false
                                      },
                                      "right": {
                                        "type": "MemberExpression",
                                        "start": 3970,
                                        "end": 3994,
                                        "loc": {
                                          "start": {
                                            "line": 122,
                                            "column": 53
                                          },
                                          "end": {
                                            "line": 122,
                                            "column": 77
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 3970,
                                          "end": 3986,
                                          "loc": {
                                            "start": {
                                              "line": 122,
                                              "column": 53
                                            },
                                            "end": {
                                              "line": 122,
                                              "column": 69
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 3970,
                                            "end": 3983,
                                            "loc": {
                                              "start": {
                                                "line": 122,
                                                "column": 53
                                              },
                                              "end": {
                                                "line": 122,
                                                "column": 66
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 3970,
                                              "end": 3975,
                                              "loc": {
                                                "start": {
                                                  "line": 122,
                                                  "column": 53
                                                },
                                                "end": {
                                                  "line": 122,
                                                  "column": 58
                                                }
                                              },
                                              "name": "state"
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 3976,
                                              "end": 3983,
                                              "loc": {
                                                "start": {
                                                  "line": 122,
                                                  "column": 59
                                                },
                                                "end": {
                                                  "line": 122,
                                                  "column": 66
                                                }
                                              },
                                              "name": "touches"
                                            },
                                            "computed": false
                                          },
                                          "property": {
                                            "type": "Literal",
                                            "start": 3984,
                                            "end": 3985,
                                            "loc": {
                                              "start": {
                                                "line": 122,
                                                "column": 67
                                              },
                                              "end": {
                                                "line": 122,
                                                "column": 68
                                              }
                                            },
                                            "value": 0,
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "computed": true
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 3987,
                                          "end": 3994,
                                          "loc": {
                                            "start": {
                                              "line": 122,
                                              "column": 70
                                            },
                                            "end": {
                                              "line": 122,
                                              "column": 77
                                            }
                                          },
                                          "name": "offsetX"
                                        },
                                        "computed": false
                                      }
                                    }
                                  }
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 4013,
                                  "end": 4075,
                                  "loc": {
                                    "start": {
                                      "line": 123,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 123,
                                      "column": 78
                                    }
                                  },
                                  "expression": {
                                    "type": "AssignmentExpression",
                                    "start": 4013,
                                    "end": 4074,
                                    "loc": {
                                      "start": {
                                        "line": 123,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 123,
                                        "column": 77
                                      }
                                    },
                                    "operator": "=",
                                    "left": {
                                      "type": "MemberExpression",
                                      "start": 4013,
                                      "end": 4026,
                                      "loc": {
                                        "start": {
                                          "line": 123,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 123,
                                          "column": 29
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 4013,
                                        "end": 4018,
                                        "loc": {
                                          "start": {
                                            "line": 123,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 123,
                                            "column": 21
                                          }
                                        },
                                        "name": "state"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 4019,
                                        "end": 4026,
                                        "loc": {
                                          "start": {
                                            "line": 123,
                                            "column": 22
                                          },
                                          "end": {
                                            "line": 123,
                                            "column": 29
                                          }
                                        },
                                        "name": "offsetY"
                                      },
                                      "computed": false
                                    },
                                    "right": {
                                      "type": "AssignmentExpression",
                                      "start": 4029,
                                      "end": 4074,
                                      "loc": {
                                        "start": {
                                          "line": 123,
                                          "column": 32
                                        },
                                        "end": {
                                          "line": 123,
                                          "column": 77
                                        }
                                      },
                                      "operator": "=",
                                      "left": {
                                        "type": "MemberExpression",
                                        "start": 4029,
                                        "end": 4047,
                                        "loc": {
                                          "start": {
                                            "line": 123,
                                            "column": 32
                                          },
                                          "end": {
                                            "line": 123,
                                            "column": 50
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 4029,
                                          "end": 4039,
                                          "loc": {
                                            "start": {
                                              "line": 123,
                                              "column": 32
                                            },
                                            "end": {
                                              "line": 123,
                                              "column": 42
                                            }
                                          },
                                          "object": {
                                            "type": "ThisExpression",
                                            "start": 4029,
                                            "end": 4033,
                                            "loc": {
                                              "start": {
                                                "line": 123,
                                                "column": 32
                                              },
                                              "end": {
                                                "line": 123,
                                                "column": 36
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "start": 4034,
                                            "end": 4039,
                                            "loc": {
                                              "start": {
                                                "line": 123,
                                                "column": 37
                                              },
                                              "end": {
                                                "line": 123,
                                                "column": 42
                                              }
                                            },
                                            "name": "touch"
                                          },
                                          "computed": false
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 4040,
                                          "end": 4047,
                                          "loc": {
                                            "start": {
                                              "line": 123,
                                              "column": 43
                                            },
                                            "end": {
                                              "line": 123,
                                              "column": 50
                                            }
                                          },
                                          "name": "offsetX"
                                        },
                                        "computed": false
                                      },
                                      "right": {
                                        "type": "MemberExpression",
                                        "start": 4050,
                                        "end": 4074,
                                        "loc": {
                                          "start": {
                                            "line": 123,
                                            "column": 53
                                          },
                                          "end": {
                                            "line": 123,
                                            "column": 77
                                          }
                                        },
                                        "object": {
                                          "type": "MemberExpression",
                                          "start": 4050,
                                          "end": 4066,
                                          "loc": {
                                            "start": {
                                              "line": 123,
                                              "column": 53
                                            },
                                            "end": {
                                              "line": 123,
                                              "column": 69
                                            }
                                          },
                                          "object": {
                                            "type": "MemberExpression",
                                            "start": 4050,
                                            "end": 4063,
                                            "loc": {
                                              "start": {
                                                "line": 123,
                                                "column": 53
                                              },
                                              "end": {
                                                "line": 123,
                                                "column": 66
                                              }
                                            },
                                            "object": {
                                              "type": "Identifier",
                                              "start": 4050,
                                              "end": 4055,
                                              "loc": {
                                                "start": {
                                                  "line": 123,
                                                  "column": 53
                                                },
                                                "end": {
                                                  "line": 123,
                                                  "column": 58
                                                }
                                              },
                                              "name": "state"
                                            },
                                            "property": {
                                              "type": "Identifier",
                                              "start": 4056,
                                              "end": 4063,
                                              "loc": {
                                                "start": {
                                                  "line": 123,
                                                  "column": 59
                                                },
                                                "end": {
                                                  "line": 123,
                                                  "column": 66
                                                }
                                              },
                                              "name": "touches"
                                            },
                                            "computed": false
                                          },
                                          "property": {
                                            "type": "Literal",
                                            "start": 4064,
                                            "end": 4065,
                                            "loc": {
                                              "start": {
                                                "line": 123,
                                                "column": 67
                                              },
                                              "end": {
                                                "line": 123,
                                                "column": 68
                                              }
                                            },
                                            "value": 0,
                                            "rawValue": 0,
                                            "raw": "0"
                                          },
                                          "computed": true
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 4067,
                                          "end": 4074,
                                          "loc": {
                                            "start": {
                                              "line": 123,
                                              "column": 70
                                            },
                                            "end": {
                                              "line": 123,
                                              "column": 77
                                            }
                                          },
                                          "name": "offsetY"
                                        },
                                        "computed": false
                                      }
                                    }
                                  }
                                }
                              ]
                            },
                            "alternate": {
                              "type": "BlockStatement",
                              "start": 4096,
                              "end": 4218,
                              "loc": {
                                "start": {
                                  "line": 124,
                                  "column": 19
                                },
                                "end": {
                                  "line": 127,
                                  "column": 13
                                }
                              },
                              "body": [
                                {
                                  "type": "ExpressionStatement",
                                  "start": 4115,
                                  "end": 4150,
                                  "loc": {
                                    "start": {
                                      "line": 125,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 125,
                                      "column": 51
                                    }
                                  },
                                  "expression": {
                                    "type": "AssignmentExpression",
                                    "start": 4115,
                                    "end": 4149,
                                    "loc": {
                                      "start": {
                                        "line": 125,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 125,
                                        "column": 50
                                      }
                                    },
                                    "operator": "=",
                                    "left": {
                                      "type": "MemberExpression",
                                      "start": 4115,
                                      "end": 4128,
                                      "loc": {
                                        "start": {
                                          "line": 125,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 125,
                                          "column": 29
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 4115,
                                        "end": 4120,
                                        "loc": {
                                          "start": {
                                            "line": 125,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 125,
                                            "column": 21
                                          }
                                        },
                                        "name": "state"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 4121,
                                        "end": 4128,
                                        "loc": {
                                          "start": {
                                            "line": 125,
                                            "column": 22
                                          },
                                          "end": {
                                            "line": 125,
                                            "column": 29
                                          }
                                        },
                                        "name": "offsetX"
                                      },
                                      "computed": false
                                    },
                                    "right": {
                                      "type": "MemberExpression",
                                      "start": 4131,
                                      "end": 4149,
                                      "loc": {
                                        "start": {
                                          "line": 125,
                                          "column": 32
                                        },
                                        "end": {
                                          "line": 125,
                                          "column": 50
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 4131,
                                        "end": 4141,
                                        "loc": {
                                          "start": {
                                            "line": 125,
                                            "column": 32
                                          },
                                          "end": {
                                            "line": 125,
                                            "column": 42
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 4131,
                                          "end": 4135,
                                          "loc": {
                                            "start": {
                                              "line": 125,
                                              "column": 32
                                            },
                                            "end": {
                                              "line": 125,
                                              "column": 36
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 4136,
                                          "end": 4141,
                                          "loc": {
                                            "start": {
                                              "line": 125,
                                              "column": 37
                                            },
                                            "end": {
                                              "line": 125,
                                              "column": 42
                                            }
                                          },
                                          "name": "touch"
                                        },
                                        "computed": false
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 4142,
                                        "end": 4149,
                                        "loc": {
                                          "start": {
                                            "line": 125,
                                            "column": 43
                                          },
                                          "end": {
                                            "line": 125,
                                            "column": 50
                                          }
                                        },
                                        "name": "offsetX"
                                      },
                                      "computed": false
                                    }
                                  }
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 4168,
                                  "end": 4203,
                                  "loc": {
                                    "start": {
                                      "line": 126,
                                      "column": 16
                                    },
                                    "end": {
                                      "line": 126,
                                      "column": 51
                                    }
                                  },
                                  "expression": {
                                    "type": "AssignmentExpression",
                                    "start": 4168,
                                    "end": 4202,
                                    "loc": {
                                      "start": {
                                        "line": 126,
                                        "column": 16
                                      },
                                      "end": {
                                        "line": 126,
                                        "column": 50
                                      }
                                    },
                                    "operator": "=",
                                    "left": {
                                      "type": "MemberExpression",
                                      "start": 4168,
                                      "end": 4181,
                                      "loc": {
                                        "start": {
                                          "line": 126,
                                          "column": 16
                                        },
                                        "end": {
                                          "line": 126,
                                          "column": 29
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 4168,
                                        "end": 4173,
                                        "loc": {
                                          "start": {
                                            "line": 126,
                                            "column": 16
                                          },
                                          "end": {
                                            "line": 126,
                                            "column": 21
                                          }
                                        },
                                        "name": "state"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 4174,
                                        "end": 4181,
                                        "loc": {
                                          "start": {
                                            "line": 126,
                                            "column": 22
                                          },
                                          "end": {
                                            "line": 126,
                                            "column": 29
                                          }
                                        },
                                        "name": "offsetY"
                                      },
                                      "computed": false
                                    },
                                    "right": {
                                      "type": "MemberExpression",
                                      "start": 4184,
                                      "end": 4202,
                                      "loc": {
                                        "start": {
                                          "line": 126,
                                          "column": 32
                                        },
                                        "end": {
                                          "line": 126,
                                          "column": 50
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 4184,
                                        "end": 4194,
                                        "loc": {
                                          "start": {
                                            "line": 126,
                                            "column": 32
                                          },
                                          "end": {
                                            "line": 126,
                                            "column": 42
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 4184,
                                          "end": 4188,
                                          "loc": {
                                            "start": {
                                              "line": 126,
                                              "column": 32
                                            },
                                            "end": {
                                              "line": 126,
                                              "column": 36
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 4189,
                                          "end": 4194,
                                          "loc": {
                                            "start": {
                                              "line": 126,
                                              "column": 37
                                            },
                                            "end": {
                                              "line": 126,
                                              "column": 42
                                            }
                                          },
                                          "name": "touch"
                                        },
                                        "computed": false
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 4195,
                                        "end": 4202,
                                        "loc": {
                                          "start": {
                                            "line": 126,
                                            "column": 43
                                          },
                                          "end": {
                                            "line": 126,
                                            "column": 50
                                          }
                                        },
                                        "name": "offsetX"
                                      },
                                      "computed": false
                                    }
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "alternate": null
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4241,
                      "end": 4263,
                      "loc": {
                        "start": {
                          "line": 130,
                          "column": 8
                        },
                        "end": {
                          "line": 130,
                          "column": 30
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 4241,
                        "end": 4262,
                        "loc": {
                          "start": {
                            "line": 130,
                            "column": 8
                          },
                          "end": {
                            "line": 130,
                            "column": 29
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 4241,
                          "end": 4253,
                          "loc": {
                            "start": {
                              "line": 130,
                              "column": 8
                            },
                            "end": {
                              "line": 130,
                              "column": 20
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 4241,
                            "end": 4246,
                            "loc": {
                              "start": {
                                "line": 130,
                                "column": 8
                              },
                              "end": {
                                "line": 130,
                                "column": 13
                              }
                            },
                            "name": "state"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4247,
                            "end": 4253,
                            "loc": {
                              "start": {
                                "line": 130,
                                "column": 14
                              },
                              "end": {
                                "line": 130,
                                "column": 20
                              }
                            },
                            "name": "button"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 4256,
                          "end": 4262,
                          "loc": {
                            "start": {
                              "line": 130,
                              "column": 23
                            },
                            "end": {
                              "line": 130,
                              "column": 29
                            }
                          },
                          "name": "button"
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4273,
                      "end": 4293,
                      "loc": {
                        "start": {
                          "line": 131,
                          "column": 8
                        },
                        "end": {
                          "line": 131,
                          "column": 28
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 4273,
                        "end": 4292,
                        "loc": {
                          "start": {
                            "line": 131,
                            "column": 8
                          },
                          "end": {
                            "line": 131,
                            "column": 27
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 4273,
                          "end": 4284,
                          "loc": {
                            "start": {
                              "line": 131,
                              "column": 8
                            },
                            "end": {
                              "line": 131,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 4273,
                            "end": 4278,
                            "loc": {
                              "start": {
                                "line": 131,
                                "column": 8
                              },
                              "end": {
                                "line": 131,
                                "column": 13
                              }
                            },
                            "name": "state"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4279,
                            "end": 4284,
                            "loc": {
                              "start": {
                                "line": 131,
                                "column": 14
                              },
                              "end": {
                                "line": 131,
                                "column": 19
                              }
                            },
                            "name": "which"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 4287,
                          "end": 4292,
                          "loc": {
                            "start": {
                              "line": 131,
                              "column": 22
                            },
                            "end": {
                              "line": 131,
                              "column": 27
                            }
                          },
                          "name": "which"
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4303,
                      "end": 4323,
                      "loc": {
                        "start": {
                          "line": 132,
                          "column": 8
                        },
                        "end": {
                          "line": 132,
                          "column": 28
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 4303,
                        "end": 4322,
                        "loc": {
                          "start": {
                            "line": 132,
                            "column": 8
                          },
                          "end": {
                            "line": 132,
                            "column": 27
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 4303,
                          "end": 4314,
                          "loc": {
                            "start": {
                              "line": 132,
                              "column": 8
                            },
                            "end": {
                              "line": 132,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 4303,
                            "end": 4308,
                            "loc": {
                              "start": {
                                "line": 132,
                                "column": 8
                              },
                              "end": {
                                "line": 132,
                                "column": 13
                              }
                            },
                            "name": "state"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4309,
                            "end": 4314,
                            "loc": {
                              "start": {
                                "line": 132,
                                "column": 14
                              },
                              "end": {
                                "line": 132,
                                "column": 19
                              }
                            },
                            "name": "event"
                          },
                          "computed": false
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 4317,
                          "end": 4322,
                          "loc": {
                            "start": {
                              "line": 132,
                              "column": 22
                            },
                            "end": {
                              "line": 132,
                              "column": 27
                            }
                          },
                          "name": "event"
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 4333,
                      "end": 4358,
                      "loc": {
                        "start": {
                          "line": 133,
                          "column": 8
                        },
                        "end": {
                          "line": 133,
                          "column": 33
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 4333,
                        "end": 4357,
                        "loc": {
                          "start": {
                            "line": 133,
                            "column": 8
                          },
                          "end": {
                            "line": 133,
                            "column": 32
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 4333,
                          "end": 4350,
                          "loc": {
                            "start": {
                              "line": 133,
                              "column": 8
                            },
                            "end": {
                              "line": 133,
                              "column": 25
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 4333,
                            "end": 4345,
                            "loc": {
                              "start": {
                                "line": 133,
                                "column": 8
                              },
                              "end": {
                                "line": 133,
                                "column": 20
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 4333,
                              "end": 4337,
                              "loc": {
                                "start": {
                                  "line": 133,
                                  "column": 8
                                },
                                "end": {
                                  "line": 133,
                                  "column": 12
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 4338,
                              "end": 4345,
                              "loc": {
                                "start": {
                                  "line": 133,
                                  "column": 13
                                },
                                "end": {
                                  "line": 133,
                                  "column": 20
                                }
                              },
                              "name": "changes"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 4346,
                            "end": 4350,
                            "loc": {
                              "start": {
                                "line": 133,
                                "column": 21
                              },
                              "end": {
                                "line": 133,
                                "column": 25
                              }
                            },
                            "name": "push"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 4351,
                            "end": 4356,
                            "loc": {
                              "start": {
                                "line": 133,
                                "column": 26
                              },
                              "end": {
                                "line": 133,
                                "column": 31
                              }
                            },
                            "name": "state"
                          }
                        ]
                      }
                    },
                    {
                      "type": "IfStatement",
                      "start": 4370,
                      "end": 5436,
                      "loc": {
                        "start": {
                          "line": 135,
                          "column": 8
                        },
                        "end": {
                          "line": 153,
                          "column": 9
                        }
                      },
                      "test": {
                        "type": "BinaryExpression",
                        "start": 4374,
                        "end": 4394,
                        "loc": {
                          "start": {
                            "line": 135,
                            "column": 12
                          },
                          "end": {
                            "line": 135,
                            "column": 32
                          }
                        },
                        "left": {
                          "type": "Identifier",
                          "start": 4374,
                          "end": 4378,
                          "loc": {
                            "start": {
                              "line": 135,
                              "column": 12
                            },
                            "end": {
                              "line": 135,
                              "column": 16
                            }
                          },
                          "name": "type"
                        },
                        "operator": "===",
                        "right": {
                          "type": "Literal",
                          "start": 4383,
                          "end": 4394,
                          "loc": {
                            "start": {
                              "line": 135,
                              "column": 21
                            },
                            "end": {
                              "line": 135,
                              "column": 32
                            }
                          },
                          "value": "mousedown",
                          "rawValue": "mousedown",
                          "raw": "'mousedown'"
                        }
                      },
                      "consequent": {
                        "type": "BlockStatement",
                        "start": 4396,
                        "end": 4656,
                        "loc": {
                          "start": {
                            "line": 135,
                            "column": 34
                          },
                          "end": {
                            "line": 140,
                            "column": 9
                          }
                        },
                        "body": [
                          {
                            "type": "ExpressionStatement",
                            "start": 4411,
                            "end": 4434,
                            "loc": {
                              "start": {
                                "line": 136,
                                "column": 12
                              },
                              "end": {
                                "line": 136,
                                "column": 35
                              }
                            },
                            "expression": {
                              "type": "AssignmentExpression",
                              "start": 4411,
                              "end": 4433,
                              "loc": {
                                "start": {
                                  "line": 136,
                                  "column": 12
                                },
                                "end": {
                                  "line": 136,
                                  "column": 34
                                }
                              },
                              "operator": "=",
                              "left": {
                                "type": "MemberExpression",
                                "start": 4411,
                                "end": 4426,
                                "loc": {
                                  "start": {
                                    "line": 136,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 136,
                                    "column": 27
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 4411,
                                  "end": 4421,
                                  "loc": {
                                    "start": {
                                      "line": 136,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 136,
                                      "column": 22
                                    }
                                  },
                                  "object": {
                                    "type": "ThisExpression",
                                    "start": 4411,
                                    "end": 4415,
                                    "loc": {
                                      "start": {
                                        "line": 136,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 136,
                                        "column": 16
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 4416,
                                    "end": 4421,
                                    "loc": {
                                      "start": {
                                        "line": 136,
                                        "column": 17
                                      },
                                      "end": {
                                        "line": 136,
                                        "column": 22
                                      }
                                    },
                                    "name": "mouse"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 4422,
                                  "end": 4426,
                                  "loc": {
                                    "start": {
                                      "line": 136,
                                      "column": 23
                                    },
                                    "end": {
                                      "line": 136,
                                      "column": 27
                                    }
                                  },
                                  "name": "down"
                                },
                                "computed": false
                              },
                              "right": {
                                "type": "Literal",
                                "start": 4429,
                                "end": 4433,
                                "loc": {
                                  "start": {
                                    "line": 136,
                                    "column": 30
                                  },
                                  "end": {
                                    "line": 136,
                                    "column": 34
                                  }
                                },
                                "value": true,
                                "rawValue": true,
                                "raw": "true"
                              }
                            }
                          },
                          {
                            "type": "ExpressionStatement",
                            "start": 4448,
                            "end": 4475,
                            "loc": {
                              "start": {
                                "line": 137,
                                "column": 12
                              },
                              "end": {
                                "line": 137,
                                "column": 39
                              }
                            },
                            "expression": {
                              "type": "AssignmentExpression",
                              "start": 4448,
                              "end": 4474,
                              "loc": {
                                "start": {
                                  "line": 137,
                                  "column": 12
                                },
                                "end": {
                                  "line": 137,
                                  "column": 38
                                }
                              },
                              "operator": "=",
                              "left": {
                                "type": "MemberExpression",
                                "start": 4448,
                                "end": 4465,
                                "loc": {
                                  "start": {
                                    "line": 137,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 137,
                                    "column": 29
                                  }
                                },
                                "object": {
                                  "type": "MemberExpression",
                                  "start": 4448,
                                  "end": 4458,
                                  "loc": {
                                    "start": {
                                      "line": 137,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 137,
                                      "column": 22
                                    }
                                  },
                                  "object": {
                                    "type": "ThisExpression",
                                    "start": 4448,
                                    "end": 4452,
                                    "loc": {
                                      "start": {
                                        "line": 137,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 137,
                                        "column": 16
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 4453,
                                    "end": 4458,
                                    "loc": {
                                      "start": {
                                        "line": 137,
                                        "column": 17
                                      },
                                      "end": {
                                        "line": 137,
                                        "column": 22
                                      }
                                    },
                                    "name": "mouse"
                                  },
                                  "computed": false
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 4459,
                                  "end": 4465,
                                  "loc": {
                                    "start": {
                                      "line": 137,
                                      "column": 23
                                    },
                                    "end": {
                                      "line": 137,
                                      "column": 29
                                    }
                                  },
                                  "name": "button"
                                },
                                "computed": false
                              },
                              "right": {
                                "type": "Identifier",
                                "start": 4468,
                                "end": 4474,
                                "loc": {
                                  "start": {
                                    "line": 137,
                                    "column": 32
                                  },
                                  "end": {
                                    "line": 137,
                                    "column": 38
                                  }
                                },
                                "name": "button"
                              }
                            }
                          },
                          {
                            "type": "ExpressionStatement",
                            "start": 4489,
                            "end": 4559,
                            "loc": {
                              "start": {
                                "line": 138,
                                "column": 12
                              },
                              "end": {
                                "line": 138,
                                "column": 82
                              }
                            },
                            "expression": {
                              "type": "CallExpression",
                              "start": 4489,
                              "end": 4558,
                              "loc": {
                                "start": {
                                  "line": 138,
                                  "column": 12
                                },
                                "end": {
                                  "line": 138,
                                  "column": 81
                                }
                              },
                              "callee": {
                                "type": "MemberExpression",
                                "start": 4489,
                                "end": 4514,
                                "loc": {
                                  "start": {
                                    "line": 138,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 138,
                                    "column": 37
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 4489,
                                  "end": 4497,
                                  "loc": {
                                    "start": {
                                      "line": 138,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 138,
                                      "column": 20
                                    }
                                  },
                                  "name": "document"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 4498,
                                  "end": 4514,
                                  "loc": {
                                    "start": {
                                      "line": 138,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 138,
                                      "column": 37
                                    }
                                  },
                                  "name": "addEventListener"
                                },
                                "computed": false
                              },
                              "arguments": [
                                {
                                  "type": "Literal",
                                  "start": 4515,
                                  "end": 4524,
                                  "loc": {
                                    "start": {
                                      "line": 138,
                                      "column": 38
                                    },
                                    "end": {
                                      "line": 138,
                                      "column": 47
                                    }
                                  },
                                  "value": "mouseup",
                                  "rawValue": "mouseup",
                                  "raw": "'mouseup'"
                                },
                                {
                                  "type": "MemberExpression",
                                  "start": 4526,
                                  "end": 4550,
                                  "loc": {
                                    "start": {
                                      "line": 138,
                                      "column": 49
                                    },
                                    "end": {
                                      "line": 138,
                                      "column": 73
                                    }
                                  },
                                  "object": {
                                    "type": "ThisExpression",
                                    "start": 4526,
                                    "end": 4530,
                                    "loc": {
                                      "start": {
                                        "line": 138,
                                        "column": 49
                                      },
                                      "end": {
                                        "line": 138,
                                        "column": 53
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 4531,
                                    "end": 4550,
                                    "loc": {
                                      "start": {
                                        "line": 138,
                                        "column": 54
                                      },
                                      "end": {
                                        "line": 138,
                                        "column": 73
                                      }
                                    },
                                    "name": "eventHandlerDefault"
                                  },
                                  "computed": false
                                },
                                {
                                  "type": "Literal",
                                  "start": 4552,
                                  "end": 4557,
                                  "loc": {
                                    "start": {
                                      "line": 138,
                                      "column": 75
                                    },
                                    "end": {
                                      "line": 138,
                                      "column": 80
                                    }
                                  },
                                  "value": false,
                                  "rawValue": false,
                                  "raw": "false"
                                }
                              ]
                            }
                          },
                          {
                            "type": "ExpressionStatement",
                            "start": 4573,
                            "end": 4645,
                            "loc": {
                              "start": {
                                "line": 139,
                                "column": 12
                              },
                              "end": {
                                "line": 139,
                                "column": 84
                              }
                            },
                            "expression": {
                              "type": "CallExpression",
                              "start": 4573,
                              "end": 4644,
                              "loc": {
                                "start": {
                                  "line": 139,
                                  "column": 12
                                },
                                "end": {
                                  "line": 139,
                                  "column": 83
                                }
                              },
                              "callee": {
                                "type": "MemberExpression",
                                "start": 4573,
                                "end": 4598,
                                "loc": {
                                  "start": {
                                    "line": 139,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 139,
                                    "column": 37
                                  }
                                },
                                "object": {
                                  "type": "Identifier",
                                  "start": 4573,
                                  "end": 4581,
                                  "loc": {
                                    "start": {
                                      "line": 139,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 139,
                                      "column": 20
                                    }
                                  },
                                  "name": "document"
                                },
                                "property": {
                                  "type": "Identifier",
                                  "start": 4582,
                                  "end": 4598,
                                  "loc": {
                                    "start": {
                                      "line": 139,
                                      "column": 21
                                    },
                                    "end": {
                                      "line": 139,
                                      "column": 37
                                    }
                                  },
                                  "name": "addEventListener"
                                },
                                "computed": false
                              },
                              "arguments": [
                                {
                                  "type": "Literal",
                                  "start": 4599,
                                  "end": 4610,
                                  "loc": {
                                    "start": {
                                      "line": 139,
                                      "column": 38
                                    },
                                    "end": {
                                      "line": 139,
                                      "column": 49
                                    }
                                  },
                                  "value": "mousemove",
                                  "rawValue": "mousemove",
                                  "raw": "'mousemove'"
                                },
                                {
                                  "type": "MemberExpression",
                                  "start": 4612,
                                  "end": 4636,
                                  "loc": {
                                    "start": {
                                      "line": 139,
                                      "column": 51
                                    },
                                    "end": {
                                      "line": 139,
                                      "column": 75
                                    }
                                  },
                                  "object": {
                                    "type": "ThisExpression",
                                    "start": 4612,
                                    "end": 4616,
                                    "loc": {
                                      "start": {
                                        "line": 139,
                                        "column": 51
                                      },
                                      "end": {
                                        "line": 139,
                                        "column": 55
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 4617,
                                    "end": 4636,
                                    "loc": {
                                      "start": {
                                        "line": 139,
                                        "column": 56
                                      },
                                      "end": {
                                        "line": 139,
                                        "column": 75
                                      }
                                    },
                                    "name": "eventHandlerDefault"
                                  },
                                  "computed": false
                                },
                                {
                                  "type": "Literal",
                                  "start": 4638,
                                  "end": 4643,
                                  "loc": {
                                    "start": {
                                      "line": 139,
                                      "column": 77
                                    },
                                    "end": {
                                      "line": 139,
                                      "column": 82
                                    }
                                  },
                                  "value": false,
                                  "rawValue": false,
                                  "raw": "false"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "alternate": {
                        "type": "IfStatement",
                        "start": 4662,
                        "end": 5436,
                        "loc": {
                          "start": {
                            "line": 140,
                            "column": 15
                          },
                          "end": {
                            "line": 153,
                            "column": 9
                          }
                        },
                        "test": {
                          "type": "BinaryExpression",
                          "start": 4666,
                          "end": 4684,
                          "loc": {
                            "start": {
                              "line": 140,
                              "column": 19
                            },
                            "end": {
                              "line": 140,
                              "column": 37
                            }
                          },
                          "left": {
                            "type": "Identifier",
                            "start": 4666,
                            "end": 4670,
                            "loc": {
                              "start": {
                                "line": 140,
                                "column": 19
                              },
                              "end": {
                                "line": 140,
                                "column": 23
                              }
                            },
                            "name": "type"
                          },
                          "operator": "===",
                          "right": {
                            "type": "Literal",
                            "start": 4675,
                            "end": 4684,
                            "loc": {
                              "start": {
                                "line": 140,
                                "column": 28
                              },
                              "end": {
                                "line": 140,
                                "column": 37
                              }
                            },
                            "value": "mouseup",
                            "rawValue": "mouseup",
                            "raw": "'mouseup'"
                          }
                        },
                        "consequent": {
                          "type": "BlockStatement",
                          "start": 4686,
                          "end": 4939,
                          "loc": {
                            "start": {
                              "line": 140,
                              "column": 39
                            },
                            "end": {
                              "line": 145,
                              "column": 9
                            }
                          },
                          "body": [
                            {
                              "type": "ExpressionStatement",
                              "start": 4701,
                              "end": 4725,
                              "loc": {
                                "start": {
                                  "line": 141,
                                  "column": 12
                                },
                                "end": {
                                  "line": 141,
                                  "column": 36
                                }
                              },
                              "expression": {
                                "type": "AssignmentExpression",
                                "start": 4701,
                                "end": 4724,
                                "loc": {
                                  "start": {
                                    "line": 141,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 141,
                                    "column": 35
                                  }
                                },
                                "operator": "=",
                                "left": {
                                  "type": "MemberExpression",
                                  "start": 4701,
                                  "end": 4716,
                                  "loc": {
                                    "start": {
                                      "line": 141,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 141,
                                      "column": 27
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 4701,
                                    "end": 4711,
                                    "loc": {
                                      "start": {
                                        "line": 141,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 141,
                                        "column": 22
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 4701,
                                      "end": 4705,
                                      "loc": {
                                        "start": {
                                          "line": 141,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 141,
                                          "column": 16
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 4706,
                                      "end": 4711,
                                      "loc": {
                                        "start": {
                                          "line": 141,
                                          "column": 17
                                        },
                                        "end": {
                                          "line": 141,
                                          "column": 22
                                        }
                                      },
                                      "name": "mouse"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 4712,
                                    "end": 4716,
                                    "loc": {
                                      "start": {
                                        "line": 141,
                                        "column": 23
                                      },
                                      "end": {
                                        "line": 141,
                                        "column": 27
                                      }
                                    },
                                    "name": "down"
                                  },
                                  "computed": false
                                },
                                "right": {
                                  "type": "Literal",
                                  "start": 4719,
                                  "end": 4724,
                                  "loc": {
                                    "start": {
                                      "line": 141,
                                      "column": 30
                                    },
                                    "end": {
                                      "line": 141,
                                      "column": 35
                                    }
                                  },
                                  "value": false,
                                  "rawValue": false,
                                  "raw": "false"
                                }
                              }
                            },
                            {
                              "type": "ExpressionStatement",
                              "start": 4739,
                              "end": 4766,
                              "loc": {
                                "start": {
                                  "line": 142,
                                  "column": 12
                                },
                                "end": {
                                  "line": 142,
                                  "column": 39
                                }
                              },
                              "expression": {
                                "type": "AssignmentExpression",
                                "start": 4739,
                                "end": 4765,
                                "loc": {
                                  "start": {
                                    "line": 142,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 142,
                                    "column": 38
                                  }
                                },
                                "operator": "=",
                                "left": {
                                  "type": "MemberExpression",
                                  "start": 4739,
                                  "end": 4756,
                                  "loc": {
                                    "start": {
                                      "line": 142,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 142,
                                      "column": 29
                                    }
                                  },
                                  "object": {
                                    "type": "MemberExpression",
                                    "start": 4739,
                                    "end": 4749,
                                    "loc": {
                                      "start": {
                                        "line": 142,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 142,
                                        "column": 22
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 4739,
                                      "end": 4743,
                                      "loc": {
                                        "start": {
                                          "line": 142,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 142,
                                          "column": 16
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 4744,
                                      "end": 4749,
                                      "loc": {
                                        "start": {
                                          "line": 142,
                                          "column": 17
                                        },
                                        "end": {
                                          "line": 142,
                                          "column": 22
                                        }
                                      },
                                      "name": "mouse"
                                    },
                                    "computed": false
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 4750,
                                    "end": 4756,
                                    "loc": {
                                      "start": {
                                        "line": 142,
                                        "column": 23
                                      },
                                      "end": {
                                        "line": 142,
                                        "column": 29
                                      }
                                    },
                                    "name": "button"
                                  },
                                  "computed": false
                                },
                                "right": {
                                  "type": "Identifier",
                                  "start": 4759,
                                  "end": 4765,
                                  "loc": {
                                    "start": {
                                      "line": 142,
                                      "column": 32
                                    },
                                    "end": {
                                      "line": 142,
                                      "column": 38
                                    }
                                  },
                                  "name": "button"
                                }
                              }
                            },
                            {
                              "type": "ExpressionStatement",
                              "start": 4780,
                              "end": 4846,
                              "loc": {
                                "start": {
                                  "line": 143,
                                  "column": 12
                                },
                                "end": {
                                  "line": 143,
                                  "column": 78
                                }
                              },
                              "expression": {
                                "type": "CallExpression",
                                "start": 4780,
                                "end": 4845,
                                "loc": {
                                  "start": {
                                    "line": 143,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 143,
                                    "column": 77
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 4780,
                                  "end": 4808,
                                  "loc": {
                                    "start": {
                                      "line": 143,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 143,
                                      "column": 40
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 4780,
                                    "end": 4788,
                                    "loc": {
                                      "start": {
                                        "line": 143,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 143,
                                        "column": 20
                                      }
                                    },
                                    "name": "document"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 4789,
                                    "end": 4808,
                                    "loc": {
                                      "start": {
                                        "line": 143,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 143,
                                        "column": 40
                                      }
                                    },
                                    "name": "removeEventListener"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "Literal",
                                    "start": 4809,
                                    "end": 4818,
                                    "loc": {
                                      "start": {
                                        "line": 143,
                                        "column": 41
                                      },
                                      "end": {
                                        "line": 143,
                                        "column": 50
                                      }
                                    },
                                    "value": "mouseup",
                                    "rawValue": "mouseup",
                                    "raw": "'mouseup'"
                                  },
                                  {
                                    "type": "MemberExpression",
                                    "start": 4820,
                                    "end": 4844,
                                    "loc": {
                                      "start": {
                                        "line": 143,
                                        "column": 52
                                      },
                                      "end": {
                                        "line": 143,
                                        "column": 76
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 4820,
                                      "end": 4824,
                                      "loc": {
                                        "start": {
                                          "line": 143,
                                          "column": 52
                                        },
                                        "end": {
                                          "line": 143,
                                          "column": 56
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 4825,
                                      "end": 4844,
                                      "loc": {
                                        "start": {
                                          "line": 143,
                                          "column": 57
                                        },
                                        "end": {
                                          "line": 143,
                                          "column": 76
                                        }
                                      },
                                      "name": "eventHandlerDefault"
                                    },
                                    "computed": false
                                  }
                                ]
                              }
                            },
                            {
                              "type": "ExpressionStatement",
                              "start": 4860,
                              "end": 4928,
                              "loc": {
                                "start": {
                                  "line": 144,
                                  "column": 12
                                },
                                "end": {
                                  "line": 144,
                                  "column": 80
                                }
                              },
                              "expression": {
                                "type": "CallExpression",
                                "start": 4860,
                                "end": 4927,
                                "loc": {
                                  "start": {
                                    "line": 144,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 144,
                                    "column": 79
                                  }
                                },
                                "callee": {
                                  "type": "MemberExpression",
                                  "start": 4860,
                                  "end": 4888,
                                  "loc": {
                                    "start": {
                                      "line": 144,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 144,
                                      "column": 40
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 4860,
                                    "end": 4868,
                                    "loc": {
                                      "start": {
                                        "line": 144,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 144,
                                        "column": 20
                                      }
                                    },
                                    "name": "document"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 4869,
                                    "end": 4888,
                                    "loc": {
                                      "start": {
                                        "line": 144,
                                        "column": 21
                                      },
                                      "end": {
                                        "line": 144,
                                        "column": 40
                                      }
                                    },
                                    "name": "removeEventListener"
                                  },
                                  "computed": false
                                },
                                "arguments": [
                                  {
                                    "type": "Literal",
                                    "start": 4889,
                                    "end": 4900,
                                    "loc": {
                                      "start": {
                                        "line": 144,
                                        "column": 41
                                      },
                                      "end": {
                                        "line": 144,
                                        "column": 52
                                      }
                                    },
                                    "value": "mousemove",
                                    "rawValue": "mousemove",
                                    "raw": "'mousemove'"
                                  },
                                  {
                                    "type": "MemberExpression",
                                    "start": 4902,
                                    "end": 4926,
                                    "loc": {
                                      "start": {
                                        "line": 144,
                                        "column": 54
                                      },
                                      "end": {
                                        "line": 144,
                                        "column": 78
                                      }
                                    },
                                    "object": {
                                      "type": "ThisExpression",
                                      "start": 4902,
                                      "end": 4906,
                                      "loc": {
                                        "start": {
                                          "line": 144,
                                          "column": 54
                                        },
                                        "end": {
                                          "line": 144,
                                          "column": 58
                                        }
                                      }
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 4907,
                                      "end": 4926,
                                      "loc": {
                                        "start": {
                                          "line": 144,
                                          "column": 59
                                        },
                                        "end": {
                                          "line": 144,
                                          "column": 78
                                        }
                                      },
                                      "name": "eventHandlerDefault"
                                    },
                                    "computed": false
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "alternate": {
                          "type": "IfStatement",
                          "start": 4945,
                          "end": 5436,
                          "loc": {
                            "start": {
                              "line": 145,
                              "column": 15
                            },
                            "end": {
                              "line": 153,
                              "column": 9
                            }
                          },
                          "test": {
                            "type": "BinaryExpression",
                            "start": 4949,
                            "end": 4970,
                            "loc": {
                              "start": {
                                "line": 145,
                                "column": 19
                              },
                              "end": {
                                "line": 145,
                                "column": 40
                              }
                            },
                            "left": {
                              "type": "Identifier",
                              "start": 4949,
                              "end": 4953,
                              "loc": {
                                "start": {
                                  "line": 145,
                                  "column": 19
                                },
                                "end": {
                                  "line": 145,
                                  "column": 23
                                }
                              },
                              "name": "type"
                            },
                            "operator": "===",
                            "right": {
                              "type": "Literal",
                              "start": 4958,
                              "end": 4970,
                              "loc": {
                                "start": {
                                  "line": 145,
                                  "column": 28
                                },
                                "end": {
                                  "line": 145,
                                  "column": 40
                                }
                              },
                              "value": "touchstart",
                              "rawValue": "touchstart",
                              "raw": "'touchstart'"
                            }
                          },
                          "consequent": {
                            "type": "BlockStatement",
                            "start": 4972,
                            "end": 5192,
                            "loc": {
                              "start": {
                                "line": 145,
                                "column": 42
                              },
                              "end": {
                                "line": 149,
                                "column": 9
                              }
                            },
                            "body": [
                              {
                                "type": "ExpressionStatement",
                                "start": 4987,
                                "end": 5010,
                                "loc": {
                                  "start": {
                                    "line": 146,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 146,
                                    "column": 35
                                  }
                                },
                                "expression": {
                                  "type": "AssignmentExpression",
                                  "start": 4987,
                                  "end": 5009,
                                  "loc": {
                                    "start": {
                                      "line": 146,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 146,
                                      "column": 34
                                    }
                                  },
                                  "operator": "=",
                                  "left": {
                                    "type": "MemberExpression",
                                    "start": 4987,
                                    "end": 5002,
                                    "loc": {
                                      "start": {
                                        "line": 146,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 146,
                                        "column": 27
                                      }
                                    },
                                    "object": {
                                      "type": "MemberExpression",
                                      "start": 4987,
                                      "end": 4997,
                                      "loc": {
                                        "start": {
                                          "line": 146,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 146,
                                          "column": 22
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 4987,
                                        "end": 4991,
                                        "loc": {
                                          "start": {
                                            "line": 146,
                                            "column": 12
                                          },
                                          "end": {
                                            "line": 146,
                                            "column": 16
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 4992,
                                        "end": 4997,
                                        "loc": {
                                          "start": {
                                            "line": 146,
                                            "column": 17
                                          },
                                          "end": {
                                            "line": 146,
                                            "column": 22
                                          }
                                        },
                                        "name": "touch"
                                      },
                                      "computed": false
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 4998,
                                      "end": 5002,
                                      "loc": {
                                        "start": {
                                          "line": 146,
                                          "column": 23
                                        },
                                        "end": {
                                          "line": 146,
                                          "column": 27
                                        }
                                      },
                                      "name": "down"
                                    },
                                    "computed": false
                                  },
                                  "right": {
                                    "type": "Literal",
                                    "start": 5005,
                                    "end": 5009,
                                    "loc": {
                                      "start": {
                                        "line": 146,
                                        "column": 30
                                      },
                                      "end": {
                                        "line": 146,
                                        "column": 34
                                      }
                                    },
                                    "value": true,
                                    "rawValue": true,
                                    "raw": "true"
                                  }
                                }
                              },
                              {
                                "type": "ExpressionStatement",
                                "start": 5024,
                                "end": 5095,
                                "loc": {
                                  "start": {
                                    "line": 147,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 147,
                                    "column": 83
                                  }
                                },
                                "expression": {
                                  "type": "CallExpression",
                                  "start": 5024,
                                  "end": 5094,
                                  "loc": {
                                    "start": {
                                      "line": 147,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 147,
                                      "column": 82
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 5024,
                                    "end": 5049,
                                    "loc": {
                                      "start": {
                                        "line": 147,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 147,
                                        "column": 37
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 5024,
                                      "end": 5032,
                                      "loc": {
                                        "start": {
                                          "line": 147,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 147,
                                          "column": 20
                                        }
                                      },
                                      "name": "document"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 5033,
                                      "end": 5049,
                                      "loc": {
                                        "start": {
                                          "line": 147,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 147,
                                          "column": 37
                                        }
                                      },
                                      "name": "addEventListener"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "Literal",
                                      "start": 5050,
                                      "end": 5060,
                                      "loc": {
                                        "start": {
                                          "line": 147,
                                          "column": 38
                                        },
                                        "end": {
                                          "line": 147,
                                          "column": 48
                                        }
                                      },
                                      "value": "touchend",
                                      "rawValue": "touchend",
                                      "raw": "'touchend'"
                                    },
                                    {
                                      "type": "MemberExpression",
                                      "start": 5062,
                                      "end": 5086,
                                      "loc": {
                                        "start": {
                                          "line": 147,
                                          "column": 50
                                        },
                                        "end": {
                                          "line": 147,
                                          "column": 74
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 5062,
                                        "end": 5066,
                                        "loc": {
                                          "start": {
                                            "line": 147,
                                            "column": 50
                                          },
                                          "end": {
                                            "line": 147,
                                            "column": 54
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 5067,
                                        "end": 5086,
                                        "loc": {
                                          "start": {
                                            "line": 147,
                                            "column": 55
                                          },
                                          "end": {
                                            "line": 147,
                                            "column": 74
                                          }
                                        },
                                        "name": "eventHandlerDefault"
                                      },
                                      "computed": false
                                    },
                                    {
                                      "type": "Literal",
                                      "start": 5088,
                                      "end": 5093,
                                      "loc": {
                                        "start": {
                                          "line": 147,
                                          "column": 76
                                        },
                                        "end": {
                                          "line": 147,
                                          "column": 81
                                        }
                                      },
                                      "value": false,
                                      "rawValue": false,
                                      "raw": "false"
                                    }
                                  ]
                                }
                              },
                              {
                                "type": "ExpressionStatement",
                                "start": 5109,
                                "end": 5181,
                                "loc": {
                                  "start": {
                                    "line": 148,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 148,
                                    "column": 84
                                  }
                                },
                                "expression": {
                                  "type": "CallExpression",
                                  "start": 5109,
                                  "end": 5180,
                                  "loc": {
                                    "start": {
                                      "line": 148,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 148,
                                      "column": 83
                                    }
                                  },
                                  "callee": {
                                    "type": "MemberExpression",
                                    "start": 5109,
                                    "end": 5134,
                                    "loc": {
                                      "start": {
                                        "line": 148,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 148,
                                        "column": 37
                                      }
                                    },
                                    "object": {
                                      "type": "Identifier",
                                      "start": 5109,
                                      "end": 5117,
                                      "loc": {
                                        "start": {
                                          "line": 148,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 148,
                                          "column": 20
                                        }
                                      },
                                      "name": "document"
                                    },
                                    "property": {
                                      "type": "Identifier",
                                      "start": 5118,
                                      "end": 5134,
                                      "loc": {
                                        "start": {
                                          "line": 148,
                                          "column": 21
                                        },
                                        "end": {
                                          "line": 148,
                                          "column": 37
                                        }
                                      },
                                      "name": "addEventListener"
                                    },
                                    "computed": false
                                  },
                                  "arguments": [
                                    {
                                      "type": "Literal",
                                      "start": 5135,
                                      "end": 5146,
                                      "loc": {
                                        "start": {
                                          "line": 148,
                                          "column": 38
                                        },
                                        "end": {
                                          "line": 148,
                                          "column": 49
                                        }
                                      },
                                      "value": "touchmove",
                                      "rawValue": "touchmove",
                                      "raw": "'touchmove'"
                                    },
                                    {
                                      "type": "MemberExpression",
                                      "start": 5148,
                                      "end": 5172,
                                      "loc": {
                                        "start": {
                                          "line": 148,
                                          "column": 51
                                        },
                                        "end": {
                                          "line": 148,
                                          "column": 75
                                        }
                                      },
                                      "object": {
                                        "type": "ThisExpression",
                                        "start": 5148,
                                        "end": 5152,
                                        "loc": {
                                          "start": {
                                            "line": 148,
                                            "column": 51
                                          },
                                          "end": {
                                            "line": 148,
                                            "column": 55
                                          }
                                        }
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 5153,
                                        "end": 5172,
                                        "loc": {
                                          "start": {
                                            "line": 148,
                                            "column": 56
                                          },
                                          "end": {
                                            "line": 148,
                                            "column": 75
                                          }
                                        },
                                        "name": "eventHandlerDefault"
                                      },
                                      "computed": false
                                    },
                                    {
                                      "type": "Literal",
                                      "start": 5174,
                                      "end": 5179,
                                      "loc": {
                                        "start": {
                                          "line": 148,
                                          "column": 77
                                        },
                                        "end": {
                                          "line": 148,
                                          "column": 82
                                        }
                                      },
                                      "value": false,
                                      "rawValue": false,
                                      "raw": "false"
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          "alternate": {
                            "type": "IfStatement",
                            "start": 5198,
                            "end": 5436,
                            "loc": {
                              "start": {
                                "line": 149,
                                "column": 15
                              },
                              "end": {
                                "line": 153,
                                "column": 9
                              }
                            },
                            "test": {
                              "type": "BinaryExpression",
                              "start": 5202,
                              "end": 5221,
                              "loc": {
                                "start": {
                                  "line": 149,
                                  "column": 19
                                },
                                "end": {
                                  "line": 149,
                                  "column": 38
                                }
                              },
                              "left": {
                                "type": "Identifier",
                                "start": 5202,
                                "end": 5206,
                                "loc": {
                                  "start": {
                                    "line": 149,
                                    "column": 19
                                  },
                                  "end": {
                                    "line": 149,
                                    "column": 23
                                  }
                                },
                                "name": "type"
                              },
                              "operator": "===",
                              "right": {
                                "type": "Literal",
                                "start": 5211,
                                "end": 5221,
                                "loc": {
                                  "start": {
                                    "line": 149,
                                    "column": 28
                                  },
                                  "end": {
                                    "line": 149,
                                    "column": 38
                                  }
                                },
                                "value": "touchend",
                                "rawValue": "touchend",
                                "raw": "'touchend'"
                              }
                            },
                            "consequent": {
                              "type": "BlockStatement",
                              "start": 5223,
                              "end": 5436,
                              "loc": {
                                "start": {
                                  "line": 149,
                                  "column": 40
                                },
                                "end": {
                                  "line": 153,
                                  "column": 9
                                }
                              },
                              "body": [
                                {
                                  "type": "ExpressionStatement",
                                  "start": 5238,
                                  "end": 5262,
                                  "loc": {
                                    "start": {
                                      "line": 150,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 150,
                                      "column": 36
                                    }
                                  },
                                  "expression": {
                                    "type": "AssignmentExpression",
                                    "start": 5238,
                                    "end": 5261,
                                    "loc": {
                                      "start": {
                                        "line": 150,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 150,
                                        "column": 35
                                      }
                                    },
                                    "operator": "=",
                                    "left": {
                                      "type": "MemberExpression",
                                      "start": 5238,
                                      "end": 5253,
                                      "loc": {
                                        "start": {
                                          "line": 150,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 150,
                                          "column": 27
                                        }
                                      },
                                      "object": {
                                        "type": "MemberExpression",
                                        "start": 5238,
                                        "end": 5248,
                                        "loc": {
                                          "start": {
                                            "line": 150,
                                            "column": 12
                                          },
                                          "end": {
                                            "line": 150,
                                            "column": 22
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 5238,
                                          "end": 5242,
                                          "loc": {
                                            "start": {
                                              "line": 150,
                                              "column": 12
                                            },
                                            "end": {
                                              "line": 150,
                                              "column": 16
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 5243,
                                          "end": 5248,
                                          "loc": {
                                            "start": {
                                              "line": 150,
                                              "column": 17
                                            },
                                            "end": {
                                              "line": 150,
                                              "column": 22
                                            }
                                          },
                                          "name": "touch"
                                        },
                                        "computed": false
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 5249,
                                        "end": 5253,
                                        "loc": {
                                          "start": {
                                            "line": 150,
                                            "column": 23
                                          },
                                          "end": {
                                            "line": 150,
                                            "column": 27
                                          }
                                        },
                                        "name": "down"
                                      },
                                      "computed": false
                                    },
                                    "right": {
                                      "type": "Literal",
                                      "start": 5256,
                                      "end": 5261,
                                      "loc": {
                                        "start": {
                                          "line": 150,
                                          "column": 30
                                        },
                                        "end": {
                                          "line": 150,
                                          "column": 35
                                        }
                                      },
                                      "value": false,
                                      "rawValue": false,
                                      "raw": "false"
                                    }
                                  }
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 5276,
                                  "end": 5343,
                                  "loc": {
                                    "start": {
                                      "line": 151,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 151,
                                      "column": 79
                                    }
                                  },
                                  "expression": {
                                    "type": "CallExpression",
                                    "start": 5276,
                                    "end": 5342,
                                    "loc": {
                                      "start": {
                                        "line": 151,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 151,
                                        "column": 78
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 5276,
                                      "end": 5304,
                                      "loc": {
                                        "start": {
                                          "line": 151,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 151,
                                          "column": 40
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 5276,
                                        "end": 5284,
                                        "loc": {
                                          "start": {
                                            "line": 151,
                                            "column": 12
                                          },
                                          "end": {
                                            "line": 151,
                                            "column": 20
                                          }
                                        },
                                        "name": "document"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 5285,
                                        "end": 5304,
                                        "loc": {
                                          "start": {
                                            "line": 151,
                                            "column": 21
                                          },
                                          "end": {
                                            "line": 151,
                                            "column": 40
                                          }
                                        },
                                        "name": "removeEventListener"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "Literal",
                                        "start": 5305,
                                        "end": 5315,
                                        "loc": {
                                          "start": {
                                            "line": 151,
                                            "column": 41
                                          },
                                          "end": {
                                            "line": 151,
                                            "column": 51
                                          }
                                        },
                                        "value": "touchend",
                                        "rawValue": "touchend",
                                        "raw": "'touchend'"
                                      },
                                      {
                                        "type": "MemberExpression",
                                        "start": 5317,
                                        "end": 5341,
                                        "loc": {
                                          "start": {
                                            "line": 151,
                                            "column": 53
                                          },
                                          "end": {
                                            "line": 151,
                                            "column": 77
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 5317,
                                          "end": 5321,
                                          "loc": {
                                            "start": {
                                              "line": 151,
                                              "column": 53
                                            },
                                            "end": {
                                              "line": 151,
                                              "column": 57
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 5322,
                                          "end": 5341,
                                          "loc": {
                                            "start": {
                                              "line": 151,
                                              "column": 58
                                            },
                                            "end": {
                                              "line": 151,
                                              "column": 77
                                            }
                                          },
                                          "name": "eventHandlerDefault"
                                        },
                                        "computed": false
                                      }
                                    ]
                                  }
                                },
                                {
                                  "type": "ExpressionStatement",
                                  "start": 5357,
                                  "end": 5425,
                                  "loc": {
                                    "start": {
                                      "line": 152,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 152,
                                      "column": 80
                                    }
                                  },
                                  "expression": {
                                    "type": "CallExpression",
                                    "start": 5357,
                                    "end": 5424,
                                    "loc": {
                                      "start": {
                                        "line": 152,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 152,
                                        "column": 79
                                      }
                                    },
                                    "callee": {
                                      "type": "MemberExpression",
                                      "start": 5357,
                                      "end": 5385,
                                      "loc": {
                                        "start": {
                                          "line": 152,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 152,
                                          "column": 40
                                        }
                                      },
                                      "object": {
                                        "type": "Identifier",
                                        "start": 5357,
                                        "end": 5365,
                                        "loc": {
                                          "start": {
                                            "line": 152,
                                            "column": 12
                                          },
                                          "end": {
                                            "line": 152,
                                            "column": 20
                                          }
                                        },
                                        "name": "document"
                                      },
                                      "property": {
                                        "type": "Identifier",
                                        "start": 5366,
                                        "end": 5385,
                                        "loc": {
                                          "start": {
                                            "line": 152,
                                            "column": 21
                                          },
                                          "end": {
                                            "line": 152,
                                            "column": 40
                                          }
                                        },
                                        "name": "removeEventListener"
                                      },
                                      "computed": false
                                    },
                                    "arguments": [
                                      {
                                        "type": "Literal",
                                        "start": 5386,
                                        "end": 5397,
                                        "loc": {
                                          "start": {
                                            "line": 152,
                                            "column": 41
                                          },
                                          "end": {
                                            "line": 152,
                                            "column": 52
                                          }
                                        },
                                        "value": "touchmove",
                                        "rawValue": "touchmove",
                                        "raw": "'touchmove'"
                                      },
                                      {
                                        "type": "MemberExpression",
                                        "start": 5399,
                                        "end": 5423,
                                        "loc": {
                                          "start": {
                                            "line": 152,
                                            "column": 54
                                          },
                                          "end": {
                                            "line": 152,
                                            "column": 78
                                          }
                                        },
                                        "object": {
                                          "type": "ThisExpression",
                                          "start": 5399,
                                          "end": 5403,
                                          "loc": {
                                            "start": {
                                              "line": 152,
                                              "column": 54
                                            },
                                            "end": {
                                              "line": 152,
                                              "column": 58
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "start": 5404,
                                          "end": 5423,
                                          "loc": {
                                            "start": {
                                              "line": 152,
                                              "column": 59
                                            },
                                            "end": {
                                              "line": 152,
                                              "column": 78
                                            }
                                          },
                                          "name": "eventHandlerDefault"
                                        },
                                        "computed": false
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "alternate": null
                          }
                        }
                      }
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 5448,
                      "end": 5480,
                      "loc": {
                        "start": {
                          "line": 155,
                          "column": 8
                        },
                        "end": {
                          "line": 155,
                          "column": 40
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 5448,
                        "end": 5479,
                        "loc": {
                          "start": {
                            "line": 155,
                            "column": 8
                          },
                          "end": {
                            "line": 155,
                            "column": 39
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 5448,
                          "end": 5471,
                          "loc": {
                            "start": {
                              "line": 155,
                              "column": 8
                            },
                            "end": {
                              "line": 155,
                              "column": 31
                            }
                          },
                          "object": {
                            "type": "MemberExpression",
                            "start": 5448,
                            "end": 5459,
                            "loc": {
                              "start": {
                                "line": 155,
                                "column": 8
                              },
                              "end": {
                                "line": 155,
                                "column": 19
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 5448,
                              "end": 5452,
                              "loc": {
                                "start": {
                                  "line": 155,
                                  "column": 8
                                },
                                "end": {
                                  "line": 155,
                                  "column": 12
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 5453,
                              "end": 5459,
                              "loc": {
                                "start": {
                                  "line": 155,
                                  "column": 13
                                },
                                "end": {
                                  "line": 155,
                                  "column": 19
                                }
                              },
                              "name": "recent"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "MemberExpression",
                            "start": 5460,
                            "end": 5470,
                            "loc": {
                              "start": {
                                "line": 155,
                                "column": 20
                              },
                              "end": {
                                "line": 155,
                                "column": 30
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 5460,
                              "end": 5465,
                              "loc": {
                                "start": {
                                  "line": 155,
                                  "column": 20
                                },
                                "end": {
                                  "line": 155,
                                  "column": 25
                                }
                              },
                              "name": "state"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 5466,
                              "end": 5470,
                              "loc": {
                                "start": {
                                  "line": 155,
                                  "column": 26
                                },
                                "end": {
                                  "line": 155,
                                  "column": 30
                                }
                              },
                              "name": "type"
                            },
                            "computed": false
                          },
                          "computed": true
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 5474,
                          "end": 5479,
                          "loc": {
                            "start": {
                              "line": 155,
                              "column": 34
                            },
                            "end": {
                              "line": 155,
                              "column": 39
                            }
                          },
                          "name": "state"
                        }
                      }
                    },
                    {
                      "type": "IfStatement",
                      "start": 5492,
                      "end": 5539,
                      "loc": {
                        "start": {
                          "line": 157,
                          "column": 8
                        },
                        "end": {
                          "line": 158,
                          "column": 26
                        }
                      },
                      "test": {
                        "type": "UnaryExpression",
                        "start": 5496,
                        "end": 5510,
                        "loc": {
                          "start": {
                            "line": 157,
                            "column": 12
                          },
                          "end": {
                            "line": 157,
                            "column": 26
                          }
                        },
                        "operator": "!",
                        "prefix": true,
                        "argument": {
                          "type": "MemberExpression",
                          "start": 5497,
                          "end": 5510,
                          "loc": {
                            "start": {
                              "line": 157,
                              "column": 13
                            },
                            "end": {
                              "line": 157,
                              "column": 26
                            }
                          },
                          "object": {
                            "type": "ThisExpression",
                            "start": 5497,
                            "end": 5501,
                            "loc": {
                              "start": {
                                "line": 157,
                                "column": 13
                              },
                              "end": {
                                "line": 157,
                                "column": 17
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 5502,
                            "end": 5510,
                            "loc": {
                              "start": {
                                "line": 157,
                                "column": 18
                              },
                              "end": {
                                "line": 157,
                                "column": 26
                              }
                            },
                            "name": "debounce"
                          },
                          "computed": false
                        }
                      },
                      "consequent": {
                        "type": "ExpressionStatement",
                        "start": 5525,
                        "end": 5539,
                        "loc": {
                          "start": {
                            "line": 158,
                            "column": 12
                          },
                          "end": {
                            "line": 158,
                            "column": 26
                          }
                        },
                        "expression": {
                          "type": "CallExpression",
                          "start": 5525,
                          "end": 5538,
                          "loc": {
                            "start": {
                              "line": 158,
                              "column": 12
                            },
                            "end": {
                              "line": 158,
                              "column": 25
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 5525,
                            "end": 5536,
                            "loc": {
                              "start": {
                                "line": 158,
                                "column": 12
                              },
                              "end": {
                                "line": 158,
                                "column": 23
                              }
                            },
                            "object": {
                              "type": "ThisExpression",
                              "start": 5525,
                              "end": 5529,
                              "loc": {
                                "start": {
                                  "line": 158,
                                  "column": 12
                                },
                                "end": {
                                  "line": 158,
                                  "column": 16
                                }
                              }
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 5530,
                              "end": 5536,
                              "loc": {
                                "start": {
                                  "line": 158,
                                  "column": 17
                                },
                                "end": {
                                  "line": 158,
                                  "column": 23
                                }
                              },
                              "name": "update"
                            },
                            "computed": false
                          },
                          "arguments": []
                        }
                      },
                      "alternate": null
                    }
                  ]
                }
              }
            }
          ]
        },
        "leadingComments": [],
        "trailingComments": []
      }
    }
  ]
}