/* */ 
"use strict";
var __extends = (this && this.__extends) || function(d, b) {
  for (var p in b)
    if (b.hasOwnProperty(p))
      d[p] = b[p];
  function __() {
    this.constructor = d;
  }
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var Subscriber_1 = require('../Subscriber');
var Subscription_1 = require('../Subscription');
function _finally(callback) {
  return this.lift(new FinallyOperator(callback));
}
exports._finally = _finally;
var FinallyOperator = (function() {
  function FinallyOperator(callback) {
    this.callback = callback;
  }
  FinallyOperator.prototype.call = function(subscriber, source) {
    return source.subscribe(new FinallySubscriber(subscriber, this.callback));
  };
  return FinallyOperator;
}());
var FinallySubscriber = (function(_super) {
  __extends(FinallySubscriber, _super);
  function FinallySubscriber(destination, callback) {
    _super.call(this, destination);
    this.add(new Subscription_1.Subscription(callback));
  }
  return FinallySubscriber;
}(Subscriber_1.Subscriber));
