| "use strict"; | 
|   | 
| exports.__esModule = true; | 
|   | 
| var _iterator = require("../core-js/symbol/iterator"); | 
|   | 
| var _iterator2 = _interopRequireDefault(_iterator); | 
|   | 
| var _symbol = require("../core-js/symbol"); | 
|   | 
| var _symbol2 = _interopRequireDefault(_symbol); | 
|   | 
| var _promise = require("../core-js/promise"); | 
|   | 
| var _promise2 = _interopRequireDefault(_promise); | 
|   | 
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | 
|   | 
| exports.default = function (inner, awaitWrap) { | 
|   var iter = {}, | 
|       waiting = false; | 
|   | 
|   function pump(key, value) { | 
|     waiting = true; | 
|     value = new _promise2.default(function (resolve) { | 
|       resolve(inner[key](value)); | 
|     }); | 
|     return { | 
|       done: false, | 
|       value: awaitWrap(value) | 
|     }; | 
|   } | 
|   | 
|   ; | 
|   | 
|   if (typeof _symbol2.default === "function" && _iterator2.default) { | 
|     iter[_iterator2.default] = function () { | 
|       return this; | 
|     }; | 
|   } | 
|   | 
|   iter.next = function (value) { | 
|     if (waiting) { | 
|       waiting = false; | 
|       return value; | 
|     } | 
|   | 
|     return pump("next", value); | 
|   }; | 
|   | 
|   if (typeof inner.throw === "function") { | 
|     iter.throw = function (value) { | 
|       if (waiting) { | 
|         waiting = false; | 
|         throw value; | 
|       } | 
|   | 
|       return pump("throw", value); | 
|     }; | 
|   } | 
|   | 
|   if (typeof inner.return === "function") { | 
|     iter.return = function (value) { | 
|       return pump("return", value); | 
|     }; | 
|   } | 
|   | 
|   return iter; | 
| }; |