{
  "type": "File",
  "start": 0,
  "end": 1894,
  "loc": {
    "start": {
      "line": 1,
      "column": 0
    },
    "end": {
      "line": 74,
      "column": 0
    }
  },
  "program": {
    "type": "Program",
    "start": 0,
    "end": 1894,
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 74,
        "column": 0
      }
    },
    "sourceType": "module",
    "body": [
      {
        "type": "ImportDeclaration",
        "start": 45,
        "end": 86,
        "loc": {
          "start": {
            "line": 5,
            "column": 0
          },
          "end": {
            "line": 5,
            "column": 41
          }
        },
        "specifiers": [
          {
            "type": "ImportSpecifier",
            "start": 54,
            "end": 58,
            "loc": {
              "start": {
                "line": 5,
                "column": 9
              },
              "end": {
                "line": 5,
                "column": 13
              }
            },
            "imported": {
              "type": "Identifier",
              "start": 54,
              "end": 58,
              "loc": {
                "start": {
                  "line": 5,
                  "column": 9
                },
                "end": {
                  "line": 5,
                  "column": 13
                },
                "identifierName": "loop"
              },
              "name": "loop"
            },
            "local": {
              "type": "Identifier",
              "start": 54,
              "end": 58,
              "loc": {
                "start": {
                  "line": 5,
                  "column": 9
                },
                "end": {
                  "line": 5,
                  "column": 13
                },
                "identifierName": "loop"
              },
              "name": "loop"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 66,
          "end": 86,
          "loc": {
            "start": {
              "line": 5,
              "column": 21
            },
            "end": {
              "line": 5,
              "column": 41
            }
          },
          "extra": {
            "rawValue": "./../utils/loop.js",
            "raw": "'./../utils/loop.js'"
          },
          "value": "./../utils/loop.js"
        }
      },
      {
        "type": "ImportDeclaration",
        "start": 87,
        "end": 126,
        "loc": {
          "start": {
            "line": 6,
            "column": 0
          },
          "end": {
            "line": 6,
            "column": 39
          }
        },
        "specifiers": [
          {
            "type": "ImportSpecifier",
            "start": 96,
            "end": 99,
            "loc": {
              "start": {
                "line": 6,
                "column": 9
              },
              "end": {
                "line": 6,
                "column": 12
              }
            },
            "imported": {
              "type": "Identifier",
              "start": 96,
              "end": 99,
              "loc": {
                "start": {
                  "line": 6,
                  "column": 9
                },
                "end": {
                  "line": 6,
                  "column": 12
                },
                "identifierName": "uid"
              },
              "name": "uid"
            },
            "local": {
              "type": "Identifier",
              "start": 96,
              "end": 99,
              "loc": {
                "start": {
                  "line": 6,
                  "column": 9
                },
                "end": {
                  "line": 6,
                  "column": 12
                },
                "identifierName": "uid"
              },
              "name": "uid"
            }
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 107,
          "end": 126,
          "loc": {
            "start": {
              "line": 6,
              "column": 20
            },
            "end": {
              "line": 6,
              "column": 39
            }
          },
          "extra": {
            "rawValue": "./../utils/uid.js",
            "raw": "'./../utils/uid.js'"
          },
          "value": "./../utils/uid.js",
          "leadingComments": null,
          "trailingComments": null
        },
        "trailingComments": [
          {
            "type": "CommentBlock",
            "value": "*\n * Holds all the handlers bound to the router class. Since the class is static, all imports will point to the same class\n * @type {Object}\n ",
            "start": 128,
            "end": 274,
            "loc": {
              "start": {
                "line": 8,
                "column": 0
              },
              "end": {
                "line": 11,
                "column": 3
              }
            }
          }
        ]
      },
      {
        "type": "VariableDeclaration",
        "start": 275,
        "end": 293,
        "loc": {
          "start": {
            "line": 12,
            "column": 0
          },
          "end": {
            "line": 12,
            "column": 18
          }
        },
        "declarations": [
          {
            "type": "VariableDeclarator",
            "start": 279,
            "end": 293,
            "loc": {
              "start": {
                "line": 12,
                "column": 4
              },
              "end": {
                "line": 12,
                "column": 18
              }
            },
            "id": {
              "type": "Identifier",
              "start": 279,
              "end": 288,
              "loc": {
                "start": {
                  "line": 12,
                  "column": 4
                },
                "end": {
                  "line": 12,
                  "column": 13
                },
                "identifierName": "listeners"
              },
              "name": "listeners",
              "leadingComments": null
            },
            "init": {
              "type": "ObjectExpression",
              "start": 291,
              "end": 293,
              "loc": {
                "start": {
                  "line": 12,
                  "column": 16
                },
                "end": {
                  "line": 12,
                  "column": 18
                }
              },
              "properties": [],
              "leadingComments": null,
              "trailingComments": null
            },
            "leadingComments": null,
            "trailingComments": null
          }
        ],
        "kind": "let",
        "leadingComments": [
          {
            "type": "CommentBlock",
            "value": "*\n * Holds all the handlers bound to the router class. Since the class is static, all imports will point to the same class\n * @type {Object}\n ",
            "start": 128,
            "end": 274,
            "loc": {
              "start": {
                "line": 8,
                "column": 0
              },
              "end": {
                "line": 11,
                "column": 3
              }
            }
          }
        ],
        "trailingComments": [
          {
            "type": "CommentBlock",
            "value": "*\n * This function is used to call all handlers on url or state change\n * @type {Function}\n ",
            "start": 295,
            "end": 391,
            "loc": {
              "start": {
                "line": 14,
                "column": 0
              },
              "end": {
                "line": 17,
                "column": 3
              }
            }
          }
        ]
      },
      {
        "type": "VariableDeclaration",
        "start": 392,
        "end": 528,
        "loc": {
          "start": {
            "line": 18,
            "column": 0
          },
          "end": {
            "line": 24,
            "column": 1
          }
        },
        "declarations": [
          {
            "type": "VariableDeclarator",
            "start": 398,
            "end": 528,
            "loc": {
              "start": {
                "line": 18,
                "column": 6
              },
              "end": {
                "line": 24,
                "column": 1
              }
            },
            "id": {
              "type": "Identifier",
              "start": 398,
              "end": 405,
              "loc": {
                "start": {
                  "line": 18,
                  "column": 6
                },
                "end": {
                  "line": 18,
                  "column": 13
                },
                "identifierName": "handler"
              },
              "name": "handler",
              "leadingComments": null
            },
            "init": {
              "type": "FunctionExpression",
              "start": 408,
              "end": 528,
              "loc": {
                "start": {
                  "line": 18,
                  "column": 16
                },
                "end": {
                  "line": 24,
                  "column": 1
                }
              },
              "id": {
                "type": "Identifier",
                "start": 398,
                "end": 405,
                "loc": {
                  "start": {
                    "line": 18,
                    "column": 6
                  },
                  "end": {
                    "line": 18,
                    "column": 13
                  },
                  "identifierName": "handler"
                },
                "name": "handler",
                "leadingComments": null
              },
              "generator": false,
              "expression": false,
              "async": false,
              "params": [],
              "body": {
                "type": "BlockStatement",
                "start": 420,
                "end": 528,
                "loc": {
                  "start": {
                    "line": 18,
                    "column": 28
                  },
                  "end": {
                    "line": 24,
                    "column": 1
                  }
                },
                "body": [
                  {
                    "type": "VariableDeclaration",
                    "start": 424,
                    "end": 462,
                    "loc": {
                      "start": {
                        "line": 19,
                        "column": 2
                      },
                      "end": {
                        "line": 19,
                        "column": 40
                      }
                    },
                    "declarations": [
                      {
                        "type": "VariableDeclarator",
                        "start": 430,
                        "end": 462,
                        "loc": {
                          "start": {
                            "line": 19,
                            "column": 8
                          },
                          "end": {
                            "line": 19,
                            "column": 40
                          }
                        },
                        "id": {
                          "type": "Identifier",
                          "start": 430,
                          "end": 433,
                          "loc": {
                            "start": {
                              "line": 19,
                              "column": 8
                            },
                            "end": {
                              "line": 19,
                              "column": 11
                            },
                            "identifierName": "url"
                          },
                          "name": "url"
                        },
                        "init": {
                          "type": "CallExpression",
                          "start": 436,
                          "end": 462,
                          "loc": {
                            "start": {
                              "line": 19,
                              "column": 14
                            },
                            "end": {
                              "line": 19,
                              "column": 40
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 436,
                            "end": 460,
                            "loc": {
                              "start": {
                                "line": 19,
                                "column": 14
                              },
                              "end": {
                                "line": 19,
                                "column": 38
                              }
                            },
                            "object": {
                              "type": "MemberExpression",
                              "start": 436,
                              "end": 451,
                              "loc": {
                                "start": {
                                  "line": 19,
                                  "column": 14
                                },
                                "end": {
                                  "line": 19,
                                  "column": 29
                                }
                              },
                              "object": {
                                "type": "Identifier",
                                "start": 436,
                                "end": 442,
                                "loc": {
                                  "start": {
                                    "line": 19,
                                    "column": 14
                                  },
                                  "end": {
                                    "line": 19,
                                    "column": 20
                                  },
                                  "identifierName": "window"
                                },
                                "name": "window"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 443,
                                "end": 451,
                                "loc": {
                                  "start": {
                                    "line": 19,
                                    "column": 21
                                  },
                                  "end": {
                                    "line": 19,
                                    "column": 29
                                  },
                                  "identifierName": "location"
                                },
                                "name": "location"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 452,
                              "end": 460,
                              "loc": {
                                "start": {
                                  "line": 19,
                                  "column": 30
                                },
                                "end": {
                                  "line": 19,
                                  "column": 38
                                },
                                "identifierName": "toString"
                              },
                              "name": "toString"
                            },
                            "computed": false
                          },
                          "arguments": []
                        }
                      }
                    ],
                    "kind": "const"
                  },
                  {
                    "type": "ExpressionStatement",
                    "start": 466,
                    "end": 526,
                    "loc": {
                      "start": {
                        "line": 21,
                        "column": 2
                      },
                      "end": {
                        "line": 23,
                        "column": 5
                      }
                    },
                    "expression": {
                      "type": "CallExpression",
                      "start": 466,
                      "end": 526,
                      "loc": {
                        "start": {
                          "line": 21,
                          "column": 2
                        },
                        "end": {
                          "line": 23,
                          "column": 5
                        }
                      },
                      "callee": {
                        "type": "Identifier",
                        "start": 466,
                        "end": 470,
                        "loc": {
                          "start": {
                            "line": 21,
                            "column": 2
                          },
                          "end": {
                            "line": 21,
                            "column": 6
                          },
                          "identifierName": "loop"
                        },
                        "name": "loop"
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 472,
                          "end": 481,
                          "loc": {
                            "start": {
                              "line": 21,
                              "column": 8
                            },
                            "end": {
                              "line": 21,
                              "column": 17
                            },
                            "identifierName": "listeners"
                          },
                          "name": "listeners"
                        },
                        {
                          "type": "ArrowFunctionExpression",
                          "start": 483,
                          "end": 524,
                          "loc": {
                            "start": {
                              "line": 21,
                              "column": 19
                            },
                            "end": {
                              "line": 23,
                              "column": 3
                            }
                          },
                          "id": null,
                          "generator": false,
                          "expression": false,
                          "async": false,
                          "params": [
                            {
                              "type": "Identifier",
                              "start": 485,
                              "end": 493,
                              "loc": {
                                "start": {
                                  "line": 21,
                                  "column": 21
                                },
                                "end": {
                                  "line": 21,
                                  "column": 29
                                },
                                "identifierName": "listener"
                              },
                              "name": "listener"
                            }
                          ],
                          "body": {
                            "type": "BlockStatement",
                            "start": 499,
                            "end": 524,
                            "loc": {
                              "start": {
                                "line": 21,
                                "column": 35
                              },
                              "end": {
                                "line": 23,
                                "column": 3
                              }
                            },
                            "body": [
                              {
                                "type": "ExpressionStatement",
                                "start": 505,
                                "end": 520,
                                "loc": {
                                  "start": {
                                    "line": 22,
                                    "column": 4
                                  },
                                  "end": {
                                    "line": 22,
                                    "column": 19
                                  }
                                },
                                "expression": {
                                  "type": "CallExpression",
                                  "start": 505,
                                  "end": 520,
                                  "loc": {
                                    "start": {
                                      "line": 22,
                                      "column": 4
                                    },
                                    "end": {
                                      "line": 22,
                                      "column": 19
                                    }
                                  },
                                  "callee": {
                                    "type": "Identifier",
                                    "start": 505,
                                    "end": 513,
                                    "loc": {
                                      "start": {
                                        "line": 22,
                                        "column": 4
                                      },
                                      "end": {
                                        "line": 22,
                                        "column": 12
                                      },
                                      "identifierName": "listener"
                                    },
                                    "name": "listener"
                                  },
                                  "arguments": [
                                    {
                                      "type": "Identifier",
                                      "start": 515,
                                      "end": 518,
                                      "loc": {
                                        "start": {
                                          "line": 22,
                                          "column": 14
                                        },
                                        "end": {
                                          "line": 22,
                                          "column": 17
                                        },
                                        "identifierName": "url"
                                      },
                                      "name": "url"
                                    }
                                  ]
                                }
                              }
                            ],
                            "directives": []
                          }
                        }
                      ]
                    }
                  }
                ],
                "directives": []
              }
            },
            "leadingComments": null
          }
        ],
        "kind": "const",
        "leadingComments": [
          {
            "type": "CommentBlock",
            "value": "*\n * This function is used to call all handlers on url or state change\n * @type {Function}\n ",
            "start": 295,
            "end": 391,
            "loc": {
              "start": {
                "line": 14,
                "column": 0
              },
              "end": {
                "line": 17,
                "column": 3
              }
            }
          }
        ]
      },
      {
        "type": "ExpressionStatement",
        "start": 530,
        "end": 588,
        "loc": {
          "start": {
            "line": 26,
            "column": 0
          },
          "end": {
            "line": 26,
            "column": 58
          }
        },
        "expression": {
          "type": "CallExpression",
          "start": 530,
          "end": 588,
          "loc": {
            "start": {
              "line": 26,
              "column": 0
            },
            "end": {
              "line": 26,
              "column": 58
            }
          },
          "callee": {
            "type": "MemberExpression",
            "start": 530,
            "end": 553,
            "loc": {
              "start": {
                "line": 26,
                "column": 0
              },
              "end": {
                "line": 26,
                "column": 23
              }
            },
            "object": {
              "type": "Identifier",
              "start": 530,
              "end": 536,
              "loc": {
                "start": {
                  "line": 26,
                  "column": 0
                },
                "end": {
                  "line": 26,
                  "column": 6
                },
                "identifierName": "window"
              },
              "name": "window"
            },
            "property": {
              "type": "Identifier",
              "start": 537,
              "end": 553,
              "loc": {
                "start": {
                  "line": 26,
                  "column": 7
                },
                "end": {
                  "line": 26,
                  "column": 23
                },
                "identifierName": "addEventListener"
              },
              "name": "addEventListener"
            },
            "computed": false
          },
          "arguments": [
            {
              "type": "StringLiteral",
              "start": 555,
              "end": 565,
              "loc": {
                "start": {
                  "line": 26,
                  "column": 25
                },
                "end": {
                  "line": 26,
                  "column": 35
                }
              },
              "extra": {
                "rawValue": "pageshow",
                "raw": "'pageshow'"
              },
              "value": "pageshow"
            },
            {
              "type": "ArrowFunctionExpression",
              "start": 567,
              "end": 586,
              "loc": {
                "start": {
                  "line": 26,
                  "column": 37
                },
                "end": {
                  "line": 26,
                  "column": 56
                }
              },
              "id": null,
              "generator": false,
              "expression": false,
              "async": false,
              "params": [],
              "body": {
                "type": "BlockStatement",
                "start": 573,
                "end": 586,
                "loc": {
                  "start": {
                    "line": 26,
                    "column": 43
                  },
                  "end": {
                    "line": 26,
                    "column": 56
                  }
                },
                "body": [
                  {
                    "type": "ExpressionStatement",
                    "start": 575,
                    "end": 584,
                    "loc": {
                      "start": {
                        "line": 26,
                        "column": 45
                      },
                      "end": {
                        "line": 26,
                        "column": 54
                      }
                    },
                    "expression": {
                      "type": "CallExpression",
                      "start": 575,
                      "end": 584,
                      "loc": {
                        "start": {
                          "line": 26,
                          "column": 45
                        },
                        "end": {
                          "line": 26,
                          "column": 54
                        }
                      },
                      "callee": {
                        "type": "Identifier",
                        "start": 575,
                        "end": 582,
                        "loc": {
                          "start": {
                            "line": 26,
                            "column": 45
                          },
                          "end": {
                            "line": 26,
                            "column": 52
                          },
                          "identifierName": "handler"
                        },
                        "name": "handler"
                      },
                      "arguments": []
                    }
                  }
                ],
                "directives": []
              }
            }
          ]
        }
      },
      {
        "type": "ExpressionStatement",
        "start": 589,
        "end": 648,
        "loc": {
          "start": {
            "line": 27,
            "column": 0
          },
          "end": {
            "line": 27,
            "column": 59
          }
        },
        "expression": {
          "type": "CallExpression",
          "start": 589,
          "end": 648,
          "loc": {
            "start": {
              "line": 27,
              "column": 0
            },
            "end": {
              "line": 27,
              "column": 59
            }
          },
          "callee": {
            "type": "MemberExpression",
            "start": 589,
            "end": 612,
            "loc": {
              "start": {
                "line": 27,
                "column": 0
              },
              "end": {
                "line": 27,
                "column": 23
              }
            },
            "object": {
              "type": "Identifier",
              "start": 589,
              "end": 595,
              "loc": {
                "start": {
                  "line": 27,
                  "column": 0
                },
                "end": {
                  "line": 27,
                  "column": 6
                },
                "identifierName": "window"
              },
              "name": "window"
            },
            "property": {
              "type": "Identifier",
              "start": 596,
              "end": 612,
              "loc": {
                "start": {
                  "line": 27,
                  "column": 7
                },
                "end": {
                  "line": 27,
                  "column": 23
                },
                "identifierName": "addEventListener"
              },
              "name": "addEventListener"
            },
            "computed": false
          },
          "arguments": [
            {
              "type": "StringLiteral",
              "start": 614,
              "end": 625,
              "loc": {
                "start": {
                  "line": 27,
                  "column": 25
                },
                "end": {
                  "line": 27,
                  "column": 36
                }
              },
              "extra": {
                "rawValue": "hashchage",
                "raw": "'hashchage'"
              },
              "value": "hashchage"
            },
            {
              "type": "ArrowFunctionExpression",
              "start": 627,
              "end": 646,
              "loc": {
                "start": {
                  "line": 27,
                  "column": 38
                },
                "end": {
                  "line": 27,
                  "column": 57
                }
              },
              "id": null,
              "generator": false,
              "expression": false,
              "async": false,
              "params": [],
              "body": {
                "type": "BlockStatement",
                "start": 633,
                "end": 646,
                "loc": {
                  "start": {
                    "line": 27,
                    "column": 44
                  },
                  "end": {
                    "line": 27,
                    "column": 57
                  }
                },
                "body": [
                  {
                    "type": "ExpressionStatement",
                    "start": 635,
                    "end": 644,
                    "loc": {
                      "start": {
                        "line": 27,
                        "column": 46
                      },
                      "end": {
                        "line": 27,
                        "column": 55
                      }
                    },
                    "expression": {
                      "type": "CallExpression",
                      "start": 635,
                      "end": 644,
                      "loc": {
                        "start": {
                          "line": 27,
                          "column": 46
                        },
                        "end": {
                          "line": 27,
                          "column": 55
                        }
                      },
                      "callee": {
                        "type": "Identifier",
                        "start": 635,
                        "end": 642,
                        "loc": {
                          "start": {
                            "line": 27,
                            "column": 46
                          },
                          "end": {
                            "line": 27,
                            "column": 53
                          },
                          "identifierName": "handler"
                        },
                        "name": "handler"
                      },
                      "arguments": []
                    }
                  }
                ],
                "directives": []
              }
            }
          ]
        }
      },
      {
        "type": "ExpressionStatement",
        "start": 649,
        "end": 707,
        "loc": {
          "start": {
            "line": 28,
            "column": 0
          },
          "end": {
            "line": 28,
            "column": 58
          }
        },
        "expression": {
          "type": "CallExpression",
          "start": 649,
          "end": 707,
          "loc": {
            "start": {
              "line": 28,
              "column": 0
            },
            "end": {
              "line": 28,
              "column": 58
            }
          },
          "callee": {
            "type": "MemberExpression",
            "start": 649,
            "end": 672,
            "loc": {
              "start": {
                "line": 28,
                "column": 0
              },
              "end": {
                "line": 28,
                "column": 23
              }
            },
            "object": {
              "type": "Identifier",
              "start": 649,
              "end": 655,
              "loc": {
                "start": {
                  "line": 28,
                  "column": 0
                },
                "end": {
                  "line": 28,
                  "column": 6
                },
                "identifierName": "window"
              },
              "name": "window"
            },
            "property": {
              "type": "Identifier",
              "start": 656,
              "end": 672,
              "loc": {
                "start": {
                  "line": 28,
                  "column": 7
                },
                "end": {
                  "line": 28,
                  "column": 23
                },
                "identifierName": "addEventListener"
              },
              "name": "addEventListener"
            },
            "computed": false
          },
          "arguments": [
            {
              "type": "StringLiteral",
              "start": 674,
              "end": 684,
              "loc": {
                "start": {
                  "line": 28,
                  "column": 25
                },
                "end": {
                  "line": 28,
                  "column": 35
                }
              },
              "extra": {
                "rawValue": "popstate",
                "raw": "'popstate'"
              },
              "value": "popstate"
            },
            {
              "type": "ArrowFunctionExpression",
              "start": 686,
              "end": 705,
              "loc": {
                "start": {
                  "line": 28,
                  "column": 37
                },
                "end": {
                  "line": 28,
                  "column": 56
                }
              },
              "id": null,
              "generator": false,
              "expression": false,
              "async": false,
              "params": [],
              "body": {
                "type": "BlockStatement",
                "start": 692,
                "end": 705,
                "loc": {
                  "start": {
                    "line": 28,
                    "column": 43
                  },
                  "end": {
                    "line": 28,
                    "column": 56
                  }
                },
                "body": [
                  {
                    "type": "ExpressionStatement",
                    "start": 694,
                    "end": 703,
                    "loc": {
                      "start": {
                        "line": 28,
                        "column": 45
                      },
                      "end": {
                        "line": 28,
                        "column": 54
                      }
                    },
                    "expression": {
                      "type": "CallExpression",
                      "start": 694,
                      "end": 703,
                      "loc": {
                        "start": {
                          "line": 28,
                          "column": 45
                        },
                        "end": {
                          "line": 28,
                          "column": 54
                        }
                      },
                      "callee": {
                        "type": "Identifier",
                        "start": 694,
                        "end": 701,
                        "loc": {
                          "start": {
                            "line": 28,
                            "column": 45
                          },
                          "end": {
                            "line": 28,
                            "column": 52
                          },
                          "identifierName": "handler"
                        },
                        "name": "handler"
                      },
                      "arguments": []
                    }
                  }
                ],
                "directives": []
              }
            }
          ]
        }
      },
      {
        "type": "ExpressionStatement",
        "start": 708,
        "end": 749,
        "loc": {
          "start": {
            "line": 29,
            "column": 0
          },
          "end": {
            "line": 29,
            "column": 41
          }
        },
        "expression": {
          "type": "AssignmentExpression",
          "start": 708,
          "end": 749,
          "loc": {
            "start": {
              "line": 29,
              "column": 0
            },
            "end": {
              "line": 29,
              "column": 41
            }
          },
          "operator": "=",
          "left": {
            "type": "MemberExpression",
            "start": 708,
            "end": 727,
            "loc": {
              "start": {
                "line": 29,
                "column": 0
              },
              "end": {
                "line": 29,
                "column": 19
              }
            },
            "object": {
              "type": "Identifier",
              "start": 708,
              "end": 715,
              "loc": {
                "start": {
                  "line": 29,
                  "column": 0
                },
                "end": {
                  "line": 29,
                  "column": 7
                },
                "identifierName": "history"
              },
              "name": "history"
            },
            "property": {
              "type": "Identifier",
              "start": 716,
              "end": 727,
              "loc": {
                "start": {
                  "line": 29,
                  "column": 8
                },
                "end": {
                  "line": 29,
                  "column": 19
                },
                "identifierName": "onpushstate"
              },
              "name": "onpushstate"
            },
            "computed": false
          },
          "right": {
            "type": "ArrowFunctionExpression",
            "start": 730,
            "end": 749,
            "loc": {
              "start": {
                "line": 29,
                "column": 22
              },
              "end": {
                "line": 29,
                "column": 41
              }
            },
            "id": null,
            "generator": false,
            "expression": false,
            "async": false,
            "params": [],
            "body": {
              "type": "BlockStatement",
              "start": 736,
              "end": 749,
              "loc": {
                "start": {
                  "line": 29,
                  "column": 28
                },
                "end": {
                  "line": 29,
                  "column": 41
                }
              },
              "body": [
                {
                  "type": "ExpressionStatement",
                  "start": 738,
                  "end": 747,
                  "loc": {
                    "start": {
                      "line": 29,
                      "column": 30
                    },
                    "end": {
                      "line": 29,
                      "column": 39
                    }
                  },
                  "expression": {
                    "type": "CallExpression",
                    "start": 738,
                    "end": 747,
                    "loc": {
                      "start": {
                        "line": 29,
                        "column": 30
                      },
                      "end": {
                        "line": 29,
                        "column": 39
                      }
                    },
                    "callee": {
                      "type": "Identifier",
                      "start": 738,
                      "end": 745,
                      "loc": {
                        "start": {
                          "line": 29,
                          "column": 30
                        },
                        "end": {
                          "line": 29,
                          "column": 37
                        },
                        "identifierName": "handler"
                      },
                      "name": "handler"
                    },
                    "arguments": []
                  }
                }
              ],
              "directives": [],
              "trailingComments": null
            },
            "trailingComments": null
          },
          "trailingComments": null
        },
        "trailingComments": [
          {
            "type": "CommentLine",
            "value": " Create the `pushstate` event",
            "start": 751,
            "end": 782,
            "loc": {
              "start": {
                "line": 31,
                "column": 0
              },
              "end": {
                "line": 31,
                "column": 31
              }
            }
          },
          {
            "type": "CommentBlock",
            "value": "*\n * This variable is a shorthand for history.pushState\n * @type {String}\n ",
            "start": 783,
            "end": 862,
            "loc": {
              "start": {
                "line": 32,
                "column": 0
              },
              "end": {
                "line": 35,
                "column": 3
              }
            }
          }
        ]
      },
      {
        "type": "VariableDeclaration",
        "start": 863,
        "end": 896,
        "loc": {
          "start": {
            "line": 36,
            "column": 0
          },
          "end": {
            "line": 36,
            "column": 33
          }
        },
        "declarations": [
          {
            "type": "VariableDeclarator",
            "start": 867,
            "end": 896,
            "loc": {
              "start": {
                "line": 36,
                "column": 4
              },
              "end": {
                "line": 36,
                "column": 33
              }
            },
            "id": {
              "type": "Identifier",
              "start": 867,
              "end": 876,
              "loc": {
                "start": {
                  "line": 36,
                  "column": 4
                },
                "end": {
                  "line": 36,
                  "column": 13
                },
                "identifierName": "pushState"
              },
              "name": "pushState",
              "leadingComments": null
            },
            "init": {
              "type": "MemberExpression",
              "start": 879,
              "end": 896,
              "loc": {
                "start": {
                  "line": 36,
                  "column": 16
                },
                "end": {
                  "line": 36,
                  "column": 33
                }
              },
              "object": {
                "type": "Identifier",
                "start": 879,
                "end": 886,
                "loc": {
                  "start": {
                    "line": 36,
                    "column": 16
                  },
                  "end": {
                    "line": 36,
                    "column": 23
                  },
                  "identifierName": "history"
                },
                "name": "history"
              },
              "property": {
                "type": "Identifier",
                "start": 887,
                "end": 896,
                "loc": {
                  "start": {
                    "line": 36,
                    "column": 24
                  },
                  "end": {
                    "line": 36,
                    "column": 33
                  },
                  "identifierName": "pushState"
                },
                "name": "pushState",
                "leadingComments": null,
                "trailingComments": null
              },
              "computed": false,
              "trailingComments": null
            },
            "leadingComments": null,
            "trailingComments": null
          }
        ],
        "kind": "let",
        "leadingComments": [
          {
            "type": "CommentLine",
            "value": " Create the `pushstate` event",
            "start": 751,
            "end": 782,
            "loc": {
              "start": {
                "line": 31,
                "column": 0
              },
              "end": {
                "line": 31,
                "column": 31
              }
            }
          },
          {
            "type": "CommentBlock",
            "value": "*\n * This variable is a shorthand for history.pushState\n * @type {String}\n ",
            "start": 783,
            "end": 862,
            "loc": {
              "start": {
                "line": 32,
                "column": 0
              },
              "end": {
                "line": 35,
                "column": 3
              }
            }
          }
        ],
        "trailingComments": [
          {
            "type": "CommentBlock",
            "value": "*\n * Add a new method to history, to call use when the state or url changes\n ",
            "start": 897,
            "end": 978,
            "loc": {
              "start": {
                "line": 37,
                "column": 0
              },
              "end": {
                "line": 39,
                "column": 3
              }
            }
          }
        ]
      },
      {
        "type": "ExpressionStatement",
        "start": 979,
        "end": 1162,
        "loc": {
          "start": {
            "line": 40,
            "column": 0
          },
          "end": {
            "line": 46,
            "column": 1
          }
        },
        "expression": {
          "type": "AssignmentExpression",
          "start": 979,
          "end": 1162,
          "loc": {
            "start": {
              "line": 40,
              "column": 0
            },
            "end": {
              "line": 46,
              "column": 1
            }
          },
          "operator": "=",
          "left": {
            "type": "MemberExpression",
            "start": 979,
            "end": 996,
            "loc": {
              "start": {
                "line": 40,
                "column": 0
              },
              "end": {
                "line": 40,
                "column": 17
              }
            },
            "object": {
              "type": "Identifier",
              "start": 979,
              "end": 986,
              "loc": {
                "start": {
                  "line": 40,
                  "column": 0
                },
                "end": {
                  "line": 40,
                  "column": 7
                },
                "identifierName": "history"
              },
              "name": "history",
              "leadingComments": null
            },
            "property": {
              "type": "Identifier",
              "start": 987,
              "end": 996,
              "loc": {
                "start": {
                  "line": 40,
                  "column": 8
                },
                "end": {
                  "line": 40,
                  "column": 17
                },
                "identifierName": "pushState"
              },
              "name": "pushState"
            },
            "computed": false,
            "leadingComments": null
          },
          "right": {
            "type": "FunctionExpression",
            "start": 999,
            "end": 1162,
            "loc": {
              "start": {
                "line": 40,
                "column": 20
              },
              "end": {
                "line": 46,
                "column": 1
              }
            },
            "id": {
              "type": "Identifier",
              "start": 987,
              "end": 996,
              "loc": {
                "start": {
                  "line": 40,
                  "column": 8
                },
                "end": {
                  "line": 40,
                  "column": 17
                },
                "identifierName": "pushState"
              },
              "name": "pushState"
            },
            "generator": false,
            "expression": false,
            "async": false,
            "params": [],
            "body": {
              "type": "BlockStatement",
              "start": 1011,
              "end": 1162,
              "loc": {
                "start": {
                  "line": 40,
                  "column": 32
                },
                "end": {
                  "line": 46,
                  "column": 1
                }
              },
              "body": [
                {
                  "type": "VariableDeclaration",
                  "start": 1015,
                  "end": 1063,
                  "loc": {
                    "start": {
                      "line": 41,
                      "column": 2
                    },
                    "end": {
                      "line": 41,
                      "column": 50
                    }
                  },
                  "declarations": [
                    {
                      "type": "VariableDeclarator",
                      "start": 1019,
                      "end": 1063,
                      "loc": {
                        "start": {
                          "line": 41,
                          "column": 6
                        },
                        "end": {
                          "line": 41,
                          "column": 50
                        }
                      },
                      "id": {
                        "type": "Identifier",
                        "start": 1019,
                        "end": 1023,
                        "loc": {
                          "start": {
                            "line": 41,
                            "column": 6
                          },
                          "end": {
                            "line": 41,
                            "column": 10
                          },
                          "identifierName": "next"
                        },
                        "name": "next"
                      },
                      "init": {
                        "type": "CallExpression",
                        "start": 1026,
                        "end": 1063,
                        "loc": {
                          "start": {
                            "line": 41,
                            "column": 13
                          },
                          "end": {
                            "line": 41,
                            "column": 50
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 1026,
                          "end": 1041,
                          "loc": {
                            "start": {
                              "line": 41,
                              "column": 13
                            },
                            "end": {
                              "line": 41,
                              "column": 28
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1026,
                            "end": 1035,
                            "loc": {
                              "start": {
                                "line": 41,
                                "column": 13
                              },
                              "end": {
                                "line": 41,
                                "column": 22
                              },
                              "identifierName": "pushState"
                            },
                            "name": "pushState"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1036,
                            "end": 1041,
                            "loc": {
                              "start": {
                                "line": 41,
                                "column": 23
                              },
                              "end": {
                                "line": 41,
                                "column": 28
                              },
                              "identifierName": "apply"
                            },
                            "name": "apply"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 1043,
                            "end": 1050,
                            "loc": {
                              "start": {
                                "line": 41,
                                "column": 30
                              },
                              "end": {
                                "line": 41,
                                "column": 37
                              },
                              "identifierName": "history"
                            },
                            "name": "history"
                          },
                          {
                            "type": "Identifier",
                            "start": 1052,
                            "end": 1061,
                            "loc": {
                              "start": {
                                "line": 41,
                                "column": 39
                              },
                              "end": {
                                "line": 41,
                                "column": 48
                              },
                              "identifierName": "arguments"
                            },
                            "name": "arguments"
                          }
                        ]
                      }
                    }
                  ],
                  "kind": "let"
                },
                {
                  "type": "IfStatement",
                  "start": 1066,
                  "end": 1146,
                  "loc": {
                    "start": {
                      "line": 42,
                      "column": 2
                    },
                    "end": {
                      "line": 44,
                      "column": 3
                    }
                  },
                  "test": {
                    "type": "BinaryExpression",
                    "start": 1071,
                    "end": 1112,
                    "loc": {
                      "start": {
                        "line": 42,
                        "column": 7
                      },
                      "end": {
                        "line": 42,
                        "column": 48
                      }
                    },
                    "left": {
                      "type": "UnaryExpression",
                      "start": 1071,
                      "end": 1097,
                      "loc": {
                        "start": {
                          "line": 42,
                          "column": 7
                        },
                        "end": {
                          "line": 42,
                          "column": 33
                        }
                      },
                      "operator": "typeof",
                      "prefix": true,
                      "argument": {
                        "type": "MemberExpression",
                        "start": 1078,
                        "end": 1097,
                        "loc": {
                          "start": {
                            "line": 42,
                            "column": 14
                          },
                          "end": {
                            "line": 42,
                            "column": 33
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 1078,
                          "end": 1085,
                          "loc": {
                            "start": {
                              "line": 42,
                              "column": 14
                            },
                            "end": {
                              "line": 42,
                              "column": 21
                            },
                            "identifierName": "history"
                          },
                          "name": "history"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 1086,
                          "end": 1097,
                          "loc": {
                            "start": {
                              "line": 42,
                              "column": 22
                            },
                            "end": {
                              "line": 42,
                              "column": 33
                            },
                            "identifierName": "onpushstate"
                          },
                          "name": "onpushstate"
                        },
                        "computed": false
                      },
                      "extra": {
                        "parenthesizedArgument": false
                      }
                    },
                    "operator": "===",
                    "right": {
                      "type": "StringLiteral",
                      "start": 1102,
                      "end": 1112,
                      "loc": {
                        "start": {
                          "line": 42,
                          "column": 38
                        },
                        "end": {
                          "line": 42,
                          "column": 48
                        }
                      },
                      "extra": {
                        "rawValue": "function",
                        "raw": "'function'"
                      },
                      "value": "function"
                    }
                  },
                  "consequent": {
                    "type": "BlockStatement",
                    "start": 1115,
                    "end": 1146,
                    "loc": {
                      "start": {
                        "line": 42,
                        "column": 51
                      },
                      "end": {
                        "line": 44,
                        "column": 3
                      }
                    },
                    "body": [
                      {
                        "type": "ExpressionStatement",
                        "start": 1121,
                        "end": 1142,
                        "loc": {
                          "start": {
                            "line": 43,
                            "column": 4
                          },
                          "end": {
                            "line": 43,
                            "column": 25
                          }
                        },
                        "expression": {
                          "type": "CallExpression",
                          "start": 1121,
                          "end": 1142,
                          "loc": {
                            "start": {
                              "line": 43,
                              "column": 4
                            },
                            "end": {
                              "line": 43,
                              "column": 25
                            }
                          },
                          "callee": {
                            "type": "MemberExpression",
                            "start": 1121,
                            "end": 1140,
                            "loc": {
                              "start": {
                                "line": 43,
                                "column": 4
                              },
                              "end": {
                                "line": 43,
                                "column": 23
                              }
                            },
                            "object": {
                              "type": "Identifier",
                              "start": 1121,
                              "end": 1128,
                              "loc": {
                                "start": {
                                  "line": 43,
                                  "column": 4
                                },
                                "end": {
                                  "line": 43,
                                  "column": 11
                                },
                                "identifierName": "history"
                              },
                              "name": "history"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 1129,
                              "end": 1140,
                              "loc": {
                                "start": {
                                  "line": 43,
                                  "column": 12
                                },
                                "end": {
                                  "line": 43,
                                  "column": 23
                                },
                                "identifierName": "onpushstate"
                              },
                              "name": "onpushstate"
                            },
                            "computed": false
                          },
                          "arguments": []
                        }
                      }
                    ],
                    "directives": []
                  },
                  "alternate": null
                },
                {
                  "type": "ReturnStatement",
                  "start": 1149,
                  "end": 1160,
                  "loc": {
                    "start": {
                      "line": 45,
                      "column": 2
                    },
                    "end": {
                      "line": 45,
                      "column": 13
                    }
                  },
                  "argument": {
                    "type": "Identifier",
                    "start": 1156,
                    "end": 1160,
                    "loc": {
                      "start": {
                        "line": 45,
                        "column": 9
                      },
                      "end": {
                        "line": 45,
                        "column": 13
                      },
                      "identifierName": "next"
                    },
                    "name": "next"
                  }
                }
              ],
              "directives": [],
              "trailingComments": null
            },
            "trailingComments": null
          },
          "leadingComments": null,
          "trailingComments": null
        },
        "leadingComments": [
          {
            "type": "CommentBlock",
            "value": "*\n * Add a new method to history, to call use when the state or url changes\n ",
            "start": 897,
            "end": 978,
            "loc": {
              "start": {
                "line": 37,
                "column": 0
              },
              "end": {
                "line": 39,
                "column": 3
              }
            }
          }
        ],
        "trailingComments": [
          {
            "type": "CommentBlock",
            "value": "*\n * A static class which is responsible for handling state and url change\n * Remember to remove <base/> in most common scenarios\n ",
            "start": 1164,
            "end": 1299,
            "loc": {
              "start": {
                "line": 48,
                "column": 0
              },
              "end": {
                "line": 51,
                "column": 3
              }
            }
          }
        ]
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 1300,
        "end": 1893,
        "loc": {
          "start": {
            "line": 52,
            "column": 0
          },
          "end": {
            "line": 73,
            "column": 1
          }
        },
        "specifiers": [],
        "source": null,
        "declaration": {
          "type": "ClassDeclaration",
          "start": 1307,
          "end": 1893,
          "loc": {
            "start": {
              "line": 52,
              "column": 7
            },
            "end": {
              "line": 73,
              "column": 1
            }
          },
          "id": {
            "type": "Identifier",
            "start": 1313,
            "end": 1319,
            "loc": {
              "start": {
                "line": 52,
                "column": 13
              },
              "end": {
                "line": 52,
                "column": 19
              },
              "identifierName": "Router"
            },
            "name": "Router",
            "leadingComments": null
          },
          "superClass": null,
          "body": {
            "type": "ClassBody",
            "start": 1320,
            "end": 1893,
            "loc": {
              "start": {
                "line": 52,
                "column": 20
              },
              "end": {
                "line": 73,
                "column": 1
              }
            },
            "body": [
              {
                "type": "ClassMethod",
                "start": 1419,
                "end": 1495,
                "loc": {
                  "start": {
                    "line": 57,
                    "column": 2
                  },
                  "end": {
                    "line": 59,
                    "column": 3
                  }
                },
                "static": true,
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 1426,
                  "end": 1434,
                  "loc": {
                    "start": {
                      "line": 57,
                      "column": 9
                    },
                    "end": {
                      "line": 57,
                      "column": 17
                    },
                    "identifierName": "redirect"
                  },
                  "name": "redirect"
                },
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 1437,
                    "end": 1440,
                    "loc": {
                      "start": {
                        "line": 57,
                        "column": 20
                      },
                      "end": {
                        "line": 57,
                        "column": 23
                      },
                      "identifierName": "url"
                    },
                    "name": "url"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 1443,
                  "end": 1495,
                  "loc": {
                    "start": {
                      "line": 57,
                      "column": 26
                    },
                    "end": {
                      "line": 59,
                      "column": 3
                    }
                  },
                  "body": [
                    {
                      "type": "ExpressionStatement",
                      "start": 1449,
                      "end": 1491,
                      "loc": {
                        "start": {
                          "line": 58,
                          "column": 4
                        },
                        "end": {
                          "line": 58,
                          "column": 46
                        }
                      },
                      "expression": {
                        "type": "CallExpression",
                        "start": 1449,
                        "end": 1491,
                        "loc": {
                          "start": {
                            "line": 58,
                            "column": 4
                          },
                          "end": {
                            "line": 58,
                            "column": 46
                          }
                        },
                        "callee": {
                          "type": "MemberExpression",
                          "start": 1449,
                          "end": 1466,
                          "loc": {
                            "start": {
                              "line": 58,
                              "column": 4
                            },
                            "end": {
                              "line": 58,
                              "column": 21
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1449,
                            "end": 1456,
                            "loc": {
                              "start": {
                                "line": 58,
                                "column": 4
                              },
                              "end": {
                                "line": 58,
                                "column": 11
                              },
                              "identifierName": "history"
                            },
                            "name": "history"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1457,
                            "end": 1466,
                            "loc": {
                              "start": {
                                "line": 58,
                                "column": 12
                              },
                              "end": {
                                "line": 58,
                                "column": 21
                              },
                              "identifierName": "pushState"
                            },
                            "name": "pushState"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "ObjectExpression",
                            "start": 1468,
                            "end": 1480,
                            "loc": {
                              "start": {
                                "line": 58,
                                "column": 23
                              },
                              "end": {
                                "line": 58,
                                "column": 35
                              }
                            },
                            "properties": [
                              {
                                "type": "ObjectProperty",
                                "start": 1470,
                                "end": 1478,
                                "loc": {
                                  "start": {
                                    "line": 58,
                                    "column": 25
                                  },
                                  "end": {
                                    "line": 58,
                                    "column": 33
                                  }
                                },
                                "method": false,
                                "shorthand": false,
                                "computed": false,
                                "key": {
                                  "type": "Identifier",
                                  "start": 1470,
                                  "end": 1473,
                                  "loc": {
                                    "start": {
                                      "line": 58,
                                      "column": 25
                                    },
                                    "end": {
                                      "line": 58,
                                      "column": 28
                                    },
                                    "identifierName": "url"
                                  },
                                  "name": "url"
                                },
                                "value": {
                                  "type": "Identifier",
                                  "start": 1475,
                                  "end": 1478,
                                  "loc": {
                                    "start": {
                                      "line": 58,
                                      "column": 30
                                    },
                                    "end": {
                                      "line": 58,
                                      "column": 33
                                    },
                                    "identifierName": "url"
                                  },
                                  "name": "url"
                                }
                              }
                            ]
                          },
                          {
                            "type": "StringLiteral",
                            "start": 1482,
                            "end": 1484,
                            "loc": {
                              "start": {
                                "line": 58,
                                "column": 37
                              },
                              "end": {
                                "line": 58,
                                "column": 39
                              }
                            },
                            "extra": {
                              "rawValue": "",
                              "raw": "''"
                            },
                            "value": ""
                          },
                          {
                            "type": "Identifier",
                            "start": 1486,
                            "end": 1489,
                            "loc": {
                              "start": {
                                "line": 58,
                                "column": 41
                              },
                              "end": {
                                "line": 58,
                                "column": 44
                              },
                              "identifierName": "url"
                            },
                            "name": "url"
                          }
                        ]
                      }
                    }
                  ],
                  "directives": [],
                  "trailingComments": null
                },
                "leadingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * A static method used to push a new state\n   * @param {String} url The new url\n   ",
                    "start": 1324,
                    "end": 1416,
                    "loc": {
                      "start": {
                        "line": 53,
                        "column": 2
                      },
                      "end": {
                        "line": 56,
                        "column": 5
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * A static method used to attach a handler to the state change. It returns a function that can be called to remove the handler when it is no longer used\n   * @param {Function} listener The state change handler\n   * @return {Function}\n   ",
                    "start": 1499,
                    "end": 1745,
                    "loc": {
                      "start": {
                        "line": 61,
                        "column": 2
                      },
                      "end": {
                        "line": 65,
                        "column": 5
                      }
                    }
                  }
                ]
              },
              {
                "type": "ClassMethod",
                "start": 1748,
                "end": 1891,
                "loc": {
                  "start": {
                    "line": 66,
                    "column": 2
                  },
                  "end": {
                    "line": 72,
                    "column": 3
                  }
                },
                "static": true,
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 1755,
                  "end": 1768,
                  "loc": {
                    "start": {
                      "line": 66,
                      "column": 9
                    },
                    "end": {
                      "line": 66,
                      "column": 22
                    },
                    "identifierName": "onStateChange"
                  },
                  "name": "onStateChange"
                },
                "kind": "method",
                "id": null,
                "generator": false,
                "expression": false,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 1771,
                    "end": 1779,
                    "loc": {
                      "start": {
                        "line": 66,
                        "column": 25
                      },
                      "end": {
                        "line": 66,
                        "column": 33
                      },
                      "identifierName": "listener"
                    },
                    "name": "listener"
                  }
                ],
                "body": {
                  "type": "BlockStatement",
                  "start": 1782,
                  "end": 1891,
                  "loc": {
                    "start": {
                      "line": 66,
                      "column": 36
                    },
                    "end": {
                      "line": 72,
                      "column": 3
                    }
                  },
                  "body": [
                    {
                      "type": "VariableDeclaration",
                      "start": 1788,
                      "end": 1802,
                      "loc": {
                        "start": {
                          "line": 67,
                          "column": 4
                        },
                        "end": {
                          "line": 67,
                          "column": 18
                        }
                      },
                      "declarations": [
                        {
                          "type": "VariableDeclarator",
                          "start": 1792,
                          "end": 1802,
                          "loc": {
                            "start": {
                              "line": 67,
                              "column": 8
                            },
                            "end": {
                              "line": 67,
                              "column": 18
                            }
                          },
                          "id": {
                            "type": "Identifier",
                            "start": 1792,
                            "end": 1794,
                            "loc": {
                              "start": {
                                "line": 67,
                                "column": 8
                              },
                              "end": {
                                "line": 67,
                                "column": 10
                              },
                              "identifierName": "id"
                            },
                            "name": "id"
                          },
                          "init": {
                            "type": "CallExpression",
                            "start": 1797,
                            "end": 1802,
                            "loc": {
                              "start": {
                                "line": 67,
                                "column": 13
                              },
                              "end": {
                                "line": 67,
                                "column": 18
                              }
                            },
                            "callee": {
                              "type": "Identifier",
                              "start": 1797,
                              "end": 1800,
                              "loc": {
                                "start": {
                                  "line": 67,
                                  "column": 13
                                },
                                "end": {
                                  "line": 67,
                                  "column": 16
                                },
                                "identifierName": "uid"
                              },
                              "name": "uid"
                            },
                            "arguments": []
                          }
                        }
                      ],
                      "kind": "let"
                    },
                    {
                      "type": "ExpressionStatement",
                      "start": 1807,
                      "end": 1833,
                      "loc": {
                        "start": {
                          "line": 68,
                          "column": 4
                        },
                        "end": {
                          "line": 68,
                          "column": 30
                        }
                      },
                      "expression": {
                        "type": "AssignmentExpression",
                        "start": 1807,
                        "end": 1833,
                        "loc": {
                          "start": {
                            "line": 68,
                            "column": 4
                          },
                          "end": {
                            "line": 68,
                            "column": 30
                          }
                        },
                        "operator": "=",
                        "left": {
                          "type": "MemberExpression",
                          "start": 1807,
                          "end": 1822,
                          "loc": {
                            "start": {
                              "line": 68,
                              "column": 4
                            },
                            "end": {
                              "line": 68,
                              "column": 19
                            }
                          },
                          "object": {
                            "type": "Identifier",
                            "start": 1807,
                            "end": 1816,
                            "loc": {
                              "start": {
                                "line": 68,
                                "column": 4
                              },
                              "end": {
                                "line": 68,
                                "column": 13
                              },
                              "identifierName": "listeners"
                            },
                            "name": "listeners"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 1818,
                            "end": 1820,
                            "loc": {
                              "start": {
                                "line": 68,
                                "column": 15
                              },
                              "end": {
                                "line": 68,
                                "column": 17
                              },
                              "identifierName": "id"
                            },
                            "name": "id"
                          },
                          "computed": true
                        },
                        "right": {
                          "type": "Identifier",
                          "start": 1825,
                          "end": 1833,
                          "loc": {
                            "start": {
                              "line": 68,
                              "column": 22
                            },
                            "end": {
                              "line": 68,
                              "column": 30
                            },
                            "identifierName": "listener"
                          },
                          "name": "listener"
                        }
                      }
                    },
                    {
                      "type": "ReturnStatement",
                      "start": 1838,
                      "end": 1887,
                      "loc": {
                        "start": {
                          "line": 69,
                          "column": 4
                        },
                        "end": {
                          "line": 71,
                          "column": 5
                        }
                      },
                      "argument": {
                        "type": "ArrowFunctionExpression",
                        "start": 1845,
                        "end": 1887,
                        "loc": {
                          "start": {
                            "line": 69,
                            "column": 11
                          },
                          "end": {
                            "line": 71,
                            "column": 5
                          }
                        },
                        "id": null,
                        "generator": false,
                        "expression": false,
                        "async": false,
                        "params": [],
                        "body": {
                          "type": "BlockStatement",
                          "start": 1851,
                          "end": 1887,
                          "loc": {
                            "start": {
                              "line": 69,
                              "column": 17
                            },
                            "end": {
                              "line": 71,
                              "column": 5
                            }
                          },
                          "body": [
                            {
                              "type": "ExpressionStatement",
                              "start": 1859,
                              "end": 1881,
                              "loc": {
                                "start": {
                                  "line": 70,
                                  "column": 6
                                },
                                "end": {
                                  "line": 70,
                                  "column": 28
                                }
                              },
                              "expression": {
                                "type": "UnaryExpression",
                                "start": 1859,
                                "end": 1881,
                                "loc": {
                                  "start": {
                                    "line": 70,
                                    "column": 6
                                  },
                                  "end": {
                                    "line": 70,
                                    "column": 28
                                  }
                                },
                                "operator": "delete",
                                "prefix": true,
                                "argument": {
                                  "type": "MemberExpression",
                                  "start": 1866,
                                  "end": 1881,
                                  "loc": {
                                    "start": {
                                      "line": 70,
                                      "column": 13
                                    },
                                    "end": {
                                      "line": 70,
                                      "column": 28
                                    }
                                  },
                                  "object": {
                                    "type": "Identifier",
                                    "start": 1866,
                                    "end": 1875,
                                    "loc": {
                                      "start": {
                                        "line": 70,
                                        "column": 13
                                      },
                                      "end": {
                                        "line": 70,
                                        "column": 22
                                      },
                                      "identifierName": "listeners"
                                    },
                                    "name": "listeners"
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "start": 1877,
                                    "end": 1879,
                                    "loc": {
                                      "start": {
                                        "line": 70,
                                        "column": 24
                                      },
                                      "end": {
                                        "line": 70,
                                        "column": 26
                                      },
                                      "identifierName": "id"
                                    },
                                    "name": "id"
                                  },
                                  "computed": true
                                },
                                "extra": {
                                  "parenthesizedArgument": false
                                }
                              }
                            }
                          ],
                          "directives": []
                        }
                      }
                    }
                  ],
                  "directives": []
                },
                "leadingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * A static method used to attach a handler to the state change. It returns a function that can be called to remove the handler when it is no longer used\n   * @param {Function} listener The state change handler\n   * @return {Function}\n   ",
                    "start": 1499,
                    "end": 1745,
                    "loc": {
                      "start": {
                        "line": 61,
                        "column": 2
                      },
                      "end": {
                        "line": 65,
                        "column": 5
                      }
                    }
                  }
                ]
              }
            ]
          },
          "leadingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * A static class which is responsible for handling state and url change\n * Remember to remove <base/> in most common scenarios\n ",
              "start": 1164,
              "end": 1299,
              "loc": {
                "start": {
                  "line": 48,
                  "column": 0
                },
                "end": {
                  "line": 51,
                  "column": 3
                }
              }
            }
          ],
          "trailingComments": []
        },
        "leadingComments": [
          {
            "type": "CommentBlock",
            "value": "*\n * A static class which is responsible for handling state and url change\n * Remember to remove <base/> in most common scenarios\n ",
            "start": 1164,
            "end": 1299,
            "loc": {
              "start": {
                "line": 48,
                "column": 0
              },
              "end": {
                "line": 51,
                "column": 3
              }
            }
          }
        ]
      }
    ],
    "directives": [
      {
        "type": "Directive",
        "start": 31,
        "end": 43,
        "loc": {
          "start": {
            "line": 3,
            "column": 0
          },
          "end": {
            "line": 3,
            "column": 12
          }
        },
        "value": {
          "type": "DirectiveLiteral",
          "start": 31,
          "end": 43,
          "loc": {
            "start": {
              "line": 3,
              "column": 0
            },
            "end": {
              "line": 3,
              "column": 12
            }
          },
          "value": "use strict",
          "extra": {
            "raw": "'use strict'",
            "rawValue": "use strict"
          },
          "leadingComments": null
        },
        "leadingComments": [
          {
            "type": "CommentBlock",
            "value": " globals window, history ",
            "start": 0,
            "end": 29,
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 1,
                "column": 29
              }
            }
          }
        ]
      }
    ]
  },
  "comments": [
    {
      "type": "CommentBlock",
      "value": " globals window, history ",
      "start": 0,
      "end": 29,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 1,
          "column": 29
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Holds all the handlers bound to the router class. Since the class is static, all imports will point to the same class\n * @type {Object}\n ",
      "start": 128,
      "end": 274,
      "loc": {
        "start": {
          "line": 8,
          "column": 0
        },
        "end": {
          "line": 11,
          "column": 3
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * This function is used to call all handlers on url or state change\n * @type {Function}\n ",
      "start": 295,
      "end": 391,
      "loc": {
        "start": {
          "line": 14,
          "column": 0
        },
        "end": {
          "line": 17,
          "column": 3
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Create the `pushstate` event",
      "start": 751,
      "end": 782,
      "loc": {
        "start": {
          "line": 31,
          "column": 0
        },
        "end": {
          "line": 31,
          "column": 31
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * This variable is a shorthand for history.pushState\n * @type {String}\n ",
      "start": 783,
      "end": 862,
      "loc": {
        "start": {
          "line": 32,
          "column": 0
        },
        "end": {
          "line": 35,
          "column": 3
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Add a new method to history, to call use when the state or url changes\n ",
      "start": 897,
      "end": 978,
      "loc": {
        "start": {
          "line": 37,
          "column": 0
        },
        "end": {
          "line": 39,
          "column": 3
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * A static class which is responsible for handling state and url change\n * Remember to remove <base/> in most common scenarios\n ",
      "start": 1164,
      "end": 1299,
      "loc": {
        "start": {
          "line": 48,
          "column": 0
        },
        "end": {
          "line": 51,
          "column": 3
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A static method used to push a new state\n   * @param {String} url The new url\n   ",
      "start": 1324,
      "end": 1416,
      "loc": {
        "start": {
          "line": 53,
          "column": 2
        },
        "end": {
          "line": 56,
          "column": 5
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A static method used to attach a handler to the state change. It returns a function that can be called to remove the handler when it is no longer used\n   * @param {Function} listener The state change handler\n   * @return {Function}\n   ",
      "start": 1499,
      "end": 1745,
      "loc": {
        "start": {
          "line": 61,
          "column": 2
        },
        "end": {
          "line": 65,
          "column": 5
        }
      }
    }
  ],
  "tokens": [
    {
      "type": "CommentBlock",
      "value": " globals window, history ",
      "start": 0,
      "end": 29,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 1,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "use strict",
      "start": 31,
      "end": 43,
      "loc": {
        "start": {
          "line": 3,
          "column": 0
        },
        "end": {
          "line": 3,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 45,
      "end": 51,
      "loc": {
        "start": {
          "line": 5,
          "column": 0
        },
        "end": {
          "line": 5,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 52,
      "end": 53,
      "loc": {
        "start": {
          "line": 5,
          "column": 7
        },
        "end": {
          "line": 5,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "loop",
      "start": 54,
      "end": 58,
      "loc": {
        "start": {
          "line": 5,
          "column": 9
        },
        "end": {
          "line": 5,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 59,
      "end": 60,
      "loc": {
        "start": {
          "line": 5,
          "column": 14
        },
        "end": {
          "line": 5,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 61,
      "end": 65,
      "loc": {
        "start": {
          "line": 5,
          "column": 16
        },
        "end": {
          "line": 5,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./../utils/loop.js",
      "start": 66,
      "end": 86,
      "loc": {
        "start": {
          "line": 5,
          "column": 21
        },
        "end": {
          "line": 5,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 87,
      "end": 93,
      "loc": {
        "start": {
          "line": 6,
          "column": 0
        },
        "end": {
          "line": 6,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 94,
      "end": 95,
      "loc": {
        "start": {
          "line": 6,
          "column": 7
        },
        "end": {
          "line": 6,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "uid",
      "start": 96,
      "end": 99,
      "loc": {
        "start": {
          "line": 6,
          "column": 9
        },
        "end": {
          "line": 6,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 100,
      "end": 101,
      "loc": {
        "start": {
          "line": 6,
          "column": 13
        },
        "end": {
          "line": 6,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 102,
      "end": 106,
      "loc": {
        "start": {
          "line": 6,
          "column": 15
        },
        "end": {
          "line": 6,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./../utils/uid.js",
      "start": 107,
      "end": 126,
      "loc": {
        "start": {
          "line": 6,
          "column": 20
        },
        "end": {
          "line": 6,
          "column": 39
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Holds all the handlers bound to the router class. Since the class is static, all imports will point to the same class\n * @type {Object}\n ",
      "start": 128,
      "end": 274,
      "loc": {
        "start": {
          "line": 8,
          "column": 0
        },
        "end": {
          "line": 11,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "let",
        "keyword": "let",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "let",
      "start": 275,
      "end": 278,
      "loc": {
        "start": {
          "line": 12,
          "column": 0
        },
        "end": {
          "line": 12,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "listeners",
      "start": 279,
      "end": 288,
      "loc": {
        "start": {
          "line": 12,
          "column": 4
        },
        "end": {
          "line": 12,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 289,
      "end": 290,
      "loc": {
        "start": {
          "line": 12,
          "column": 14
        },
        "end": {
          "line": 12,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 291,
      "end": 292,
      "loc": {
        "start": {
          "line": 12,
          "column": 16
        },
        "end": {
          "line": 12,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 292,
      "end": 293,
      "loc": {
        "start": {
          "line": 12,
          "column": 17
        },
        "end": {
          "line": 12,
          "column": 18
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * This function is used to call all handlers on url or state change\n * @type {Function}\n ",
      "start": 295,
      "end": 391,
      "loc": {
        "start": {
          "line": 14,
          "column": 0
        },
        "end": {
          "line": 17,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 392,
      "end": 397,
      "loc": {
        "start": {
          "line": 18,
          "column": 0
        },
        "end": {
          "line": 18,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "handler",
      "start": 398,
      "end": 405,
      "loc": {
        "start": {
          "line": 18,
          "column": 6
        },
        "end": {
          "line": 18,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 406,
      "end": 407,
      "loc": {
        "start": {
          "line": 18,
          "column": 14
        },
        "end": {
          "line": 18,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "function",
        "keyword": "function",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "function",
      "start": 408,
      "end": 416,
      "loc": {
        "start": {
          "line": 18,
          "column": 16
        },
        "end": {
          "line": 18,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 417,
      "end": 418,
      "loc": {
        "start": {
          "line": 18,
          "column": 25
        },
        "end": {
          "line": 18,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 418,
      "end": 419,
      "loc": {
        "start": {
          "line": 18,
          "column": 26
        },
        "end": {
          "line": 18,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 420,
      "end": 421,
      "loc": {
        "start": {
          "line": 18,
          "column": 28
        },
        "end": {
          "line": 18,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 424,
      "end": 429,
      "loc": {
        "start": {
          "line": 19,
          "column": 2
        },
        "end": {
          "line": 19,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "url",
      "start": 430,
      "end": 433,
      "loc": {
        "start": {
          "line": 19,
          "column": 8
        },
        "end": {
          "line": 19,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 434,
      "end": 435,
      "loc": {
        "start": {
          "line": 19,
          "column": 12
        },
        "end": {
          "line": 19,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "window",
      "start": 436,
      "end": 442,
      "loc": {
        "start": {
          "line": 19,
          "column": 14
        },
        "end": {
          "line": 19,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 442,
      "end": 443,
      "loc": {
        "start": {
          "line": 19,
          "column": 20
        },
        "end": {
          "line": 19,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "location",
      "start": 443,
      "end": 451,
      "loc": {
        "start": {
          "line": 19,
          "column": 21
        },
        "end": {
          "line": 19,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 451,
      "end": 452,
      "loc": {
        "start": {
          "line": 19,
          "column": 29
        },
        "end": {
          "line": 19,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "toString",
      "start": 452,
      "end": 460,
      "loc": {
        "start": {
          "line": 19,
          "column": 30
        },
        "end": {
          "line": 19,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 460,
      "end": 461,
      "loc": {
        "start": {
          "line": 19,
          "column": 38
        },
        "end": {
          "line": 19,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 461,
      "end": 462,
      "loc": {
        "start": {
          "line": 19,
          "column": 39
        },
        "end": {
          "line": 19,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "loop",
      "start": 466,
      "end": 470,
      "loc": {
        "start": {
          "line": 21,
          "column": 2
        },
        "end": {
          "line": 21,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 470,
      "end": 471,
      "loc": {
        "start": {
          "line": 21,
          "column": 6
        },
        "end": {
          "line": 21,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "listeners",
      "start": 472,
      "end": 481,
      "loc": {
        "start": {
          "line": 21,
          "column": 8
        },
        "end": {
          "line": 21,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 481,
      "end": 482,
      "loc": {
        "start": {
          "line": 21,
          "column": 17
        },
        "end": {
          "line": 21,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 483,
      "end": 484,
      "loc": {
        "start": {
          "line": 21,
          "column": 19
        },
        "end": {
          "line": 21,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "listener",
      "start": 485,
      "end": 493,
      "loc": {
        "start": {
          "line": 21,
          "column": 21
        },
        "end": {
          "line": 21,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 494,
      "end": 495,
      "loc": {
        "start": {
          "line": 21,
          "column": 30
        },
        "end": {
          "line": 21,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 496,
      "end": 498,
      "loc": {
        "start": {
          "line": 21,
          "column": 32
        },
        "end": {
          "line": 21,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 499,
      "end": 500,
      "loc": {
        "start": {
          "line": 21,
          "column": 35
        },
        "end": {
          "line": 21,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "listener",
      "start": 505,
      "end": 513,
      "loc": {
        "start": {
          "line": 22,
          "column": 4
        },
        "end": {
          "line": 22,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 513,
      "end": 514,
      "loc": {
        "start": {
          "line": 22,
          "column": 12
        },
        "end": {
          "line": 22,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "url",
      "start": 515,
      "end": 518,
      "loc": {
        "start": {
          "line": 22,
          "column": 14
        },
        "end": {
          "line": 22,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 519,
      "end": 520,
      "loc": {
        "start": {
          "line": 22,
          "column": 18
        },
        "end": {
          "line": 22,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 523,
      "end": 524,
      "loc": {
        "start": {
          "line": 23,
          "column": 2
        },
        "end": {
          "line": 23,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 525,
      "end": 526,
      "loc": {
        "start": {
          "line": 23,
          "column": 4
        },
        "end": {
          "line": 23,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 527,
      "end": 528,
      "loc": {
        "start": {
          "line": 24,
          "column": 0
        },
        "end": {
          "line": 24,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "window",
      "start": 530,
      "end": 536,
      "loc": {
        "start": {
          "line": 26,
          "column": 0
        },
        "end": {
          "line": 26,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 536,
      "end": 537,
      "loc": {
        "start": {
          "line": 26,
          "column": 6
        },
        "end": {
          "line": 26,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "addEventListener",
      "start": 537,
      "end": 553,
      "loc": {
        "start": {
          "line": 26,
          "column": 7
        },
        "end": {
          "line": 26,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 553,
      "end": 554,
      "loc": {
        "start": {
          "line": 26,
          "column": 23
        },
        "end": {
          "line": 26,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "pageshow",
      "start": 555,
      "end": 565,
      "loc": {
        "start": {
          "line": 26,
          "column": 25
        },
        "end": {
          "line": 26,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 565,
      "end": 566,
      "loc": {
        "start": {
          "line": 26,
          "column": 35
        },
        "end": {
          "line": 26,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 567,
      "end": 568,
      "loc": {
        "start": {
          "line": 26,
          "column": 37
        },
        "end": {
          "line": 26,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 568,
      "end": 569,
      "loc": {
        "start": {
          "line": 26,
          "column": 38
        },
        "end": {
          "line": 26,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 570,
      "end": 572,
      "loc": {
        "start": {
          "line": 26,
          "column": 40
        },
        "end": {
          "line": 26,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 573,
      "end": 574,
      "loc": {
        "start": {
          "line": 26,
          "column": 43
        },
        "end": {
          "line": 26,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "handler",
      "start": 575,
      "end": 582,
      "loc": {
        "start": {
          "line": 26,
          "column": 45
        },
        "end": {
          "line": 26,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 582,
      "end": 583,
      "loc": {
        "start": {
          "line": 26,
          "column": 52
        },
        "end": {
          "line": 26,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 583,
      "end": 584,
      "loc": {
        "start": {
          "line": 26,
          "column": 53
        },
        "end": {
          "line": 26,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 585,
      "end": 586,
      "loc": {
        "start": {
          "line": 26,
          "column": 55
        },
        "end": {
          "line": 26,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 587,
      "end": 588,
      "loc": {
        "start": {
          "line": 26,
          "column": 57
        },
        "end": {
          "line": 26,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "window",
      "start": 589,
      "end": 595,
      "loc": {
        "start": {
          "line": 27,
          "column": 0
        },
        "end": {
          "line": 27,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 595,
      "end": 596,
      "loc": {
        "start": {
          "line": 27,
          "column": 6
        },
        "end": {
          "line": 27,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "addEventListener",
      "start": 596,
      "end": 612,
      "loc": {
        "start": {
          "line": 27,
          "column": 7
        },
        "end": {
          "line": 27,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 612,
      "end": 613,
      "loc": {
        "start": {
          "line": 27,
          "column": 23
        },
        "end": {
          "line": 27,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "hashchage",
      "start": 614,
      "end": 625,
      "loc": {
        "start": {
          "line": 27,
          "column": 25
        },
        "end": {
          "line": 27,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 625,
      "end": 626,
      "loc": {
        "start": {
          "line": 27,
          "column": 36
        },
        "end": {
          "line": 27,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 627,
      "end": 628,
      "loc": {
        "start": {
          "line": 27,
          "column": 38
        },
        "end": {
          "line": 27,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 628,
      "end": 629,
      "loc": {
        "start": {
          "line": 27,
          "column": 39
        },
        "end": {
          "line": 27,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 630,
      "end": 632,
      "loc": {
        "start": {
          "line": 27,
          "column": 41
        },
        "end": {
          "line": 27,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 633,
      "end": 634,
      "loc": {
        "start": {
          "line": 27,
          "column": 44
        },
        "end": {
          "line": 27,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "handler",
      "start": 635,
      "end": 642,
      "loc": {
        "start": {
          "line": 27,
          "column": 46
        },
        "end": {
          "line": 27,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 642,
      "end": 643,
      "loc": {
        "start": {
          "line": 27,
          "column": 53
        },
        "end": {
          "line": 27,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 643,
      "end": 644,
      "loc": {
        "start": {
          "line": 27,
          "column": 54
        },
        "end": {
          "line": 27,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 645,
      "end": 646,
      "loc": {
        "start": {
          "line": 27,
          "column": 56
        },
        "end": {
          "line": 27,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 647,
      "end": 648,
      "loc": {
        "start": {
          "line": 27,
          "column": 58
        },
        "end": {
          "line": 27,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "window",
      "start": 649,
      "end": 655,
      "loc": {
        "start": {
          "line": 28,
          "column": 0
        },
        "end": {
          "line": 28,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 655,
      "end": 656,
      "loc": {
        "start": {
          "line": 28,
          "column": 6
        },
        "end": {
          "line": 28,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "addEventListener",
      "start": 656,
      "end": 672,
      "loc": {
        "start": {
          "line": 28,
          "column": 7
        },
        "end": {
          "line": 28,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 672,
      "end": 673,
      "loc": {
        "start": {
          "line": 28,
          "column": 23
        },
        "end": {
          "line": 28,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "popstate",
      "start": 674,
      "end": 684,
      "loc": {
        "start": {
          "line": 28,
          "column": 25
        },
        "end": {
          "line": 28,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 684,
      "end": 685,
      "loc": {
        "start": {
          "line": 28,
          "column": 35
        },
        "end": {
          "line": 28,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 686,
      "end": 687,
      "loc": {
        "start": {
          "line": 28,
          "column": 37
        },
        "end": {
          "line": 28,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 687,
      "end": 688,
      "loc": {
        "start": {
          "line": 28,
          "column": 38
        },
        "end": {
          "line": 28,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 689,
      "end": 691,
      "loc": {
        "start": {
          "line": 28,
          "column": 40
        },
        "end": {
          "line": 28,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 692,
      "end": 693,
      "loc": {
        "start": {
          "line": 28,
          "column": 43
        },
        "end": {
          "line": 28,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "handler",
      "start": 694,
      "end": 701,
      "loc": {
        "start": {
          "line": 28,
          "column": 45
        },
        "end": {
          "line": 28,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 701,
      "end": 702,
      "loc": {
        "start": {
          "line": 28,
          "column": 52
        },
        "end": {
          "line": 28,
          "column": 53
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 702,
      "end": 703,
      "loc": {
        "start": {
          "line": 28,
          "column": 53
        },
        "end": {
          "line": 28,
          "column": 54
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 704,
      "end": 705,
      "loc": {
        "start": {
          "line": 28,
          "column": 55
        },
        "end": {
          "line": 28,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 706,
      "end": 707,
      "loc": {
        "start": {
          "line": 28,
          "column": 57
        },
        "end": {
          "line": 28,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "history",
      "start": 708,
      "end": 715,
      "loc": {
        "start": {
          "line": 29,
          "column": 0
        },
        "end": {
          "line": 29,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 715,
      "end": 716,
      "loc": {
        "start": {
          "line": 29,
          "column": 7
        },
        "end": {
          "line": 29,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "onpushstate",
      "start": 716,
      "end": 727,
      "loc": {
        "start": {
          "line": 29,
          "column": 8
        },
        "end": {
          "line": 29,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 728,
      "end": 729,
      "loc": {
        "start": {
          "line": 29,
          "column": 20
        },
        "end": {
          "line": 29,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 730,
      "end": 731,
      "loc": {
        "start": {
          "line": 29,
          "column": 22
        },
        "end": {
          "line": 29,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 731,
      "end": 732,
      "loc": {
        "start": {
          "line": 29,
          "column": 23
        },
        "end": {
          "line": 29,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 733,
      "end": 735,
      "loc": {
        "start": {
          "line": 29,
          "column": 25
        },
        "end": {
          "line": 29,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 736,
      "end": 737,
      "loc": {
        "start": {
          "line": 29,
          "column": 28
        },
        "end": {
          "line": 29,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "handler",
      "start": 738,
      "end": 745,
      "loc": {
        "start": {
          "line": 29,
          "column": 30
        },
        "end": {
          "line": 29,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 745,
      "end": 746,
      "loc": {
        "start": {
          "line": 29,
          "column": 37
        },
        "end": {
          "line": 29,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 746,
      "end": 747,
      "loc": {
        "start": {
          "line": 29,
          "column": 38
        },
        "end": {
          "line": 29,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 748,
      "end": 749,
      "loc": {
        "start": {
          "line": 29,
          "column": 40
        },
        "end": {
          "line": 29,
          "column": 41
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " Create the `pushstate` event",
      "start": 751,
      "end": 782,
      "loc": {
        "start": {
          "line": 31,
          "column": 0
        },
        "end": {
          "line": 31,
          "column": 31
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * This variable is a shorthand for history.pushState\n * @type {String}\n ",
      "start": 783,
      "end": 862,
      "loc": {
        "start": {
          "line": 32,
          "column": 0
        },
        "end": {
          "line": 35,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "let",
        "keyword": "let",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "let",
      "start": 863,
      "end": 866,
      "loc": {
        "start": {
          "line": 36,
          "column": 0
        },
        "end": {
          "line": 36,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "pushState",
      "start": 867,
      "end": 876,
      "loc": {
        "start": {
          "line": 36,
          "column": 4
        },
        "end": {
          "line": 36,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 877,
      "end": 878,
      "loc": {
        "start": {
          "line": 36,
          "column": 14
        },
        "end": {
          "line": 36,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "history",
      "start": 879,
      "end": 886,
      "loc": {
        "start": {
          "line": 36,
          "column": 16
        },
        "end": {
          "line": 36,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 886,
      "end": 887,
      "loc": {
        "start": {
          "line": 36,
          "column": 23
        },
        "end": {
          "line": 36,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "pushState",
      "start": 887,
      "end": 896,
      "loc": {
        "start": {
          "line": 36,
          "column": 24
        },
        "end": {
          "line": 36,
          "column": 33
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Add a new method to history, to call use when the state or url changes\n ",
      "start": 897,
      "end": 978,
      "loc": {
        "start": {
          "line": 37,
          "column": 0
        },
        "end": {
          "line": 39,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "history",
      "start": 979,
      "end": 986,
      "loc": {
        "start": {
          "line": 40,
          "column": 0
        },
        "end": {
          "line": 40,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 986,
      "end": 987,
      "loc": {
        "start": {
          "line": 40,
          "column": 7
        },
        "end": {
          "line": 40,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "pushState",
      "start": 987,
      "end": 996,
      "loc": {
        "start": {
          "line": 40,
          "column": 8
        },
        "end": {
          "line": 40,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 997,
      "end": 998,
      "loc": {
        "start": {
          "line": 40,
          "column": 18
        },
        "end": {
          "line": 40,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "function",
        "keyword": "function",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "function",
      "start": 999,
      "end": 1007,
      "loc": {
        "start": {
          "line": 40,
          "column": 20
        },
        "end": {
          "line": 40,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1008,
      "end": 1009,
      "loc": {
        "start": {
          "line": 40,
          "column": 29
        },
        "end": {
          "line": 40,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1009,
      "end": 1010,
      "loc": {
        "start": {
          "line": 40,
          "column": 30
        },
        "end": {
          "line": 40,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1011,
      "end": 1012,
      "loc": {
        "start": {
          "line": 40,
          "column": 32
        },
        "end": {
          "line": 40,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "let",
        "keyword": "let",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "let",
      "start": 1015,
      "end": 1018,
      "loc": {
        "start": {
          "line": 41,
          "column": 2
        },
        "end": {
          "line": 41,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "next",
      "start": 1019,
      "end": 1023,
      "loc": {
        "start": {
          "line": 41,
          "column": 6
        },
        "end": {
          "line": 41,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1024,
      "end": 1025,
      "loc": {
        "start": {
          "line": 41,
          "column": 11
        },
        "end": {
          "line": 41,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "pushState",
      "start": 1026,
      "end": 1035,
      "loc": {
        "start": {
          "line": 41,
          "column": 13
        },
        "end": {
          "line": 41,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1035,
      "end": 1036,
      "loc": {
        "start": {
          "line": 41,
          "column": 22
        },
        "end": {
          "line": 41,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "apply",
      "start": 1036,
      "end": 1041,
      "loc": {
        "start": {
          "line": 41,
          "column": 23
        },
        "end": {
          "line": 41,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1041,
      "end": 1042,
      "loc": {
        "start": {
          "line": 41,
          "column": 28
        },
        "end": {
          "line": 41,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "history",
      "start": 1043,
      "end": 1050,
      "loc": {
        "start": {
          "line": 41,
          "column": 30
        },
        "end": {
          "line": 41,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1050,
      "end": 1051,
      "loc": {
        "start": {
          "line": 41,
          "column": 37
        },
        "end": {
          "line": 41,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "arguments",
      "start": 1052,
      "end": 1061,
      "loc": {
        "start": {
          "line": 41,
          "column": 39
        },
        "end": {
          "line": 41,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1062,
      "end": 1063,
      "loc": {
        "start": {
          "line": 41,
          "column": 49
        },
        "end": {
          "line": 41,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "if",
        "keyword": "if",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "if",
      "start": 1066,
      "end": 1068,
      "loc": {
        "start": {
          "line": 42,
          "column": 2
        },
        "end": {
          "line": 42,
          "column": 4
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1069,
      "end": 1070,
      "loc": {
        "start": {
          "line": 42,
          "column": 5
        },
        "end": {
          "line": 42,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "typeof",
        "keyword": "typeof",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "typeof",
      "start": 1071,
      "end": 1077,
      "loc": {
        "start": {
          "line": 42,
          "column": 7
        },
        "end": {
          "line": 42,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "history",
      "start": 1078,
      "end": 1085,
      "loc": {
        "start": {
          "line": 42,
          "column": 14
        },
        "end": {
          "line": 42,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1085,
      "end": 1086,
      "loc": {
        "start": {
          "line": 42,
          "column": 21
        },
        "end": {
          "line": 42,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "onpushstate",
      "start": 1086,
      "end": 1097,
      "loc": {
        "start": {
          "line": 42,
          "column": 22
        },
        "end": {
          "line": 42,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 1098,
      "end": 1101,
      "loc": {
        "start": {
          "line": 42,
          "column": 34
        },
        "end": {
          "line": 42,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "function",
      "start": 1102,
      "end": 1112,
      "loc": {
        "start": {
          "line": 42,
          "column": 38
        },
        "end": {
          "line": 42,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1113,
      "end": 1114,
      "loc": {
        "start": {
          "line": 42,
          "column": 49
        },
        "end": {
          "line": 42,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1115,
      "end": 1116,
      "loc": {
        "start": {
          "line": 42,
          "column": 51
        },
        "end": {
          "line": 42,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "history",
      "start": 1121,
      "end": 1128,
      "loc": {
        "start": {
          "line": 43,
          "column": 4
        },
        "end": {
          "line": 43,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1128,
      "end": 1129,
      "loc": {
        "start": {
          "line": 43,
          "column": 11
        },
        "end": {
          "line": 43,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "onpushstate",
      "start": 1129,
      "end": 1140,
      "loc": {
        "start": {
          "line": 43,
          "column": 12
        },
        "end": {
          "line": 43,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1140,
      "end": 1141,
      "loc": {
        "start": {
          "line": 43,
          "column": 23
        },
        "end": {
          "line": 43,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1141,
      "end": 1142,
      "loc": {
        "start": {
          "line": 43,
          "column": 24
        },
        "end": {
          "line": 43,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1145,
      "end": 1146,
      "loc": {
        "start": {
          "line": 44,
          "column": 2
        },
        "end": {
          "line": 44,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 1149,
      "end": 1155,
      "loc": {
        "start": {
          "line": 45,
          "column": 2
        },
        "end": {
          "line": 45,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "next",
      "start": 1156,
      "end": 1160,
      "loc": {
        "start": {
          "line": 45,
          "column": 9
        },
        "end": {
          "line": 45,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1161,
      "end": 1162,
      "loc": {
        "start": {
          "line": 46,
          "column": 0
        },
        "end": {
          "line": 46,
          "column": 1
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * A static class which is responsible for handling state and url change\n * Remember to remove <base/> in most common scenarios\n ",
      "start": 1164,
      "end": 1299,
      "loc": {
        "start": {
          "line": 48,
          "column": 0
        },
        "end": {
          "line": 51,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "export",
        "keyword": "export",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "export",
      "start": 1300,
      "end": 1306,
      "loc": {
        "start": {
          "line": 52,
          "column": 0
        },
        "end": {
          "line": 52,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "class",
        "keyword": "class",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "class",
      "start": 1307,
      "end": 1312,
      "loc": {
        "start": {
          "line": 52,
          "column": 7
        },
        "end": {
          "line": 52,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "Router",
      "start": 1313,
      "end": 1319,
      "loc": {
        "start": {
          "line": 52,
          "column": 13
        },
        "end": {
          "line": 52,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1320,
      "end": 1321,
      "loc": {
        "start": {
          "line": 52,
          "column": 20
        },
        "end": {
          "line": 52,
          "column": 21
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A static method used to push a new state\n   * @param {String} url The new url\n   ",
      "start": 1324,
      "end": 1416,
      "loc": {
        "start": {
          "line": 53,
          "column": 2
        },
        "end": {
          "line": 56,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "static",
      "start": 1419,
      "end": 1425,
      "loc": {
        "start": {
          "line": 57,
          "column": 2
        },
        "end": {
          "line": 57,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "redirect",
      "start": 1426,
      "end": 1434,
      "loc": {
        "start": {
          "line": 57,
          "column": 9
        },
        "end": {
          "line": 57,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1435,
      "end": 1436,
      "loc": {
        "start": {
          "line": 57,
          "column": 18
        },
        "end": {
          "line": 57,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "url",
      "start": 1437,
      "end": 1440,
      "loc": {
        "start": {
          "line": 57,
          "column": 20
        },
        "end": {
          "line": 57,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1441,
      "end": 1442,
      "loc": {
        "start": {
          "line": 57,
          "column": 24
        },
        "end": {
          "line": 57,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1443,
      "end": 1444,
      "loc": {
        "start": {
          "line": 57,
          "column": 26
        },
        "end": {
          "line": 57,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "history",
      "start": 1449,
      "end": 1456,
      "loc": {
        "start": {
          "line": 58,
          "column": 4
        },
        "end": {
          "line": 58,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1456,
      "end": 1457,
      "loc": {
        "start": {
          "line": 58,
          "column": 11
        },
        "end": {
          "line": 58,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "pushState",
      "start": 1457,
      "end": 1466,
      "loc": {
        "start": {
          "line": 58,
          "column": 12
        },
        "end": {
          "line": 58,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1466,
      "end": 1467,
      "loc": {
        "start": {
          "line": 58,
          "column": 21
        },
        "end": {
          "line": 58,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1468,
      "end": 1469,
      "loc": {
        "start": {
          "line": 58,
          "column": 23
        },
        "end": {
          "line": 58,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "url",
      "start": 1470,
      "end": 1473,
      "loc": {
        "start": {
          "line": 58,
          "column": 25
        },
        "end": {
          "line": 58,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ":",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1473,
      "end": 1474,
      "loc": {
        "start": {
          "line": 58,
          "column": 28
        },
        "end": {
          "line": 58,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "url",
      "start": 1475,
      "end": 1478,
      "loc": {
        "start": {
          "line": 58,
          "column": 30
        },
        "end": {
          "line": 58,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1479,
      "end": 1480,
      "loc": {
        "start": {
          "line": 58,
          "column": 34
        },
        "end": {
          "line": 58,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1480,
      "end": 1481,
      "loc": {
        "start": {
          "line": 58,
          "column": 35
        },
        "end": {
          "line": 58,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "",
      "start": 1482,
      "end": 1484,
      "loc": {
        "start": {
          "line": 58,
          "column": 37
        },
        "end": {
          "line": 58,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1484,
      "end": 1485,
      "loc": {
        "start": {
          "line": 58,
          "column": 39
        },
        "end": {
          "line": 58,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "url",
      "start": 1486,
      "end": 1489,
      "loc": {
        "start": {
          "line": 58,
          "column": 41
        },
        "end": {
          "line": 58,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1490,
      "end": 1491,
      "loc": {
        "start": {
          "line": 58,
          "column": 45
        },
        "end": {
          "line": 58,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1494,
      "end": 1495,
      "loc": {
        "start": {
          "line": 59,
          "column": 2
        },
        "end": {
          "line": 59,
          "column": 3
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A static method used to attach a handler to the state change. It returns a function that can be called to remove the handler when it is no longer used\n   * @param {Function} listener The state change handler\n   * @return {Function}\n   ",
      "start": 1499,
      "end": 1745,
      "loc": {
        "start": {
          "line": 61,
          "column": 2
        },
        "end": {
          "line": 65,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "static",
      "start": 1748,
      "end": 1754,
      "loc": {
        "start": {
          "line": 66,
          "column": 2
        },
        "end": {
          "line": 66,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "onStateChange",
      "start": 1755,
      "end": 1768,
      "loc": {
        "start": {
          "line": 66,
          "column": 9
        },
        "end": {
          "line": 66,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1769,
      "end": 1770,
      "loc": {
        "start": {
          "line": 66,
          "column": 23
        },
        "end": {
          "line": 66,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "listener",
      "start": 1771,
      "end": 1779,
      "loc": {
        "start": {
          "line": 66,
          "column": 25
        },
        "end": {
          "line": 66,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1780,
      "end": 1781,
      "loc": {
        "start": {
          "line": 66,
          "column": 34
        },
        "end": {
          "line": 66,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1782,
      "end": 1783,
      "loc": {
        "start": {
          "line": 66,
          "column": 36
        },
        "end": {
          "line": 66,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "let",
        "keyword": "let",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "let",
      "start": 1788,
      "end": 1791,
      "loc": {
        "start": {
          "line": 67,
          "column": 4
        },
        "end": {
          "line": 67,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 1792,
      "end": 1794,
      "loc": {
        "start": {
          "line": 67,
          "column": 8
        },
        "end": {
          "line": 67,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1795,
      "end": 1796,
      "loc": {
        "start": {
          "line": 67,
          "column": 11
        },
        "end": {
          "line": 67,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "uid",
      "start": 1797,
      "end": 1800,
      "loc": {
        "start": {
          "line": 67,
          "column": 13
        },
        "end": {
          "line": 67,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1800,
      "end": 1801,
      "loc": {
        "start": {
          "line": 67,
          "column": 16
        },
        "end": {
          "line": 67,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1801,
      "end": 1802,
      "loc": {
        "start": {
          "line": 67,
          "column": 17
        },
        "end": {
          "line": 67,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "listeners",
      "start": 1807,
      "end": 1816,
      "loc": {
        "start": {
          "line": 68,
          "column": 4
        },
        "end": {
          "line": 68,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1816,
      "end": 1817,
      "loc": {
        "start": {
          "line": 68,
          "column": 13
        },
        "end": {
          "line": 68,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 1818,
      "end": 1820,
      "loc": {
        "start": {
          "line": 68,
          "column": 15
        },
        "end": {
          "line": 68,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1821,
      "end": 1822,
      "loc": {
        "start": {
          "line": 68,
          "column": 18
        },
        "end": {
          "line": 68,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1823,
      "end": 1824,
      "loc": {
        "start": {
          "line": 68,
          "column": 20
        },
        "end": {
          "line": 68,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "listener",
      "start": 1825,
      "end": 1833,
      "loc": {
        "start": {
          "line": 68,
          "column": 22
        },
        "end": {
          "line": 68,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "return",
        "keyword": "return",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "return",
      "start": 1838,
      "end": 1844,
      "loc": {
        "start": {
          "line": 69,
          "column": 4
        },
        "end": {
          "line": 69,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1845,
      "end": 1846,
      "loc": {
        "start": {
          "line": 69,
          "column": 11
        },
        "end": {
          "line": 69,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1846,
      "end": 1847,
      "loc": {
        "start": {
          "line": 69,
          "column": 12
        },
        "end": {
          "line": 69,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1848,
      "end": 1850,
      "loc": {
        "start": {
          "line": 69,
          "column": 14
        },
        "end": {
          "line": 69,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1851,
      "end": 1852,
      "loc": {
        "start": {
          "line": 69,
          "column": 17
        },
        "end": {
          "line": 69,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "delete",
        "keyword": "delete",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "delete",
      "start": 1859,
      "end": 1865,
      "loc": {
        "start": {
          "line": 70,
          "column": 6
        },
        "end": {
          "line": 70,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "listeners",
      "start": 1866,
      "end": 1875,
      "loc": {
        "start": {
          "line": 70,
          "column": 13
        },
        "end": {
          "line": 70,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "[",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1875,
      "end": 1876,
      "loc": {
        "start": {
          "line": 70,
          "column": 22
        },
        "end": {
          "line": 70,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "id",
      "start": 1877,
      "end": 1879,
      "loc": {
        "start": {
          "line": 70,
          "column": 24
        },
        "end": {
          "line": 70,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "]",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1880,
      "end": 1881,
      "loc": {
        "start": {
          "line": 70,
          "column": 27
        },
        "end": {
          "line": 70,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1886,
      "end": 1887,
      "loc": {
        "start": {
          "line": 71,
          "column": 4
        },
        "end": {
          "line": 71,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1890,
      "end": 1891,
      "loc": {
        "start": {
          "line": 72,
          "column": 2
        },
        "end": {
          "line": 72,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1892,
      "end": 1893,
      "loc": {
        "start": {
          "line": 73,
          "column": 0
        },
        "end": {
          "line": 73,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "eof",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1894,
      "end": 1894,
      "loc": {
        "start": {
          "line": 74,
          "column": 0
        },
        "end": {
          "line": 74,
          "column": 0
        }
      }
    }
  ]
}