{
  "type": "Program",
  "body": [
    {
      "type": "ImportDeclaration",
      "specifiers": [
        {
          "type": "ImportSpecifier",
          "local": {
            "type": "Identifier",
            "name": "OuterSubscriber",
            "range": [
              9,
              24
            ],
            "loc": {
              "start": {
                "line": 1,
                "column": 9
              },
              "end": {
                "line": 1,
                "column": 24
              }
            }
          },
          "imported": {
            "type": "Identifier",
            "name": "OuterSubscriber",
            "range": [
              9,
              24
            ],
            "loc": {
              "start": {
                "line": 1,
                "column": 9
              },
              "end": {
                "line": 1,
                "column": 24
              }
            }
          },
          "range": [
            9,
            24
          ],
          "loc": {
            "start": {
              "line": 1,
              "column": 9
            },
            "end": {
              "line": 1,
              "column": 24
            }
          }
        }
      ],
      "source": {
        "type": "Literal",
        "value": "../OuterSubscriber",
        "raw": "'../OuterSubscriber'",
        "range": [
          32,
          52
        ],
        "loc": {
          "start": {
            "line": 1,
            "column": 32
          },
          "end": {
            "line": 1,
            "column": 52
          }
        }
      },
      "range": [
        0,
        53
      ],
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 1,
          "column": 53
        }
      }
    },
    {
      "type": "ImportDeclaration",
      "specifiers": [
        {
          "type": "ImportSpecifier",
          "local": {
            "type": "Identifier",
            "name": "subscribeToResult",
            "range": [
              63,
              80
            ],
            "loc": {
              "start": {
                "line": 2,
                "column": 9
              },
              "end": {
                "line": 2,
                "column": 26
              }
            }
          },
          "imported": {
            "type": "Identifier",
            "name": "subscribeToResult",
            "range": [
              63,
              80
            ],
            "loc": {
              "start": {
                "line": 2,
                "column": 9
              },
              "end": {
                "line": 2,
                "column": 26
              }
            }
          },
          "range": [
            63,
            80
          ],
          "loc": {
            "start": {
              "line": 2,
              "column": 9
            },
            "end": {
              "line": 2,
              "column": 26
            }
          }
        }
      ],
      "source": {
        "type": "Literal",
        "value": "../util/subscribeToResult",
        "raw": "'../util/subscribeToResult'",
        "range": [
          88,
          115
        ],
        "loc": {
          "start": {
            "line": 2,
            "column": 34
          },
          "end": {
            "line": 2,
            "column": 61
          }
        }
      },
      "range": [
        54,
        116
      ],
      "loc": {
        "start": {
          "line": 2,
          "column": 0
        },
        "end": {
          "line": 2,
          "column": 62
        }
      },
      "trailingComments": [
        {
          "type": "Block",
          "value": "*\n * Converts a higher-order Observable into a first-order Observable by dropping\n * inner Observables while the previous inner Observable has not yet completed.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by dropping the\n * next inner Observables while the current inner is still executing.</span>\n *\n * <img src=\"./img/exhaust.png\" width=\"100%\">\n *\n * `exhaust` subscribes to an Observable that emits Observables, also known as a\n * higher-order Observable. Each time it observes one of these emitted inner\n * Observables, the output Observable begins emitting the items emitted by that\n * inner Observable. So far, it behaves like {@link mergeAll}. However,\n * `exhaust` ignores every new inner Observable if the previous Observable has\n * not yet completed. Once that one completes, it will accept and flatten the\n * next inner Observable and repeat this process.\n *\n * @example <caption>Run a finite timer for each click, only if there is no currently active timer</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));\n * var result = higherOrder.exhaust();\n * result.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link switch}\n * @see {@link mergeAll}\n * @see {@link exhaustMap}\n * @see {@link zipAll}\n *\n * @return {Observable} Returns an Observable that takes a source of Observables\n * and propagates the first observable exclusively until it completes before\n * subscribing to the next.\n * @method exhaust\n * @owner Observable\n ",
          "range": [
            117,
            1720
          ],
          "loc": {
            "start": {
              "line": 3,
              "column": 0
            },
            "end": {
              "line": 38,
              "column": 3
            }
          }
        }
      ]
    },
    {
      "type": "ExportNamedDeclaration",
      "declaration": {
        "type": "FunctionDeclaration",
        "id": {
          "type": "Identifier",
          "name": "exhaust",
          "range": [
            1737,
            1744
          ],
          "loc": {
            "start": {
              "line": 39,
              "column": 16
            },
            "end": {
              "line": 39,
              "column": 23
            }
          }
        },
        "params": [],
        "body": {
          "type": "BlockStatement",
          "body": [
            {
              "type": "ReturnStatement",
              "argument": {
                "type": "CallExpression",
                "callee": {
                  "type": "MemberExpression",
                  "computed": false,
                  "object": {
                    "type": "ThisExpression",
                    "range": [
                      1760,
                      1764
                    ],
                    "loc": {
                      "start": {
                        "line": 40,
                        "column": 11
                      },
                      "end": {
                        "line": 40,
                        "column": 15
                      }
                    }
                  },
                  "property": {
                    "type": "Identifier",
                    "name": "lift",
                    "range": [
                      1765,
                      1769
                    ],
                    "loc": {
                      "start": {
                        "line": 40,
                        "column": 16
                      },
                      "end": {
                        "line": 40,
                        "column": 20
                      }
                    }
                  },
                  "range": [
                    1760,
                    1769
                  ],
                  "loc": {
                    "start": {
                      "line": 40,
                      "column": 11
                    },
                    "end": {
                      "line": 40,
                      "column": 20
                    }
                  }
                },
                "arguments": [
                  {
                    "type": "NewExpression",
                    "callee": {
                      "type": "Identifier",
                      "name": "SwitchFirstOperator",
                      "range": [
                        1774,
                        1793
                      ],
                      "loc": {
                        "start": {
                          "line": 40,
                          "column": 25
                        },
                        "end": {
                          "line": 40,
                          "column": 44
                        }
                      }
                    },
                    "arguments": [],
                    "range": [
                      1770,
                      1795
                    ],
                    "loc": {
                      "start": {
                        "line": 40,
                        "column": 21
                      },
                      "end": {
                        "line": 40,
                        "column": 46
                      }
                    }
                  }
                ],
                "range": [
                  1760,
                  1796
                ],
                "loc": {
                  "start": {
                    "line": 40,
                    "column": 11
                  },
                  "end": {
                    "line": 40,
                    "column": 47
                  }
                }
              },
              "range": [
                1753,
                1797
              ],
              "loc": {
                "start": {
                  "line": 40,
                  "column": 4
                },
                "end": {
                  "line": 40,
                  "column": 48
                }
              }
            }
          ],
          "range": [
            1747,
            1799
          ],
          "loc": {
            "start": {
              "line": 39,
              "column": 26
            },
            "end": {
              "line": 41,
              "column": 1
            }
          }
        },
        "generator": false,
        "expression": false,
        "range": [
          1728,
          1799
        ],
        "loc": {
          "start": {
            "line": 39,
            "column": 7
          },
          "end": {
            "line": 41,
            "column": 1
          }
        },
        "leadingComments": [
          {
            "type": "Block",
            "value": "*\n * Converts a higher-order Observable into a first-order Observable by dropping\n * inner Observables while the previous inner Observable has not yet completed.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by dropping the\n * next inner Observables while the current inner is still executing.</span>\n *\n * <img src=\"./img/exhaust.png\" width=\"100%\">\n *\n * `exhaust` subscribes to an Observable that emits Observables, also known as a\n * higher-order Observable. Each time it observes one of these emitted inner\n * Observables, the output Observable begins emitting the items emitted by that\n * inner Observable. So far, it behaves like {@link mergeAll}. However,\n * `exhaust` ignores every new inner Observable if the previous Observable has\n * not yet completed. Once that one completes, it will accept and flatten the\n * next inner Observable and repeat this process.\n *\n * @example <caption>Run a finite timer for each click, only if there is no currently active timer</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));\n * var result = higherOrder.exhaust();\n * result.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link switch}\n * @see {@link mergeAll}\n * @see {@link exhaustMap}\n * @see {@link zipAll}\n *\n * @return {Observable} Returns an Observable that takes a source of Observables\n * and propagates the first observable exclusively until it completes before\n * subscribing to the next.\n * @method exhaust\n * @owner Observable\n ",
            "range": [
              117,
              1720
            ],
            "loc": {
              "start": {
                "line": 3,
                "column": 0
              },
              "end": {
                "line": 38,
                "column": 3
              }
            }
          }
        ],
        "trailingComments": []
      },
      "specifiers": [],
      "source": null,
      "range": [
        1721,
        1799
      ],
      "loc": {
        "start": {
          "line": 39,
          "column": 0
        },
        "end": {
          "line": 41,
          "column": 1
        }
      },
      "leadingComments": [
        {
          "type": "Block",
          "value": "*\n * Converts a higher-order Observable into a first-order Observable by dropping\n * inner Observables while the previous inner Observable has not yet completed.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by dropping the\n * next inner Observables while the current inner is still executing.</span>\n *\n * <img src=\"./img/exhaust.png\" width=\"100%\">\n *\n * `exhaust` subscribes to an Observable that emits Observables, also known as a\n * higher-order Observable. Each time it observes one of these emitted inner\n * Observables, the output Observable begins emitting the items emitted by that\n * inner Observable. So far, it behaves like {@link mergeAll}. However,\n * `exhaust` ignores every new inner Observable if the previous Observable has\n * not yet completed. Once that one completes, it will accept and flatten the\n * next inner Observable and repeat this process.\n *\n * @example <caption>Run a finite timer for each click, only if there is no currently active timer</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));\n * var result = higherOrder.exhaust();\n * result.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link switch}\n * @see {@link mergeAll}\n * @see {@link exhaustMap}\n * @see {@link zipAll}\n *\n * @return {Observable} Returns an Observable that takes a source of Observables\n * and propagates the first observable exclusively until it completes before\n * subscribing to the next.\n * @method exhaust\n * @owner Observable\n ",
          "range": [
            117,
            1720
          ],
          "loc": {
            "start": {
              "line": 3,
              "column": 0
            },
            "end": {
              "line": 38,
              "column": 3
            }
          }
        }
      ]
    },
    {
      "type": "VariableDeclaration",
      "declarations": [
        {
          "type": "VariableDeclarator",
          "id": {
            "type": "Identifier",
            "name": "SwitchFirstOperator",
            "range": [
              1804,
              1823
            ],
            "loc": {
              "start": {
                "line": 42,
                "column": 4
              },
              "end": {
                "line": 42,
                "column": 23
              }
            }
          },
          "init": {
            "type": "CallExpression",
            "callee": {
              "type": "FunctionExpression",
              "id": null,
              "params": [],
              "body": {
                "type": "BlockStatement",
                "body": [
                  {
                    "type": "FunctionDeclaration",
                    "id": {
                      "type": "Identifier",
                      "name": "SwitchFirstOperator",
                      "range": [
                        1854,
                        1873
                      ],
                      "loc": {
                        "start": {
                          "line": 43,
                          "column": 13
                        },
                        "end": {
                          "line": 43,
                          "column": 32
                        }
                      }
                    },
                    "params": [],
                    "body": {
                      "type": "BlockStatement",
                      "body": [],
                      "range": [
                        1876,
                        1883
                      ],
                      "loc": {
                        "start": {
                          "line": 43,
                          "column": 35
                        },
                        "end": {
                          "line": 44,
                          "column": 5
                        }
                      }
                    },
                    "generator": false,
                    "expression": false,
                    "range": [
                      1845,
                      1883
                    ],
                    "loc": {
                      "start": {
                        "line": 43,
                        "column": 4
                      },
                      "end": {
                        "line": 44,
                        "column": 5
                      }
                    }
                  },
                  {
                    "type": "ExpressionStatement",
                    "expression": {
                      "type": "AssignmentExpression",
                      "operator": "=",
                      "left": {
                        "type": "MemberExpression",
                        "computed": false,
                        "object": {
                          "type": "MemberExpression",
                          "computed": false,
                          "object": {
                            "type": "Identifier",
                            "name": "SwitchFirstOperator",
                            "range": [
                              1888,
                              1907
                            ],
                            "loc": {
                              "start": {
                                "line": 45,
                                "column": 4
                              },
                              "end": {
                                "line": 45,
                                "column": 23
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "name": "prototype",
                            "range": [
                              1908,
                              1917
                            ],
                            "loc": {
                              "start": {
                                "line": 45,
                                "column": 24
                              },
                              "end": {
                                "line": 45,
                                "column": 33
                              }
                            }
                          },
                          "range": [
                            1888,
                            1917
                          ],
                          "loc": {
                            "start": {
                              "line": 45,
                              "column": 4
                            },
                            "end": {
                              "line": 45,
                              "column": 33
                            }
                          }
                        },
                        "property": {
                          "type": "Identifier",
                          "name": "call",
                          "range": [
                            1918,
                            1922
                          ],
                          "loc": {
                            "start": {
                              "line": 45,
                              "column": 34
                            },
                            "end": {
                              "line": 45,
                              "column": 38
                            }
                          }
                        },
                        "range": [
                          1888,
                          1922
                        ],
                        "loc": {
                          "start": {
                            "line": 45,
                            "column": 4
                          },
                          "end": {
                            "line": 45,
                            "column": 38
                          }
                        }
                      },
                      "right": {
                        "type": "FunctionExpression",
                        "id": null,
                        "params": [
                          {
                            "type": "Identifier",
                            "name": "subscriber",
                            "range": [
                              1935,
                              1945
                            ],
                            "loc": {
                              "start": {
                                "line": 45,
                                "column": 51
                              },
                              "end": {
                                "line": 45,
                                "column": 61
                              }
                            }
                          },
                          {
                            "type": "Identifier",
                            "name": "source",
                            "range": [
                              1947,
                              1953
                            ],
                            "loc": {
                              "start": {
                                "line": 45,
                                "column": 63
                              },
                              "end": {
                                "line": 45,
                                "column": 69
                              }
                            }
                          }
                        ],
                        "body": {
                          "type": "BlockStatement",
                          "body": [
                            {
                              "type": "ReturnStatement",
                              "argument": {
                                "type": "CallExpression",
                                "callee": {
                                  "type": "MemberExpression",
                                  "computed": false,
                                  "object": {
                                    "type": "Identifier",
                                    "name": "source",
                                    "range": [
                                      1972,
                                      1978
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 46,
                                        "column": 15
                                      },
                                      "end": {
                                        "line": 46,
                                        "column": 21
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "name": "_subscribe",
                                    "range": [
                                      1979,
                                      1989
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 46,
                                        "column": 22
                                      },
                                      "end": {
                                        "line": 46,
                                        "column": 32
                                      }
                                    }
                                  },
                                  "range": [
                                    1972,
                                    1989
                                  ],
                                  "loc": {
                                    "start": {
                                      "line": 46,
                                      "column": 15
                                    },
                                    "end": {
                                      "line": 46,
                                      "column": 32
                                    }
                                  }
                                },
                                "arguments": [
                                  {
                                    "type": "NewExpression",
                                    "callee": {
                                      "type": "Identifier",
                                      "name": "SwitchFirstSubscriber",
                                      "range": [
                                        1994,
                                        2015
                                      ],
                                      "loc": {
                                        "start": {
                                          "line": 46,
                                          "column": 37
                                        },
                                        "end": {
                                          "line": 46,
                                          "column": 58
                                        }
                                      }
                                    },
                                    "arguments": [
                                      {
                                        "type": "Identifier",
                                        "name": "subscriber",
                                        "range": [
                                          2016,
                                          2026
                                        ],
                                        "loc": {
                                          "start": {
                                            "line": 46,
                                            "column": 59
                                          },
                                          "end": {
                                            "line": 46,
                                            "column": 69
                                          }
                                        }
                                      }
                                    ],
                                    "range": [
                                      1990,
                                      2027
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 46,
                                        "column": 33
                                      },
                                      "end": {
                                        "line": 46,
                                        "column": 70
                                      }
                                    }
                                  }
                                ],
                                "range": [
                                  1972,
                                  2028
                                ],
                                "loc": {
                                  "start": {
                                    "line": 46,
                                    "column": 15
                                  },
                                  "end": {
                                    "line": 46,
                                    "column": 71
                                  }
                                }
                              },
                              "range": [
                                1965,
                                2029
                              ],
                              "loc": {
                                "start": {
                                  "line": 46,
                                  "column": 8
                                },
                                "end": {
                                  "line": 46,
                                  "column": 72
                                }
                              }
                            }
                          ],
                          "range": [
                            1955,
                            2035
                          ],
                          "loc": {
                            "start": {
                              "line": 45,
                              "column": 71
                            },
                            "end": {
                              "line": 47,
                              "column": 5
                            }
                          }
                        },
                        "generator": false,
                        "expression": false,
                        "range": [
                          1925,
                          2035
                        ],
                        "loc": {
                          "start": {
                            "line": 45,
                            "column": 41
                          },
                          "end": {
                            "line": 47,
                            "column": 5
                          }
                        }
                      },
                      "range": [
                        1888,
                        2035
                      ],
                      "loc": {
                        "start": {
                          "line": 45,
                          "column": 4
                        },
                        "end": {
                          "line": 47,
                          "column": 5
                        }
                      }
                    },
                    "range": [
                      1888,
                      2036
                    ],
                    "loc": {
                      "start": {
                        "line": 45,
                        "column": 4
                      },
                      "end": {
                        "line": 47,
                        "column": 6
                      }
                    }
                  },
                  {
                    "type": "ReturnStatement",
                    "argument": {
                      "type": "Identifier",
                      "name": "SwitchFirstOperator",
                      "range": [
                        2048,
                        2067
                      ],
                      "loc": {
                        "start": {
                          "line": 48,
                          "column": 11
                        },
                        "end": {
                          "line": 48,
                          "column": 30
                        }
                      }
                    },
                    "range": [
                      2041,
                      2068
                    ],
                    "loc": {
                      "start": {
                        "line": 48,
                        "column": 4
                      },
                      "end": {
                        "line": 48,
                        "column": 31
                      }
                    }
                  }
                ],
                "range": [
                  1839,
                  2070
                ],
                "loc": {
                  "start": {
                    "line": 42,
                    "column": 39
                  },
                  "end": {
                    "line": 49,
                    "column": 1
                  }
                }
              },
              "generator": false,
              "expression": false,
              "range": [
                1827,
                2070
              ],
              "loc": {
                "start": {
                  "line": 42,
                  "column": 27
                },
                "end": {
                  "line": 49,
                  "column": 1
                }
              }
            },
            "arguments": [],
            "range": [
              1827,
              2072
            ],
            "loc": {
              "start": {
                "line": 42,
                "column": 27
              },
              "end": {
                "line": 49,
                "column": 3
              }
            }
          },
          "range": [
            1804,
            2073
          ],
          "loc": {
            "start": {
              "line": 42,
              "column": 4
            },
            "end": {
              "line": 49,
              "column": 4
            }
          }
        }
      ],
      "kind": "var",
      "range": [
        1800,
        2074
      ],
      "loc": {
        "start": {
          "line": 42,
          "column": 0
        },
        "end": {
          "line": 49,
          "column": 5
        }
      },
      "trailingComments": [
        {
          "type": "Block",
          "value": "*\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n ",
          "range": [
            2075,
            2166
          ],
          "loc": {
            "start": {
              "line": 50,
              "column": 0
            },
            "end": {
              "line": 54,
              "column": 3
            }
          }
        }
      ]
    },
    {
      "type": "VariableDeclaration",
      "declarations": [
        {
          "type": "VariableDeclarator",
          "id": {
            "type": "Identifier",
            "name": "SwitchFirstSubscriber",
            "range": [
              2171,
              2192
            ],
            "loc": {
              "start": {
                "line": 55,
                "column": 4
              },
              "end": {
                "line": 55,
                "column": 25
              }
            }
          },
          "init": {
            "type": "CallExpression",
            "callee": {
              "type": "FunctionExpression",
              "id": null,
              "params": [
                {
                  "type": "Identifier",
                  "name": "_super",
                  "range": [
                    2206,
                    2212
                  ],
                  "loc": {
                    "start": {
                      "line": 55,
                      "column": 39
                    },
                    "end": {
                      "line": 55,
                      "column": 45
                    }
                  }
                }
              ],
              "body": {
                "type": "BlockStatement",
                "body": [
                  {
                    "type": "ExpressionStatement",
                    "expression": {
                      "type": "CallExpression",
                      "callee": {
                        "type": "Identifier",
                        "name": "__extends",
                        "range": [
                          2220,
                          2229
                        ],
                        "loc": {
                          "start": {
                            "line": 56,
                            "column": 4
                          },
                          "end": {
                            "line": 56,
                            "column": 13
                          }
                        }
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "name": "SwitchFirstSubscriber",
                          "range": [
                            2230,
                            2251
                          ],
                          "loc": {
                            "start": {
                              "line": 56,
                              "column": 14
                            },
                            "end": {
                              "line": 56,
                              "column": 35
                            }
                          }
                        },
                        {
                          "type": "Identifier",
                          "name": "_super",
                          "range": [
                            2253,
                            2259
                          ],
                          "loc": {
                            "start": {
                              "line": 56,
                              "column": 37
                            },
                            "end": {
                              "line": 56,
                              "column": 43
                            }
                          }
                        }
                      ],
                      "range": [
                        2220,
                        2260
                      ],
                      "loc": {
                        "start": {
                          "line": 56,
                          "column": 4
                        },
                        "end": {
                          "line": 56,
                          "column": 44
                        }
                      }
                    },
                    "range": [
                      2220,
                      2261
                    ],
                    "loc": {
                      "start": {
                        "line": 56,
                        "column": 4
                      },
                      "end": {
                        "line": 56,
                        "column": 45
                      }
                    }
                  },
                  {
                    "type": "FunctionDeclaration",
                    "id": {
                      "type": "Identifier",
                      "name": "SwitchFirstSubscriber",
                      "range": [
                        2275,
                        2296
                      ],
                      "loc": {
                        "start": {
                          "line": 57,
                          "column": 13
                        },
                        "end": {
                          "line": 57,
                          "column": 34
                        }
                      }
                    },
                    "params": [
                      {
                        "type": "Identifier",
                        "name": "destination",
                        "range": [
                          2297,
                          2308
                        ],
                        "loc": {
                          "start": {
                            "line": 57,
                            "column": 35
                          },
                          "end": {
                            "line": 57,
                            "column": 46
                          }
                        }
                      }
                    ],
                    "body": {
                      "type": "BlockStatement",
                      "body": [
                        {
                          "type": "ExpressionStatement",
                          "expression": {
                            "type": "CallExpression",
                            "callee": {
                              "type": "MemberExpression",
                              "computed": false,
                              "object": {
                                "type": "Identifier",
                                "name": "_super",
                                "range": [
                                  2320,
                                  2326
                                ],
                                "loc": {
                                  "start": {
                                    "line": 58,
                                    "column": 8
                                  },
                                  "end": {
                                    "line": 58,
                                    "column": 14
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "name": "call",
                                "range": [
                                  2327,
                                  2331
                                ],
                                "loc": {
                                  "start": {
                                    "line": 58,
                                    "column": 15
                                  },
                                  "end": {
                                    "line": 58,
                                    "column": 19
                                  }
                                }
                              },
                              "range": [
                                2320,
                                2331
                              ],
                              "loc": {
                                "start": {
                                  "line": 58,
                                  "column": 8
                                },
                                "end": {
                                  "line": 58,
                                  "column": 19
                                }
                              }
                            },
                            "arguments": [
                              {
                                "type": "ThisExpression",
                                "range": [
                                  2332,
                                  2336
                                ],
                                "loc": {
                                  "start": {
                                    "line": 58,
                                    "column": 20
                                  },
                                  "end": {
                                    "line": 58,
                                    "column": 24
                                  }
                                }
                              },
                              {
                                "type": "Identifier",
                                "name": "destination",
                                "range": [
                                  2338,
                                  2349
                                ],
                                "loc": {
                                  "start": {
                                    "line": 58,
                                    "column": 26
                                  },
                                  "end": {
                                    "line": 58,
                                    "column": 37
                                  }
                                }
                              }
                            ],
                            "range": [
                              2320,
                              2350
                            ],
                            "loc": {
                              "start": {
                                "line": 58,
                                "column": 8
                              },
                              "end": {
                                "line": 58,
                                "column": 38
                              }
                            }
                          },
                          "range": [
                            2320,
                            2351
                          ],
                          "loc": {
                            "start": {
                              "line": 58,
                              "column": 8
                            },
                            "end": {
                              "line": 58,
                              "column": 39
                            }
                          }
                        },
                        {
                          "type": "ExpressionStatement",
                          "expression": {
                            "type": "AssignmentExpression",
                            "operator": "=",
                            "left": {
                              "type": "MemberExpression",
                              "computed": false,
                              "object": {
                                "type": "ThisExpression",
                                "range": [
                                  2360,
                                  2364
                                ],
                                "loc": {
                                  "start": {
                                    "line": 59,
                                    "column": 8
                                  },
                                  "end": {
                                    "line": 59,
                                    "column": 12
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "name": "hasCompleted",
                                "range": [
                                  2365,
                                  2377
                                ],
                                "loc": {
                                  "start": {
                                    "line": 59,
                                    "column": 13
                                  },
                                  "end": {
                                    "line": 59,
                                    "column": 25
                                  }
                                }
                              },
                              "range": [
                                2360,
                                2377
                              ],
                              "loc": {
                                "start": {
                                  "line": 59,
                                  "column": 8
                                },
                                "end": {
                                  "line": 59,
                                  "column": 25
                                }
                              }
                            },
                            "right": {
                              "type": "Literal",
                              "value": false,
                              "raw": "false",
                              "range": [
                                2380,
                                2385
                              ],
                              "loc": {
                                "start": {
                                  "line": 59,
                                  "column": 28
                                },
                                "end": {
                                  "line": 59,
                                  "column": 33
                                }
                              }
                            },
                            "range": [
                              2360,
                              2385
                            ],
                            "loc": {
                              "start": {
                                "line": 59,
                                "column": 8
                              },
                              "end": {
                                "line": 59,
                                "column": 33
                              }
                            }
                          },
                          "range": [
                            2360,
                            2386
                          ],
                          "loc": {
                            "start": {
                              "line": 59,
                              "column": 8
                            },
                            "end": {
                              "line": 59,
                              "column": 34
                            }
                          }
                        },
                        {
                          "type": "ExpressionStatement",
                          "expression": {
                            "type": "AssignmentExpression",
                            "operator": "=",
                            "left": {
                              "type": "MemberExpression",
                              "computed": false,
                              "object": {
                                "type": "ThisExpression",
                                "range": [
                                  2395,
                                  2399
                                ],
                                "loc": {
                                  "start": {
                                    "line": 60,
                                    "column": 8
                                  },
                                  "end": {
                                    "line": 60,
                                    "column": 12
                                  }
                                }
                              },
                              "property": {
                                "type": "Identifier",
                                "name": "hasSubscription",
                                "range": [
                                  2400,
                                  2415
                                ],
                                "loc": {
                                  "start": {
                                    "line": 60,
                                    "column": 13
                                  },
                                  "end": {
                                    "line": 60,
                                    "column": 28
                                  }
                                }
                              },
                              "range": [
                                2395,
                                2415
                              ],
                              "loc": {
                                "start": {
                                  "line": 60,
                                  "column": 8
                                },
                                "end": {
                                  "line": 60,
                                  "column": 28
                                }
                              }
                            },
                            "right": {
                              "type": "Literal",
                              "value": false,
                              "raw": "false",
                              "range": [
                                2418,
                                2423
                              ],
                              "loc": {
                                "start": {
                                  "line": 60,
                                  "column": 31
                                },
                                "end": {
                                  "line": 60,
                                  "column": 36
                                }
                              }
                            },
                            "range": [
                              2395,
                              2423
                            ],
                            "loc": {
                              "start": {
                                "line": 60,
                                "column": 8
                              },
                              "end": {
                                "line": 60,
                                "column": 36
                              }
                            }
                          },
                          "range": [
                            2395,
                            2424
                          ],
                          "loc": {
                            "start": {
                              "line": 60,
                              "column": 8
                            },
                            "end": {
                              "line": 60,
                              "column": 37
                            }
                          }
                        }
                      ],
                      "range": [
                        2310,
                        2430
                      ],
                      "loc": {
                        "start": {
                          "line": 57,
                          "column": 48
                        },
                        "end": {
                          "line": 61,
                          "column": 5
                        }
                      }
                    },
                    "generator": false,
                    "expression": false,
                    "range": [
                      2266,
                      2430
                    ],
                    "loc": {
                      "start": {
                        "line": 57,
                        "column": 4
                      },
                      "end": {
                        "line": 61,
                        "column": 5
                      }
                    }
                  },
                  {
                    "type": "ExpressionStatement",
                    "expression": {
                      "type": "AssignmentExpression",
                      "operator": "=",
                      "left": {
                        "type": "MemberExpression",
                        "computed": false,
                        "object": {
                          "type": "MemberExpression",
                          "computed": false,
                          "object": {
                            "type": "Identifier",
                            "name": "SwitchFirstSubscriber",
                            "range": [
                              2435,
                              2456
                            ],
                            "loc": {
                              "start": {
                                "line": 62,
                                "column": 4
                              },
                              "end": {
                                "line": 62,
                                "column": 25
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "name": "prototype",
                            "range": [
                              2457,
                              2466
                            ],
                            "loc": {
                              "start": {
                                "line": 62,
                                "column": 26
                              },
                              "end": {
                                "line": 62,
                                "column": 35
                              }
                            }
                          },
                          "range": [
                            2435,
                            2466
                          ],
                          "loc": {
                            "start": {
                              "line": 62,
                              "column": 4
                            },
                            "end": {
                              "line": 62,
                              "column": 35
                            }
                          }
                        },
                        "property": {
                          "type": "Identifier",
                          "name": "_next",
                          "range": [
                            2467,
                            2472
                          ],
                          "loc": {
                            "start": {
                              "line": 62,
                              "column": 36
                            },
                            "end": {
                              "line": 62,
                              "column": 41
                            }
                          }
                        },
                        "range": [
                          2435,
                          2472
                        ],
                        "loc": {
                          "start": {
                            "line": 62,
                            "column": 4
                          },
                          "end": {
                            "line": 62,
                            "column": 41
                          }
                        }
                      },
                      "right": {
                        "type": "FunctionExpression",
                        "id": null,
                        "params": [
                          {
                            "type": "Identifier",
                            "name": "value",
                            "range": [
                              2485,
                              2490
                            ],
                            "loc": {
                              "start": {
                                "line": 62,
                                "column": 54
                              },
                              "end": {
                                "line": 62,
                                "column": 59
                              }
                            }
                          }
                        ],
                        "body": {
                          "type": "BlockStatement",
                          "body": [
                            {
                              "type": "IfStatement",
                              "test": {
                                "type": "UnaryExpression",
                                "operator": "!",
                                "argument": {
                                  "type": "MemberExpression",
                                  "computed": false,
                                  "object": {
                                    "type": "ThisExpression",
                                    "range": [
                                      2507,
                                      2511
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 63,
                                        "column": 13
                                      },
                                      "end": {
                                        "line": 63,
                                        "column": 17
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "name": "hasSubscription",
                                    "range": [
                                      2512,
                                      2527
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 63,
                                        "column": 18
                                      },
                                      "end": {
                                        "line": 63,
                                        "column": 33
                                      }
                                    }
                                  },
                                  "range": [
                                    2507,
                                    2527
                                  ],
                                  "loc": {
                                    "start": {
                                      "line": 63,
                                      "column": 13
                                    },
                                    "end": {
                                      "line": 63,
                                      "column": 33
                                    }
                                  }
                                },
                                "prefix": true,
                                "range": [
                                  2506,
                                  2527
                                ],
                                "loc": {
                                  "start": {
                                    "line": 63,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 63,
                                    "column": 33
                                  }
                                }
                              },
                              "consequent": {
                                "type": "BlockStatement",
                                "body": [
                                  {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                      "type": "AssignmentExpression",
                                      "operator": "=",
                                      "left": {
                                        "type": "MemberExpression",
                                        "computed": false,
                                        "object": {
                                          "type": "ThisExpression",
                                          "range": [
                                            2543,
                                            2547
                                          ],
                                          "loc": {
                                            "start": {
                                              "line": 64,
                                              "column": 12
                                            },
                                            "end": {
                                              "line": 64,
                                              "column": 16
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "name": "hasSubscription",
                                          "range": [
                                            2548,
                                            2563
                                          ],
                                          "loc": {
                                            "start": {
                                              "line": 64,
                                              "column": 17
                                            },
                                            "end": {
                                              "line": 64,
                                              "column": 32
                                            }
                                          }
                                        },
                                        "range": [
                                          2543,
                                          2563
                                        ],
                                        "loc": {
                                          "start": {
                                            "line": 64,
                                            "column": 12
                                          },
                                          "end": {
                                            "line": 64,
                                            "column": 32
                                          }
                                        }
                                      },
                                      "right": {
                                        "type": "Literal",
                                        "value": true,
                                        "raw": "true",
                                        "range": [
                                          2566,
                                          2570
                                        ],
                                        "loc": {
                                          "start": {
                                            "line": 64,
                                            "column": 35
                                          },
                                          "end": {
                                            "line": 64,
                                            "column": 39
                                          }
                                        }
                                      },
                                      "range": [
                                        2543,
                                        2570
                                      ],
                                      "loc": {
                                        "start": {
                                          "line": 64,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 64,
                                          "column": 39
                                        }
                                      }
                                    },
                                    "range": [
                                      2543,
                                      2571
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 64,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 64,
                                        "column": 40
                                      }
                                    }
                                  },
                                  {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                      "type": "CallExpression",
                                      "callee": {
                                        "type": "MemberExpression",
                                        "computed": false,
                                        "object": {
                                          "type": "ThisExpression",
                                          "range": [
                                            2584,
                                            2588
                                          ],
                                          "loc": {
                                            "start": {
                                              "line": 65,
                                              "column": 12
                                            },
                                            "end": {
                                              "line": 65,
                                              "column": 16
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "name": "add",
                                          "range": [
                                            2589,
                                            2592
                                          ],
                                          "loc": {
                                            "start": {
                                              "line": 65,
                                              "column": 17
                                            },
                                            "end": {
                                              "line": 65,
                                              "column": 20
                                            }
                                          }
                                        },
                                        "range": [
                                          2584,
                                          2592
                                        ],
                                        "loc": {
                                          "start": {
                                            "line": 65,
                                            "column": 12
                                          },
                                          "end": {
                                            "line": 65,
                                            "column": 20
                                          }
                                        }
                                      },
                                      "arguments": [
                                        {
                                          "type": "CallExpression",
                                          "callee": {
                                            "type": "Identifier",
                                            "name": "subscribeToResult",
                                            "range": [
                                              2593,
                                              2610
                                            ],
                                            "loc": {
                                              "start": {
                                                "line": 65,
                                                "column": 21
                                              },
                                              "end": {
                                                "line": 65,
                                                "column": 38
                                              }
                                            }
                                          },
                                          "arguments": [
                                            {
                                              "type": "ThisExpression",
                                              "range": [
                                                2611,
                                                2615
                                              ],
                                              "loc": {
                                                "start": {
                                                  "line": 65,
                                                  "column": 39
                                                },
                                                "end": {
                                                  "line": 65,
                                                  "column": 43
                                                }
                                              }
                                            },
                                            {
                                              "type": "Identifier",
                                              "name": "value",
                                              "range": [
                                                2617,
                                                2622
                                              ],
                                              "loc": {
                                                "start": {
                                                  "line": 65,
                                                  "column": 45
                                                },
                                                "end": {
                                                  "line": 65,
                                                  "column": 50
                                                }
                                              }
                                            }
                                          ],
                                          "range": [
                                            2593,
                                            2623
                                          ],
                                          "loc": {
                                            "start": {
                                              "line": 65,
                                              "column": 21
                                            },
                                            "end": {
                                              "line": 65,
                                              "column": 51
                                            }
                                          }
                                        }
                                      ],
                                      "range": [
                                        2584,
                                        2624
                                      ],
                                      "loc": {
                                        "start": {
                                          "line": 65,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 65,
                                          "column": 52
                                        }
                                      }
                                    },
                                    "range": [
                                      2584,
                                      2625
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 65,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 65,
                                        "column": 53
                                      }
                                    }
                                  }
                                ],
                                "range": [
                                  2529,
                                  2635
                                ],
                                "loc": {
                                  "start": {
                                    "line": 63,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 66,
                                    "column": 9
                                  }
                                }
                              },
                              "alternate": null,
                              "range": [
                                2502,
                                2635
                              ],
                              "loc": {
                                "start": {
                                  "line": 63,
                                  "column": 8
                                },
                                "end": {
                                  "line": 66,
                                  "column": 9
                                }
                              }
                            }
                          ],
                          "range": [
                            2492,
                            2641
                          ],
                          "loc": {
                            "start": {
                              "line": 62,
                              "column": 61
                            },
                            "end": {
                              "line": 67,
                              "column": 5
                            }
                          }
                        },
                        "generator": false,
                        "expression": false,
                        "range": [
                          2475,
                          2641
                        ],
                        "loc": {
                          "start": {
                            "line": 62,
                            "column": 44
                          },
                          "end": {
                            "line": 67,
                            "column": 5
                          }
                        }
                      },
                      "range": [
                        2435,
                        2641
                      ],
                      "loc": {
                        "start": {
                          "line": 62,
                          "column": 4
                        },
                        "end": {
                          "line": 67,
                          "column": 5
                        }
                      }
                    },
                    "range": [
                      2435,
                      2642
                    ],
                    "loc": {
                      "start": {
                        "line": 62,
                        "column": 4
                      },
                      "end": {
                        "line": 67,
                        "column": 6
                      }
                    }
                  },
                  {
                    "type": "ExpressionStatement",
                    "expression": {
                      "type": "AssignmentExpression",
                      "operator": "=",
                      "left": {
                        "type": "MemberExpression",
                        "computed": false,
                        "object": {
                          "type": "MemberExpression",
                          "computed": false,
                          "object": {
                            "type": "Identifier",
                            "name": "SwitchFirstSubscriber",
                            "range": [
                              2647,
                              2668
                            ],
                            "loc": {
                              "start": {
                                "line": 68,
                                "column": 4
                              },
                              "end": {
                                "line": 68,
                                "column": 25
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "name": "prototype",
                            "range": [
                              2669,
                              2678
                            ],
                            "loc": {
                              "start": {
                                "line": 68,
                                "column": 26
                              },
                              "end": {
                                "line": 68,
                                "column": 35
                              }
                            }
                          },
                          "range": [
                            2647,
                            2678
                          ],
                          "loc": {
                            "start": {
                              "line": 68,
                              "column": 4
                            },
                            "end": {
                              "line": 68,
                              "column": 35
                            }
                          }
                        },
                        "property": {
                          "type": "Identifier",
                          "name": "_complete",
                          "range": [
                            2679,
                            2688
                          ],
                          "loc": {
                            "start": {
                              "line": 68,
                              "column": 36
                            },
                            "end": {
                              "line": 68,
                              "column": 45
                            }
                          }
                        },
                        "range": [
                          2647,
                          2688
                        ],
                        "loc": {
                          "start": {
                            "line": 68,
                            "column": 4
                          },
                          "end": {
                            "line": 68,
                            "column": 45
                          }
                        }
                      },
                      "right": {
                        "type": "FunctionExpression",
                        "id": null,
                        "params": [],
                        "body": {
                          "type": "BlockStatement",
                          "body": [
                            {
                              "type": "ExpressionStatement",
                              "expression": {
                                "type": "AssignmentExpression",
                                "operator": "=",
                                "left": {
                                  "type": "MemberExpression",
                                  "computed": false,
                                  "object": {
                                    "type": "ThisExpression",
                                    "range": [
                                      2713,
                                      2717
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 69,
                                        "column": 8
                                      },
                                      "end": {
                                        "line": 69,
                                        "column": 12
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "name": "hasCompleted",
                                    "range": [
                                      2718,
                                      2730
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 69,
                                        "column": 13
                                      },
                                      "end": {
                                        "line": 69,
                                        "column": 25
                                      }
                                    }
                                  },
                                  "range": [
                                    2713,
                                    2730
                                  ],
                                  "loc": {
                                    "start": {
                                      "line": 69,
                                      "column": 8
                                    },
                                    "end": {
                                      "line": 69,
                                      "column": 25
                                    }
                                  }
                                },
                                "right": {
                                  "type": "Literal",
                                  "value": true,
                                  "raw": "true",
                                  "range": [
                                    2733,
                                    2737
                                  ],
                                  "loc": {
                                    "start": {
                                      "line": 69,
                                      "column": 28
                                    },
                                    "end": {
                                      "line": 69,
                                      "column": 32
                                    }
                                  }
                                },
                                "range": [
                                  2713,
                                  2737
                                ],
                                "loc": {
                                  "start": {
                                    "line": 69,
                                    "column": 8
                                  },
                                  "end": {
                                    "line": 69,
                                    "column": 32
                                  }
                                }
                              },
                              "range": [
                                2713,
                                2738
                              ],
                              "loc": {
                                "start": {
                                  "line": 69,
                                  "column": 8
                                },
                                "end": {
                                  "line": 69,
                                  "column": 33
                                }
                              }
                            },
                            {
                              "type": "IfStatement",
                              "test": {
                                "type": "UnaryExpression",
                                "operator": "!",
                                "argument": {
                                  "type": "MemberExpression",
                                  "computed": false,
                                  "object": {
                                    "type": "ThisExpression",
                                    "range": [
                                      2752,
                                      2756
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 70,
                                        "column": 13
                                      },
                                      "end": {
                                        "line": 70,
                                        "column": 17
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "name": "hasSubscription",
                                    "range": [
                                      2757,
                                      2772
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 70,
                                        "column": 18
                                      },
                                      "end": {
                                        "line": 70,
                                        "column": 33
                                      }
                                    }
                                  },
                                  "range": [
                                    2752,
                                    2772
                                  ],
                                  "loc": {
                                    "start": {
                                      "line": 70,
                                      "column": 13
                                    },
                                    "end": {
                                      "line": 70,
                                      "column": 33
                                    }
                                  }
                                },
                                "prefix": true,
                                "range": [
                                  2751,
                                  2772
                                ],
                                "loc": {
                                  "start": {
                                    "line": 70,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 70,
                                    "column": 33
                                  }
                                }
                              },
                              "consequent": {
                                "type": "BlockStatement",
                                "body": [
                                  {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                      "type": "CallExpression",
                                      "callee": {
                                        "type": "MemberExpression",
                                        "computed": false,
                                        "object": {
                                          "type": "MemberExpression",
                                          "computed": false,
                                          "object": {
                                            "type": "ThisExpression",
                                            "range": [
                                              2788,
                                              2792
                                            ],
                                            "loc": {
                                              "start": {
                                                "line": 71,
                                                "column": 12
                                              },
                                              "end": {
                                                "line": 71,
                                                "column": 16
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "name": "destination",
                                            "range": [
                                              2793,
                                              2804
                                            ],
                                            "loc": {
                                              "start": {
                                                "line": 71,
                                                "column": 17
                                              },
                                              "end": {
                                                "line": 71,
                                                "column": 28
                                              }
                                            }
                                          },
                                          "range": [
                                            2788,
                                            2804
                                          ],
                                          "loc": {
                                            "start": {
                                              "line": 71,
                                              "column": 12
                                            },
                                            "end": {
                                              "line": 71,
                                              "column": 28
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "name": "complete",
                                          "range": [
                                            2805,
                                            2813
                                          ],
                                          "loc": {
                                            "start": {
                                              "line": 71,
                                              "column": 29
                                            },
                                            "end": {
                                              "line": 71,
                                              "column": 37
                                            }
                                          }
                                        },
                                        "range": [
                                          2788,
                                          2813
                                        ],
                                        "loc": {
                                          "start": {
                                            "line": 71,
                                            "column": 12
                                          },
                                          "end": {
                                            "line": 71,
                                            "column": 37
                                          }
                                        }
                                      },
                                      "arguments": [],
                                      "range": [
                                        2788,
                                        2815
                                      ],
                                      "loc": {
                                        "start": {
                                          "line": 71,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 71,
                                          "column": 39
                                        }
                                      }
                                    },
                                    "range": [
                                      2788,
                                      2816
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 71,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 71,
                                        "column": 40
                                      }
                                    }
                                  }
                                ],
                                "range": [
                                  2774,
                                  2826
                                ],
                                "loc": {
                                  "start": {
                                    "line": 70,
                                    "column": 35
                                  },
                                  "end": {
                                    "line": 72,
                                    "column": 9
                                  }
                                }
                              },
                              "alternate": null,
                              "range": [
                                2747,
                                2826
                              ],
                              "loc": {
                                "start": {
                                  "line": 70,
                                  "column": 8
                                },
                                "end": {
                                  "line": 72,
                                  "column": 9
                                }
                              }
                            }
                          ],
                          "range": [
                            2703,
                            2832
                          ],
                          "loc": {
                            "start": {
                              "line": 68,
                              "column": 60
                            },
                            "end": {
                              "line": 73,
                              "column": 5
                            }
                          }
                        },
                        "generator": false,
                        "expression": false,
                        "range": [
                          2691,
                          2832
                        ],
                        "loc": {
                          "start": {
                            "line": 68,
                            "column": 48
                          },
                          "end": {
                            "line": 73,
                            "column": 5
                          }
                        }
                      },
                      "range": [
                        2647,
                        2832
                      ],
                      "loc": {
                        "start": {
                          "line": 68,
                          "column": 4
                        },
                        "end": {
                          "line": 73,
                          "column": 5
                        }
                      }
                    },
                    "range": [
                      2647,
                      2833
                    ],
                    "loc": {
                      "start": {
                        "line": 68,
                        "column": 4
                      },
                      "end": {
                        "line": 73,
                        "column": 6
                      }
                    }
                  },
                  {
                    "type": "ExpressionStatement",
                    "expression": {
                      "type": "AssignmentExpression",
                      "operator": "=",
                      "left": {
                        "type": "MemberExpression",
                        "computed": false,
                        "object": {
                          "type": "MemberExpression",
                          "computed": false,
                          "object": {
                            "type": "Identifier",
                            "name": "SwitchFirstSubscriber",
                            "range": [
                              2838,
                              2859
                            ],
                            "loc": {
                              "start": {
                                "line": 74,
                                "column": 4
                              },
                              "end": {
                                "line": 74,
                                "column": 25
                              }
                            }
                          },
                          "property": {
                            "type": "Identifier",
                            "name": "prototype",
                            "range": [
                              2860,
                              2869
                            ],
                            "loc": {
                              "start": {
                                "line": 74,
                                "column": 26
                              },
                              "end": {
                                "line": 74,
                                "column": 35
                              }
                            }
                          },
                          "range": [
                            2838,
                            2869
                          ],
                          "loc": {
                            "start": {
                              "line": 74,
                              "column": 4
                            },
                            "end": {
                              "line": 74,
                              "column": 35
                            }
                          }
                        },
                        "property": {
                          "type": "Identifier",
                          "name": "notifyComplete",
                          "range": [
                            2870,
                            2884
                          ],
                          "loc": {
                            "start": {
                              "line": 74,
                              "column": 36
                            },
                            "end": {
                              "line": 74,
                              "column": 50
                            }
                          }
                        },
                        "range": [
                          2838,
                          2884
                        ],
                        "loc": {
                          "start": {
                            "line": 74,
                            "column": 4
                          },
                          "end": {
                            "line": 74,
                            "column": 50
                          }
                        }
                      },
                      "right": {
                        "type": "FunctionExpression",
                        "id": null,
                        "params": [
                          {
                            "type": "Identifier",
                            "name": "innerSub",
                            "range": [
                              2897,
                              2905
                            ],
                            "loc": {
                              "start": {
                                "line": 74,
                                "column": 63
                              },
                              "end": {
                                "line": 74,
                                "column": 71
                              }
                            }
                          }
                        ],
                        "body": {
                          "type": "BlockStatement",
                          "body": [
                            {
                              "type": "ExpressionStatement",
                              "expression": {
                                "type": "CallExpression",
                                "callee": {
                                  "type": "MemberExpression",
                                  "computed": false,
                                  "object": {
                                    "type": "ThisExpression",
                                    "range": [
                                      2917,
                                      2921
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 75,
                                        "column": 8
                                      },
                                      "end": {
                                        "line": 75,
                                        "column": 12
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "name": "remove",
                                    "range": [
                                      2922,
                                      2928
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 75,
                                        "column": 13
                                      },
                                      "end": {
                                        "line": 75,
                                        "column": 19
                                      }
                                    }
                                  },
                                  "range": [
                                    2917,
                                    2928
                                  ],
                                  "loc": {
                                    "start": {
                                      "line": 75,
                                      "column": 8
                                    },
                                    "end": {
                                      "line": 75,
                                      "column": 19
                                    }
                                  }
                                },
                                "arguments": [
                                  {
                                    "type": "Identifier",
                                    "name": "innerSub",
                                    "range": [
                                      2929,
                                      2937
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 75,
                                        "column": 20
                                      },
                                      "end": {
                                        "line": 75,
                                        "column": 28
                                      }
                                    }
                                  }
                                ],
                                "range": [
                                  2917,
                                  2938
                                ],
                                "loc": {
                                  "start": {
                                    "line": 75,
                                    "column": 8
                                  },
                                  "end": {
                                    "line": 75,
                                    "column": 29
                                  }
                                }
                              },
                              "range": [
                                2917,
                                2939
                              ],
                              "loc": {
                                "start": {
                                  "line": 75,
                                  "column": 8
                                },
                                "end": {
                                  "line": 75,
                                  "column": 30
                                }
                              }
                            },
                            {
                              "type": "ExpressionStatement",
                              "expression": {
                                "type": "AssignmentExpression",
                                "operator": "=",
                                "left": {
                                  "type": "MemberExpression",
                                  "computed": false,
                                  "object": {
                                    "type": "ThisExpression",
                                    "range": [
                                      2948,
                                      2952
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 76,
                                        "column": 8
                                      },
                                      "end": {
                                        "line": 76,
                                        "column": 12
                                      }
                                    }
                                  },
                                  "property": {
                                    "type": "Identifier",
                                    "name": "hasSubscription",
                                    "range": [
                                      2953,
                                      2968
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 76,
                                        "column": 13
                                      },
                                      "end": {
                                        "line": 76,
                                        "column": 28
                                      }
                                    }
                                  },
                                  "range": [
                                    2948,
                                    2968
                                  ],
                                  "loc": {
                                    "start": {
                                      "line": 76,
                                      "column": 8
                                    },
                                    "end": {
                                      "line": 76,
                                      "column": 28
                                    }
                                  }
                                },
                                "right": {
                                  "type": "Literal",
                                  "value": false,
                                  "raw": "false",
                                  "range": [
                                    2971,
                                    2976
                                  ],
                                  "loc": {
                                    "start": {
                                      "line": 76,
                                      "column": 31
                                    },
                                    "end": {
                                      "line": 76,
                                      "column": 36
                                    }
                                  }
                                },
                                "range": [
                                  2948,
                                  2976
                                ],
                                "loc": {
                                  "start": {
                                    "line": 76,
                                    "column": 8
                                  },
                                  "end": {
                                    "line": 76,
                                    "column": 36
                                  }
                                }
                              },
                              "range": [
                                2948,
                                2977
                              ],
                              "loc": {
                                "start": {
                                  "line": 76,
                                  "column": 8
                                },
                                "end": {
                                  "line": 76,
                                  "column": 37
                                }
                              }
                            },
                            {
                              "type": "IfStatement",
                              "test": {
                                "type": "MemberExpression",
                                "computed": false,
                                "object": {
                                  "type": "ThisExpression",
                                  "range": [
                                    2990,
                                    2994
                                  ],
                                  "loc": {
                                    "start": {
                                      "line": 77,
                                      "column": 12
                                    },
                                    "end": {
                                      "line": 77,
                                      "column": 16
                                    }
                                  }
                                },
                                "property": {
                                  "type": "Identifier",
                                  "name": "hasCompleted",
                                  "range": [
                                    2995,
                                    3007
                                  ],
                                  "loc": {
                                    "start": {
                                      "line": 77,
                                      "column": 17
                                    },
                                    "end": {
                                      "line": 77,
                                      "column": 29
                                    }
                                  }
                                },
                                "range": [
                                  2990,
                                  3007
                                ],
                                "loc": {
                                  "start": {
                                    "line": 77,
                                    "column": 12
                                  },
                                  "end": {
                                    "line": 77,
                                    "column": 29
                                  }
                                }
                              },
                              "consequent": {
                                "type": "BlockStatement",
                                "body": [
                                  {
                                    "type": "ExpressionStatement",
                                    "expression": {
                                      "type": "CallExpression",
                                      "callee": {
                                        "type": "MemberExpression",
                                        "computed": false,
                                        "object": {
                                          "type": "MemberExpression",
                                          "computed": false,
                                          "object": {
                                            "type": "ThisExpression",
                                            "range": [
                                              3023,
                                              3027
                                            ],
                                            "loc": {
                                              "start": {
                                                "line": 78,
                                                "column": 12
                                              },
                                              "end": {
                                                "line": 78,
                                                "column": 16
                                              }
                                            }
                                          },
                                          "property": {
                                            "type": "Identifier",
                                            "name": "destination",
                                            "range": [
                                              3028,
                                              3039
                                            ],
                                            "loc": {
                                              "start": {
                                                "line": 78,
                                                "column": 17
                                              },
                                              "end": {
                                                "line": 78,
                                                "column": 28
                                              }
                                            }
                                          },
                                          "range": [
                                            3023,
                                            3039
                                          ],
                                          "loc": {
                                            "start": {
                                              "line": 78,
                                              "column": 12
                                            },
                                            "end": {
                                              "line": 78,
                                              "column": 28
                                            }
                                          }
                                        },
                                        "property": {
                                          "type": "Identifier",
                                          "name": "complete",
                                          "range": [
                                            3040,
                                            3048
                                          ],
                                          "loc": {
                                            "start": {
                                              "line": 78,
                                              "column": 29
                                            },
                                            "end": {
                                              "line": 78,
                                              "column": 37
                                            }
                                          }
                                        },
                                        "range": [
                                          3023,
                                          3048
                                        ],
                                        "loc": {
                                          "start": {
                                            "line": 78,
                                            "column": 12
                                          },
                                          "end": {
                                            "line": 78,
                                            "column": 37
                                          }
                                        }
                                      },
                                      "arguments": [],
                                      "range": [
                                        3023,
                                        3050
                                      ],
                                      "loc": {
                                        "start": {
                                          "line": 78,
                                          "column": 12
                                        },
                                        "end": {
                                          "line": 78,
                                          "column": 39
                                        }
                                      }
                                    },
                                    "range": [
                                      3023,
                                      3051
                                    ],
                                    "loc": {
                                      "start": {
                                        "line": 78,
                                        "column": 12
                                      },
                                      "end": {
                                        "line": 78,
                                        "column": 40
                                      }
                                    }
                                  }
                                ],
                                "range": [
                                  3009,
                                  3061
                                ],
                                "loc": {
                                  "start": {
                                    "line": 77,
                                    "column": 31
                                  },
                                  "end": {
                                    "line": 79,
                                    "column": 9
                                  }
                                }
                              },
                              "alternate": null,
                              "range": [
                                2986,
                                3061
                              ],
                              "loc": {
                                "start": {
                                  "line": 77,
                                  "column": 8
                                },
                                "end": {
                                  "line": 79,
                                  "column": 9
                                }
                              }
                            }
                          ],
                          "range": [
                            2907,
                            3067
                          ],
                          "loc": {
                            "start": {
                              "line": 74,
                              "column": 73
                            },
                            "end": {
                              "line": 80,
                              "column": 5
                            }
                          }
                        },
                        "generator": false,
                        "expression": false,
                        "range": [
                          2887,
                          3067
                        ],
                        "loc": {
                          "start": {
                            "line": 74,
                            "column": 53
                          },
                          "end": {
                            "line": 80,
                            "column": 5
                          }
                        }
                      },
                      "range": [
                        2838,
                        3067
                      ],
                      "loc": {
                        "start": {
                          "line": 74,
                          "column": 4
                        },
                        "end": {
                          "line": 80,
                          "column": 5
                        }
                      }
                    },
                    "range": [
                      2838,
                      3068
                    ],
                    "loc": {
                      "start": {
                        "line": 74,
                        "column": 4
                      },
                      "end": {
                        "line": 80,
                        "column": 6
                      }
                    }
                  },
                  {
                    "type": "ReturnStatement",
                    "argument": {
                      "type": "Identifier",
                      "name": "SwitchFirstSubscriber",
                      "range": [
                        3080,
                        3101
                      ],
                      "loc": {
                        "start": {
                          "line": 81,
                          "column": 11
                        },
                        "end": {
                          "line": 81,
                          "column": 32
                        }
                      }
                    },
                    "range": [
                      3073,
                      3102
                    ],
                    "loc": {
                      "start": {
                        "line": 81,
                        "column": 4
                      },
                      "end": {
                        "line": 81,
                        "column": 33
                      }
                    }
                  }
                ],
                "range": [
                  2214,
                  3104
                ],
                "loc": {
                  "start": {
                    "line": 55,
                    "column": 47
                  },
                  "end": {
                    "line": 82,
                    "column": 1
                  }
                }
              },
              "generator": false,
              "expression": false,
              "range": [
                2196,
                3104
              ],
              "loc": {
                "start": {
                  "line": 55,
                  "column": 29
                },
                "end": {
                  "line": 82,
                  "column": 1
                }
              }
            },
            "arguments": [
              {
                "type": "Identifier",
                "name": "OuterSubscriber",
                "range": [
                  3105,
                  3120
                ],
                "loc": {
                  "start": {
                    "line": 82,
                    "column": 2
                  },
                  "end": {
                    "line": 82,
                    "column": 17
                  }
                }
              }
            ],
            "range": [
              2196,
              3121
            ],
            "loc": {
              "start": {
                "line": 55,
                "column": 29
              },
              "end": {
                "line": 82,
                "column": 18
              }
            }
          },
          "range": [
            2171,
            3122
          ],
          "loc": {
            "start": {
              "line": 55,
              "column": 4
            },
            "end": {
              "line": 82,
              "column": 19
            }
          }
        }
      ],
      "kind": "var",
      "range": [
        2167,
        3123
      ],
      "loc": {
        "start": {
          "line": 55,
          "column": 0
        },
        "end": {
          "line": 82,
          "column": 20
        }
      },
      "leadingComments": [
        {
          "type": "Block",
          "value": "*\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n ",
          "range": [
            2075,
            2166
          ],
          "loc": {
            "start": {
              "line": 50,
              "column": 0
            },
            "end": {
              "line": 54,
              "column": 3
            }
          }
        }
      ],
      "trailingComments": [
        {
          "type": "Line",
          "value": "# sourceMappingURL=exhaust.js.map",
          "range": [
            3124,
            3159
          ],
          "loc": {
            "start": {
              "line": 83,
              "column": 0
            },
            "end": {
              "line": 83,
              "column": 35
            }
          }
        }
      ]
    }
  ],
  "sourceType": "module",
  "range": [
    0,
    3123
  ],
  "loc": {
    "start": {
      "line": 1,
      "column": 0
    },
    "end": {
      "line": 82,
      "column": 20
    }
  },
  "comments": [
    {
      "type": "Block",
      "value": "*\n * Converts a higher-order Observable into a first-order Observable by dropping\n * inner Observables while the previous inner Observable has not yet completed.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by dropping the\n * next inner Observables while the current inner is still executing.</span>\n *\n * <img src=\"./img/exhaust.png\" width=\"100%\">\n *\n * `exhaust` subscribes to an Observable that emits Observables, also known as a\n * higher-order Observable. Each time it observes one of these emitted inner\n * Observables, the output Observable begins emitting the items emitted by that\n * inner Observable. So far, it behaves like {@link mergeAll}. However,\n * `exhaust` ignores every new inner Observable if the previous Observable has\n * not yet completed. Once that one completes, it will accept and flatten the\n * next inner Observable and repeat this process.\n *\n * @example <caption>Run a finite timer for each click, only if there is no currently active timer</caption>\n * var clicks = Rx.Observable.fromEvent(document, 'click');\n * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));\n * var result = higherOrder.exhaust();\n * result.subscribe(x => console.log(x));\n *\n * @see {@link combineAll}\n * @see {@link concatAll}\n * @see {@link switch}\n * @see {@link mergeAll}\n * @see {@link exhaustMap}\n * @see {@link zipAll}\n *\n * @return {Observable} Returns an Observable that takes a source of Observables\n * and propagates the first observable exclusively until it completes before\n * subscribing to the next.\n * @method exhaust\n * @owner Observable\n ",
      "range": [
        117,
        1720
      ],
      "loc": {
        "start": {
          "line": 3,
          "column": 0
        },
        "end": {
          "line": 38,
          "column": 3
        }
      }
    },
    {
      "type": "Block",
      "value": "*\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n ",
      "range": [
        2075,
        2166
      ],
      "loc": {
        "start": {
          "line": 50,
          "column": 0
        },
        "end": {
          "line": 54,
          "column": 3
        }
      }
    },
    {
      "type": "Line",
      "value": "# sourceMappingURL=exhaust.js.map",
      "range": [
        3124,
        3159
      ],
      "loc": {
        "start": {
          "line": 83,
          "column": 0
        },
        "end": {
          "line": 83,
          "column": 35
        }
      }
    }
  ]
}