<!--#js#-->/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {}

/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {

/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId])
/******/ 			return installedModules[moduleId].exports

/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			exports: {},
/******/ 			id: moduleId,
/******/ 			loaded: false
/******/ 		}

/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__)

/******/ 		// Flag the module as loaded
/******/ 		module.loaded = true

/******/ 		// Return the exports of the module
/******/ 		return module.exports
/******/ 	}


/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules

/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules

/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = ""

/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(0)
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	var _window2 = __webpack_require__(1)

	var _window = _interopRequireWildcard(_window2)

	function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key] } } newObj.default = obj; return newObj } }

	var global = GameGlobal

	function inject() {
	  _window.addEventListener = _window.canvas.addEventListener = function (type, listener) {
	    _window.document.addEventListener(type, listener)
	  }
	  _window.removeEventListener = _window.canvas.removeEventListener = function (type, listener) {
	    _window.document.removeEventListener(type, listener)
	  }

	  var _wx$getSystemInfoSync = wx.getSystemInfoSync(),
	      platform = _wx$getSystemInfoSync.platform

	  // 开发者工具无法重定义 window


	  if (typeof __devtoolssubcontext === 'undefined' && platform === 'devtools') {
	    for (var key in _window) {
	      var descriptor = Object.getOwnPropertyDescriptor(global, key)

	      if (!descriptor || descriptor.configurable === true) {
	        Object.defineProperty(window, key, {
	          value: _window[key]
	        })
	      }
	    }

	    for (var _key in _window.document) {
	      var _descriptor = Object.getOwnPropertyDescriptor(global.document, _key)

	      if (!_descriptor || _descriptor.configurable === true) {
	        Object.defineProperty(global.document, _key, {
	          value: _window.document[_key]
	        })
	      }
	    }
	    window.parent = window
	  } else {
	    for (var _key2 in _window) {
	      global[_key2] = _window[_key2]
	    }
	    global.window = _window
	    window = global
	    window.top = window.parent = window
	  }
	}

	if (!GameGlobal.__isAdapterInjected) {
	  GameGlobal.__isAdapterInjected = true
	  inject()
	}

/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})
	exports.cancelAnimationFrame = exports.requestAnimationFrame = exports.clearInterval = exports.clearTimeout = exports.setInterval = exports.setTimeout = exports.canvas = exports.location = exports.localStorage = exports.HTMLElement = exports.FileReader = exports.Audio = exports.Image = exports.WebSocket = exports.XMLHttpRequest = exports.navigator = exports.document = undefined

	var _WindowProperties = __webpack_require__(2)

	Object.keys(_WindowProperties).forEach(function (key) {
	  if (key === "default" || key === "__esModule") return
	  Object.defineProperty(exports, key, {
	    enumerable: true,
	    get: function get() {
	      return _WindowProperties[key]
	    }
	  })
	})

	var _constructor = __webpack_require__(3)

	Object.keys(_constructor).forEach(function (key) {
	  if (key === "default" || key === "__esModule") return
	  Object.defineProperty(exports, key, {
	    enumerable: true,
	    get: function get() {
	      return _constructor[key]
	    }
	  })
	})

	var _Canvas = __webpack_require__(9)

	var _Canvas2 = _interopRequireDefault(_Canvas)

	var _document2 = __webpack_require__(10)

	var _document3 = _interopRequireDefault(_document2)

	var _navigator2 = __webpack_require__(17)

	var _navigator3 = _interopRequireDefault(_navigator2)

	var _XMLHttpRequest2 = __webpack_require__(18)

	var _XMLHttpRequest3 = _interopRequireDefault(_XMLHttpRequest2)

	var _WebSocket2 = __webpack_require__(19)

	var _WebSocket3 = _interopRequireDefault(_WebSocket2)

	var _Image2 = __webpack_require__(11)

	var _Image3 = _interopRequireDefault(_Image2)

	var _Audio2 = __webpack_require__(12)

	var _Audio3 = _interopRequireDefault(_Audio2)

	var _FileReader2 = __webpack_require__(20)

	var _FileReader3 = _interopRequireDefault(_FileReader2)

	var _HTMLElement2 = __webpack_require__(4)

	var _HTMLElement3 = _interopRequireDefault(_HTMLElement2)

	var _localStorage2 = __webpack_require__(21)

	var _localStorage3 = _interopRequireDefault(_localStorage2)

	var _location2 = __webpack_require__(22)

	var _location3 = _interopRequireDefault(_location2)

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } }

	exports.document = _document3.default
	exports.navigator = _navigator3.default
	exports.XMLHttpRequest = _XMLHttpRequest3.default
	exports.WebSocket = _WebSocket3.default
	exports.Image = _Image3.default
	exports.Audio = _Audio3.default
	exports.FileReader = _FileReader3.default
	exports.HTMLElement = _HTMLElement3.default
	exports.localStorage = _localStorage3.default
	exports.location = _location3.default


	// 暴露全局的 canvas
	var canvas = new _Canvas2.default()

	exports.canvas = canvas
	exports.setTimeout = setTimeout
	exports.setInterval = setInterval
	exports.clearTimeout = clearTimeout
	exports.clearInterval = clearInterval
	exports.requestAnimationFrame = requestAnimationFrame
	exports.cancelAnimationFrame = cancelAnimationFrame

/***/ }),
/* 2 */
/***/ (function(module, exports) {

	"use strict"

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})

	var _wx$getSystemInfoSync = wx.getSystemInfoSync(),
	    screenWidth = _wx$getSystemInfoSync.screenWidth,
	    screenHeight = _wx$getSystemInfoSync.screenHeight,
	    devicePixelRatio = _wx$getSystemInfoSync.devicePixelRatio

	var innerWidth = exports.innerWidth = screenWidth
	var innerHeight = exports.innerHeight = screenHeight
	exports.devicePixelRatio = devicePixelRatio
	var screen = exports.screen = {
	  availWidth: innerWidth,
	  availHeight: innerHeight
	}
	var performance = exports.performance = {
	  now: function now() {
	    return Date.now() / 1000
	  }
	}
	var ontouchstart = exports.ontouchstart = null
	var ontouchmove = exports.ontouchmove = null
	var ontouchend = exports.ontouchend = null

/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})
	exports.HTMLCanvasElement = exports.HTMLImageElement = undefined

	var _HTMLElement3 = __webpack_require__(4)

	var _HTMLElement4 = _interopRequireDefault(_HTMLElement3)

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } }

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } }

	function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self }

	function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass }

	var HTMLImageElement = exports.HTMLImageElement = function (_HTMLElement) {
	  _inherits(HTMLImageElement, _HTMLElement)

	  function HTMLImageElement() {
	    _classCallCheck(this, HTMLImageElement)

	    return _possibleConstructorReturn(this, (HTMLImageElement.__proto__ || Object.getPrototypeOf(HTMLImageElement)).call(this, 'img'))
	  }

	  return HTMLImageElement
	}(_HTMLElement4.default)

	var HTMLCanvasElement = exports.HTMLCanvasElement = function (_HTMLElement2) {
	  _inherits(HTMLCanvasElement, _HTMLElement2)

	  function HTMLCanvasElement() {
	    _classCallCheck(this, HTMLCanvasElement)

	    return _possibleConstructorReturn(this, (HTMLCanvasElement.__proto__ || Object.getPrototypeOf(HTMLCanvasElement)).call(this, 'canvas'))
	  }

	  return HTMLCanvasElement
	}(_HTMLElement4.default)

/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})

	var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()

	var _Element2 = __webpack_require__(5)

	var _Element3 = _interopRequireDefault(_Element2)

	var _util = __webpack_require__(8)

	var _WindowProperties = __webpack_require__(2)

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } }

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } }

	function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self }

	function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass }

	var HTMLElement = function (_Element) {
	  _inherits(HTMLElement, _Element)

	  function HTMLElement() {
	    var tagName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''

	    _classCallCheck(this, HTMLElement)

	    var _this = _possibleConstructorReturn(this, (HTMLElement.__proto__ || Object.getPrototypeOf(HTMLElement)).call(this))

	    _this.className = ''
	    _this.childern = []
	    _this.style = {
	      width: _WindowProperties.innerWidth + 'px',
	      height: _WindowProperties.innerHeight + 'px'
	    }
	    _this.insertBefore = _util.noop
	    _this.innerHTML = ''

	    _this.tagName = tagName.toUpperCase()
	    return _this
	  }

	  _createClass(HTMLElement, [{
	    key: 'setAttribute',
	    value: function setAttribute(name, value) {
	      this[name] = value
	    }
	  }, {
	    key: 'getAttribute',
	    value: function getAttribute(name) {
	      return this[name]
	    }
	  }, {
	    key: 'getBoundingClientRect',
	    value: function getBoundingClientRect() {
	      return {
	        top: 0,
	        left: 0,
	        width: _WindowProperties.innerWidth,
	        height: _WindowProperties.innerHeight
	      }
	    }
	  }, {
	    key: 'focus',
	    value: function focus() {}
	  }, {
	    key: 'clientWidth',
	    get: function get() {
	      var ret = parseInt(this.style.fontSize, 10) * this.innerHTML.length

	      return Number.isNaN(ret) ? 0 : ret
	    }
	  }, {
	    key: 'clientHeight',
	    get: function get() {
	      var ret = parseInt(this.style.fontSize, 10)

	      return Number.isNaN(ret) ? 0 : ret
	    }
	  }])

	  return HTMLElement
	}(_Element3.default)

	exports.default = HTMLElement

/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})

	var _Node2 = __webpack_require__(6)

	var _Node3 = _interopRequireDefault(_Node2)

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } }

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } }

	function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self }

	function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass }

	var ELement = function (_Node) {
	  _inherits(ELement, _Node)

	  function ELement() {
	    _classCallCheck(this, ELement)

	    var _this = _possibleConstructorReturn(this, (ELement.__proto__ || Object.getPrototypeOf(ELement)).call(this))

	    _this.className = ''
	    _this.children = []
	    return _this
	  }

	  return ELement
	}(_Node3.default)

	exports.default = ELement

/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})

	var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()

	var _EventTarget2 = __webpack_require__(7)

	var _EventTarget3 = _interopRequireDefault(_EventTarget2)

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } }

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } }

	function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self }

	function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass }

	var Node = function (_EventTarget) {
	  _inherits(Node, _EventTarget)

	  function Node() {
	    _classCallCheck(this, Node)

	    var _this = _possibleConstructorReturn(this, (Node.__proto__ || Object.getPrototypeOf(Node)).call(this))

	    _this.childNodes = []
	    return _this
	  }

	  _createClass(Node, [{
	    key: 'appendChild',
	    value: function appendChild(node) {
	      if (node instanceof Node) {
	        this.childNodes.push(node)
	      } else {
	        throw new TypeError('Failed to executed \'appendChild\' on \'Node\': parameter 1 is not of type \'Node\'.')
	      }
	    }
	  }, {
	    key: 'cloneNode',
	    value: function cloneNode() {
	      var copyNode = Object.create(this)

	      Object.assign(copyNode, this)
	      return copyNode
	    }
	  }, {
	    key: 'removeChild',
	    value: function removeChild(node) {
	      var index = this.childNodes.findIndex(function (child) {
	        return child === node
	      })

	      if (index > -1) {
	        return this.childNodes.splice(index, 1)
	      }
	      return null
	    }
	  }])

	  return Node
	}(_EventTarget3.default)

	exports.default = Node

/***/ }),
/* 7 */
/***/ (function(module, exports) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})

	var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } }

	var _events = new WeakMap()

	var EventTarget = function () {
	  function EventTarget() {
	    _classCallCheck(this, EventTarget)

	    _events.set(this, {})
	  }

	  _createClass(EventTarget, [{
	    key: 'addEventListener',
	    value: function addEventListener(type, listener) {
	      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}

	      var events = _events.get(this)

	      if (!events) {
	        events = {}
	        _events.set(this, events)
	      }
	      if (!events[type]) {
	        events[type] = []
	      }
	      events[type].push(listener)

	      if (options.capture) {
	        console.warn('EventTarget.addEventListener: options.capture is not implemented.')
	      }
	      if (options.once) {
	        console.warn('EventTarget.addEventListener: options.once is not implemented.')
	      }
	      if (options.passive) {
	        console.warn('EventTarget.addEventListener: options.passive is not implemented.')
	      }
	    }
	  }, {
	    key: 'removeEventListener',
	    value: function removeEventListener(type, listener) {
	      var listeners = _events.get(this)[type]

	      if (listeners && listeners.length > 0) {
	        for (var i = listeners.length; i--; i > 0) {
	          if (listeners[i] === listener) {
	            listeners.splice(i, 1)
	            break
	          }
	        }
	      }
	    }
	  }, {
	    key: 'dispatchEvent',
	    value: function dispatchEvent() {
	      var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}

	      var listeners = _events.get(this)[event.type]

	      if (listeners) {
	        for (var i = 0; i < listeners.length; i++) {
	          listeners[i](event)
	        }
	      }
	    }
	  }])

	  return EventTarget
	}()

	exports.default = EventTarget

/***/ }),
/* 8 */
/***/ (function(module, exports) {

	"use strict"

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})
	exports.noop = noop
	function noop() {}

/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})
	exports.default = Canvas

	var _constructor = __webpack_require__(3)

	var _HTMLElement = __webpack_require__(4)

	var _HTMLElement2 = _interopRequireDefault(_HTMLElement)

	var _document = __webpack_require__(10)

	var _document2 = _interopRequireDefault(_document)

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } }

	var hasModifiedCanvasPrototype = false
	var hasInit2DContextConstructor = false
	var hasInitWebGLContextConstructor = false

	function Canvas() {
	  var canvas = wx.createCanvas()

	  canvas.type = 'canvas'

	  canvas.__proto__.__proto__ = new _HTMLElement2.default('canvas')

	  var _getContext = canvas.getContext

	  canvas.getBoundingClientRect = function () {
	    var ret = {
	      top: 0,
	      left: 0,
	      width: window.innerWidth,
	      height: window.innerHeight
	    }
	    return ret
	  }

	  return canvas
	}

/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})

	var _window = __webpack_require__(1)

	var window = _interopRequireWildcard(_window)

	var _HTMLElement = __webpack_require__(4)

	var _HTMLElement2 = _interopRequireDefault(_HTMLElement)

	var _Image = __webpack_require__(11)

	var _Image2 = _interopRequireDefault(_Image)

	var _Audio = __webpack_require__(12)

	var _Audio2 = _interopRequireDefault(_Audio)

	var _Canvas = __webpack_require__(9)

	var _Canvas2 = _interopRequireDefault(_Canvas)

	__webpack_require__(15)

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } }

	function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key] } } newObj.default = obj; return newObj } }

	var events = {}

	var document = {
	  readyState: 'complete',
	  visibilityState: 'visible',
	  documentElement: window,
	  hidden: false,
	  style: {},
	  location: window.location,
	  ontouchstart: null,
	  ontouchmove: null,
	  ontouchend: null,

	  head: new _HTMLElement2.default('head'),
	  body: new _HTMLElement2.default('body'),

	  createElement: function createElement(tagName) {
	    if (tagName === 'canvas') {
	      return new _Canvas2.default()
	    } else if (tagName === 'audio') {
	      return new _Audio2.default()
	    } else if (tagName === 'img') {
	      return new _Image2.default()
	    }

	    return new _HTMLElement2.default(tagName)
	  },
	  getElementById: function getElementById(id) {
	    if (id === window.canvas.id) {
	      return window.canvas
	    }
	    return null
	  },
	  getElementsByTagName: function getElementsByTagName(tagName) {
	    if (tagName === 'head') {
	      return [document.head]
	    } else if (tagName === 'body') {
	      return [document.body]
	    } else if (tagName === 'canvas') {
	      return [window.canvas]
	    }
	    return []
	  },
	  querySelector: function querySelector(query) {
	    if (query === 'head') {
	      return document.head
	    } else if (query === 'body') {
	      return document.body
	    } else if (query === 'canvas') {
	      return window.canvas
	    } else if (query === '#' + window.canvas.id) {
	      return window.canvas
	    }
	    return null
	  },
	  querySelectorAll: function querySelectorAll(query) {
	    if (query === 'head') {
	      return [document.head]
	    } else if (query === 'body') {
	      return [document.body]
	    } else if (query === 'canvas') {
	      return [window.canvas]
	    }
	    return []
	  },
	  addEventListener: function addEventListener(type, listener) {
	    if (!events[type]) {
	      events[type] = []
	    }
	    events[type].push(listener)
	  },
	  removeEventListener: function removeEventListener(type, listener) {
	    var listeners = events[type]

	    if (listeners && listeners.length > 0) {
	      for (var i = listeners.length; i--; i > 0) {
	        if (listeners[i] === listener) {
	          listeners.splice(i, 1)
	          break
	        }
	      }
	    }
	  },
	  dispatchEvent: function dispatchEvent(event) {
	    var listeners = events[event.type]

	    if (listeners) {
	      for (var i = 0; i < listeners.length; i++) {
	        listeners[i](event)
	      }
	    }
	  }
	}

	exports.default = document

/***/ }),
/* 11 */
/***/ (function(module, exports) {

	"use strict"

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})
	exports.default = Image
	function Image() {
	  var image = wx.createImage()

	  return image
	}

/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})

	var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()

	var _HTMLAudioElement2 = __webpack_require__(13)

	var _HTMLAudioElement3 = _interopRequireDefault(_HTMLAudioElement2)

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } }

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } }

	function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self }

	function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass }

	var HAVE_NOTHING = 0
	var HAVE_METADATA = 1
	var HAVE_CURRENT_DATA = 2
	var HAVE_FUTURE_DATA = 3
	var HAVE_ENOUGH_DATA = 4

	var _innerAudioContext = new WeakMap()
	var _src = new WeakMap()
	var _loop = new WeakMap()
	var _autoplay = new WeakMap()

	var Audio = function (_HTMLAudioElement) {
	  _inherits(Audio, _HTMLAudioElement)

	  function Audio(url) {
	    _classCallCheck(this, Audio)

	    var _this = _possibleConstructorReturn(this, (Audio.__proto__ || Object.getPrototypeOf(Audio)).call(this))

	    _this.HAVE_NOTHING = HAVE_NOTHING
	    _this.HAVE_METADATA = HAVE_METADATA
	    _this.HAVE_CURRENT_DATA = HAVE_CURRENT_DATA
	    _this.HAVE_FUTURE_DATA = HAVE_FUTURE_DATA
	    _this.HAVE_ENOUGH_DATA = HAVE_ENOUGH_DATA
	    _this.readyState = HAVE_NOTHING


	    _src.set(_this, '')

	    var innerAudioContext = wx.createInnerAudioContext()

	    _innerAudioContext.set(_this, innerAudioContext)

	    innerAudioContext.onCanplay(function () {
	      _this.dispatchEvent({ type: 'load' })
	      _this.dispatchEvent({ type: 'loadend' })
	      _this.dispatchEvent({ type: 'canplay' })
	      _this.dispatchEvent({ type: 'canplaythrough' })
	      _this.dispatchEvent({ type: 'loadedmetadata' })
	      _this.readyState = HAVE_CURRENT_DATA
	    })
	    innerAudioContext.onPlay(function () {
	      _this.dispatchEvent({ type: 'play' })
	    })
	    innerAudioContext.onPause(function () {
	      _this.dispatchEvent({ type: 'pause' })
	    })
	    innerAudioContext.onEnded(function () {
	      _this.dispatchEvent({ type: 'ended' })
	      _this.readyState = HAVE_ENOUGH_DATA
	    })
	    innerAudioContext.onError(function () {
	      _this.dispatchEvent({ type: 'error' })
	    })

	    if (url) {
	      _innerAudioContext.get(_this).src = url
	    }
	    return _this
	  }

	  _createClass(Audio, [{
	    key: 'load',
	    value: function load() {
	      console.warn('HTMLAudioElement.load() is not implemented.')
	    }
	  }, {
	    key: 'play',
	    value: function play() {
	      _innerAudioContext.get(this).play()
	    }
	  }, {
	    key: 'pause',
	    value: function pause() {
	      _innerAudioContext.get(this).pause()
	    }
	  }, {
	    key: 'canPlayType',
	    value: function canPlayType() {
	      var mediaType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''

	      if (typeof mediaType !== 'string') {
	        return ''
	      }

	      if (mediaType.indexOf('audio/mpeg') > -1 || mediaType.indexOf('audio/mp4')) {
	        return 'probably'
	      }
	      return ''
	    }
	  }, {
	    key: 'cloneNode',
	    value: function cloneNode() {
	      var newAudio = new Audio()
	      newAudio.loop = _innerAudioContext.get(this).loop
	      newAudio.autoplay = _innerAudioContext.get(this).loop
	      newAudio.src = this.src
	      return newAudio
	    }
	  }, {
	    key: 'currentTime',
	    get: function get() {
	      return _innerAudioContext.get(this).currentTime
	    },
	    set: function set(value) {
	      _innerAudioContext.get(this).seek(value)
	    }
	  }, {
	    key: 'src',
	    get: function get() {
	      return _src.get(this)
	    },
	    set: function set(value) {
	      _src.set(this, value)
	      _innerAudioContext.get(this).src = value
	    }
	  }, {
	    key: 'loop',
	    get: function get() {
	      return _innerAudioContext.get(this).loop
	    },
	    set: function set(value) {
	      _innerAudioContext.get(this).loop = value
	    }
	  }, {
	    key: 'autoplay',
	    get: function get() {
	      return _innerAudioContext.get(this).autoplay
	    },
	    set: function set(value) {
	      _innerAudioContext.get(this).autoplay = value
	    }
	  }, {
	    key: 'paused',
	    get: function get() {
	      return _innerAudioContext.get(this).paused
	    }
	  }])

	  return Audio
	}(_HTMLAudioElement3.default)

	exports.default = Audio

/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})

	var _HTMLMediaElement2 = __webpack_require__(14)

	var _HTMLMediaElement3 = _interopRequireDefault(_HTMLMediaElement2)

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } }

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } }

	function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self }

	function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass }

	var HTMLAudioElement = function (_HTMLMediaElement) {
	  _inherits(HTMLAudioElement, _HTMLMediaElement)

	  function HTMLAudioElement() {
	    _classCallCheck(this, HTMLAudioElement)

	    return _possibleConstructorReturn(this, (HTMLAudioElement.__proto__ || Object.getPrototypeOf(HTMLAudioElement)).call(this, 'audio'))
	  }

	  return HTMLAudioElement
	}(_HTMLMediaElement3.default)

	exports.default = HTMLAudioElement

/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})

	var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()

	var _HTMLElement2 = __webpack_require__(4)

	var _HTMLElement3 = _interopRequireDefault(_HTMLElement2)

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } }

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } }

	function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === "object" || typeof call === "function") ? call : self }

	function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass }

	var HTMLMediaElement = function (_HTMLElement) {
	  _inherits(HTMLMediaElement, _HTMLElement)

	  function HTMLMediaElement(type) {
	    _classCallCheck(this, HTMLMediaElement)

	    return _possibleConstructorReturn(this, (HTMLMediaElement.__proto__ || Object.getPrototypeOf(HTMLMediaElement)).call(this, type))
	  }

	  _createClass(HTMLMediaElement, [{
	    key: 'addTextTrack',
	    value: function addTextTrack() {}
	  }, {
	    key: 'captureStream',
	    value: function captureStream() {}
	  }, {
	    key: 'fastSeek',
	    value: function fastSeek() {}
	  }, {
	    key: 'load',
	    value: function load() {}
	  }, {
	    key: 'pause',
	    value: function pause() {}
	  }, {
	    key: 'play',
	    value: function play() {}
	  }])

	  return HTMLMediaElement
	}(_HTMLElement3.default)

	exports.default = HTMLMediaElement

/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	__webpack_require__(16)

/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	var _window = __webpack_require__(1)

	var window = _interopRequireWildcard(_window)

	var _document = __webpack_require__(10)

	var _document2 = _interopRequireDefault(_document)

	var _util = __webpack_require__(8)

	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } }

	function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key] } } newObj.default = obj; return newObj } }

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } }

	var TouchEvent = function TouchEvent(type) {
	  _classCallCheck(this, TouchEvent)

	  this.target = window.canvas
	  this.currentTarget = window.canvas
	  this.touches = []
	  this.targetTouches = []
	  this.changedTouches = []
	  this.preventDefault = _util.noop
	  this.stopPropagation = _util.noop

	  this.type = type
	}

	function touchEventHandlerFactory(type) {
	  return function (event) {
	    var touchEvent = new TouchEvent(type)

	    touchEvent.touches = event.touches
	    touchEvent.targetTouches = Array.prototype.slice.call(event.touches)
	    touchEvent.changedTouches = event.changedTouches
	    touchEvent.timeStamp = event.timeStamp
	    _document2.default.dispatchEvent(touchEvent)
	  }
	}

	wx.onTouchStart(touchEventHandlerFactory('touchstart'))
	wx.onTouchMove(touchEventHandlerFactory('touchmove'))
	wx.onTouchEnd(touchEventHandlerFactory('touchend'))
	wx.onTouchCancel(touchEventHandlerFactory('touchcancel'))

/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})

	var _util = __webpack_require__(8)

	// TODO 需要 wx.getSystemInfo 获取更详细信息
	var _wx$getSystemInfoSync = wx.getSystemInfoSync(),
	    platform = _wx$getSystemInfoSync.platform

	var navigator = {
	  platform: platform,
	  language: 'zh-cn',
	  appVersion: '5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1',
	  userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Mobile/14E8301 MicroMessenger/6.6.0 MiniGame NetType/WIFI Language/zh_CN',
	  onLine: true, // TODO 用 wx.getNetworkStateChange 和 wx.onNetworkStateChange 来返回真实的状态

	  // TODO 用 wx.getLocation 来封装 geolocation
	  geolocation: {
	    getCurrentPosition: _util.noop,
	    watchPosition: _util.noop,
	    clearWatch: _util.noop
	  }
	}

	exports.default = navigator

/***/ }),
/* 18 */
/***/ (function(module, exports) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})

	var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } }

	var _url = new WeakMap()
	var _method = new WeakMap()
	var _requestHeader = new WeakMap()
	var _responseHeader = new WeakMap()
	var _requestTask = new WeakMap()

	function _triggerEvent(type) {
	  if (typeof this['on' + type] === 'function') {
	    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
	      args[_key - 1] = arguments[_key]
	    }

	    this['on' + type].apply(this, args)
	  }
	}

	function _changeReadyState(readyState) {
	  this.readyState = readyState
	  _triggerEvent.call(this, 'readystatechange')
	}

	var XMLHttpRequest = function () {
	  // TODO 没法模拟 HEADERS_RECEIVED 和 LOADING 两个状态
	  function XMLHttpRequest() {
	    _classCallCheck(this, XMLHttpRequest)

	    this.onabort = null
	    this.onerror = null
	    this.onload = null
	    this.onloadstart = null
	    this.onprogress = null
	    this.ontimeout = null
	    this.onloadend = null
	    this.onreadystatechange = null
	    this.readyState = 0
	    this.response = null
	    this.responseText = null
	    this.responseType = ''
	    this.responseXML = null
	    this.status = 0
	    this.statusText = ''
	    this.upload = {}
	    this.withCredentials = false

	    _requestHeader.set(this, {
	      'content-type': 'application/x-www-form-urlencoded'
	    })
	    _responseHeader.set(this, {})
	  }

	  /*
	   * TODO 这一批事件应该是在 XMLHttpRequestEventTarget.prototype 上面的
	   */


	  _createClass(XMLHttpRequest, [{
	    key: 'abort',
	    value: function abort() {
	      var myRequestTask = _requestTask.get(this)

	      if (myRequestTask) {
	        myRequestTask.abort()
	      }
	    }
	  }, {
	    key: 'getAllResponseHeaders',
	    value: function getAllResponseHeaders() {
	      var responseHeader = _responseHeader.get(this)

	      return Object.keys(responseHeader).map(function (header) {
	        return header + ': ' + responseHeader[header]
	      }).join('\n')
	    }
	  }, {
	    key: 'getResponseHeader',
	    value: function getResponseHeader(header) {
	      return _responseHeader.get(this)[header]
	    }
	  }, {
	    key: 'open',
	    value: function open(method, url /* async, user, password 这几个参数在小程序内不支持*/) {
	      _method.set(this, method)
	      _url.set(this, url)
	      _changeReadyState.call(this, XMLHttpRequest.OPENED)
	    }
	  }, {
	    key: 'overrideMimeType',
	    value: function overrideMimeType() {}
	  }, {
	    key: 'send',
	    value: function send() {
	      var _this = this

	      var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''

	      if (this.readyState !== XMLHttpRequest.OPENED) {
	        throw new Error("Failed to execute 'send' on 'XMLHttpRequest': The object's state must be OPENED.")
	      } else {
	        wx.request({
	          data: data,
	          url: _url.get(this),
	          method: _method.get(this),
	          header: _requestHeader.get(this),
	          responseType: this.responseType,
	          success: function success(_ref) {
	            var data = _ref.data,
	                statusCode = _ref.statusCode,
	                header = _ref.header

	            if (typeof data !== 'string' && !(data instanceof ArrayBuffer)) {
	              try {
	                data = JSON.stringify(data)
	              } catch (e) {
	                data = data
	              }
	            }

	            _this.status = statusCode
	            _responseHeader.set(_this, header)
	            _triggerEvent.call(_this, 'loadstart')
	            _changeReadyState.call(_this, XMLHttpRequest.HEADERS_RECEIVED)
	            _changeReadyState.call(_this, XMLHttpRequest.LOADING)

	            _this.response = data

	            if (data instanceof ArrayBuffer) {
	              _this.responseText = ''
	              var bytes = new Uint8Array(data)
	              var len = bytes.byteLength

	              for (var i = 0; i < len; i++) {
	                _this.responseText += String.fromCharCode(bytes[i])
	              }
	            } else {
	              _this.responseText = data
	            }
	            _changeReadyState.call(_this, XMLHttpRequest.DONE)
	            _triggerEvent.call(_this, 'load')
	            _triggerEvent.call(_this, 'loadend')
	          },
	          fail: function fail(_ref2) {
	            var errMsg = _ref2.errMsg

	            // TODO 规范错误
	            if (errMsg.indexOf('abort') !== -1) {
	              _triggerEvent.call(_this, 'abort')
	            } else {
	              _triggerEvent.call(_this, 'error', errMsg)
	            }
	            _triggerEvent.call(_this, 'loadend')
	          }
	        })
	      }
	    }
	  }, {
	    key: 'setRequestHeader',
	    value: function setRequestHeader(header, value) {
	      var myHeader = _requestHeader.get(this)

	      myHeader[header] = value
	      _requestHeader.set(this, myHeader)
	    }
	  }])

	  return XMLHttpRequest
	}()

	XMLHttpRequest.UNSEND = 0
	XMLHttpRequest.OPENED = 1
	XMLHttpRequest.HEADERS_RECEIVED = 2
	XMLHttpRequest.LOADING = 3
	XMLHttpRequest.DONE = 4
	exports.default = XMLHttpRequest

/***/ }),
/* 19 */
/***/ (function(module, exports) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})

	var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } }

	var _socketTask = new WeakMap()

	var WebSocket = function () {
	  // TODO 更新 binaryType
	  // The connection is in the process of closing.
	  // The connection is not yet open.
	  function WebSocket(url) {
	    var _this = this

	    var protocols = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []

	    _classCallCheck(this, WebSocket)

	    this.binaryType = ''
	    this.bufferedAmount = 0
	    this.extensions = ''
	    this.onclose = null
	    this.onerror = null
	    this.onmessage = null
	    this.onopen = null
	    this.protocol = ''
	    this.readyState = 3

	    if (typeof url !== 'string' || !/(^ws:\/\/)|(^wss:\/\/)/.test(url)) {
	      throw new TypeError('Failed to construct \'WebSocket\': The URL \'' + url + '\' is invalid')
	    }

	    this.url = url
	    this.readyState = WebSocket.CONNECTING

	    var socketTask = wx.connectSocket({
	      url: url,
	      protocols: Array.isArray(protocols) ? protocols : [protocols]
	    })

	    _socketTask.set(this, socketTask)

	    socketTask.onClose(function (res) {
	      _this.readyState = WebSocket.CLOSED
	      if (typeof _this.onclose === 'function') {
	        _this.onclose(res)
	      }
	    })

	    socketTask.onMessage(function (res) {
	      if (typeof _this.onmessage === 'function') {
	        _this.onmessage(res)
	      }
	    })

	    socketTask.onOpen(function () {
	      _this.readyState = WebSocket.OPEN
	      if (typeof _this.onopen === 'function') {
	        _this.onopen()
	      }
	    })

	    socketTask.onError(function (res) {
	      if (typeof _this.onerror === 'function') {
	        _this.onerror(new Error(res.errMsg))
	      }
	    })

	    return this
	  } // TODO 小程序内目前获取不到，实际上需要根据服务器选择的 sub-protocol 返回
	  // TODO 更新 bufferedAmount
	  // The connection is closed or couldn't be opened.

	  // The connection is open and ready to communicate.


	  _createClass(WebSocket, [{
	    key: 'close',
	    value: function close(code, reason) {
	      this.readyState = WebSocket.CLOSING
	      var socketTask = _socketTask.get(this)

	      socketTask.close({
	        code: code,
	        reason: reason
	      })
	    }
	  }, {
	    key: 'send',
	    value: function send(data) {
	      if (typeof data !== 'string' && !(data instanceof ArrayBuffer)) {
	        throw new TypeError('Failed to send message: The data ' + data + ' is invalid')
	      }

	      var socketTask = _socketTask.get(this)

	      socketTask.send({
	        data: data
	      })
	    }
	  }])

	  return WebSocket
	}()

	WebSocket.CONNECTING = 0
	WebSocket.OPEN = 1
	WebSocket.CLOSING = 2
	WebSocket.CLOSED = 3
	exports.default = WebSocket

/***/ }),
/* 20 */
/***/ (function(module, exports) {

	"use strict"

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } }

	/*
	 * TODO 使用 wx.readFile 来封装 FileReader
	 */
	var FileReader = function FileReader() {
	  _classCallCheck(this, FileReader)
	}

	exports.default = FileReader

/***/ }),
/* 21 */
/***/ (function(module, exports) {

	"use strict"

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})
	var localStorage = {
	  get length() {
	    var _wx$getStorageInfoSyn = wx.getStorageInfoSync(),
	        keys = _wx$getStorageInfoSyn.keys

	    return keys.length
	  },

	  key: function key(n) {
	    var _wx$getStorageInfoSyn2 = wx.getStorageInfoSync(),
	        keys = _wx$getStorageInfoSyn2.keys

	    return keys[n]
	  },
	  getItem: function getItem(key) {
	    return wx.getStorageSync(key)
	  },
	  setItem: function setItem(key, value) {
	    return wx.setStorageSync(key, value)
	  },
	  removeItem: function removeItem(key) {
	    wx.removeStorageSync(key)
	  },
	  clear: function clear() {
	    wx.clearStorageSync()
	  }
	}

	exports.default = localStorage

/***/ }),
/* 22 */
/***/ (function(module, exports) {

	'use strict'

	Object.defineProperty(exports, "__esModule", {
	  value: true
	})
	var location = {
	  href: 'game.js',
	  reload: function reload() {}
	}

	exports.default = location

/***/ })
/******/ ])<!--#end js#-->